睿遠研究院丨IO-Link OD模塊解析
前言
書接上文,這周我們就開始深入解讀下OD模塊。OD的全稱是On-Request Data,即在請求時才會應的報文。OD模塊通常分為三個部分,ISDU、Command和Event,這也是我們解讀OD狀態機的過程中,重點分析的內容。
01 主站的OD數據處理
上圖是主站的狀態機,主站的On-request處理程序是DL-Mode處理模塊中“Startup_2”“PreOperate_3”和“Operate_4”狀態下的一個從屬狀態機。它控制其他三個狀態機,即ISDU處理模塊、command處理模塊和Event處理模塊的狀態機,默認情況下,它始終在ISDU狀態。
1 當收到EventFlag時,狀態機將切換到Event處理模塊,在完整讀取Event信息后,它將返回到ISDU處理狀態;
2 當收到DL_Control,則狀態機將切換到Command處理模塊;完成相關命令后,狀態機將返回到之前的狀態(ISDU或Event狀態)
3 當收到DL_Write_DeviceMode命令,也會切換到Command模塊,用于處理DL Mode的狀態切換,這是1.1.4版本增加的內容
02 從站的OD數據處理
從站對OD的請求重定向4個獨立的小模塊:
??Param讀寫模塊
該模塊主要讀寫DPP部分的數據,專門走了Page通道
??Command模塊
用于切換從站的狀態,保持和主站的同步
??ISDU模塊
讀寫ISDU
??Event模塊
讀寫Event
03 DPP&ISDU的處理
DPP即Direct Parameter Page,其實屬于ISDU部分,DPP1對應ISDU的Index 0x00,DPP2對應ISDU Index 0x01。
規范中明確如果不支持ISDU,就直接采用DPP1和DPP2進行參數的讀寫,這是為了方便一些簡化版本的協議棧進行簡單的IO-Link控制。
那么我們看DPP和ISDU在規范中的定義:
DPP1和DPP2就是從屬于ISDU的,只是協議棧規定了DPP走的PAGE通道,其余ISDU走ISDU通道,個人認為,其把簡單的東西復雜化了,如果合二為一豈不是更好。
其中0x00:MasterCommand主要用于接收主站的各類命令,進入Command模塊進行處理:
04 MasterCycleTime&MinCycleTime
MinCycleTime是從站主動上傳匯報給主站的循環時間,而MasterCycleTime則是主站最終根據字節大小,從站匯報的循環時間決策出的實際時間,都是采用Timebase|Multiplier的方式,具體如下:
05 M-sequence Capability編碼格式
這個編碼在前面的章節中已經詳細介紹,這里就不多說了,直接看一個例子:
這是從站回復的一個示例,這回復的0x21這個數據中,表明了自己分別在Preop和OP模式下的OD字節大小
06 ProcessDataIn& ProcessDataOut
PDIn和PDOut的字段,都是采用是否Byte位和Length來組成,把一個字節的作用摳到了極致。
寫在最后
好了,以上就是本期OD處理模塊與DPP主要字節的解析,DPP作為IO-Link的關鍵參數,包含了IO-Link設備的關鍵信息。下一期,我們就開始介紹與參數配置相關的ISDU部分,這也是IO-Link技術的核心價值體現。

提交
睿遠研究院丨IO-LinkPD處理模塊
睿遠研究院丨IO-Link M序列解析
睿遠研究院丨IO-Link消息處理模塊
睿遠研究院丨IO-Link主從狀態機解析
睿遠研究院丨IO-Link數據鏈路層解析