一种工业远程实时监控系统的实现
2014-09-06李昕泽邓中华
李昕泽,邓中华
(1.华中科技大学,武汉 430074; 2.武汉华茂工业自动化公司)
一种工业远程实时监控系统的实现
李昕泽1,邓中华2
(1.华中科技大学,武汉 430074; 2.武汉华茂工业自动化公司)
为了解决当今工业生产中实时监控系统通信距离短和传输速率慢的问题,提出了一种基于CAN总线和ModbusTCP的远程监控系统方案。该方案以异构双核处理器F28M35x为硬件平台核心,移植了嵌入式实时操作系统μC/OS-II和LwIP网络协议栈,并开发了人机监控程序。实验结果表明该方案有效地实现了远距离、高速率的工业数据通信,达到了远程实时监控系统的各项要求。
F28M35x;实时监控系统;ModbusTCP;LwIP
引 言
本文提出了一种基于嵌入式实时操作系统μC/OS-II的采用ModbusTCP协议来实现远程实时监控系统的方案,有效地解决了工业应用中设备与监控系统通信速率慢、传输距离短的问题,并成功将其应用于武汉华茂工业自动化公司的印刷套色设备的远程监控系统中。
1 系统结构
本文采用的主控制器为TI公司生产的异构双核处理器F28M35x,该芯片双核由主系统ARM Cortex-M3核和控制系统TMS320C28x核组成,实际应用中,Cortex-M3内核主要负责数据通信、协议转换及操作系统的植入,TMS320C28x内核的浮点运算功能支持高效可靠的控制算法,双核间通过片上IPC(Inter-Process Communication)模块进行数据交互。本文中的监控设备采用HITECH公司生产的支持Ethernet通信的HMI设备PWS6800C。
本远程实时监控系统在运行过程中,系统现场套色设备各通道数据采集通过CAN总线协议传输给主芯片F28M35x,CAN模块将CAN邮箱里的数据取出来,分析计算后将核心参数交给协议栈进程,协议栈对该数据进行各层封装后再通过EMAC模块传输到以太网总线上,在监控设备和工业现场的控制板已经建立了通信的基础上,远程的HMI人机设备可以通过以太网实时获取套色设备的数据,达到远程监控的目的。工业现场的控制板为TI公司研发的以F28M35x为主芯片的开发板套件Concerto开发板。本系统整体原理图如图1所示。
图1 系统整体原理图
2 系统实现
系统的实现需要完成的主要任务有:嵌入式操作系统μC/OS-II在F28M35x上的移植、CAN协议在F28M35x上的实现、基于LwIP协议栈的ModbusTCP网络协议在μC/OS-II上的实现及上位机HMI触摸屏程序的开发。F28M35x软件设计结构如图2所示。
2.1 CAN协议在F28M35x上的实现
图2 F28M35x软件设计结构
CAN(Controller Area Network)总线协议目前已广泛应用于工业通信中,是一种自动化系统常用的多主方式的串行通信总线。CAN的标准报文帧结构如图3所示。
具体实现CAN协议的主要任务是CAN初始化函数和中断处理函数。CAN初始化函数需要对各寄存器配置来完成模块启动、位定时、邮箱参数、波特率设置、运行模式选择等任务,然后初始化函数打开内核级中断和子中断。中断服务程序完成的任务有检测中断来源、执行相关的数据提取和回应等。
图3 CAN的标准报文帧结构
本系统中,在CAN基本通信实现后,加入了定时查询报文,旨在获取套色各通道的节点状态。定时查询报文在200 ms定时中断服务程序完成,从节点会将自己的状态数据返回主站,主站再通过Modbus/TCP协议将此状态传给远程实时人机监控设备。
2.2 μC/OS-II在F28M35x上的移植
μC/OS-II是一个完整的抢占式多任务内核,执行效率高,占用空间较小,实时性能和可扩展性较强。其源代码完全公开,移植性很强,适合在各种微处理器上运行。μC/OS-II为每个任务赋予了不同的优先级,不支持时间轮转调度法。μC/OS-II提供了任务管理的各种函数可供移植者调用,包括任务的创建、删除、优先级翻转、挂起等。为了实现系统的各项功能,需要对任务进行划分。主要包括TCP/IP协议栈进程、CAN数据收发进程、以太网数据收发进程、I/O任务、时钟信号等任务。
移植过程中,主要实现的内容是与处理器相关的文件编写,包括C语言编写的OS_CPU.H和OS_CPU_C.C,以及汇编语言编写的OS_CPU_A.S。具体配置时,应注意配置参数TCP_NODELAY,该参数用于屏蔽NAGLE算法。NAGLE算法是将网络上的小包组成大包发出去,用于减少网络阻塞。监控系统中传输的数据包多为小包,为了提升实时性,即使小量的数据也应该及时发送。
2.3 基于LwIP开源网络协议栈的网络协议移植
这部分任务是本系统的核心部分,ModbusTCP协议是通过移植LwIP开源协议栈实现的。LwIP是由瑞士计算机科学院开发的一套开源TCP/IP协议栈,它只占用了几十KB的RAM和40 KB的ROM,是专用于嵌入式系统的协议栈。LwIP主要实现的模块有IP、ICMP、TCP、UDP和ARP,另外也包括IGMP、PPPoE和DNS等服务。
F28M35x开发板的EMAC模块为网络报文帧的收发模块,当有数据包发来的时候会触发以太网接收中断,中断子服务程序再通过μDMA(Micro Direct Memory Access)模块将接收的数据通过接收线程传给LwIP协议栈,协议栈再对接收的数据包进行分析、重组、挂起、丢弃等操作。其中μDMA模块为直接内存访问,数据直接传输而不需要CPU的参与,增强了数据传输的实时性和速率。EMAC模块接收到的以太网数据包结构如下所示。
以太网首部(14字节)IP首部(20字节)TCP首部(20字节)Modbus报文MBAP(7字节)功能码数据以太网尾部
数据报交由LwIP协议栈处理的流程图如图4所示。
图4 LwIP协议栈流程
图4中,netif结构为网卡参数结构体,结构体中的两个指针函数netif->input()和netif->output()分别为数据的以太网层的数据收发函数。接收到的数据包依次经过IP层和TCP层解析,检验校验和、协议类型、IP地址、端口号、序列号、连接状态、确认序号等是否正确,如果是正确的报文帧,LwIP就把它交给应用层处理。这些数据是一个带MBAP报头的Modbus报文,MBAP报头是Modbus/TCP协议定义的一个7字节的报头,包括2字节标识符、2字节协议码、2字节长度和1字节单元标识符,接下来是1字节的功能码和Modbus数据,应用层部分再作出相应回应。
发送数据时,应用层要发送的数据先被挂到TCP层的发送队列,执行函数为tcp_enquene()。在符合窗口滑动协议和拥塞控制协议情况下,将数据进行TCP头部封装后发送至IP层,IP层封装了IP头部后,再在arp缓存表寻找有没有符合目的IP地址的MAC地址。若有则调用netif->output()函数将数据包发送出去,若没有找到则发送ARP请求获取目的MAC地址后再发送数据。
移植过程需要将LwIP移植于μC/OS-II操作系统上,LwIP中需要使用信号量进行通信,所以在sys_arch中应实现相应的信号量结构体struct sys_semt、处理函数sys_sem_new()、sys_sem_free()、sys_sem_signal()和sys_arch_sem_wait()。μC/OS-II已经实现了信号量OSEVENT的各种操作,只需要稍作修改直接调用就可以了。另外,LwIP通过消息队列来缓冲、传输数据报文,因此需要实现相应的消息队列结构和操作函数,在μC/OS-II中需要通过其内存管理模块实现对消息的创建、使用、删除和回收。μC/OS-II中没有线程(thread)的概念,因此移植时还需要在μC/OS-II中创建新线程函数,并为其分配好优先级。
3 测 试
本次实验套色盒子和仪器设备均为武汉华茂工业自动化公司设备,人机监控设备使用的是HITECH公司生产的支持网络通信的HMI设备PWS6800C,该人机设备程序的编写使用的是专用于人机程序编程的软件ADP6.5。在该软件的工程参数设定中,选择通信方式为Ethernet通信,人机类型为网络型,PLC种类为ModbusTCP/IP master。
本次实验中人机设备接入路由器的网络,该路由器IP地址为183.94.7.80,人机设备本机IP地址设为子网地址192.168.101.100。本公司有5M静态IP网络,将F28M35x板子接入该静态IP网络,静态IP地址为113.57.163.146。程序中本地IP地址填为路由器子网IP:192.168.101.72,并在路由器设置界面的协议转换选项中建立好映射192.168.101.72对应于端口号502。人机程序软件设定中将目的IP地址和目的端口号填为之前设定的静态IP113.57.163.146和502端口。8个套色盒子通过CAN总线连到F28M35x上,然后上电系统开始正常工作。实验中在系统运行后断开通道4、6、7三个通道的总线,监控系统显示如图5所示。
图5 监控系统显示图
检查各通道参数,与工业现场控制计算机所存储的参数一样。通过实验表明,系统准确地完成了远程实时监控任务,功能强大,可扩展性强,使得工业监控不再有地域的限制,工业设备调试未来也可通过远程实现。
结 语
[1] Labrosse Jean J.嵌入式实时操作系统μC/OS-II[M]. 北京:北京航空航天大学出版社,2003: 40-153.
[2] 王庆双. 基于ARM的CAN通讯系统的设计与实现[J]. 航空电子技术,2011,42(1):9-13.
[3] 王海,张娟,朱晓阳,等.TCP/IP协议族[M]. 北京:清华大学出版社,2011:300-319.
[4] 司马莉萍. 基于ModbusTCP协议的工业控制通讯[J]. 计算机应用,2005,25(12):29-31.
[5] 李素侠,段友祥. 嵌入式TCP/IP协议的分析与研究[J]. 微计算机信息,2005(21):52-54.
[6] 王力生,梅岩,曹南洋. 轻量级嵌入式TCP/IP协议栈的设计[J]. 计算机工程,2007,2(33):246-248.
[7] 景柏豪,沈孟良.CAN-Modbus/TCP协议转换的设计与实现[J].计算机工程与设计,2013,5(34):2-6.
李昕泽(硕士研究生),研究方向为嵌入式系统开发、以太网通信及其他工业通信;邓中华(博士生导师),研究方向为嵌入式系统研究、自动控制原理、计算机网络等。
An Industrial Implementation of Remote Real-time Monitoring System
Li Xinze1, Deng Zhonghua2
(1.Huazhong University of Science & Technology, Wuhan 430074,China; 2.Huamao Industrial Automation Company in Wuhan)
In order to solve the problems of short communication distance and low transmission rate in nowadays' industrial production, the paper proposes a remote real-time monitoring system based on CAN-Bus and ModbusTCP. In this program, the heterogeneous dual-core processor F28M35x works as the core of hardware platform, it transplantes embedded real-time operating system μC/OS-II and LwIP network protocol stack, and the HMI monitoring program is developed. The experimental results show that the programs effectively achieves long-distance, high-speed data communications of industry,and reaches requirements of remote real-time monitoring system and remote real-time monitoring system requirements.
F28M35x; real-time monitoring system; ModbusTCP;LwIP
TP368.1
A
迪娜
2013-07-29)