Wiki source code of 1 Communication
Version 67.1 by Ben on 2022/08/24 12:00
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = (% style="color:inherit; font-family:inherit" %)**WECON PLC**(%%) = | ||
2 | |||
3 | == **LX3V Serial Protocol** == | ||
4 | |||
5 | Supported series: WECON LX2V/ LX2E/ LX3V/LX3VP/LX3VE/LX3VM | ||
6 | |||
7 | **HMI Settings** | ||
8 | |||
9 | |**Item**|**Settings**|**Note** | ||
10 | |Protocol|WECON LX2V/ LX2E/ LX3V/LX3VP/LX3VE/LX3VM| | ||
11 | |Connection|RS422/RS485| | ||
12 | |Baud rate|9600| | ||
13 | |Data bit|7| | ||
14 | |Parity|EVEN| | ||
15 | |Stop bit|1| | ||
16 | |PLC station No.|1| | ||
17 | |||
18 | **Address List** | ||
19 | |||
20 | |**Type**|**Device registers**|**HMI registers**|**Format**|**Range**|**Note** | ||
21 | |(% rowspan="6" %)Bit|X|X|Xo|0~~303237| | ||
22 | |Y|Y|Y o|0~~303237| | ||
23 | |M|M|M d|0~~99999| | ||
24 | |T|T|T d|0~~99999| | ||
25 | |C|C|C d|0~~99999| | ||
26 | |S|S|S d|0~~99999| | ||
27 | |(% rowspan="8" %)Word|X|X|Xo|0~~303237| | ||
28 | |Y|Y|Y o|0~~303237| | ||
29 | |M|M|M d|0~~99999| | ||
30 | |T|T|T d|0~~99999| | ||
31 | |C|C|C d|0~~199| | ||
32 | |D|D|D d|0~~7999| | ||
33 | |S|S|S d|0~~99999| | ||
34 | |SD|SD|SD d|8000~~9999| | ||
35 | |||
36 | **Cable Wiring** | ||
37 | |||
38 | * **RS422** | ||
39 | |||
40 | [[image:image-20220822172228-2.png]] | ||
41 | |||
42 | == **LX5V Serial Protocol** == | ||
43 | |||
44 | This example introduces the establishment of serial port communication between Wecon V-BOX and LX5V. It is introduced through three parts: PLC software configuration, HMI software configuration, and hardware wiring. | ||
45 | |||
46 | **Software configuration of PLC** | ||
47 | |||
48 | **1)PLC programming software** | ||
49 | |||
50 | [[image:image-20220822172553-1.png]] | ||
51 | |||
52 | **2)New PLC project** | ||
53 | |||
54 | Click New Project and select the PLC model. | ||
55 | |||
56 | [[image:image-20220822172623-2.png]] | ||
57 | |||
58 | **3)Set Serial port parameters** | ||
59 | |||
60 | Follow the steps below to configure Serial port parameters | ||
61 | |||
62 | Baud rate:115200 | ||
63 | |||
64 | Data bit:8 | ||
65 | |||
66 | Stop bit:1 | ||
67 | |||
68 | Parity:No verification | ||
69 | |||
70 | [[image:image-20220822172657-3.png]] | ||
71 | |||
72 | **4)Registers list** | ||
73 | |||
74 | [[image:image-20220822172730-4.png]] | ||
75 | |||
76 | **V-BOX software configuration** | ||
77 | |||
78 | **1)V-BOX programming software** | ||
79 | |||
80 | [[image:image-20220824104124-1.png]] | ||
81 | |||
82 | **2)V-NET add device** | ||
83 | |||
84 | Open V-NET 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 access key, password and remark, to add the device. | ||
85 | |||
86 | [[image:image-20220824104909-2.png]] | ||
87 | |||
88 | |||
89 | **3)Set communication port parameters** | ||
90 | |||
91 | Click the communication configuration button on the left to find the communication protocol with LX5V. After selecting the protocol, configure the communication parameters of the COM port. | ||
92 | |||
93 | Baud rate:115200 | ||
94 | |||
95 | Data bit:8 | ||
96 | |||
97 | Stop bit:1 | ||
98 | |||
99 | Parity:No verification | ||
100 | |||
101 | [[image:image-20220811104012-1.png]] | ||
102 | |||
103 | |||
104 | **hardware connection** | ||
105 | |||
106 | **1)Hardware wiring diagram** | ||
107 | |||
108 | This example introduces WeconHMI with LX5V PLC to establish communication through serial port. The connection diagram is as follows: | ||
109 | |||
110 | |||
111 | |||
112 | [[image:image-20220811103005-4.png]] | ||
113 | |||
114 | [[image:image-20220811103227-7.png]] | ||
115 | |||
116 | The above are all the steps for establishing serial port communication between Wecon HMI with LX5V PLC. | ||
117 | |||
118 | == **LX5V-N Ethernet protocol** == | ||
119 | |||
120 | This example introduces the establishment of Ethernet communication between Wecon HMI and LX5V. It is introduced through three parts: PLC software configuration, HMI software configuration, and hardware wiring. | ||
121 | |||
122 | **Software configuration of PLC** | ||
123 | |||
124 | **1)PLC programming software** | ||
125 | |||
126 | [[image:image-20220810164710-1.png]] | ||
127 | |||
128 | **2)New PLC project** | ||
129 | |||
130 | Click New Project and select the PLC model. | ||
131 | |||
132 | [[image:image-20220811115454-1.png]] | ||
133 | |||
134 | **3)Set Ethernet port parameters** | ||
135 | |||
136 | Follow the steps below to configure Ethernet parameters | ||
137 | |||
138 | PLC IP address:192.168.39.200 | ||
139 | |||
140 | default gateway:192.168.39.1 | ||
141 | |||
142 | subnet mask:255.255.255.0 | ||
143 | |||
144 | [[image:image-20220811140530-2.png]] | ||
145 | |||
146 | **4)Registers list** | ||
147 | |||
148 | [[image:image-20220811102219-3.png]] | ||
149 | |||
150 | **HMI software configuration** | ||
151 | |||
152 | **1)HMI programming software** | ||
153 | |||
154 | [[image:image-20220810171237-4.png]] | ||
155 | |||
156 | **2)New HMI project** | ||
157 | |||
158 | Click New Project and select the HMI model. | ||
159 | |||
160 | [[image:image-20220810172010-5.png]] | ||
161 | |||
162 | **3)Set communication port parameters** | ||
163 | |||
164 | Click the project setting button on the left to configure the IP address of the HMI machine to ensure that the HMI and PLC IP remain in a local area network. | ||
165 | |||
166 | HMI IP address:192.168.39.201 | ||
167 | |||
168 | default gateway:192.168.39.1 | ||
169 | |||
170 | subnet mask:255.255.255.0 | ||
171 | |||
172 | [[image:image-20220811170753-2.png]] | ||
173 | |||
174 | Next, click Communication Settings to configure the IP of the HMI communication object. | ||
175 | |||
176 | [[image:image-20220811163047-1.png]] | ||
177 | |||
178 | **hardware connection** | ||
179 | |||
180 | **1)Hardware wiring diagram** | ||
181 | |||
182 | This example introduces WeconHMI with LX5V-N PLC to establish communication through ethernet. The connection diagram is as follows: | ||
183 | |||
184 | [[image:image-20220811170248-1.png]] | ||
185 | |||
186 | The above are all the steps for establishing ethernet communication between Wecon HMI with LX5V PLC. | ||
187 | |||
188 | (% style="text-align:center" %) | ||
189 | [[image:1624348978863-771.png||queryString="width=812&height=494" height="487" width="800" class="img-thumbnail"]] | ||
190 | |||
191 | = **Rockwell PLC** = | ||
192 | |||
193 | == (% id="cke_bm_5621S" style="display:none" %)** **(%%)**MicroLogix Protocol** == | ||
194 | |||
195 | MicroLogix 1000/1100/1200/1400/1500; SLC 5/03 5/04 5/05 PLC-5 | ||
196 | |||
197 | **HMI Settings** | ||
198 | |||
199 | |**Item**|**Settings**|**Note** | ||
200 | |Protocol|Allen-Bradlley MicroLogix| | ||
201 | |Connection|RS232| | ||
202 | |Baud rate|19200| | ||
203 | |Data bit|8| | ||
204 | |Parity|None| | ||
205 | |Stop bit|1| | ||
206 | |PLC station No.|1| | ||
207 | |||
208 | **Address List** | ||
209 | |||
210 | |**Type**|**Device registers**|**Format**|**Range**|**Note** | ||
211 | |(% rowspan="5" %)Bit|I|I d.d|0.0~~255.15| | ||
212 | |O|O d.d|0.0~~255.15| | ||
213 | |B|B nnhh.dd|0.0~~ffff.15|nn: block number (hex) | ||
214 | |S|S d.d|0.0~~255.15| | ||
215 | |N|N nnhh.dd|0.0~~ffff.15|nn: block number (hex) | ||
216 | |(% rowspan="9" %)Word|S|S d|0~~255| | ||
217 | |TS|TS nnhh|0~~ffff|(% rowspan="8" %)nn: block number (hex) | ||
218 | |TP|TP nnhh|0~~ffff | ||
219 | |CS|CS nnhh|0~~ffff | ||
220 | |CP|CP nnhh|0~~ffff | ||
221 | |N|N nnhh|0~~ffff | ||
222 | |C|C nnhh|0~~ffff | ||
223 | |T|T nnhh|0~~ffff | ||
224 | |R|R nnhh|0~~ffff | ||
225 | |||
226 | **Cable Wiring** | ||
227 | |||
228 | [[image:image-20220824110724-1.png]] | ||
229 | |||
230 | |||
231 | |||
232 | == **CompactLogix Protocol** == | ||
233 | |||
234 | ((( | ||
235 | ((( | ||
236 | This example introduces the establishment of Ethernet communication between Wecon V-box and CompactLogix L1769. It is introduced through three parts: PLC software configuration, V-box software configuration, and hardware wiring. | ||
237 | ))) | ||
238 | ))) | ||
239 | |||
240 | ((( | ||
241 | (% class="wikigeneratedid" id="HSoftwareconfigurationofPLC" %) | ||
242 | ((( | ||
243 | **Software configuration of PLC** | ||
244 | ))) | ||
245 | |||
246 | (% class="wikigeneratedid" id="HPLCprogrammingsoftware" %) | ||
247 | ((( | ||
248 | **1)PLC programming software** | ||
249 | ))) | ||
250 | |||
251 | [[image:image-20220714162600-1.png]] | ||
252 | |||
253 | (% class="wikigeneratedid" id="HNewPLCproject" %) | ||
254 | ((( | ||
255 | **2)New PLC project** | ||
256 | ))) | ||
257 | |||
258 | ((( | ||
259 | ((( | ||
260 | Click New Project and select the PLC model. | ||
261 | ))) | ||
262 | ))) | ||
263 | |||
264 | ((( | ||
265 | [[image:image-20220714162617-2.png]] | ||
266 | ))) | ||
267 | |||
268 | ((( | ||
269 | |||
270 | |||
271 | [[image:image-20220714162652-4.png]] | ||
272 | ))) | ||
273 | |||
274 | ((( | ||
275 | (% class="wikigeneratedid" id="HSetEthernetparameters" %) | ||
276 | ((( | ||
277 | **3)Set Ethernet parameters** | ||
278 | ))) | ||
279 | |||
280 | ((( | ||
281 | ((( | ||
282 | ((( | ||
283 | Follow the steps below to configure Ethernet parameters | ||
284 | ))) | ||
285 | ))) | ||
286 | ))) | ||
287 | |||
288 | ((( | ||
289 | ((( | ||
290 | ((( | ||
291 | PLC IP address:192.168.40.101 | ||
292 | ))) | ||
293 | ))) | ||
294 | ))) | ||
295 | |||
296 | ((( | ||
297 | ((( | ||
298 | ((( | ||
299 | default gateway:192.168.40.1 | ||
300 | ))) | ||
301 | ))) | ||
302 | ))) | ||
303 | |||
304 | ((( | ||
305 | ((( | ||
306 | ((( | ||
307 | subnet mask:255.255.255.0 | ||
308 | ))) | ||
309 | ))) | ||
310 | ))) | ||
311 | |||
312 | ((( | ||
313 | [[image:image-20220714162713-5.png]] | ||
314 | ))) | ||
315 | |||
316 | ((( | ||
317 | |||
318 | ))) | ||
319 | |||
320 | ((( | ||
321 | (% class="wikigeneratedid" id="HV-boxsoftwareconfiguration" %) | ||
322 | ((( | ||
323 | **V-box software configuration** | ||
324 | ))) | ||
325 | |||
326 | (% class="wikigeneratedid" id="HV-boxprogrammingsoftware" %) | ||
327 | ((( | ||
328 | **1)V-box programming software** | ||
329 | ))) | ||
330 | |||
331 | (% class="wikigeneratedid" %) | ||
332 | ((( | ||
333 | [[image:image-20220714162725-6.png]] | ||
334 | ))) | ||
335 | |||
336 | (% class="wikigeneratedid" id="HConfiguredevicenetwork" %) | ||
337 | ((( | ||
338 | **2)Configure device network** | ||
339 | ))) | ||
340 | |||
341 | ((( | ||
342 | ((( | ||
343 | ((( | ||
344 | 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. | ||
345 | ))) | ||
346 | |||
347 | ((( | ||
348 | In the example below, the IP address of V-Box is configured as 192.168.40.66, and the networking method is 4G connection | ||
349 | ))) | ||
350 | ))) | ||
351 | ))) | ||
352 | |||
353 | ((( | ||
354 | ((( | ||
355 | [[image:image-20220714162737-7.png]] | ||
356 | |||
357 | |||
358 | ))) | ||
359 | ))) | ||
360 | ))) | ||
361 | ))) | ||
362 | |||
363 | (% class="wikigeneratedid" id="HV-netadddevice" %) | ||
364 | ((( | ||
365 | **3)V-net add device** | ||
366 | ))) | ||
367 | ))) | ||
368 | |||
369 | ((( | ||
370 | ((( | ||
371 | 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-20220714162752-8.png]] | ||
372 | ))) | ||
373 | |||
374 | |||
375 | ))) | ||
376 | |||
377 | ((( | ||
378 | (% class="wikigeneratedid" id="HSetcommunicationportparameters" %) | ||
379 | ((( | ||
380 | **4)Set communication port parameters** | ||
381 | ))) | ||
382 | |||
383 | ((( | ||
384 | 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. | ||
385 | ))) | ||
386 | |||
387 | [[image:image-20220714162805-9.png]] | ||
388 | ))) | ||
389 | |||
390 | ((( | ||
391 | 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. | ||
392 | ))) | ||
393 | |||
394 | [[image:image-20220714162814-10.png]] | ||
395 | |||
396 | |||
397 | ((( | ||
398 | After adding the protocol Allen-BradleyMicro850_FreeTag, click[[image:image-20220714143838-2.png]]icon add label.[[image:image-20220714162827-11.png]] | ||
399 | ))) | ||
400 | |||
401 | (% class="wikigeneratedid" id="HEngineeringproduction" %) | ||
402 | ((( | ||
403 | **5)Engineering production** | ||
404 | ))) | ||
405 | |||
406 | (% class="wikigeneratedid" %) | ||
407 | ((( | ||
408 | ((( | ||
409 | According to your own needs, use the V-NET client software to edit the required data monitoring points. | ||
410 | ))) | ||
411 | |||
412 | [[image:image-20220714162841-12.png]] | ||
413 | |||
414 | |||
415 | ((( | ||
416 | **hardware connection** | ||
417 | ))) | ||
418 | ))) | ||
419 | |||
420 | ((( | ||
421 | **1)Hardware wiring diagram** | ||
422 | ))) | ||
423 | |||
424 | ((( | ||
425 | ((( | ||
426 | This example introduces Wecon V-box with Allen-Bradley L1769 PLC to establish communication through Ethernet. The connection diagram is as follows: | ||
427 | ))) | ||
428 | |||
429 | [[image:image-20220714162856-13.png]] | ||
430 | |||
431 | ((( | ||
432 | The above are all the steps for establishing Ethernet communication between Wecon V-box with CompactLogix L1769 PLC. | ||
433 | |||
434 | |||
435 | == **Allen-Bradley Ethernet DF1** == | ||
436 | |||
437 | [[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]] | ||
438 | |||
439 | |||
440 | = **Siemens PLC** = | ||
441 | |||
442 | == **S7-200 Smart Ethernet Protocol** == | ||
443 | |||
444 | [[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]] | ||
445 | ))) | ||
446 | ))) | ||
447 | |||
448 | == **S7-1200 Ethernet Protocol** == | ||
449 | |||
450 | [[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]] | ||
451 | |||
452 | = **Mitsubishi PLC** = | ||
453 | |||
454 | == **Mitsubishi FX Series Protocol** == | ||
455 | |||
456 | [[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]] | ||
457 | |||
458 | = **Delta PLC** = | ||
459 | |||
460 | == **DVP Ethernet Protocol** == | ||
461 | |||
462 | [[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]] | ||
463 | |||
464 | == **DVP Serial Protocol** == | ||
465 | |||
466 | [[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]] | ||
467 | |||
468 | = **Omron PLC** = | ||
469 | |||
470 | == **CP1 Series Protocol** == | ||
471 | |||
472 | [[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]] | ||
473 | |||
474 | == **CJ2M Series Protocol** == | ||
475 | |||
476 | [[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]] | ||
477 | |||
478 | = **Modbus RTU** = | ||
479 | |||
480 | == **V-BOX as master** == | ||
481 | |||
482 | Select the protocol “(% class="mark" %)Modbus RTU Slave(All Fuction)”, | ||
483 | |||
484 | (% class="mark" %)then set BaudRate,Port,Stop Bit,Data Bit,Parity | ||
485 | |||
486 | (% style="text-align:center" %) | ||
487 | [[image:1624342015914-382.png||height="486" width="800" class="img-thumbnail"]] | ||
488 | |||
489 | == **V-BOX as slave** == | ||
490 | |||
491 | Select the protocol “(% class="mark" %)**Modbus RTU Master”**, | ||
492 | |||
493 | (% class="mark" %)then set BaudRate,Port,Stop Bit,Data Bit,Parity | ||
494 | |||
495 | (% style="text-align:center" %) | ||
496 | [[image:1624348709622-711.png||queryString="width=809&height=493" height="488" width="800" class="img-thumbnail"]] | ||
497 | |||
498 | **Address List** | ||
499 | |||
500 | (% class="table-bordered" %) | ||
501 | |**Type**|**Register**|**Function code & Description** | ||
502 | |(% rowspan="11" %)Word|(% rowspan="3" %)3|04 (read input register: read current binary value in one or more input registers) | ||
503 | |06 (write single register: write a binary value to a holding register) | ||
504 | |10 (write values to multiple addresses ) | ||
505 | |(% rowspan="3" %)4|03 (read holding register: read current binary value in one or more holding registers) | ||
506 | |06 (write single register: write a binary value to a holding register) | ||
507 | |10 (write values to multiple addresses ) | ||
508 | |(% rowspan="3" %)W6|03 (read holding register: read current binary value in one or more holding registers) | ||
509 | |06 (write single register: write a binary value to a holding register) | ||
510 | |10 (write values to multiple addresses ) | ||
511 | |(% rowspan="2" %)W16|03 (read holding register: read current binary value in one or more holding registers) | ||
512 | |10 (write values to multiple addresses ) | ||
513 | |(% rowspan="11" %)Bit|(% rowspan="3" %)0|01 (Read coil state) | ||
514 | |05 (Force a single coil to force the on/off state of a logic coil) | ||
515 | |0F (Write multiple bits, ie write continuously) | ||
516 | |(% rowspan="3" %)1|02 (Read the input state) | ||
517 | |05 (Force a single coil to force the on/off state of a logic coil) | ||
518 | |0F (Write multiple bits) | ||
519 | |(% rowspan="3" %)W5|01 (Read coil state to obtain the current state of a set of logic coils) | ||
520 | |05 (Force a single coil to force the on/off state of a logic coil) | ||
521 | |0F (Write multiple bits) | ||
522 | |(% rowspan="2" %)W15|01 (Read coil state to obtain the current state of a set of logic coils) | ||
523 | |0F (Write multiple bits) | ||
524 | |||
525 | == **communicate with VB inverter** == | ||
526 | |||
527 | [[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]] | ||
528 | |||
529 | = **User define protocol** = | ||
530 | |||
531 | More serial port script instruction,please refer manual:[[Lua script function>>doc:V-BOX.V-Net.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]] | ||
532 | |||
533 | == **Read the temperature sensor.** == | ||
534 | |||
535 | the commond format is as beliow: | ||
536 | |||
537 | Send commond:01 03 02 00 00 03 04 73 | ||
538 | |||
539 | Feedback commond:01 03 06 07 F7 0E 7E B7 35 | ||
540 | |||
541 | Temperature data:07 F7,desimal = 2039,it means temperature is 20.39℃. | ||
542 | |||
543 | Humidity data:0E 7E,desimal = 3710, it mean humidity is 37.10%RH. | ||
544 | |||
545 | Script Demo: | ||
546 | |||
547 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-- | ||
548 | |||
549 | function com.main() | ||
550 | ~-~-dosomething | ||
551 | openPlc() | ||
552 | end | ||
553 | function openPlc() | ||
554 | if obj then | ||
555 | ~-~- If the serial port opened,then read/write data by timing | ||
556 | |||
557 | local wri = string.pack(">HHHH",0X0103,0X0200,0X0003,0X0473) | ||
558 | local arr = reading(wri) | ||
559 | ~-~- if arr ~~=nil then | ||
560 | ~-~- if arr[1] ==33 and arr[2] ==v[2][2] and arr[3] ==v[2][3] then | ||
561 | ~-~- local A = arr[4]*256 | ||
562 | ~-~- local B = A+arr[5] | ||
563 | ~-~- addr_setword(v[1],B) | ||
564 | ~-~- end | ||
565 | ~-~- end | ||
566 | |||
567 | else | ||
568 | ~-~-judge if there is a serial object, then initialize and open the serial port | ||
569 | local configs = { | ||
570 | name = 'COM1', ~-~-Select serial port COM1 | ||
571 | mode = 485, ~-~-Communication mode RS485 | ||
572 | baud_rate = 9600, ~-~-Baud rate 9600 | ||
573 | stop_bit = 1, ~-~-stop bit 1 | ||
574 | data_len = 8, ~-~-data length 8 | ||
575 | check_bit = 'NONE', ~-~-no parity | ||
576 | |||
577 | } | ||
578 | obj,err = serial.open(configs) ~-~-Open serial port | ||
579 | if not obj then | ||
580 | print("serial open :failed", err) ~-~- Open serial port failed | ||
581 | end | ||
582 | end | ||
583 | end | ||
584 | |||
585 | function reading(wri) | ||
586 | obj:flush() ~-~- Clear serial port | ||
587 | obj:write(wri) ~-~- Write serial port | ||
588 | print(string.byte(wri,1,#wri)) | ||
589 | obj:flush() ~-~- Clear serial port | ||
590 | local readed =obj:read(9,1000) ~-~- Read 9 bytes, timeout 1 second | ||
591 | if readed and readed ~~= "" then | ||
592 | ~-~- judge that a non-empty string is read | ||
593 | print(string.byte(readed,1,#readed)) | ||
594 | a={string.byte(readed, 1, #readed)} | ||
595 | if nil ~~= a[4] and nil ~~= a[5] and nil ~~= a[6] and nil ~~= a[7] then | ||
596 | a1=a[4]*256+a[5] | ||
597 | a2=a[6]*256+a[7] | ||
598 | addr_setword("@HDW0",a1) | ||
599 | addr_setword("@HDW1",a2) | ||
600 | end | ||
601 | return {string.byte(readed, 1, #readed)} | ||
602 | elseif readed == nil then | ||
603 | print("serial read err:", err or "") | ||
604 | return nil | ||
605 | end | ||
606 | return nil | ||
607 | end | ||
608 | |||
609 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- |