管理端向代理发送Get 请求,要求返回压力、角度等数据。代理接受请求后,对PDU 进行解析处理,并调用相应的子功能模块,从MIB 文件中读出“压力”、“角度”、“长度”等变量的值,然后代理调用编码模块,将这些数据打包成相应的PDU 发送给管理端作为对Get 请求的响应。管理端接收到相应数据后,将它们与预先设定的参考值作比较,根据实际值与设定值之间的偏差,判断起重力矩是否超过限制,并据此发出相应的开关控制命令。
(2)Set 操作
Set 请求的原理与Get 类似,不过是将某一新的值写给相应的变量,而不是读,从而实现对被管理设备的控制。在该系统中,管理端向代理发送Set 请求,以设置各开关的状态变量。代理接受请求后,向MIB 文件中写入各“开关”变量的新值,并通过现场的CAN 总线传递给输出控制模块来控制上升、下降、左转、右转开关的动作。
3.3 MIB 的编写
MIB 是有关被管理目标对象的数据库,其数据结构呈树形。本系统中的MIB 文件存储了现场传感器采集的各种信号以及开关的状态,通过读取和设置这些MIB 对象的值,管理端完成监测和控制。MIB 文件编写中最关键的一点是确定要定义的变量。在该系统的MIB 设计中定义的变量如表1 所示。
表1 远程起重力矩监控系统MIB 变量表
MIB 变量名 | 含义 | 类型 |
DegreeValue | 角度的实际值 | Integer |
LengthValue | 长度的实际值 | Integer |
PressureValue | 压力的实际值 | Integer |
UpSwitch | 上升开关状态 | Integer |
DownSwitch | 下降开关状态 | Integer |
LeftSwitch | 左转开关状态 | Integer |
RightSwitch | 右转开关状态 | Integer |
3.4 代理与管理端程序的开发
采用AdventNet Agent Toolkit C Edition 工具包来开发代理程序,该工具包提供了一个广泛而完整的开发环境,并带有代理信息定义编辑器、编译器等一系列代理开发工具及测试工具,降低了代理开发的复杂性。所开发的代理仅占用极小的空间,却具有较高的性能,而且代理的扩展几乎不会影响到应用和设备的性能。在编写好MIB 文件后,依据Agent Toolkit C Edition 工具的开发流程编写代理程序,其主要功能是对MIB 文件进行管理,并实现对网络端口的侦听,SNMP 数据报的解码及编码,对管理端的请求进行处理,以及对硬件的管理。
在VC++.NET 开发平台下利用NET-SNMP 开发包来编写管理端程序。NET-SNMP 开发包是目前最为流行的基于C++的SNMP 协议开发包之一,开发包中的SNMP 协议模块为用户使用SNMP 协议来构建网络管理应用层软件提供了良好的协议通讯的基础,它提供了一系列的API 函数可供开发者使用。本系统的管理端程序运行在远程监控计算机上,与工作现场工控机上驻留的代理之间进行远程数据通信,主要完成Get 和Set 操作两项任务。
5 结论
CAN 总线因其自身的诸多优点适合于对实时性、可靠性、安全性要求十分严格的机械控制网络。SNMP 协议简洁,可扩展性强,基于SNMP 协议的网络传输以Internet 作为媒介,传输距离不受限制,可进一步拓展CAN 总线的优势。本文的创新点在于,结合这两种技术的优点,实现了基于CAN 总线和SNMP 协议的起重力矩远程监控系统,该方案可以保障可靠、实时的远程数据传输和命令执行,确保起重机械的安全运行。项目经济效益达20 万元。