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