PlantSimulation学习笔记:3种故障模式(Failure relates to)详解

尽管3种故障模式在PtS的Help中有英文解释,但这些解释很零散,且每次遇到相关问题时总是要花大量时间去回忆和搞清细节,这次就一劳永逸的搞定此问题.

以Station为例

每条Failure可以理解为由Interval和Duration组成:Interval可以理解为故障间隔时间,即两次故障之间的无故障时间;Duration可以理解为故障修复时间,即故障发生到故障结束的时间

每条故障都是按照Failure relates to中的Mode去独立计算自己Interval的,只不过什么状态的时间可以被算作Interval,每种Mode都不一样:

1.SimulationTimeMode:Station任何状态下经过的仿真时间SimTime都能算做Interval

2.OperatingTimeMode:[Unplanned],[Pause],[Failed]这3种状态下不计算Interval

3.ProcessingTimeMode:Interval只算ProcTime.[Unplanned],[Pause],[Failed],[Stopped],[Blocked],[Waiting],[Setting-up]这7种状态下均不计算Interval,只有[Working]状态下计算Interval

每当Interval结束就会开始Duration,注意这里我强调的是"将"开始,不一定是立即开始,因为不同Mode下Duration发生条件也不同:

1.SimulationTimeMode下会在任何状态下开始Duration,即开始故障

2.OperatingTimeMode下会在除[Unplanned],[Pause],[Failed]以外的情况下开始Duration

3.ProcessingTimeMode下只会在Working状态开始Duration

 这意味着,Station中多个SimulationTimeMode的Failure中的Duration会重叠(包括部分重叠或全部重叠),而Station中多个OperatingTimeMode的Failure中的Duration不会重叠,Station中多个ProcessingTimeMode的Failure中的Duration也不会重叠.因为OperatingTimeMode和ProcessingTimeMode的Duration的开始条件是Failed=false.(这里还要强调一下,"重叠"只是一种比喻.其实每个Failure的Duration和Intervel本质上都是单独计算的,每个Failure的Duration只要满足条件就会开始,某个Failure的Duration不开始只是因为Duration开始的条件不满足,所以它就不开始)

如下图所示:

 那么,如果Station中有不同Mode的Failure会怎样?

 上图中,Station有SimulationTimeMode和OperatingTimeMode的Failure各一个,实验A1_B1和实验A1_B2的区别只是F1F2的Mode互换了一下.对比两个实验可以发现一个现象:

A1_B1实验中,EventController判定SimulationTimeMode的故障先发生,那么Station变为了Failed状态,因此OperatingTimeMode的F2在5:00时Interval结束了,但此时Failed=true,F2的Duration的发生条件不满足,因此在10:00F1的Duration结束后,Failed=false的一瞬间,F2的Duration发生条件满足了,所以发生了.由于每条Failure的Interval是单独计算的,15:00时,F1的第2个Interval刚好结束,所以F1的第2个Duration开始.而25:00时,F2的第2个Interval才结束,开始F2的第2个Duration,同时F1的第3个Interval也结束了,F1是SimulationTimeMode,Duration的发生条件只有一个,就是Interval结束.所以F1的Duration也同时开始了.

A1_B1实验还能看出,尽管F1F2的Interval都是5:00,F1还是先发生了,说明EventController按照某种规则,会先执行Station中多个Failure的其中一个.至于具体是什么样的规则,我还没有结论,不过以下实验可以提供一些线索:

 Duration和Interval还有以下性质

Duration一旦开始,在故障过程中,除强制Failed=false以外,不管选什么Mode,不管状态变为Unplanned,Pause,Stopped,Blocked,Waiting,Setting-up,Duration都将继续直到结束.

Interval则与Duration不同,它始终会从符合Mode的时间点开始计算.

比如:OperatingMode下,Station在故障中Unplanned=true了(下班),这个故障依然将继续,直到Duration结束.但Interval的计算会从Unplanned=false(第二班开始)后才开始计算.

另附:

ProcessingTimeMode中Setting-up状态不计算Interval的证明

以上内容都在15.2版本下进行过测试

另外在测试时发现几个现象,也很重要:

Failure的Start=0的情况下,Failure总是以Interval开始,而不是从Duration开始.

但如果Start/=0,Duration开始,不管Interval设为多少.比如Interval设为Const[5:00],Start设为Const[2:00],在时间控制器2:00时就会开始故障.

发现多条故障同时发生的情况下(比如设3个Failure:F1,F2,F3.Interval都相同),Station的属性FailDuration只会记住第1个发生的故障的DurationInterval(比如如果F1先发生,就只记录F1Duration),而紧接着后面发生的Duration和Interval既不累加也不刷新记录(实测16.1版本也是这样).所以用Duration,Interval去记录故障和正常的时长是不行的. 还是要用OnFail去记录.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值