一种避免modbus实时数据库访问冲突的方法专利名称:一种避免modbus实时数据库访问冲突的方法技术领域:本发明涉及设备通信和数据处理,特别涉及一种避免modbus实时数据库访问冲突的方法背景技术:在工业控制现场,modbus作为一种成熟的应用协议受到了广泛的部署和应用在仪表、传感器、电动执行机构等方面应用非常成熟modbus是一个请求/应答协议,可以在以太网、RS232、RS422、RS485、光纤等线路上实施在现场应用时,一般都是由一个或多个modbus主站,通过RS232、RS422或者RS485的异步串行总线,连接现场的设备(从站);控制台通过以太网或者其他的总线技术接入modbus主站在modbus主站上,存在一个实时的数据库,控制台发出的命令更新到实时数 据库,modbus主站会周期性的把这些命令下发到对应的从站modbus主站负责获取各从站的运行数据和状态;获取控制台的指令;转发从站数据到控制台;转发控制台指令到各从站;上述这些工作一般以循环的方式周期性的执行如图I和图2所示,在现有采用modbus协议的单控制台系统中,控制台101连接一包含实时数据库104的modbus主站102,该modbus主站连接若干modbus从站103。
该系统的流程步骤包括S201 :获取控制台指令;S202 :更新实时数据库;S203 :发送指令给从站;S204 :获取从站状态;S205 :更新实时数据库;S206 发送从站状态给控制台上述步骤循环往复如图3、图4a和图4b所示,在现有采用modbus协议的多控制台系统中,有多个控制台,即第一控制台301和第二控制台302它们连接一包含实时数据库305的modbus主站303,该modbus主站连接若干modbus从站304该系统的流程步骤包括循环流程I :S411 :获取第一控制台指令;S412 :更新实时数据库;S413 :获取第二控制台指令;S414 :更新实时数据库;S415 :发送指令给从站;S416 :获取从站状态;S417 :更新实时数据库;S418 :发送从站状态给各控制台循环流程2 S421 :获取第一控制台指令;S422 :更新实时数据库;S423 :发送指令给从站S424 :获取第二控制台指令;S425 :更新实时数据库;S426 :发送指令给从站;S427 :获取从站状态;S428 :更新实时数据库;S429 发送从站状态给各控制台上述流程中,modbus主站分别从两个控制台获取指令,并转发给相应的从站。
因为这是一个循环过程,当一个控制台发送控制指令,而另外一个控制台不发送时,modbus主站从两个控制台读到的指令不一样图4所示的两种循环都不能保证有效的控制指令被发送到对应的从站;同时,当两个控制台同时发送指令时,modbus主站也不能保证哪个控制台的指令被优先执行发明内容本发明针对上述多控制台的modbus主站系统,提供了针对多控制台有效控制和优先控制的解决方法该方法能有效的解决多控制台modbus系统中,避免控制失效和控制优先级的问题本发明具体技术方案如下一种避免modbus实时数据库访问冲突的方法,其特征在于,在modbus主站中,控制台对数据库进行更新操作,其指令被缓存到一个指令缓冲区,并和前一次的缓冲指令进行对比只有当指令发生变化时,该指令被更新到数据库;同时该指令被指令缓冲保存;所述在modbus主站的循环列表中,每条针对数据库的更新操作指令都有相对应的指令缓冲,在开机进入循环前,这些缓冲被清除上述方案中,所述控制台的指令分为A、B两类,A类指令为数据库写指令,对应的modbus功能码为5、6、15、16 ;B类指令为数据库读指令,对应的modbus功能码为1、2、3、4上述方案中,所述针对多控制台的同时控制时,对每个控制台设定一个优先级;同时数据库的更新操作增加更新标记。
上述方案中,所述更新标记包括更新的时间、更新的地址范围和更新的优先级三部分信息上述方案中,所述当对应控制台的数据库更新指令有效时,首先更新指令缓冲,然后比较数据库中该区域的优先级和时间戳;当前一次更新的优先级低于当前更新时,更新指令到数据库;当前一次更新的优先级高于当前更新时,如果更新时间间隔大于指定的间隔,则更新指令到数据库,否则不予更新本发明所述方法能确保在一个多控制台modbus系统中,两个控制台只有一个发送指令时,发送的指令被正确执行继而解决实时数据库访问冲突的方法另外,方法中的创新点在于(I)每个控制台的数据库更新操作采用基于变化的写操作;(2)每个控制台的数据库更新数据采用中间缓冲区存储;(3)每个控制台可以设定优先级,解决同时访问时的有效性问题以下结合附图和具体实施方式来进一步说明本发明图I为现有采用modbus协议的单控制台系统框图 图2为现有单控制台系统中modbus主站的流程示意图图3为现有采用modbus协议的多控制台系统框图图4a、图4b为现有多控制台系统中modbus主站的流程示意图图5为本发明方法所涉及的多控制台的modbus主站系统具体实施例方式为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
如图5所示,本发明方法所涉及的多控制台的modbus主站系统它包括诸如第一控制台510和第二控制台520等这样的多个控制台其中每个控制台(510,520)都与modbus主站530的实时数据库531连接;modbus主站530里面还设有分别与第一控制台510和第二控制台520对应连接的指令缓冲区(532,533)modbus主站530还分别与若干个modbus从站540连接整个发明的具体方法为在modbus主站中,控制台对数据库的更新操作(对应modbus功能码为5、6、15、16),指令被缓存到一个指令缓冲区,并和前一次的缓冲指令进行对比只有当指令发生变化时,该指令被更新到数据库;同时该指令被指令缓冲保存在modbus主站的循环列表中,每条针对数据库的更新操作指令都有相对应的指令缓冲,在开机进入循环前,这些缓冲被清除这种方法能确保两个控制台只有一个发送指令时,发送的指令被正确执行如图5所示,控制台的指令分为A、B两类,A类指令为数据库写指令,对应的modbus功能码为5、6、15、16 ;B类指令为数据库读指令,对应的modbus功能码为1、2、3、4此外,针对多控制台的同时控制,还包括(I)每个控制台设定一个优先级;(2)数据库的更新操作增加更新标记,该更新标记包括三部分信息I.更新的时间;2.更新的地址范围;3.更新的优先级;当对应控制台的数据库更新指令有效时,首先更新指令缓冲,然后比较数据库中该区域的优先级和时间戳。
按照如下逻辑更新I.当前一次更新的优先级低于当前更新时,更新指令到数据库;2.当前一次更新的优先级高于当前更新时,如果更新时间间隔大于指定的间隔,则更新指令到数据库,否则不予更新;另外,如上所述的方法已经成功应用到一种以太网到RS485现场总线协议转换的装置中,该装置运行modbus协议;本方法并不限定于modbus协议,对于类似的请求应答协议都可以采用以上显示和描述了本发明的基本原理和主要特征和本发明的优点本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内本发明要 求保护范围由所附的权利要求书及其等效物界定权利要求1.一种避免modbus实时数据库访问冲突的方法,其特征在于,在modbus主站中,控制台对数据库进行更新操作,其指令被缓存到一个指令缓冲区,并和前一次的缓冲指令进行对比;只有当指令发生变化时,该指令被更新到数据库;同时该指令被指令缓冲保存;所述在modbus主站的循环列表中,每条针对数据库的更新操作指令都有相对应的指令缓冲,在开机进入循环前,这些缓冲被清除。
2.根据权利要求I的避免modbus实时数据库访问冲突的方法,其特征在于,所述控制台的指令分为A、B两类,A类指令为数据库写指令,对应的modbus功能码为5、6、15、16 ;B类指令为数据库读指令,对应的modbus功能码为1、2、3、43.根据权利要求I的避免modbus实时数据库访问冲突的方法,其特征在于,所述针对多控制台的同时控制时,对每个控制台设定一个优先级;同时数据库的更新操作增加更新 T 己 O4.根据权利要求3的避免modbus实时数据库访问冲突的方法,其特征在于,所述更新标记包括更新的时间、更新的地址范围和更新的优先级三部分信息5.根据权利要求I的避免modbus实时数据库访问冲突的方法,其特征在于,所述当对应控制台的数据库更新指令有效时,首先更新指令缓冲,然后比较数据库中该区域的优先级和时间戳;当前一次更新的优先级低于当前更新时,更新指令到数据库;当前一次更新的优先级高于当前更新时,如果更新时间间隔大于指定的间隔,则更新指令到数据库,否则不予更新全文摘要本发明公开了一种避免modbus实时数据库访问冲突的方法,其过程为在modbus主站中,控制台对数据库进行更新操作,其指令被缓存到一个指令缓冲区,并和前一次的缓冲指令进行对比。
只有当指令发生变化时,该指令被更新到数据库;同时该指令被指令缓冲保存;所述在modbus主站的循环列表中,每条针对数据库的更新操作指令都有相对应的指令缓冲,在开机进入循环前,这些缓冲被清除本发明所述方法能确保在一个多控制台modbus系统中,两个控制台只有一个发送指令时,发送的指令被正确执行继而解决实时数据库访问冲突的方法。