说明
本教程详细说明关于DCM通过Siemens S7协议进行采集时,如何编辑JSON文件。此教程仅包含采集器部分JSON,数据上云部分JSON配置请阅读另外教程。
示例代码
此JSON代码包含了常用且必须的参数,其他非必须参数说明在下方代码说明中列举。
{"CollectorDescription": "S71200 example","CollectorName": "s7-1200","ConnectRetryMax": 240,"ConnectRetryMin": 2,"Protocol": "S7/TCP","S7Access": {"S7Model": "S7-1200","S7Rack": 0,"S7Slot": 1},"SamplePoints": [{"SampleName": "DB1500Switch1","SampleDescription": "数据块DB1500的0号状态","SampleDataType": "bool","SamplesSaved": 10,"S7Var": {"S7PLCVar": "DB1500X0.0","S7SampleInterval": 1}}]}
代码说明
主体部分
| 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的点位。
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块的点位会比较简单。如下:
"SampleName": "M1.1","SampleDescription": "M1.1的状态","SampleDataType": "bool","SamplesSaved": 10,"S7Var": {"S7PLCVar": "M1.1","S7SampleInterval": 1
