Wiki source code of 1 Communication

Version 16.1 by Ben on 2022/07/14 16:16

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 == **2 Communication with Allen-Bradley CompactLogix L1769** ==
62
63 (((
64 (((
65 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.
66 )))
67
68
69 )))
70
71 (((
72 (% class="wikigeneratedid" id="HSoftwareconfigurationofPLC" %)
73 (((
74 **Software configuration of PLC**
75 )))
76
77 (% class="wikigeneratedid" id="HPLCprogrammingsoftware" %)
78 (((
79 **1)PLC programming software**
80 )))
81
82 [[image:image-20220714160120-3.png||height="308" width="255"]]
83
84 (% class="wikigeneratedid" id="HNewPLCproject" %)
85 (((
86 **2)New PLC project**
87 )))
88
89 (((
90 (((
91 Click New Project and select the PLC model.
92 )))
93 )))
94
95 (((
96
97 )))
98
99 (((
100 [[image:image-20220714160335-4.png||height="215" width="398"]]
101
102 [[image:image-20220714160412-5.png||height="319" width="395"]]
103 )))
104
105 (((
106 (% class="wikigeneratedid" id="HSetEthernetparameters" %)
107 (((
108 **3)Set Ethernet parameters**
109 )))
110
111 (((
112 (((
113 (((
114 Follow the steps below to configure Ethernet parameters
115 )))
116 )))
117 )))
118
119 (((
120 (((
121 (((
122 PLC IP address:192.168.40.101
123 )))
124 )))
125 )))
126
127 (((
128 (((
129 (((
130 default gateway:192.168.40.1
131 )))
132 )))
133 )))
134
135 (((
136 (((
137 (((
138 subnet mask:255.255.255.0
139 )))
140 )))
141 )))
142
143 (((
144 [[image:image-20220714160439-6.png||height="325" width="717"]]
145 )))
146
147 (((
148
149 )))
150
151 (((
152 (% class="wikigeneratedid" id="HV-boxsoftwareconfiguration" %)
153 (((
154 **V-box software configuration**
155 )))
156
157 (% class="wikigeneratedid" id="HV-boxprogrammingsoftware" %)
158 (((
159 **1)V-box programming software**
160 )))
161
162 (% class="wikigeneratedid" %)
163 (((
164 [[image:image-20220714160541-7.png||height="189" width="314"]]
165 )))
166
167 (% class="wikigeneratedid" id="HConfiguredevicenetwork" %)
168 (((
169 **2)Configure device network**
170 )))
171
172 (((
173 (((
174 (((
175 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.
176 )))
177
178 (((
179 In the example below, the IP address of V-Box is configured as 192.168.40.66, and the networking method is 4G connection
180 )))
181 )))
182 )))
183
184 (((
185 (((
186 [[image:image-20220714160651-8.png||height="389" width="724"]]
187
188
189 )))
190 )))
191 )))
192 )))
193
194 (% class="wikigeneratedid" id="HV-netadddevice" %)
195 (((
196 **3)V-net add device**
197 )))
198 )))
199
200 (((
201 (((
202 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.   [[image:image-20220714160034-2.png||height="394" width="731"]]
203 )))
204
205
206 )))
207
208 (((
209 (% class="wikigeneratedid" id="HSetcommunicationportparameters" %)
210 (((
211 **4)Set communication port parameters**
212 )))
213
214 (((
215 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.
216 )))
217
218 [[image:image-20220714160843-9.png||height="395" width="733"]]
219 )))
220
221 (((
222 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.
223 )))
224
225 [[image:image-20220714160943-10.png||height="300" width="487"]]
226
227
228 (((
229 After adding the protocol Allen-BradleyMicro850_FreeTag, click[[image:image-20220714143838-2.png]]icon add label.[[image:image-20220714161120-12.png||height="403" width="740"]]
230 )))
231
232 (% class="wikigeneratedid" id="HEngineeringproduction" %)
233 (((
234 **5)Engineering production**
235 )))
236
237 (% class="wikigeneratedid" %)
238 (((
239 (((
240 According to your own needs, use the V-NET client software to edit the required data monitoring points.
241 )))
242
243 [[image:image-20220714161229-13.png||height="217" width="732"]]
244
245
246 (((
247 **hardware connection**
248 )))
249 )))
250
251 (((
252 **1)Hardware wiring diagram**
253 )))
254
255 (((
256 (((
257 This example introduces Wecon V-box with Allen-Bradley L1769 PLC to establish communication through Ethernet. The connection diagram is as follows:
258 )))
259
260 [[image:image-20220714161445-14.png]]
261
262 (((
263 The above are all the steps for establishing Ethernet communication between Wecon V-box with Allen-Bradley L1769 PLC.
264 )))
265 )))
266
267 == **Siemens S7-1200** ==
268
269 [[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]]
270
271 == **Allen-Bradley Ethernet DF1** ==
272
273 [[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]]
274
275 == **Communication with S7-200 Smart** ==
276
277 [[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]]
278
279 == **Delta DVP Ethernet** ==
280
281 [[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]]
282
283 == **Delta DVP Serial Protocol** ==
284
285 [[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]]
286
287 == **Communicate with Mitsubishi FX Series** ==
288
289 [[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]]
290
291 == **Communicate with VB inverter** ==
292
293 [[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]]
294
295 == **Omron CP1 Series** ==
296
297 [[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]]
298
299 == **Omron CJ2M** ==
300
301 [[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]]
302
303 = **2 User define protocol** =
304
305 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]]
306
307 == **Read the temperature sensor.** ==
308
309 the commond format is as beliow:
310
311 Send commond:01 03 02 00 00 03 04 73
312
313 Feedback commond:01 03 06 07 F7 0E 7E B7 35
314
315 Temperature data:07 F7,desimal = 2039,it means temperature is 20.39℃.
316
317 Humidity data:0E 7E,desimal = 3710, it mean humidity is 37.10%RH.
318
319 Script Demo:
320
321 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~--
322
323 function com.main()
324 ~-~-dosomething
325 openPlc()
326 end
327 function openPlc()
328 if obj then
329 ~-~- If the serial port opened,then read/write data by timing
330
331 local wri = string.pack(">HHHH",0X0103,0X0200,0X0003,0X0473)
332 local arr = reading(wri)
333 ~-~- if arr ~~=nil then
334 ~-~- if arr[1] ==33 and arr[2] ==v[2][2] and arr[3] ==v[2][3] then
335 ~-~- local A = arr[4]*256
336 ~-~- local B = A+arr[5]
337 ~-~- addr_setword(v[1],B)
338 ~-~- end
339 ~-~- end
340
341 else
342 ~-~-judge if there is a serial object, then initialize and open the serial port
343 local configs = {
344 name = 'COM1', ~-~-Select serial port COM1
345 mode = 485, ~-~-Communication mode RS485
346 baud_rate = 9600, ~-~-Baud rate 9600
347 stop_bit = 1, ~-~-stop bit 1
348 data_len = 8, ~-~-data length 8
349 check_bit = 'NONE', ~-~-no parity
350
351 }
352 obj,err = serial.open(configs) ~-~-Open serial port
353 if not obj then
354 print("serial open :failed", err) ~-~- Open serial port failed
355 end
356 end
357 end
358
359 function reading(wri)
360 obj:flush() ~-~- Clear serial port
361 obj:write(wri) ~-~- Write serial port
362 print(string.byte(wri,1,#wri))
363 obj:flush() ~-~- Clear serial port 
364 local readed =obj:read(9,1000) ~-~- Read 9 bytes, timeout 1 second
365 if readed and readed ~~= "" then 
366 ~-~- judge that a non-empty string is read
367 print(string.byte(readed,1,#readed))
368 a={string.byte(readed, 1, #readed)}
369 if nil ~~= a[4] and nil ~~= a[5] and nil ~~= a[6] and nil ~~= a[7] then
370 a1=a[4]*256+a[5]
371 a2=a[6]*256+a[7]
372 addr_setword("@HDW0",a1)
373 addr_setword("@HDW1",a2)
374 end
375 return {string.byte(readed, 1, #readed)}
376 elseif readed == nil then
377 print("serial read err:", err or "")
378 return nil
379 end
380 return nil
381 end
382
383 ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-