Wiki source code of 1 Communication

Version 12.1 by Ben on 2022/07/14 14:03

Show last authors
1 = **1 General communication with PLC** =
2
3 == **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 == **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 == ==
62
63 == **2 Communication with Allen-Bradley CompactLogix L1769** ==
64
65 === **Overview** ===
66
67 (((
68 This example introduces the establishment of Ethernet communication between Wecon V-box and Allen-Bradley L1769. It is introduced through three parts: PLC software configuration, V-box software configuration, and hardware wiring.
69 )))
70
71 (((
72
73 )))
74
75 (((
76 == **Software configuration of PLC** ==
77
78 === **PLC programming software** ===
79
80 [[image:image-20220714113935-3.png]]
81
82 === **New PLC project** ===
83
84 (((
85 Click New Project and select the PLC model.
86 )))
87
88 (((
89 [[image:image-20220714114247-4.png]]
90 )))
91
92 (((
93 [[image:image-20220714114257-5.png]]
94 )))
95
96 (((
97
98 )))
99
100 (((
101 === **Set Ethernet parameters** ===
102
103 (((
104 Follow the steps below to configure Ethernet parameters
105 )))
106
107 (((
108 PLC IP address:192.168.40.101
109 )))
110
111 (((
112 default gateway:192.168.40.1
113 )))
114
115 (((
116 subnet mask:255.255.255.0
117 )))
118
119 (((
120 [[image:image-20220714115012-6.png]]
121 )))
122
123 (((
124
125 )))
126
127 (((
128 == **V-box software configuration** ==
129
130 === **V-box programming software** ===
131
132 [[image:image-20220714115214-7.png]]
133
134
135 === **Configure device network** ===
136
137 (((
138 Click the Configuration Download button[[image:image-20220714115308-8.png||height="22" width="15"]], It is used to configure the device network, update the device time, obtain the device machine code, check the device network, etc.
139 )))
140
141 (((
142 In the example below, the IP address of V-Box is configured as 192.168.40.66, and the networking method is 4G connection.
143 )))
144
145 [[image:image-20220714115440-9.png||height="425" width="791"]]
146 )))
147 )))
148
149 == **V-net add device** ==
150 )))
151
152 (((
153 Open VNET client software → add device. As shown in the figure below, click "+" in the order of steps, and the Add Device window will pop up, enter the device machine code/product code, device password, and device alias to add the device. 
154 )))
155
156 (((
157 [[image:image-20220714115640-10.png||height="430" width="797"]]
158 )))
159
160 (((
161
162 )))
163
164 (((
165 === **Set communication port parameters** ===
166
167 In the device list on the left, find the Vbox that communicates with the L1769, click it and select configuration,communication port configuration in the main interface to add a communication protocol.
168
169 [[image:image-20220714115848-11.png||height="432" width="802"]]
170 )))
171
172
173 The communication port is selected as Ethernet, the device type is selected as Allen-Bradley, the protocol is Allen-BradleyMicro850_FreeTag EthemetIP, and the IP is the internal IP address of the L1769 PLC. The port number is 44818.
174
175
176
177 == **Siemens S7-1200** ==
178
179 [[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]]
180
181 == **Allen-Bradley Ethernet DF1** ==
182
183 [[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]]
184
185 == **Communication with S7-200 Smart** ==
186
187 [[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]]
188
189 == **Delta DVP Ethernet** ==
190
191 [[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]]
192
193 == **Delta DVP Serial Protocol** ==
194
195 [[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]]
196
197 == **Communicate with Mitsubishi FX Series** ==
198
199 [[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]]
200
201 == **Communicate with VB inverter** ==
202
203 [[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]]
204
205 == **Omron CP1 Series** ==
206
207 [[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%20ORMON%20CP1%20Series.zip]]
208
209 == **Omron CJ2M** ==
210
211 [[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%20ORMON%20CJ2M.zip]]
212
213 = **2 User define protocol** =
214
215 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]]
216
217 == **Read the temperature sensor.** ==
218
219 the commond format is as beliow:
220
221 Send commond:01 03 02 00 00 03 04 73
222
223 Feedback commond:01 03 06 07 F7 0E 7E B7 35
224
225 Temperature data:07 F7,desimal = 2039,it means temperature is 20.39℃.
226
227 Humidity data:0E 7E,desimal = 3710, it mean humidity is 37.10%RH.
228
229 Script Demo:
230
231 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~--
232
233 function com.main()
234 ~-~-dosomething
235 openPlc()
236 end
237 function openPlc()
238 if obj then
239 ~-~- If the serial port opened,then read/write data by timing
240
241 local wri = string.pack(">HHHH",0X0103,0X0200,0X0003,0X0473)
242 local arr = reading(wri)
243 ~-~- if arr ~~=nil then
244 ~-~- if arr[1] ==33 and arr[2] ==v[2][2] and arr[3] ==v[2][3] then
245 ~-~- local A = arr[4]*256
246 ~-~- local B = A+arr[5]
247 ~-~- addr_setword(v[1],B)
248 ~-~- end
249 ~-~- end
250
251 else
252 ~-~-judge if there is a serial object, then initialize and open the serial port
253 local configs = {
254 name = 'COM1', ~-~-Select serial port COM1
255 mode = 485, ~-~-Communication mode RS485
256 baud_rate = 9600, ~-~-Baud rate 9600
257 stop_bit = 1, ~-~-stop bit 1
258 data_len = 8, ~-~-data length 8
259 check_bit = 'NONE', ~-~-no parity
260
261 }
262 obj,err = serial.open(configs) ~-~-Open serial port
263 if not obj then
264 print("serial open :failed", err) ~-~- Open serial port failed
265 end
266 end
267 end
268
269 function reading(wri)
270 obj:flush() ~-~- Clear serial port
271 obj:write(wri) ~-~- Write serial port
272 print(string.byte(wri,1,#wri))
273 obj:flush() ~-~- Clear serial port 
274 local readed =obj:read(9,1000) ~-~- Read 9 bytes, timeout 1 second
275 if readed and readed ~~= "" then 
276 ~-~- judge that a non-empty string is read
277 print(string.byte(readed,1,#readed))
278 a={string.byte(readed, 1, #readed)}
279 if nil ~~= a[4] and nil ~~= a[5] and nil ~~= a[6] and nil ~~= a[7] then
280 a1=a[4]*256+a[5]
281 a2=a[6]*256+a[7]
282 addr_setword("@HDW0",a1)
283 addr_setword("@HDW1",a2)
284 end
285 return {string.byte(readed, 1, #readed)}
286 elseif readed == nil then
287 print("serial read err:", err or "")
288 return nil
289 end
290 return nil
291 end
292
293 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-