[发明专利]自学习式多主机同时读写串口下位机或总线数据的算法在审

专利信息
申请号: 201710628569.6 申请日: 2017-07-28
公开(公告)号: CN107423240A 公开(公告)日: 2017-12-01
发明(设计)人: 白宏刚 申请(专利权)人: 白宏刚
主分类号: G06F13/366 分类号: G06F13/366;G06F13/42;G06F9/48
代理公司: 北京市东方至睿知识产权代理事务所(特殊普通合伙)11485 代理人: 史惠莉
地址: 111000 辽宁省辽*** 国省代码: 辽宁;21
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种自学习式多主机同时读写串口下位机或总线数据的算法。主要是为解决目前多个系统中的多个主机无法同时读写一个点位串口数据等问题而发明的。采用自学习算法,自动学习主机下发的轮询数据,将主机轮询数据存储进自身的轮询线程中。轮询线程对串口下位机自动轮询,将轮询得到的结果数据存储进本机内存,多台主机同时读数据时,直接返回内存中的下位机数据。检测出主机下发写数据命令时,直接发送至串口下位机,不加入轮询任务线程。算法包括自学习主机轮询数据算法;自动轮询下位机数据的轮询算法和优化算法;对自学习数据、下位机数据的存储和快速检索的算法。优点是多个串口主机、多个以太网主机同时读写一个串口下位机或总线。
搜索关键词: 自学习 主机 同时 读写 串口 下位 总线 数据 算法
【主权项】:
自学习式多主机同时读写串口下位机或总线数据的算法,其特征是:采用自学习算法,自动学习主机下发的轮询数据,并且将主机轮询数据存储进自身的轮询线程中;轮询线程会对串口下位机进行自动轮询,并将轮询得到的结果数据存储进本机内存,当多台主机同时读数据时,直接返回内存中的下位机数据;在检测出主机下发写数据命令时,直接发送至串口下位机,不加入轮询任务线程;所以本方法只用于轮询方式的通讯协议,以Modbus协议作为算法说明,但不限于Modbus RTU、Modbus TCP协议,可适用于任何轮询协议,本文以Modbus协议作为算法说明;算法包括:自学习主机轮询数据算法;自动轮询下位机数据的轮询算法和优化算法;对自学习数据、下位机数据的存储和快速检索的算法;算法整体功能描述:核心数据缓冲定义:核心数据缓冲是本算法的存储核心,所有主机数据、下位机数据和控制数据均通过此缓冲进行管理;单个核心数据缓冲项的数据结构:主机轮询数据的功能描述:主机读取数据时,算法首先查找链表所有结点,如果本数据项与主机下发的数据匹配,则直接返回数据项中的“下位机数据”存储的内容;同时,自动轮询模块也使用此数据来读取下位机数据;下位机数据的功能描述:自动轮询模块遍历核心数据缓冲所有结点,并且使用“主机轮询数据”存储的内容读取下位机数据,然后将下位机数据复制到“下位机数据”项中,以供主机读取;上一结点功能描述:连接至链表上一结点;下一节点功能描述:连接至链表下一结点:状态数据功能描述:由自动轮询模块更新,用于表示此数据项的状态,如果自动轮询模块成功获取对应的下位机数据,将状态设置正常,否则为错误;如果为错误状态,在主机读取时,将返回错误;控制信息功能描述:存储控制信息;通过链表结构的核心数据缓冲,实现了对自学习数据、下位机数据的存储和快速检索的算法;检查命令类型:首先分析从主机接收到的数据,并根据命令类型分别进入读命令、命令2个处理流程;以Modbus协议为例子,在收到功能码为01,02,03,04的令时,将转入读数据处理流程;在收到功能码为05、06、15、16的写数据时,将转入写数据处理流程;多主机读数据流程:将收到的主机轮询数据作为索引,搜索核心数据缓冲;如果找到对应的下位机数据,则将数据直接返回给主机;如果未能找到对应数据项,将命令数据放入核心数据缓冲,由下位机轮询模块读取,轮询模块使用此数据自动读取下位机数据,并将获取到的下位机数据放入核心数据缓冲,等待主机读取;如果核心数据缓冲中的对应数据项被标记为错误,将会直接向主机返回错误;通过上述算法,可以实现多个主机同时从核心数据缓冲中读取数据;而核心数据缓冲的数据由下位机自动轮询模块进行刷新,模块中的轮询线程,实时读取下位机数据并送入核心数据缓冲,从而实现了不低于传统一对一的实时性能;本流程解决了多主机同时读一个串口数据问题;多主机写数据流程:从主机收到写数据命令后,将命令直接发向串口下位机,并等待下位机返回数据,然后将收到的下位机数据发回给主机;此算法可以确保写命令实时发送至串口下位机,然后将取得执行情况信息,转发给主机;多主机同时写一个串口时,会发生数据冲突;本算法采用队列方式解决此问题;自动轮询模块工作方式及优化算法:此模块主要由轮询线程组成,轮询线程不断的从核心数据缓冲中读取主机轮询数据,并将此数据发送至下位机用于读取数据;如果下位机正常返回数据,则用主机轮询数据查找核心数据缓冲中对应数据项,并将其“下位机数据 ”中的内容更新为下位机返回的数据;如果下位机无返回数据或返回了错误数据,将此数据项设置为错误状态,直接向主机返回错误;如果连续多次读取同一台下位机数据均为失败,则将此主机轮询数据从核心数据缓冲中删除,不再轮询,从而提高了轮询性能;如果经过主机多次轮询,而不读取某个下位机数据,则删除此下位机数据,用于提高效率,此功能可以根据需要设置次数或禁用;自学习主机轮询数据算法具体实施:检查数据正确性:首先接收主机下发的数据,以Modbus协议数据:01 01 00 0A 00 08 1D CE作为读数据示例;Modbus协议数据:01 05 00 0A FF 00 AC 38作为写数据示例;收到数据后首先检查校验字节、功能码两项关键数据是否正确;如果检查失败,则向主机返回错误,不再进行下一步处理;判断命令类型:如果数据检查成功,进行判断数据类型;检查示例数据01 [01] 00 0A 00 08 1D CE,其中中括号内为功能码,为01、02、03、04时为读取数据指令,转入读数据流程;为05、06、15、16时为写数据指令,转入写数据流程;读数据流程:首先用收到的主机数据:01 01 00 0A 00 08 1D CE作为关键字,查找核心数据缓冲中所对应的数据项;找到所对应的数据项时,将数据项中的下位机数据发送回主机;此下位机数据是由自动轮询模块从下位机读取并且存储至核心数据缓冲的;没找到对应的数据项时,开始进行自学习过程,首先将01 01 00 0A 00 08 1D CE发送至下位机,并且等待下位机返回;如果下位机正确返回了数据,将返回的数据发送给主机;同时将01 01 00 0A 00 08 1D CE添加进核心数据缓冲;自动轮询模块将持续的使用此数据读取下位机数据,并将读取的数据存储进核心数据缓冲;从而完成对01 01 00 0A 00 08 1D CE数据的自学习过程;如果下位机无应答或返回错误数据,则直接向主机返回错误信息,不做其他处理;写数据流程:直接将主机下发的写数据:01 05 00 0A FF 00 AC 38发送至下位机,并等待下位机返回;如果下位机无返回,将向主机返回写超时错误信息;如果下位机有返回数据,无论正确还是错误,都直接将此数据返回给主机;自动轮询下位机数据的轮询算法和优化算法;从核心数据缓冲读取主机轮询数据:自动轮询模块循环遍历核心数据缓冲中的所有数据项,每读一个数据项,轮询一次下位机数据;将主机轮询数据发送给下位机;发送主机轮询数据至下位机,并等待返回;读取下位机数据成功:如果下位机正确返回了数据,将此数据存储进核心数据缓冲项,以供主机读取;从而自动完成一次下位机数据读取;读取下位机数据失败:读取下位机失败时,将会进入轮询优化算法;如果下位机未能返回数据或返回错误数据,将数据项的错误计数器加1,在此错误计数器达到删除阀值时;从核心数据缓冲中删除此数据项,不再轮询此数据项;从而提高整体轮询效率,只有当主机再次发送此轮询数据时,才会再次添加此数据至核心数据缓冲并进行自动轮询;错误计数器未达到阀值时,设置数据项为错误状态,在主机读取此数据项时,可以立即向主机通知发生错误,确保了通讯的实时性能。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于白宏刚,未经白宏刚许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201710628569.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top