主从多机可靠性建模仿真 摘要:本文使用Matlab的中的Simulink编制主 ...

上传人:1888****888 文档编号:39698360 上传时间:2021-11-11 格式:DOC 页数:18 大小:93KB
收藏 版权申诉 举报 下载
主从多机可靠性建模仿真 摘要:本文使用Matlab的中的Simulink编制主 ..._第1页
第1页 / 共18页
主从多机可靠性建模仿真 摘要:本文使用Matlab的中的Simulink编制主 ..._第2页
第2页 / 共18页
主从多机可靠性建模仿真 摘要:本文使用Matlab的中的Simulink编制主 ..._第3页
第3页 / 共18页
资源描述:

《主从多机可靠性建模仿真 摘要:本文使用Matlab的中的Simulink编制主 ...》由会员分享,可在线阅读,更多相关《主从多机可靠性建模仿真 摘要:本文使用Matlab的中的Simulink编制主 ...(18页珍藏版)》请在装配图网上搜索。

1、主从多机可靠性建模仿真摘要:本文使用Matlab的中的Simulink编制主从多机的模型,进行仿真。系统部件的每一个元件使用Stateflow建立状态转移机模型。然后根据元件状态推定部件状态,根据部件状态推定子系统和系统状态。此方法简单有效,直观易懂,适合复杂系统的建模和仿真。关键词:主从多机,可靠性,建模,仿真A Simulation for the Reliability of a Master/Slave SystemAbstract: A simulation of system reliability based on Simulink is proposed in this pap

2、er. The state of each element of the system is based on a FSM model. The state of each part is based on the states of its elements. And the state of the whole system is based on its parts. This method has more virtues than usual methods and it can be applied to any complex system.Key words: Master/S

3、lave System, Reliability, Model, Simulation1 引言Matlab提供的Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持连续、离散及两者混合的线性和非线性系统。Simulink为用户提供了很方便的图形化功能模块以便连接成一个模拟系统,简化了设计的流程,减轻了设计负担。在Sinmlink环境中,利用鼠标就可以在模型窗口中直观地“画” 出系统模型,然后直接进行仿真。1.1 研究对象的物理模型元件部件的基本构成单位,也是模型中系统的最小组成单位。 所有元件连续无故障运行时间 的概率密度分布都遵从负指数分布部件由一个或多个元件构成。在模型

4、中构成一个部件的元件组合方式具有“单纯性”,即只能是以下三种情形之一:串联组合、并联组合、k-out-of-n组合。多个部件可以组合为具有一定功能的子系统。子系统由若干部件构成,能完成一组特定功能。为讨论方便,模型中整个系统被划分为5个子系统:通信主机子系统、集线器子系统、三个相互独立的通信从机子系统。串联组合参与组合的所有元(部)件之一失效,则整体失效。并联组合参与组合的所有元(部)件全部失效,则整体才失效。k-out-of-n组合参与组合的所有n个元(部)件中,若至少有k个正常,则整体正常;换言之,多于(n-k)个同时失效,则整体才失效。系统的故障系统内若存在有处于失效状态的部件,则认为系

5、统有故障。系统的重大故障系统运行中的下述情形,列为重大故障。这些情形可能同时出现。l l通信主机子系统失效或无法通信(双机热备时,双机同时失效或无法通信)。l l集线器发生故障。l l因某个通信从机的某类特定故障,引发通信总线阻塞,整个通信网络瘫痪。l l三个通信从机子系统中,有两个或两个以上同时失效或无法通信。系统的一般故障除列为重大故障之外的其他故障。(通信)总线阻塞系统中的通信总线是各通信机间的共享信道。在同一时刻,至多只能有一台通信机的接口电路工作于发送信息状态,并占用信道。当某台通信机出现特定故障,使其通信接口电路无法退出发送状态,会引发通信总线阻塞。此时,因信道被占用,其他处于正常

6、状态的通信机间也无法进行通信。双机热备份通信主机子系统可配置为双机热备份,实现冗余容错。结构相同的双机同步运行。正常情况下,一台为主用机,承担完整的信息输入处理和控制信号输出职责;一台为备用机,仅有信息输入,控制信号输出通路被切断。当主用机发生故障时,主备职责自动倒换,可保持子系统整体不失效。值得注意的是,由于是热备份,所以处于备用状态的主机也在实际运行,运行中也可能出现故障状态,甚至需要人工修复。图1-1 基本配置下系统的组成被研究的系统为一个“1主3从”通信系统。在基本配置下,其组成示意图如图1-1。系统中有1台通信主机和3台通信从机。所有通信主/从机使用共享信道建立物理连接。典型的实例如

7、RS485标准的二线制总线结构。在该通信系统的传输协议中有以下规定:l 每台通信机拥有唯一的地址标识l 仅主机拥有发起对话的权限,主机与从机之间可进行“主问从答”式对话l 从机与从机间不进行对话l 必须保证在同一时刻,至多只有一台通信机占用信道发送信息,其余通信机处于接收监听状态每台通信机内部有两块主要电路板:控制电路板和接口电路板。控制电路板上有微处理器,运行相应的软件程序。接口电路板负责与通信总线联系,它的某类故障,会引发总线阻塞。光电隔离器完成电-光-电信号转换,通过电气隔离增加安全性。其内部采用了提高可靠性为目的的元件冗余设计。光电隔离器无法阻止接口电路故障引发的总线阻塞。集线器是一个

8、通信线缆的汇接装置。12 元件和部件的模型2.1 时钟信号发生器生成周期为1个仿真单位,占空比为50%的方波,每一个上升沿表示一天的到来。如图2-1所示:图2-1 时钟信号发生器2.2 元件子系统模型2.2.1 构成控制硬部件、接口部件、集线器部件的元件模型构成控制硬部件、接口部件、集线器部件的所有元件特性满足独立同分布,对应参数:元件发生故障的概率为: = 0.00047988利用Stateflow建立如图2-2所示的状态转移机模型。为了简便算法,假定任何元件从故障状态恢复后的第一天,一定处于无故障状态,故设立Recover状态,表示故障恢复后第一天的状态。图2-2所示的状态转移机模型有一个

9、输入端口Random,用于读取随机数发生器产生的随机数;有一个输出端口State,用于输出当前元件的状态;还有一个上升沿触发端口Day,用于引入时钟信号。其外部结构如图2-3所示。由于Simulink自带的Uniform Number Generater模块产生的随机数与所给的Seed有关,如果Seed不变,每次产生的随机序列都相同。所以随机数发生器采用了Matlab函数Rand(),产生0至1之间的平均分布的随机数。以便进行多次仿真。将图2-3所示的元件模型封装为元件子系统模块,便于部件的搭建。如图2-4所示。图2-2 构成控制硬部件、接口部件、集线器部件的元件状态转移机模型图2-3 状态转

10、移机外部接口 图2-4 封装后的元件子系统模块2.2.2 构成控制软部件的元件模型构成控制软部件的单元件,对应分布参数: 元件发生故障的概率为: = 0.004788未采取措施1的情况下,构成控制软部件的单元件的状态转移机模型与构成控制硬部件、接口部件、集线器部件元件状态转移机模型大致相同,此处不再赘述。采取措施1的情况下,元件发生故障后可自动恢复的概率为:0.95*p2 = 0.0045,需要人工修复的概率为:0.05*p2 = 0.0002394。利用Stateflow建立如图2-5所示的状态转移机模型,并将其与外部模块一起封装成类似于图2-4所示的元件子系统。由于控制软部件由单元件组成,

11、因此该元件子系统模块就是控制软部件模块。图2-5构成控制软部件的元件状态转移机模型2.2.3 构成光电隔离器部件的元件模型构成光隔部件的所有元件特性满足独立同分布,对应参数:光隔部件组成元件的故障可以自行恢复,故障状态只持续1日。利用Stateflow建立如图2-6所示的状态转移机模型。并将其与外部模块一起封装成类似于图2-4所示的光电隔离器元件子系统。图2-6构成光电隔离器部件的元件状态转移机模型2.3 系统部件模型2.3.1控制硬部件、接口部件、集线器部件模型控制硬部件、接口部件、集线器部件都可以看做由20个统计特性独立元件构成的部件,并适用串联组合。因此,这些部件的状态应该是构成部件的所

12、有元件状态的逻辑与运算结果。图2-7控制硬部件、接口部件、集线器部件模型2.3.2控制软部件模型与控制软部件的元件模型一致。2.3.3光电隔离器部件模型光电隔离器可看作由5个统计特性独立元件构成的部件,其中任意3个元件无故障即能使该部件正常发挥效能,适用k-out-of-n组合,k=3, n=5。使用Simulink中的Sum 模块,将5个元件的输出状态相加,再使用Interval Test模块,测试Sum模块的输出,如果Sum模块的输出大于2,说明有2个以上的模块正常工作,Interval Test模块输出1,光电隔离器工作正常;否则Interval Test模块输出0,光电隔离器出现故障。

13、如图2-8所示。图2-8 光电隔离器部件模型3 故障的判定和记录3.1 系统状态记录在一些元件和部件的状态输出端连接一个To WorkSpace模块,在每一个时钟脉冲高电平到来的时候记录一次,顺序记录到数列中,1表示工作正常,0表示出现故障。仿真结束后赋值给Matlab工作区内的变量,以便统计仿真结果。3.2、3.3、3.4所述的三种情况中的To WorkSpace模块互相独立,互不干扰。例如:系统运行10天,某元件的状态数列为:1 1 0 0 0 1 1 1 1 1,表示该元件在第2天时发生故障,故障持续了3天,其余时刻工作正常。采用数列和矩阵的方式记录仿真结果,在使用Matlab处理结果时

14、,带来了很大的方便。本仿真系统的运行时间为8年,所以数列的每一行有365*8=2920个元素。3.2元件故障为了统计人工修理的次数,需要在所有的会出现“需要人工修复的故障”的元件的状态输出端外连接To WorkSpace模块。经统计,主机子系统不采用“双机热备”时,一共需要统计184个元件的状态;主机子系统采用“双机热备”时,需要统计225个元件的状态。下面以主机子系统不采用“双机热备”时为例:仿真结束后,得到184个元件状态数列,每一个数列有2920个元素,代表每个元件在2920天中的每一天的状态。将这些数列组合起来,得到一个184行、2920列的矩阵A。要计算一次仿真时人工修理的次数,只要

15、计算矩阵A内每一行“连0序列段”的个数。我们使用的算法是:在矩阵A第一列前加上一列“全1列”,然后计算矩阵A内满足以下条件的元素个数: 该元素的值为0,但是与它同一行前一个元素的值为1。3.3系统故障系统故障的定义:系统内若存在有失效状态的部件,则认为系统有故障。与3.2所述类似,在所有部件的状态输出端外连接To WorkSpace模块。经统计,主机子系统不采用“双机热备”时,一共需要统计15个部件的状态;主机子系统采用“双机热备”时,需要统计18个部件的状态。下面以主机子系统不采用“双机热备”时为例:仿真结束后,得到15个部件状态数列,每一个数列有2920个元素,代表每个部件在2920天中的

16、每一天的状态。将这些数列组合起来,得到一个15行、2920列的矩阵B。课题要求中规定:原因不同的两个或多个故障,如果首尾相连或者重叠发生,视作同一次故障。因此计算系统故障发生次数时,先对矩阵B进行处理,把矩阵B每一列的所有元素做逻辑与运算,得到一个1行、2920列的矩阵S。矩阵S中“连0序列段”的个数,就是一次仿真时系统故障的发生次数。3.4系统重大故障根据“系统重大故障”的定义,在特定的部件状态输出端外连接To WorkSpace模块。这里的特定部件为:1、 主机子系统的三个部件的状态做逻辑与运算后的状态输出。采用“双机热备”时,对两个主机子系统的状态做逻辑或运算后输出。2、 集线器部件的状

17、态输出。3、 在三个通信从机的接口电路旁分别附加一个有10%概率输出0的模块,将其输出与接口电路状态输出做逻辑或运算后连接To WorkSpace模块。如图3-1所示。4、 将3个通信子系统的状态按照k-out-of-n的形式连接后输出,当k<2时,输出为0。图3-1 10%概率输出0模块不采取措施1、2、3时,需要统计6处状态,采取措施2时,需要统计3处状态,采取措施1、2、3时,需要统计3处状态。计算系统重大故障发生次数的算法与3.3中所述的类似。先得到状态矩阵C,把矩阵C每一列的所有元素做逻辑与运算,得到一个1行、2920列的矩阵F。矩阵F中“连0序列段”的个数,就是一次仿真时系统

18、故障的发生次数。3.5 无故障运行天数计算3.3中得到的矩阵S中的“1”的个数,得到的结果就是一次仿真时系统的无故障运行天数。3.6 连续无故障运行天数计算3.3中得到的矩阵S中的“连1序列段”的个数和每段的长度。我们将结果存入矩阵中。例如:矩阵3 5 7表示有三个“连1序列段”,长度分别为3、5、7,表示系统有三段连续无故障运行时间,分别是3天、5天和7天。等到100次仿真做完,再汇总计算均值。3.7 连续无重大故障运行天数计算方法与3.6中所述类似,对矩阵F进行统计即可,此处不再赘述。4 仿真的控制和结果统计建立5个模型,分别对应课题要求上的5种情况,然后编写5个M文件控制一次仿真的进行并

19、返回结果,最后编写一个主程序对每种情况循环执行100次并统计结果,输出到文本文件。5 仿真结果分析每个模型仿真运行100次后,得到的结果如表5-1所示:表5-1 仿真结果汇总人工修理的平均次数系统故障的平均次数系统重大故障平均次数平均无故障运行天数平均连续无故障运行天数平均连续无重大故障运行天数不采取措施1、2、3308.7200214.7500119.34002124.65009.864721.5077单独采取措施1257.6800189.2500106.35002241.210011.796524.4923单独采取措施2305.2200211.8900103.60002134.960010

20、.043624.9534单独采取措施3375.8500239.520070.02001983.85008.256138.9686同时采取措施1、2、3309.6600213.530044.78002125.73009.922261.2814通过仔细分析仿真结果后我们发现:单独采取措施1后,“人工修理平均次数”、“系统故障平均次数”显著减少,这是由于采用了看门狗机制,使得绝大部分的软件故障能够自己恢复,减少了“人工修理平均次数”和“系统故障平均次数”。单独采取措施2后,“系统重大故障平均次数”与不采取措施相比,只是略有减少,这可能是由于由三台从机引起的“系统重大故障”在“系统重大故障”总数中所占

21、比例不是很大的关系。也有可能是样本数据发生了很大的偏移导致。单从仿真数据上来看,单独采取措施2,对系统可靠性的提升不是很显著。单独采取措施3后,“人工修理平均次数”和“系统故障平均次数”显著增加,这是因为增加了一台通信主机子系统,系统元件数增加,“人工修理平均次数”和“系统故障平均次数”也增加了。“系统重大故障平均次数”与不采取措施相比显著减少,这再次说明由通信主机引起的“系统重大故障”在“系统重大故障”总数中所占比例较高。从仿真数据上看,采取措施3以后,系统在面对“系统重大故障”时,可靠性有了显著提高,但这个提高是以系统普通故障数增加为代价换来的。同时采取措施1、2、3后,“人工修理平均次数

22、” 和“系统故障平均次数”与不采取任何措施时相近,这是因为采取措施1的正面效果与采取措施3的副作用相抵消的缘故。“系统重大故障的平均次数”和“平均连续无重大故障运行天数”均达到了最高。从仿真结果上看:同时采取措施1、2、3与不采取措施相比,只是显著提高了系统在面对“系统重大故障”时的可靠性。综上所述,采取措施1可以提升系统在面对普通故障时的可靠性,而且没有副作用;采取措施3可以提升系统在面对重大故障时的可靠性,但是会降低系统在面对普通故障时的可靠性。如果措施1、3同时使用,与不采取措施相比,措施1的正面效果被措施3完全抵消,仅能提升系统在面对重大故障时的可靠性。从仿真数据来看,措施2对系统可靠

23、性的提升影响不大。6 参考文献1 “主从多机通信系统可靠性建模研究”课题要求V37 附录7.1 程序代码主程序:function main% 这是主程序,控制仿真的进行,统计仿真的数据times = 100; %仿真进行的次数,也就是数据样本的个数fid = fopen('result.txt','wt'); %存放结果的文件for t = 1:5%-计算仿真模型的数据-temp1 = 0;temp2 = 0;temp3 = 0;temp4 = 0;temp5 = ;temp6 = ;a1 = 0;a2 = 0;a3 = 0;a4 = 0;a5 = 0;a51

24、= 0;a52 = 0;a6 = 0;a61 = 0;a62 = 0;for n = 1:timesnteval('temp1, temp2, temp3, temp4, temp5, temp6 = dowork',num2str(t)a1 = a1 + temp1;a2 = a2 + temp2;a3 = a3 + temp3;a4 = a4 + temp4;a51 = a51 + sum(temp5);a52 = a52 + length(temp5);a61 = a61 + sum(temp6);a62 = a62 + length(temp6);end;a1 = a1

25、/times; %人工修理的平均次数a2 = a2/times; %系统故障的平均发生次数a3 = a3/times; %系统重大故障的平均发生次数a4 = a4/times; %平均无故障运行天数a5 = a51/a52; %平均连续无故障运行天数a6 = a61/a62; %平均连续无重大故障运行天数output = a1 a2 a3 a4 a5 a6;fprintf(fid,'%6.4f %6.4f %6.4f %6.4f %6.4f %6.4fn',output);%-仿真模型的数据计算结束-end;fclose(fid);运行第一个仿真模型的程序dowork1,其他的

26、类似function count1, count2, count3, count4, count5, count6 = dowork1% work1用于运行第一个仿真模型(不采取措施1、2、3)并统计结果% data1 - data184 是每个元件的状态数列% part1 - part15 是每个部件件的状态数列% fatal1 - fatal5 是系统的重大故障数列,fatal6是根据slave1,slave2,slave3推测出来的重大故障数列% slave1,slave2,slave3是表示子系统工作状态的数列sim('work1',0,2920); %开始仿真,如果时

27、间为8年,那么应该这样设定:0,2920d1 = ; %初始化d1,d1是所有元件的状态矩阵,它的行数为元件数,列为每一天d2 = ; %初始化d2,d2是所有部件的状态矩阵,表示系统故障。它的行数为系统的部件个数,列为每一天d3 = ; %初始化d3,d3是系统的重大故障状态矩阵,表示重大系统故障。s = ; %初始化s,s表示整个系统的状态矩阵f = ; %初始化f,f表示整个系统的重大故障状态矩阵%-以下是计算人工修理次数的代码-count1 = 0; %count1是人工修理的次数for i = 1:184eval('d1 = d1,data',num2str(i),&

28、#39;'); %将所有的状态数列整合成矩阵end;d1 = d1'd1(:,1) = 1; %初始状态设定为1m, n = size(d1); %矩阵d1有m行,n列for i = 1:mfor j = 1:nif (d1(i,j) = 0) && (d1(i,j-1) = 0)count1 = count1 + 1;end;end;end;%-以下是计算系统故障数的代码-count2 = 0; %系统故障的发生次数for i = 1:15eval('d2 = d2,part',num2str(i),''); %将所有的状态数列

29、整合成矩阵end;d2 = d2'd2(:,1) = 1; %初始状态设定为1s = d2(1,:); %将d2的第一行赋值给sm1,n1 = size(d2); %矩阵d2有m1行,n1列for i = 1:m1for j = 1:n1s(1,j) = s(1,j) & d2(i,j); %把s分别与d2的每一行的相应元素做逻辑与运算end;end;for j = 1:n1if (s(1,j) = 0) && (s(1,j-1) = 0)count2 = count2 +1;end;end;%-以下是计算系统重大故障发生次数的代码-count3 = 0; %系

30、统重大故障发生次数fatal6 = slave1 + slave2 + slave3; %把三个子系统的状态相加。m2,n2 = size(fatal6); %矩阵fatal6有m2行,n2列for i = 1:m2if fatal6(i,1) < 2fatal6(i,1) = 0; %结果小于2,说明只有一台子系统在工作。elsefatal6(i,1) = 1;endendfor i = 1:6eval('d3 = d3,fatal',num2str(i),''); %将所有的状态数列整合成矩阵end;d3 = d3'd3(:,1) = 1; %

31、初始状态设定为1f = d3(1,:); %将d3的第一行赋值给fm3,n3 = size(d3); %矩阵d3有m3行,n3列for i = 1:m3for j = 1:n3f(1,j) = f(1,j) & d3(i,j); %把f分别与d3的每一行的相应元素做逻辑与运算end;end;for j = 1:n3if (f(1,j) = 0) && (f(1,j-1) = 0)count3 = count3 +1;end;end;%-以下是计算系统无故障运行天数的代码-%计算s矩阵内1的个数count4 = sum(s) - 1; %系统无故障运行天数%-以下是计算系

32、统连续无故障运行天数的代码-temp = -1;count5 = ; %系统连续无故障运行的完整时间段落(数列元素为时间段落的长度)m4,n4 = size(s); %矩阵s有m4行,n4列for j = 1:n4if s(1,j) = 1temp = temp + 1;elseif (s(1,j) = 0) && (s(1,j-1) = 0 ) && (temp = 0)count5 = count5,temp;temp = 0;end;end;if (temp = 0)count5 = count5,temp;end;%-以下是计算系统连续无重大故障运行天数的代码-temp2 = -1;count6 = ; %系统连续无重大故障运行的完整时间段落(数列元素为时间段落的长度)m5,n5 = size(f); %矩阵f有m5行,n5列for j = 1:n5if f(1,j) = 1temp2 = temp2 + 1;elseif (f(1,j) = 0) && (f(1,j-1) = 0 ) && (temp2 = 0)count6 = count6,temp2;temp2 = 0;end;end;if (temp2 = 0)count6 = count6,temp2;end;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!