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

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

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

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

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

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

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

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

TimeSpanT的格式:

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

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

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