吕佩(国家知识产权局专利局专利审查协作广东中心,广东广州,510530)
基于优先级排队算法的改进型串口服务器设计
吕佩
(国家知识产权局专利局专利审查协作广东中心,广东广州,510530)
针对目前市场上的串口服务器都是单串口对单网口的结构,提出了一种多串口对单网口的接口服务器改进方案。以嵌入式单片机S3C6410和以太网卡DM9000搭建硬件平台,充分利用单片机的多个UART、嵌入式操作系统的多线程和多队列缓冲将接收到的多个串口数据排队,最后利用优先级排队算法进行数据处理。通过使用改进型串口服务器进行组网实验,表明利用优先级排队算法的方案具有可行性,单个的改进型串口服务器具备多个传统串口服务器的组网能力。
改进型串口服务器;UART;嵌入式系统;优先级排队算法
在目前的工业自动化控制应用中,越来越多的企业实现了生产过程的联网监控,信息化与工业化深度融合水平不断提高。网络上,设备之间数据通信基本上都是采用异步串行通信接口RS-232、RS-422、RS-485等,且通过相关通信协议将多个设备连接成底层传输与控制网络,但是网络的覆盖面积很小[1]。为使这些设备具备远程传输、扩大底层网络的覆盖面积,需要应用串口服务器(Serial Device Server,简称SDS)。串口服务器可以实现串行数据与以太网数据的相互转换,从而将串行设备控制网络与信息网络连接起来。SDS可以把分散的串行设备、主机等通过网络集中管理,可以很大程度地降低系统复杂性和提高系统的可扩展性[2]。目前市场上现有的各种SDS都是单串口对单网口的构造,如果要支持多总线,则必须使用多个单总线型SDS或者使用带有多串口、多网口的多总线型SDS。这样带来的问题是:成本增加、系统设计复杂、设备资源利用率不高,故此本文提出一种基于优先级排队算法的改进型串口服务器(Modified Serial Device Server,简称MSDS)。
串口服务器将分散的串口设备通过局域网或互联网集中管理,增强了系统的可扩展性和降低了系统的维护难度,只需每条总线连接到对应的串口服务器,控制系统只需围绕SPS进行开发,可以有效减少工作量。
本文设计的改进型串口服务器采用嵌入式单片机S3C6410和以太网卡DM9000搭建硬件平台,充分利用单片机的多个UART、嵌入式操作系统的多线程和多队列缓冲将接收到的多个串口数据排队,使用优先级排队算法进行数据处理。下面以实现RS232数据与以太网数据之间的转换为例,三串口到单网口的MSDS的工作原理如图1所示:RS232_1~RS232_3对应MSDS的三个串口,UART_1~ UART_3对应嵌入式单片机的三个异步收发器,TransverterThrea_1~TransverterThrea_3对应MSDS的三个是串口数据与以太网数据的转换线程,FIFO_Receive是串口端到以太网端的接收队列,FIFO_Send是以太网端到串口端的发送队列。Ethenet表示以太网单网口。如果嵌入单片机的UART支持RS485通讯方式,用该方案同样可以实现RS485总线数据与以太网数据的转换,区别在于串口端接口和设备驱动不同。
图1 MSDS工作原理
M S D S软件结构如图2所示,运行协议转换用户程序后产生线程TransverterThread1~TransverterThread3,这三个线程根据数据流向通过系统调用接口分别调用对应的设备驱动,如以太网转串口驱动和串口转以太网驱动,这两个驱动编写后可以直接编译到内核或通过命令安装的方式添加到内核。TransverterThread线程的产生的数量与MSDS设计的规模有关,由于本文改进方案使用三条串行总线,所以产生3条TransverterThread线程。
图2 MSDS软件结构
由于MSDS是多串口对单网口的结构,存在共享资源,需通过合理的调度,才能使MSDS正常地接收和发送数据[3]。考虑使用串口服务器组网的底层设备大多用在工业生产、安防等的重要场合,而一些对于生产安全和主要指标的参数,必须优先送达控制中心[5],从这个角度本文选择基于优先级排队算法处理底层设备到以太网之间数据的流通。
优先级排队算法(简称PQ算法)是按照优先规则为队列服务的,规定从具有最高优先级的非空队列的头部选择包[6]。为了保证关键业务运行,在拥塞发生时,优先处理关键业务。预先根据网络协议、数据流入口、源地址/目的地址等制定好控制策略,PQ算法处理数据队列的优先顺序就可以确定[7]。将队列按优先级高低分为四级,而在优先级缺省的情况下数据流入正常队列。
PQ算法的原理如图3所示,其中:1高优先级数据,在调度分类时进入了高优先级队列,依此类推,2、3、4号分组在调度时分别进入为中优先级队列、正常优先级队列以及低优先级队列。遵循先进先出(FIFO)原则,由高到低依次处理四个优先级队列的数据[8]。
图3 PQ算法原理图
为验证串口服务器改进方案的可行性,使用现成的嵌入式开发板进行二次开发的方式实现MSDS,而无须从头到尾设计硬件电路。采用的嵌入式开发板是国嵌QK6410,其处理器是三星公司32位RISC处理器S3C6410,有4个UART和1个网口,所以该开发板可二次开发为3串口对单网口的MSDS,如图4所示,只需使用QK6410核心板、DM9000以太网卡和三个串口就足以满足MSDS的硬件需要。
图4 使用QK6410核心板扩展串口的MSDS
国嵌QK6410开发板支持ARM-Linux2.6操作系统,Linux2.6内核支持多线程和具有丰富的网络协议栈。使用国嵌提供的Linux2.6内核可直接烧写到QK6410的Flash中,而且该内核提供了串口驱动和DM9000以太网卡驱动。MSDS软件的开发流程为:
(1)配置和编译ARM_linux 2.6内核,配置和编译过程中,取消不需要的驱动;
(2)构建应用于ARM-linux的根文件系统;
(3)将启动引导程序Uboot移植到的MSDS板子上;
(4)在linux主机上开启tftp和nfs服务,利用tftp服务可将ARM-linux内核映下载到MSDS板的内存中,ARM-linux的根文件系统通过NFS服务挂载到linux主机,使开发过程得到了简化;
(5)编写以太网转RS232和RS232转以太网的设备驱动程序,以加载的方式,把它们放到ARM-linux内核中;
(6)编写协议转换应用程序,通过系统调用接口调用驱动程序。
从以上的开发流程可以看出:编写以太网转RS232和RS232转以太网驱动程序和协议转换应用程序是实现MSDS软件功能的主要步骤。因为国嵌提供的Linux2.6内核已经实现了串口驱动和DM9000以太网卡驱动,所以实现以太网转RS232 和RS232转以太网驱动程序相对简单,定义设备操作时只需结合串口驱动和DM9000以太网卡驱动,如图5所示。自定义Dev结构体可作为串口数据与以太网数据转换时过渡数据,其结构如表1所示。
图5 接口转换驱动
表1 Dev结构体
对于用户,直接接触到的是协议转换用户程序,在该程序中,首先初始化MSDS的运行参数,然后建立线程TransverterThread1~TransverterThread3,在TransverterThread线程中主要通过调用接口转换驱动实现了串口和网口数据首发的功能,其中收发的数据根据数据传输方向分别放入Dev结构体队列FIFO_Receive和FIFO_Send中。TransverterThread线程的工作原理如图6所示。
图6 TransverterThread线程的工作原理
S3C6410有4个UART,利用其中三个配置成MSDS的三个RS232通信接口,设计成三串口对单网口的MSDS。使用三块51单片机开发板(设备A、B、C),作为下位机设备,实验组网如图7所示。通过组网对比发现,单MSDS模式的网络连接明显比多SDS模式要简洁,系统的可维护加强。单MSDS模式,开发工作只需围绕一个MSDS展开,极大地减小了设计的工作量;而多SDS模式,要同时设计多个SDS的收发过程。
每块设备以9600的波特率分别经3个SDS和1 个MSDS向上位机传送1MB的数据。以轮寻的方式每次发送一个字节,每个设备都轮寻1024次,所以上位机能接收到1024*3个字节。MSDS的组网性能可通过数据传输的流量曲线进行分析,两种模式下数据传输流量的对比如图8所示。
图7 组网实验
图7 组网流量对比
两种模式下传输1024*3个字节的数据,所用的时间相近,而且两条曲线有非常高的拟合度,说明基于优先级排队算法在数据传输过程中发挥了作用。单MSDS模式在传输的过程中,流量总会稍微落后于多SDS模式,这是要是受限于硬件和线程处理速度,但能在节约成本的前提下能满足传输需求。
通过组网对比实验发现改进型串口服务器处理传输数据的速率非常接近传统的串口服务器的处理传输速率,单个的改进型串口服务器的具有多个传统的串口服务器的组网能力。在实验结果中还可以看出优先级排队算法在数据处理传送环节发挥了作用,在软件上弥补了硬件的不足。单MSDS模式设计的工作量显著减小。以嵌入式单片机S3C6410和以太网卡DM9000搭建硬件平台,充分利用单片机的多个UART、嵌入式操作系统的多线程和多队列缓冲将接收到的多个串口数据排队,利用优先级排队算法进行数据处理的串口服务器改进方案,可以有效的降低成本、简化系统设计、提高设备资源利用率。
[1]周超. 基于Cortex-M3的以太网串口服务器的设计与实现[D].武汉理工大学, 2012.
[2]范永刚, 刘绍方, 董晶,等. 基于ARM的高性能串口服务器的研究与实现[J]. 计算机工程与设计, 2012, 33(4):1378-1384.
[3]李毅. 嵌入式串口服务器的设计与实现[D]. 北京交通大学,2012.
[4]闾军, 成爱国. 一种低成本串口服务器的设计[J]. 电子设计工程, 2014(14):190-192.
[5]王海勇. 基于ARM9的嵌入式多串口服务器设计[J]. 化工自动化及仪表, 2013, 40(3):372-376.
[6]罗宁, 刘峰. 基于优先级队列的多约束无线链路资源调度算法[J]. 指挥控制与仿真, 2012(6):55-59.
[7]范珊珊, 李石君. 基于优先级队列的分布式多主题爬虫[J]. 计算机工程与设计, 2015(6):1630-1636.
[8]蒋溢, 聂路雨. 基于动态权值优先级队列的移动消息推送策略[J]. 计算机工程与设计, 2013, 34(10):3520-3524.
吕佩(1986-),女,湖北黄冈,工学硕士,实习研究员。
E-mail: zhangzhao281@126.com
Design of Modified Serial Device Server Based on the PQ Algorithm
Pei Lv
(Patent Examination Cooperation Center of the Patent Office, SIPO, GuangZhou, GuangDong, 510530, China)
The structure of the serial device server is a single-serial port to a single-network-port on the market at present, considering this point a improvement project of the serial device server is proposed in this paper which is a kind of multiple-serial port to a single-network-port. We use the embedded microcontroller S3C6410 and Ethernet card DM9000 building hardware platform, take full advantage of the multiple UART of microcontroller, the multithreading of embedded operating system and multiple queue buffer to line the received data of serial, and use priority queuing algorithm for data processing finally. By using modified serial device server for network experiments, it suggests that the project using the priority queue algorithm is feasible. A modified Serial device Server has the networking ability as same as multiple the traditional serial device server.
Modified Serial Device Server; UART; Embedded System; PQ Algorithm
TP303
A
2095-8412 (2016) 03-422-05
工业技术创新 URL: http//www.china-iti.com 10.14103/j.issn.2095-8412.2016.03.025