OPC UA 数据类型
KEPServerEX 中的数据类型
由于 KEPServerEX 是 C++ 语言写的,所以 KEPServerEX 中的数据类型和 Java 对比有些不同。
KEPServerEX 数据类型说明来自其 OPC UA Client 的帮助文件
| 数据类型 | 说明 |
|---|---|
| 布尔型 | 单个位 |
| 字节 | 无符号 8 位值 位 0 是低位 位 7 是高位 |
| 字符 | 有符号 8 位值 位 0 是低位 位 6 是高位 位 7 是符号位 |
| 日期 | 日期 YYYY-MM-DDTHH:MM:SS.MMM |
| 双精度 | 64 位浮点值 |
| 双字型 | 无符号 32 位值 位 0 是低位 位 31 是高位 |
| 浮点型 | 32 位浮点值 驱动程序将两个连续 16 位寄存器解释为浮点值,方法是将第二个寄存器作为高位字,将第一个寄存器作为低位字。 |
| 长整型 | 有符号 32 位值 位 0 是低位 位 30 是高位 位 31 是符号位 |
| LongLong | 有符号 64 位值 位 0 是低位 位 62 是高位 位 63 是符号位 |
| 四字型 | 无符号 64 位值 位 0 是低位 位 63 是高位 |
| 字 | 无符号 16 位值 位 0 是低位 位 15 是高位 |
| 短整型 | 有符号 16 位值 位 0 是低位 位 14 是高位 位 15 是符号位 |
| 字符串 | 零终止字符数组 |
Java 中是没有 LongLong 这种类型的,这是 C++ 中的类型。
可以看出上面的数据类型都是小端(Little endian,低地址存储低字节数),与常用的大端(big endian,低地址存放高字节数)不同。
TCP/IP协议,RFC1700 规定使用“大端”字节序为网络字节序,处理器中常用“小端”。
对照表
| KEPServerEX 中的类型 | Java中的类型 | milo代码中的类型 | UAExpert中的类型写法 |
|---|---|---|---|
| 字符串 | String | ||
| 布尔型 | boolean | boolean | |
| 字符 | char | char | |
| 字节 | byte | byte | Int8 |
| 短整形 | short | short | Int16 |
| 字 | ushort | UInt16 | |
| 长整形 | int | Int32 | |
| 双字 | UInt32 | ||
| 浮点型 | float | ||
| 双精度 | double | ||
| LLong | long | Int64 | |
| QWord | UInt64 |
milo 库中的数据类型
milo 库中的数据类型存在 BuiltinDataType 类中
public enum BuiltinDataType {
Boolean(1, Boolean.class),
SByte(2, Byte.class),
Byte(3, UByte.class),
Int16(4, Short.class),
UInt16(5, UShort.class),
Int32(6, Integer.class),
UInt32(7, UInteger.class),
Int64(8, Long.class),
UInt64(9, ULong.class),
Float(10, Float.class),
Double(11, Double.class),
String(12, String.class),
DateTime(13, DateTime.class),
Guid(14, UUID.class),
ByteString(15, ByteString.class),
XmlElement(16, XmlElement.class),
NodeId(17, NodeId.class),
ExpandedNodeId(18, org.eclipse.milo.opcua.stack.core.types.builtin.ExpandedNodeId.class),
StatusCode(19, StatusCode.class),
QualifiedName(20, QualifiedName.class),
LocalizedText(21, org.eclipse.milo.opcua.stack.core.types.builtin.LocalizedText.class),
ExtensionObject(22, ExtensionObject.class),
DataValue(23, org.eclipse.milo.opcua.stack.core.types.builtin.DataValue.class),
Variant(24, Variant.class),
DiagnosticInfo(25, org.eclipse.milo.opcua.stack.core.types.builtin.DiagnosticInfo.class);
...
S7-1200 PLC的数据类型
参考:S7-1200数据类型
参考:S7-1200 全局DB中的数据类型介绍
SINT,有符号短整型,1个字节;
USINT,无符号短整型,1个字节;
INT,有符号整型,2个字节;
UINT,无符号整型,2个字节;
DINT,有符号双整型,4个字节;
UDINT,无符号双整型,4个字节;
LINT,有符号长整型,8个字节;
ULINT,无符号长整型,8个字节。
| 类别 | 数据类型 | 长度(位) | 长度(字节) | S7-300/400 | S7-1200 | S7-1500 |
|---|---|---|---|---|---|---|
| 二进制 | BOOL | 1 | 1/8 | ✔️ | ✔️ | ✔️ |
| 二进制 | BYTE | 8 | 1 | ✔️ | ✔️ | ✔️ |
| 二进制 | WORD | 16 | 2 | ✔️ | ✔️ | ✔️ |
| 二进制 | DWORD | 32 | 4 | ✔️ | ✔️ | ✔️ |
| 二进制 | LWORD | 64 | 8 | ❌ | ❌ | ✔️ |
| 整数 | SINT | 8 | 1 | ❌ | ✔️ | ✔️ |
| 整数 | INT | 16 | 2 | ✔️ | ✔️ | ✔️ |
| 整数 | DINT | 32 | 4 | ✔️ | ✔️ | ✔️ |
| 整数 | USINT | 8 | 1 | ❌ | ✔️ | ✔️ |
| 整数 | UINT | 16 | 2 | ❌ | ✔️ | ✔️ |
| 整数 | UDINT | 32 | 4 | ❌ | ✔️ | ✔️ |
| 整数 | LINT | 64 | 8 | ❌ | ❌ | ✔️ |
| 整数 | ULINT | 64 | 8 | ❌ | ❌ | ✔️ |
| 浮点数 | REAL | 32 | 4 | ✔️ | ✔️ | ✔️ |
| 浮点数 | LREAL | 64 | 8 | ❌ | ✔️ | ✔️ |
| 定时器 | S5TIME | 16 | 2 | ✔️ | ❌ | ✔️ |
| 定时器 | TIME | 32 | 4 | ✔️ | ✔️ | ✔️ |
| 定时器 | LTIME | 64 | 8 | ❌ | ❌ | ✔️ |
| 日期和时间 | DATE | 16 | 2 | ✔️ | ✔️ | ✔️ |
| 日期和时间 | TIME_OF_DAY (TOD) | 32 | 4 | ✔️ | ✔️ | ✔️ |
| 日期和时间 | LTOD (LTIME_OF_DAY) | 64 | 8 | ❌ | ❌ | ✔️ |
| 日期和时间 | DT (DATE_AND_TIME) | 64 | 8 | ✔️ | ❌ | ✔️ |
| 日期和时间 | LDT | 64 | 8 | ❌ | ❌ | ✔️ |
| 日期和时间 | DTL | 96 | 12 | ❌ | ✔️ | ✔️ |
| 字符串 | CHAR | 8 | 1 | ✔️ | ✔️ | ✔️ |
| 字符串 | WCHAR | 16 | 2 | ❌ | ✔️ | ✔️ |
| 字符串 | STRING | * | * | ✔️ | ✔️ | ✔️ |
| 字符串 | WSTRING | * | * | ❌ | ✔️ | ✔️ |
| PLC 数据类型 (UDT) | PLC 数据类型 (UDT) | * | * | ✔️ | ✔️ | ✔️ |
| 匿名结构 | STRUCT | * | * | ✔️ | ✔️ | ✔️ |
| ARRAY | ARRAY [....] of <数据类型> | * | * | ✔️ | ✔️ | ✔️ |
| 指针 | POINTER | 48 | 6 | ✔️ | ❌ | ✔️ |
| 指针 | ANY | 80 | 10 | ✔️ | ❌ | ✔️ |
| 指针 | VARIANT | * | * | ❌ | ✔️ | ✔️ |
| 参数类型 | TIMER | 16 | 2 | ✔️ | ❌ | ✔️ |
| 参数类型 | COUNTER | 16 | 2 | ✔️ | ❌ | ✔️ |
| 参数类型 | BLOCK_FC | 16 | 2 | ✔️ | ❌ | ✔️ |
| 参数类型 | BLOCK_FB | 16 | 2 | ✔️ | ❌ | ✔️ |
| 参数类型 | BLOCK_DB | 16 | 2 | ✔️ | ❌ | ❌ |
| 参数类型 | BLOCK_SDB | 16 | 2 | ✔️ | ❌ | ❌ |
| 参数类型 | BLOCK_SFB | 16 | 2 | ✔️ | ❌ | ❌ |
| 参数类型 | BLOCK_SFC | 16 | 2 | ✔️ | ❌ | ❌ |
| 参数类型 | BLOCK_OB | 16 | 2 | ✔️ | ✔️ | ✔️ |
| 参数类型 | VOID | * | * | ✔️ | ✔️ | ✔️ |
| 参数类型 | PARAMETER | * | * | ❌ | ✔️ | ✔️ |
| 系统数据类型 | IEC_TIMER | 128 | 16 | ✔️ | ✔️ | ✔️ |
| 系统数据类型 | IEC_LTIMER | 256 | 32 | ❌ | ❌ | ✔️ |
| 系统数据类型 | IEC_SCOUNTER | 24 | 3 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | IEC_USCOUNTER | 24 | 3 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | IEC_COUNTER | 48 | 6 | ✔️ | ✔️ | ✔️ |
| 系统数据类型 | IEC_UCOUNTER | 48 | 6 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | IEC_DCOUNTER | 96 | 12 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | IEC_UDCOUNTER | 96 | 12 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | IEC_LCOUNTER | 192 | 24 | ❌ | ❌ | ✔️ |
| 系统数据类型 | IEC_ULCOUNTER | 192 | 24 | ❌ | ❌ | ✔️ |
| 系统数据类型 | ERROR_STRUCT(ERRORSTRUCT) | 224 | 28 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | NREF | 64 | 8 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | CREF | 64 | 8 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | VREF | 96 | 12 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | SSL_HEADER | 32 | 4 | ✔️ | ❌ | ❌ |
| 系统数据类型 | CONDITIONS | 416 | 52 | ❌ | ✔️ | ❌ |
| 系统数据类型 | TADDR_Param | 64 | 8 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | TCON_Param | 512 | 64 | ❌ | ✔️ | ✔️ |
| 系统数据类型 | HSC_Period | 96 | 12 | ❌ | ✔️ | ❌ |
| 硬件数据类型 | REMOTE | 80 | 10 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_ANY | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_DEVICE | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_DPMASTER | 16 | 2 | ❌ | ❌ | ✔️ |
| 硬件数据类型 | HW_DPSLAVE | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_IO | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_IOSYSTEM | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_SUBMODULE | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_MODULE | 16 | 2 | ❌ | ❌ | ✔️ |
| 硬件数据类型 | HW_INTERFACE | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_IEPORT | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_HSC | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_PWM | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | HW_PTO | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | AOM_IDENT | 32 | 4 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | EVENT_ANY | 32 | 4 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | EVENT_ATT | 32 | 4 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | EVENT_HWINT | 32 | 4 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_ANY | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_DELAY | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_TOD | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_CYCLIC | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_ATT | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_PCYCLE | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_HWINT | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_DIAG | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_TIMEERROR | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | OB_STARTUP | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | PORT | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | RTM | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | PIP | 16 | 2 | ❌ | ❌ | ✔️ |
| 硬件数据类型 | CONN_ANY | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | CONN_PRG | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | CONN_OUC | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | CONN_R_ID | 32 | 4 | ❌ | ❌ | ✔️ |
| 硬件数据类型 | DB_ANY | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | DB_WWW | 16 | 2 | ❌ | ✔️ | ✔️ |
| 硬件数据类型 | DB_DYN | 16 | 2 | ❌ | ✔️ | ✔️ |

浙公网安备 33010602011771号