[发明专利]自学习式多主机同时读写串口下位机或总线数据的算法在审
申请号: | 201710628569.6 | 申请日: | 2017-07-28 |
公开(公告)号: | CN107423240A | 公开(公告)日: | 2017-12-01 |
发明(设计)人: | 白宏刚 | 申请(专利权)人: | 白宏刚 |
主分类号: | G06F13/366 | 分类号: | G06F13/366;G06F13/42;G06F9/48 |
代理公司: | 北京市东方至睿知识产权代理事务所(特殊普通合伙)11485 | 代理人: | 史惠莉 |
地址: | 111000 辽宁省辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 自学习 主机 同时 读写 串口 下位 总线 数据 算法 | ||
技术领域:
本发明涉及一种自学习式多主机同时读写串口下位机或总线数据的算法。
背景技术:
现有的串口技术已经有50多年历史,在设计之初,由于受当时技术及成本所限,并未考虑多台主机同时读写一个串口下位机或总线的情况。
如今随着物联网及各类智能系统的发展,开始要求串口通讯技术实现下列目标:
一,要求多个系统中的多个主机同时读写一个点位的RS232、RS485串口数据,并且仍要达到不低一对一直连方式的实时性能。
二,在不修改现有软件、硬件前提下,以透明方式实现目标一。
三,要求无需用户知晓串口协议、无需手工设置,以即插即用方式实现目标一。
但是现有的串口通讯产品无法满足上述需求,从而使装机量巨大的RS232、RS485串口设备成为瓶颈,严重限制系统功能的进一步发展。
发明内容:
本发明针对现有串口技术的上述缺陷,提出一种针对多主机同时读写RS232、RS485串口数据的自学习式多主机同时读写串口下位机或总线数据的算法。
本发明为解决此问题采用的技术方案是:采用自学习算法,自动学习主机下发的轮询数据,并且将主机轮询数据存储进自身的轮询线程中。轮询线程会对串口下位机进行自动轮询。并将轮询得到的结果数据存储进本机内存,当多台主机同时读数据时,直接返回内存中的下位机数据。在检测出主机下发写数据命令时,直接发送至串口下位机,不加入轮询任务线程。
所以本发明只用于轮询方式的通讯协议,例如:Modbus RTU、Modbus TCP协议,但不限于Modbus RTU、Modbus TCP协议,可适用于任何轮询协议。本说明书以Modbus协议作为算法说明。
算法包括:
自学习主机轮询数据算法;
自动轮询下位机数据的轮询算法和优化算法;
对自学习数据、下位机数据的存储和快速检索的算法。
下面将详细说明此算法的具体细节。所有说明均使用Modbus协议。
算法功能描述:
核心数据缓冲定义:核心数据缓冲是本算法的存储核心,所有主机数据、下位机数据和控制数据均通过此缓冲进行管理。
表1描述了核心数据缓冲的单个数据项的定义内容,多个数据项以双向链表方式进行组织。对此链表可以进行查找、增长、删除操作。此链表即被称为核心数据缓冲。
单个核心数据缓冲项的数据结构(表1)
通过链表结构的核心数据缓冲的处理,实现了对自学习数据、下位机数据的存储和快速检索的算法;
检查命令类型:
首先分析从主机接收到的数据,并根据命令类型分别进入读命令、写命令2个处理流程。
以Modbus协议为例子,在收到功能码为01,02,03,04的命令时,将转入读数据处理流程。
在收到功能码为05、06、15、16的写数据命令时,将转入写数据处理流程。
多主机读数据流程:
将收到的主机轮询数据作为索引,搜索核心数据缓冲。如果找到对应的下位机数据,则将数据直接返回给主机。如果未能找到对应数据项,将命令数据放入核心数据缓冲,由下位机轮询模块读取,轮询模块使用此数据自动读取下位机数据,并将获取到的下位机数据放入核心数据缓冲,等待主机读取。
如果核心数据缓冲中的对应数据项被标记为错误,将会直接向主机返回错误。
通过上述算法,可以实现多个主机同时从核心数据缓冲中读取数据。
而核心数据缓冲的数据由下位机自动轮询模块进行刷新,模块中的轮询线程可实时读取下位机数据并送入核心数据缓冲,从而实现了不低于传统一对一串口通讯的实时性能。
本流程解决了多主机同时读一个串口数据问题。
多主机写数据流程:
从主机收到写数据命令后,将命令直接发向串口下位机,并等待下位机返回数据,然后将收到的下位机数据发回给主机。
此算法可以确保写命令实时发送至串口下位机,然后将取得执行情况信息,转发给主机。
多主机同时写一个串口时,会发生数据冲突。本算法采用队列方式解决此问题,例如:1号主机在写数据时,将会暂时缓冲其他主机的写数据,等待完成1号主机写操作后,再进行下一个主机的写数据操作。
自动轮询模块工作方式及优化算法:
此模块主要由轮询线程组成,轮询线程不断的从核心数据缓冲中读取主机轮询数据,并将此数据发送至下位机用于读取数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于白宏刚,未经白宏刚许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710628569.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种多功能电气控制气动冲床
- 下一篇:一种糊箱机的自动供纸机构