本发明即是针对上述
现有技术中存在的缺点而提出的一种避免冗余主 站对串行总线链路访问冲突的方法,本方法能够保证冗余主站的双机与设备 间采用单通道时,不会同时对设备执行操作。
本发明是通过下述技术方案来实现的:
一种避免冗余主站对串行总线链路访问冲突的方法,应用于冗余主站系 统,所述冗余主站中双机通过一根串行总线链路与作为从站的设备连接,双 机之间可以相互通信,其特征在于,该方法包括下述步骤:
(a)
热机进行
数据采集处理,组包向设备下发数据请求、采集数据并处 理数据,备机处于静默状态;
(b)每隔一段时间进行一次备机的状态检测过程,由热机组包向备机发 送一个数据请求,备机将该请求下发到从站设备,进行一次数据采集,判断 备机的在线离线状态并作出标识,此时热机为静默状态;
(c)备机将数据采集结果发送给热机,由热机进行
数据处理,备机转为 静默状态,热机继续执行步骤(a)。
进一步地,所述冗余主站中的双机分别配置为默认主机和默认从机,所 述的步骤(b)中,备机的状态检测过程由默认主机发起,若默认主机为热机, 则其定时向默认从机发送一个数据请求;若默认主机为备机,则其定时向默 认从机发出启动检测请求,由默认从机回复一个数据请求给默认主机。
进一步地,所述冗余主站中的双机分别配置为默认主机和默认从机,所 述的步骤(b)中,备机的状态检测过程由默认从机发起,若默认从机为热机, 则其定时向默认主机发送一个数据请求;若默认从机为备机,则其定时向默 认主机发出启动检测请求,由默认主机回复一个数据请求给默认从机。
进一步地,所述步骤(b)中,由热机来触发备机的状态检测过程,即 确认自己为热机后,每隔一段时间向备机发送一次数据请求。
进一步地,所述的步骤(b)中,所述热机发送数据请求后,等待从机返回 数据采集结果的静默时间为一次采集超时时间的1.5~2.5倍。
进一步地,判断热机或备机的在线离线状态是通过下述方法实现的:若 热机或备机与设备能够正常通信,则在线,若不能够正常通信,则为离线。
进一步地,所述热机在采集处理过程中还检测与设备间的在线离线状 态,当其由在线状态变为离线状态时,双机实现热备转换。
与现有技术相比,本发明主站的冗余双方数据采集时互为热备机,保证 只有一方对从站进行操作,保证从站的测试数据在主站能够得到处理,并且 能够随时检测热机和备机的在线或离线状态,适于从站设备为单通道设备使 用。
附图说明
图1为现有技术中冗余双机热备结构的示意图。
图2为本发明
实施例中冗余双机通过单通道与设备连接的示意图。
图3为本发明实施例中系统启动后默认主机的工作
流程图。
图4为本发明实施例中系统启动后默认从机的工作流程图。
下面结合附图和具体实施例对本发明作进一步的介绍,但不作为对本发 明的限定。
一个冗余主站的监控系统中,冗余双方分别为IO站A机和IO站B机, 设定A机为默认主机,B机默认从机,从站为待监控设备。该系统中,A 机和B机通过串行总线链路分别与作为从站的设备连接,同时A机和B机 之间设置以太网或者专用串口通道连接,也可以如图2所示在A机和B机 之间同时设置以太网或者串行通道,并确定它们的优先级的方式实现连接。
首先说明的是,在下述论述中,IO站A机和IO站B机的在线状态或 者离线状态是指其与某个设备的连接状态,认为IO站A机和IO站B机之 间的通信状态始终保持正常。
在本实施例中,该监控系统启动后,设定A机为热机,B机为备机,A 机不断循环进行数据的采集处理过程,包括组包,向从站设备发送数据请求, 接收来自从站设备的数据并进行处理等操作。同时,A机每隔30秒启动一 次备机(此时为B机)的状态检测过程,将组包的数据请求发送到B机, 由B机向设备下发一次请求,接收数据,以检测B机和设备间的在线/离线 状态,并将接收到的数据返回A机,由A机进行处理。如果因A机离线或 其它原因需要将B机切换为热机后,则改由B机循环进行数据的采集处理 过程,但仍由A机启动备机(此时为A机)的状态检测过程,每隔30秒向 B机发送一次启动检测的请求,由B机将此次组包后的数据请求发送到A 机,A机再下发到相应设备,进行一次数据采集,并将此次数据采集的结果 返回到B机,由B机进行处理。当A机正常后或根据策略需要将A机切换 为热机时,B机会自动转换为备机,此时A机恢复为热机。
参考图3所示的A机的工作流程图。A机为默认主机;设定第一
定时器 的定时时间为30秒,用于设定A机向B机发送请求命令的时间间隔。A机 启动后,执行下述步骤:
步骤100:第一定时器清零,重新启动,根据A机的在线离线标识,判 断A机是否为热机,如果A机标识为在线,则为热机,执行步骤101,如 果A机的标识为离线,则A不是热机,为备机,执行步骤107;
步骤101:A机进行一次采集处理过程,包括:组包、向从站设备发请 求,采集数据和处理数据;
步骤102:判断A机是否在线,如果是,执行步骤103,如果否,更新 A机的在线离线标识,并通知B机,返
回执行步骤100;
若在步骤101中,A机与从站设备通信时,若发现通道不通,则表明A 机对应于相应的设备为离线状态,反之,A机在线;
步骤103:判断第一定时器是否计时到30秒,如果是,则执行步骤104, 如果否,则返回执行步骤101;
步骤104:A机与B机通信,组包后向B机发送数据请求;
步骤105:A机进入静默状态,等待时间为采集周期超时时间的2倍, 以保证B机能有足够的处理时间;
步骤106:A机接收到B机返回的此次数据采集结果,处理数据,返回 步骤100。
步骤107:A机等待30秒,向B机发送一个启动检测的请求;
步骤108:A机接收到B机回复的一个数据请求;
步骤109:A机接收到的B机回复的请求后,下发设备,执行一次数据 采集过程,同时根据设备的应答情况确定A机在线离线状态;
步骤110:更新A机的在线离线标识;
步骤111:A机将此次数据采集的结果返回给B机,再返回执行步骤100。
以上流程中,热机是在每次采集处理过程后就判断一次在线离线状态, 其反应比较灵敏。但在另一实施例中,也可以在进行了多次采集处理过程并 根据设备的应答判断其状态不变时,再置在线离线标志识,这样比较稳定。 备机的处理也是一样的。
参考图4所示的本系统中,B机的工作流程图。B机为默认从机,执行 下述步骤:
步骤200:判断B机是否为备机,如果是,则执行步骤201,如果否, B则为热机,执行步骤205;
在B机工作过程中,可以根据A机的状态变化通知来设置自己是热机 或备机的标志,当A机作为热机时,B机为备机,A机从热机切换为备机时, 则B机从备机切换为热机。
步骤201:判断是否接收到A机的数据请求,如果是,则执行步骤202, 如果否,则继续执行步骤201;
步骤202:B机将接收到的A机的数据请求下发设备,执行一次采集过 程,并根据设备应答情况判断B机在线状态;
当B机与从站设备通信时,若发现通道不通,则表明B机对应于相应 的设备为离线状态,反之,B机在线;
步骤203:更新B机在线离线标志;
步骤204:B机将此次数据采集的结果返回给A机,再返回执行步骤200。
步骤205:B机进行一次采集处理过程,包括:组包、向从站设备发数 据请求,采集数据,处理数据,并根据设备应答情况判断B机的在线离线 状态并置B机的在线离线标志,如果在线,执行下一步,否则,作异常处 理;
步骤206:判断是否接收到A机发送的启动检测请求,如果是,执行 步骤207,如果否,返回执行步骤205;
步骤207:B机组包,向A机回复一个数据请求;
步骤208:B机处于静默状态,等待时间为采集周期超时时间的2倍, 以保证A机能有足够的处理时间;
在此步骤208进行过程中,相应的A机执行步骤109和步骤110;
步骤209:B机接收到A机的返回数据,进行数据处理,返回执行步骤 200。
上述实施例中,热机在循环采集处理的过程中,每隔一段时间向备机发 送一次数据请求,等待备机完成此次数据采集并返回数据。这样,即达到了 避免热机和备机发生总线链路访问冲突,同时,也没有扰乱正常的数据采集 过程。和通过发送专
门的检测包相比,简化了处理流程,并且不会因为等待 检测包响应而导致设备上传的重要事件丢失。
需要说明的是,备机的状态检测过程由谁来触发并不局限于实施例中由 默认主机触发的方式。在另一实施例中,同样可以由默认从机触发,即默认 从机为热机时,每隔一段时间向备机发送数据请求,由备机下发到设备并完 成一次数据采集,返回到热机。默认从机为备机时,则每隔一段时间向热机 发送一次启动检测请求,由热机返回一个数据请求,再下发到设备。
或者,在另一实施例中,由热机来触发备机的状态检测过程,即确认自 己为热机后,每隔一段时间向备机发送一次数据请求,由备机下发到设备并 完成一次数据采集,返回到热机。
另外,热机和备机的切换策略也不仅仅局限于实施例中的方式,即默认 主机在线时为热机,离线时将默认从机切换为热机。在另一实施例中,可以 不设置两台机子为默认主机或默认从机,在双机均在线时,可以根据其各自 所带的在线设备的多少来确定是作为热机还是备机。