基于LonWorks的嵌入式网络监控系统的设计
2009-05-22
作者:陈肖燕, 王振臣
摘 要: 设计了一种基于LonWorks总线和嵌入式系统的监控通信网络。系统采用MSP430单片机作为任务调度和嵌入式系统移植的主处理器,提高了系统运行的实时性和稳定性。DDE服务器实现了数据访问与交换等网络通信功能。总线技术与Web网络相结合,使用户能够通过信息网络监控界面方便地了解现场情况,更便于实现远程监控、诊断和维护功能。
关键词: LonWorks现场总线; MSP430单片机;嵌入式系统; 监控系统
由于LonWorks现场总线良好的开放性和互操作性,在开发智能通信接口和智能传感器方面,LonWorks芯片具有独特的优势,它已被广泛应用在楼宇自动化、家庭自动化、保安系统、办公设备、交通运输、工业过程控制等行业。本文在LonWorks总线基础上,设计了基于主机的节点,并且研究了嵌入式系统在主机上的移植,以及通信服务器的设置调试方法,为实际监控节点的应用提供技术指导。
1 监控节点硬件平台设计
基于LonWorks的监控系统设计中,由于Neuron芯片的应用处理器的数据处理能力有限,通用I/O相对较少,在一定程度上限制了LonWorks技术的广泛应用。采用MSP430单片机作为主处理器,移植μC/OS_Ⅱ嵌入式操作系统到主处理器上,可以在扩展的CPU上运行多个任务,各个任务并行操作,充分利用了CPU的资源。采用μC/OS_Ⅱ操作系统作为整个系统的控制中心,将系统中的各个任务模块化,提供了灵活的结构,便于进一步开发研究。MSP430单片机与LON总线模块接口采用串行同步通信模式(SPI)接口,需要置位单片机寄存器SYNC=1。
LonWorks网络的每个可编程节点可以向其他网络节点发送信息并对它所接收的信息或事件作出响应。系统的功能包括:远程主机(客户)可以通过浏览器在线监视底层网络设备的网络变量,可以通过用户界面向底层设备发布命令,实现远程控制;底层设备的重要物理量可以随时上传至远程主机进行故障报警等[1]。PCLTA-20网络适配卡使得网络节点有联网和远程监控功能。监控节点连接如图1所示。
μC/OS_Ⅱ操作系统作为整个系统的控制中心,完成系统中各部分功能模块硬件电路的初始化及任务的管理和调度。首先,操作系统初始化微处理器,保证其正常工作;然后,周期性调用微处理器与LON网络接口函数任务,实时等待和传输数据;接着设置LNS DDE服务器、Windows操作系统中Web服务器属性,便于连接网络数据库服务器。由于数据采集的需要,设置相关数据采集和访问页面,实现Internet远程访问,确保LON网络和微处理器之间通信;最后,通过LonMaker对整个过程进行监控。监控系统总体结构如图2所示。
2 嵌入式操作系统模块
嵌入式系统的目标硬件平台主要分为三部分:处理器核心、外围电路、外部设备μC/OS_Ⅱ系统。每个任务均有一个优先级,μC/OS_Ⅱ根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求[2],适合应用在实时性要求较强的场合。
在MSP430单片机上移植开发工具使用IAR编译器,而移植的主要工作量又集中在堆栈的操作,即当一个任务退出时保存当前PC指针和当前堆栈内容,并且把下一个任务的PC指针和堆栈内容转化为当前CPU的运行状态。
μC/OS_Ⅱ的全部源代码,共16个文件。移植工作涉及的源文件分为三部分:与处理器无关的代码部分、设置代码部分、包括OS_CFG.H和INCLUDES.H两个头文件。用户可以改写INCLUDES.H文件,增加自己的头文件,但必须加在文件末尾。
最主要的部分是与处理器有关部分的代码,包括一个头文件OS_CPU.H、一个C代码文件OS_CPU_C.C及一个汇编文件OS_CPU_A.ASM[3]。将其移植到MSP430F149处理器上,需要修改这三个与体系结构相关的文件,代码量大约是500行。下面分别介绍这三个文件的移植。
2.1 OS_CPU.H文件
OS_CPU. H文件中的OS_CPU_GLOBALE和OS_CPU_EXT允许用户声明针对本移植的全局变量。由于在MSP430实模式中堆栈都是按字进行操作的[4],所以IAR编译器中堆栈数据类型OS_STK声明为16位,所有的堆栈都必须用OS_STK声明。需要注意的是:MSP430处理器的堆栈由高地址向低地址方向增长,所以常量OS_STK_GROWTH必须设置为1。
2.2 OS_CPU_A.ASM文件
完成μC/OS_Ⅱ的移植需要把OS_CPU_A.ASM修改为OS_CPU_A.S43文件,此文件包括4个函数:OSStartHighRdy( )、OSCtxSw( )、OSIntCtxSw( )、OSTickISR( )。
函数OSStartHighRdy( )由函数OSStart( )调用,功能是让进入就绪态的优先级最高的任务运行。首先必须调用函数OSTaskSwHook( ),把OS_CFG.H中的OS_CPU_HOOKS_EN设置为1,这样OSTaskSwHook( )的代码才能生效。
任务级的切换是通过执行中断指令或依据处理器的不同执行陷阱(TRAP)指令来实现的,中断服务子程序、陷阱或异常处理的向量地址必须指向OSCtxSw( )。
函数OSIntCtxSw( )与OSCtxSw( )函数类似,不同的是OSIntCtxSw( )函数所进行的是中断级的任务切换。
函数OSTickISR( )是系统时钟节拍中断服务函数,是周期性的中断,为内核提供时钟节拍,用来设置内核向应用系统提供的最小时间间隔。
2.3 OS_CPU_C.C文件
OS_CPU_C.C文件中包含10个C语言函数,其中只有函数OSTaskStkInit( )在操作系统中是必要的。OSTask StkInit( )由任务创建函数调用,用来初始化任务的堆栈结构,使堆栈看起来就像刚刚发生过中断并将所有的寄存器保存到堆栈中一样。这样就可以用中断返回指令使就绪的任务运行起来。它与调用者间有3个参数需要传递:任务代码起始地址(task)、参数指针(pdata)、任务堆栈顶地址(ptos)。
移植完成之后可以在IAR的C-SPY环境下进行测试。测试时,只需直接打开移植代码测试项目工程文件msp149final.eww进行测试,其输出文件为149last.d43。
3 网络的通信服务器LNS DDE
动态数据交换DDE(Dynamic Data Exchange)是Windows平台上的一个完整的通信协议。DDE协议可以使用两类DDE应用程序:第一类是基于消息的DDE,第二类是动态数据交换管理库应用程序。
当使用LonMaker工具进行网络设备配置时,它把配置信息备份于LNS DDE Server中,等安装完成后,LNS DDE Server中包含了整个网络的配置图、所有设备的名称、设备的网络变量、配置属性以及LonMark对象。LNS DDE Server使用存储在LNS服务器中的名字、地址和时序信息来完成监控任务。通过LNS DDE Server,任何作为DDE客户的应用程序都能监视和控制一个或更多的LonWorks网络。在运行DDE服务程序时,要在服务程序中制定计算机名。例如:
=\MYCOMPUTERLNSDDE′MyNet.Subsystem 1.DevNV′! ′MyDev.NV2′。
读写网络变量时,首先确定主题名是标准格式或者用户定制格式,然后指定网络变量项目名(Network Variable Item),项目名(Item)的形式取决于它在主题名中的组成,按惯例为设备名、网络变量(NV)名、配置属性名和消息标签名[5]。网络变量更新程序如下:
Private Sub btnReadSwitch4_Click( )
Dim channel As Long //定义通道数据类型
Channel=DDEInitiate(′LNSDDE′, ′LNS DDE Test.HVAC.LMNV′) //发起DDE会话
Sheet1.Range(′E21′)=DDERequest(channel,_′DI- 1.SW-4.
Digital.State′) //请求读取数字变量
DDETerminate (channel) //终止DDE会话
End sub
在LonWorks网络中,采用事件驱动更新或者轮询方式获得设备信息交换和查询。事件驱动更新是没个特定时间就发送信息或者直到某个规定变量值发生变化才会产生消息发送,而轮询则是终端设备轮询变量值某些情况下接收信息受终端设备控制[6]。在远程监控网络中,轮询是最恰当的监测方案。
在VB开发环境中,必须设置好的属性是:LinkTopic、LinkItem和LinkMode[7]。其中,LinkTopic属性设置了被请求服务器的名字和会话;LinkItem属性指定了会话项,也就是网络变量的名称及其所在节点;LinkMode指定会话的模式,可选值为:None(无)、Automatic(自动)和Notify(确认)。
除了控件的这三种属性外,还有许多函数和方法可用来操作DDE,如Shell函数,LinkPoke、LinkRequest、Link Execute和LinkSend方法。
下面具体说明用VB编写监控程序的方法:
Labell. LinkTopic ='LNSDDE/ NET. Subsystem1. DevNV'
Labell. LinkItem ='Device. Value'
Labell. LinkMode = 1 //得到NET 网上Subsystem1 子网中名为Device 节点的网络变量Value的值
Label2 = InputBox $('Please input the SetValue')
Label2. LinkPoke //改变网络变量nvoSetValue的值
本文在LON总线基础上,通过扩展Neuron芯片的处理能力,在主机上移植μC/OS_Ⅱ嵌入式操作系统,可以在扩展的CPU上运行多个任务,各个任务并行操作,提高了MSP430单片机的性能。DDE服务器与VB监控界面的结合,使得可视化动态的网络监控系统得以实时运转。现场总线与Web相结合,提高了系统监控网络的实时性,这也是科技研究的热门课题。
参考文献
[1] 马 莉.智能控制与Lon网络开发技术[M]. 北京:航空航天大学出版社, 2003:50-211.
[2] 李玉天. LonWorks网络的远程控制技术的研究与应用[D]. 电子科技大学硕士学位论文,2006.
[3] 邓燕妮,潘宁. μC/OS_Ⅱ在LonWorks网络节点的移植研究[J].计算机技术与发展,2006,16(10):243-245.
[4] 秦龙. MSP430单片机应用系统开发典型实例[M].北京:中国电力出版社, 2005:43-69.
[5] HUR S H, KIM D. Building automation system via Lonworks and Linux based personal computer[J].Automation in Construction,2006,15(4):522-530.
[6] Echelon Corporation. LNS DDE server user’s guide.Echelon,2001:15-70.
[7] LABROSSE J. μC/OS_Ⅱ源码公开的实时嵌人式操作系统[M].邵贝贝译.北京:中国电力出版社,2003.