工控網(wǎng)首頁
>

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

>

睿遠(yuǎn)研究院丨IO-Link M序列解析

睿遠(yuǎn)研究院丨IO-Link M序列解析

2025/6/13 10:01:15

前言

上回咱們分解到IO-Link的消息處理模塊,消息處理模塊就是對(duì)每個(gè)字節(jié)進(jìn)行初步分析,按照不同的通道交給不同的處理模塊來處理,可以認(rèn)為他是初步的消息分揀機(jī)制,合格的消息交給后續(xù)處理,不合格的消息直接丟棄,減少后端工作量。

那么今天我們就來深入研究下,消息處理模塊中提到的各類M-Sequence,以及主從站的消息處理狀態(tài)機(jī)!

01 M-Sequence Type

上回講到主站發(fā)出來的MCCKT兩個(gè)報(bào)文,其中CKT 前的2bit是指M-Sequence Type,那么這個(gè)M-Sequence type到底有啥用,我們看規(guī)范里M-Sequence有好多種,到底怎么區(qū)分,今天就來好好講講。

在規(guī)范的A.2.6部分,就詳細(xì)介紹了關(guān)于STARTUP、PREOPERATE、OPERATE三種模式下的M-Sequence Type。

01 / STARTUP下的M-Sequence Type圖片

上圖就是STARTUP模式下的M-Sequence Type,規(guī)范就定了一種即TYPE_0,1字節(jié),同時(shí)規(guī)定了其最小recovery time是100TBit。

這個(gè)最小的recovery time簡(jiǎn)單理解為循環(huán)時(shí)間就行,也就是主站每隔100TBit主動(dòng)發(fā)起數(shù)據(jù),這個(gè)時(shí)間和通訊速率有關(guān)系,如果是COM3,則是400多us的時(shí)間;如果低于這個(gè)時(shí)間在規(guī)范看來是不合理的。

02 / PREOPERATE下的M-Sequence Type

圖片

PREOPERATE模式下,M-Sequence Type 可以有TYPE_0和TYPE_1,TYPE_1又分解為TYPE_1_2和TYPE_1_V,也就是OD字節(jié)長(zhǎng)度不一樣而已;

一般市面上的從站,都是TYPE_1_V類型,字節(jié)長(zhǎng)度在8字節(jié)左右,也有部分是2字節(jié),比如巴魯夫的某些產(chǎn)品就是2字節(jié)。

M-Sequence code就是對(duì)他的編碼,用于在IO-Link報(bào)文中進(jìn)行傳輸,可以看到PREOPERATE模式下有4個(gè)code可以用。

03 / OPERATE下的M-Sequence Type

圖片

再來看看OPERATE下的M-Sequence Type,其一下子增加了好多code,有21個(gè)之多,但大部分都是重復(fù)的0,而且沒有2和3這兩個(gè)code,很是奇怪。

那么這么多code怎么來區(qū)分呢,它是根據(jù)OD的字節(jié)和PD字節(jié)來區(qū)分的。

??1~4行:

這里很好辨認(rèn),就是OD字節(jié)不同,其code也不同,OD的字節(jié)只有1,2,8,32四種,沒有其他字節(jié)選項(xiàng);

??5~13行:

OD都是1個(gè)字節(jié)(除了兼容1.0版本OD是2個(gè)字節(jié)外),然后根據(jù)PD的字節(jié)數(shù),拆分為多個(gè)類型,覆蓋TYPE_2_1~TYPE_2_V;

??14~21行

根據(jù)不同的OD字節(jié),確定不同的code,但都是TYPE_2_V類型。

02 主站消息處理狀態(tài)機(jī)

圖片

圖片

03 從站消息處理狀態(tài)機(jī)

圖片

圖片

T1

Inactive_0Idle_1,通過消息模塊的初始化實(shí)現(xiàn)。

T2

Idle_1GetMessage_2,當(dāng)物理層有中斷,接收到一個(gè)報(bào)文后,觸發(fā)PL_Transfer事件,在OPERATE狀態(tài)下動(dòng)"MaxUARTframeTime""MaxCycleTime"定時(shí)器。

T3

持續(xù)接收?qǐng)?bào)文,每次接到報(bào)文需要重新啟動(dòng)"MaxUARTframeTime"計(jì)時(shí)器,用于判斷下一個(gè)消息是否會(huì)超時(shí)。

T4

判斷報(bào)文接收完畢后,觸發(fā)”Completed”事件,進(jìn)入CheckMessage_3狀態(tài),重置"MaxUARTframeTime"定時(shí)器,直到下次收?qǐng)?bào)文的循環(huán)再開啟。

T5

檢查接收的報(bào)文是否有錯(cuò)誤,如果沒有錯(cuò)誤則開始發(fā)送相關(guān)回應(yīng)的報(bào)文,需要調(diào)用OD.indPD.ind服務(wù)。

T6

編譯并調(diào)用PL_Transfer.rsp服務(wù)回應(yīng)報(bào)文,此時(shí)設(shè)備發(fā)送響應(yīng)消息。

T7

檢查主站發(fā)送的報(bào)文,如果是Checksum Error,則直接回到Idel狀態(tài)。

T8

檢查主站發(fā)送的報(bào)文,如果不是checksun error ,而是M-Sequence的Type錯(cuò)誤,則通過MHInfo(ILLEGAL_MESSAGETYPE將錯(cuò)誤指示給DL-mode處理程序。

T9

GetMessage_2狀態(tài)下,如果超過了最大MaxUARTframeTime,則返回Idle狀態(tài),并重置"MaxUARTframeTime"和"MaxCycleTime"兩個(gè)計(jì)時(shí)器。

T10

超過MaxCycleTime時(shí)間,則通知傳感器或者執(zhí)行器采取相關(guān)措施。

T11

從站收到MH_Conf_INACTIVE事件,將狀態(tài)更改為Inactive_0

結(jié)語

本篇內(nèi)容就先介紹到這里,下期我們開始分解PD和OD處理模塊,還請(qǐng)各位關(guān)注微信公眾號(hào):Rasight,第一時(shí)間獲取內(nèi)容更新!

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

提交

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

查看更多

睿遠(yuǎn)研究院丨IO-Link消息處理模塊

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

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

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

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