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个字节。

参考:西门子PLC内部的数据类型大全

类别 数据类型 长度(位) 长度(字节) 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 ❌ ✔️ ✔️
posted @ 2023-10-07 15:27  ioufev  阅读(3849)  评论(1)    收藏  举报