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

Rasight 20250424

  • DL-Mode状态机


主从站状态机解析

-IO-Link规范篇-


前言

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

01


主站状态机解析


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


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

1

T1

从Idle_0到EstablishComm_1。清除wakeup的重试次数为0

2

T2~T4

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

3

T5

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

4

T6

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

5

T7

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

6

T8

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

7

T9

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

8

T10

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

9

T11

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

10

T12

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

11

T13

从Operate_4到Idle_0。SM模块设置SIO模式,去激活相关模块,返回INACTIVE状态

12

T14

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

02


从站状态机解析


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


具体的事件如下:

1

T1

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

2

T2

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

3

T3

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

4

T4

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

5

T5

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

6

T6

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

7

T7

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

8

T8

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

9

T9

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

10

T10

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

11

T11

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

12

T12

从Preoperate_3到Startup_2,当消息处理模块(MessageHandler)检测到非法的M序列类型时,将ISDU和Event handler置为非活动状态,状态设置为Startup_2;DL_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 SSP行规解读(四):PD数据规则
    Rasight
    17小时前
  • 矢志不渝 砥砺前行丨纪念抗日战争胜利80周年
    Rasight
    5天前
  • 睿远研究院丨IO-Link规范解读(十五):CM配置管理模块详解
    Rasight
    06-10 17:30

期刊订阅

相关推荐

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

    2025-04-27

评论0条评论

×
私信给Rasight

点击打开传感搜小程序 - 速览海量产品,精准对接供需

  • 收藏

  • 评论

  • 点赞

  • 分享

收藏文章×

已选择0个收藏夹

新建收藏夹
完成
创建收藏夹 ×
取消 保存

1.点击右上角

2.分享到“朋友圈”或“发送给好友”

×

微信扫一扫,分享到朋友圈

推荐使用浏览器内置分享功能

×

关注微信订阅号

关注微信订阅号,了解更多传感器动态

  • #{faceHtml}

    #{user_name}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 查看评论 回复

    共#{comment_count}条评论

    加载更多

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} #{reback} 回复

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 回复

  • 关闭
      广告