嵌入式LonWorks网络智能网关设计解析
扫描二维码
随时随地手机看文章
内容摘要:为了解决LonWorks设备现场智能控制及远程监控的需要,提出了通过嵌入式网关实现LON网和以太网协议的转换方案。本网关采用电力线收发器PL3150和带有以太网控制器的微处理器LPC1778分别实现LonWorks网络和以太网的接口功能。同时还利用LPC1778內置以太网控制器搭建Web服务器,实现了一个远程监控平台,达到了远程智能交互与监控的目的。本文给出了该智能网关硬件平台和软件平台的方案和实现方法。
LonWorks技术是美国Echelon公司于90年代初推出的一种现代总线技术,它具有开放性、高速性和互操作性而已被各行业广泛使用。而LonWorks设备往往工作环境恶劣,其自身各部分与周围其他电子设备之间不可避免存在各种形式的电磁干扰和静电放电,保证LonWorks设备的安全稳定运行有着重大的意义。
LonWorks设备运行过程中涉及的参数众多,控制策略复杂,为了解决其现场远程监控的需要,有必要开发出一款自动化程度高的智能网关,实现LonWorks协议和TC/IP协议的转换,将Lon网和以太网互连,从而达到对远方的LonWorks设备运行集中的、远程的监控的目的。
而传统的网关基本采用16位单片机来实现,受限于其运算能力低、存储空间小的特点,而不能够适用于多任务、实时性高的应用环境。本文设计的设计的一款嵌入式LonWorks网络智能网关,采用32位的ARM为主控芯片并嵌入μC/OS—II操作系统,具有能够满足多任务、实时性、快速性高等复杂监控环境的功能。
1 系统总体结构
图1给出了系统结构示意图,下位机设备将收集到的监控参数通过电力线上传至智能网关,LonWorks网关根据电力通讯协议将已将收集到的数据通过协议转换将Lon网协议的数据包转换成TCP协议数据包上传到ARM内置服务器;远端的监视器作为嵌入式智能网关的人机界面互动平台将远程指令发送到智能网关,智能网关通过电力线下传至下位机设备,下位机设备根据电力线通讯协议接收相应的远程指令,并完成相应的远程控制。
2 硬件设计
硬件平台由3个部分组成,包括由Lon网数据采集收发模块、Lon网协议和LwIP协议转换模块和以太网通讯模块结构框图如图2所示。
2.1 Lon网协议和LwIP协议转换模块
该模块是整个系统的核心,其不仅包括网络协议转换功能,而且完成系统其它显示传输功能。该模块的主控芯片为NXP公司生产的LPC17 78,其片上资源包括512 Kb的FLASH存储器、高达64 Kb的SRAM,系统时钟频率可高达120 MHz,同时可内嵌操作系统。LPC1778内置外部总线控制器,通过总线方式读写双口RAM,从而完成与数据采集收发模块的高速数据交换。另外,嵌入式WEB服务器的架构需要大容量的存储器,片上资源已不能够满足现有的需要,因此外部扩展一片16 Mb的FLASH SST25VF016B。
2.2 以太网接口模块
以太网接口是网关与以太网通信的关键部分,本设计中选用的主控芯片LPC1778内嵌一个以太网控制器,通过扩展网卡芯片DP83848C和一个RJ45接口来实现以太网通讯接口。以太网控制器支持精简的媒体独立接口RMII,可在半双工、全双工模式下提供10M/100Mbps的以太网接入。我们采用RMII协议方式和MIIM(媒体独立接口管理)串行总线、以及MDIO(管理数据输入/输出)相结合的方式来实现与网络芯片的连接。使用RMII接口方式时需要接入一个50 MHz的外部有源晶振。
2.3 数据采集收发模块
该模块核心器件为电力线收发器PL3150。PL3150是Echelon公司生产的基于开放性ANSI标准的电力智能收发器,其可按LonTalk协议与LonWorks网络上的所有节点进行通信。PL3150通过地址线、数据线以及控制信号线与双口RAM连接。双口RAM我们选用IDT71321,其支持总线读写方式,有2 KB的存储容量。双口RAM作为PL3150和ARM之间数据接收和发送的缓存区。该设计方案可实现两模块之间数据的高速、稳定、低误码率的传输。
3 网关软件设计
3.1 网关软件结构设计
软件结构如图3所示,包括2个主要部分:
1)ARM端软件设计。软件平台由嵌入式μC/OS—II操作系统为基础构建,并利用LwIP协议实现TCP/IP协议,上层的应用程序为WEB服务程序以及网关协议转换程序。
2)PL3150端设备接口数据通信程序。
3.2 网络协议转换程序
在网关中最重要的是实现两个不同网络的协议转换。在LonWorks网络中,节点与节点进行通信时,常采用特定的网络变量的形式进行。网络变量只有数据类型相同的输入网络变量和输出网络变量才能建立连接。在本网关工作过程中,根据图2所示的结构原理,当下位机设备需要向上位机发送数据信息时,将会对自己的输出网络变量进行更新,发送到LonWorks网络上;当PL3150监测到这些网络变量时,将对与之捆绑的输入网络变量进行更新并发送到双口RAM的数据缓冲区;ARM芯片通过外部总线读取双口RAM,其内部以太网控制器依据所使用协议将数据包进行封装,发送到以太网协议的应用层。相反,当上位机想要对远端现场设备进行控制时,也要对相应的网络变量进行更改。
在协议转换过程中,双口RAM作为一个共享存储器能够进行双边读写操作。为了避免数据信息交换时的读写冲突、产生竞争,在读写操作时要进行控制以进行同步访问。本文采用通过定时查询控制地址的值来进行同步访问操作。将2 KB的双口RAM划分为3个主要部分宋存放不同内容:存放ARM对PL3150的控制信息;存放PL3150向ARM发送的数据信息;控制同步访问信息。
3.3 μC/OS—II操作系统移植
操作系统的加入使得我们的内部资源能够更好的利用。μC/OS—II操作系统是一款开源的,针对嵌入式系统的实时内核操作系统,可以应用于多种类型的硬件平台。它最近发布的版本最多可管理多达256个任务。μC/OS—II具有强大的网络支持,并且支持LwIP协议,为我们的网关服务搭建了一个很好的平台。将μC/OS—II操作系统移植到ARM平台上,只需处理μC/OS—II与Cortex—M3接口部分,即OS_CPU_C.C、OS_CPU_A.S、OS_CPU.H这3个文件。
3.4 网关通讯协议TCP/IP实现
3.4.1 LWIP简介
本文的TCP/IP协议选择使用LwIP协议栈来实现。LWIP是由瑞典计算机科学研究院Adam Dunkels设计的开源的嵌入式TCP/IP协议。它是轻型的TCP/IP协议栈,适用于资源紧张的嵌入式系统。LwIP既可以独立运行,也可以移植到不同的操作系统上。
3.4.2 TCP数据处理流程
在我们的应用中,使用LwIP的TCP协议,它属于传输层协议,虽然相比UDP协议传输速度较慢,但是它为应用层提供可靠的字节流服务TCP流程如图4所示,当下位机数据信息到达时,通过tcp_write来构造一个报文段,之后tcp_output被调用,同时与ip_route交互,填写首部中的源IP地址字段,最后通过ip_output发送给链路层,加上以太网帧头发送到以太网中。同理可以得知TCP输入流程。
3.4.3 LwIP移植
LwIP的移植主要是为了实现操作系统模拟层,它是操作系统和协议栈的一个接口,可为进程处理同步、消息传送机制以及定时器等操作系统服务提供统一接口。
移植需要添加以下文件,具体包括:
1)与CPU和编泽器相关的头文件。
2)与操作系统相关的文件。sys_arch.h的内容是与操作系统相关的结构和函数。此文件中需要实现4个函数:消息函数;数据结构及信号函数;系统超时函数;创立新线程函数。
3)与网卡驱动相关的函数。LwIP源码提供者将ethernetif.c中的函数实现一个框架形式,用户可以根据这个框架定制网卡驱动。
3.5 网关监控平台的实现
嵌入式处理器LPC1778在μC/OS—II操作系统平台上,利用LwIP协议的上层协议HTTP协议搭建轻型服务器,提供人性化的操作界面,实时监控底层数据及控制输出等功能。Web服务器的结构如图3所示。当远端的浏览器发送请求时,HTTP协议处理程序会将该请求发送给Web服务器处理;而CGI(通用网关接口)程序作为处理客户端Web浏览器输入数据的接口规范,用来解释处理表单的输入信息,并在服务器产生相应的处理,完成客户机与服务器之间的交互操作功能。
实现步骤如下:
1)通过在μC/OS—II建立相应的任务。当任务建立起来之后,任务的调度就由μC/OS—II的任务调度器调度。μC/OS-II的任务调度是抢占式的,所以在设置任务优先级的时候要考虑任务对实时性的要求。同时注意LwIP的初始化要在μC/OS-II完全启动之后。
2)Web服务器实现。由于本网关采用B/S通讯模式,嵌入式ARM则充当服务器,提供网页数据信息。B/S模式需要HTTP协议的支持。它是基于请求/响应模式的,并使用TCP作为传输层。当服务器运行时,始终在80服务端口监听,等待请求的出现。Web服务