Skip to content

Commit 6d18fa1

Browse files
authored
Merge pull request #526 from emqx/release-2.10
Release 2.10
2 parents 1855f00 + 1ddfd1d commit 6d18fa1

File tree

17 files changed

+1065
-10
lines changed

17 files changed

+1065
-10
lines changed

directory.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@
9999
}
100100
]
101101
},
102+
{
103+
"title": "HollySys Modbus RTU",
104+
"path": "configuration/south-devices/modbus-hollysys-rtu/modbus-hollysys-rtu"
105+
},
102106
{
103107
"title": "XINJE Modbus RTU",
104108
"path": "configuration/south-devices/modbus-xinje-rtu/modbus-xinje-rtu"
@@ -117,6 +121,10 @@
117121
}
118122
]
119123
},
124+
{
125+
"title": "HollySys Modbus TCP",
126+
"path": "configuration/south-devices/modbus-hollysys-tcp/modbus-hollysys-tcp"
127+
},
120128
{
121129
"title": "Inovance Modbus TCP",
122130
"path": "configuration/south-devices/modbus-hc-tcp/modbus-hc-tcp",
@@ -444,6 +452,14 @@
444452
"path": "configuration/south-devices/codesys3/demo"
445453
}
446454
]
455+
},
456+
{
457+
"title": "DNP 3.0",
458+
"path": "configuration/south-devices/dnp3/dnp3"
459+
},
460+
{
461+
"title": "DF1",
462+
"path": "configuration/south-devices/df1/df1"
447463
}
448464
]
449465
},
@@ -773,6 +789,10 @@
773789
}
774790
]
775791
},
792+
{
793+
"title": "HollySys Modbus RTU",
794+
"path": "configuration/south-devices/modbus-hollysys-rtu/modbus-hollysys-rtu"
795+
},
776796
{
777797
"title": "XINJE Modbus RTU",
778798
"path": "configuration/south-devices/modbus-xinje-rtu/modbus-xinje-rtu"
@@ -791,6 +811,10 @@
791811
}
792812
]
793813
},
814+
{
815+
"title": "HollySys Modbus TCP",
816+
"path": "configuration/south-devices/modbus-hollysys-tcp/modbus-hollysys-tcp"
817+
},
794818
{
795819
"title": "Inovance Modbus TCP",
796820
"path": "configuration/south-devices/modbus-hc-tcp/modbus-hc-tcp",
@@ -1108,6 +1132,14 @@
11081132
"path": "configuration/south-devices/codesys3/demo"
11091133
}
11101134
]
1135+
},
1136+
{
1137+
"title": "DNP 3.0",
1138+
"path": "configuration/south-devices/dnp3/dnp3"
1139+
},
1140+
{
1141+
"title": "DF1",
1142+
"path": "configuration/south-devices/df1/df1"
11111143
}
11121144
]
11131145
},

en_US/configuration/north-apps/mqtt/api.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ Tag value is returned only when the tag is read successfully. If something goes
135135
You could write a tag by sending requests in JSON to the MQTT topic designated by the **Write Request Topic** parameter.
136136

137137
::: tip
138-
Before Neuron version 2.4.5, the write request topic was hard-coded to **/neuron/{node_name}/write/req**.
138+
Before Neuron version 2.4.5, the write request topic was hard-coded to **/neuron/{random_str}/write/req**.
139139
:::
140140

141141
#### Body
@@ -197,7 +197,7 @@ Below is an example write request:
197197
Write response will be published to the MQTT topic designated by the **Write Response Topic** parameter.
198198

199199
::: tip
200-
Before Neuron version 2.4.5, the write response topic was hard-coded to **/neuron/{node_name}/write/resp**.
200+
Before Neuron version 2.4.5, the write response topic was hard-coded to **/neuron/{random_str}//write/resp**.
201201
:::
202202

203203
#### Body
@@ -214,3 +214,41 @@ Below is an example of write response:
214214
"error": 0
215215
}
216216
```
217+
218+
## Driver Status Report
219+
220+
Reports status of all the southbound nodes to the specified topic.
221+
222+
### Status Report Topic
223+
224+
The status report topic is specified in the northbound node configuration. Its default value is **/neuron/{random_str}/state/update**.
225+
226+
### Status Report Interval
227+
228+
The status report interval is specified in the northbound node configuration, indicating the number of seconds between each message. The default value is 1, with an allowed range of 1-3600.
229+
230+
### Reporting Message Format
231+
232+
The reported data consists of the following fields:
233+
* `timestamp`: The UNIX timestamp when the data was collected.
234+
* `states`: An array of node status information.
235+
236+
Below is an example of a driver status reporting message.
237+
238+
```json
239+
{
240+
"timestamp": 1658134132237,
241+
"states": [
242+
{
243+
"node": "modbus-tcp",
244+
"link": 2,
245+
"running": 3
246+
},
247+
{
248+
"node": "modbus-rtu",
249+
"link": 2,
250+
"running": 3
251+
}
252+
]
253+
}
254+
```

en_US/configuration/north-apps/mqtt/overview.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,15 @@ See the table below for the configuration parameters.
2323

2424
| Parameter | Description |
2525
| ------------------------------- | ------------------------------------------------------------ |
26+
| **MQTT Version** | The version of MQTT protocol. The default is v3.1.1. |
2627
| **Client ID** | MQTT client id for communication, a required field. |
2728
| **QoS Level** | MQTT QoS level for message delivery, optional, default QoS 0. (since 2.4.0) |
2829
| **Upload Format** | JSON format of reported data, a required field: <br /><br /> - *values-format*, data are split into `values` and `errors` sub-objects. <br />- *tags-format*, tag data are put in a single array. <br /><br />For data communication format, see [Upstream/Downstream Data Format](./api.md#write-tag) |
29-
| **Write Request Topic** | MQTT topic to which the plugin subscribes for write requests. For data communication format, see [Upstream/Downstream Data Format](./api.md#write-tag) (since 2.4.5) |
30+
| **Write Request Topic** | MQTT topic to which the plugin subscribes for write requests. For data communication format, see [Upstream/Downstream Data Format](./api.md#write-tag) (since 2.4.5). If tracing is enabled, configure the user properties `traceparent` and `tracestate` according to the W3C standard. |
3031
| **Write Response Topic** | MQTT topic to which the plugin sends write responses. (since 2.4.5) |
32+
| **Driver Status Report** | Reports status of all the southbound nodes to the specified topic. |
33+
| **Status Report Topic** | The topic for status reporting. |
34+
| **Status Report Interval** | The time interval for reporting the status of the southbound node, in seconds. The range is 1-3600, with a default of 1. |
3135
| **Offline Data Caching** | Offline data caching switch. Cache MQTT messages when offline, and sync cached messages when back online. (Since 2.4.3) |
3236
| **Cache Memory Size** | In-memory cache limit (MB) in case of communication failure, a required field. Range in [0, 1024]. Should not be larger than *Cache Disk Size*. For details about the cache feature, see [Offline Data Caching](#offline-data-caching) |
3337
| **Cache Disk Size** | In-disk cache limit (MB) in case of communication failure, a required field. Range in [0, 10240]. If nonzero, *cache-mem-size* should also be nonzero. |
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# Allen-Bradley DF1
2+
3+
DF1 is a proprietary communication protocol developed by Rockwell Automation, primarily used for data exchange between its Allen Bradley series PLCs (Programmable Logic Controllers) and other devices.
4+
The Neuron Allen Bradley DF1 plugin supports point-to-point communication and data transmission through serial communication lines.
5+
6+
## Add Device
7+
8+
Go to **Configuration -> South Devices**, then click **Add Device** to add the driver. Configure the following settings in the popup dialog box.
9+
10+
- Name: The name of this device node.
11+
- Plugin: Select the **Allen-Bradley DF1** plugin.
12+
13+
## Device Configuration
14+
15+
After clicking **Create**, you will be redirected to the **Device Configuration** page, where we will set up the parameters required for Neuron to establish a connection with the northbound application. You can also click the device configuration icon on the southbound device card to enter the **Device Configuration** interface.
16+
17+
| Parameter | Description |
18+
| -------------------- | ------------------------------------------------------- |
19+
| **Recv Timeout** | The time of the system waits for a device to respond to a command. |
20+
| **Send Interval** | The waiting time between sending each read/write command. Some serial devices may discard certain commands if they receive consecutive commands in a short period of time. |
21+
| **Serial Port** | The path to the serial device when using a serial connection, e.g., /dev/ttyS0 in Linux systems. |
22+
| **Stop Bits** | Serial connection parameter. |
23+
| **Parity** | Serial connection parameter. |
24+
| **Baud Rate** | Serial connection parameter. |
25+
| **Data Size** | Serial connection parameter. |
26+
27+
## Configure Data Groups and Tags
28+
29+
After the plug-in is added and configured, the next step is to establish communication between your device and Neuron by adding groups and tags to the Southbound driver.
30+
31+
Once device configuration is completed, navigate to the **South Devices** page. Click on the device card or device row to access the **Group List** page. Here, you can create a new group by clicking on **Create**, then specifying the group name and data collection interval.
32+
33+
Upon successfully creating a group, click on its name to proceed to the **Tag List** page. This page allows you to add device tags for data collection. You'll need to provide information such as the tag address, attributes, and data type.
34+
35+
For information on general configuration items, see [Connect to Southbound Devices](../south-devices.md). The subsequent section will concentrate on configurations specific to the driver.
36+
37+
### Data Types
38+
39+
* INT16
40+
* UINT16
41+
* INT32
42+
* UINT32
43+
* FLOAT
44+
* BIT
45+
* STRING
46+
47+
### Address format
48+
49+
> FILE NUM:ELEM[.BIT][#ENDIAN]\[.LEN\[H]\[L]]
50+
51+
For example, N7:0
52+
53+
#### **FILE**
54+
55+
Required, File is the type or the file.
56+
| FILE | FILE TYPE |
57+
| ---- | --------- |
58+
| U | STATUS |
59+
| B | BIT |
60+
| T | TIMER |
61+
| C | COUNTER |
62+
| R | COUNTROL |
63+
| N | INTEGER |
64+
| F | FLOAT |
65+
| S | STRING |
66+
| A | ASCII |
67+
68+
#### NUM
69+
70+
Required, NUM is the number or the file.
71+
72+
#### ELEM
73+
74+
Required, ELEM is the number or the elem.
75+
76+
77+
#### **.BIT**
78+
79+
Optional, specify a specific bit in a register, as:
80+
| Address | Data Type | Description |
81+
| ----------- | ------- | --------------------------------------------------- |
82+
| N7:0.0 | bit | Refers to INT FILE 7 , address 0, bit 0. |
83+
| N7:0.15 | bit | Refers to INT FILE 7 , address 0, bit 15. |
84+
85+
#### **#ENDIAN**
86+
87+
Optional, byte order, applicable to data types int16/uint16/int32/uint32/float/, see the table below for details.
88+
| Symbol | Byte Order | Supported Data Types | Note |
89+
| --- | ------- | ------------------ | ----- |
90+
| #B | 2,1 or 8,7,6,5,4,3,2,1 | int16/uint16 | |
91+
| #L | 1,2 or 1,2,3,4,5,6,7,8 | int16/uint16 | Default byte order if not specified |
92+
| #LL | 1,2,3,4 | int32/uint32/float | Default byte order if not specified |
93+
| #LB | 2,1,4,3 | int32/uint32/float | |
94+
| #BB | 3,4,1,2 | int32/uint32/float | |
95+
| #BL | 4,3,2,1 | int32/uint32/float | |
96+
97+
#### .LEN\[H]\[L]
98+
99+
When the data type is STRING, .LEN is a required field, indicating the number of bytes the string occupies. Each register contains two storage methods: H and L, as shown in the table below.
100+
| Symbol | Description |
101+
| --- | ------------------------------------- |
102+
| H | One register stores two bytes, with the high byte first |
103+
| L | One register stores two bytes, with the low byte first |
104+
105+
::: tip
106+
The address data for the T C R region is six bytes.
107+
The first two bytes can use bit or int16, uint16 types;
108+
The middle two bytes of data need to be of type int16 or uint16, with the address suffix added .PRE;
109+
The last two bytes of data should be of type int16 or uint16, with the address suffix added .ACC。
110+
For example, T2:1.ACC
111+
:::
112+
113+
## Data Monitoring
114+
115+
After completing the point configuration, you can click **Monitoring** -> **Data Monitoring** to view device information and control devices. For details, refer to [Data Monitoring](../../../admin/monitoring.md).
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
## DNP 3.0
2+
3+
DNP 3.0 (Distributed Network Protocol 3.0) is a communication protocol primarily used in the industrial automation field, especially in power systems for supervisory control and data acquisition (SCADA) systems. It enables reliable data exchange between remote terminal units (RTUs) and master station systems.
4+
5+
## Device Settings
6+
7+
| Field | Description |
8+
| ------------------ | ----------------------------------------- |
9+
| host | Device IP address |
10+
| port | Device port number, default 20000 |
11+
| masterid | Master station ID, default 1 |
12+
| slaveid | Slave station ID, default 2 |
13+
| class0123_interval | Class0123 pull interval, default 20000 ms |
14+
| class123_interval | Class123 pull interval, default 1000 ms |
15+
| time_sync | Time synchronization, default No |
16+
17+
## Supported Data Types
18+
19+
* uint8
20+
* uint16
21+
* int16
22+
* uint32
23+
* int32
24+
* float
25+
* bit
26+
27+
## Address Format
28+
29+
> obj.var.index(.attribute)
30+
>
31+
> CROB.index:counter:on-time:off-time
32+
33+
### obj and var
34+
35+
In the DNP 3.0 protocol, obj and var are used to define an object type, and index specifies a specific object within a group of objects. The attribute currently only supports value. If not specified, the default is value.
36+
37+
Currently supported objects are as follows:
38+
39+
| obj | var | Object | r/w | Type |
40+
| --- | --- | ------------------------------------------ | --- | ------------- |
41+
| 1 | 1 | binary input | r | bit |
42+
| 1 | 2 | binary input with status | r | bit |
43+
| 2 | 1 | binary input change without time | r | bit |
44+
| 2 | 2 | binary input change with absolute time | r | bit |
45+
| 2 | 3 | binary input change without relative time | r | bit |
46+
| 10 | 1 | binary output | r | bit |
47+
| 10 | 2 | binary output with status | r | bit |
48+
| 10 | 3 | binary output change with time | r | bit |
49+
| 20 | 1 | 32-bit binary counter with flag | r | uint32/int32 |
50+
| 20 | 2 | 16-bit binary counter with flag | r | uint16/uint16 |
51+
| 20 | 5 | 32-bit binary counter without flag | r | uint32/int32 |
52+
| 20 | 6 | 16-bit binary counter without flag | r | uint16/int16 |
53+
| 21 | 1 | 32-bit frozen binary counter | r | uint32/int32 |
54+
| 21 | 2 | 16-bit frozen binary counter | r | uint16/int16 |
55+
| 30 | 1 | 32-bit analog input | r | uint32/int32 |
56+
| 30 | 2 | 16-bit analog input | r | uint16/int16 |
57+
| 30 | 3 | 32-bit analog input without flag | r | uint32/int32 |
58+
| 30 | 5 | 32-bit float analog input | r | float |
59+
| 32 | 1 | 32-bit analog input change without time | r | uint32/int32 |
60+
| 32 | 2 | 16-bit analog input change without time | r | uint16/int16 |
61+
| 32 | 3 | 32-bit analog input change with time | r | uint32/int32 |
62+
| 32 | 4 | 16-bit analog input change with time | r | uint16/int16 |
63+
| 32 | 7 | 32-bit float analog input change with time | r | float |
64+
| 40 | 1 | 32-bit analog output | r | uint32/int32 |
65+
| 40 | 2 | 16-bit analog output | r | uint16/int16 |
66+
| 40 | 3 | 32-bit float analog output | r | flaot |
67+
| 41 | 1 | 32-bit analog output block | w | uint32/int32 |
68+
| 41 | 2 | 16-bit analog output block | w | uint16/int16 |
69+
| 41 | 3 | 32-bit float analog output block | w | float |
70+
| 42 | 7 | 32-bit float analog output event with time | r | float |
71+
72+
CROB (Control Relay Output Block) is a special object associated with actuating on/off type output devices, write-only, type `uint8`, because it requires setting counter, on-time, and off-time in addition to Control Code.
73+
74+
Control Code values are as follows:
75+
76+
| Control Code | Action |
77+
| ------------ | ------------------------- |
78+
| 1 | output pluse on |
79+
| 2 | output pluse off |
80+
| 3 | output latch on |
81+
| 4 | output latch off |
82+
| 65 | output pluse on + close |
83+
| 66 | output pluse off + close |
84+
| 67 | output latch on + close |
85+
| 68 | output latch off + close |
86+
| 129 | output pluse on + trip |
87+
| 130 | output pluse off + trip |
88+
| 131 | output latch on + trip |
89+
| 132 | output latch off + trip |
90+
| +16 | + queue |
91+
| +32 | + clear |
92+
93+
## Address Examples
94+
95+
| Address | Data Type | Description |
96+
| ------------ | --------- | ----------------------------------------------------- |
97+
| 1.2.0 | bit | Value of binary input index 0 |
98+
| 1.2.1 | bit | Value of binary input index 1 |
99+
| 2.2.1 | bit | Value of binary input index 1 with absolute timestamp |
100+
| CROB.0:0:0:0 | bit | Control binary output index 0 output |
101+
| 40.1.0 | bit | Value of 32-bit binary output index 0 |

en_US/configuration/south-devices/file/file.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ File plugin is used to read or write files.
1818

1919
### Address Format
2020

21-
> FILE PATH</span>
21+
> FILE PATH
2222
2323
### Address Example
2424

0 commit comments

Comments
 (0)