Skip to main content

OPC UA Binary Data Encoding

ザル OPC UA Binary Data Encoding は OPC UA アプリケーションのパフォーマンス要求を満たすように開発されたデータ形式です。この形式は、主に高速なエンコードとデコードを目的として設計されており、回線上のエンコードされたデータのサイズも考慮されています。

OPC UAのバイナリデータエンコーディングは、明確に定義されたエンコーディングルールを持ついくつかのプリミティブデータ型に基づいており、バイナリストリームへの書き込みまたはバイナリストリームからの読み取りを順次行うことができます。

構造は、各フィールドのエンコードされた形式を順番に書き込むことによってエンコードされます。特定のフィールドが構造体でもある場合は、そのフィールドの値が順番に書き込まれてから、次のフィールドが含まれる構造体に書き込まれます。

フィールドの値がゼロであっても、すべてのフィールドをデータストリームに書き込む必要があります。各プリミティブ型のエンコーディングは、その型のゼロ値またはデフォルト値をどのようにエンコードするかを示します。

OPC UA バイナリデータエンコーディングには、タイプやフィールド名の情報は含まれていません。すべての OPC UA アプリケーションは、サポートするサービスと構造を事前に把握している必要があるためです。

[P6] 5.2.1:

「規約 OPC UA Binary Data EncodingRaw Data Field Encoding 意味は同じで、引用元によって使い分けられます。」

1. 基本データ型のマッピング

IEC 61131-3

[P6] 5.2.1

OPC UA

参考文献

BOOL

ブーリアン値

1

Boolean

[P6] 5.2.2.1

BYTE

バイト

3

Byte

CHAR

1 バイト文字

3

Byte

DATE

日付 (のみ)

13

DateTime

DINT

2 倍整数

6

Int32

DT

日付と時刻 [s]

13

DateTime

[P6] 5.2.2.5

DWORD

長さ 32 のビット列

7

UInt32

INT

整数

4

Int16

[P6] 5.2.2.1

LDATE

長い日付 [ns]

8

Int64

LDT

日付と時刻 [ns]

8

Int64

LINT

長整数

8

Int64

LREAL

長整数浮動小数点数

11

Double

LTIME

所要時間 [ns]

8

Int64

LTOD

時間帯 [ns]

8

Int64

LWORD

長さ 64 のビット列

9

UInt64

REAL

浮動小数点数

10

Float

[P6] 5.2.2.3

SINT

ショート整数

2

SByte

STRING

コーディング:ウィンドウズ-1252

12

String

[P6] 5.2.2.4

TIME

所要時間 [ミリ秒]

8

Int64

TOD

時刻 [ミリ秒]

7

UInt32

UDINT

19

StatusCode

[P6] 5.2.2.11

UDINT

VersionTime

[P4] 7.38

UDINT

符号なし二重整数

7

UInt32

UINT

符号なし整数

5

UInt16

ULINT

符号なし長整数

9

UInt64

USINT

符号なし短整数

3

Byte

WCHAR

2 バイト文字

5

UInt16

WORD

長さ 16 のビット列

5

UInt16

WSTRING

コーディング:UCS-2

12

String



ストリング

OPC UA 文字列の長さは、UTF 8 エンコーディングのため事前に決定できません。使用する文字によって異なります。そのため、を定義する際には最大長を指定する必要があります。 DataSetField このデータタイプの。残りのスペースは 0 値のバイトで埋められます。文字列の最大長 (maxStringLength) は [P14] 6.2.2.1.3 で説明されています FieldMetaData

StatusCode

変数 StatusCode としてエンコードされます。 UInt32

VersionTime

変数 VersionTime としてエンコードされます。 UInt32。2000 年からの時間を秒単位で示します。エポック日付は 2000 年 1 月 1 日の午前 0 時 (UTC) (00:00) です。最終更新日時に基づくバージョン番号として使用されます。バージョンが更新された場合、新しい値は以前の値より大きくなければなりません。値 0 は、バージョン情報がないことを示すために使用されます。