这个在西门子 PLC 编程中是非常常见的编程技巧,我们下面来详细分析。


✅ 一、AlwaysTRUE 的作用和意义

简单说:

它是一个永远为真(TRUE)的布尔变量,用来在梯形图中简化逻辑、强制某段逻辑始终激活。


🧠 为什么需要它?

在梯形图中,所有的逻辑操作都需要一个“输入条件”。

有时候你想:

  • 让某个动作在 PLC 上电后就立刻执行

  • 某段逻辑不需要判断条件,始终激活

  • 临时调试时,希望某块逻辑始终执行

  • 用作一些初始赋值、状态保持、测试

此时,就会用一个总是为 TRUE 的变量。


🧩 举个实际例子:

例1:PLC 上电立即打开一个输出


ladder

复制编辑

| AlwaysTRUE | |----[ ]----------( )---- %Q0.0

含义是:PLC 每次循环扫描都会判断 AlwaysTRUE 为真,于是 %Q0.0 恒定为 TRUE。


例2:初始化某个 DB 数据,只在第一次执行时做


ladder

复制编辑

| AlwaysTRUE | |----[ ]----------[Move 123 → DB1.DBD0]

含义是:每次 PLC 扫描时都执行一次 Move 指令,但通常会配合条件限制只执行一次(比如 FirstScan + AlwaysTRUE)。


❗使用时注意:

  • %M8192.2 这个地址并不是特殊的“系统地址”,而是人为约定的一块用户存储区(Merker 位);

  • 如果你没有在 OB100(首次启动块)或初始化块中设置 %M8192.2 := TRUE,它不会自动为 TRUE;

  • 在某些项目中,程序员会手动在 OB1 开头强制设置它为 TRUE:


scl

复制编辑

// OB1 中强制置位 %M8192.2 := TRUE;


🧰 相关的“Always”技巧:

名称说明
AlwaysTRUE始终为 TRUE,用于常通
AlwaysFALSE始终为 FALSE,用于禁止执行
FirstScanPLC 启动后第一次扫描时为 TRUE
%M8192.x通常项目组会预留一段 Merker 区专门用于这些“特殊信号”


✅ 总结:

内容说明
%M8192.2 = AlwaysTRUE变量始终为 TRUE,用作通电自动执行逻辑
用法场景初始化、测试、强制通断、无条件执行某逻辑块
是否特殊地址否,用户自己分配的 %M 区,项目约定而已
建议如果要用它,请确保它被初始化为 TRUE,比如在 OB100 或 OB1 开头

更多推荐