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 美国

参考文献

BOOL

布尔值

1

Boolean

[P6] 5.2.2.1

BYTE

字节

3

Byte

CHAR

单字节字符

3

Byte

DATE

日期(仅限)

13

DateTime

DINT

双整数

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

编码:Windows-1252

12

String

[P6] 5.2.2.4

TIME

持续时间 [ms]

8

Int64

TOD

一天中的时间 [ms]

7

UInt32

UDINT

19

StatusCode

[P6] 5.2.2.11

UDINT

VersionTime

[P4] 7.38

UDINT

无符号双整数

7

UInt32

UINT

无符号整数

5

UInt16

ULINT

无符号 Iong 整数

9

UInt64

USINT

无符号短整数

3

Byte

WCHAR

双字节字符

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 日午夜(00:00)。它用作基于上次修改时间的版本号。如果版本已更新,则新值必须大于先前的值。值 0 用于表示没有可用的版本信息。