1 SIMATIC PLC SNMP 库读取交换机接口状态
SNMP,简单网络管理协议,是基于UDP/IP的开放以太网协议,通过访问标准的MIB数据库就可以获得网络设备的具体状态信息。
西门子为S7 自带以太网接口的CPU提供了标准的库,可以支持SNMP协议。这样S7 CPU通过指令可以作为SNMP的管理者获得网络节点的信息。
因为SNMP是开放的网络管理协议,绝大多数网络设备都支持,所以功能上具备良好的兼容性;又因为,SNMP规定了公开的MIB数据库,因此可以提供丰富多彩的信息给S7 CPU。
S7 CPU SNMP库的下载和具体使用可以参考以下链接:
https://support.industry.siemens.com/cs/cn/en/view/57249109
本例中,我们通过在S7-1500 PLC 调用SNMP 指令,来获取其他网络中交换机所有接口的连接状态。
下载SNMP 库后,装载到博途软件全局库,通过拖拽“S7-1X00”到项目中的程序块下,包括了调用的程序块和数据类型会装载到当前项目。
通过使用“SnmpGetBulk”指令,可以批量读取交换机接口状态,该指令只能用于交换机,不支持针对PLC。
首先需要在数据类型中修改“returnValue”对应数组的长度,例如读取对象SCALANCE XC208,8 个接口,则数组长度需要大于等于8。
在DB 中生成“typeParamGetSetBulk”,参数如下。注意确保“connectionID”和“localPort”不要冲突。端口状态的OID 为“1.3.6.1.2.1.2.2.1.8”,适用于所有SCALANCE支持SNMP的设备。
本例中只需要调用一个“SnmpGetBulk”指令,用来批量读取IP:192.168.0.52 的SCALANCE XC208 8个接口状态。
“SnmpGetBulk”指令执行后,通过“returnValue”、“ returnValueLenght”显示读出的数据类型和有效长度。“returnValue[x]”中显示有效数据,数据的含义参考下表。
Return Value type | 02 | 04 | 41 | 43 |
---|---|---|---|---|
Integer | String | Counter | Timeticks | |
Return Value | 1: Up | |||
2: Down |
如下图,SCALANCE XC208交换机的端口P1-P3为UP 状态,其余端口为Down。
如下图,SCALANCE XC208交换机的端口P2 出现了Down。