CN107423240A - 自学习式多主机同时读写串口下位机或总线数据的算法 - Google Patents

自学习式多主机同时读写串口下位机或总线数据的算法 Download PDF

Info

Publication number
CN107423240A
CN107423240A CN201710628569.6A CN201710628569A CN107423240A CN 107423240 A CN107423240 A CN 107423240A CN 201710628569 A CN201710628569 A CN 201710628569A CN 107423240 A CN107423240 A CN 107423240A
Authority
CN
China
Prior art keywords
data
slave computer
algorithm
main frame
core
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.)
Pending
Application number
CN201710628569.6A
Other languages
English (en)
Inventor
白宏刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201710628569.6A priority Critical patent/CN107423240A/zh
Publication of CN107423240A publication Critical patent/CN107423240A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/366Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种自学习式多主机同时读写串口下位机或总线数据的算法。主要是为解决目前多个系统中的多个主机无法同时读写一个点位串口数据等问题而发明的。采用自学习算法,自动学习主机下发的轮询数据,将主机轮询数据存储进自身的轮询线程中。轮询线程对串口下位机自动轮询,将轮询得到的结果数据存储进本机内存,多台主机同时读数据时,直接返回内存中的下位机数据。检测出主机下发写数据命令时,直接发送至串口下位机,不加入轮询任务线程。算法包括:自学习主机轮询数据算法;自动轮询下位机数据的轮询算法和优化算法;对自学习数据、下位机数据的存储和快速检索的算法。优点是多个串口主机、多个以太网主机同时读写一个串口下位机或总线。

Description

自学习式多主机同时读写串口下位机或总线数据的算法
技术领域:
本发明涉及一种自学习式多主机同时读写串口下位机或总线数据的算法。
背景技术:
现有的串口技术已经有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号主机写操作后,再进行下一个主机的写数据操作。
自动轮询模块工作方式及优化算法:
此模块主要由轮询线程组成,轮询线程不断的从核心数据缓冲中读取主机轮询数据,并将此数据发送至下位机用于读取数据。
如果下位机正常返回数据,则用主机轮询数据查找核心数据缓冲中对应数据项,并将其“下位机数据 ”中的内容更新为下位机返回的数据。
如果下位机无返回数据或返回了错误数据,将此数据项设置为错误状态,直接向主机返回错误。
如果连续多次读取同一台下位机数据均为失败,则将此主机轮询数据从核心数据缓冲中删除,不再轮询,从而提高了轮询性能。
如果经过主机多次轮询,而从未读取过某个下位机数据,则删除此下位机数据,用于提高效率,此功能可以根据需要设置次数或禁用。
自学习算法的具体实施:
检查数据正确性:
首先接收主机下发的数据,以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作为关键字,查找核心数据缓冲中所对应的数据项。
找到所对应的数据项时,将数据项中的下位机数据发送回主机。此下位机数据是由自00000000000000动轮询模块从下位机读取并且存储至核心数据缓冲的。
没找到对应的数据项时,开始进行自学习过程,首先将01 01 00 0A 00 08 1D CE发送至下位机,并且等待下位机返回。如果下位机正确返回了数据,将返回的数据发送给主机。同时将01 01 00 0A 00 08 1D CE添加进核心数据缓冲。自动轮询模块将持续的使用此数据读取下位机数据,并将读取的数据存储进核心数据缓冲。从而完成对01 01 00 0A 0008 1D CE数据的自学习过程。
如果下位机无应答或返回错误数据,则直接向主机返回错误信息,不做其他处理。
写数据流程:
直接将主机下发的写数据:01 05 00 0A FF 00 AC 38发送至下位机,并等待下位机返回。如果下位机无返回,将向主机返回写超时错误信息。如果下位机有返回数据,无论正确还是错误,都直接将此数据返回给主机。
自动轮询模块算法的具体实施:
从核心数据缓冲读取主机轮询数据:
自动轮询模块循环遍历核心数据缓冲中的所有数据项,每读一个数据项,轮询一次下位机数据。
将主机轮询数据发送给下位机;
发送主机轮询数据至下位机,并等待返回。
读取下位机数据成功:
如果下位机正确返回了数据,将此数据存储进核心数据缓冲项,以供主机读取。从而自动完成一次下位机数据读取。
读取下位机数据失败:
读取下位机失败时,将会进入轮询优化算法。
如果下位机未能返回数据或返回错误数据,将数据项的错误计数器加1。在此错误计数器达到删除阀值时(默认为10次错误),从核心数据缓冲中删除此数据项,不再轮询此数据项。从而提高整体轮询效率。只有当主机再次发送此轮询数据时,才会再次添加此数据至核心数据缓冲并进行自动轮询。
错误计数器未达到阀值时,设置数据项为错误状态,在主机读取此数据项时,可以立即向主机通知发生错误。确保了通讯的实时性能。
本发明的优点是:
一,解决了多个串口主机、多个以太网主机同时读写1个串口下位机或总线的难题。
二,不影响现有的串口通讯系统工作,不用修改现有的软件、硬件,可在系统中以透明方式部署即可实现优点一。
三,创新的自学习式算法,可自动学习主机轮询数据,自主轮询存储下位机数据提供给多主机读写,具备优化及纠错功能。无需用户知晓底层协议,无需用户手动设置任何参数,即可实现优点一。
附图说明:
图1是本发明中的算法整体描述框图;
图2是本发明中自学习算法的流程框图;
图3是本发明中自动轮询模块功能框图。
具体实施方式:
采用自学习算法,自动学习主机下发的轮询数据,并且将主机轮询数据存储进自身的轮询线程中。轮询线程会对串口下位机进行自动轮询。并将轮询得到的结果数据存储进本机内存,当多台主机同时读数据时,直接返回内存中的下位机数据。在检测出主机下发写数据命令时,直接发送至串口下位机,不加入轮询任务线程。
所以本发明只用于轮询方式的通讯协议,例如:Modbus RTU、Modbus TCP协议,但不限于Modbus RTU、Modbus TCP协议,可适用于任何轮询协议。本说明书以Modbus协议作为算法说明。
算法包括:
自学习主机轮询数据算法;
自动轮询下位机数据的轮询算法和优化算法;
对自学习数据、下位机数据的存储和快速检索的算法。
下面将详细说明此算法的具体细节。所有说明均使用Modbus协议。
算法功能描述:
核心数据缓冲定义:核心数据缓冲是本算法的存储核心,所有主机数据、下位机数据和控制数据均通过此缓冲进行管理。
表1描述了核心数据缓冲的单个数据项的定义内容,多个数据项以双向链表方式进行组织。对此链表可以进行查找、增长、删除操作。此链表即被称为核心数据缓冲。
单个核心数据缓冲项的数据结构(表1)
通过链表结构的核心数据缓冲的处理,实现了对自学习数据、下位机数据的存储和快速检索的算法;
算法整体框架实施(参见图1):
检查命令类型:
首先分析从主机接收到的数据,并根据命令类型分别进入读命令、命令2个处理流程。
以Modbus协议为例子,在收到功能码为01,02,03,04的令时,将转入读数据处理流程。
在收到功能码为05、06、15、16的写数据时,将转入写数据处理流程。
多主机读数据流程:
将收到的主机轮询数据作为索引,搜索核心数据缓冲。如果找到对应的下位机数据,则将数据直接返回给主机。如果未能找到对应数据项,将命令数据放入核心数据缓冲,由下位机轮询模块读取,轮询模块使用此数据自动读取下位机数据,并将获取到的下位机数据放入核心数据缓冲,等待主机读取。
如果核心数据缓冲中的对应数据项被标记为错误,将会直接向主机返回错误。
通过上述算法,可以实现多个主机同时从核心数据缓冲中读取数据。
而核心数据缓冲的数据由下位机自动轮询模块进行刷新,模块中的轮询线程,实时读取下位机数据并送入核心数据缓冲,从而实现了不低于传统一对一的实时性能。
本流程解决了多主机同时读一个串口数据问题。
多主机写数据流程:
从主机收到写数据命令后,将命令直接发向串口下位机,并等待下位机返回数据,然后将收到的下位机数据发回给主机。
此算法可以确保写命令实时发送至串口下位机,然后将取得执行情况信息,转发给主机。
多主机同时写一个串口时,会发生数据冲突。本算法采用队列方式解决此问题,例如:1号主机在写数据时,将会暂时缓冲其他主机的写数据,等待完成1号主机写操作后,再进行下一个主机的写数据操作。
自动轮询模块工作方式及优化算法:
此模块主要由轮询线程组成,轮询线程不断的从核心数据缓冲中读取主机轮询数据,并将此数据发送至下位机用于读取数据。
如果下位机正常返回数据,则用主机轮询数据查找核心数据缓冲中对应数据项,并将其“下位机数据 ”中的内容更新为下位机返回的数据。
如果下位机无返回数据或返回了错误数据,将此数据项设置为错误状态,直接向主机返回错误。
如果连续多次读取同一台下位机数据均为失败,则将此主机轮询数据从核心数据缓冲中删除,不再轮询,从而提高了轮询性能。
如果经过主机多次轮询,而不读取某个下位机数据,则删除此下位机数据,用于提高效率,此功能可以根据需要设置次数或禁用。
自学习主机轮询数据算法具体实施(参见图2):
检查数据正确性:
首先接收主机下发的数据,以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 0008 1D CE数据的自学习过程。
如果下位机无应答或返回错误数据,则直接向主机返回错误信息,不做其他处理。
写数据流程:
直接将主机下发的写数据:01 05 00 0A FF 00 AC 38发送至下位机,并等待下位机返回。如果下位机无返回,将向主机返回写超时错误信息。如果下位机有返回数据,无论正确还是错误,都直接将此数据返回给主机。
自动轮询下位机数据的轮询算法和优化算法具体实施(参见图3):
从核心数据缓冲读取主机轮询数据:
自动轮询模块循环遍历核心数据缓冲中的所有数据项,每读一个数据项,轮询一次下位机数据。
将主机轮询数据发送给下位机;
发送主机轮询数据至下位机,并等待返回。
读取下位机数据成功:
如果下位机正确返回了数据,将此数据存储进核心数据缓冲项,以供主机读取。从而自动完成一次下位机数据读取。
读取下位机数据失败:
读取下位机失败时,将会进入轮询优化算法。
如果下位机未能返回数据或返回错误数据,将数据项的错误计数器加1。在此错误计数器达到删除阀值时(默认为10次错误),从核心数据缓冲中删除此数据项,不再轮询此数据项。从而提高整体轮询效率。只有当主机再次发送此轮询数据时,才会再次添加此数据至核心数据缓冲并进行自动轮询。
错误计数器未达到阀值时,设置数据项为错误状态,在主机读取此数据项时,可以立即向主机通知发生错误。确保了通讯的实时性能。

Claims (1)

1.自学习式多主机同时读写串口下位机或总线数据的算法,其特征是:采用自学习算法,自动学习主机下发的轮询数据,并且将主机轮询数据存储进自身的轮询线程中;轮询线程会对串口下位机进行自动轮询,并将轮询得到的结果数据存储进本机内存,当多台主机同时读数据时,直接返回内存中的下位机数据;在检测出主机下发写数据命令时,直接发送至串口下位机,不加入轮询任务线程;
所以本方法只用于轮询方式的通讯协议,以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 081D CE数据的自学习过程;
如果下位机无应答或返回错误数据,则直接向主机返回错误信息,不做其他处理;
写数据流程:
直接将主机下发的写数据:01 05 00 0A FF 00 AC 38发送至下位机,并等待下位机返回;如果下位机无返回,将向主机返回写超时错误信息;如果下位机有返回数据,无论正确还是错误,都直接将此数据返回给主机;
自动轮询下位机数据的轮询算法和优化算法;
从核心数据缓冲读取主机轮询数据:
自动轮询模块循环遍历核心数据缓冲中的所有数据项,每读一个数据项,轮询一次下位机数据;
将主机轮询数据发送给下位机;
发送主机轮询数据至下位机,并等待返回;
读取下位机数据成功:
如果下位机正确返回了数据,将此数据存储进核心数据缓冲项,以供主机读取;从而自动完成一次下位机数据读取;
读取下位机数据失败:
读取下位机失败时,将会进入轮询优化算法;
如果下位机未能返回数据或返回错误数据,将数据项的错误计数器加1,在此错误计数器达到删除阀值时;从核心数据缓冲中删除此数据项,不再轮询此数据项;从而提高整体轮询效率,只有当主机再次发送此轮询数据时,才会再次添加此数据至核心数据缓冲并进行自动轮询;
错误计数器未达到阀值时,设置数据项为错误状态,在主机读取此数据项时,可以立即向主机通知发生错误,确保了通讯的实时性能。
CN201710628569.6A 2017-07-28 2017-07-28 自学习式多主机同时读写串口下位机或总线数据的算法 Pending CN107423240A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710628569.6A CN107423240A (zh) 2017-07-28 2017-07-28 自学习式多主机同时读写串口下位机或总线数据的算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710628569.6A CN107423240A (zh) 2017-07-28 2017-07-28 自学习式多主机同时读写串口下位机或总线数据的算法

Publications (1)

Publication Number Publication Date
CN107423240A true CN107423240A (zh) 2017-12-01

Family

ID=60430317

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710628569.6A Pending CN107423240A (zh) 2017-07-28 2017-07-28 自学习式多主机同时读写串口下位机或总线数据的算法

Country Status (1)

Country Link
CN (1) CN107423240A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108768760A (zh) * 2018-04-04 2018-11-06 吉林省星途科技有限公司 一种多机协同工作设备中高速数据流接收方法及系统
CN115150219A (zh) * 2021-03-31 2022-10-04 广东力源工程技术有限公司 一种串口映射设备数据分包的方法
CN115145849A (zh) * 2021-03-31 2022-10-04 广东力源工程技术有限公司 基于Modbus的RS485串口数据映射设备及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103166971A (zh) * 2013-03-15 2013-06-19 广东盈嘉科技工程发展股份有限公司 一种多路复用串口协议转换器
CN104580461A (zh) * 2015-01-07 2015-04-29 四川航天拓鑫玄武岩实业有限公司 一种多主机与多从机的通信方法
CN105159622A (zh) * 2015-10-22 2015-12-16 湖南国科微电子股份有限公司 一种减小ssd读写io时延的方法与系统
US20160132448A1 (en) * 2014-11-07 2016-05-12 Texas Instruments Incorporated Hub module with a single bridge shared among multiple connection ports to support role reversal

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103166971A (zh) * 2013-03-15 2013-06-19 广东盈嘉科技工程发展股份有限公司 一种多路复用串口协议转换器
US20160132448A1 (en) * 2014-11-07 2016-05-12 Texas Instruments Incorporated Hub module with a single bridge shared among multiple connection ports to support role reversal
CN104580461A (zh) * 2015-01-07 2015-04-29 四川航天拓鑫玄武岩实业有限公司 一种多主机与多从机的通信方法
CN105159622A (zh) * 2015-10-22 2015-12-16 湖南国科微电子股份有限公司 一种减小ssd读写io时延的方法与系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108768760A (zh) * 2018-04-04 2018-11-06 吉林省星途科技有限公司 一种多机协同工作设备中高速数据流接收方法及系统
CN108768760B (zh) * 2018-04-04 2022-02-25 吉林省星途科技有限公司 一种多机协同工作设备中高速数据流接收方法及系统
CN115150219A (zh) * 2021-03-31 2022-10-04 广东力源工程技术有限公司 一种串口映射设备数据分包的方法
CN115145849A (zh) * 2021-03-31 2022-10-04 广东力源工程技术有限公司 基于Modbus的RS485串口数据映射设备及方法

Similar Documents

Publication Publication Date Title
CN111371779B (zh) 一种基于dpdk虚拟化管理系统的防火墙及其实现方法
US8249072B2 (en) Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
EP0992056B1 (en) Search engine architecture for a high performance multi-layer switch element
US5247626A (en) Fddi controller having flexible buffer management
EP3282649A1 (en) Data packet forwarding
CN107423240A (zh) 自学习式多主机同时读写串口下位机或总线数据的算法
CN103616927A (zh) 一种数据通讯服务器
CN103916252A (zh) 一种基于fpga的高带宽以太网ip核
US9996498B2 (en) Network memory
CN102158435B (zh) 一种支持虚连接的基于can总线和以太网实时嵌入式网关
JPH04233055A (ja) 端末装置サーバアーキテクチャ
CN105897574A (zh) 一种支持双网双主冗余的Modbus RTU/TCP网关装置
CN106533872A (zh) 用于提高fc‑ae‑1553总线传输效率的系统
EP3370377B1 (en) Packet forwarding
CN106528486A (zh) 一种串口数据交换的方法
CN105993148B (zh) 网络接口
CN111385222B (zh) 实时、时间感知、动态、情境感知和可重新配置的以太网分组分类
CN106571991A (zh) 一种数据传输方法及装置
CN102692642A (zh) 基于以太网物理层收发器的地震数据传输装置
CN110519180A (zh) 网卡虚拟化队列调度方法及系统
CN203535551U (zh) 一种数据通讯服务器
CN117608207A (zh) 一种基于反射内存网的通信系统及方法
CN109450825A (zh) 用于交换机的数据调度方法和装置
EP2779543A1 (en) Direct push operations and gather operations
CN107276845B (zh) 一种轨道交通领域的具有容错功能的实时数据调度方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20171201

WD01 Invention patent application deemed withdrawn after publication