【摘要】: 近年来,伴随物联网系统在物流、交通、零售领域的广泛应用,物联网的下一个阶段---"物体互联"时代即将到来,传统行业如安全控制领域、工业控制领域、医疗电子领域中大量使用的串口设备急待接入以太网。本文设计并实现的串口联网服务器与系统是串行设备与以太网之间的桥梁,是一种性价比高的解决方案。
1. 引言
传统行业中, 特别是工业控制领域大量设备采用RS232 或RS485 串口与主机通讯,比如:数控机床、数字水表、数字电表、基于字符界面的串口终端等。串口通讯中距离短、速率低是这一类设备的主要缺点,无法进行集中、远程管理。本项目的研究与开发旨在为工控领域的串行设备接入以太网、互联网提供全面的解决方案。行业用户在不浪费原有设备资源的基础上,通过架设串口联网服务器就可以把原有的串行设备无缝接入以太网、互连网,实现集中控制、远程控制,并能使所有设备共享主机资源, 大大节约了人力成本和时间成本,提高了生产率。
2.系统性能
串口服务器是一款数据通讯产品, 不仅要求硬件平台性能高、功耗低,而且对稳定性、可靠性要求极高,机器必须7X24 小时连续工作, 硬件平台上需要集成看门狗电路,防止系统死锁。结构上要求体积小巧,美观。软件上要求依托成熟稳定的操作系统为平台,定制串口驱动、网络驱动,改造硬件中断优先级,提高系统的实时性。系统软件平台需要同时支持TCP/IP、FTP、TELNET、HTTP 协议。上层应用是串口服务及网络服务程序,需要设计完善的进程通讯机制,实现串口数据到网络数据之间的转发,要求各串口独立工作,互不干涉, 每个串口工作在115.2KBPS 速率下不需要流量控制。用户要求能够通过本地端口、网络、Web 等方式对串口服务器进行参数配置, 能够通过集中管理软件监控机器运行状态,并能对代码进行升级,要求维护、安装方便。
3. 硬件设计
为提升性能, 在实际设计过程中我们需要完全控制串口和网络的底层信号,提高整个系统的实时性,我们选用了性价比更高一点的X86 兼容平台RDC 公司的R8610,主频柯达150Mhz,另外,此平台下编程及汇编比较容易上手,可以加快产品的上市周期,硬件平台的主要性能指标如下表:
硬件结构框图如下:
图1 硬件平台结构框图
4. 软件设计
4.1 内核定制与驱动设计
操作系统选择ucLinux,ucLinux 在工业控制领域性能卓越。由于其代码精炼,系统消耗小,效率更高。设计过程中,我们将ucLiux 进行了彻底的定制,只保留了与R8610 相关的代码,集成文件系统、任务调度、进程管理和TCP/IP 模块, 整个代码控制在500K 以下,运行效果相当稳定。
驱动程序设计上,我们重点实现winbond 83977 串口扩展芯片的驱动, 在linux 代码8250.c 的基础上设计我们自己的驱动, 针对串口扩展芯片特性设计了硬件缓冲中断机制, 当硬件缓冲到达设置参数(FIFO_SIZE_1、FIFO_SIZE_4、FIFO_SIZE_8) 规定的字节数,或者判断没有后续字节到达时发出中断,这样可以大大提高串口数据读写效率。网络驱动针对DM9008芯片特性定制,充分发挥DM9008 全双工属性,提高网络数据交换效率。
4.2 应用服务程序设计
应用程序基于ucLinux 操作系统设计,主要设计了两线程,串口服务线程和网络服务线程,这两种线程是成对出现的,彼此之间通过两个队列serial_queue和tcpsrv_queue 完成数据共享与交换,主要工作流程如下:
(1) 串口线程tcp_ser_proc()侦听串口,接收数据,然后发送到tcpsrv_queue 队列的数据链上; 同时监测serial_queue 队列,如果有数据则发送到对应的本地串口。
(2) 网络线程tcp_srv_proc()侦听网络连接请求,建立连接,接收网络数据,完成解包,发送到serial_queue 队列上;同时监测serial_queue 队列,如果有数据则发送到TCP/IP 远端控制节点。
图2 软件系统架构图
5.系统测试
使用传统串口字符终端, 与串口服务器通过串口连接,后台Linux 系统与串口服务器通过网络连接,服务器中设置远端主机为Linux 系统的IP 地址,当串口服务器开机的时候直接通过Telnet 协议连到Linux 系统上,串口终端就能够出现login 登录画面,如同串口终端直接连到网络上一样, 可运行服务器上的后台应用;服务器上的程序也可以直接对串口操作。系统测试性能良好。
6. 结论
本文设计的串口联网服务器,具有操作维护方便、可靠性高、性能稳定等优点,能够将工业控制领域、金融领域等大量使用的串口设备直接连到网络, 可有效通过管理程序对设备进行远程、集中管理,提升了设备适应网络的能力,具有很好的市场前景。
[1]. RS232 datasheet https://www.dzsc.com/datasheet/RS232+_585128.html.
[2]. RS485 datasheet https://www.dzsc.com/datasheet/RS485+_585289.html.
[3]. DM9008 datasheet https://www.dzsc.com/datasheet/DM9008_264483.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。