睿远研究院丨IO-Link规范解读(六):主从站状态机解析
前言
书接上文,今天我们就来好好聊聊主从站的DL-Mode状态机,还请各位童鞋前排坐好!
1主站状态机解析

主站的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模块
2 从站状态机解析

从站的状态机,看起来是不是和主站的很类似,但从站由于是被动式等待,它不像主站有主动发送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的消息模块。
- 雷科电力-REKE-5A大地网接地电阻测试仪
- 海阔千帆竞 潮涌自贸港——海南自由贸易港即将封关启新程,海阔千帆竞 潮涌自贸港——海南自由贸易港即将封关启新程
- 润石科技推出超低噪声自稳零运算放大器RS8547/RS8548
- 进博会“全勤生”再发力:三星首款Micro RGB电视推动显示行业迈向微米级时代
- 中绿电召开2025年半年度业绩说明会
- 吉事励DCL-R系列大功率可调负载箱:精准模拟,稳定可靠
- 丽尚国潮荣膺2025财联社“最佳投资者关系团队奖”
- 倾佳电子为客户提供碳化硅MOSFET样品申请及PLECS器件仿真模型文件
- 不同电压等级对应的隔离电压底线是多少?
- 华为赋能 + 黑科技亮相!希影投影仪闪耀南山羽企同行展会,林丹为决赛冠军颁奖
- 亚成微荣膺第五批陕西省制造业单项冠军企业称号
- 电能质量在线监测装置的暂态事件记录的事件记录容量是多少?
- 精准维修:安捷伦N6701A模块化电源系统主机深度修复与校准
- 针对用电设备安全,安科瑞AIM-D100系列直流绝缘监测仪产品方案科普
- 深入解析ADC12L066:高性能12位A/D转换器的全方位指南
- 低功耗+强适配!YSN8563MS RTC+YST310S晶振,打造智能门锁计时黄金组合