基于工业以太网的数据采集方案实现

摘 要:针对工业数据采集领域的现状,提出一种新的基于工业以太网的数据采集方案,在工业过程控制中实现基于Socket套接字的实时数据通信。介绍了Socket套接字的基本概念和工业以太网技术的最新发展,采用基于Rabbit2000高性能单片机扩展的带有以太网通信接口的核心模块BL2100及其所时应的Dynamic C开发环境,实现了基于Socket套接字的工业以太网数据通信,并且给出了比较详细的流程。系统已经有数十套成功地应用于实际生产中,满足了工业数据通信要求的实时性和准确性。 关键词:工业数据通信; Socket; 工业以太网 1 引言 工业过程控制中需要测量和控制的变量很多,以往基于PC机外接的数据采集卡,采集的点数有限,而且要直接和PC机的串口或者并口相连,极大限制了PC机资源的充分利用。工业以太网的出现为构成开放式的模块化的数据采集奠定了基础,本项目开发一个基于工业以太网的嵌入式智能模块的开放式数据采集系统。以太网是目前应用最广泛的网络,它不但应用于商用网络,同时在近年来大举进军工业控制领域,取得了巨大的经济效益。以太网最初得到应用时,它采用带有冲突检测的多路载波侦听协议(CSMA/CD)和二进制指数回退算法[1]。在这种协议和算法下,当网络繁忙时,它的非实时性和不确定性大大增加。因此,以太网在很长的一段时间只能用于对实时性和确定性要求不是很高的办公网络,它在工业数据通信领域的应用受到很大限制。随着交换技术和全双工数据通信技术的发展,工业以太网已经大大提高了在数据通信中的实时性和确定性,而且在许多工业领域得到成功应用。 2 以太网用于工业数据通信的技术基础 以太网的交换技术和全双工通信技术的支持。以太网的交换技术由原先的端对端的网桥连接发展到了现在的以太网交换机。在数据发送的过程中,目前广泛应用存储转发技术,先把输入端口的数据包存储起来,然后进行CRC检查,在对错误包处理后才取出数据包的目的地址,通过查找表转换成输出端口送出包[2]。正因如此,存储/转发方式在数据处理时延时大,这是它的不足,但它可以对进入交换机的数据包进行错误检测,尤其重要的是它可以支持不同速度的输入输出端口间的转换,保持高速端口与低速端口间的协同工作。 全双工(Full-Duplex)技术也是随着以太网技术的发展而被广泛地用于以太网交换机的。现在各大厂家都有基于IEEE802.3X全双工通信协议的机型,这种交换机集成了目前以太网技术的最新成果。有了交换技术和全双工技术的支持,以太网的不确定性和实时性差的确定得到很大的改观,在工业数据通信领域得到了众多厂商的认可。 网络单片机的发展和相对应的软件开发环境随着以太网通信技术的进步,各大厂商纷纷推出基于嵌入式以太网的处理器,本系统所用的Rabbit2000就是其中的一种。Z-World公司推出的BL2100核心模块使用了Rabbit2000处理器,它是专门应用于嵌入式领域的以太网通信智能模块,支持各种网络协议(如TCP,HTTP,FTP,SMTP,PPP等),开发过程中使用的是基于TCP/IP协议的Socket编程系统[3]。对应于硬件配置,Z-World公司提供了相应的软件开发环境,即Dynamic C语言,它去掉了普通C语言中不符合实时性要求的部分,加入了适用于实时控制的功能,提供了众多功能丰富的函数库,包括数学函数库、I/O函数库、串口通信函数库、数据采集和数据输出函数库,还有基于各种网络协议的网络通信所需要的函数库[4]。BL2100在系统编程(ISP),程序开发调试方面非常方便。 3 系统的总体设计 系统设计为三层的网络结构,最上层为PC监控机,中间层为网络通信模块BL2100,现场层为MSP430智能控制节点。 PC机和BL2100之间的通信是基于工业以太网,BL2100和MSP430之间的通信是用RS-485总线来实现的。 监控PC机采用组态软件开发出相应的监控界面,可以实现多种多样的数据处理功能,包括历史数据存储、实时数据动态显示、报警信息输出等。同时操作人员根据不同的控制要求可以发出不同的控制命令。BL2100网络模块带有工业以太网接口和RS-485接口,多个网络模块可以通过以太网交换机来连接PC监控机,在局域网内可以充分利用丰富的IP地址资源而不受外网的限制,适合于工厂内部环境。MSP430智能节点主要作用是接收采集命令,进行现场数据采集,通过RS-485总线。根据不同的硬件配置,可以在每条总线进行数据通信获得各个节点的采样数据,另一方面把数据处理打包以Socket套接字通信的方式发送给PC监控机。 系统结构示意如图1所示。 [align=center] 图1系统连接结构示意图[/align] 4 系统软件开发 网络模块程序总体框图如图2所示。 [align=center]OUT_TIME) {//超时处理 *state=3; …… } Case 2://发送数据 if(send_start=0)//是第一次发送数据发送全部的实时和非实时参变量 {sock_fastwrite(buff);//往发送缓冲区写入数据 send_start=1; } else if(send_start=1) {//只发送实时变量 sock_fastwrite(buff); *state=2; break; …… } Case3: sock_abort(sock);//关闭套接字 break; …… sock_err(…);//套接字错误处理 } 以上介绍的是网络模块向PC机发送数据的流程。但是这只是单方向的数据流动,如上所述,现在的工业以太网技术支持全双工的通信,即数据的双向流动可以完美地实现,基于此,现场的智能节点在不断向PC机发送采集数据的同时也可以随时接受来自PC机的控制信息及其对应的数据流。本文设计了相应的数据接收子程序。函数定义如下: UnRealTimeDataReceive (tcp_Socket *sock, long *buff, int *state, word my port) {…… Case2: sock_fastread(buff);//从接收缓冲区读取数据 …… } 参数的定义和接收子程序相比,只有在*state等于2时有所不同,此时网络模块接收数据,它根据缓冲区第一个数据获得所要接收的参数的索引号,将缓冲区第二个数据赋给具体的参数变量。还有一点要说明的是,工作人员进行监控操作,这个过程不是实时进行的,带有很强的随机性。因此控制信息流不是实时存在的,而是随机的,各个网络模块会不断地侦听网络来查看有没有对应本模块的数据包,如果有则进入接收子程序。 5 结束语 本文结合数据采集系统讨论了工业以太网在工业数据通信中的应用,介绍了在Dynamic C环境下基于TCP协议的Socket网络编程。本系统开发以后,用于一套皮革喷漆自动控制系统中,得到了成功的应用。实践证明,基于工业以太网的通信运行很稳定,延迟很小,在一台PC监控机同时和多台皮革喷漆系统连接工作的情况下,运行同样稳定,实时性和确定性都得到了有效的保证。可以预见,工业以太网在工业数据通信中的应用必将日益广泛,基于TGP/IP协议的Socket套接字通信方式作为实现的方法简单实用稳定,已经获得了大多数工业监控开发软件的支持。目前集管理和控制于一体的工业生产过程计算机集成控制系统(CIPS)正在快速地发展,工业以太网技术使CIPS进人工厂企业的步伐大大加快,这极大地促进制造业的信息化进程。 本文作者创新点:针对工业数据采集领域的现状,提出一种新的基于工业以太网的数据采集方案,采用基于Rabbit2000高性能单片机扩展的带有以太网通信接口的核心模块BL2100及其所时应的Dynamic C开发环境,实现了基于Socket套接字的工业以太网数据通信,并成功地应用于实际生产中,满足了工业数据通信要求的实时性和准确性。 参考文献 [1] 冯晔,冯忠义.基于Socket网络编程接口实现局域网视频传输的应用研究[J].微计算机信息,1998,14:5:17-20. [2] Tarerbaum A S.潘爱民译. Computer networks (fourth edition)[M].北京:清华大学出版社,2004. [3] Z-World Inc. Dynamic C premier for semiconductor microprocessors integrated C development system user’s manual[M]. California: Z-world Corporation, 1999. [4] Z-World Inc. Dynamic C TCP/IP user’s manual[M]. California: Z-world Corporation, 2001.

猜你喜欢