TwinCAT数据类型,%MX,%MD这些特殊符号
在 TwinCAT(Beckhoff PLC 编程环境)中,%MX
、%MD
等符号是 IEC 61131-3 标准的地址表示法,用于直接访问 PLC 的物理 I/O 或内存区域。这些符号通常用于 变量声明 或 直接寻址,特别是在 TwinCAT 2 和 传统 PLC 编程 中较为常见。
1. 基本语法格式
TwinCAT 的地址表示法遵循 IEC 61131-3 标准,格式如下:
%<存储区><数据长度><地址>
其中:
-
%
:固定前缀,表示直接地址访问。 -
<存储区>
:指定内存区域(如I
、Q
、M
等)。 -
<数据长度>
:指定数据类型大小(如X
=位,B
=字节,W
=字,D
=双字)。 -
<地址>
:具体地址编号(如0
、1
、100
等)。
2. 常见存储区(Memory Areas)
存储区 | 说明 | 示例 |
---|---|---|
I | 输入区(Input) | %IX0.0 (输入位) |
Q | 输出区(Output) | %QW4 (输出字) |
M | 内存区(Memory,全局变量) | %MD100 (双字) |
C | 计数器(Counter) | %C1 (计数器1) |
T | 定时器(Timer) | %T2 (定时器2) |
3. 数据长度(Data Length)
符号 | 数据类型 | 大小(位) | 示例 |
---|---|---|---|
X | 位(Bit) | 1 | %MX0.0 (内存位) |
B | 字节(Byte) | 8 | %MB10 (内存字节) |
W | 字(Word) | 16 | %MW20 (内存字) |
D | 双字(DWord) | 32 | %MD100 (内存双字) |
L | 长字(LWord) | 64 | %ML200 (内存长字) |
4. 常见地址示例
(1) 位访问(Bit Addressing)
-
%IX0.0
:输入位 0.0(第 0 字节的第 0 位)。 -
%QX1.5
:输出位 1.5(第 1 字节的第 5 位)。 -
%MX100.7
:内存位 100.7(全局存储区)。
(2) 字节/字/双字访问
-
%IB0
:输入字节 0(8 位)。 -
%QW4
:输出字 4(16 位,地址 4~5)。 -
%MD100
:内存双字 100(32 位,地址 100~103)。
5. TwinCAT 2 vs TwinCAT 3
(1) TwinCAT 2
-
广泛使用
%MX
、%MD
等直接地址访问。 -
常用于 传统 PLC 编程 或 硬件 I/O 映射。
(2) TwinCAT 3
-
推荐使用 符号化变量(Symbolic Variables)代替直接地址。
-
仍然支持
%
寻址,但更推荐 绑定到 I/O 设备(如EL1809
输入模块)。
6. 实际应用示例
(1) 直接控制输出位
st
// TwinCAT 2 风格(直接地址)
%QX0.0 := TRUE; // 强制输出位 0.0 为 ON
(2) 读取输入字
st
// TwinCAT 3 风格(推荐符号化变量)
VARnInputValue: INT;
END_VARnInputValue := %IW0; // 读取输入字 0
(3) 内存区操作
// 使用 %MD 访问全局内存
%MD100 := 123456; // 写入双字
diResult := %MD100 + 1000; // 读取并计算
7. 注意事项
-
避免硬编码地址:在 TwinCAT 3 中,建议使用 符号化变量 或 I/O 映射,而不是直接
%MD
。 -
地址冲突:确保
%MX
、%MD
等地址不与其他变量重叠。 -
数据类型匹配:
%MW
是 16 位,%MD
是 32 位,赋值时需确保类型一致。
总结
符号 | 含义 | 示例 |
---|---|---|
%IX0.0 | 输入位 0.0 | %IX0.0 := TRUE; |
%QW4 | 输出字 4(16 位) | %QW4 := 16#ABCD; |
%MD100 | 内存双字 100(32 位) | %MD100 := 1234; |
在 TwinCAT 编程中,%
地址表示法提供了一种底层访问方式,但在现代工程中更推荐使用 符号化变量 和 I/O 映射,以提高代码可读性和可维护性。