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  阅读(3440)  评论(1)    收藏  举报