CN103166971B - 一种多路复用串口协议转换方法 - Google Patents
一种多路复用串口协议转换方法 Download PDFInfo
- Publication number
- CN103166971B CN103166971B CN201310085437.5A CN201310085437A CN103166971B CN 103166971 B CN103166971 B CN 103166971B CN 201310085437 A CN201310085437 A CN 201310085437A CN 103166971 B CN103166971 B CN 103166971B
- Authority
- CN
- China
- Prior art keywords
- data
- verification
- query statement
- port protocol
- serial port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本发明提出一种多路复用串口协议转换方法,包括:从上位机获取查询指令;串口协议转换器根据动态链接库函数对查询指令进行校验,判断校验成功后的查询指令是否存在于指令缓冲区,如存在,则判断该查询指令在指令缓冲区是否存在有效的返回结果并将返回结果发回上位机;若不存在则将该查询指令存放于指令缓冲区;串口协议转换器根据查询指令的优先级依次发送到串口设备,发送校验后的查询指令至串口设备,串口设备响应查询指令并返回结果;根据动态链接库函数对返回结果的有效性进行校验,将校验成功的返回结果存储于指令缓冲区;并根据指令缓冲区的状态定义判断是否将返回结果发送至上位机。本发明准确性高,速度快。
Description
技术领域
本发明涉及串口设备,特别是指一种多路复用串口协议转换方法。
背景技术
在机房动力环境监控系统或者类似的系统的数据采集应用环境中,对I/O数据采集器、电源设备、智能空调、门禁控制器等被监控对象的串口数据采集,通常采用“串口协议转换器”将被监控对象的串口数据转换成IP数据格式,然后通过串口协议转换器的以太网端口上传至上位机监控系统。
但是现有的串口协议转换器由于在某一时间段内仅能接收和处理一条上位机发送的指令,因此假如多台上位机同时通过串口协议转换器对接入的同一串口设备(被监控对象)进行数据采集,则会存在以下问题:
1、可能出现多条不同上位机的指令粘连或交错在一起,通过“串口协议转换器”汇集后形成一个数据包由串口发往串口设备,串口设备将无法识别指令,造成上位机系统发出的指令无法响应。
2、即使多台上位机系统发送的查询指令能依次到达串口设备,串口设备亦能够识别多条查询指令并返回结果,但“串口协议转换器”会将全部的指令应答结果上传到所有的上位机系统,单一上位机得到的将不只是自己所发出指令的应答结果,而且包含其他上位机的应答结果,需将不属于本上位机的应答结果剔除,这将造成上位机数据检验难度增大或造成数据错乱现象出现。
3、如果串口设备使用的是RS485接入模式,发送不进行流量控制和无时间间隙的数据,会导致总线死锁,整条485总线的所有串口设备的数据采集将中断。
4、多台上位机通过同一“串口协议转换器”对同一串口设备进行数据采集,由于串口通讯链路有响应慢,传输速率低的特点,多台上位机使用串口协议转换器采集数据的响应速度会比单机采集慢,极端情况下,会造成响应速度和数据采集性能不能满足上位机系统的需求。
5、目前市面上的通用“串口协议转换器”虽然允许不同的上位机系统连接并采集数据,但此类“串口协议转换器”的设计不允许同一串口同时给两台以上的上位机使用,无法满足多上位机共享“串口协议转换器”资源的市场新需求。
发明内容
本发明提出一种多路复用串口协议转换方法,解决了多台上位机对单一串口进行操作时的数据传输准确性,以及提高串口响应速度的问题。
本发明的技术方案是这样实现的:
一种多路复用串口协议转换方法,包括:
从上位机获取查询指令;
串口协议转换器根据动态链接库函数对查询指令数据进行校验,判断校验成功后的查询指令是否存在于指令缓冲区,如存在,则判断该查询指令在指令缓冲区是否存在有效的返回结果并将返回结果发回上位机;若不存在则将该查询指令存放于指令缓冲区;
串口协议转换器根据查询指令的优先级依次发送校验后的查询指令至串口设备,串口设备响应查询指令并返回结果;
根据动态链接库函数对返回结果数据的有效性进行校验,将校验成功后的返回结果存储于指令缓冲区;并根据指令缓冲区的状态定义判断是否将返回结果发送至上位机。
优选的,在执行发送校验后的查询指令至设备的步骤中,预设有回复时间,当串口设备在预设的回复时间内未对查询指令进行响应,则发送队列中的下一条查询指令。
优选的,在执行发送校验后的查询指令至串口设备的步骤中,预设有发送时间间隔,为几百毫秒到几秒。
优选的,在执行根据动态链接库函数对查询指令数据以及返回结果数据的有效性进行校验,将未能校验成功的数据暂存于数据缓冲区的步骤中;当接收到新的数据包时,首先对新数据包独立校验,若校验成功,则将数据缓冲区数据移至指令缓冲区;若校验失败,则与数据缓冲区的数据进行合并校验;若合并校验成功,则将数据移至指令缓冲区,若合并校验失败,则将数据添加到数据缓冲区尾部。
优选的,在执行串口协议转换器根据动态链接库函数,对查询指令数据和返回结果数据进行校验的步骤时,首先判断接收到的数据是否完整,若不完整,则等待下一数据包到来再共同判断是否完整。
本发明通过动态链接库函数对查询指令和返回结果的有效性进行校验,从而可以避免无效信息,缩短响应时间的同时保证返回结果的可识别性,另外通过对返回结果进行缓存,在接收到查询指令时,首先在缓存区内进行指令结果的查询,若多个上位机对串口协议转换器同一设备进行查询,并且指令缓冲区存在相应有效的返回结果,则无需再向串口设备发送查询指令,而直接将返回结果发送至上位机,从而可以缩短响应时间,以及避免结果错误,解决现有技术中查询指令出现交错,无法识别以及返回结果混淆的状况,而造成上位机和串口监控设备压力或者无法识别返回结果的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种多路复用串口协议转换方法的流程图;
图2为本发明一种多路复用串口协议转换方法的使用连接图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种多路复用串口协议转换方法,包括:
从上位机获取查询指令(步骤1);
串口协议转换器根据动态链接库函数对查询指令数据进行校验,判断校验成功后的查询指令是否存在于指令缓冲区,如存在,则判断该查询指令在指令缓冲区是否存在有效的返回结果并将返回结果发回上位机;若不存在则将该查询指令存放于指令缓冲区;(步骤2)
串口协议转换器根据查询指令的优先级依次发送到串口设备,发送校验后的查询指令至串口设备,串口设备响应查询指令并返回结果;(步骤3)
根据动态链接库函数对返回结果数据的有效性进行校验,将校验成功后的返回结果存储于指令缓冲区;并根据指令缓冲区的状态定义判断是否将返回结果发送至上位机。(步骤4)
优选的,在执行步骤1时,上位机可以为多台,根据预设的指令分别向同一串口协议转换器的相同串口设备或不同串口设备发送查询指令。
在执行步骤2时,通过预先研读串口设备协议,根据协议格式和特点,编写出对该协议数据进行校验的动态链接库函数,用以判断上位机和串口设备发送的指令是否符合设定的协议格式,例如指令是否完整,指令是否为有效的指令;动态链接库函数存放于串口协议转换器上,通过web配置对动态链接库文件进行选择,确认后随服务程序运行。通过校验后的查询指令,将首先判断该查询指令是否存在于指令缓冲区,若不存在,则将该查询指令存放于指令缓冲区中;若存在,则根据该查询指令在指令缓冲区查找返回结果,若存在有效返回结果,则将返回结果上传上位机。当从上位机获取到查询指令后,由于同一串口协议转换器允许接入多台上位机,因此串口协议转换器将根据上位机发送的查询指令的优先级依次发送到串口设备进行查询,再执行下一步骤。其中数据缓冲区,用来存放上位机和串口设备发往协议转换器未能成功校验的数据。当成功校验的数据,则存储到指令缓冲区的相对应指令区域。指令缓冲区用来存放成功校验的指令数据和指令返回数据,指令缓冲区的结构由“有效指令数量”,“正在发送到设备的指令编号”,“缓冲区是否可读取标识”,“指令结构数组”组成。指令数组由“缓存指令编号”,“指令结构是否有效”,“是否该记录存在未返回数据情况”,“数据哈希校验”,“指令订阅时间”,“数据内容”,“数据长度”,“指令订阅日志结构”组成。指令订阅日志结构由“订阅日志的文件描述符编号”,“文件描述符标识”,“准备写入的订阅数组编号”,“是否该连接存在未返回数据情况”,“历次订阅时间数组”组成。
优选的,在执行步骤3时,发送至串口设备的查询指令,串口协议转换器将根据预设超时时间和指令有效性判断进行串口收发数据控制,避免因为数据发送速度过快对串口设备和串口总线冲击造成死锁的现象,及避免查询指令混淆,发送到串口设备的查询指令无法识别,因此采用的方式是在串口设备处于空闲期时,才往串口设备发送查询指令,串口设备处于空闲状态的一个判断标准为,串口设备返回串口协议转换器的数据是否已经发送完毕,可以接受下一条指令,也即判断返回串口设备的指令是否完整以及设定的超时时间是否达到。从而可以保证发送至串口设备的查询指令是可以识别的,并且不会发生指令混淆的现象。
优选的,在执行步骤4时,返回结果通过校验,则将其存于指令缓冲区中,未通过则存放在数据缓冲区,具体的,当接收到返回结果则触发数据动态链接库函数对数据进行校验,校验步骤如下:首先对当前接收到的数据包独立校验,假如校验成功,则将数据缓冲区数据移至指令缓冲区;假如校验失败,则与数据缓冲区数据进行合并校验,若合并校验成功,则将数据移至指令缓冲区,若合并校验失败,则将数据添加到数据缓冲区尾部,用于下次接收到新的数据再进行合并校验;假如数据合并大小超出了数据缓冲区定义大小,则清空数据缓冲区。每一个上位机连接在串口协议转换器的指令缓冲区都有一个该连接的文件描述符结构,在串口协议转换器接收到上位机的指令,假如在指令缓冲区中该指令未有有效的返回结果缓存,则在该连接的文件描述符结构中置一个未发送数据的标记,说明该连接的指令未返回数据。当串口协议转换器接收到串口设备的返回结果,查看该指令所有连接标记是否存在数据未返回标志,假如存在,则将返回结果发往上位机。
本发明通过动态链接库函数对查询指令和返回结果的有效性进行校验,从而可以避免无效信息,缩短响应时间的同时保证返回结果的可识别性,另外通过对返回结果进行缓存,在接收到查询指令时,首先在指令缓存区内进行指令结果的查询,若多个上位机对串口协议转换器同一设备进行查询,并且指令缓冲区存在相应有效的返回结果,则无需再向串口设备发送查询指令,而直接将返回结果发送至上位机,从而可以缩短响应时间,以及避免结果错误,解决现有技术中查询指令出现交错,无法识别以及返回结果混淆的状况,而造成上位机和串口监控设备压力或者无法识别返回结果的问题。
优选的,在执行发送校验后的查询指令至设备的步骤中,预设有回复时间,当串口设备在预设的回复时间内未对查询指令进行响应,则发送队列中的下一条查询指令,通过超时设置,可以有效的控制串口协议转换器发送数据的速度。
优选的,在执行发送校验后的查询指令至串口设备的步骤中,预设有发送时间间隔,为几百毫秒到几秒,例如,100毫秒到几秒或者其他的根据需求设定的时间。
优选的,在执行根据动态链接库函数对查询指令数据以及返回结果数据的有效性进行校验,将未能校验成功的数据暂存于数据缓冲区的步骤中;当接收到新的数据包时,首先对新数据包独立校验,若校验成功,则将数据缓冲区数据移至指令缓冲区;若校验失败,则与数据缓冲区的数据进行合并校验;若合并校验成功,则将数据移至指令缓冲区,若合并校验失败,则将数据添加到数据缓冲区尾部。
优选的,在执行串口协议转换器根据动态链接库函数对查询指令数据和返回结果数据进行校验的步骤时,首先判断接收到的数据是否完整,若不完整,则等待下一数据包到来再共同判断是否完整。
本发明允许多个上位机通过同一串口协议转换器对同一串口设备进行数据采集和交互通讯。
多个上位机系统可以同时对同一台串口设备进行数据采集和交互通讯,无需部署多台“串口协议转换器”,节约底端采集系统的建设成本。而且,相比从系统平台间通过接口共享数据的方式,本发明多路复用“串口协议转换器”实现多个系统的源数据(底层数据)共享,避免了多上位机系统间互联互通的管理和维护问题。
另外,本发明采集响应速度比普通“串口协议转换器”要快。其通过采用串口数据缓存的方式工作,并对接收到上位机查询指令进行分析存储,根据查询指令的优先级判定,进行主动轮询,对返回结果进行保存。“多路复用串口协议转换方法”不需要重复发送数据到串口设备,而直接将缓存返回结果返回上位机,从而达到快速响应的目的。例如,进行100字节9600波特率下的收发数据自环测试,使用普通“串口协议转换器”传送方式,一次自环传输耗时平均约为100毫秒,而使用我司发明的“多路复用串口协议转换方法”进行转发,一次自环传输耗时平均约为1毫秒,比普通的“串口协议转换器”的数据响应速度有了极大提高。
另外通过使用串口数据动态链接库函数校验,能够校验判断发送和接收的数据是否有效,有效控制阻止无效指令发往串口设备。通过超时设置、发送间隔设置、指令缓存设置等配置选项,有效控制串口协议转换器发送数据速度,避免因为数据发送速度过快对串口设备和串口总线冲击造成的死锁现象的出现。
另外,由于多路复用串口协议转换方法基于上位机发送指令进行工作的,在上位机看来,该“多路复用串口协议转换方法”亦是一个透明传输的过程,可以无缝替代普通的“串口协议转换器”,无需上位机系统作任何修改,即可使用该“多路复用串口协议转换方法”。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种多路复用串口协议转换方法,其特征在于,包括:
从上位机获取查询指令;
串口协议转换器根据动态链接库函数对查询指令数据进行校验,判断校验成功后的查询指令是否存在于指令缓冲区,如存在,则判断该查询指令在指令缓冲区是否存在有效的返回结果并将返回结果发回上位机;若不存在则将该查询指令存放于指令缓冲区;
串口协议转换器根据查询指令的优先级依次发送校验后的查询指令至串口设备,串口设备响应查询指令并返回结果;
根据动态链接库函数对返回结果数据的有效性进行校验,将校验成功后的返回结果存储于指令缓冲区;并根据指令缓冲区的状态定义判断是否将返回结果发送至上位机;当串口协议转换器接收到串口设备的返回结果,查看该指令所有连接标记是否存在数据未返回标志,假如存在,则将返回结果发往上位机。
2.如权利要求1所述的一种多路复用串口协议转换方法,其特征在于:在执行发送校验后的查询指令至设备的步骤中,预设有回复时间,当串口设备在预设的回复时间内未对查询指令进行响应,则发送队列中的下一条查询指令。
3.如权利要求1所述的一种多路复用串口协议转换方法,其特征在于:在执行发送校验后的查询指令至串口设备的步骤中,预设有发送时间间隔,为几百毫秒到几秒。
4.如权利要求1所述的一种多路复用串口协议转换方法,其特征在于:在执行根据动态链接库函数对查询指令数据以及返回结果数据的有效性进行校验,将未能校验成功的数据暂存于数据缓冲区的步骤中;当接收到新的数据包时,首先对新数据包独立校验,若校验成功,则将数据缓冲区数据移至指令缓冲区;若校验失败,则与数据缓冲区的数据进行合并校验;若合并校验成功,则将数据移至指令缓冲区,若合并校验失败,则将数据添加到数据缓冲区尾部。
5.如权利要求1所述的一种多路复用串口协议转换方法,其特征在于:在执行串口协议转换器根据动态链接库函数对查询指令数据和返回结果数据进行校验步骤时,首先判断接收到的数据是否完整,若不完整,则等待下一数据包到来再共同判断是否完整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310085437.5A CN103166971B (zh) | 2013-03-15 | 2013-03-15 | 一种多路复用串口协议转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310085437.5A CN103166971B (zh) | 2013-03-15 | 2013-03-15 | 一种多路复用串口协议转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103166971A CN103166971A (zh) | 2013-06-19 |
CN103166971B true CN103166971B (zh) | 2016-05-11 |
Family
ID=48589710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310085437.5A Active CN103166971B (zh) | 2013-03-15 | 2013-03-15 | 一种多路复用串口协议转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103166971B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105844893B (zh) * | 2016-06-23 | 2018-10-16 | 积成电子股份有限公司 | 接口转换器rs485通信接口抄表与维护复用的方法 |
CN107423240A (zh) * | 2017-07-28 | 2017-12-01 | 白宏刚 | 自学习式多主机同时读写串口下位机或总线数据的算法 |
CN107566403A (zh) * | 2017-10-16 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种实现通用的多协议互连方法、系统及控制芯片 |
CN108255542B (zh) * | 2018-01-05 | 2021-08-10 | 北京北信源信息安全技术有限公司 | 一种虚拟机的串口并口管控方法与装置 |
WO2021000275A1 (zh) * | 2019-07-03 | 2021-01-07 | 深圳市中联创新自控系统有限公司 | 一种数据分配器及其通信方法 |
CN110620713B (zh) * | 2019-09-11 | 2022-03-25 | 北京演能科技有限公司 | Modbus协议共享通讯的方法和装置 |
CN111030907B (zh) * | 2019-12-11 | 2022-02-18 | 西安安森智能仪器股份有限公司 | 一种机器人串口总线的多设备数据解析及管理方法 |
CN113259268A (zh) * | 2021-07-02 | 2021-08-13 | 北京城建智控科技有限公司 | 一种支持冗余架构的网口与串口数据转发网关及方法 |
CN114124949A (zh) * | 2021-09-28 | 2022-03-01 | 许继集团有限公司 | 一种串口代理装置及应用其的配电自动化电力系统 |
CN113949604A (zh) * | 2021-10-19 | 2022-01-18 | 成都亿佰特电子科技有限公司 | Modbus网关指令处理方法、装置以及网关设备 |
CN114257561B (zh) * | 2021-12-17 | 2023-02-07 | 东土科技(宜昌)有限公司 | 一种串口网口的数据透传方法及装置、设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196832A (zh) * | 2007-12-29 | 2008-06-11 | 北京航空航天大学 | 一种面向照明异构设备的资源代理器 |
US8219214B1 (en) * | 2008-03-18 | 2012-07-10 | Mimlitz James E | Supervisory control and data acquisition protocol converter |
-
2013
- 2013-03-15 CN CN201310085437.5A patent/CN103166971B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196832A (zh) * | 2007-12-29 | 2008-06-11 | 北京航空航天大学 | 一种面向照明异构设备的资源代理器 |
US8219214B1 (en) * | 2008-03-18 | 2012-07-10 | Mimlitz James E | Supervisory control and data acquisition protocol converter |
Non-Patent Citations (1)
Title |
---|
基于uClinux的串口/以太网数据转换设备开发;徐荣珍;《计算机工程》;20060930;第32卷(第17期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103166971A (zh) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103166971B (zh) | 一种多路复用串口协议转换方法 | |
CN106411790B (zh) | 基于智能变电站保护控制系统的数据传输方法 | |
CN101873005B (zh) | 一种实现电能量均衡采集的方法 | |
CN104572574B (zh) | 基于千兆以太网视觉协议的以太网控制器ip核及方法 | |
CN106341266B (zh) | 具有主动和被动传输模式的硬件tcp/ip协议栈装置 | |
CN102480426B (zh) | 基于pcie交换总线的通信方法及一种pcie交换系统 | |
CN105610972A (zh) | 集群式的任务调派系统 | |
CN103248526A (zh) | 实现带外监控管理的通信设备、方法及主从切换方法 | |
CN102035688B (zh) | 一种快速控制网络链路访问设计方法 | |
CN106534178B (zh) | RapidIO网络通用套接字的实现系统及方法 | |
CN103218337A (zh) | 基于wishbone总线实现主与主、从与从通信的片上系统和方法 | |
CN202159138U (zh) | 基于网络的分布式雷达监控系统 | |
CN102185833A (zh) | 一种基于fpga的fc i/o并行处理方法 | |
CN103441937A (zh) | 组播数据的发送方法和接收方法 | |
CN102098187B (zh) | 一种测试路由器数据通路鲁棒性的方法和系统 | |
CN107688512A (zh) | 一种优化虚拟机数据备份方法和系统 | |
CN102567278A (zh) | 一种片上多核数据传输方法和装置 | |
CN104270452B (zh) | 一种远程医疗数据管理系统及其无线网络通信方法 | |
CN104317747B (zh) | 一种网格接收机的数据缓存与发送装置及方法 | |
CN109696878A (zh) | 基于多缓冲区的控制器 | |
CN101651678A (zh) | 网络中动态合并及分别执行合并pe文件的方法及其系统 | |
CN103178981B (zh) | 连接管理方法和系统 | |
CN102571412B (zh) | 嵌入式分布式系统目标机服务器 | |
CN112491620B (zh) | 一种基于srio的多通道数据传输控制器及调整方法 | |
CN106304241A (zh) | 一种数据传输方法、转发器及网关 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |