数据跟踪传送(热备)功能用于使控制系统和待机系统的数据保持统一,以确保控制系统停机时,冗余系统通过待机系统继续运行。不进行跟踪传送(热备)的情况下,在系统切换后,在新的控制系统CPU模块中,会有上升沿、下降沿和SCJ指令不能正常工作的情况。图12-77 跟踪传送(热备)的步骤......
2023-06-16
双机热备可有效提高系统的可靠性,保证系统的连续稳定工作。双机热备的可靠实现需要两个控制卡协同工作,共同实现。本系统中的两个控制卡工作于主从模式的双机热备状态中,实现过程涉及控制卡的主从身份识别,工作中两个控制卡间的状态监测、数据同步,故障情况下的故障处理,以及故障修复后的数据恢复等方面。
1.控制卡主从身份识别
主从配置的两个控制卡必须保证在任一时刻、任何情况下都只有一个主控制卡与一个从控制卡,所以必须在所有可能的情况下对控制卡的主从身份做出识别或限定。这些情况包括:单控制卡上电运行时如何判定为主控制卡,两个控制卡同时上电运行时主从身份的竞争与识别,死机控制卡重启后判定为从控制卡。控制卡的主从身份以RS触发器输出端的0/1状态为判定依据,检测到RS触发器输出端为1的控制卡为主控制卡,检测到RS触发器输出端为0的控制卡为从控制卡。
2.状态监测与故障切换
处于热备状态的两个控制卡必须不断地监测对方控制卡的工作状态,以便在对方控制卡故障时能够及时发现并做出故障处理。
状态监测所采用的检测方法已经在双机冗余电路的设计中介绍过,控制卡通过将自身的D触发器输出端清0,然后等待对方控制卡发来信号使该D触发器输出端置1来判断对方控制卡的正常工作。同时,通过发送信号使对方控制卡上的D触发器输出端置1来向对方控制卡表明自己正常工作。
控制卡间的状态监测采用类似心跳检测的一种周期检测的方式实现。同时,为保证检测结果的准确性,只有在两个连续周期的检测结果相同时才会采纳该检测结果。为避免误检测情况的发生,又将一个检测周期分为前半周期与后半周期,如果前半周期检测到对方控制卡工作正常则不进行后半周期的检测,如果前半周期检测到对方控制卡出现故障,则在后半周期继续执行检测,并以后半周期的检测结果为准。周期内检测结果判定见表11-4。控制卡工作状态判定见表11-5。
表11-4 周期内检测结果判定
注:X表示无须进行后半周期的检测。
表11-5 控制卡工作状态判定
在检测过程中,对自身D触发器执行先检测,再清0的操作顺序,如果对方控制卡发送的置1信号出现在检测与清0操作之间,将导致无法检测到此置1操作,也就是说本次检测结果为故障,误检测情况由此产生。如果两个控制卡的检测周期相同,这种误检测情况将持续出现,最后必然会错误地认为对方控制卡出现故障。相同周期下连续误检测情况分析如图11-15所示。
(www.chuimin.cn)
图11-15 相同周期下连续误检测情况分析
为了避免连续误检测情况的发生,必须使两个控制卡的检测周期不同。并且,基于如下考虑:尽可能不增加主控制卡的负担,并且在主控制卡故障时,希望从控制卡可以较快发现主控制卡的故障并接管主控制卡的工作,所以决定缩短从控制卡的检测周期,加速其对主控制卡的检测。在本系统的设计中,从控制卡的检测周期为380ms,主控制卡的检测周期T为400ms。
由于故障的随机性,故障出现的时刻与检测点间的时间也是随机的,导致从故障出现到检测到故障的时间是一个有确定上下限的范围,该范围为1.5T~2.5T。以从控制卡出现故障到主控制卡检测到此故障为例,需要的时间是600~1000ms。
两个控制卡工作于主从方式的热备模式下,内置完全相同的程序,但只有主控制卡可以向测控板卡发送命令,进行控制输出。在程序中,主从控制卡通过一个标志变量MasterFlag来标示主从身份,从而控制程序的执行。当从控制卡检测到主控制出现故障时,只需将MasterFlag置1就可实现由从控制卡到主控制卡的身份切换,从而可以在程序中执行主控制卡的功能。
在从控制卡检测到主控制卡故障后,不但要进行身份切换,接管主控制卡的工作,还要向上位机进行故障报告。当主控制卡检测到从控制卡故障时,仅需要向上位机进行故障报告。故障报告通过以太网通信模块实现。
3.控制卡间的数据同步
处于热备状态的两个控制卡不但要不断地监测对方的工作状态,还要保证两个数据卡间数据的一致性,以保证在主控制卡故障时,从控制卡可以准确无误地接管主控制卡的工作并保证整个系统的连续运行。
要保证两个控制卡间数据的一致性,要求两个控制卡间必须进行数据同步操作。数据的一致性包括测控板卡采样数据的一致、控制算法的一致,以及运算结果的一致。下载到两个控制卡的控制算法信息是一致的,在保证测控板卡采样数据一致且同步运算的情况下,就可以做到运算结果一致。所以两个控制卡间需要就测控板卡的采样信息和运算周期做一定的同步处理。
关于测控板卡采样信息的同步,由于只有主控制卡可以向测控板卡发送数据索要命令,从控制卡不可以主动向测控板卡索要采样信息。但是在与测控板卡进行通信时,可以利用CAN通信的组播功能实现主从控制卡同步接收来自测控板卡的采样数据,这样就可以做到采样数据的同步。
两个控制卡的晶振虽然差别不大,但不可能完全一致,在经过一段较长时间的运行后,系统内部的时间计数可能有很大的差别,所以通过单纯地设定相同的运算周期,并不能保证两个控制卡间运算的同步。在本设计中从控制卡的控制算法运算不再由自身的时间管理模块触发,而是主控制卡触发,以保证主从控制卡间控制算法运算的同步。主控制卡在完成测控板卡采样数据索要工作后,会通过CAN通信告知从控制卡进行控制算法的运算操作。
除了正常工作过程中要进行数据同步外,死机控制卡重启后,正常运行的主控制卡必须要及时帮助重启的从控制卡进行数据恢复和同步,以保证两者间数据的一致性。此情况下需要同步的信息主要是控制算法中与时间或运算次数密切相关的信息,以及一些时序控制回路中的时间信息。如PID模块的运算结果,PID的运算结果是前面多次运算的一个累积结果,并不是单次运算就可得出的;时序控制回路中的延时开关,其开关动作的触发由控制算法的时间决定。
在正常运行的主控制卡监测到死机的从控制卡重启后,主控制卡会主动要求与从控制卡进行信息同步,并且同步操作在主控制卡执行完控制算法的运算操作后执行。部分信息的同步操作要求在一个周期内完成,否则同步操作就失去了意义,同步的信息甚至是错误的。部分信息允许分多个周期完成同步操作。部分信息要求在一个周期内完成同步操作,但并不要求在开始的第一个周期完成同步。如信息A和B关系紧密,需要在一个周期内完成同步操作,信息C和D关系密切,也需要在一个周期内完成同步操作。此时却并不一定要在一个周期内共同完成A、B、C和D的同步,可以将A和B的同步操作放在这个周期,将C和D的同步操作放到下个周期执行,只要保证具有捆绑关系的信息能够在一个周期内完成同步即可。
主控制卡肩负着系统的控制任务,主从控制卡间的数据恢复与同步操作会占用主控制卡的时间,增加主控制卡上微控制器的负担。为了保证主控制卡的正常运行,不过多地增加主控制卡的负担,需要将待同步的数据合理分组并提前将数据准备好,以便主从控制卡间的同步操作可以快速完成。
有关现场总线及其应用技术的文章
数据跟踪传送(热备)功能用于使控制系统和待机系统的数据保持统一,以确保控制系统停机时,冗余系统通过待机系统继续运行。不进行跟踪传送(热备)的情况下,在系统切换后,在新的控制系统CPU模块中,会有上升沿、下降沿和SCJ指令不能正常工作的情况。图12-77 跟踪传送(热备)的步骤......
2023-06-16
选择菜单栏中的“文件”→“另存为”命令,输入VI名称为“打开文件”。4)在“函数”选板上选择“互连接口”→“库与可执行程序”→“执行系统命令”VI,连接字符输出端到“命令行”输入端,执行打开路径下的文件命令。图7-4 程序框图图7-5 前面板设计4.运行程序在前面板窗口或程序框图窗口的工具栏中单击“运行”按钮 ,打开路径下的文件,运行结果如图7-6所示。......
2023-11-07
本例演示用广义线性拟合VI预测成本的方法。选择菜单栏中的“文件”→“另存为”命令,输入VI名称为“预测成本”。图9-41 放置数组控件2)在“函数”选板中选择“编程”→“数组”→“数组大小”函数,计算X1数组常数量。图9-44 程序框图图9-45 前面板5.运行程序在前面板窗口或程序框图窗口的工具栏中单击“运行”按钮 ,运行VI结果如图9-46所示。......
2023-11-07
选择菜单栏中的“文件”→“另存为”命令,输入 VI 名称为“延迟波形”。图5-39 程序框图7.运行程序1)在前面板窗口或程序框图窗口的工具栏中单击“运行”按钮 ,运行VI结果如图5-40所示。2)从运行结果中发现,添加“反馈节点”的程序比其余两个延迟5 s。......
2023-11-07
项目2:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。图3.15兔子问题输出结果根据以上的分析可以知道,循环次数可以为0,因此该程序是一个条件型循环,可以利用while语句编写程序。熟悉了循环结构在程序设计中的运用,循环结构语句包含了while语句、do…......
2023-11-18
C++支持三种格式的循环控制语句:while、do和for语句。图1.3while语句的执行过程编写一个程序,将用户输入的整数反向显示出来。解:程序如下:3.for语句for语句通常用于预先知道循环次数的情况,其一般形式为:for语句;其中,“初始化语句”可以是一个定义语句或表达式语句,一般用于对一组变量进行初始化或赋值。“表达式2”在每次循环执行完成后执行,一般用于改变控制循环的变量。......
2023-11-07
条件编译使得同一源程序在不同的编译条件下得到不同的目标代码。商业软件公司总是使用条件编译来提供和维护某一程序的多个顾客版本。条件编译有几种常用的形式,现分别介绍如下:#ifdef标识符这种形式的含义是:如果标识符已被#define行定义,则编译程序段1,否则编译程序段2。例6.1条件编译的简单应用。例6.2输入一行字母序列,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。......
2023-11-18
例4.16从键盘上输入一行英文字符串,判断该字符串的每一单词的第一个字母是否是大写,若不是,则改为大写字母。利用大小写对应ASCII码值之间的差值,可以很方便地完成大小写间的转换操作,如“ch[i]=ch[i]-32;”语句便实现了将小写字母转换成对应的大写字母。例4.17编写一个简单的密码程序。7438jkd你不是合法用户,不能进入本系统!例4.18从键盘上输入4个字符串,比较它们之间的大小关系,然后按从小到大的顺序存放到二维数组中并输出。......
2023-11-18
相关推荐