小程序
传感搜
传感圈

睿远研究院丨IO-Link规范解读(六):主从站状态机解析

2025-04-24 18:07:06
关注


主从站状态机解析

-IO-Link规范篇-


前言

书接上文,今天我们就来好好聊聊主从站的DL-Mode状态机,还请各位童鞋前排坐好!

01


主站状态机解析


主站的DL-Mode状态机有5个大状态,也是我们很熟悉的建立通信、开始、预操作、操作状态,各个状态之间通过一些命令来切换。


我们看一下每个事件的详细动作:

1

T1

Idle_0EstablishComm_1。清除wakeup的重试次数为0

2

T2~T4

EstablishComm_1Startup_2。依次以COM3~COM1来传出,一旦传输成功,则激活消息处理程序并配置为COMx

3

T5

EstablishComm_1Idle_0。三个速率都未成功,则退回Idle状态,并通知SM模块进入INACTIVE

4

T6

Startup_2Preoperate_3。SM模块请求PREOPERATE状态。激活OD、ISDU、Event三个模块进入Active状态,将MSG处理模块切换到PREOPERATE状态

5

T7

Preoperate_3Startup_2。 SM模块请求STARTUP状态。将MSG处理模块切换到STARTUP状态,去激活OD、ISDU、Event三个模块,返回STARTUP状态给SM模块

6

T8

Preoperate_3Idle_0。去激活所有处理程序,返回INACTIVE状态给系统管理

7

T9

Preoperate_3Idle_0。MSG检测到通信中断,则去激活所有处理程序,通知SM模块相关状态

8

T10

Preoperate_3Operate_4。 SM模块请求OPERATE状态。激活PD处理程序,将MSG处理模块切换到OPERATE状态;通知SM模块,DL已经进入OPERATE状态

9

T11

Startup_2Operate_4。 SM模块请求OPERATE状态。激活OD、ISDU、Event三个模块,将MSG处理模块切换到OPERATE状态

10

T12

Operate_4Startup_2SM模块请求STARTUP状态。将MSG处理模块切换到STARTUP状态,去激活OD、ISDU、Event三个模块,返回STARTUP状态给SM模块

11

T13

Operate_4Idle_0。SM模块设置SIO模式,去激活相关模块,返回INACTIVE状态

12

T14

Operate_4Idle_0。 MSG处理模块通过SM模块,与从站通信中断。去激活所有处理程序,返回COMLOST状态给SM模块

02


从站状态机解析


从站的状态机,看起来是不是和主站的很类似,但从站由于是被动式等待,它不像主站有主动发送3次报文的建立通信过程,它直接等待主站发送某一个速率的报文,一旦匹配就建立连接。其他三个状态和主站基本一致,它的切换主要是主站来发起切换命令。


具体的事件如下:

1

T1

Idle_0EstablishComm_1,当检测到唤醒电流脉冲时,激活消息处理模块并切换状态;DL_Mode切换到ESTABCOM状态,通知SM模块

2

T2

EstablishComm_1Startup_2,当成功建立COM3、COM2或COM1模式中的任意一个传输速率时,切换状态。激活OD和Command模块,DL_Mode切换到COM1、COM2或者COM3,通知SM模块进行Mode的切换

3

T3

Startup_2Preoperate_3当收到MCmd_PREOPERATE命令时,切换状态;当检测到非法的M序列类型时,返回到Startup_2状态

4

T4

Preoperate_3Operate_4当收到MCmd_OPERATE命令时,切换状态;激活PD处理模块,DL_Mode通知SM模块

5

T5

Startup_2Operate_4,当收到MCmd_OPERATE命令且设备支持V1.0模式时,切换状态到Operate_4;激活PD处理模块,ISDU处理模块,Event处理模块,DL_Mode通知SM模块

6

T6

Preoperate_3Startup_2,当收到MCmd_STARTUP命令时,将状态设置为Startup_2;去使能ISDU、Event模块

7

T7

Operate_4Startup_2,当收到MCmd_STARTUP命令时,将状态设置为Startup_2;将模块(PD、ISDU、Event)置为非活动状态

8

T8

Preoperate_3Idle_0,当收到MCmd_FALLBACK命令时,等待TFBD的时间,然后将所有模块置为非活动状态,状态设置为Idle_0

9

T9

Operate_4Idle_0,当收到MCmd_FALLBACK命令时,等待TFBD的时间,然后将所有模块置为非活动状态,状态设置为Idle_

10

T10

EstablishComm_1Idle_0,当唤醒过程失败后,经过一段时间TDSIO后,从站进入SIO模式,将所有模块置为非活动状态,状态设置为Idle_0

11

T11

Operate_4Startup_2,当消息处理模块(MessageHandler)检测到非法的M序列类型时,将模块(PD、ISDU、Event)置为非活动状态,状态设置为Startup_2DL_Mode通知SM模块进入Startup状态

12

T12

Preoperate_3Startup_2,当消息处理模块(MessageHandler)检测到非法的M序列类型时,将ISDU和Event handler置为非活动状态,状态设置为Startup_2DL_Mode通知SM模块进入Startup状态


  写在最后  


如果大家正在使用睿远的从站协议栈,应该会发现其中有两个判断DL-Mode的函数

第一个是判断当前是否为idle阶段,如果是idle阶段,在收到唤醒报文后,开始尝试建立连接;另一个就是判断当前DL的Mode是在哪个阶段,方便用户判断当前状态。

好了,本篇把主站和从站的DL-Mode状态机详细解析了一遍,相信大家对DL-Mode这个模块应当会更加熟悉了。下一期,我们就开始介绍最最重要的,IO-Link的消息模块。 

<<<  END >>>

  微信号丨Rasight    

       官方网站丨www.rasight.cn

您觉得本篇内容如何
评分

评论

您需要登录才可以回复|注册

提交评论

广告

Rasight

南京睿远工业互联专注于IO-Link研发、智能传感器方案应用

关注

点击进入下一篇

睿远研究院丨IO-Link规范解读(五):数据链路层解析

提取码
复制提取码
点击跳转至百度网盘