3. 位逻辑指令(上):LD、LDI、AND、ANI、OR、ORI、OUT、END指令详解与实例

各位同学,咱们今天开始啃PLC编程里最基础、也是最核心的一块——位逻辑指令

说实话,我刚开始学PLC那会儿,觉得这玩意儿不就是开关嘛,有啥好学的?后来在产线上被一个“触点接反”的故障折腾了整整一个下午,才明白:越是基础的指令,越要把它吃透。你想想看,一个复杂的自动化系统,说白了就是成千上万个“通”和“断”的组合。

好,咱们今天先讲上半部分。这8条指令,你只要搞懂了,梯形图的基本功就算打牢了。

3.1 LD 与 LDI:逻辑运算的起点

LD(Load),取指令。说白了就是“读取一个常开触点”。
LDI(Load Inverse),取反指令。就是“读取一个常闭触点”。

这两条指令,永远是梯形图里最左边的那一个触点。没有它们,后面的逻辑就无从谈起。

指令格式:

  • LD X0 —— 读取X0的常开状态
  • LDI X1 —— 读取X1的常闭状态

我在项目里见过不少新手,上来就把LD和LDI搞混。举个例子:你用一个急停按钮,通常接的是常闭触点。那么在程序里,你就得用LDI来读它。为什么?因为急停没按下时,它是通的,程序读到的是“1”;按下后断开了,程序读到的是“0”。用LDI,正好把逻辑反过来,保证安全。

我的个人习惯:凡是涉及安全信号的输入,比如急停、光幕、安全门,我统一用LDI。这样即使外部接线断了,程序也能检测到异常状态。这是血的教训换来的经验。

3.2 AND 与 ANI:串联的逻辑

AND(And),与指令。串联一个常开触点。
ANI(And Inverse),与反指令。串联一个常闭触点。

这两个指令,用在梯形图的中间位置。它们把前面的条件和后面的条件“串”在一起——必须全部满足,结果才为1。

指令 功能 示例 说明
AND 串联常开 AND X2 X2接通时,条件成立
ANI 串联常闭 ANI X3 X3断开时,条件成立

嗯,这里要注意一个坑:AND和ANI只能串联一个触点。你不能写成“AND X0 X1”,那是错的。要串联两个触点,就得写两行:AND X0 然后 AND X1。

我曾经在一个包装机的项目里,就是因为少写了一个AND,导致两个传感器信号没同时满足,气缸提前动作,直接把产品顶飞了。从那以后,我写串联逻辑时,都会在纸上先画一遍梯形图草图。

3.3 OR 与 ORI:并联的逻辑

OR(Or),或指令。并联一个常开触点。
ORI(Or Inverse),或反指令。并联一个常闭触点。

并联的意思就是:只要有一个条件满足,结果就为1

典型应用场景:

  • 一个电机,可以用“启动按钮”启动,也可以用“触摸屏远程启动”
  • 一个报警灯,温度过高要亮,压力过低也要亮

OR和ORI的用法和AND类似,只不过它们是“并”在现有逻辑上的。你想想看,如果两个启动按钮并联,按任何一个都能启动电机,这就是OR的典型用法。

我曾经踩过的坑:OR指令的优先级问题。在梯形图里,OR是“就近并联”的。如果你想把一个条件并联到很远的一个触点上去,就得用ORB指令(咱们后面会讲)。初学者最容易犯的错误就是:以为OR能随便并联到任意位置。其实不是的,它只能并联到当前逻辑块的起始位置

3.4 OUT:把结果输出去

OUT(Out),输出指令。把运算结果赋值给一个软元件。

可以输出的对象包括:

  • Y(输出继电器)—— 控制外部设备,比如接触器、电磁阀
  • M(辅助继电器)—— 内部中间变量
  • S(状态继电器)—— 步进控制用
  • T(定时器)、C(计数器)—— 但要注意格式

OUT指令的规则:

  • OUT必须放在梯形图的最右边
  • 一个OUT只能驱动一个软元件
  • OUT可以连续使用(并联输出)

我个人的习惯是:一个OUT只控制一个物理动作。比如控制一个电磁阀,我就用一个OUT Y0。不要试图在一个OUT后面接一堆复杂的逻辑,那样调试的时候你会疯掉的。

3.5 END:程序的终点站

END(End),结束指令。告诉PLC:程序到这里就完了,后面的不用管了。

这个指令看起来简单,但它的作用非常大:

  • PLC扫描到END,就会停止本次扫描,刷新输出
  • 如果没有END,PLC会一直扫描到程序存储器的末尾
  • 每个程序必须有一个END,而且只能有一个

我曾经犯过的错:有一次写程序,忘了写END。结果PLC一直在空跑,输出死活不刷新。我查了整整两个小时,最后发现是END漏了。从那以后,我写程序的第一个动作就是:先写END,再写前面的逻辑。

3.6 综合实例:一个简单的电机启停控制

咱们把今天学的指令串起来,写一个最经典的电机启停程序。

控制要求:

  • 按下启动按钮(X0),电机(Y0)启动并自锁
  • 按下停止按钮(X1),电机停止
  • 过载保护(X2)动作时,电机停止

梯形图对应的指令表:

0   LD   X0      // 启动按钮(常开)
1   OR   Y0      // 自锁触点(并联)
2   ANI  X1      // 停止按钮(常闭,串联)
3   ANI  X2      // 过载保护(常闭,串联)
4   OUT  Y0      // 输出到电机接触器
5   END          // 程序结束

这个程序,你仔细看:

  • LD X0 是读取启动信号
  • OR Y0 是自锁,让电机启动后保持运行
  • ANI X1 和 ANI X2 是停止条件,任何一个断开,输出就断
  • OUT Y0 把结果送给电机
  • END 结束

我的建议:初学者一定要亲手在GX Works软件上敲一遍这个程序,然后下载到PLC里跑一跑。看着电机随着你的按钮动作而启停,那种成就感,比你看十遍书都强。

好了,今天这8条指令,咱们就讲到这里。下一节课,咱们接着讲位逻辑指令的下半部分——ANB、ORB、MPS、MRD、MPP这些“块操作”指令。那些才是真正体现编程水平的地方。

记住:基础不牢,地动山摇。把LD、LDI、AND、ANI、OR、ORI、OUT、END这8条指令练熟了,后面的路就好走了。