睿遠(yuǎn)研究院丨IO-Link數(shù)據(jù)鏈路層解析
PART 01 鏈路層總覽
數(shù)據(jù)鏈路層(Data Link Layers)在整個(gè)IO-Link協(xié)議棧起到承上啟下的作用,通過物理鏈路在主從站之間傳遞消息,其包含消息處理模塊、模式轉(zhuǎn)換模塊、PD處理及OD處理模塊。
——DL層的主要功能和職責(zé)——
DL層定義了一組可供應(yīng)用層(AL)使用的DL-services,用于交換過程數(shù)據(jù)(PD)和按需數(shù)據(jù)(OD)。
DL層定義了另一組DL-services供系統(tǒng)管理(SM)使用,用于檢索設(shè)備識(shí)別參數(shù)和設(shè)置數(shù)據(jù)鏈路內(nèi)的狀態(tài)機(jī)。
DL層使用物理層服務(wù)(PL-Services)來控制物理層(PL)并交換UART幀。
DL層負(fù)責(zé)消息的錯(cuò)誤檢測(cè)(無論是內(nèi)部協(xié)議上的錯(cuò)誤還是從物理層報(bào)告的錯(cuò)誤)以及適當(dāng)?shù)募m正措施(例如重試)。
整體協(xié)議棧的開發(fā)90%的代碼基本集中在數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層包含四大模塊,On-RequestData、ProcessData、DL-Mode、Message。而OD又由三個(gè)小模塊組成,分別為ISDU、CMD和Event。
Message:和物理層打交道,處理物理層傳遞的消息,對(duì)消息進(jìn)行解碼,分析,緩存,交由其他模塊(PD和OD)處理,并接受其他模塊的數(shù)據(jù),并打包校驗(yàn)傳遞給物理層發(fā)送;
On-request:根據(jù)Message模塊傳遞過來的數(shù)據(jù)進(jìn)行分類,分別給ISDU、CMD、Event三個(gè)不同的模塊處理;
DL-mode:與SystemManagement模塊保持聯(lián)系,確定當(dāng)前從站或者主站所處的狀態(tài),比如是Pre Operate還是Operate狀態(tài)等。
Process Data:處理過程數(shù)據(jù)Input和Output。
PART 02 DL-Mode
DL-Mode的首要任務(wù)就是檢測(cè)喚醒信號(hào),并分別按照規(guī)定的速率進(jìn)行探測(cè)從站的實(shí)際速率。
當(dāng)主站準(zhǔn)備試圖與從站建立IO-Link通信時(shí),會(huì)先發(fā)一個(gè)喚醒信號(hào),并緊接著發(fā)送第一個(gè)消息( 0xA20 x00 ),該消息是讀取從站的CycleTime;
主站在喚醒請(qǐng)求(WURQ)之后,DL模塊在TREN時(shí)間和TDMT時(shí)間后,按照COM3、COM2和COM1的指定傳輸速率,順序發(fā)送測(cè)試消息,直到收到從站的報(bào)文響應(yīng)。
步驟1:主消息以COM3(230400bit/s)的傳輸速率發(fā)送;
步驟2:主消息以COM2(38400bit/s)的傳輸速率發(fā)送;
步驟3:主消息以COM1(4800bit/s)的傳輸速率發(fā)送;
步驟4:設(shè)備響應(yīng)消息以COM1的傳輸速率發(fā)送。
從上圖看,每隔500ms會(huì)重復(fù)相關(guān)的探測(cè),直到從站回復(fù)為止。那么每隔500ms發(fā)送的數(shù)據(jù)又是什么呢?請(qǐng)看下圖:
在一個(gè)發(fā)送周期內(nèi),其實(shí)還有三個(gè)小周期,規(guī)范里稱之為3次重試,即三次重試不成功后,會(huì)重新進(jìn)入SIO狀態(tài)并再次喚醒和檢測(cè)。
我們?cè)俜糯筮@個(gè)圖,看到如下每個(gè)重試小周期的具體序列,先喚醒,再三次不同速率的探測(cè)。
從這個(gè)理論可以得知,我們可以任意修改探測(cè)報(bào)文的速率,即如果可以同時(shí)修改主從站的速率,可以實(shí)現(xiàn)自定義的IO-Link速率,我們目前在400K的速率上成功實(shí)現(xiàn)IO-Link通信。
在數(shù)據(jù)鏈路層的時(shí)間檢測(cè)上,要遵循如下規(guī)則:
PART 03 關(guān)于Fallback
看過規(guī)范的小伙伴,應(yīng)該注意到IO-Link主站有發(fā)送fallback的能力,這個(gè)fallback命令可以是讓設(shè)備強(qiáng)制切換到SIO模式,這種命令在實(shí)際中可能用的比較少。
小編覺得這個(gè)命令對(duì)主站有實(shí)際效果,就是發(fā)送命令后,主站不再進(jìn)行IO-Link通信,轉(zhuǎn)而進(jìn)入DI/DO模式,當(dāng)然從站也要進(jìn)入DI/DO模式,即需要把Pin4的串口模式要轉(zhuǎn)變?yōu)镈I/DO模式。
規(guī)范要求在接受到Fallback指令后,最大500ms,就要切換到SIO模式。
OK,本篇就先介紹這里,下篇小編將針對(duì)主從站DL-Mode模塊的狀態(tài)機(jī),進(jìn)行一下詳細(xì)介紹,期待各位看官持續(xù)關(guān)注!

提交
睿遠(yuǎn)研究院丨IO-Link物理層編碼解析
【睿遠(yuǎn)研究院】IO-Link物理層概覽
IO-Link通信技術(shù)概述
睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀