车站联锁系统UPPAAL建模+时间自动机模型进行模拟仿真(20)_毕业论文

毕业论文移动版

毕业论文 > 数学论文 >

车站联锁系统UPPAAL建模+时间自动机模型进行模拟仿真(20)


 
图4.34  各模块间的消息处理流程图
4.6.2    消息处理模型
 
图4.35  联锁消息处理的时间自动机模型
联锁的进路控制流程也是和其他模块进行消息交流的过程。当联锁与其他模块的消息传递没有在规定时间内收到回复,则要进行相应的故障处理。
通常的超时处理做法是,发送端在发送消息a的同时会启动计时器。接收方收到消息a后,向发送方发送一反馈消息b。如果发送方在规定的时间内没有收到对方的反馈消息b,则认为出现通信故障。图4.35是联锁消息处理的时间自动机模型。
表4.7  消息处理模型主要位置、通道说明表
位置集合    通道集合
主要位置    说明    通道    说明
Idle    初始位置    RFC    请求建立链接
waitACK    等待ACK    ACK    建立链接应答
StartComu    开始正常通信    App_data    发送应用数据
settimer    设置定时器    SetTimer    时钟启动命令
WaitData    等待接收数据    timeout    超时报警
AppProc    应用处理阶段    Reset    时钟复位
Send    发送数据    NO_DATA    没有应用数据回复
noReplydata    没有得到回复消息    DATA_Reply    有应用数据恢复
check    检查是否超过最大周期    error    超时错误处理
Resend    应用数据重发        
Error_proc    错误处理状态        
当联锁发出RFC请求建链,接收方返回ACK后表示建立通信的连接。随后联锁发送应用数据并同时启动计时器。这时对于消息接收方的处理有两种情况:一种是在规定的时间内发送反馈消息,一种是超时没有回应,所以我建立了两个子模块来模拟接收方的消息处理。如图4.36所示。
          
图4.36  消息回复和未回复的两种时间自动机模型
右图表示在一个收到反馈消息,通过DATA_Reply传递给联锁:左图表示没有收到反馈消息,通过通道NO_DATA传递给联锁。
在规定时间内收到消息后,联锁还要通过变量haveAffirm判断这些消息中有没有还未确认应答的消息,就是发送方可以发送新数据还是需要重新发送一遍刚才的消息,如果有则重发消息(Resendmessg());如果没有则发送新的消息(newMessg())。如果超时没有收到对方的反馈消息,变量MAX_Time用来计算没有收到记的次数,连续5次没有收到数据,则表示通信故障,进入故障处理状态,不能办理进路。消息是否超时,主要靠时钟模块来控制。其时间自动机模型如图4.37所示。
 
图4.37  消息处理的定时器模块
这里我们需要一个启动模块来模拟当联锁发出请求RFC后,接收方收到后返回ACK,这里我们做了一个简单的接收模块,如图4.38所示。
 
图4.38  消息处理的接收方模块
这里消息处理超时后进入故障状态,为了不让进入故障状态后又被重新启动,这里添加了一个故障修理模块,即进入故障后就认为其在修理中,令Repair置1,在启动时先要判断Repair是否为0,如果为1则说明在修理,则无法启动。模块如图4.39所示。
 
图4.39  消息处理的故障修理模块 (责任编辑:qin)