S7 协议数据采集与设备控制
版本说明(当前版本功能有缺)
由于当前版本telegraf(数据对接) 不支持 connectionType (参考下文的技术参数说明)
device-service v1.5.0 虽然支持S7 ,但数据采集仅作为PG连接,部分PLC支持的PG连接数小于2 时数据对接无法滚动升级,后台配置下发功能故障
官方支持 20240610
我们已经向telegraf提交了对于connectionType的功能,预计20240610后1.31.0 版本支持
临时性构建
我们根据提交 重新构建了telegraf 1.28.5版本 registry.cn-hangzhou.aliyuncs.com/engi_cloud/telegraf:1.28.5-engi 由于不能保证镜像的稳定性,不纳入标准化功能
需要在升级device-service 1.5.0后额外进行修改device-service 配置文件中参数 engi.kubernetes.telegraf.image
设备类配置
新增设备类
设备类名称:『自定义』 通讯方式:S7 设备通讯类型:直连设备
时间格式:『随便选,无效』 以采集时间为准 jsonQuery:『无需填写』
设备类物模型属性配置
属性Key,按下列点位定义填写
【数据区标识】.【数据类型标识】【地址】
【数据区标识】.【数据类型标识】【地址】.【bit】
举例
<DB1.R4>
<DB1.X2.1>
<I.X1.1>
支持的数据区标识
数据区 | 数据区标识 | |
---|---|---|
process inputs | PE | I区 |
process outputs | PA | O区 |
Merkers | MK | M区 |
DB | DB[Number] | DB块 |
counters | C | |
timers | T |
支持的数据类型
数据类型 | 数据类型标识 |
---|---|
bit | X |
Byte | B |
Word | W |
Double Word | DW |
Interger(16) | I |
Double Integer | DI |
Real | R |
date-time | DT |
String | S |
设备类采集脚本
用默认的即可。不用改
设备类控制配置
用默认的即可。不用改
新增设备
设备名称:『自定义』 通讯方式:S7 设备通讯类型:直连设备
技术参数
技术参数列表
参数名 | 参数值模板 | 是否必填 | 默认值 | 其它 |
---|---|---|---|---|
server | 127.0.0.1 | 必填 | 无 | 非默认102端口填写具体端口如 127.0.0.1:103 |
rack | 0 | 必填 | 无 | 轨道号,根据实际填写 |
slot | 1 | 必填 | 无 | 槽号,根据实际填写 |
type | S7_1200 | 必填 | 无 | 类型,从下列值选择填入:S7_300 , S7_400 , S7_1200 , S7-1500 , LOGO |
pduSize | 18 | 非必填 | 18 | 非必填,根据实际情况调整,参考技术参数说明 |
connectionType | OP | 非必填 | OP | 采集连接类型,从下列值选择填入:PD ,OP , basic |
writeConnectionType | OP | 非必填 | OP | 控制连接类型,从下列值选择填入:PD ,OP , basic |
技术参数说明
type
根据PLC 系列填入 ,可选项有 7_300 , S7_400 , S7_1200 , S7-1500 , LOGO 200smart 填LOGO
connectionType与writeConnectionType
我们在数据采集侧 需要 起码2 个连接,控制侧 需要 1个连接 (对接要求)
西门子S7系列一般支持三种类型的S7访问
类型 | 说明 |
---|---|
PD | 作为PG/PC连接 |
OP | 作为显示屏、触摸屏一类连接 |
basic | S7 basic 通信 |
三种类型在很多PLC都会有连接数量的限制,而且PG/PC连接可能数量较少 |
这里采集和控制侧 开放出来实施时根据现场情况调整
pduSize
这里pduSize 指代 一个 pdu中 fields 也是采集点位的个数,假设一共40点 pduSize=20 也就是分两批进行采集,实际讨论时我们认证pdu-size 一般指byte数
不同系列\批次的PLC其实对S7的单包长度其实是有限制的,支持的pduSizeByte (byte) 大概在240 ~ 960,像300/400是有明确限制:S7-300 max. 240 byte PDU 、S7-400 max. 480 byte PDU 。
这里我们提供了一个较为保守的默认值为18,对于的是240 bytes 由于对接使用的 驱动协议库默认设置pduSize 为 38 ,大约为 480 bytes
现场使用的PLC 型号一般不会真的这么差,所以我们也是强烈建议提高 pduSize 以 提高数据采集效率
同时 我们也基于type 对pduSize 进行了一些限制检查 ,对于S7-300 限制 18 ;LOGO不设限,但建议使用默认18;全局限制最大 38。
超出PLC支持的长度时对接容器内部会采集报错(开发可以注意下这个)