工控網(wǎng)首頁(yè)
>

應(yīng)用設(shè)計(jì)

>

睿遠(yuǎn)研究院丨IO-Link主從狀態(tài)機(jī)解析

睿遠(yuǎn)研究院丨IO-Link主從狀態(tài)機(jī)解析

2025/5/21 9:47:24

前言

書接上文,今天我們就來(lái)好好聊聊主從站的DL-Mode狀態(tài)機(jī),還請(qǐng)各位童鞋前排坐好!

01 主站狀態(tài)機(jī)解析

圖片

主站的DL-Mode狀態(tài)機(jī)有5個(gè)大狀態(tài),也是我們很熟悉的建立通信、開始、預(yù)操作、操作狀態(tài),各個(gè)狀態(tài)之間通過(guò)一些命令來(lái)切換。

圖片

我們看一下每個(gè)事件的詳細(xì)動(dòng)作:

1 T1

從Idle_0到EstablishComm_1。清除wakeup的重試次數(shù)為0

2 T2~T4

從EstablishComm_1到Startup_2。依次以COM3~COM1來(lái)傳出,一旦傳輸成功,則激活消息處理程序并配置為COMx

3 T5

從EstablishComm_1到Idle_0。三個(gè)速率都未成功,則退回Idle狀態(tài),并通知SM模塊進(jìn)入INACTIVE

4 T6

從Startup_2到Preoperate_3。SM模塊請(qǐng)求PREOPERATE狀態(tài)。激活OD、ISDU、Event三個(gè)模塊進(jìn)入Active狀態(tài),將MSG處理模塊切換到PREOPERATE狀態(tài)

5 T7

從Preoperate_3到Startup_2。 SM模塊請(qǐng)求STARTUP狀態(tài)。將MSG處理模塊切換到STARTUP狀態(tài),去激活OD、ISDU、Event三個(gè)模塊,返回STARTUP狀態(tài)給SM模塊

6 T8

從Preoperate_3到Idle_0。去激活所有處理程序,返回INACTIVE狀態(tài)給系統(tǒng)管理

7 T9

從Preoperate_3到Idle_0。MSG檢測(cè)到通信中斷,則去激活所有處理程序,通知SM模塊相關(guān)狀態(tài)

8 T10

從Preoperate_3到Operate_4。 SM模塊請(qǐng)求OPERATE狀態(tài)。激活PD處理程序,將MSG處理模塊切換到OPERATE狀態(tài);通知SM模塊,DL已經(jīng)進(jìn)入OPERATE狀態(tài)

9 T11

從Startup_2到Operate_4。 SM模塊請(qǐng)求OPERATE狀態(tài)。激活OD、ISDU、Event三個(gè)模塊,將MSG處理模塊切換到OPERATE狀態(tài)

10 T12

從Operate_4到Startup_2SM模塊請(qǐng)求STARTUP狀態(tài)。將MSG處理模塊切換到STARTUP狀態(tài),去激活OD、ISDU、Event三個(gè)模塊,返回STARTUP狀態(tài)給SM模塊

11 T13

從Operate_4到Idle_0。SM模塊設(shè)置SIO模式,去激活相關(guān)模塊,返回INACTIVE狀態(tài)

12 T14

從Operate_4到Idle_0。 MSG處理模塊通過(guò)SM模塊,與從站通信中斷。去激活所有處理程序,返回COMLOST狀態(tài)給SM模塊

02 從站狀態(tài)機(jī)解析

圖片

從站的狀態(tài)機(jī),看起來(lái)是不是和主站的很類似,但從站由于是被動(dòng)式等待,它不像主站有主動(dòng)發(fā)送3次報(bào)文的建立通信過(guò)程,它直接等待主站發(fā)送某一個(gè)速率的報(bào)文,一旦匹配就建立連接。其他三個(gè)狀態(tài)和主站基本一致,它的切換主要是主站來(lái)發(fā)起切換命令。具體的事件如下:

1 T1

從Idle_0到EstablishComm_1,當(dāng)檢測(cè)到喚醒電流脈沖時(shí),激活消息處理模塊并切換狀態(tài);DL_Mode切換到ESTABCOM狀態(tài),通知SM模塊

2 T2

從EstablishComm_1到Startup_2,當(dāng)成功建立COM3、COM2或COM1模式中的任意一個(gè)傳輸速率時(shí),切換狀態(tài)。激活OD和Command模塊,DL_Mode切換到COM1、COM2或者COM3,通知SM模塊進(jìn)行Mode的切換

3 T3

從Startup_2到Preoperate_3,當(dāng)收到MCmd_PREOPERATE命令時(shí),切換狀態(tài);當(dāng)檢測(cè)到非法的M序列類型時(shí),返回到Startup_2狀態(tài)

4 T4

從Preoperate_3到Operate_4,當(dāng)收到MCmd_OPERATE命令時(shí),切換狀態(tài);激活PD處理模塊,DL_Mode通知SM模塊

5 T5

從Startup_2到Operate_4,當(dāng)收到MCmd_OPERATE命令且設(shè)備支持V1.0模式時(shí),切換狀態(tài)到Operate_4;激活PD處理模塊,ISDU處理模塊,Event處理模塊,DL_Mode通知SM模塊

6 T6

從Preoperate_3到Startup_2,當(dāng)收到MCmd_STARTUP命令時(shí),將狀態(tài)設(shè)置為Startup_2;去使能ISDU、Event模塊

7 T7

從Operate_4到Startup_2,當(dāng)收到MCmd_STARTUP命令時(shí),將狀態(tài)設(shè)置為Startup_2;將模塊(PD、ISDU、Event)置為非活動(dòng)狀態(tài)

8 T8

從Preoperate_3到Idle_0,當(dāng)收到MCmd_FALLBACK命令時(shí),等待TFBD的時(shí)間,然后將所有模塊置為非活動(dòng)狀態(tài),狀態(tài)設(shè)置為Idle_0

9 T9

從Operate_4到Idle_0,當(dāng)收到MCmd_FALLBACK命令時(shí),等待TFBD的時(shí)間,然后將所有模塊置為非活動(dòng)狀態(tài),狀態(tài)設(shè)置為Idle_

10 T10

從EstablishComm_1到Idle_0,當(dāng)喚醒過(guò)程失敗后,經(jīng)過(guò)一段時(shí)間TDSIO后,從站進(jìn)入SIO模式,將所有模塊置為非活動(dòng)狀態(tài),狀態(tài)設(shè)置為Idle_0

11 T11

從Operate_4到Startup_2,當(dāng)消息處理模塊(MessageHandler)檢測(cè)到非法的M序列類型時(shí),將模塊(PD、ISDU、Event)置為非活動(dòng)狀態(tài),狀態(tài)設(shè)置為Startup_2。DL_Mode通知SM模塊進(jìn)入Startup狀態(tài)

12 T12

從Preoperate_3到Startup_2,當(dāng)消息處理模塊(MessageHandler)檢測(cè)到非法的M序列類型時(shí),將ISDU和Event handler置為非活動(dòng)狀態(tài),狀態(tài)設(shè)置為Startup_2;DL_Mode通知SM模塊進(jìn)入Startup狀態(tài)

  寫在最后  

如果大家正在使用睿遠(yuǎn)的從站協(xié)議棧,應(yīng)該會(huì)發(fā)現(xiàn)其中有兩個(gè)判斷DL-Mode的函數(shù):

圖片

第一個(gè)是判斷當(dāng)前是否為idle階段,如果是idle階段,在收到喚醒報(bào)文后,開始嘗試建立連接;另一個(gè)就是判斷當(dāng)前DL的Mode是在哪個(gè)階段,方便用戶判斷當(dāng)前狀態(tài)。

好了,本篇把主站和從站的DL-Mode狀態(tài)機(jī)詳細(xì)解析了一遍,相信大家對(duì)DL-Mode這個(gè)模塊應(yīng)當(dāng)會(huì)更加熟悉了。下一期,我們就開始介紹最最重要的,IO-Link的消息模塊。 

審核編輯(
王靜
)
投訴建議

提交

查看更多評(píng)論
其他資訊

查看更多

睿遠(yuǎn)研究院丨IO-Link數(shù)據(jù)鏈路層解析

睿遠(yuǎn)研究院丨IO-Link物理層編碼解析

【睿遠(yuǎn)研究院】IO-Link物理層概覽

IO-Link通信技術(shù)概述

睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀