图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  消息处理的故障修理模块
上一篇:基于EMD和分形理论的美元与国际油价的相关分析研究
下一篇:投资者情绪与股票收益率的关系研究

php+mysql校友信息管理系统设计

带有强占优先权的受控排队系统研究

基于灰色系统模型的周口市人口问题研究

某医院门诊系统患者分流模型研究

MEMS/NEMS双臂梁型微/纳机电系统Pull-in失稳分析

可微性在近似计算中的应用

孝陵卫苏果超市收费服务台排队系统统计分析

中国学术生态细节考察《...

医院财务风险因素分析及管理措施【2367字】

10万元能开儿童乐园吗,我...

志愿者活动的调查问卷表

承德市事业单位档案管理...

神经外科重症监护病房患...

AT89C52单片机的超声波测距...

公寓空调设计任务书

国内外图像分割技术研究现状

C#学校科研管理系统的设计