当前位置: 首页 > news >正文

TwinCAT数据类型,%MX,%MD这些特殊符号

在 TwinCAT(Beckhoff PLC 编程环境)中,%MX%MD 等符号是 IEC 61131-3 标准的地址表示法,用于直接访问 PLC 的物理 I/O 或内存区域。这些符号通常用于 变量声明 或 直接寻址,特别是在 TwinCAT 2 和 传统 PLC 编程 中较为常见。


1. 基本语法格式

TwinCAT 的地址表示法遵循 IEC 61131-3 标准,格式如下:

%<存储区><数据长度><地址>

其中:

  • %:固定前缀,表示直接地址访问。

  • <存储区>:指定内存区域(如 IQM 等)。

  • <数据长度>:指定数据类型大小(如 X=位,B=字节,W=字,D=双字)。

  • <地址>:具体地址编号(如 01100 等)。


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. 注意事项

  1. 避免硬编码地址:在 TwinCAT 3 中,建议使用 符号化变量 或 I/O 映射,而不是直接 %MD

  2. 地址冲突:确保 %MX%MD 等地址不与其他变量重叠。

  3. 数据类型匹配%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 映射,以提高代码可读性和可维护性。

相关文章:

  • 大规模克希霍夫积分法叠前深度偏移中,并行化和旅行时表处理
  • 高效管理远程服务器Termius for Mac 保姆级教程
  • 单片机不同通信方式的适用场景
  • kotlin 过滤 filter 函数的作用和使用场景
  • mmdeploy 转换torch为onnx
  • MVC与MVP设计模式
  • 深度学习概述
  • ​​Steam安装下载及新手注册
  • 【数据链路层深度解析】从帧结构到协议实现
  • C 语 言 - - - 文 件 操 作
  • (4)python中jupyter lab使用python虚拟环境
  • DeepSeek 4月30日发布新模型:DeepSeek-Prover-V2-671B 可进一步降低数学AI应用门槛,推动教育、科研领域的智能化升级
  • 永磁同步电机控制算法--单矢量模型预测电流控制MPCC
  • 【昇腾】Benchmark
  • Springboot使用ThreadLocal提供线程局部变量,传递登录用户名
  • using var connection = connectionFactory.CreateConnection(); using var 是什么意思
  • 详细说明c++函数传参常量引用const T传递和值传递的区别
  • 浮阀塔精馏分离乙醇-水溶液工艺设计研究
  • 综合练习三
  • 评价类模型数据预处理(定量指标值的无量纲化处理)
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动
  • 全文丨中华人民共和国民营经济促进法
  • 4月制造业PMI为49%,比上月下降1.5个百分点
  • 解放日报:上海深化改革开放,系统集成创新局
  • 海尔·2025青岛马拉松两选手被终身禁赛:违规转让号码、穿戴他人号码
  • 最近这75年,谁建造了上海?