针对目前海事应用中液位遥测系统的现状,基于ARM9芯片的WinCE嵌入式开发平台,开发一套智能的液位遥测系统。
该系统采用CAN总线,遵循CANopen协议,在EVC开发环境下结合多线程技术和数据库技术实现遥测系统的通信和界面显示功能。实验结果表明,该系统稳定、实时、生动地实现了通信、显示、存储、打印等功能,具有很高的应用价值。
引言
液位遥测系统是油轮和化学品船的核心部分[1],直接关系到船舶在海上航行的安全性和可靠性。目前国内该行业还处于低技术的恶性竞争,要改变这种状况,只有通过提升技术水平才能实现。本系统就是在此背景下进行研究设计的。
该系统是以ARM9为内核,在WinCE操作系统平台下,以CAN通信为基础,CANopen协议为规范,综合应用EVC编程、CAN通信、数据库、多线程等技术设计的一个智能液位遥测系统。
ARM9的工作频率最高为200 MHz,微处理器内置彩色图像处理电路,因此可以直接外接TFTLCD/VGA显示屏。
CAN(Controller Area Network)总线是一种多主从结构,具有报文仲裁,错误自检测、处理机制,较强的通信能力,较强的短路保护能力,通信方式灵活多样等优点。船舶液位遥测系统是一个局域网控制系统,选用CAN总线更能满足其传输的高可靠性[2]。
1 CANopen协议
CANopen最初由从事工业控制的CiA会员开发,由于CANopen是一种公共、开放、通用的协议,而且精练透明、容易开发,如今已经被接受为CAN高层协议的标准之一。
图1 CANopen设备模块
一个CANopen设备模块可分为3部分,如图1所示。通信接口和协议软件用于提供在总线上收发通信对象的服务;不同CANopen设备间的通信都是通过交换通信对象来完成的, 这一部分直接面向CAN控制器进行操作。对象字典描述了设备使用的所有数据类型、通信对象和应用对象;对象字典位于通信程序和应用程序之间,用于向应用程序提供接口。应用程序对对象字典进行操作,即可实现CANopen通信。它包括功能部分和通信部分,通信部分通过对对象字典进行操作实现CANopen通信;而功能部分则根据应用要求来实现。
在CANopen网络系统中每个节点都有唯一的一个对象字典,而且每个节点的对象字典都具有相同的结构;但具体的内容要根据不同的设备而定,包含了描述该设备及其网络行为的所有参数。CANopen协议还定义了4种报文(通信对象),用于对不同作用的信息进行处理,分别为管理报文(NMT)、服务数据对象(SDO)、过程数据对象(PDO)和预定义报文或特殊功能对象。
2 液位遥测系统总体结构
液位遥测系统主要实现2项功能:
① 对各舱的液位、温度、压力等进行实时监测;
② 当监测高于报警值时发出报警信号。
针对这2项功能,采用了CAN总线的网络拓扑结构,系统总体结构框图如图2所示。
图2 液位遥测系统总体结构
由图2可知,整个系统以CAN总线进行通信,然而CAN芯片只提供了开放系统互连参考模型(OSI)中的物理层和链路层功能,一般用户必须直接用驱动程序操作链路层。不能直接满足控制网络的组态和产品互连要求。为了以CAN芯片为基础构成完整的工业控制现场总线系统,必须制定相应的应用层协议,实现系统的组态、设备互连和兼容功能。下面分别介绍各部分的功能。
2.1 分布式处理单元DPU
DPU是采用模块化设计、具有通信功能的智能化远程I/O单元。DPU单元分布在船舱各处,作为传感器和执行器的接口,直接与传感器和执行器相连。各个DPU单元可以用两根普通的双芯屏蔽电缆( 或双绞线等)连接到CAN总线上,将定时采集的各船舱液位高度、温度等各种实时数据发送到总线上。
目前,基于CANopen的DPU的各种模块(模拟量输入/输出、数字量输入/输出等)可以根据具体的监测点连接到网络中,完成液位、温度、压力等的监测。
图3 上位监测点结构图
2.2 上位监测点
在本系统中,上位监测点主要实现通信和应用两个方面功能,具体结构如图3所示。
ARM9的开发平台已将CAN驱动嵌入,根据CAN2.0协议,可以直接完成物理层和数据链路层的通信,因此,在WinCE操作系统下,实现CANopen通信,解析通信对象,调用应用程序,完成整个上位系统的CANopen通信。
3 CANopen通信的实现
3.1 CAN通信
CAN通信通过调用底层封装的接口函数实现,主要包含:
开端口CAN_StartChip;
关端口CAN_StartChip;
接收CAN数据CAN_GetNextReceivedFrame;;
发送CAN数据CAN_SendFrame。
具体通信流程如图4所示。
图4 CAN通信流程
3.2 CANopen通信
CANopen协议是CAN通信应用层的协议。通信标准定义了不同的通信对象,这些通信对象通过标识符(COB_ID)来进行区分。
网络管理报文(NMT):提供网络管理服务,例如初始化、错误控制和设备状态控制。NMT对象映射到一个单一的带2字节数据长度的CAN帧,它的标识符为0。在本系统中主要用于系统启动的初始化。