说明

本教程详细说明关于DCM通过Siemens S7协议进行采集时,如何编辑JSON文件。此教程仅包含采集器部分JSON,数据上云部分JSON配置请阅读另外教程。


示例代码

此JSON代码包含了常用且必须的参数,其他非必须参数说明在下方代码说明中列举。

  1. {
  2. "CollectorDescription": "S71200 example",
  3. "CollectorName": "s7-1200",
  4. "ConnectRetryMax": 240,
  5. "ConnectRetryMin": 2,
  6. "Protocol": "S7/TCP",
  7. "S7Access": {
  8. "S7Model": "S7-1200",
  9. "S7Rack": 0,
  10. "S7Slot": 1
  11. },
  12. "SamplePoints": [
  13. {
  14. "SampleName": "DB1500Switch1",
  15. "SampleDescription": "数据块DB1500的0号状态",
  16. "SampleDataType": "bool",
  17. "SamplesSaved": 10,
  18. "S7Var": {
  19. "S7PLCVar": "DB1500X0.0",
  20. "S7SampleInterval": 1
  21. }
  22. }
  23. ]
  24. }

代码说明

主体部分

CollectorDescription CollectorName ConnectRetryMax ConnectRetryMin
功能 采集器描述 采集器名称 重连最大值 重连最小值
类型 字符串 字符串 大于0的整数 大于0的整数
重要性 可选 必要的 必要的 必要的
描述 采集器的描述,自定义,此参数没有系统功能 在此配置文件中的唯一名称,与设备通道DCM name参数对应。遵循名称的正常规则。(不能含有特殊字符) 当设备连接断开后,与设备重新连接之前的最大读秒数 当设备连接断开后,与设备重新连接之前的最小读秒数。如果还是无法连接到设备,重试时间会逐步增加到最大值
Protocol S7Access SamplePoints
功能 协议 S7Access 采集点
类型 字符串 object 对象数组
重要性 必要的 可选 必要的
描述 用于采集数据的协议。目前可用的协议:”S7/TCP”,”OPC-UA/TCP”, “Modbus/TCP”, “Http/GET” and “Simulator”。 访问指定 S7/TCP 服务所需的参数集合。(下面详细说明) 所采集点位的参数集合。(下面详细说明)

S7Access部分

S7Model S7Rack S7Slot S7ConnectionType S7LocalTSAP
类型 字符串 0<整数<7 0<整数<31 字符串 0<整数<65536
重要性 必要的 可选 可选 可选 可选
描述 PLC 型号/类型。支持的值为“ S7-200 ”、“ S7-300 ”和“ S7-1200 ”。 CPU的机架号。如果不设定,则默认0。 CPU插槽号,如果不设定,则默认1 采集器的连接类型,支持的值为“PG”、“OP”和“APP”。如果不设定,则默认“OP”。 访问S7服务所需的本地协议TSAP值。如果不设定,则默认256。

Samplepoints部分

主体部分

SampleName SampleDescription SamplesSaved OnlySaveOnChanged
类型 字符串 字符串 大于0的整数 Bool
重要性 必要的 可选 必要的 可选
描述 此采集点的标记名 此采集点的描述 保存到本地数据库的数值数量,当设置0时,数值仍可以在边缘计算中用到,但不能将该数值发送到云端 当设置为真(1)时,若所采集的点位数值不变化,则不更新保存到数据库。如果不设定,默认为假(0)
SampleDataType SampleMaxVDataSize SampleLowerLimit
类型 字符 0<整数<24575 整数或者双精度
重要性 必要的 可选 可选
描述 采集的数据类型:bool、sbyte、byte、int16、uint16、 int32、uint32、int64、uint64、float、double、data。 限制该采集点位的数据量大小,仅与“data”有关,如果不设定,默认1024。 采集点位数值的下限,低于设定值的点位值将依据SampleLimitDiscard的设定判断是否丢弃。
SampleUpperLimit SampleLimitDiscard SampleLimitAlarm
类型 整数或者双精度 bool bool
重要性 可选 可选 可选
描述 采集点位数值的上限,高过设定值的点位值将将依据SampleLimitDiscard的设定判断是否丢弃。 如果存在 SampleLowerLimit 或 SampleUpperLimit,则是必填项。控制是否丢弃超出限制的点位值。 如果存在 SampleLowerLimit 或 SampleUpperLimit,则是必填项。控制当出现超出限制的点位值时,是否生成警报。

S7Var部分

S7PLCVar S7SampleInterval
类型 字符 大于0的整数
重要性 必要的 必要的
描述 西门子S7 PLC点位的绝对地址,采用S7国际语法编辑。 采集点位的频率/间隔,单位是秒

西门子S7 PLC变量绝对地址语法如下: [DB块][数据类型][字节偏移量]

如:数据块DB100中,数据类型Real(浮点型),偏移量124的点位。

  1. DB100R124

其中[数据类型]部分,其他数据类型的表达如下:

“B”表示字节(无符号 8 位值)

“C”表示字符(有符号 8 位值)

“W”表示字(无符号 16 位值)

“WI”或“WINT”表示字(有符号 16 位值)

“ D” 表示双字(无符号 32 位值)

“DI” 或 “DINT” 表示双字(有符号 32 位值)

“R” 表示实数(浮点型 32 位值)

“X” 表示位(1 位值)


在西门子PLC除了DB数据块中的点位,还有其他的一些点位,比如:M\Q\I等储存器的点位。

“I”或“E”表示数字输入。

“Q”或“A”用于数字输出。

“AI”或“AE”用于模拟输入。

“AQ”或“AA”用于模拟输出。

“M”代表内部存储器。

“SM”表示特殊内存。(仅适用于 S7-200)。

这些点位用起来相对DB块的点位会比较简单。如下:

  1. "SampleName": "M1.1",
  2. "SampleDescription": "M1.1的状态",
  3. "SampleDataType": "bool",
  4. "SamplesSaved": 10,
  5. "S7Var": {
  6. "S7PLCVar": "M1.1",
  7. "S7SampleInterval": 1