基于嵌入式系统的协议转换器
【摘要】为了将遵循不同协议的设备接入工业以太网,通过基于嵌入式系统的协议转换器将不同格式的信号转化成所需信号,使设备和工业以太网之间能进行快速、透明的通信。通过加入协议转化器,简化了系统的硬件复杂度,提高了系统的集成度,取得了经济效益。
【关键词】工业以太网;嵌入式系统;协议转换
在大型工业控制系统,军事和航天系统,智能家居管理系统等较为复杂的系统中,许多情况下系统中存在着大量遵循不同协议的设备,例如遵循rs232、rs485、udp、tcp/ip等协议的设备共同存在于系统中。多种协议并存时,要求系统能识别不同的协议信息,通过控制和处理不同格式的信息实现系统正常工作,这样就加大了系统软件和硬件上的复杂度,减缓了系统的响应速度。而近几年随着以太网的不断发展,工业以太网技术日趋成熟。通过以太网,可以用一条单一网线取代众多的连接线,系统中的独立设备和独立小系统都可以通过这条网线联网。并且系统中一旦建立了以太网连接,在以太网能实现高速数据传输的基础上,数据的传输,设备的控制和功能测试就成为一件非常简单的事情。用户可以通过终端计算机上的可视化窗口,通过以太网快速简单的控制整个系统,用户还能够完全访问计量数据、诊断值,配置参数和查看故障信息等,通过互联网,还可以实现远程数据共享。它在实际现场工程中还具有的优势就是传输距离远,抗干扰能力强,能节省大量的劳动力和材料成本等。
以太网获取遵循不同协议的信息时,必须把其他格式的信息转化成以太网能识别的协议格式提供给终端计算机,同时系统还需要把以太网信息转换成各种设备所能识别的信息格式。为简化系统连接,实现系统中各部分的独立性,我们可以通过设计协议转换模块完成此项工作,即利用协议转换模块将系统中不同设备或是小系统获取的信息快速转换为所要求的信号形式,即遵循相应的协议、格式,通过工业以太网传送给远程计算机,同时,远程计算机的控制信息也可以转化成相应格式的信息传送给设备。市场上现有的协议转换模块很少,而且大部分基于单片机系统,处理能力有限,速度慢。在唐山华强钢铁公司轧钢车间的设备改造中,我们通过基于嵌入式处理器s3c4510b的协议转换模块将现场的3路rs485信号,1路rs232信号,1路iic信号,9路i/o信号转换成以太网信号传送给计算机,同时,将计算机传来的以太网信息转化成现场设备所需的信号,控制现场设备。这样就在终端计算机和现场设备之间建立起了直接的、透明的、简单的联系。
考虑到转换速度,信息流量、设计难度等因素,我们采用了嵌入式系统来实现协议转换模块。主处理器选用三星公司的s3c4510b,s3c4510b是一款优秀的网络控制器,内含一个由arm公司设计16/32位arm7tdmi?risc处理器核,主频可达50mhz。arm7tdmi为低功耗、高性能的16/32核,最适合用于对价格及功耗敏感的应用场合。s3c4510b内嵌一个以太网控制器,可在半双工或全双工模式下提供10m/100mbps的以太网接入。他的外围功能模块还包括:2个uart通道,2个gdma通道,18个可编程i/o口,iic接口,片内带有sdram控制器和flash控制器。特别适用于嵌入式以太网应用的集成系统。
系统中的电源电路、晶体振荡器电路、复位电路和jtag接口电路组成了s3c4510b的基本系统,保证微处理器可靠的工作。在系统的电源电路中,s3c4510b及部分外围器件需3.3v电源,另外一部分器件需要5v电源,为简化系统电源电路的设计,整个系统的输入电压为5v直流稳压电源。选用linear technology公司生产的lt1085ct-3.3型dc-dc变换器,得到3.3v输出电压。在系统中使用了有源晶体振荡器,根据s3c4510b的最高工作频率及pll电路的工作方式,选择10mhz的有源晶体振荡器,其频率经过s3c4510b内部pll电路倍频后,达到50mhz。选用imp公司生产的imp708tcsa型复位电路,它具有1个手动复位输入引脚和2个复位输出引脚(高电平有效引脚和低电平有效引脚各1个),能实现电路的有效复位。采用14针的jtag接口用于芯片内部测试及对系统进行仿真、调试。
作为程序存储器的flash芯片中要保存bootloader程序, linux内核,文件系统,协议转换应用程序和一定数量的记录信息,结合成本因素和升级考虑,采用16mb的flash存储芯片(k9f2816uoc,16mb,16位,samsung公司)。数据存储器采用2片8m、16位的sdram芯片(hy57v641620)并联成32位sdram芯片,用以提高系统处理速度。同时较大容量的数据存储器能存储更多的临时数据,加速程序的运行。
外部的rs232信号经过max232 连接到s3c4510b的一个uart接口,另一个uart接口通过成都思普科技的uart 多串口扩展芯片sp2327dp可扩展为三个uart 串口,然后通过rs485芯片与3路rs485信号连接。因为s3c4510b内嵌一个以太网控制器,所以在该设计中,使用dp9161作为以太网的物理层接口。dm9161是一款低功耗、高性能的cmos芯片,支持10m和100m的以太网传输,它主要起编码、译码输入和输出数据的作用。外部的iic信号和i/o信号通过光电隔离器件接入处理器芯片。
操作系统采用嵌入式uclinux操作系统, uclinux从linux2.0/2.4内核派生而来,是专门针对没有mmu的cpu的一个高度优化的,代码紧凑的嵌入式linux,保留了linux的大多数的优点:稳定、良好的移植性、优良的网络功能、标准丰富的api等。bootloader由mizi公司的vivi编译生成,采用jeffs2文件系统。
在uclinux操作系统中,通过vfork()函数创建多个进程,主要为tcp/ip格式数据与其他格式数据转换进程,网络数据读写进程,uart0 和uart1读写进程, iic数据读写进程,i/o数据读写进程等。数据转换进程把不同读写进程的数据读入,通过自动识别,按要求转换成相应格式的数据,在通过相应的读写进程将数据传输出去。
在对各种协议格式深入了解的基础上,数据格式转换进程的编写相对简单,但代码比较长。除网络驱动编写较为复杂外,其余各个接口的驱动编写也很简单,而且网络上由很多参考范例。网络应用是处理器s3c4510b的一大亮点,也是嵌入式系统未来的应用方向之一。在嵌入式uclinux操作系统中,提供了socket(套接字)的api调用,所以实现网络协议——tcp/ip 在uclinux下变得较为简单。我们在ip层,实现了internet协议代码,通过这些代码给传输的数据加上一个ip头,并且把传入的ip包送给tcp协议。在ip层以下是网络设备来支持所有的linux网络工作,不需要我们参与。我们选用流式socket实现tcp服务, socket是一种文件描述符,具有一个类似文件的函数调用socket()。该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket函数实现的。uclinux中socket编程中用到的函数有:(1)socket函数:指定期望的通信协议类型;(2)connect函数:tcp客户用connect函数来建立一个与tcp服务器的连接;(3)bind函数:函数bind给套接口分配一个本地协议地址;(4)listen函数:侦听套接字,侦听客户机连接请求;(5)accept函数:完成实际的连接,如果连接成功,返回一个新套接字的描述符。(6)close函数:释放和套接字相关的系统资源;
一旦协议转换器套接字和远程计算机套接字建立连接,双方就可以通过send()和recv()函数的调用来发送和接收数据了。并且我们采用的流式套接字提供了一种可靠的面向连接的数据传输方法。产品调试成功应用于现场后,简化了设备的安装,通过一定的屏蔽措施,系统运行一直非常稳定,连续8个月来未出现通信故障,而且也方便了系统的调试与维护。由于整个生产线数据量不是很大,系统地响应时间很短,完全满足了系统地运行要求。轧钢车间通过在整个系统中加入协议转换器,优化了整个系统地运行,取得了一定的经济效益。
参考文献
[1]craig hollabaugh著,陈雷,钟书毅,等译.嵌入式linux——硬件、软件与接口[m].北京:电子工业出版社,2003.
[2]samsung公司. s3c4510 risc microprocessor reference manual.
[3]李驹光.arm应用系统开发详解[m].北京: 清华大学出版社,2004.
[4]孙天泽,袁文菊,张海峰.嵌入式设计及linux驱动开发指南[m].北京: 电子工业出版社,2005.
上一篇:计算机在儿童保健系统管理中的作用