目的

本文将详细说明通过 MODBUS TCP 协议收集数据时,如何编辑JSON文件。此教程仅包含采集器部分JSON,数据上云部分JSON配置请阅读另外教程。


示例代码

  1. {
  2. "ConfigName": "Modbus",
  3. "ConfigDescription": "Example configuration for Modbus",
  4. "CheckpointInterval": 600,
  5. "Collectors": [
  6. {
  7. "CollectorName": "ModbusDevice",
  8. "CollectorDescription": "My first modbus",
  9. "Protocol": "ModBus/TCP",
  10. "ConnectRetryMin": 2,
  11. "ConnectRetryMax": 240,
  12. "ModbusAccess": {
  13. "ModbusFCs": [
  14. {
  15. "ModbusFCID": 1,
  16. "ModbusFCSlaveAddress": 1,
  17. "ModbusFC": "holding-registers",
  18. "ModbusFCStart": 0,
  19. "ModbusFCCount": 5,
  20. "ModbusFCSampleInterval": 2
  21. }
  22. ],
  23. "ModbusTimeout": 1000
  24. },
  25. "SamplePoints": [
  26. {
  27. "SampleName": "点位1",
  28. "SampleDescription": "Sample value1",
  29. "SamplesSaved": 2,
  30. "SampleDataType": "int16",
  31. "SampleUnit": "RawNumber",
  32. "ModbusValue": {
  33. "FCREF": 1,
  34. "FCOffset": 0
  35. },
  36. "SampleLowerLimit": 0,
  37. "SampleUpperLimit": 1000,
  38. "SampleLimitDiscard": true,
  39. "SampleLimitAlarm": true
  40. },
  41. {
  42. "SampleName": "点位2",
  43. "SampleDescription": "Sample value2",
  44. "SamplesSaved": 2,
  45. "SampleDataType": "int16",
  46. "SampleUnit": "RawNumber",
  47. "ModbusValue": {
  48. "FCREF": 1,
  49. "FCOffset": 1
  50. },
  51. "SampleLowerLimit": 0,
  52. "SampleUpperLimit": 1000,
  53. "SampleLimitDiscard": false,
  54. "SampleLimitAlarm": false
  55. }
  56. ]
  57. }
  58. ]

代码说明

行头部分

ConfigName ConfigDescription CheckpointInterval
类型 字符 字符 等于0或大于等于60的整数
重要性 必要的 可选 可选
描述 此配置文件的唯一名称。遵循命名规则。 此配置的描述 将内部数据样本缓存中的所有数据保存到磁盘的时间间隔。这越不稳定(电源)SiteManager,数据应该保存得越频繁。但是,经常保存它也会降低性能并磨损硬盘/闪存。值 0 表示从不检查点,否则表示保存之间的间隔(以秒为单位)。如果未指定,则使用值 15 * 60(15 分钟)。

主体部分(Collectors)

  1. {
  2. "CollectorName": "ModbusGOT",
  3. "CollectorDescription": "My first modbus",
  4. "Protocol": "ModBus/TCP",
  5. "ConnectRetryMin": 2,
  6. "ConnectRetryMax": 240,
  7. "ModbusAccess": {
  8. ...........
  9. ...........
  10. }
  11. "SamplePoints": [
  12. {.......
  13. ........
  14. ........
  15. }

CollectorName CollectorDescription Protocol
类型 字符 字符 字符
重要性 必要的 可选 重要性
描述 要从中收集数据的设备的唯一名称,遵循名称的正常规则。 采集器的描述,自定义,此参数没有系统功能 用于收集数据的协议。只能是“Modbus/TCP”。
ConnectRetryMin ConnectRetryMax ModbusAccess SamplePoints
类型 大于0的整数 大于0的整数 目的区域 对象数组
重要性 必要的 必要的 必要的 必要的
描述 当设备链接断开时,重新尝试链接设备的最小间隔秒数。采用指数退避算法机制,间隔时间逐渐趋向设定的最大值 重新尝试链接设备的最大间隔秒数 这是一个参数集合,它给定了访问MODBUS服务器所需的参数 这是一个参数集合,定义了采集到的数据内容

采集容器(ModbusFCs)

  1. "ModbusAccess": {
  2. "ModbusFCs": [
  3. {
  4. "ModbusFCID": 1,
  5. "ModbusFCSlaveAddress": 1,
  6. "ModbusFC": "holding-registers",
  7. "ModbusFCStart": 0,
  8. "ModbusFCCount": 5,
  9. "ModbusFCSampleInterval": 2
  10. }
  11. ]
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)

  1. {
  2. "SampleName": "点位1",
  3. "SampleDescription": "Sample value1",
  4. "SamplesSaved": 2,
  5. "SampleDataType": "int16",
  6. "SampleUnit": "RawNumber",
  7. "ModbusValue":
  8. {
  9. "FCREF": 1,
  10. "FCOffset": 0
  11. },
  12. "SampleLowerLimit": 0,
  13. "SampleUpperLimit": 1000,
  14. "SampleLimitDiscard": true,
  15. "SampleLimitAlarm": true
  16. }
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,则为必填项。