前言
本篇對IO-Link規范的附錄F的數據類型做個詳細解釋,附錄定義了基本數據類型(Basic Data Types) 和組合數據類型(Composite Data Types),并通過示例展示了其結構和傳輸方式,包括單個使用或打包使用的情形。
基礎數據類型包括了BooleanT、UIntegerT、IntegerT、Float32T、StringT、OctetStringT、TimeT、TimeSpanT;組合數據類型包括ArrayT、RecordT。
這些數據類型在IODD文檔里也有大量描述,只不過他倆的分類名稱不一致,在IODD里稱為SimpleDataType和ComplexDatatype。
1 BooleanT
BooleanT 表示一個只能有兩個不同值的數據類型,即TRUE 和 FALSE,該數據類型在下表中進行了規定。

對于單一使用,編碼下表所示,發送方應始終使用0xFF 代表 'TRUE' 或 0x00 代表 'FALSE'。接收方可以解釋從0x01 到 0xFF 的范圍為 'TRUE',并應解釋0x00為'FALSE',以簡化實現。

對于BooleanT要特別注意的是,它的True是0xFF,不是傳統意義上的0x01;在很多嵌入式代碼中,TRUE的定義就是0x01,如果你使用睿遠的IO-Link,判斷一個條件是否為true,一定要用規定的宏IOLD_TRUE或者其他協議棧定義的TRUE,如果采用0x01來判斷,會容易出錯。
2 UIntegerT&IntegerT
UIntegerT表示一個無符號數,由2到64位來表示,采用右對齊的方式,左邊補足的方式,填充到對應字節個數:1、2、4或8,高階填充位用0填充。

IntegerT表示一個符號整型,由2到64位來表示。采用右對齊的方式,左邊補足的方式,填充到對應字節個數:1、2、4或8,負數高位用1填充,正數高位用0填充。

3 Float32T
Float32T采用IEEEStd 754-1985標準的單精度浮點類型(32bit),正數的高位用0填充,負數的高位用1填充。

4 StringT&OctetStringT
StringT由一定固定序列的字符串表示,可變長度,采用US-ASCII或者UTF-8編碼。UTF-8對ASCII字符采用1個字節,而其他的字符最大采用4個字節。0x00不允許作為1個字符,常用作字符串的結尾或者尾部填充。

字符串類型,實際的數據可以小于ISDU里定義的長度,接受者可以搜索第一個0x00字節,就可以認為其是字符串的結尾了。如果壓縮發送,即不發送后面的0x00,接受者可以自己補充0x00。
OctetStringT由有序的8位組表示,固定字節,也是表示字節串的數據類型,一般用于傳輸各種二進制數據,比如圖像、音頻等。

5 TimeT&TimeSpanT
TimeT基于RFC 1305標準,由兩個無符號值組成,表示與特定日期相關的網絡時間。
TimeSpanT是64位的整型值,每個單位表示1/2的32次方秒。
TimeT的格式:

TimeSpanT的格式:

6 ArrayT
組合數據類型,該數據類型中包含幾個一樣的數據類型,相應規則如下:
1、子索引數據應該緊密排列,中間不能有空位;
2、在字節序列中,最高的子索引元素n應該靠右對齊;
3、UInteger和IntegerT長度大于58bit同時小于等于64bit是不允許的。

7 RecordT
與ArrayT類型不一樣的是,其包含的數據類型可以不一致,相應規則如下:
1、升序排列:子索引從1到n升序排列,雖然允許中間有間隔,但保持一定的升序排列,有助于可讀性;
2、起始偏移:從最后一個字節開始計算;
3、對齊:對Float32T、StringT、OctetStringT、TimeT、TimeSpanT必須要保持字節對齊;
4、整型對齊:對于UIntegerT、IntegerT類型,強烈建議進行字節對齊,不要跨越字節;
5、唯一性:每個bit只能被分配給為一個Record,防止沖突。

結語
今天的內容先到這里,目前我們已經花了15篇的內容,將IO-Link的協議規范的重要內容都和大家一起梳理了一遍。下一篇,我們將開啟IO-Link SSP行規的解讀旅程,也更貼近智能傳感器的應用,大家可以期待一下!
-
IO-Link
+關注
關注
2文章
199瀏覽量
20690 -
IO-Link收發器
+關注
關注
0文章
16瀏覽量
6292
發布評論請先 登錄
睿遠研究院丨IO-Link規范解讀(三):物理層概覽
睿遠研究院丨IO-Link規范解讀(七):消息處理模塊
睿遠研究院丨IO-Link規范解讀(八):M-Sequence Type 與消息處理狀態機
睿遠研究院丨IO-Link規范解讀(十):ISDU詳解
睿遠研究院丨IO-Link規范解讀(十二):SM模塊與CM模塊解析
睿遠研究院丨IO-Link規范解讀(十四):DS模塊詳解
什么是IO-Link
IO-Link收發器怎么數據讀取
虹科直播回放 | IO-Link技術概述與虹科IO-Link OEM
睿遠研究院丨IO-Link規范解讀(二):IO-Link通信技術概述
睿遠研究院丨IO-Link規范解讀(十五):數據類型詳解
評論