工控網首頁
>

應用設計

>

睿遠研究院丨IO-Link數據鏈路層解析

睿遠研究院丨IO-Link數據鏈路層解析

2025/5/15 15:17:13

PART 01 鏈路層總覽

數據鏈路層(Data Link Layers)在整個IO-Link協議棧起到承上啟下的作用,通過物理鏈路在主從站之間傳遞消息,其包含消息處理模塊、模式轉換模塊、PD處理及OD處理模塊。

——DL層的主要功能和職責——

DL層定義了一組可供應用層(AL)使用的DL-services,用于交換過程數據(PD)和按需數據(OD)。

DL層定義了另一組DL-services供系統管理(SM)使用,用于檢索設備識別參數和設置數據鏈路內的狀態機。

DL層使用物理層服務(PL-Services)來控制物理層(PL)并交換UART幀。

DL層負責消息的錯誤檢測(無論是內部協議上的錯誤還是從物理層報告的錯誤)以及適當的糾正措施(例如重試)。

圖片

整體協議棧的開發90%的代碼基本集中在數據鏈路層。數據鏈路層包含四大模塊,On-RequestData、ProcessData、DL-Mode、Message。而OD又由三個小模塊組成,分別為ISDU、CMD和Event。

圖片

Message:和物理層打交道,處理物理層傳遞的消息,對消息進行解碼,分析,緩存,交由其他模塊(PD和OD)處理,并接受其他模塊的數據,并打包校驗傳遞給物理層發送;

On-request:根據Message模塊傳遞過來的數據進行分類,分別給ISDU、CMD、Event三個不同的模塊處理;

DL-mode:與SystemManagement模塊保持聯系,確定當前從站或者主站所處的狀態,比如是Pre Operate還是Operate狀態等。

Process Data:處理過程數據Input和Output。

PART 02 DL-Mode

圖片

DL-Mode的首要任務就是檢測喚醒信號,并分別按照規定的速率進行探測從站的實際速率。

當主站準備試圖與從站建立IO-Link通信時,會先發一個喚醒信號,并緊接著發送第一個消息( 0xA20 x00 ),該消息是讀取從站的CycleTime;

主站在喚醒請求(WURQ)之后,DL模塊在TREN時間和TDMT時間后,按照COM3、COM2和COM1的指定傳輸速率,順序發送測試消息,直到收到從站的報文響應。

步驟1:主消息以COM3(230400bit/s)的傳輸速率發送;

步驟2:主消息以COM2(38400bit/s)的傳輸速率發送;

步驟3:主消息以COM1(4800bit/s)的傳輸速率發送;

步驟4:設備響應消息以COM1的傳輸速率發送。

圖片

從上圖看,每隔500ms會重復相關的探測,直到從站回復為止。那么每隔500ms發送的數據又是什么呢?請看下圖:

圖片

在一個發送周期內,其實還有三個小周期,規范里稱之為3次重試,即三次重試不成功后,會重新進入SIO狀態并再次喚醒和檢測。

我們再放大這個圖,看到如下每個重試小周期的具體序列,先喚醒,再三次不同速率的探測。

從這個理論可以得知,我們可以任意修改探測報文的速率,即如果可以同時修改主從站的速率,可以實現自定義的IO-Link速率,我們目前在400K的速率上成功實現IO-Link通信。

圖片

在數據鏈路層的時間檢測上,要遵循如下規則:

圖片

圖片

PART 03 關于Fallback

圖片

看過規范的小伙伴,應該注意到IO-Link主站有發送fallback的能力,這個fallback命令可以是讓設備強制切換到SIO模式,這種命令在實際中可能用的比較少。

小編覺得這個命令對主站有實際效果,就是發送命令后,主站不再進行IO-Link通信,轉而進入DI/DO模式,當然從站也要進入DI/DO模式,即需要把Pin4的串口模式要轉變為DI/DO模式。

規范要求在接受到Fallback指令后,最大500ms,就要切換到SIO模式。

OK,本篇就先介紹這里,下篇小編將針對主從站DL-Mode模塊的狀態機,進行一下詳細介紹,期待各位看官持續關注!

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

提交

查看更多評論
其他資訊

查看更多

睿遠研究院丨IO-Link物理層編碼解析

【睿遠研究院】IO-Link物理層概覽

IO-Link通信技術概述

睿遠研究院丨IO-Link規范解讀