说明
本教程详细说明关于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