单芯片嵌入式网关在煤井下人员定位中的应用
3 软件实现
嵌入式网关的软件系统完成系统的协议转换以及wEB服务器的构建,基于TCP/IP的网络协议栈有很多,但是针对嵌入式系统,必须考虑到硬件和软件资源,从而需对其进行精简使之应用于嵌入式系统。考虑到硬件资源和软件的开发,本文选用了源码开放的OpenTCP协议栈,该协议栈由芬兰的Viola Systems公司开发,实现了大多数的基于vIP4的网络协议,如HTTP,DHCP,SMTP,TFTP,TCP/IP,DNS,ARP,ICMP等协议,并由美国的SourceForge公司根据NE64的硬件资源将其移植过来,实现了在16位低成本嵌入式系统上的网络化。本文根据项目的需要,只移植了HTTP,TCPUDP,IP,ARP,ICMP协议,程序的流程如图5所示。
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/152410_2_0.jpg)
3.1 基于TCP服务端和客户端的建立
基于TCP服务器端和客户端程序是本设计的主要应用程序,负责整个定位数据的传输。考虑到上位机主监控软件的设计,本文采用OpenTCP协议栈提供的API函数来建立TCP服务程序。在程序中,远程主控端可以通过客户端程序主动拨号与本网关设备的服务器端建立连接,并获取基站人员定位信息;如果该网关设备中已存放有大量数据(取决于本地存储器),那么它将通过本地客户端主动拨号与远程主控端服务器建立连接,并上传数据。
服务器端程序包括初始化函数void tcps_init(void)、主回调函数void tcps_run(void)以及事件监听函数INT32 tcps_eventlistener(INT8,UINT8,UINT32,UINT32)。客户端程序类似于服务器端程序,由于篇幅所限,本文仅列举了服务器端的初始化函数:
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/152410_2_1.jpg)
3.2 其他网络协议的实现
其他网络协议包括嵌入式WEB服务器、UDP、ARP协议、DNS协议以及ICMP协议。WEB服务器是基于HTTP网络协议而构建的,在本文主要用来实现系统参数的查询和设置,包括TCP的套接字的初始化、HTTP的初始化以及HTTP回调函数。基于UDP的数据传输是该网关的扩展功能,运用于大量数据传输,并且某些数据可以被丢掉的,如将该网关运用在井下人员的语音传输系统中。由于篇幅所限,对于ARP协议、DNS协议以及ICMP协议本文不再详细讨论。
3.3 RS 485以及RS 232数据传输
RS 485和RS 232是该网关设备与井下人员定位基站通信的主渠道,软件设计主要包括两部分:初始化和数据通信。初始化程序主要设置通信波特率以及有关的状态,数据通信主要包括串口中断处理(发送和接收)以及对收到的基站数据处理(转发远程主机某些命令、通过以太网发送人员信息等)。
在现场安装了5个网关设备,每个网关分别连接6台基站,安装距离最远为600 m。PC机端的主控软件用VC++6.0设计,主界面包括简单服务器和客户端拨号程序。以太网采用自动协商协议,网速为100 Mb/s。以太网数据缓冲区设置为1 kB,实际上有用的字节数为804 B,除去数据长度、校验和一些特殊信息,最后可用的最大字节数为796 B,即一次传送的最大数据量为796 B。经验证该网关可以同时满足6台基站波特率在9 600 b/s的满负载情况下工作。
5 结 语
基于单芯片的MC9S12NE64的嵌入式以太网网关,完成了光纤环网到井下基站的数据转换,实现了低成本、高速率的嵌入式WEB服务器、简化的基于TCP服务器和客户端用户应用程序以及UDP的数据传输的系统。该网关可以广泛应用于工业生产和其他控制领域,实现小型工业网络监测系统,具有良好的应用前景。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论