【導讀】IO-Link數據鏈路層是連接物理層與應用層的核心樞紐,負責主從站間的可靠數據傳遞。它通過消息處理、模式轉換、過程數據與按需數據四大模塊,實現(xiàn)設備狀態(tài)管理、過程數據交換和按需參數讀寫。該層具備自動波特率檢測機制,支持三種標準速率自適應與自定義速率擴展,并通過錯誤檢測與重傳機制確保傳輸可靠性。數據鏈路層作為協(xié)議棧的功能主體,承載著約90%的通信協(xié)議實現(xiàn),是構建穩(wěn)定IO-Link通信系統(tǒng)的關鍵技術基礎。
01 鏈路層總覽
數據鏈路層(Data Link Layer,DL)在IO-Link協(xié)議棧中承擔承上啟下的作用,負責在主站與從站之間通過物理鏈路傳遞消息。該層包括消息處理模塊、模式轉換模塊、過程數據處理模塊(PD)及按需數據處理模塊(OD)。
—— DL層的主要功能與職責 ——
DL層定義了一組供應用層(AL)使用的DL服務,用于交換過程數據(PD)和按需數據(OD)。
同時,DL層還定義了另一組供系統(tǒng)管理(SM)使用的DL服務,用于獲取設備識別參數以及配置數據鏈路內部的狀態(tài)機。
DL層利用物理層服務(PL-Services)控制物理層(PL),并完成UART幀的交換。
DL層還負責消息的錯誤檢測(包括內部協(xié)議錯誤及物理層上報的錯誤),并采取相應糾錯措施(例如重傳)。
整個協(xié)議棧的開發(fā)中,約90%的代碼集中在數據鏈路層。該層包含四大模塊:On-RequestData、ProcessData、DL-Mode和Message。其中,OD模塊進一步劃分為三個子模塊:ISDU、CMD和Event。
Message模塊:與物理層交互,負責處理物理層傳遞的消息,包括解碼、解析與緩存,并將數據分發(fā)給其他模塊(如PD和OD);同時也接收其他模塊的數據,進行打包和校驗后交由物理層發(fā)送。
On-request模塊:根據Message模塊傳遞的數據進行分類,分別交由ISDU、CMD和Event三個子模塊處理。
DL-mode模塊:與SystemManagement模塊交互,確定當前主站或從站的狀態(tài),例如Pre-Operate或Operate等。
Process Data模塊:負責處理輸入和輸出的過程數據。
02 DL-Mode
DL-Mode的首要任務是檢測喚醒信號,并按照規(guī)定的速率依次探測從站的通信速率。
當主站嘗試與從站建立IO-Link通信時,首先發(fā)送一個喚醒信號,隨后立即發(fā)送第一條消息(0xA2 0x00),該消息用于讀取從站的CycleTime。
在喚醒請求(WURQ)之后,DL模塊在TREN時間和TDMT時間之后,按照COM3、COM2、COM1的指定傳輸速率依次發(fā)送測試消息,直至收到從站的響應報文。具體步驟如下:
主站以COM3速率(230400 bit/s)發(fā)送消息;
主站以COM2速率(38400 bit/s)發(fā)送消息;
主站以COM1速率(4800 bit/s)發(fā)送消息;
從站以COM1速率響應。
根據圖示,主站每間隔500ms重復執(zhí)行上述探測流程,直到收到從站響應為止。每次500ms周期內的探測過程具體如下:
在一個發(fā)送周期內包含三個重試子周期,即規(guī)范中所稱的“三次重試”。若三次重試均未成功,主站將重新進入SIO狀態(tài),并再次發(fā)起喚醒和探測流程。
進一步觀察每個重試子周期的具體序列,其順序為:先發(fā)送喚醒信號,再依次以三種不同速率進行探測。
基于上述機制,理論上可調整探測報文的通信速率。若同時修改主站和從站的速率,即可實現(xiàn)自定義IO-Link通信速率。目前我們已在400Kbps速率下成功實現(xiàn)IO-Link通信。
在數據鏈路層的時間檢測方面,需嚴格遵循以下規(guī)則:
(此處原有圖表或規(guī)則未展開,建議補充具體時間參數或規(guī)范條目)
03 Fallback
根據規(guī)范,IO-Link主站具備發(fā)送Fallback指令的能力,該指令可強制設備切換至SIO模式。盡管該指令在實際應用中較少使用,但對主站而言具有實際意義:發(fā)送Fallback后,主站將終止IO-Link通信,切換至DI/DO模式。從站也需同步切換至DI/DO模式,即將Pin4由串口模式切換為DI/DO模式。
規(guī)范要求,設備在接收到Fallback指令后,必須在500ms內完成向SIO模式的切換。