Wiki source code of 1 Communication

Version 14.1 by Ben on 2022/07/14 14:39

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