基于CAN总线的海洋水文气象观测系统设计

2014-09-06 05:41:41
机械与电子 2014年7期
关键词:水文气象总线状态

, ,

(1.中国海洋大学工程学院,山东 青岛 266100;2.烟台森科特智能仪器有限公司,山东 烟台 264100)

基于CAN总线的海洋水文气象观测系统设计

綦声波1,沈翔1,于敬东2

(1.中国海洋大学工程学院,山东 青岛 266100;2.烟台森科特智能仪器有限公司,山东 烟台 264100)

0 引言

CAN[1]是一种有效支持分布式控制或实时控制的串行通信网络,它的应用范围遍及从高速网络到低成本的多线路网络。以往的气象或水文仪器多采取传感器接口和中心控制器直接连接的方式。对于多参数系统,随着参数的增多,数据量的增大,这种封闭的集中控制方式的弊端逐渐显现,可维护性变差,无法满足正常稳定高效的工作要求。为此,采用将传感器的连接和数据处理基于CAN总线进行模块化处理,不同的传感器具有相同的架构和CAN接口,并规划了具有通用性的CAN总线应用层协议[2]。在软件开发方面,结合系统的硬件特点,设计了可移植性强的软件层架构,并且基于μC/OSⅡ操作系统和状态机完成系统的开发。

1 系统总体架构

1.1 系统设备总体规划

系统从整体上看,分为现场采集系统和岸站接收系统2部分。系统所涉及的传感器分为气象部分和水文部分,包括风速风向传感器、温湿度传感器、气压传感器,水位传感器、海流传感器、波浪传感器和温盐度传感器等,检测要素包括风速和风向、空气温湿度、大气压、特定水深的流速和流向、波浪参数及特定水深的温度和盐度等。

图1虚线框内为主控模块和传感器模块的CAN总线系统结构,其节点[3]分为2类:一类是主控处理模块节点,另一类是传感器模块节点。前者完成整个系统的监测控制、状态显示、参数设置以及组态;后者采集各传感器的实时信息,并根据所得信息发送给控制模块。两者共享的公共资源只有CAN总线,减小了系统的耦合性。考虑到功能扩展,每个传感器以单独的模块挂载在CAN总线上,拥有自己独立的ID号。

图1 系统设备总体规划

在硬件组成方面,系统采用了ST公司的具有Cortex-M3内核的STM32F103[4]作为传感器处理模块和主控模块的主控芯片,芯片的串口、12位ADC、CAN和SPI总线等满足了传感器和外接设备的应用需求。同时芯片内部拥有CAN控制器,自带bx-CAN协议,它支持CAN协议2.0A和2.0B,以最小的CPU负荷来高效处理大量收到的报文,也支持报文发送的优先级要求(优先级特性可软件配置),为系统设计省去了复杂的电路设计。

1.2 传感器模块硬件设计

传感器模块,其特点是只需要将数据处理电路根据传感器的数据类型,设计相应的处理电路,其他硬件设计保持不变。时钟芯片PCF8563的设计是为了提供数据上传的时间节点,保证数据的实时性。在一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点,但在实际应用中,节点数目受网络硬件的电气特性所限制,系统中使用Philips PCA82C250作为CAN收发器,同一网络中允许挂接110个节点。

由于每个传感器在与 CAN 总线相连时都采用了统一的标准和相同的方式,所以在系统看来,任何一个传感器都是一个节点,没有什么不同。每个节点向总线发送的数据中包含着它的属性,主控模块通过这些数据就可以判断是什么类型的传感器。较之传统的传感器专用接口的设计,系统的设计有很强的可替换性。传感器模块化设计如图2所示。

图2 传感器模块化设计

1.3 主控模块硬件设计

主控模块设计如图3所示。SD卡作为存储传感器数据的存储设备;MCGS显示屏用于传感器数据的实时显示和历史数据的查询;GPS模块提供精确的时间信息用于时间校准;打印机用于历史数据的打印读取;GPRS模块进行数据远程传输和报警。主控模块与传感器模块通过CAN总线联系在一起,这样主控模块就对传感器模块起到了调度和监控的作用。

图3 主控模块设计

2 CAN总线应用层协议

参考基于CAN总线的工业应用层协议,根据海洋水文气象观测系统的实际情况,制定了开放式的CAN应用层协议,采用CAN总线架构的海洋水文气象观测系统和类似的传感器节点通讯网络,都可以参考这一协议。

CAN总线的数据帧[5]类型分为标准帧和扩展帧,标准帧的长度为11位,相当于扩展帧基本ID,最高位是ID28,最低位是ID18,这些位按照由高到低的顺序发送;扩展帧分为11位的基本ID(定义扩展帧的基本优先权)和18位的扩展ID。

CAN总线的数据帧结构如图4所示。

图4 数据帧组成

图4中,SOF(帧起始)、CRC场及ACK(应答场)和帧结束等,都是由CAN的底层协议来完成的,不需要用户的干预;而仲裁场、控制场和数据场则是与用户的应用息息相关的。在报文格式定义中,重点考虑的一个方面是信息标识符(ID)的分配和定义,因为标识符是唯一标识该网络设备的类型和在通讯网络中位置的识别码。协议通过标识符来区分通讯数据的不同功能,并反映出通讯数据的优先级、信息源地址(身份ID)和信息目的地址[6]。合理、高效的信息标识符ID分配方案是充分发挥CAN总线性能的前提条件。

优先级的安排可避免传感器模块数据发送冲突,由于扩展帧基本ID的高7位不能全为隐形(禁止设定ID=1111111XXXX),所以定义0x00的优先级最高,0x1E的优先级最低。优先级高的,优先获得CAN总线的控制权,广播帧的优先级定义为0x1E。传感器模块根据气象参数的特点,合理分配各个数据的传送时间和优先级,采样时间短的优先级越高,同理,数据波动性小的采样优先级低。

源节点编号和目的节点编号,在传输过程中通过对这2个ID的查询,来确定数据的来源和目的地。节点编号的长度可以根据设备挂载的情况来设计,在系统中采用5位ID节点编号,范围在0x00到0x1F之间,主控模块的节点编号为0x00,各个传感器的编号依次排列。这些节点编号就可以作为识别主控模块和各个传感器模块的身份ID,本协议中最多可以挂载的传感器模块为16个,基本满足了对于现有观测的需求和功能扩展的要求。

功能码是为软件实现服务的,依据数据传输的类型不同划分,如0x00握手(主控模块判断节点处是否有传感器模块挂载);0x01瞬时数据上传(根据传感器数据特性设定时间节点);0x02统计数据上传(以半小时作为时间节点);0x03通道标定(对于模拟量数据需要进行数据的标定),不同的传感器通道以通道号的不同进行区分。本协议功能码空间预留,因此,还可以针对不同的应用场合进行相应的功能扩展。

主控模块对于数据是否存储根据ID6的值进行判断,当值为0时,则表示数据需要存储,当值为1时,则表示数据不存储。SegFlag判断是否分段发送,也就是多帧连续发送的标志,当SegFlag=00时,表示不分段发送;而其他的值表示分段发送,01表示开始,10表示中间,11表示结束。SegNum是分段发送计数器,帧加1其值加1。

CAN 总线通讯采用广播模式,即各传感器模块的报文只由主控节点接收(点对点模式),主控模块的报文所有子节点均可接收。

CAN总线的通讯由主控模块发起,首先明确要调取的数据是什么要素的数据,接下来确定数据来源于哪个传感器模块,然后控制报文格式,将远程帧发送到总线上,等待传感器模块的应答。主控模块对于传感器模块在CAN总线上的调度,主要通过优先级和传感器采样时间节点属性来决定。如风传感器的采样时间节点最短,每3 s广播1帧远程帧。根据传感器特性进行合理的分配,完成了主控模块对于各个传感器模块的调度。

3 系统软件设计

3.1 系统软件架构

海洋水文气象观测系统的软件开发基于μC/OSⅡ操作系统[7],主控模块和传感器模块采用相同的软件架构。系统软件架构包括系统调度层、功能任务层和驱动层。

系统调度层是软件架构的最高层,主要完成对外部设备的调用、读取和管理。大致可分为以下的功能:CAN总线的调度,将数据信息和电源信息,按照格式存储在共享内存;存储,共享内存中的数据按照格式,备份在SD卡中,文件类型分为瞬时数据和统计数据,在主控模块中,根据数据对应传感器模块的不同,相应的存储地址也不同;GPRS通信,从共享内存中调取数据,远程传输和报警;打印机,从共享内存中或者SD卡中调取数据,完成自动打印或者手动打印;电压值的A/D采样,用于监控设备的运行状况;计算,对于采样值进行规范化处理,按照水文气象格式进行存储;看门狗复位处理;低功耗管理。

功能任务层主要负责各个模块功能过程的实现,即CAN总线收发、串口中断收发、A/D采样、SPI总线通讯、RTC时钟读写功能和EEPROM读写功能等。

驱动层负责实现系统各个功能单元的设备驱动,包括CAN驱动程序、串口驱动程序、A/D驱动程序、SD卡驱动程序、看门狗驱动程序和IIC驱动程序等。主控模块软件架构如图5所示。传感器模块软件架构如图6所示。

图5 主控模块软件架构

图6 传感器模块软件架构

3.2 传感器模块建模

传感器模块软件行为主要表现为,在不同的条件下跳转到不同的状态,并在各个状态下进行相应的工作。UML建模的状态图最为适合描述这种行为。系统的顶层状态如图7所示。

在上电之后,传感器模块自动进入初始化状态,在该状态中,软件要完成的工作有初始化硬件,an>初始化中断向量表,时钟调节,操作系统初始化,读取EEPROM中的工作参数等。初始化完成之后,根据读出的工作模式参数,决定下一步的跳转。

图7 传感器模块顶层状态

如果是首次初始化,传感器模块需要主控模块对其采样参数进行配置,所以会进行判断,正常情况下直接进入启动采样状态,等待进入采样状态。

在采样状态之下,存在着数据采样和数据存储2个子状态。数据采样状态下,传感器模块会启动各个采样进程,通过选择串口、A/D和脉冲3种硬件通道获取传感器反馈的数据。考虑到各个传感器自身协议的复杂度和系统的层次性,3种通道可以设计为数据采样状态下的子状态机。当数据采样周期结束之后,数据采样状态将会跳转为数据处理和存储状态。数据处理和存储状态结束之后,将会重新跳转到数据采样状态,以开始一个新的采样周期。

当CAN通讯中断发生之后,系统的状态会从采样状态跳转到CAN通讯状态,以配合主控模块进行数据传输和参数配置。CAN通讯结束之后,系统会重新回到采样状态中的深度历史状态。

系统处于不断的循环工作状态下,只有断电才会进入结束状态。

3.3 系统测试

系统在实地和实验室同时测试。实验室测试为了提高数据的可操作性,使用了自行设计的传感器模拟装置来代替传感器的信号输出,信号格式完全匹配传感器的输出信号。

数据显示格式按照水文气象参数要求进行编译,经过试验,数据传输高效、稳定,系统运行正常,数据存储稳定,可直接查询、存储和显示历史数据。

4 结束语

基于CAN总线的海洋水文气象观测系统,充分利用了CAN总线的优越性,提高了系统可操作性和容错性,有利于未来系统的改进和升级。在系统设计过程中,提出了模块化管理的思路,缩短了设计周期,强化了设备的兼容性。系统已经成功试运行半年左右,功能稳定,其各项指标均已达到了预期目标。因此,所涉及的CAN应用层协议和软件架构,对其他类似项目有着借鉴意义。

[1] 饶运涛,邹继军,王进宏,等.现场总线CAN原理与应用技术[M].2版.北京:北京航空航天大学出版社,2006.

[2] 邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.

[3] 万 丽,宁克焱.基于CAN总线的军用车辆数据采集部件节点研究[J].车辆与动力技术,2005(3):1-4.

[4] 刘同法,肖志刚,彭继卫.ARM Cortex-M3内核微控制器快速入门与应用[M].北京:北京航空航天大学出版社,2009.

[5] 钟 勇,钟志华,余群明,等.电动汽车CAN总线通用协议的应用研究[J].汽车工程,2006,28(5):422-426,438.

[6] 王晓燕,裴 亮,付 晓.基于CAN总线的浮标数据采集系统设计[J].嵌入式网络技术应用,2008,24(14):20-21.

[7] Labrosse J J.嵌入式实时操作系统μC /OS-II[M].邵贝贝,译.2版.北京:北京航空航天大学出版社,2003.

Design of Marine Hydrological and Meteorological Observation System Based on CAN Bus

QIShengbo1,SHENXiang1,YUJingdong

2
(1.College of Engineering,Ocean University of China,Qingdao 266100,China;2.Sencott Intelligent Instruments
Corporation of Yantai,Yantai 264100,China)

设计了海洋水文气象观测系统,将传感器和主控器通过CAN总线联系起来,设备之间的拟合度较小,具有了更高的开放性、可维护性和稳定性。系统对硬件电路进行模块化设计,传感器模块采用了通用化设计,可搭载不同传感器,并根据相关规范定时采集传感器数据;主控模块配备MCGS显示屏、GPRS无线传输模块和微型打印机,通过CAN总线收集传感器信息,并定时发送到岸站系统。在CAN2.0 A/B协议的基础上,设计规划出适合于水文气象系统的CAN应用层协议,并以STM32为主控MCU实现了该协议;制定编写了分层的软件架构,并使用UML状态图对系统顶层结构进行了状态设计,明确了处理数据采样任务和辅助任务之间的接口和跳转关系。

海洋观测;水文气象;CAN总线;应用层协议;UML

The design of marine hydrological and meteorological observation system,which connected the sensor and the main controller,based on CAN bus.The modular design was used for the hardware circuit of the observation.The device was divided into control part and sensor part.They connected through CAN bus.The sensor part was designed universally,so the device could carry on different sensors.Then the data was collected based on relevant specifications.The control part was equipped with a MCGS,a GPRS module and a small printer.It collected the data from sensor part through CAN bus,and transmitted the data to the station on time.According to the work,the application layer protocol of CAN,adapt to Meteorological and oceanographic observations,had been designed. It was based on CAN2.0 A/B protocols and used STM32 as the main chip.What’s more,the layered architecture of software had been designed,and the top structure had been designed through UML.

ocean observation;hydrology and meteorology;CAN bus;application layer protocol;UML

2013-12-30

TP23

A

1001-2257(2014)07-0035-04

綦声波(1970-),男,山东平度人,博士研究生,副教授,研究方向为嵌入式仪器仪表、汽车电子;沈翔(1988-),男,安徽合肥人,硕士研究生,研究方向为嵌入式系统、智能仪器仪表。

猜你喜欢
水文气象总线状态
状态联想
基于PCI Express总线的xHC与FPGA的直接通信
测控技术(2018年6期)2018-11-25 09:50:12
机载飞控1553B总线转以太网总线设计
测控技术(2018年8期)2018-11-25 07:42:08
长江水文气象服务发展历程
生命的另一种状态
浅析抛止荡锚来防止船舶碰触码头
珠江水运(2017年22期)2017-12-13 13:26:45
三峡大坝建成前后下游水文气象序列的变异分析
热图
家庭百事通(2016年3期)2016-03-14 08:07:17
坚持是成功前的状态
山东青年(2016年3期)2016-02-28 14:25:52
多通道ARINC429总线检查仪