上回咱們分解到IO-Link的消息處理模塊,消息處理模塊就是對(duì)每個(gè)字節(jié)進(jìn)行初步分析,按照不同的通道交給不同的處理模塊來(lái)處理,可以認(rèn)為他是初步的消息分揀機(jī)制,合格的消息交給后續(xù)處理,不合格的消息直接丟棄,減少后端工作量。
那么今天我們就來(lái)深入研究下,消息處理模塊中提到的各類M-Sequence,以及主從站的消息處理狀態(tài)機(jī)!

1 M-Sequence Type
上回講到主站發(fā)出來(lái)的MC和CKT兩個(gè)報(bào)文,其中CKT 前的2bit是指M-Sequence Type,那么這個(gè)M-Sequence type到底有啥用,我們看規(guī)范里M-Sequence有好多種,到底怎么區(qū)分,今天就來(lái)好好講講。
在規(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ī)范看來(lái)是不合理的。
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

再來(lái)看看OPERATE下的M-Sequence Type,其一下子增加了好多code,有21個(gè)之多,但大部分都是重復(fù)的0,而且沒(méi)有2和3這兩個(gè)code,很是奇怪。
那么這么多code怎么來(lái)區(qū)分呢,它是根據(jù)OD的字節(jié)和PD字節(jié)來(lái)區(qū)分的。
1~4行:
這里很好辨認(rèn),就是OD字節(jié)不同,其code也不同,OD的字節(jié)只有1,2,8,32四種,沒(méi)有其他字節(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類型。
2 主站消息處理狀態(tài)機(jī)


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


1
T1
從Inactive_0到Idle_1,通過(guò)消息模塊的初始化實(shí)現(xiàn)。
2
T2
從Idle_1到GetMessage_2,當(dāng)物理層有中斷,接收到一個(gè)報(bào)文后,觸發(fā)PL_Transfer事件,在OPERATE狀態(tài)下動(dòng)"MaxUARTframeTime"和"MaxCycleTime"定時(shí)器。
3
T3
持續(xù)接收?qǐng)?bào)文,每次接到報(bào)文需要重新啟動(dòng)"MaxUARTframeTime"計(jì)時(shí)器,用于判斷下一個(gè)消息是否會(huì)超時(shí)。
4
T4
判斷報(bào)文接收完畢后,觸發(fā)”Completed”事件,進(jìn)入CheckMessage_3狀態(tài),重置"MaxUARTframeTime"定時(shí)器,直到下次收?qǐng)?bào)文的循環(huán)再開(kāi)啟。
5
T5
檢查接收的報(bào)文是否有錯(cuò)誤,如果沒(méi)有錯(cuò)誤則開(kāi)始發(fā)送相關(guān)回應(yīng)的報(bào)文,需要調(diào)用OD.ind和PD.ind服務(wù)。
6
T6
編譯并調(diào)用PL_Transfer.rsp服務(wù)回應(yīng)報(bào)文,此時(shí)設(shè)備發(fā)送響應(yīng)消息。
7
T7
檢查主站發(fā)送的報(bào)文,如果是Checksum Error,則直接回到Idel狀態(tài)。
8
T8
檢查主站發(fā)送的報(bào)文,如果不是checksun error ,而是M-Sequence的Type錯(cuò)誤,則通過(guò)MHInfo(ILLEGAL_MESSAGETYPE)將錯(cuò)誤指示給DL-mode處理程序。
9
T9
在GetMessage_2狀態(tài)下,如果超過(guò)了最大MaxUARTframeTime,則返回Idle狀態(tài),并重置"MaxUARTframeTime"和"MaxCycleTime"兩個(gè)計(jì)時(shí)器。
10
T10
超過(guò)MaxCycleTime時(shí)間,則通知傳感器或者執(zhí)行器采取相關(guān)措施。
11
T11
從站收到MH_Conf_INACTIVE事件,將狀態(tài)更改為Inactive_0。
結(jié)語(yǔ)
本篇內(nèi)容就先介紹到這里,下期我們開(kāi)始分解PD和OD處理模塊!
-
IO-Link
+關(guān)注
關(guān)注
2文章
199瀏覽量
20684 -
IO-Link收發(fā)器
+關(guān)注
關(guān)注
0文章
16瀏覽量
6292
發(fā)布評(píng)論請(qǐng)先 登錄
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十五):數(shù)據(jù)類型詳解
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十四):DS模塊詳解
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十三):參數(shù)模塊解析
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十二):SM模塊與CM模塊解析
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十一):ISDU狀態(tài)機(jī)與EVENT事件
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十):ISDU詳解
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(七):消息處理模塊
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(六):主從站狀態(tài)機(jī)解析
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(三):物理層概覽
IO-Link規(guī)范解讀(五):數(shù)據(jù)鏈路層解析
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(二):IO-Link通信技術(shù)概述
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(一):技術(shù)定義與組織規(guī)范
RASIGHT 睿遠(yuǎn) IO-Link智能傳感器通信解決方案
Analog Devices / Maxim Integrated MAXREFDES177 IO-Link通用模擬IO特性/框圖
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(八):M-Sequence Type 與消息處理狀態(tài)機(jī)
評(píng)論