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 Encoding
和 Raw Data Field Encoding
具有相同的含义,并根据引用的来源进行相应的使用。
IEC 61131-3 | [P6] 5.2.1 | OPC 美国 | 参考文献 | |
---|---|---|---|---|
| 布尔值 | 1 |
| [P6] 5.2.2.1 |
| 字节 | 3 |
| |
| 单字节字符 | 3 |
| |
| 日期(仅限) | 13 |
| |
| 双整数 | 6 |
| |
| 一天中的日期和时间 [s] | 13 |
| [P6] 5.2.2.5 |
| 长度为 32 的位串 | 7 |
| |
| 整数 | 4 |
| [P6] 5.2.2.1 |
| 长日期 [ns] | 8 |
| |
| 一天中的日期和时间 [ns] | 8 |
| |
| 长整数 | 8 |
| |
| 长浮点数 | 11 |
| |
| 持续时间 [ns] | 8 |
| |
| 一天中的时间 [ns] | 8 |
| |
| 长度为 64 的位串 | 9 |
| |
| 浮点数 | 10 |
| [P6] 5.2.2.3 |
| 短整数 | 2 |
| |
| 编码:Windows-1252 | 12 |
| [P6] 5.2.2.4 |
| 持续时间 [ms] | 8 |
| |
| 一天中的时间 [ms] | 7 |
| |
| 19 |
| [P6] 5.2.2.11 | |
|
| [P4] 7.38 | ||
| 无符号双整数 | 7 |
| |
| 无符号整数 | 5 |
| |
| 无符号 Iong 整数 | 9 |
| |
| 无符号短整数 | 3 |
| |
| 双字节字符 | 5 |
| |
| 长度为 16 的位串 | 5 |
| |
| 编码:UCS-2 | 12 |
|
字符串
由于 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 用于表示没有可用的版本信息。