Wiki source code of 1 Communication

Version 6.1 by Jim on 2022/06/27 14:09

Show last authors
1 = **1 General communication with PLC** =
2
3 == **1.1 Modbus RTU** ==
4
5 ==== V-Box as master: ====
6
7 Select the protocol “(% class="mark" %)Modbus RTU Slave(All Fuction)”,
8
9 (% class="mark" %)then set BaudRate,Port,Stop Bit,Data Bit,Parity
10
11 (% style="text-align:center" %)
12 [[image:1624342015914-382.png||height="486" width="800" class="img-thumbnail"]]
13
14 ==== V-Box as slave: ====
15
16 Select the protocol “(% class="mark" %)**Modbus RTU Master”**,
17
18 (% class="mark" %)then set BaudRate,Port,Stop Bit,Data Bit,Parity
19
20 (% style="text-align:center" %)
21 [[image:1624348709622-711.png||queryString="width=809&height=493" height="488" width="800" class="img-thumbnail"]]
22
23 **Address List**
24
25 (% class="table-bordered" %)
26 |**Type**|**Register**|**Function code & Description**
27 |(% rowspan="11" %)Word|(% rowspan="3" %)3|04 (read input register: read current binary value in one or more input registers)
28 |06 (write single register: write a binary value to a holding register)
29 |10 (write values to multiple addresses )
30 |(% rowspan="3" %)4|03 (read holding register: read current binary value in one or more holding registers)
31 |06 (write single register: write a binary value to a holding register)
32 |10 (write values to multiple addresses )
33 |(% rowspan="3" %)W6|03 (read holding register: read current binary value in one or more holding registers)
34 |06 (write single register: write a binary value to a holding register)
35 |10 (write values to multiple addresses )
36 |(% rowspan="2" %)W16|03 (read holding register: read current binary value in one or more holding registers)
37 |10 (write values to multiple addresses )
38 |(% rowspan="11" %)Bit|(% rowspan="3" %)0|01 (Read coil state)
39 |05 (Force a single coil to force the on/off state of a logic coil)
40 |0F (Write multiple bits, ie write continuously)
41 |(% rowspan="3" %)1|02 (Read the input state)
42 |05 (Force a single coil to force the on/off state of a logic coil)
43 |0F (Write multiple bits)
44 |(% rowspan="3" %)W5|01 (Read coil state to obtain the current state of a set of logic coils)
45 |05 (Force a single coil to force the on/off state of a logic coil)
46 |0F (Write multiple bits)
47 |(% rowspan="2" %)W15|01 (Read coil state to obtain the current state of a set of logic coils)
48 |0F (Write multiple bits)
49
50 == **1.2 WECON LX3V PLC** ==
51
52 Select the protocol (% class="mark" %)"WECON LX3V"
53
54 (% class="mark" %)then set BaudRate,Port,Stop Bit,Data Bit,Parity same with PLC.
55
56 (% class="mark" %)WECON PLC RS422 port,default communication parameters is 9600,1,7,ZEVEN
57
58 (% style="text-align:center" %)
59 [[image:1624348978863-771.png||queryString="width=812&height=494" height="487" width="800" class="img-thumbnail"]]
60
61 == **1.3 Siemens S7-1200** ==
62
63 [[download link>>https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Communicate%20with%20S7-1200%20via%20Ehernet.zip]]
64
65 == **1.4 Allen-Bradley Ethernet DF1** ==
66
67 [[download link>>https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Allen-Bradley%20Ethernet%20DF1.zip]]
68
69 == **1.5 Communication with S7-200 Smart** ==
70
71 [[download link>>https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Communication%20with%20S7-200%20Smart.zip]]
72
73 == **1.6 Delta DVP Ethernet** ==
74
75 [[download link>>https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Delta%20DVP%20Ethernet.zip]]
76
77 == **1.7 Delta DVP Serial Protocol** ==
78
79 [[download link>>https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Delta%20DVP%20Ethernet.zip]]
80
81 == **1.8 Communicate with Mitsubishi FX Series** ==
82
83 [[download link>>url:https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Communicate%20with%20Mitsubishi%20FX%20Series.zip]]
84
85 == **1.9 Communicate with VB inverter** ==
86
87 [[download link>>url:https://ftp.we-con.com.cn/Download/WIKI/V-BOX/Demo/%E9%80%9A%E8%AE%AF%E6%A1%88%E4%BE%8B/Communicate%20with%20VB%20inverter.zip]]
88
89 = **2 User define protocol** =
90
91 More serial port script instruction,please refer manual:[[Lua script function>>doc:V-BOX.V-Net.1\.User Manual.04 Lua Script.01 Lua Functions.WebHome]]~-~-->[[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]]
92
93 == **2.1 Read the temperature sensor.** ==
94
95 the commond format is as beliow:
96
97 Send commond:01 03 02 00 00 03 04 73
98
99 Feedback commond:01 03 06 07 F7 0E 7E B7 35
100
101 Temperature data:07 F7,desimal = 2039,it means temperature is 20.39℃.
102
103 Humidity data:0E 7E,desimal = 3710, it mean humidity is 37.10%RH.
104
105 Script Demo:
106
107 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~--
108
109 function com.main()
110 ~-~-dosomething
111 openPlc()
112 end
113 function openPlc()
114 if obj then
115 ~-~- If the serial port opened,then read/write data by timing
116
117 local wri = string.pack(">HHHH",0X0103,0X0200,0X0003,0X0473)
118 local arr = reading(wri)
119 ~-~- if arr ~~=nil then
120 ~-~- if arr[1] ==33 and arr[2] ==v[2][2] and arr[3] ==v[2][3] then
121 ~-~- local A = arr[4]*256
122 ~-~- local B = A+arr[5]
123 ~-~- addr_setword(v[1],B)
124 ~-~- end
125 ~-~- end
126
127 else
128 ~-~-judge if there is a serial object, then initialize and open the serial port
129 local configs = {
130 name = 'COM1', ~-~-Select serial port COM1
131 mode = 485, ~-~-Communication mode RS485
132 baud_rate = 9600, ~-~-Baud rate 9600
133 stop_bit = 1, ~-~-stop bit 1
134 data_len = 8, ~-~-data length 8
135 check_bit = 'NONE', ~-~-no parity
136
137 }
138 obj,err = serial.open(configs) ~-~-Open serial port
139 if not obj then
140 print("serial open :failed", err) ~-~- Open serial port failed
141 end
142 end
143 end
144
145 function reading(wri)
146 obj:flush() ~-~- Clear serial port
147 obj:write(wri) ~-~- Write serial port
148 print(string.byte(wri,1,#wri))
149 obj:flush() ~-~- Clear serial port 
150 local readed =obj:read(9,1000) ~-~- Read 9 bytes, timeout 1 second
151 if readed and readed ~~= "" then 
152 ~-~- judge that a non-empty string is read
153 print(string.byte(readed,1,#readed))
154 a={string.byte(readed, 1, #readed)}
155 if nil ~~= a[4] and nil ~~= a[5] and nil ~~= a[6] and nil ~~= a[7] then
156 a1=a[4]*256+a[5]
157 a2=a[6]*256+a[7]
158 addr_setword("@HDW0",a1)
159 addr_setword("@HDW1",a2)
160 end
161 return {string.byte(readed, 1, #readed)}
162 elseif readed == nil then
163 print("serial read err:", err or "")
164 return nil
165 end
166 return nil
167 end
168
169 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-