IO-Link 應用層OD
前言
上回聊到的EVENT狀態機和ISDU狀態機,這倆都屬于OD這個模塊的內容,OD又分為數據鏈路層和應用層兩塊,今天我們就展開聊一下應用層的OD和EVENT部分。
01 應用層的OD模塊狀態機
下圖先看一下主站應用層的OD模塊:
從這個狀態機,我們看到AL應用層的OD部分,僅僅包含了ISDU和DPP兩方面。
對于index 00和01的讀寫,劃歸到DL Param部分,對于其他的劃歸于ISDU部分,當主站發起AL Service時,協議棧開始構建DL Service,根據index來確定是走左邊,還是走右邊。
當進入await狀態時,不允許第二個AL Service來訪問,否則就會被禁止,直接告知客戶主站正忙。
再來看下從站AL的OD模塊,如下圖所示:
從站和主站類似,也有await狀態;對于參數的讀寫分別進入await_AL_Write_rsp_1和await_AL_Read_rsp_2;而對于ISDU的讀寫,則進入Await_AL_RW_rsp_3。
四個狀態如下:
02 應用層的OD傳輸序列
那么主站和從站的ISDU和DPP是如何交互的呢?
ISDU的傳輸
? 主站APP發起讀取ISDU參數(Index>1)指令;
?主站AL層調用DL的DL_ISDUTransport_req函數
? 主站DL層把命令封裝到消息中發送給從站
? 從站調用DL_ISDUTransport_ind函數對主站的ISDU讀命令進行解析;
? 解析后上送給AL層進行數據查詢
? 上層的App進行數據讀取,返回給AL層并繼而由物理層發給主站
? 主站接到從站的回應,解析報文,上送APP層。
DPP的傳輸
? 主站APP發起讀取DPP參數(Inde≤1)指令;
? 主站AL層面調用DL的DL_ReadParam函數
? 主站DL層把命令封裝到消息中發送給從站
? 從站調用DL_ReadParam函數對主站的DPP讀命令進行解析;
? 解析后上送給AL層進行數據查詢
? 上層的App進行數據讀取,返回給AL并繼而由物理層發給主站
? 主站接到從站的回應,解析報文,上送APP層
關于AL Abort
查詢ISDU是有時間限制的,如果查詢從站的ISDU沒有在規定的時間內返回,則主站發送一個Abort命令,終止ISDU的查詢。
03 應用層的EVENT模塊
AL應用層也有單獨的Event處理機制,我們分別看一下主站AL Event和從站的AL Event。
主站AL EVENT
從站AL EVENT
事件上報過程
??從站的App創建一個事件,并開始發送請求信息
??該請求信息從AL傳遞到DL層,并把事件緩存到內存中
??從站的AL激活EventTrigger服務,置位EventFlag
??主站讀取從站的EventFlag后,開始讀取從站的StatusCode以及相關EventCode
??主站把相關Event繼續上報給網關,網關應用確認事件消息
??主站把事件確認消息同步給從站,寫入StatusCode信息,即清除事件標志,等待下一個事件的上報
結語
本篇主要對AL應用層的OD和Event做了介紹,從狀態機看比DL層稍微簡單些,主要管理應用層面的事務,對DL的數據進行管理和控制。

提交
睿遠研究院丨IO-Link 事件解讀
睿遠研究院丨IO-Link ISDU詳解
睿遠研究院丨IO-Link OD模塊解析
睿遠研究院丨IO-LinkPD處理模塊
睿遠研究院丨IO-Link M序列解析