目的
本文将详细说明通过 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,则为必填项。 |