基于WinCE的液位遥测系统软件设计

开发
针对目前海事应用中液位遥测系统的现状,基于arm9芯片的WinCE嵌入式开发平台,开发一套智能的液位遥测系统。   该系统采用CAN总线,遵循CANopen协议,在EVC开发环境下结合多线程技术和数据库技术实现遥测系统的通信和界面显示功能。实验结果表明,该系统稳定、实时、生动地实现了通信、显示、存储、打印等功能,具有很高的应用价值。

引言   

  液位遥测系统是油轮和化学品船的核心部分,直接关系到船舶在海上航行的安全性和可靠性。目前国内该行业还处于低技术的恶性竞争,要改变这种状况,只有通过提升技术水平才能实现。本系统就是在此背景下进行研究设计的。   

  该系统是以arm9为内核,在WinCE操作系统平台下,以CAN通信为基础,CANopen协议为规范,综合应用EVC编程、CAN通信、数据库、多线程等技术设计的一个智能液位遥测系统。   

  arm9的工作频率最高为200 MHz,微处理器内置彩色图像处理电路,因此可以直接外接TFTLCD/VGA显示屏。   

  CAN(Controller Area Network)总线是一种多主从结构,具有报文仲裁,错误自检测、处理机制,较强的通信能力,较强的短路保护能力,通信方式灵活多样等优点。船舶液位遥测系统是一个局域网控制系统,选用CAN总线更能满足其传输的高可靠性。

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。在本系统中主要用于系统启动的初始化。   

  过程数据对象(PDO):过程数据对象用来传递实时数据,数据传输被限制在1~8字节,每个PDO有一个唯一的标识符。标识符具有优先级,遥测系统主要是对实时的液位等信息进行显示,大量的PDO数据进行实时传送。   

  服务数据对象(SDO):SDO的传送是有证实的服务,可靠性比较高,主要用于对系统中各节点的配置或信息的设置。   

  以上4种对象都有不同的优先级。对于接收到的报文根据其COB_ID进行解析,分送各不同的应用变量,即可实现CANopen通信。

4 应用模块实现

4.1 系统配置   

  本系统中采用了配置文件的形式增强配置的灵活性,配置文件是根据下位DPU中各模块、通道的现场分布汇总成的txt文件。首先,利用移动磁盘或者Remote File Viewer在PC机上载入配置文件。其次是读取工作,通过函数GetProfileString,根据不同的字段获取需要的内容。最后,对所获得内容赋给相应的变量,并进行显示更新。   

  具体配置形式如图5所示。由图可知,可以对系统中模块的使用、舱名、信号类型、单位、范围、报警上下限、报警延时等进行设置。因此,在集控室就可完成基本的配制,大大减轻了工作人员的负担。     

            
               图5 系统配置
4.2 实时显示   

  为了实现实时、准确、生动地显示系统运行状况,在该模块中利用了文本加图形的方式。因为数据量较大,界面类型较多,切换频繁,故主要采用了动态创建控件的解决方法。   

  液位遥测系统主要完成各舱液位的实时显示。此外,还包括货舱的温度、压力,以及管路管道的压力等重要信息。

4.3 数据存储  

  在本系统中,数据存储主要完成的是对报警数据的存储和对舱容信息的监测,利用的是WinCE自带数据库系统。   

  系统存储的主要是报警数据,因此数据量比较小,采用自带数据库可以很方便地实现所需功能。此外,EVC4.0没有提供访问外部数据库ADOCE的接口。

4.4 实时打印

  在本系统中实现了实时打印,即只要出现报警信息,立即将该信息进行打印输出;当故障排除后,重新进行打印,以便对数据进行保存分析。

5 结论   

  本文所研究的是基于CANopen协议,在arm9的WinCE嵌入式开发平台上的船舶液位遥测系统软件。CANopen作为CAN总线的应用层协议,在船舶遥测系统中有着广阔的应用前景。   

  系统中CAN总线的应用大大提高了系统总体传输速率,双CAN机制更加增强了整个系统的容错能力,保证了船舶运行的安全性。整个软件系统实现了CANopen通信,完成了数据显示、存储、打印、报警,并使配置更智能,实验证明了其运行的可靠性。

【编辑推荐】

  1. Windows CE在嵌入式工业中的应用思考
  2. WinCE电源管理应对移动嵌入式能耗瓶颈
  3. Windows CE下驱动开发基础 
责任编辑:book05 来源: chinaitlab
相关推荐

2009-02-20 10:25:54

UML软件设计例程

2010-07-06 11:34:15

EclipseRationalJazz

2017-08-28 15:00:20

软件系统架构风格

2010-07-12 09:41:31

HART协议

2010-02-25 18:09:41

Linux系统软件

2013-05-08 09:12:44

2010-01-14 15:56:29

2011-07-28 09:27:29

2009-12-29 17:52:40

Ubuntu serv

2019-08-12 14:45:50

软件设计Java

2010-06-24 14:39:09

HART协议

2016-08-10 08:02:16

Linux数控技术

2010-02-23 09:10:58

嵌入式WinCE远程数据采集系统

2010-01-14 14:51:07

CentOS安装配置

2010-01-11 17:08:49

Fedora 10安装

2017-10-13 08:27:13

SCM存储架构

2010-02-07 09:51:22

2012-09-24 09:59:24

Linux操作系统

2013-06-07 11:31:36

面向对象设计模式

2012-06-07 10:17:55

软件设计设计原则Java
点赞
收藏

51CTO技术栈公众号