工控網(wǎng)首頁(yè)
>

應(yīng)用設(shè)計(jì)

>

睿遠(yuǎn)研究院丨IO-Link ISDU詳解

睿遠(yuǎn)研究院丨IO-Link ISDU詳解

2025/7/16 17:25:01

前言

很快又是一周,今天我們來(lái)好好聊聊ISDU。ISDU是Indexed service data unit的縮寫(xiě),這個(gè)名字吧,也怪奇怪的,直接翻譯叫索引服務(wù)數(shù)據(jù)單元,聽(tīng)起來(lái)更是怪怪的,小編更喜歡直接稱(chēng)他為從站的參數(shù)。傳感器的各項(xiàng)參數(shù)設(shè)置都要靠它,它不僅可以設(shè)置參數(shù),也可以作為只讀參數(shù)來(lái)讀取,甚至可以作為命令,基本是無(wú)所不能了。

01 ISDU總覽

ISDU與PD數(shù)據(jù)不同,在請(qǐng)求的狀態(tài)下才會(huì)發(fā)起,一般由主站發(fā)起相關(guān)請(qǐng)求,比如讀ISDU和寫(xiě)ISDU。

ISDU的數(shù)據(jù)可以和PD數(shù)據(jù)一起傳輸,即在發(fā)送PD數(shù)據(jù)的同時(shí)發(fā)送ISDU數(shù)據(jù),考慮到PD數(shù)據(jù)的及時(shí)性,ISDU作為OD數(shù)據(jù),并非一次性發(fā)送完畢,而是把數(shù)據(jù)拆分到多個(gè)循環(huán)中,發(fā)送完畢由接收端來(lái)組裝數(shù)據(jù)報(bào)文。

規(guī)范規(guī)定,ISDU的最大長(zhǎng)度為231字節(jié),這是一個(gè)很奇怪的數(shù)字。反正它一定得小于256。

ISDU的通用結(jié)構(gòu)

圖片

ISDU中對(duì)參數(shù)的標(biāo)識(shí)采用了Index和subindex的組合,index的取值范圍從0x00000xFFFF,不過(guò)大部分都是被規(guī)范做了保留和定義,用戶(hù)能自定義用的范圍只有0x400xFE以及0x0100~0x3FFF

雖然范圍有限,但絕對(duì)綽綽有余了,下圖就是一個(gè)大概的劃分。

圖片

規(guī)范劃分ISDU為2大部分,一部分是系統(tǒng)預(yù)定義的,index從0x020x3F;另一部分屬于客戶(hù)自定義ISDU區(qū)域以及行規(guī)使用的范圍。

??系統(tǒng)參數(shù)(System)

0x02~0x0F 系統(tǒng)參數(shù)使用

??客戶(hù)標(biāo)識(shí)(Identification)0x10~0x1F 客戶(hù)的標(biāo)識(shí)信息等

??診斷信息(Diagnosis)

0x20~0x27 從站的診斷信息

??行規(guī)參數(shù)(Profile)

0x31~0x3F從站行規(guī)使用,比如SSP

??建議區(qū)域(Preferred)

0x40~0xFE 從站設(shè)備首選的自定義ISDU空間

??擴(kuò)展區(qū)域(Extended)

0x0100~0x3FFF 可以可使用的擴(kuò)展區(qū)域

??行規(guī)指定(Profile specific) 

0x4000~0x4FFF 從站行規(guī)使用,比如SSP

02 ISDU的結(jié)構(gòu)

ISDU分為讀/寫(xiě)兩個(gè)操作,這個(gè)和前面所講的報(bào)文的讀寫(xiě)是兩個(gè)概念。報(bào)文的讀寫(xiě)是指OD是主站發(fā)出還是從站發(fā)出,而ISDU的讀寫(xiě)就是我把參數(shù)設(shè)置到從站內(nèi),還是從從站讀取ISDU數(shù)據(jù)。

無(wú)論是讀ISDU還是寫(xiě)ISDU,一開(kāi)始都是寫(xiě)方向的報(bào)文,可以理解為給從站發(fā)送命令,因?yàn)樽x寫(xiě)ISDU就是一個(gè)命令。

命令發(fā)送完畢,就是讀報(bào)文,這時(shí)候可能是讀取ISDU的具體數(shù)值,也可能是從站對(duì)寫(xiě)ISDU的確認(rèn)報(bào)文,這些報(bào)文是由從站發(fā)給主站的,所以是讀操作。

理解完讀寫(xiě)ISDU的命令后,我們看詳細(xì)的報(bào)文結(jié)構(gòu)

圖片

I-Service作為ISDU的第一個(gè)報(bào)文的前4個(gè)bit,規(guī)定了讀寫(xiě)方向和具體的模式,有用的就3個(gè)寫(xiě),3個(gè)讀,還有一個(gè)no service。我們簡(jiǎn)化它就是如下的公式:

圖片

因?yàn)殚L(zhǎng)度既用了第一個(gè)字節(jié)的后4bit,考慮到231字節(jié)的ISDU,又用了一個(gè)字節(jié),導(dǎo)致感覺(jué)IO-Link又想節(jié)約字節(jié),但又沒(méi)有節(jié)約到位,增加了協(xié)議棧的復(fù)雜性。

如下圖所示,這個(gè)ExtLength是若隱若現(xiàn),猶抱琵琶半遮面;有時(shí)候有,有時(shí)候又沒(méi)有,所以造成一個(gè)怪現(xiàn)象,你會(huì)發(fā)現(xiàn),length這個(gè)字段從來(lái)沒(méi)有16這個(gè)數(shù)值。

圖片

length是一個(gè)感覺(jué)雞肋的一個(gè)定義,現(xiàn)在這個(gè)index和subindex又是類(lèi)似的,你這統(tǒng)一定義有index和subindex不就完了嗎,非得定義一會(huì)有,一會(huì)沒(méi)有,增加代碼開(kāi)發(fā)復(fù)雜度,又沒(méi)有感覺(jué)字節(jié)節(jié)約到哪里去。下圖給一個(gè)直觀的感受。

圖片

03 ISDU的FlowCtrl機(jī)制

ISDU比較重要的一個(gè)機(jī)制是FlowCtrl機(jī)制,即當(dāng)一個(gè)ISDU需要通過(guò)多個(gè)M-Sequence來(lái)傳輸時(shí),需要流控進(jìn)行消息計(jì)數(shù)。

每次傳輸完一段數(shù)據(jù),F(xiàn)lowCtrl就需要+1,如果FlowCtrl沒(méi)有變化,說(shuō)明上個(gè)傳輸?shù)臄?shù)據(jù)對(duì)端沒(méi)有收到或者收到數(shù)據(jù)有誤,需要重發(fā)。主站是ISDU的發(fā)起方,因此主站需要通過(guò)ISDU的數(shù)據(jù)長(zhǎng)度和FlowCtrl兩個(gè)組合進(jìn)行傳輸完整性的判斷。

FlowCtrl的詳細(xì)定義如下:

圖片

簡(jiǎn)化了看就是如下圖:

圖片

ISDU的通道是0x11,結(jié)合讀寫(xiě)位和地址位的首位,有如下幾個(gè)組合:

??0xFx(1111xxxx):

寫(xiě)ISDU命令(start/IDLE)

??0xEx(1110xxxx):

寫(xiě)ISDU命令(count)

??0x7x(0111xxxx):

讀ISDU命令(Start/IDLE)

??0x6x(0xx0xxxx):

讀ISDU命令(count)

舉例來(lái)看:

圖片

??第一行 70 52 表示主站要寫(xiě)一個(gè)ISDU命令,93 15 86表示ISDU index 15的命令,這個(gè)命令就是讀取序列號(hào)

??第二行,主站要讀取從站的回應(yīng)了,這時(shí)候從站尚未回應(yīng),則返回系統(tǒng)忙

??第三行,主站再次讀取從站的ISDU回應(yīng),這時(shí)候從站準(zhǔn)備好數(shù)據(jù),準(zhǔn)備輸出,按照ISDU res+的格式回應(yīng)。

首先是D113 表示正確回應(yīng),字節(jié)數(shù)在19個(gè)。后續(xù)跟著相關(guān)數(shù)據(jù)。30 31 34 38 34 32 表示ASCII,轉(zhuǎn)換成字符串就是01 48 42,最后一個(gè)2E是校驗(yàn)碼。

??第四行和第五行就是接著第三行沒(méi)有輸出完的數(shù)據(jù)繼續(xù)輸出。前面兩個(gè)字節(jié),E1 70E2 40都是主站發(fā)出的數(shù)據(jù),表示繼續(xù)讀取從站的數(shù)據(jù)。

??整體ISDU回應(yīng)的數(shù)據(jù)就是01 48 42 52 b0 00 02 D9 。

結(jié)語(yǔ)

OK,本篇詳細(xì)介紹了ISDU的報(bào)文結(jié)構(gòu)以及讀寫(xiě)的示例,下篇就ISDU的狀態(tài)機(jī)做個(gè)簡(jiǎn)單的介紹,期待各位看官持續(xù)關(guān)注!

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

提交

查看更多評(píng)論
其他資訊

查看更多

睿遠(yuǎn)研究院丨IO-Link OD模塊解析

睿遠(yuǎn)研究院丨IO-LinkPD處理模塊

睿遠(yuǎn)研究院丨IO-Link M序列解析

睿遠(yuǎn)研究院丨IO-Link消息處理模塊

睿遠(yuǎn)研究院丨IO-Link主從狀態(tài)機(jī)解析