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