摘 要:介绍了以32位内嵌ARM核的LPC2210为微控制器的工业以太网智能网关的设计方法,设计了CAN总线、USB总线以及以太网的接口硬件电路以及基于μC /OSⅡ的实时多任务软件流程。该工业以太网智能网关解决了仪器仪表与以太网的数据传输,可实现对仪器仪表的远程控制和访问。
关键字:智能网关,ARM,实时操作系统
1. 概述 当前,在工业控制中广泛采用总线技术,它把系统中的各个设备连接起来,形成一个工业网络系统。在这个系统上面的节点有:具备智能和通信特点的传感器、控制器、各类通信设备和计算机等。然而,由于各集团之间的利益竞争,目前的工业现场仪表总线方式非常多,有的仪表采用串口通讯方式,有的采用USB总线方式,有的采用CAN总线方式,有的采用以太网方式。这些仪表各自独立,难以统一集中监控或管理,显然,这些总线控制系统的发展趋势应该是共同遵从统一的技术规范,真正形成一套开放式互联系统,并与目前已广泛使用的信息网络——以太网无缝连接。因此,构建工业以太网将是工业控制网络的主要发展方向。 但是,在处理器方面,目前在8位和16 位微控制器平台上运行的TCP/IP 协议栈可以将智能
控制设备、仪器仪表等接入以太网,但它仅可完成简单、低速的数据传输,无法满足工业现场的实时性和可靠性要求,尤其是在连接请求较多或控制任务较复杂时,几乎没有实时性可言。因此,必须采用功能更强、处理速度更快的32 位微处理器,并且运行基于特定应用的嵌入式实时操作系统进行合理的任务调度,才能满足工业现场对实时性和可靠性的要求。本文以基于ARM内核的32位微控制器LPC2210研制工业以太网智能网关。
2. 基于ARM的智能网关硬件系统结构 PHILIP公司的LPC2210是基于一个支持实时仿真和跟踪的32位ARM7TDMI-S核结构的微控制器。ARM结构是基于精简指令集计算机(RISC)原理设计的,由于使用了流水线技术,处理和存储系统的所有部分都可连续工作,通常在执行一条指令的同时对下一条指令进行译码,并将第3条指令从存储器中取出。同时LPC2210具有多个32位定时器、4路10位ADC或8路lO位ADC以及多达9个外部,因而它具有较高的性能,非常适合于通信网关、协议转换器、嵌入式软modem以及其它各种类型的应用。目前,常用的通信接口有RS232、USB、CAN、以太网等接口。本智能网关以LPC2210的控制核心,设计其相应的数据传输硬件电路,实现几种常用的总线形式的数据向以太网的传输,如图1所示。[align=center]
图1 系统设计架构[/align]
3. 硬件电路设计 图2为USB和CAN总线接口电路设计,CAN总线电路主要由五部分构成:微控制器LPC2210,独立的CAN控制器SJA1000,CAN总线驱动器PCA82C250 ,高速光电耦合器6N137,
电源隔离模块。微控制器LPC2210通过控制SJA1000实现数据的发送、接收。SJA1000负责数据链路层的工作, 它把发送缓冲器的数据经过处理后送到82C250,把要接收的数据经过处理后放到接收缓冲器等待微处理器的读取。82C250提供SJA1000与物理总线之间的接口。6N137和电源隔离模块用于实现总线上各个CAN节点的电气隔离,增强系统的抗干扰能力。CH372 是一个USB 总线的通用设备接口芯片,具有8位数据总线和读、写、片选控制线以及中断输出,可以方便的挂接到单片机或DSP等控制器的系统总线上。CH372内置了USB通信中的底层协议,具有内置固件模式和外置固件模式。在内置固件模式下, CH372自动处理默认端点0的所有事务,本地端单片机只要负责数据交换,在外置固件模式下,由外部MCU根据需要自行处理各种USB 请求,从而可以实现符合各种USB 类规范的设备。 LPC2210的P3.23连接到SJA1000 的CS引脚,当为低电平时选中SJA1000,P0.30与SJA1000的INT引脚相连,用于USB中断响应。P2.22和P3.21分别连接到CH372的CS和A0引脚,当P3.21为低电平、P2.22为高电平时选中CH372的命令端口;当P3.21为低电平、P2.22为低电平时选中CH372 的数据端口。[align=center]
图2 USB和CAN总线接口电路设计[/align] 图3为RTL8019以太网接口电路,以太网接口电路分为三部分组成:微控制器LPC2210和以太网接口芯片RTL8019以及网络接口HR901170A。微控制器LPC2210通过控制RTL8019实现数据的发送、接收。RTL8019集成以太网控制器、介质访问控制子层(MAC) 和物理层, 可以方便地设计成ISA总线的系统。另外, 它提供给微控制器简单接口, 使微控制器只需要对其相关寄存器进行相应读写即可完成对以太网的操作,同时,它还具有与NE2000 兼容、软件移植性好以及价格低廉等优点。[align=center]
图3 RTL8019以太网接口电路[/align] 电路设计为16位总线方式对RTL8019进行访问,RTL8019的数据线SD0- SD15 与CPU 的P2.0- P2.15 连接, RTL8019工作在跳线模式,它选择的端口I/O 基地址为300H,电路上SA6、SA7、SA10~SA19均接地,SA8、SA9接高电平,SA5与片选P3.23连接,当SA5为低电平,即选中芯片。读写信号线IORB、IOWB 分别接微处理器的读写信号线, RSTDRV为芯片复位引脚,接LPC2210的P0.6。RTL8019内置10ba
se- T收发器, 所以网络接口电路比较简单,通过一个滤波器之后, 连接到HR90117A, 这是一个集成网络变压器的RJ45 接口, 使用该接口既节省了空间, 又增加了可靠性。 其他部分的设计电路有DS1232的看门狗电路,用于对LPC2210的上电复位,MAX232串口电平转换电路,用于串口通讯,还有系统所用到的电源电路等。
4. 基于μC /OSII的实时多任务软件设计 嵌入式实时操作系统μC /OSII是专为微控制器系统和软件开发而设计的公开源代码的抢占式实时多任务操作系统内核,是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于实时操作系统之上的各个任务,实时操作系统根据各个任务的要求,进行资源管理、消息管理、任务调度及异常处理等工作。对于对实时性和稳定性要求很高的数据采集系统来说,引入μC /OSII无疑将大大改善其性能。在实时系统中,每个任务均有一个优先级,实时系统根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。 智能网关软件系统主程序流程图如图4,各个功能模块可分为8个子任务,分别为串口发送、接收子任务,CAN总线数据发送、接收子任务,USB数据发送、接收子任务,以太网数据发送、接收子任务,设置其任务优先级串口发送子任务最低,以太网数据接收子任务最高,以信号量建立各个任务之间的联系。主程序启动后,初始化各个模块,然后启动各个子任务,以太网接收子任务实时等待上位机是否有数据发送给下位机,接收数据后根据收到的上位机指令设置相应信号量。USB发送子任务、CAN总线数据发送子任务以及串口通讯发送子任务实时接收设定的信号量,根据信号量的值确定是否将当前以太网接收到的数据发送到相应的下位机。USB接收子任务、CAN总线数据接收子任务以及串口通讯接收子任务实时等待下位机发送数据给上位机,当接收到数据时,设置相应信号量。以太网发送子任务实时判断信号量,根据信号量的值将数据发送给上位机。通过本智能网关,确保将不同总线形式的数据与以太网之间实现转换。[align=center]
图4 软件系统主程序流程图[/align] 基于实时多任务的用户应用程序设计,不必同时考虑所有任务运行的各种可能交叉的情况,分别编写各个子任务,不但大大减小程序编写的工作量,而且减小出错的可能性,保证最终程序具有高可靠性。
5. 结束语 本文的创新之处是:总结了前人工业网关的设计思想,提出了基于Arm的工业以太网智能网关的软硬件设计,通过将仪器仪表与计算机网络连接起来, 实现对仪表仪器的远程采集和控制,有利于复杂工业现场多参数的集中监测。我们以5只油品带CAN总线形式的含水仪以及10只串口通讯的流量仪表作为下位机,通过本文研制的工业以太网智能网关,系统间隔发送指令请求读取下位机数据,然后将读取的数据以TCP/IP方式发送到以太网上,在局域网的任何一台PC机,键入智能网关的IP地址,即可观察下位机的数据。该设计成本低、使用灵活, 将会有广阔的市场前景。
参考文献 [1] 周立功.ARM嵌入式系统基础教程[M ].北京:北京航空航天大学出版社,2005. [2] 吕昌泰,罗永刚.嵌入式以太网接口的研究与设计[J],微计算机信息,2006 年第22 卷第8-2 期,pp:68-30. [3] 王军波,邹继军. USB总线与CAN总线协议转换器设计[J]. 东华理工学院学报. 2006年9月第29卷第3期.pp:273-276.