基于CANbus和SNMP的起重力矩监控系统
扫描二维码
随时随地手机看文章
1 概述
在工程机械的控制系统中,计算机技术、网络通讯技术的应用日趋广泛。CAN 总线由于其数据传输高可靠性和高实时性的特点,已经成为工业现场数据传输方式的事实标准之一,现已被广泛应用于汽车、工业控制、智能楼宇、煤矿设备等各个行业的数据通讯。CAN 总线采用短帧报文结构,实时性好,并具有完善的数据校验、错误处理以及检错机制,此外CAN 总线节点在严重错误下会自动脱离总线,对总线通讯没有影响[1]。CAN 总线网络中,数据收发、硬件检错均由CAN 控制器硬件完成,大大增强了CAN 总线网络的抗电磁干扰能力,因此非常适用于对实时性、安全性要求十分严格的机械控制网络。
SNMP 作为TCP/IP 协议族的一个子协议,是IEITF 研究小组提出的网络管理解决方案之一,它作为一种简洁而流行的网络管理协议在工业界获得了广泛的应用。SNMP 网络管理模型中的重要组成部分包括:网络管理协议、管理端(Manager)、代理(Agent )和管理信息库(MIB)。其管理的基本思想是,通过管理端与代理之间的相互合作,以分布方式执行网络管理活动[2]。管理端负责管理网络中各种资源和设备,采用轮询(polling )或手动方式向远程的代理发送Get(读取)和Set(设置)请求命令,以获取信息或实施控制。代理驻留在设备上,负责设备的实际管理和控制,响应和执行管理端的管理命令,并且返回应答信息。MIB 存放被管对象资源的所有信息,管理端通过代理来读取和设置MIB 文件中的变量值,以实现对被管理设备的监控。每个网络设备上的MIB 又由代理负责维护。SNMP 最大的优点是协议简洁,可扩展性强,只要将新的MIB 装载在管理软件上就可以实现对新的终端的控制与访问。
起重力矩限制系统是起重机械运行中重要的安全保障装置,其核心在于对规定动作执行的精确度,这不仅有赖于传感器和执行器的精度,还有赖于数据采集信号和命令的执行速度。比如起落杆的左右转动角度信号,通过数据采集模块将信号标准化,主控工控机接收到该信号后和预先设定的参数做比较,并根据偏差指挥左转或右转开关动作,并最终到位。传统的起重力矩控制系统采用基于RS485 的信号传输,其通讯波特率仅为57.6Kbps ,系统稳定性差,电动机和其他大功率设备常常影响系统的正常运行。而采用CAN 总线传输信号则不仅提高系统的抗电磁干扰能力,而且可使通讯波特率大大提高。基于SNMP 协议的远程通信,传输距离不受限制,这相对于其他工业控制总线有不可比拟的优势。本文提出的方案结合应用CAN 总线和SNMP 协议的优点,构建远程起重力矩监控系统,现场数据传输速率可高达500Kbps ,并具有硬件自动校验和错误自动重发功能。该方案可以保障可靠、实时的数据传输和命令执行,保障起重机械的安全运行。
2 系统硬件结构与特点
在起重机工作现场,通过CAN 总线实现对各传感器信号的采集以及对输出装置的控制,具有抗干扰能力强、可靠性高、实时响应性好,线缆少易敷设、成本低等优点。现场工控机与远程监控计算机之间的通信采用Internet 作为媒介,使用基于SNMP 协议的远程传输,进一步拓展了CAN 总线的优势。
现场起重机工作的角度、长度、压力等信号由各类传感器采集,输入iCAN 数据采集模块,经过CAN 总线传给现场工控机,并存储在驻留工控机内的MIB 文件中,供运行在远程监控计算机中的管理端软件查询调用。同时,各开关的状态变量也存储在该MIB 文件中,根据管理端发来的设置值变更成新值,再经由现场CAN 总线网络传递给输出控制模块以控制各开关的状态,达到起重力矩远程监控的目的。系统结构如图1 所示。
其中,iCAN-4017 AI 功能模块具有8 路模拟量输入通道,符合CAN2.0B 协议规范,用于采集传感器的输入信号,将输入信号经多路开关、AD 转换后经光耦隔离模块,通过CAN 总线通讯将输入的模拟量信号传送给现场工控机[3]。iCAN-2404 继电器功能模块有4 路具有自保持功能的继电器输出通道,它在工作时,工控机通过CAN 总线将输出的继电器控制数据传送给该模块,模块通过光电隔离后输出驱动继电器,实现对上升、下降、左转、右转开关的控制。
3 系统软件工作原理及实现
系统的软件主要分为两部分,其一是为了提取和设置CANbus 现场总线中的据,其二是基于SNMP 协议实现数据的远程通信。
3.1 提取和设置现场总线中的数据
为了对传感器数据进行处理,实时获取系统工作状态,并对各执行器进行相应的控制,我们利用iCAN 模块附带的函数库在VC++开发平台下编写了相应的程序来通过各iCAN 模块采集传感器的信号,控制各开关的状态。iCAN 主站函数库以动态链接库(DLL)的形式提供,内部封装了iCAN 协议,屏蔽访问控制细节,提供对现场总线iCAN 网络中设备访问的接口[3]。通过调用此函数库,可以使PC-CAN 主站卡和iCAN 从站模块进行通讯,完成工控机与现场总线上各节点设备之间的信息交换。
3.2 基于SNMP 协议的通信实现
为了基于SNMP 协议在远程监控计算机与现场工控机之间进行通信,需要开发两部分的程序,即管理端程序和代理程序。管理端程序运行在远程监控计算机中,代理程序驻留在与现场CAN 总线相连的工控机上,代理中还包括管理信息库MIB,MIB 存储被管理对象的信息,包括角度、压力数据,各开关的开闭状态等。管理端以轮询方式向远程的代理发送Get(读取)和Set(设置)请求命令,以获取角度、长度和压力信息或实施开关控制。代理将根据请求的内容从本地 MIB 中提取所需信息,并以响应报文方式将结果回送给管理端。具体地,它一方面不断地检查本地的状态,更新MIB 库中的变量值;另一方面,循环侦听管理端的请求报文,并作出相应的响应,读取或修改 MIB 中的变量值,将结果返回给管理端。通信交互过程如图2 所示[4] 。
图2 管理端与代理的通信交互过程
(1)Get 操作
管理端向代理发送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 万元。