Wiki source code of User define
Last modified by Leo Wei on 2023/08/24 14:11
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = {{id name="HUserdefine"/}}**User define** = | ||
2 | |||
3 | More serial port script instruction,please refer manual:[[Lua script function>>url:https://docs.we-con.com.cn/bin/view/V-BOX/V-Net/Manual/04%20Lua%20Script/01%20Lua%20Functions/]]~-~-->[[3.Serial port operation>>url:http://docs.we-con.com.cn/wiki/vbox/view/HMI/04.Lua%20script%20%20function%20and%20operation/01.Lua%20script%20function/#H3.Serialportoperation]] | ||
4 | |||
5 | == {{id name="HReadthetemperatureA0sensor."/}}**Read the temperature sensor.** == | ||
6 | |||
7 | the commond format is as beliow: | ||
8 | |||
9 | Send commond:01 03 02 00 00 03 04 73 | ||
10 | |||
11 | Feedback commond:01 03 06 07 F7 0E 7E B7 35 | ||
12 | |||
13 | Temperature data:07 F7,desimal = 2039,it means temperature is 20.39℃. | ||
14 | |||
15 | Humidity data:0E 7E,desimal = 3710, it mean humidity is 37.10%RH. | ||
16 | |||
17 | Script Demo: | ||
18 | |||
19 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-- | ||
20 | |||
21 | function com.main() | ||
22 | ~-~-dosomething | ||
23 | openPlc() | ||
24 | end | ||
25 | function openPlc() | ||
26 | if obj then | ||
27 | ~-~- If the serial port opened,then read/write data by timing | ||
28 | |||
29 | local wri = string.pack(">HHHH",0X0103,0X0200,0X0003,0X0473) | ||
30 | local arr = reading(wri) | ||
31 | ~-~- if arr ~~=nil then | ||
32 | ~-~- if arr[1] ==33 and arr[2] ==v[2][2] and arr[3] ==v[2][3] then | ||
33 | ~-~- local A = arr[4]*256 | ||
34 | ~-~- local B = A+arr[5] | ||
35 | ~-~- addr_setword(v[1],B) | ||
36 | ~-~- end | ||
37 | ~-~- end | ||
38 | |||
39 | else | ||
40 | ~-~-judge if there is a serial object, then initialize and open the serial port | ||
41 | local configs = { | ||
42 | name = 'COM1', ~-~-Select serial port COM1 | ||
43 | mode = 485, ~-~-Communication mode RS485 | ||
44 | baud_rate = 9600, ~-~-Baud rate 9600 | ||
45 | stop_bit = 1, ~-~-stop bit 1 | ||
46 | data_len = 8, ~-~-data length 8 | ||
47 | check_bit = 'NONE', ~-~-no parity | ||
48 | |||
49 | } | ||
50 | obj,err = serial.open(configs) ~-~-Open serial port | ||
51 | if not obj then | ||
52 | print("serial open :failed", err) ~-~- Open serial port failed | ||
53 | end | ||
54 | end | ||
55 | end | ||
56 | |||
57 | function reading(wri) | ||
58 | obj:flush() ~-~- Clear serial port | ||
59 | obj:write(wri) ~-~- Write serial port | ||
60 | print(string.byte(wri,1,#wri)) | ||
61 | obj:flush() ~-~- Clear serial port | ||
62 | local readed =obj:read(9,1000) ~-~- Read 9 bytes, timeout 1 second | ||
63 | if readed and readed ~~= "" then | ||
64 | ~-~- judge that a non-empty string is read | ||
65 | print(string.byte(readed,1,#readed)) | ||
66 | a={string.byte(readed, 1, #readed)} | ||
67 | if nil ~~= a[4] and nil ~~= a[5] and nil ~~= a[6] and nil ~~= a[7] then | ||
68 | a1=a[4]*256+a[5] | ||
69 | a2=a[6]*256+a[7] | ||
70 | addr_setword("@HDW0",a1) | ||
71 | addr_setword("@HDW1",a2) | ||
72 | end | ||
73 | return {string.byte(readed, 1, #readed)} | ||
74 | elseif readed == nil then | ||
75 | print("serial read err:", err or "") | ||
76 | return nil | ||
77 | end | ||
78 | return nil | ||
79 | end | ||
80 | |||
81 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- |