1 SIMATIC PLC SNMP 库读取SCALANCE交换机MRP 环网状态
1.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
1.2 工作原理
MRP 环网是适用于PROFINET的环网协议。首先,简单介绍一下MRP工作的简单原理,作为MRP管理器的设备会在两个环网接口定时发送MRP的探测数据帧,环网上的MRP客户端仅会在环网接口转发MRP探测帧,如果管理器的任何一个环网接口能接收到另外接口的探测帧,则认为环网是闭合的。
相反,如果环网链路断了,管理器的两个接口都收不到对方的探测帧,则认为环网处于打开状态
西门子SCALANCE X 系列交换机,针对MRP的状态提供了一系列私有MIB,可以通过SNMP访问这些私有MIB,获得MRP有关系的信息。在这里我们以获得交换机MRP的状态为例。
1.3 操作步骤
下载SNMP 库后,装载到博途软件全局库,通过拖拽“S7-1X00”到项目中的程序块下,包括了调用的程序块和数据类型会装载到当前项目。
首先在DB 中生成“typeParamGetSet”类型数据,参数如下。注意确保“connectionID”和“localPort”不要和其他连接冲突。交换机MRP的状态私有MIB OID 为“1.3.6.1.4.1.4329.20.1.1.1.1.24.1.3.0”。
注意,读/写操作可能需要调整“community”,需要设置与交换机设备一致,SCALANCE 交换机默认写操作为“private”、读操作“public”。
在程序中调用“SnmpGet”指令,“snmpData”DB 中选择创建好的变量。
“SnmpGet”指令执行后,通过“returnValue”、“returnValueLenght”显示读出的数据类型和有效长度。“returnValue[x]”中显示有效数据,数据的含义参考下表。可以看到当前交换机环网处于“Passive”状态,环网正常。
Return Value type | 02 | 04 | 41 | 43 |
---|---|---|---|---|
Integer 32bit | String | Counter | Timeticks | |
Return Value | 1: Passive | |||
2: Active |
在交换机管理页面中也可以看到当前环网的实际状态,如下图。
当交换机的环网发生了中断,程序块中也会读到状态,如下图,“Active”环网中断。
交换机的私有MIB 针对当前交换机MRP 环网状态还提供了其他有用的OID,具体内容和网页中显示的内容一致,下面的表格中列出了一些,具体的读取方式和上面的例子一样
功能 | OID | 数值 | 数据类型 | ||
---|---|---|---|---|---|
当前冗余模式 | .1.3.6.1.4.1.4329.20.1.1.1.1.24.1.1.0 | 1 | no redundancy | Integer (32 bit) | |
2 | high speed redundancy protocol | ||||
3 | media redundancy protocol | ||||
4 | automatic redundancy detection | ||||
环网接口1 | Portnumber of static port (HRP) or RingPort 2 (MRP) | .1.3.6.1.4.1.4329.20.1.1.1.1.24.1.5.0 | Integer (32 bit) | ||
环网接口2 | Portnumber of isolated port (HRP) or RingPort 1 (MRP) | .1.3.6.1.4.1.4329.20.1.1.1.1.24.1.6.0 | |||
MRP 环网角色 | MRP RM mode | .1.3.6.1.4.1.4329.20.1.1.1.1.24.1.9.0 | 1 | Client | Integer (32 bit) |
2 | Manager | ||||
环网状态 | RM State | .1.3.6.1.4.1.4329.20.1.1.1.1.24.1.3.0 | 1 | Fine | Integer (32 bit) |
2 | Fault | ||||
MRP 切换次数 | Number of changes to RM active state. | .1.3.6.1.4.1.4329.20.1.1.1.1.24.1.4.0 | Integer (32 bit) |