wiki:tips/signal_data

Version 1 (modified by fujisft-shigihara, 9 years ago) ( diff )

--

シグナルデータの取り扱い


はじめに

  • RTEから送信されるシグナルデータが、Comモジュール内でどのように使用されるかを説明する
  • AUTOSARのComモジュールは、OSEK/COM仕様をベースにしており、一部の機能では仕様理解のためにOSEK/COM仕様書を参照する必要がある

データ内で使用されるビット

UINT8

  • ComSignalType: UINT8
  • ComBitSize: 3
  • データ: 7(0x07)
         | (byte 0)        |
    bit  | 7 6 5 4 3 2 1 0 |
    data | 0 0 0 0 0 1 1 1 |
    pack |           * * * |
    
  • 受信でIPDUから取り出す場合、0で符号拡張(0)される

UINT16

  • ComSignalType:UINT16
  • ComBitSize:13
  • データ: 4369(0x1111)
         | (byte 1)                (byte 0)                |
    bit  | 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 |
    data |  0  0  0  1  0  0  0  1  0  0  0  1  0  0  0  1 |
    pack |           *  *  *  *  *  *  *  *  *  *  *  *  * |
    
  • 受信時処理は、UINT8と同様

SINT8

  • ComSignalType: SINT8
  • ComBitSize: 4
  • データ: -4(0xFFFC)
         | (byte 0)        |
    bit  | 7 6 5 4 3 2 1 0 |
    data | 1 1 1 1 1 1 0 0 |
    pack |         * * * * |
    
  • 符号有り整数(2の補数)において、ビットサイズ4ということは、-8~7まで格納できる
-81000
-71001
-61010
-51011
-41100
-31101
-21110
-11111
00000
10001
20010
30011
40100
50101
60110
70111

UINT8_N

  • ComSignalType: UINT8_N(uint8[n])
  • ComSignalLength: 3
  • データ: {1,2,3}
         | (byte 2)        | (byte 1)        | (byte 0)        |
    bit  | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 |
    data | 0 0 0 0 0 0 1 1 | 0 0 0 0 0 0 1 0 | 0 0 0 0 0 0 0 1 |
    pack | * * * * * * * * | * * * * * * * * | * * * * * * * * |
    
  • UINT8_Nの場合、シグナルサイズが必ず8の倍数とするため、ComBitSizeでなくComSignalLengthで大きさを指定する

FLOAT32/FLOAT64


I-PDUへのパッキング

以下のデータを例にエンディアン毎のパッキング方法を図示する

  • ComSignalType: UINT32
  • ComBitSize: 12
  • ComBitPosition: 13
  • PduLength: 4
  • データ: "101010101010"

リトルエンディアン

     | (byte 3)                | (byte 2)                | (byte 1)                | (byte 0)                |
bit  | 31 30 29 28 27 26 25 24 | 23 22 21 20 19 18 17 16 | 15 14 13 12 11 10  9  8 |  7  6  5  4  3  2  1  0 |
data |  0  0  0  0  0  0  0  1 |  0  1  0  1  0  1  0  1 |  0  1  0  0  0  0  0  0 |  0  0  0  0  0  0  0  0 |
pack |                       <------------------------------------*                                          |

ビッグエンディアン

     | (byte 0)                | (byte 1)                | (byte 2)                | (byte 3)                |
bit  |  7  6  5  4  3  2  1  0 | 15 14 13 12 11 10  9  8 | 23 22 21 20 19 18 17 16 | 31 30 29 28 27 26 25 24 |
data |  0  0  0  0  0  0  0  0 |  0  0  1  0  1  0  1  0 |  1  0  1  0  1  0  0  0 |  0  1  0  1  0  0  0  0 |
pack |                                  *<----------------------------------                                 |

オペーク

  • エンディアン変換がオペークに設定されている場合、(I-PDUに詰め込む)最初のバイトのビット0をComBitPositionとする
    • つまり、ComBitPositionには、ビットの先頭となる8の倍数しか指定してはいけない
  • 参考仕様
  • 以下のデータを例にオペークのパッキング方法を図示する
    • ComSignalType: UINT8_N
    • ComSignalLength: 2
    • ComBitPosition: 8
    • PduLength: 3
    • データ: {1,3}
           | (byte 2)                | (byte 1)                | (byte 0)                |
      bit  | 23 22 21 20 19 18 17 16 | 15 14 13 12 11 10  9  8 |  7  6  5  4  3  2  1  0 |
      data |  0  0  0  0  0  0  1  1 |  0  0  0  0  0  0  0  1 |  0  0  0  0  0  0  0  0 |
      pack |  <----------------------------------------------*                           |
      
Note: See TracWiki for help on using the wiki.