plc “AlwaysTRUE“ %M8192.2 bool值 一直为true这样的plc程序段 有什么意义
·
这个在西门子 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,用于禁止执行 |
FirstScan | PLC 启动后第一次扫描时为 TRUE |
%M8192.x | 通常项目组会预留一段 Merker 区专门用于这些“特殊信号” |
✅ 总结:
| 内容 | 说明 |
|---|---|
%M8192.2 = AlwaysTRUE | 变量始终为 TRUE,用作通电自动执行逻辑 |
| 用法场景 | 初始化、测试、强制通断、无条件执行某逻辑块 |
| 是否特殊地址 | 否,用户自己分配的 %M 区,项目约定而已 |
| 建议 | 如果要用它,请确保它被初始化为 TRUE,比如在 OB100 或 OB1 开头 |
更多推荐
所有评论(0)