下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
串口通信在双机冗余系统中应用
摘要:本文扼要分析了当今带专用检测转换电路的双机冗余系统存在的可靠性问题,提出
了利用双机的串行口代替专用检测转换电路,通过串行通信相互检测主备机工作状态,由软
件完成备机切换成主机的新型设计思想,为计算机在工业实时监控系统应用中的可靠性开辟
新思路。
关键字:双机冗余软件切换
1、引言
冗余技术是计算机系统可靠性设计中常用的一种技术,是提高计算机系统可靠性的最
有效方法,同时也是鉴别各类计算机控制系统好坏的标志之一。故世界各地厂商推出的新产
品都或多或少带有冗余技术。如美国的Honeywell、德国的西门子和口本的三武等,它们都
有一个共同的特点,就是自己设计了专用检测转换电路来实现主备切换.本文提出一•种新的
构思,取消专用检测转换电路,采用一种高效、实用的软件冗余技术来完成双机切换。
2、冗余系统介绍
双机冗余包括CPU、扩展电路、电源和外设双备份的全系统冗余,不但可简化设计方案,
还可大大地提高应用系统的可靠性。这种冗余系统具有如图1所示的典型硬件结构。
在图I所示的系统中,U1和U2单元的软硬件结构完全相同。如有必要,在设计各单元
时,通过采用自诊断技术,软件陷井或Watchdog等系统自行恢复措施可使单元可靠性达到
最大限度的提高。系统正常运行时,U1和U2中的一个单元处于正常工作状态(把该单元称
为主机),完成应用功能,而另一个单元(备机)处于等待备用状态。当检测转换电路检测
到主机不能正常工作时,自动启动备机进入正常运行状态,完成应用功能。此时,可对故障
单元进行脱线维护,在排除其故障后,可使其联机进入等待备用状态。显然,这种冗余系统
已大大提高了应用系统的可靠性,并基本保证了应用系统的不间断运行。但仔细分析,就会
发现它存在以下不足之处:
①系统存在可宰性瓶颈,当检测转换电路自身出现故障时,不能监视主备机状态,也
无法完成主备机自动切换功能;
②对于某些冗余系统,当备机需要实时保留主机之间的数据备份时,检测转换电路无
法完成主备机之间的数据通信功能;
③由于需要设计检测转换电路,系统设计和实现复杂,引入了附加的不可靠因素。
3、改进设计方案
针对图1所示的双机冗余系统结构和缺点,笔者实现了一个简单高效、具有更高可靠
性和主备机数据通信功能的改进设计方案。其基本设计思想是:不改变上述冗余系统的基本
结构,但完全去掉专用的检测转换电路,利用主备机双方的串行口和软件相结合的方法,实
现检测转换电路的功能和主备机之间的数据通信功能。在此改进的设计方案中,主备单元的
硬件和软件结构完仝相同,各单元的主备工作状态由上电顺序决定,先上电的一方自动进入
主机工作状态,后上电者则进入备机状态。主机在其工作过程中除实现应用功能外,定期向
备机发送反映其工作正常的状态数据,当需要备份的数据发生变化时,主机及时向备机发送
已更新的数据。此外,主机也定期接收来自备机的状态数据,当发生接收超时时,主机认为
备机已经发生故障,并通过本单元的显示装置向用户给出通知信号,以便及时对备机进行脱
线维护。备机在其工作过程中不完成应用功能,但定期接收来自主机的状态数据,当发生接
收超时,备机认为主机以经发生故障,自动切换进入主机工作状态,并通过本单元显示装置
通知用户,以便对原主机单元进行脱线维护。此外,备机还自动接收来自主机的备份数据并
进行存储备份。
4、软件模板
下面的软件模板给出了笔者已实现的双机冗余系统的软件框架,和应用系统实现密切
相关的部分用自然语言简单描述,其余部分为VisualC++源代码,因此,这一软件模板很
容易移植到相似结构的冗余系统中。
该软件模板以VisualC++进行程序设计,常量OK,REQ,ACK和NACK分别表示主备机工
作状态正常,备份数据发送请求,肯定应答和否定应答信息的字符常量,MAIN,STANDBY分
别是表示工作单元为主机或备机的常量标志。全局变量timeout用于设定以亳秒为单位的超
时间隔,而Update,CpuStatus和Failure分别是表示备份数据是否更新,主备机状态和主
备机是否发生故障的标志位变量。
定时器0产生每隔1ms的定时中断(采用QucryPcrformanccCountcr((LARGE_INTEGER
*)&cndtime)计数方式),每次中断将全局变量timeout的值减1,减到0时即关闭定时器0。
所有需要软件超时机制或延时功能的程序模块都可在设定limcoul的值后开启定时器0,并
通过判断该变量的值是否为0而实现定时功能。
定时器1产生每隔55ms的定时中断(采用S“Timc(55)函数)。每次中断,主备单元
的中断服务程序都向对方单元发送表示自身工作状态正常的0K字符,同时也接收对方单元
发送的OK字符,若连续三次都未能成功接收,则本单元认为对方单元出了故障,并将表示对
方单元工作状态的全局变量Failure置为常量Yes,否则,置为No;若为备机,还将表示主备
身份的标志变量CpuStatus的值置为Main,从而为备机程序切换和给出原主机故障提示设
置判断标志。若备机在中断服务程序中接收到字符REQ,则置表示备份数据是否更新的标志
变量Update为Yes,并立即退出中断服务程序,以便主程序及时接收备份数据帧。
主函数在完成应用系统的公共初使化,主备单元的定时器1在后台产生定时中断并通
过串行通信进行相互检测,由于规定两个单元的上电时间间隔大于500ms,因此,利用中断
服务程序的检测结果必能自动确定初使的主备身份。主函数延时500ms后,即根据当前的主
备身份自动进入主(备)机的前台监控例程,主机的前台监控例程除完成应用功能外,当应
用功能改变了需要备份的数据时,则调用send_frame函数关闭定时器1的中断并发送备份
数据帧。当备机的前台监控例程判断出需要接收备份数据时♦,调用receive_frame函数关闭
定时器1的中断并接收备份数据帧。当备机的前台监控例程监视到主机故障时,备机的前台
监控循环自动切换进入主机的前台监控循环。主函数中的监控切换代码较难理解.,应结合并
发执行的定时器1的中断服务程序一起分析。
函数send_char和receive_char通过串行口直接发送和接收单个字符。函数
scnd_framc和receive,frame分别发送和接收备份数据帧。VC++中用通讯控件开发串行通
信程序,通讯控件的工作原理类似与中断方式,当有通讯事件发生时(如发送数据、接收数
据等),就会触发OnComm事件,在该事件的处理函数中调用GctCommEvcnl()函数,通过返
回值即可确定是那类事件,再作出相应的处理。通信成功时返回1,否则返回0。Delay为
以亳秒数为调用参数的延时函数。
限于篇幅,本文仅给出完成检测切换功能的主函数和定时器1的中断服务函数,以及
相关数据的代码,其它函数仅给出函数原型。代码如下:
#include*stdafx.h"
#include"Try.h"
#include*TryDoc.h"
^include^TryVicw.h*
#includc<windows.h>
#include<stdlib.h>
#includc<conio.h>
#include<stdio.h>
while(l)/*主机单元的前台例行监控循环*/
{和应用系统实现相关的主机应用功能例程:
if(应用例程修改了需要备份的数据)Update;
if((Update)&&(!Failure)&&send_frame0)Update=false:
if(Failure){给出备机故障通知信号;Update=true;}
})
else
{CpuSlatus=STANDBY;和应用系统实现相关的备机初使化程序段;
while(l)/*备机单元的前台例行监控循环*/
{if(CpuStatus==STANDBY)
while(CpuStatus==STANDBY)/*在备机状态中循环*/
(和应用系统实现相关的备机例程:
if((!Failure)&&(Update)&&receive_frame())Update=false;
)
else
{Update=truc:/*以便在未来的备机联机后再次发送备份数据*/
whilc(l)/*切换到主机的前台监控循环中*/
{和应用系统实现相关的主机应用功能例程:
if(应用例程修改了需要备份的数据)Update;
if((Update)&&(!Failure)&&scnd_framc())Updaie=false;
if(Failure){给出备机故障通知信号:Updatc=YES;}
}}}}}
voidCTryDlg::0nTimer(UINTnlDEvent)/*定时器1的55ms中断服务程序*/
{intcount=0;
if(rcceive_char(&ch)==NULL)
{count++;
if(count==3)/*三次接收字符不成功*/
{count=0;Failurc=lrue;/*对方单元故障,如果本方为备机,准备切换*/
if(CpuStatus==STANDBY)CpuStatus=MAIN;
})
else
{count=0;Failure=falsc;
if((ch==REQ)&&(CpuStatus==STANDBY))/*如果备机接收到主机的备份数据帧
*/
{Update=true;return;}/*发送请求字符,立即返回,接收此备份数据帧*/
)
send_char(OK);/*发送本单元工作正常的状态数据字符*/
应用系统和55ms定时相关的例程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业设施设备检修维护保养管理制度
- 特种设备维护保养检查记录表(密封装置)
- 医疗机构中医馆建设管理标准(2026年版)
- 2026年水污染防治法及措施技术员职业只能考试卷库(附答案)
- 肾病医学特色综合性医院基本标准(2026年版)
- 2026年冷链仓储温控系统服务协议
- 核苷酸代谢紊乱性贫血护理查房
- 2026年跨境货物物流条款协议
- 喉麻痹护理查房
- 胸骨后甲状腺全部切除术后护理查房
- 2025年共青团入团考试测试题库及答案
- 湖南省长沙市湖南师大附中教育集团2022-2023学年七下期中数学试题(原卷版)
- 洞箫曲谱200首带目录
- 2024年山东省泰安市中考物理试卷(附真题答案)
- GB/T 44585.1-2024风险管理在接入IT网络的医疗器械中的应用第1部分:联网医疗器械或健康软件在其实施和使用中的安全、有效性和网络安全
- PAS 2050:2011-商品和服务在生命周期内的温室气体排放评价规范(英文)
- 23J916-1 住宅排气道(一)
- DL-T2078.2-2021调相机检修导则第2部分:保护及励磁系统
- 手术患者安全转运与交接
- GB/T 43924.2-2024航空航天MJ螺纹第2部分:螺栓和螺母螺纹的极限尺寸
- 农业机械设计手册上册
评论
0/150
提交评论