基于Lonworks现场总线的列车实时网络监测系统

2015-01-27 03:13:19周凤星
自动化与仪表 2015年2期
关键词:网关总线神经元

石 楠,周凤星

(武汉科技大学 信息科学与工程学院,武汉 430081)

自20世纪90年代以来,控制技术和自动化仪表发生了一次具有深远影响的重大变革,引起这场变革的是现场总线技术。现场总线的实时、可靠、低成本、使用方便等特点使其在被控现场层得到广泛的应用,它很好地解决了上几代控制系统中遗留的问题,从信号标准、通信标准到系统标准,从体系结构、设计方法、安装调试到产品结构都有革命性变革。Lonworks是一项具有强劲实力的现场总线技术,它是由美国Echelon公司推出并与摩托罗拉、东芝公司共同倡导而形成的。它采用了基于ISO/OSI模型全部七层的lontalk协议,采用了面向对象的设计方法,通过网络变量把网络通信设计简化为参数设置,其通信速率可达到1.5 Mb/s,直接通信距离可达2700 m,支持双绞线、同轴电缆、光纤等多种通信介质[1]。基于Lonworks以上种种优点,本系统采用Lonworks现场总线作为列车监测系统的通信线路,以满足列车监控的实时性要求。设计一种网关将使用RS485总线的列车设备连接入Lonworks网络中,形成控制网络。基于ARM-linux设计综合监控端,完成对网络数据的处理与图形用户界面的实现。

1 系统总体结构

本系统的整体构成主要包括2大部分:监测节点和综合监控端。监测节点又由传感器与RS485-Lonworks网关组成。

如图1所示,传感器其实是列车各种设备上的可编程器件[2]。作为列车设备数据的采集模块,完成对机车车速、柴油机转速、主电压、主电流、滑油压力、燃油压力、冷却水温、机油温度等参数的采集,然后通过RS485总线与RS485-Lonworks网关通信。

图1 系统整体流程图Fig.1 Overall flow chart of system

RS485-Lonworks网关是本系统的“核心”,完成RS485与Lonworks的协议转换功能。其在2种不同网络结构中分别充当不同的网络角色:综合监控端通过Lonworks网络与网关连接,网关作为服务器,运行Lonworks程序,综合监控端位于客户端,当服务器收到综合监控端的数据访问请求后,通过协议转换,将Lonworks数据请求转换成RS485协议请求,此后,网关作为客户端,将RS485请求发送到各传感器服务器,各传感器收到网关的数据请求后,产生回复数据,通过RS485发送给网关,由网关的RS485客户端接收数据后,转换成Lonworks数据包,并通过Lonworks网络返回给综合监控端[3]。网关与传感器组成监测节点分布在列车的各种设备上。

综合监控端监听Lonworks网络上的数据,经ARM处理后通过图形用户界面与外界交互。

系统的工作流程:(1)综合监控端打开监控软件,等待监测节点连接;(2)监测节点连接后,实时采集设备数据并发送至Lonworks网络;(3)综合监控端在Lonworks网络获得数据包,经ARM处理后通过图形用户界面与外界交互;(4)综合监控端循环监听键盘按键事件,根据按键号,发送对应命令包到Lonworks网络;(5)监测节点收到命令包后,解析命令并回送对应的数据包到Lonworks网络。

2 硬件的设计与实现

2.1 Lonworks网关的硬件设计

如图2所示,网关的主处理器由单片机AT89C55WD与神经元芯片FT3150双处理器组成。神经元芯片是Lonworks的核心,每一个Lonworks网络上的节点都需要一片神经元芯片来接入网络,它是一种三核处理器芯片,内部固化了Lonworks网络的7层OSI协议,即lontalk协议。程序员编程时不必关心协议的细节,从而大大节约了开发的人力与时间。FT3150是Echelon公司推出的高性能神经元芯片,包括了20 MHz的Neuron 3150核心、一个0.5 KB的E2PROM和一个2 KB的RAM。通过它的外部存储器总线,FT3150收发器能够寻址多达58 KB的外部存储器,其中16 KB的外部非易失性存储器被保留用于存储Neuron固件。提供可以配置用于1个或更多的34种预定义标准输入/输出模式的11个I/O管脚。它集成了多种的I/O模式和2个片上定时/计数器,使得FT3150使用最小限度的外部逻辑电路或软件开发来实现应用电路的接口。

图2 Lonworks网关结构图Fig.2 Structure diagram of lonworks gateway

传感器通过RS485总线与单片机相连,芯片采用MAX1487ESA。由于列车长度很长,设备分布分散,导致连线长度较长。为了防止信号干扰,在MAX1487ESA与单片机之间采用光耦芯片HCPL0600和隔离电源芯片MAU102连接。MAU102隔离出2路5 V电压,对光耦两端分别供电,避免了单片机引脚与MAX1487ESA引脚的直接连接,有效地抑制了干扰。

单片机为了实现与神经元芯片的并口通信,需要模拟神经元芯片的通信时序,为了减少线路的开销,采用可编程逻辑阵列芯片GAL16V8D,将单片机与神经元芯片的引脚时序对应关系通过编程烧入其中实现译码电路,连接单片机与神经元芯片。

神经元芯片FT3150最小系统由1片Flash芯片SST39SF010A、1片 RAM 芯片 IS62C256AL-45ULI、20 MHz晶振、复位电路等组成。

为了避免来自Lonworks网络的信号干扰,设计隔离模块与通信滤波模块,采用一个享有专利权的外部通信变压器芯片FT-X1实现。这个芯片基于先进的磁隔离技术,能够在存在高频共模噪声的非屏蔽双绞线网络环境中工作,并具备杰出的抗磁能力,从而满足了列车应用环境中对磁保护罩的需求。

另外,由于列车工作环境的特殊性,主处理器芯片运行时极有可能发生干扰与被干扰的现象,甚至出现系统死机,为了避免这种情况,不仅使用了芯片自带的软件看门狗,还加入了硬件看门狗芯片MAX706,一旦处理器失控它能强行复位,引导程序重新运行。

2.2 综合监控端的硬件设计

如图3所示,综合监控端的主处理器芯片由ARM芯片AT91SAM9263与神经元芯片FT3150两个构成。AT91SAM9263是基于ARM9架构,运行在200 MHz时拥有220 MIPS的运算性能,很好地满足了移植嵌入式Linux的需求。内部自带有LCD控制器,很容易实现LCD屏的扩展。通过1片驱动芯片PCA9555,与21键的矩阵键盘连接。LCD与矩阵键盘一起构成了系统的人机接口,矩阵键盘作为接口的输入设备。系统通过移植Linux操作系统与图形系统GUI构建起软件平台。系统运作过程中需要大量的存储空间,外扩1片32 M的Nandflash芯片HY27UG088G、1片64 M 的SDRAM芯片MT48LC32M16A2。ARM需要的数据由神经元芯片提供,通过IO与Lonworks通信模块连接,Lonworks通信模块的另一端与Lonworks网络连接。

图3 综合监控端结构图Fig.3 Structure diagram of comprehensive monitoring terminal

3 系统软件设计

系统软件设计按功能可分2大部分:Lonworks下的软件设计和Linux下的软件设计。其中,Lonworks下的软件设计是整个软件设计的核心,又分为网关的程序设计、网关与综合监控端的通信设计2部分。

3.1 Lonworks下的软件设计

图4所示为网关的程序流程图。网关中包括单片机与神经元芯片2个处理器。开始时单片机进行RS485协议栈初始化,神经元芯片进行lontalk协议栈初始化,之后单片机作为主设备在RS485总线上发送命令帧给从设备,轮询从设备数据帧,接收到数据帧后,整理打包通过并口发送给神经元芯片。

图4 网关程序流程图Fig.4 Flow chart of gateway program

神经元芯片采用neuron c语言编程,它是一种专用的高透明度的面向对象的编程语言。初始化后,先向Lonworks网络注册设备的域表,域表是Lonworks的一种数据结构,用来注册设备在Lonworks网络上的网络地址。然后用任务调度来轮询判断并口事件与Lonworks网络事件是否发生,并口有数据来时接收并打包存储,Lonworks网络有命令包来时,解析命令然后回送对应的数据包。

网关程序中最重要的是单片机与神经元芯片间通信的实现,它是Lonworks网关中的“桥梁”,若没有它则网关毫无意义。通常情况下,2个神经元芯片间的通信是可以直接完成的,直接将IO对连就能实现,因为其通信时序已经在固件中固化好了。而单片机中没有固化神经元芯片的通信时序,为了与神经元芯片通信,单片机需要“模拟”神经元芯片内部通信时序。

在神经元芯片的通信中,采用传递虚拟令牌的方式分配总线的操作权,获得令牌的一方才能对总线进行操作。另外规定握手信号,用于传递读写的状态。定义有特定意义的帧格式:写数据帧CMD_XFER,传令牌帧 CMD_NULL,再同步帧CMD_RESYNC,答应同步帧:CMD_ACKSYNC等等。XFER用来读写数据;NULL用来传递 “虚拟令牌”;RESYNC与ACKSYNC用来做单片机与神经元芯片的同步。

在单片机中,将神经元芯片当做是2个片外寄存器来访问,地址分别设为一个偶地址与一个奇地址。奇地址用来查询神经元芯片的握手信号,偶地址用来接收和发送帧。每一个字节的通讯过程中,单片机首先从奇地址查询握手信号,可以写时再向偶地址写字节,以此完成写帧操作。对应图5所示,为单片机与神经元芯片通信时的完整流程。

图5 单片机与神经元芯片间通信流程图(左为单片机、右为神经元芯片)Fig.5 Flow chart of MCU and neuron chip communication

而对于网关与综合监控端在Lonworks网络上的通信,有2种可行的方式:一种是通过网络变量,一种是通过显示消息。其中显示消息适合数据量大的场合,由于列车设备监测的数据量比较大,本系统使用显示消息。在neuron c语言中,显示消息基于面向对象实现,所有的成员变量封装于结构体中,提高了编程对于程序员的“透明度”,使神经元芯片的编程简化到了变量的配置,极大节约了开发时间。主要成员变量dest_addr是一个共用体,包含神经元芯片在Lonworks网络上寻址的3种方式:广播式、域子网节点式、分组式。通过广播式发送的数据包能使网络上的所有节点接收到,而通过域子网节点方式能向固定的节点发送数据包。

在Lonworks网络上,综合监控端采用广播式向网络上的所有网关节点发送命令包,网关节点接收到后,解析包中的命令,然后以域子网节点的方式向综合监控端回送对应的数据包。

3.2 Linux下的软件设计

Linux操作系统是一种开源的操作系统,具有优异的移植性,适合移植到嵌入式设备上,本系统移植的是Linux2.6.35操作系统。

为了屏蔽硬件的差别,需在Linux环境下为硬件设计驱动。即提供给用户程序一套与硬件无关的接口,用户程序可以像访问文件一样,访问设备。本系统需要在嵌入式Linux下添加Lonworks驱动。Linux的驱动包括字符设备驱动,块设备驱动,网络设备驱动等。Lonworks驱动属于字符设备驱动,字符设备驱动中最核心的就是file_operation结构,该结构中包括一套函数指针,这些指针指向底层的各种操作, 如 open,release,read,write,poll,ioctrl等操作,并可被用户程序调用[4]。Lonworks驱动流程如图6所示。

根据 FT3150芯片与 AT91SAM9263的连接和通信特点编写 Lonworks设备驱动的操作函数。

Lonworks设备驱动是从init()函数开始的,它完成的工作有,进行驱动的加载,在其中为设备申请设备号,然后将设备号与file_operation结构一起向内核注册。Lon_open()函数中对ARM的相关引脚进行配置,使其工作在神经元芯片的时序方式。Lon_ioctrl()函数,通过cmd与 arg传递配置。Lon_poll()函数中查询设备的状态,并返回设备状态,如设备状态可读,返回可读。Lon_read()函数,通过copy_to_usr()函数,将内核空间中的数据,拷贝到用户空间中去。

图6 Lonworks驱动流程图Fig.6 Flow chart of lonworks drive program

通信采用中断的方式,驱动中接收一个字节进一次中断,当一帧数据通信完成时,将数据存在内核空间中,并将设备状态置为可读,用户程序通过poll()函数做系统调用便可获知Lonworks驱动设备可读,再通过read()函数将内核空间中的数据读取到用户空间中来。Lonworks驱动的实现为用户程序的工作打下基础,意义重大。

对于Linux下的用户程序,为满足列车监测时与外界的交互性,需要用户图形界面。本系统采用QT实现。QT是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架,它提供给用户程序开发者建立艺术级的图形用户界面所需的所有功能。QT很易扩展,并且允许真正的组件编程[5]。

本系统使用QT4设计GUI时,为照顾与外界良好的互动性,采用分层结构,基于一个主对话框,其上分为几大模块:日期时间模块、车速转速模块、设备状态模块、运行参数模块、故障信息模块、底部按键模块。用户软件调用底层的Lonworks驱动来接收Lonworks网络上的数据,之后将数据分类处理,再在显示界面对应位置显示出来与外界交互。如图7所示,为实际综合监控端显示界面。

图7 综合监控端显示界面Fig.7 Display interface of comprehensive monitoring terminal

4 结语

本系统采用Lonworks现场总线、ARM-linux等技术设计并实现了列车上设备的实时监测系统。其特点是,基于Lonworks网络实时性强、通信速率快、互操作性好等,利用Lonworks网关将列车上复杂、低效的总线结构“集中”到统一、高效的Lonworks网络中去,将列车上分散的设备数据集中地实时地反映在用户图形界面中。整个系统设计新颖,结构精巧,性能可靠,并且人机界面友好,交互性强。在实际应用中,本系统运行良好,提升了列车上设备状态的监测能力,使列车的安全运行得到了保障,具有较大的实用价值。

[1]张玉萍,佟为明,李辰.Lonworks总线实时通信协议的研究[J].仪器仪表学报,2009,30(8):1783-1788.

[2]马云双,周希德,吴复生.基于Lonworks网络控制技术的内燃动车组控制系统研究[J].铁道学报,2002,24(1):43-47.

[3]贺春艳,庹先国,刘勇,等.一种低成本高速以太网-RS485网关设计[J].自动化与仪表,2014,29(8):24-28.

[4]梁惺彦,顾晖.基于ARM的linux下Lonworks总线设备驱动设计[J].微型机与应用,2009,28(10):66-68.

[5]Jasmin Blanchette,Mark Summerfield.C++GUI Qt 4 编程[M].闫锋欣,曾泉人,张志强,译.北京:电子工业出版社,2013.

猜你喜欢
网关总线神经元
《从光子到神经元》书评
自然杂志(2021年6期)2021-12-23 08:24:46
基于改进RPS技术的IPSEC VPN网关设计
基于PCI Express总线的xHC与FPGA的直接通信
测控技术(2018年6期)2018-11-25 09:50:12
机载飞控1553B总线转以太网总线设计
测控技术(2018年8期)2018-11-25 07:42:08
跃动的神经元——波兰Brain Embassy联合办公
现代装饰(2018年5期)2018-05-26 09:09:01
LTE Small Cell网关及虚拟网关技术研究
移动通信(2015年18期)2015-08-24 07:45:08
基于二次型单神经元PID的MPPT控制
电源技术(2015年5期)2015-08-22 11:18:38
应对气候变化需要打通“网关”
太阳能(2015年7期)2015-04-12 06:49:50
毫米波导引头预定回路改进单神经元控制
多通道ARINC429总线检查仪