3、PLC编程基础(一):编程语言概述

各位同行,咱们今天聊聊PLC编程的入门基础。说实话,很多新手一上来就盯着梯形图看,觉得它像电路图好理解。但我想说,编程语言的选择,其实跟你的应用场景和习惯有很大关系。

我个人习惯把PLC编程语言分成三大类:梯形图(LD)、指令表(IL)和功能块图(FBD)。这三种语言各有各的脾气,咱们一个一个说。

3.1 梯形图(Ladder Diagram, LD)

梯形图是最常见的PLC编程语言。为什么?因为它长得像继电器控制电路。你想想看,搞电气的人一看就懂,不需要额外学习。

梯形图由两条竖线(母线)和若干横线(梯级)组成。每个梯级里放触点(输入条件)和线圈(输出结果)。

举个例子:

|----[ X0 ]----[ Y0 ]----|
|                         |
|----[ X1 ]----[ M0 ]----|

这个梯形图的意思是:当X0接通时,Y0输出;当X1接通时,M0(辅助继电器)得电。

我的经验:梯形图最适合做逻辑控制,比如启停、互锁、顺序控制。我在项目中遇到过,用梯形图写一个电机正反转控制,比用其他语言快一倍。

3.2 指令表(Instruction List, IL)

指令表有点像汇编语言。它用助记符来表示操作,比如LD(加载)、AND(与)、OR(或)、OUT(输出)。

说白了,指令表就是梯形图的文本版本。你写梯形图,PLC内部其实也是翻译成指令表来执行的。

举个例子:

LD  X0
AND X1
OUT Y0

这段指令表的意思是:如果X0和X1都接通,那么Y0输出。

注意:指令表虽然简洁,但可读性差。我曾经用指令表写过一个复杂的PID控制程序,结果三个月后自己都看不懂了。所以,我建议你只在简单逻辑或调试时用指令表。

3.3 功能块图(Function Block Diagram, FBD)

功能块图是用图形化的功能块来表示逻辑。每个功能块有输入和输出,用连线连接起来。

这种语言特别适合做数据处理、运算和闭环控制。比如PID控制、计数器、定时器,用功能块图一目了然。

举个例子:

[ X0 ]---| AND |---[ Y0 ]
[ X1 ]---|     |

这个功能块图实现的功能和上面的梯形图一样:X0和X1同时接通,Y0输出。

我的建议:如果你做的是过程控制(比如温度、压力、流量),功能块图是你的首选。我在化工项目中,用功能块图写了一个多回路PID控制,调试起来非常方便。

数据类型:位、字节、字、双字

搞PLC编程,数据类型是绕不开的。你想想看,PLC里的数据怎么存?怎么用?这就得搞清楚位、字节、字、双字这些概念。

3.4 位(Bit)

位是最小的数据单位。一个位只有两个状态:0或1。在PLC里,位对应的是开关量,比如按钮按没按、灯亮不亮。

表示方式:X0、Y0、M0 这些都是位。

避坑指南:我曾经在项目中,把一个位变量当成了字变量来用,结果数据全乱了。记住:位就是位,不能当字用。

3.5 字节(Byte)

一个字节由8个位组成。字节可以用来表示0~255的整数,或者ASCII字符。

表示方式:比如 D0 的低8位就是 D0.0~D0.7。

字节在PLC里用得不多,但有时候处理通信数据时会用到。

3.6 字(Word)

一个字由16个位组成。字是PLC里最常用的数据类型,可以表示0~65535的整数。

表示方式:比如 D0、D100、C0 这些都是字。

我习惯用字来存储模拟量数据,比如温度值、压力值。一个字刚好够用。

3.7 双字(Double Word)

双字由32个位组成,可以表示0~4294967295的整数。双字通常用于高精度计算或大范围计数。

表示方式:比如 D0 和 D1 组合成一个双字,或者用专门的寄存器。

我的经验:在写流量累计程序时,我用了双字来存储累计值。因为流量累计值很容易超过65535,用字会溢出。记住:数据范围不够时,果断用双字。

软元件:输入继电器、输出继电器、辅助继电器

软元件是PLC内部的虚拟继电器。它们不是物理存在的,但功能上和真实继电器一样。

3.8 输入继电器(X)

输入继电器对应的是PLC的物理输入点。比如你接了一个按钮到X0,那么X0的状态就反映了按钮的状态。

特点:

  • 只能由外部信号驱动,程序里不能改写
  • 通常用X0~X7、X10~X17等编号
  • 一个输入继电器可以无限次使用
避坑指南:我曾经在项目中,把输入继电器的编号搞错了,结果程序怎么调都不对。记住:输入继电器的编号要和实际接线对应好。

3.9 输出继电器(Y)

输出继电器对应的是PLC的物理输出点。比如你控制一个接触器,就把它接到Y0上。

特点:

  • 只能由程序驱动,外部不能直接改变
  • 通常用Y0~Y7、Y10~Y17等编号
  • 一个输出继电器在程序里只能出现一次(线圈)
注意:输出继电器不能重复使用。如果你在程序里写了两个Y0线圈,PLC会报错。我见过有人犯这个错,结果输出乱跳。

3.10 辅助继电器(M)

辅助继电器是PLC内部的中间变量。它不接外部设备,只用于程序内部的逻辑控制。

特点:

  • 可以无限次使用
  • 通常用M0~M7、M10~M17等编号
  • 有些辅助继电器有特殊功能(比如M8000是运行监视)

我习惯用辅助继电器来做中间状态。比如一个复杂的启停逻辑,我会先用M0表示“允许启动”,再用M0去控制Y0。这样程序结构清晰,调试也方便。

总结一下:输入继电器是“眼睛”,输出继电器是“手”,辅助继电器是“大脑”。搞清楚了这三者的关系,PLC编程就入门了。

嗯,这一章的内容就到这里。下一章咱们聊聊PLC的定时器和计数器,那可是控制逻辑里的常客。到时候我会分享一些我在项目里用过的实用技巧。