目的
本文将详细说明通过 MODBUS TCP 协议收集数据时,如何编辑JSON文件。此教程仅包含采集器部分JSON,数据上云部分JSON配置请阅读另外教程。
示例代码
{ "ConfigName": "Modbus", "ConfigDescription": "Example configuration for Modbus", "CheckpointInterval": 600, "Collectors": [ { "CollectorName": "ModbusDevice", "CollectorDescription": "My first modbus", "Protocol": "ModBus/TCP", "ConnectRetryMin": 2, "ConnectRetryMax": 240, "ModbusAccess": { "ModbusFCs": [ { "ModbusFCID": 1, "ModbusFCSlaveAddress": 1, "ModbusFC": "holding-registers", "ModbusFCStart": 0, "ModbusFCCount": 5, "ModbusFCSampleInterval": 2 } ], "ModbusTimeout": 1000 }, "SamplePoints": [ { "SampleName": "点位1", "SampleDescription": "Sample value1", "SamplesSaved": 2, "SampleDataType": "int16", "SampleUnit": "RawNumber", "ModbusValue": { "FCREF": 1, "FCOffset": 0 }, "SampleLowerLimit": 0, "SampleUpperLimit": 1000, "SampleLimitDiscard": true, "SampleLimitAlarm": true }, { "SampleName": "点位2", "SampleDescription": "Sample value2", "SamplesSaved": 2, "SampleDataType": "int16", "SampleUnit": "RawNumber", "ModbusValue": { "FCREF": 1, "FCOffset": 1 }, "SampleLowerLimit": 0, "SampleUpperLimit": 1000, "SampleLimitDiscard": false, "SampleLimitAlarm": false } ] } ]
代码说明
行头部分
|
ConfigName |
ConfigDescription |
CheckpointInterval |
| 类型 |
字符 |
字符 |
等于0或大于等于60的整数 |
| 重要性 |
必要的 |
可选 |
可选 |
| 描述 |
此配置文件的唯一名称。遵循命名规则。 |
此配置的描述 |
将内部数据样本缓存中的所有数据保存到磁盘的时间间隔。这越不稳定(电源)SiteManager,数据应该保存得越频繁。但是,经常保存它也会降低性能并磨损硬盘/闪存。值 0 表示从不检查点,否则表示保存之间的间隔(以秒为单位)。如果未指定,则使用值 15 * 60(15 分钟)。 |
主体部分(Collectors)
{"CollectorName": "ModbusGOT","CollectorDescription": "My first modbus","Protocol": "ModBus/TCP","ConnectRetryMin": 2,"ConnectRetryMax": 240,"ModbusAccess": { ........... ........... }"SamplePoints": [ {....... ........ ........ }
|
CollectorName |
CollectorDescription |
Protocol |
| 类型 |
字符 |
字符 |
字符 |
| 重要性 |
必要的 |
可选 |
重要性 |
| 描述 |
要从中收集数据的设备的唯一名称,遵循名称的正常规则。 |
采集器的描述,自定义,此参数没有系统功能 |
用于收集数据的协议。只能是“Modbus/TCP”。 |
|
ConnectRetryMin |
ConnectRetryMax |
ModbusAccess |
SamplePoints |
| 类型 |
大于0的整数 |
大于0的整数 |
目的区域 |
对象数组 |
| 重要性 |
必要的 |
必要的 |
必要的 |
必要的 |
| 描述 |
当设备链接断开时,重新尝试链接设备的最小间隔秒数。采用指数退避算法机制,间隔时间逐渐趋向设定的最大值 |
重新尝试链接设备的最大间隔秒数 |
这是一个参数集合,它给定了访问MODBUS服务器所需的参数 |
这是一个参数集合,定义了采集到的数据内容 |
采集容器(ModbusFCs)
"ModbusAccess": { "ModbusFCs": [ { "ModbusFCID": 1, "ModbusFCSlaveAddress": 1, "ModbusFC": "holding-registers", "ModbusFCStart": 0, "ModbusFCCount": 5, "ModbusFCSampleInterval": 2 } ]
|
ModbusFCID |
ModbusFCSlaveAddress |
ModbusFC |
| 类型 |
整数>=0 |
0<=整数<=247or255 |
字符 |
| 重要性 |
必要的 |
可选 |
必要的 |
| 描述 |
在此采集器中定义的唯一ID,后续采集点位的时候需要用到它。 |
所访问的 Modbus 从站地址,如果不设置,默认255 |
采集数据时使用的 Modbus 功能码类型:”coils”、”inputs”、”holding-registers”、”input-registers” |
|
ModbusFCStart |
ModbusFCCount |
ModbusFCSampleInterval |
| 类型 |
0<=整数》 |
0<=整数<=125 |
0<=整数 |
| 重要性 |
必要的 |
必要的 |
必要的 |
| 描述 |
此采集器从MODBUS上读取数据的起始地址 |
一次采集所读取到的地址数量 |
每次采集的间隔秒数 |
采集点位(SamplePoints)
{ "SampleName": "点位1", "SampleDescription": "Sample value1", "SamplesSaved": 2, "SampleDataType": "int16", "SampleUnit": "RawNumber", "ModbusValue": { "FCREF": 1, "FCOffset": 0 }, "SampleLowerLimit": 0, "SampleUpperLimit": 1000, "SampleLimitDiscard": true, "SampleLimitAlarm": true}
|
SampleName |
SampleDescription |
SamplesSaved |
SampleDataType |
| 类型 |
字符 |
字符 |
0<整数 |
字符 |
| 重要性 |
必要的 |
可选 |
必要的 |
必要的 |
| 描述 |
此采集点的标记名 |
此采集点的描述 |
保存到数据库的数值数量,当设置0时,数值仍可以在边缘计算中用到,但不能将该数值发送到云端 |
收集的数据类型。可能的值为:“bool”、“sbyte”、“byte”、“int16”、“uint16”、“ int32”、”uint32”、”int64”、”uint64”、””float” |
|
SampleUnit |
FCREF |
FCOffset |
| 类型 |
字符 |
0<=整数 |
0<=整数 |
| 重要性 |
可选 |
必要的 |
必要的 |
| 描述 |
此点位数据测量单元的描述 |
采集容器(ModbusFCs)中参数ModbusFCID的值,表示将从定义好的哪一个采集容器中拿取数据 |
寻址偏移量,表示将获取到对应容器中某偏移量的数值,这个参数不会大于ModbusFCCount |
|
SampleLowerLimit |
SampleUpperLimit |
SampleLimitDiscard |
SampleLimitAlarm |
| 类型 |
整数 |
整数 |
Bool |
Bool |
| 重要性 |
可选 |
可选 |
可选 |
可选 |
| 描述 |
收集数据值的下限。如果采集的数据值小于 SampleLowerLimit,则按照 SampleLimitDiscard 和 SampleLimitAlarm 进行评估。 |
收集数据的上限。如果采集的数据值大于 SampleUpperLimit,则按照 SampleLimitDiscard 和 SampleLimitAlarm 进行评估。 |
控制是否丢弃违反限制的数据值。如果存在 SampleLowerLimit 或 SampleUpperLimit,则为必填项。 |
控制是否生成警报。如果存在 SampleLowerLimit 或 SampleUpperLimit,则为必填项。 |