Wiki source code of Application Note : Communicate with Different Sensors ----- RS485-LN / RS485-BL
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | (% class="wikigeneratedid" %) | ||
2 | **Contents:** | ||
3 | |||
4 | {{toc/}} | ||
5 | |||
6 | = 1. Introduction = | ||
7 | |||
8 | This article provide the examples for RS485-LN to connect to different type of RS485 sensors. | ||
9 | |||
10 | == 1.1 Example 1: Connect to Leak relay and VFD == | ||
11 | |||
12 | This instruction is provided by Xavier Florensa Berenguer from [[NORIA GRUPO DE COMPRAS>>url:http://www.gruponovelec.com/]]. It is to show how to use RS485-LN to connect to Relay and VFD and communicate with Mobile. The structure is like below: | ||
13 | |||
14 | [[image:image-20220527091852-1.png]] | ||
15 | |||
16 | Connection | ||
17 | |||
18 | |||
19 | |||
20 | [[image:image-20220527091942-2.png]](% style="display:none" %) | ||
21 | |||
22 | Connection | ||
23 | |||
24 | |||
25 | Related documents: | ||
26 | |||
27 | * [[Solar Pump with Dragino>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/Relay_VFD/]] : System Structure | ||
28 | * [[Configure Manual>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/Relay_VFD/]] : Explanation on how to integrate to Node-red and to the Mobile Phone, and with link to the Github code. | ||
29 | * [[Video Demo>>url:https://www.youtube.com/watch?v=TAFZ5eaf-MY&t=6s&ab_channel=XavierFlorensaBerenguer]] | ||
30 | |||
31 | |||
32 | == 1.2 Example 2: Connect to Pulse Counter == | ||
33 | |||
34 | This instruction is provided by Xavier Florensa Berenguer from [[NORIA GRUPO DE COMPRAS>>url:http://www.gruponovelec.com/]]. It is to show how to use RS485-LN to connect to Pulse Counter and communicate with Mobile. This example and example 2 compose the structure for a farm IoT solution. The structure is like below: | ||
35 | |||
36 | [[image:image-20220527092058-3.png]] | ||
37 | |||
38 | Connection | ||
39 | |||
40 | |||
41 | [[image:image-20220527092146-4.png]] | ||
42 | |||
43 | Connection | ||
44 | |||
45 | * [[Pickdata MIO40 water pulse counter to LoRa with Dragino RS485-LN>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/Pulse-Counter/]] : Configure Document | ||
46 | * [[Dragino Solution in Farm>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/&file=Dragino%20on%20Farms.pptx]] | ||
47 | |||
48 | (% class="wikigeneratedid" %) | ||
49 | == == | ||
50 | |||
51 | == 1.3 Example3: Use RS485-LN with energy meters == | ||
52 | |||
53 | === 1.3.1 OverView === | ||
54 | |||
55 | ((( | ||
56 | **Note**:The specifications of each energy meter are different, please refer to your own energy meter specifications. | ||
57 | ))) | ||
58 | |||
59 | ((( | ||
60 | This example describes a single-phase meter.This is the connection between the RS485-LN and the energy meter. | ||
61 | ))) | ||
62 | |||
63 | [[image:image-20220527092419-5.png]] | ||
64 | |||
65 | Connection1 | ||
66 | |||
67 | |||
68 | ((( | ||
69 | How to connect with Energy Meter: | ||
70 | ))) | ||
71 | |||
72 | ((( | ||
73 | Follow the instructions of the electric energy meter to connect the phase line and the neutral line, and then connect 485A+ and 485B- to RS485A and RA485B of RS485-LN respectively. | ||
74 | ))) | ||
75 | |||
76 | ((( | ||
77 | The RS485-LN can be powered by 7 ~~ 24V DC power source. Connection as below | ||
78 | ))) | ||
79 | |||
80 | ((( | ||
81 | Power Source VIN to RS485-LN VIN+ | ||
82 | ))) | ||
83 | |||
84 | ((( | ||
85 | Power Source GND to RS485-LN VIN- | ||
86 | ))) | ||
87 | |||
88 | ((( | ||
89 | Once there is power, the RS485-LN will be on. | ||
90 | ))) | ||
91 | |||
92 | [[image:image-20220527092514-6.png]] | ||
93 | |||
94 | Connection2 | ||
95 | |||
96 | |||
97 | |||
98 | Connection3 | ||
99 | |||
100 | |||
101 | === 1.3.2 How to use the parameters of the energy meter and MODBUS commands === | ||
102 | |||
103 | If the user needs to read the parameters of the electric energy meter and use the modbus command,please refer to the appendix of the MODBUS communication protocol in the user manual of the energy meter. | ||
104 | |||
105 | [[image:https://wiki.dragino.com/images/thumb/3/35/Meter4.png/600px-Meter4.png||alt="Meter4.png" height="193" width="600"]] | ||
106 | |||
107 | (% class="box infomessage" %) | ||
108 | ((( | ||
109 | Example:AT+COMMAND1=01 03 00 00 00 01 84 0A | ||
110 | ))) | ||
111 | |||
112 | * The first byte : slave address code (=001~247) | ||
113 | * The second byte : read register value function code | ||
114 | * 3rd and 4th bytes: start address of register to be read | ||
115 | * 5th and 6th bytes: Number of registers to read | ||
116 | * 7th and 8th bytes: CRC16 checksum from bytes 1 to 6. | ||
117 | |||
118 | ((( | ||
119 | How to parse the reading of the return command of the parameter: | ||
120 | ))) | ||
121 | |||
122 | (% class="box infomessage" %) | ||
123 | ((( | ||
124 | Example:RETURN1:01 03 02 08 FD 7E 05 | ||
125 | ))) | ||
126 | |||
127 | * The first byte ARD: slave address code (=001~254) | ||
128 | * The second byte: Return to read function code | ||
129 | * 3rd byte: total number of bytes | ||
130 | * 4th~5th bytes: register data | ||
131 | * The 6th and 7th bytes: CRC16 checksum | ||
132 | * 08 FD is register data. Use short integer 16 bits to convert to decimal, get 2301, then 230.1V is the voltage. | ||
133 | |||
134 | === 1.3.3 How to configure RS485-LN and parse output commands === | ||
135 | |||
136 | RS485-LN provides two configuration methods: AT COMMAND and DOWNLINK. | ||
137 | |||
138 | ==== 1.3.3.1 via AT COMMAND: ==== | ||
139 | |||
140 | First, we can use **AT+CFGDEV** to get the return value, and we can also judge whether the input parameters are correct. | ||
141 | |||
142 | ((( | ||
143 | If the configured parameters and commands are incorrect, the return value is not obtained. | ||
144 | ))) | ||
145 | |||
146 | [[image:https://wiki.dragino.com/images/b/bc/AT_COMMAND1.png||height="358" width="456"]] | ||
147 | |||
148 | AT COMMAND | ||
149 | |||
150 | (% class="box infomessage" %) | ||
151 | ((( | ||
152 | AT+DATACUTx : This command defines how to handle the return from AT+COMMANDx, max reture length is 40 bytes. AT+DATACUTx=a,b,c | ||
153 | ))) | ||
154 | |||
155 | a: length for the return of AT+COMMAND | ||
156 | |||
157 | b:1: grab valid value by byte, max 6 bytes. 2: grab valid value by bytes section, max 3 sections. | ||
158 | |||
159 | c: define the position for valid value. | ||
160 | |||
161 | [[image:https://wiki.dragino.com/images/7/7d/AT_COMMAND2.png||height="278" width="477"]] | ||
162 | |||
163 | AT COMMAND | ||
164 | |||
165 | PAYLOAD is available after the valid value is intercepted. | ||
166 | |||
167 | |||
168 | [[image:https://wiki.dragino.com/images/3/3a/AT_COMMAND4.png||height="219" width="576"]] | ||
169 | |||
170 | AT COMMAND | ||
171 | |||
172 | You can get configured PAYLOAD on TTN. | ||
173 | |||
174 | |||
175 | [[image:https://wiki.dragino.com/images/thumb/c/c2/AT_COMMAND3.png/600px-AT_COMMAND3.png||height="138" width="600"]] | ||
176 | |||
177 | ((( | ||
178 | AT COMMAND | ||
179 | ))) | ||
180 | |||
181 | ((( | ||
182 | |||
183 | ))) | ||
184 | |||
185 | ((( | ||
186 | **Example**: CMD1:Read current data with MODBUS command. address:0x03 AT+COMMAND1= 01 03 00 03 00 01,1 | ||
187 | ))) | ||
188 | |||
189 | ((( | ||
190 | RETURN1:01 03 02 00 02 39 85 00 00(return data) | ||
191 | ))) | ||
192 | |||
193 | ((( | ||
194 | AT+DATACUT1:9,1,4+5+6+7 Take the return value 00 02 39 85 as the valid value of reading current data and used to splice payload. | ||
195 | ))) | ||
196 | |||
197 | ((( | ||
198 | CMD2:Read voltage data with MODBUS command. address:0x00 AT+COMMAND2= 01 03 00 00 00 01,1 | ||
199 | ))) | ||
200 | |||
201 | ((( | ||
202 | RETURN2:01 03 02 08 DC BE 1D(return data) | ||
203 | ))) | ||
204 | |||
205 | ((( | ||
206 | AT+DATACUT2:7,1,4+5 Take the return value 08 DC as the valid value of reading voltage data and used to splice payload. | ||
207 | ))) | ||
208 | |||
209 | ((( | ||
210 | CMD3:Read total active energy data with MODBUS command. address:0x0031 AT+COMMAND3= 01 03 00 31 00 02,1 | ||
211 | ))) | ||
212 | |||
213 | ((( | ||
214 | RETURN3:01 03 04 00 00 00 44 FA 00(return data) | ||
215 | ))) | ||
216 | |||
217 | ((( | ||
218 | AT+DATACUT3:9,1,4+5+6+7 Take the return value 00 00 00 44 as the valid value of reading total active energy data and used to splice payload. | ||
219 | ))) | ||
220 | |||
221 | ((( | ||
222 | Payload:01 00 02 39 85 08 DC 00 00 00 44 | ||
223 | ))) | ||
224 | |||
225 | [[image:https://wiki.dragino.com/images/thumb/9/9b/AT_COMMAND10.png/600px-AT_COMMAND10.png||height="278" width="600"]] | ||
226 | |||
227 | AT COMMAND | ||
228 | |||
229 | 01 is device address,00 02 is the current, 08 DC is the voltage,00 00 00 44 is the total active energy. | ||
230 | |||
231 | |||
232 | [[~[~[image:https://wiki.dragino.com/images/thumb/b/b8/AT_COMMAND11.png/600px-AT_COMMAND11.png~|~|height="271" width="600"~]~]>>url:https://wiki.dragino.com/index.php/File:AT_COMMAND11.png]] | ||
233 | |||
234 | AT COMMAND | ||
235 | |||
236 | |||
237 | ==== 1.3.3.2 via LoRaWAN DOWNLINK ==== | ||
238 | |||
239 | [[image:image-20220512104358-3.png]] | ||
240 | |||
241 | ((( | ||
242 | DOWNLINK | ||
243 | ))) | ||
244 | |||
245 | ((( | ||
246 | |||
247 | ))) | ||
248 | |||
249 | ((( | ||
250 | **Type Code 0xAF** | ||
251 | ))) | ||
252 | |||
253 | ((( | ||
254 | (% class="box infomessage" %) | ||
255 | ((( | ||
256 | 0xAF downlink command can be used to set AT+COMMANDx or AT+DATACUTx. | ||
257 | ))) | ||
258 | ))) | ||
259 | |||
260 | ((( | ||
261 | Note: if user use AT+COMMANDx to add a new command, he also need to send AT+DATACUTx downlink. | ||
262 | ))) | ||
263 | |||
264 | ((( | ||
265 | Format: AF MM NN LL XX XX XX XX YY | ||
266 | ))) | ||
267 | |||
268 | ((( | ||
269 | Where: | ||
270 | ))) | ||
271 | |||
272 | ((( | ||
273 | MM: the ATCOMMAND or AT+DATACUT to be set. Value from 01 ~~ 0F, | ||
274 | ))) | ||
275 | |||
276 | ((( | ||
277 | NN: 0: no CRC; 1: add CRC-16/MODBUS ; 2: set the AT+DATACUT value. | ||
278 | ))) | ||
279 | |||
280 | ((( | ||
281 | LL: The length of AT+COMMAND or AT+DATACUT command | ||
282 | ))) | ||
283 | |||
284 | ((( | ||
285 | XX XX XX XX: AT+COMMAND or AT+DATACUT command | ||
286 | ))) | ||
287 | |||
288 | ((( | ||
289 | YY: If YY=0, RS485-LN will execute the downlink command without uplink; if YY=1, RS485-LN | ||
290 | ))) | ||
291 | |||
292 | ((( | ||
293 | will execute an uplink after got this command. | ||
294 | ))) | ||
295 | |||
296 | ((( | ||
297 | Example: | ||
298 | ))) | ||
299 | |||
300 | ((( | ||
301 | AF 03 01 06 0A 05 00 04 00 01 00: Same as AT+COMMAND3=0A 05 00 04 00 01,1 | ||
302 | ))) | ||
303 | |||
304 | [[image:https://wiki.dragino.com/images/thumb/4/45/DOWNLINK_METER2.png/600px-DOWNLINK_METER2.png||height="208" width="600"]] | ||
305 | |||
306 | DOWNLINK | ||
307 | |||
308 | |||
309 | [[~[~[image:https://wiki.dragino.com/images/thumb/2/20/DOWNLINK_METER3.png/600px-DOWNLINK_METER3.png~|~|height="105" width="600"~]~]>>url:https://wiki.dragino.com/index.php/File:DOWNLINK_METER3.png]] | ||
310 | |||
311 | DOWNLINK | ||
312 | |||
313 | |||
314 | [[image:https://wiki.dragino.com/images/thumb/2/27/DOWNLINK_METER4.png/600px-DOWNLINK_METER4.png||height="210" width="600"]] | ||
315 | |||
316 | DOWNLINK | ||
317 | |||
318 | |||
319 | [[~[~[image:https://wiki.dragino.com/images/thumb/3/39/DOWNLINK_METER5.png/600px-DOWNLINK_METER5.png~|~|height="176" width="600"~]~]>>url:https://wiki.dragino.com/index.php/File:DOWNLINK_METER5.png]] | ||
320 | |||
321 | DOWNLINK | ||
322 | |||
323 | |||
324 | [[image:https://wiki.dragino.com/images/thumb/a/a2/DOWNLINK_METER6.png/600px-DOWNLINK_METER6.png||height="365" width="600"]] | ||
325 | |||
326 | DOWNLINK | ||
327 | |||
328 | |||
329 | === 1.3.4 How to configure and output commands for RS485 to USB === | ||
330 | |||
331 | ((( | ||
332 | This step is not necessary, it is just to show how to use a normal RS485 to USB adapter to connect to the meter to check the input and output. This can be used to test the connection and RS485 command of the meter without RS485-LN. | ||
333 | ))) | ||
334 | |||
335 | ((( | ||
336 | First, connect the A+ and A- of the USB to the 485 A and 485 B of the energy meter. | ||
337 | ))) | ||
338 | |||
339 | ((( | ||
340 | Open the serial port debugging, set the send and receive to HEX. | ||
341 | ))) | ||
342 | |||
343 | ((( | ||
344 | Baud rate: 9600 | ||
345 | ))) | ||
346 | |||
347 | ((( | ||
348 | check digit: Even | ||
349 | ))) | ||
350 | |||
351 | [[image:https://wiki.dragino.com/images/thumb/8/8f/Usb_meter2.jpg/600px-Usb_meter2.jpg||height="725" width="544"]] | ||
352 | |||
353 | USB | ||
354 | |||
355 | |||
356 | [[image:https://wiki.dragino.com/images/thumb/6/62/Usb_meter1.jpg/600px-Usb_meter1.jpg||height="728" width="546"]] | ||
357 | |||
358 | USB | ||
359 | |||
360 | |||
361 | ((( | ||
362 | The configuration command is consistent with the AT command, input the hexadecimal command directly into the serial port, and the serial port will output the command. | ||
363 | ))) | ||
364 | |||
365 | ((( | ||
366 | **Example:** input:01 03 00 31 00 02 95 c4 | ||
367 | ))) | ||
368 | |||
369 | ((( | ||
370 | output:01 03 04 00 00 00 42 7A 02 | ||
371 | ))) | ||
372 | |||
373 | [[image:https://wiki.dragino.com/images/thumb/b/b3/Usb_meter3.jpg/600px-Usb_meter3.jpg||height="466" width="600"]] | ||
374 | |||
375 | USB | ||
376 | |||
377 | === 1.3.5 How to configure multiple devices and modify device addresses === | ||
378 | |||
379 | If users need to read the parameters of multiple energy meters, they need to modify the device address, because the default device address of each energy meter is 01. | ||
380 | |||
381 | ((( | ||
382 | ((( | ||
383 | Set the device address according to the parameters in the appendix of the MODBUS communication protocol. | ||
384 | ))) | ||
385 | ))) | ||
386 | |||
387 | [[image:https://wiki.dragino.com/images/thumb/1/1f/Double_meter3.png/600px-Double_meter3.png||alt="Double meter3.png" height="83" width="600"]] | ||
388 | |||
389 | **Example**:These two meters are examples of setting parameters and device addresses. | ||
390 | |||
391 | [[image:https://wiki.dragino.com/images/thumb/e/ee/Double_meter1.jpg/600px-Double_meter1.jpg||alt="Double meter1.jpg" height="737" width="553"]] | ||
392 | |||
393 | [[image:https://wiki.dragino.com/images/thumb/7/72/Double_meter2.jpg/600px-Double_meter2.jpg||alt="Double meter2.jpg" height="733" width="550"]] | ||
394 | |||
395 | ((( | ||
396 | ((( | ||
397 | First of all, since the default device address of the energy meter is 01, the configuration of two energy meters will conflict, so we first connect an energy meter and configure the device address. | ||
398 | ))) | ||
399 | ))) | ||
400 | |||
401 | ((( | ||
402 | ((( | ||
403 | We can use AT+CFGDEV to set the device address. | ||
404 | ))) | ||
405 | ))) | ||
406 | |||
407 | ((( | ||
408 | ((( | ||
409 | We modify the device address 01 of the first energy meter to 02. | ||
410 | ))) | ||
411 | ))) | ||
412 | |||
413 | [[image:https://wiki.dragino.com/images/6/6b/Double_meter4.png||alt="Double meter4.png" height="141" width="456"]] | ||
414 | |||
415 | AT+CFGDEV:01 10 00 61 00 01 02 00 02,1 | ||
416 | |||
417 | * 01:device adaress | ||
418 | |||
419 | * 10:function code | ||
420 | |||
421 | * 00 61:Register address | ||
422 | |||
423 | * 00 01:Number of Registers | ||
424 | |||
425 | * 02:Number of bytes | ||
426 | |||
427 | * 00 02:Modified device address | ||
428 | |||
429 | * 1:Check code | ||
430 | |||
431 | The device address setting of the energy meter is complete. | ||
432 | |||
433 | Another energy meter is a single active energy meter with a floating-point format. | ||
434 | |||
435 | Its default device address is 01, and the following are the parameters for configuring two energy meters. | ||
436 | |||
437 | [[image:https://wiki.dragino.com/images/1/13/Meter11.png||alt="Meter11.png" height="576" width="379"]] | ||
438 | |||
439 | [[image:https://wiki.dragino.com/images/thumb/7/7e/Meter12.png/600px-Meter12.png||alt="Meter12.png" height="262" width="600"]] | ||
440 | |||
441 | PAYLOAD:01 08 DF 43 62 | ||
442 | |||
443 | * 08 DF is the valid value of the meter with device address 02. | ||
444 | * 43 62 is the valid value of the meter with device address 01. | ||
445 | |||
446 | == 1.4 Example 4: Circuit Breaker Remote Open Close == | ||
447 | |||
448 | This instruction is provided by Xavier Florensa Berenguer from [[NORIA GRUPO DE COMPRAS>>url:http://www.gruponovelec.com/]]. It is to show how to use RS485-LN to connect to SCHNEIDER SMART and Monitor and control your cabinet remotely with no wires and with Dragino RS485-LN LoRaWAN technology. The structure is like below: | ||
449 | |||
450 | [[image:https://wiki.dragino.com/images/thumb/f/fa/RS485_04_2.png/600px-RS485_04_2.png||height="336" width="600"]] | ||
451 | |||
452 | Connection | ||
453 | |||
454 | * [[Circuit Breaker Remote Open Close>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/Circuit_Breaker_Remote_Open_Close/]] : Configure Documen | ||
455 | |||
456 | == 1.5 Example 5: SEM Three Energy Meter with RS485-BL or RS485-LN == | ||
457 | |||
458 | This instruction is provided by Xavier Florensa Berenguer from [[NORIA GRUPO DE COMPRAS>>url:http://www.gruponovelec.com/]]. It is to show how to use RS485-BL to connect to SEM Three Energy Meter and send the data to mobile phone for remote minitor. The structure is like below: | ||
459 | |||
460 | * [[Connect to SEM Three>>url:http://www.dragino.com/downloads/index.php?dir=LoRa_End_Node/RS485-BL/Application_Note/&file=Dragino%20RS485BL%20and%20pickdata%20SEM%20Three%20v1.pdf]] : Configure Document For RS485-BL | ||
461 | |||
462 | * [[Connect to SEM Three>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/SEM_Three_Energy_Meter/&file=SEM%20three%20and%20Dragino%20RS485-LN%20v1.pdf]] : Configure Document for RS485-LN | ||
463 | |||
464 | == 1.6 Example 6:CEM C31 485-T1-MID Energy Meter with RS485-LN == | ||
465 | |||
466 | This instruction is provided by Xavier Florensa Berenguer from [[NORIA GRUPO DE COMPRAS>>url:http://www.gruponovelec.com/]]. It is to show how to use RS485-LN to connect to CEM C31 485-T1-MID and send the data for remote minitor. The structure is like below: | ||
467 | |||
468 | * [[CEM C31 485-T1-MID>>url:http://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/ELECTRICAL%20CABINET/&file=ELECTRICAL%20CABINET%20READINGS.pdf]] : Configure Document For RS485-LN | ||
469 | |||
470 | == 1.7 Example 7:Schneider Electric PLC M221 with RS485-BL == | ||
471 | |||
472 | [[image:https://wiki.dragino.com/images/thumb/9/97/PLC_M221.png/600px-PLC_M221.png||height="353" width="600"]] | ||
473 | |||
474 | Network Structure | ||
475 | |||
476 | * [[Reference Instruction>>url:https://www.dragino.com/downloads/index.php?dir=RS485-LN/Application_Note/Schneider%20Electric%20PLC/]] |