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输出。
3.3 功能块图(Function Block Diagram, FBD)
功能块图是用图形化的功能块来表示逻辑。每个功能块有输入和输出,用连线连接起来。
这种语言特别适合做数据处理、运算和闭环控制。比如PID控制、计数器、定时器,用功能块图一目了然。
举个例子:
[ X0 ]---| AND |---[ Y0 ]
[ X1 ]---| |
这个功能块图实现的功能和上面的梯形图一样:X0和X1同时接通,Y0输出。
数据类型:位、字节、字、双字
搞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 组合成一个双字,或者用专门的寄存器。
软元件:输入继电器、输出继电器、辅助继电器
软元件是PLC内部的虚拟继电器。它们不是物理存在的,但功能上和真实继电器一样。
3.8 输入继电器(X)
输入继电器对应的是PLC的物理输入点。比如你接了一个按钮到X0,那么X0的状态就反映了按钮的状态。
特点:
- 只能由外部信号驱动,程序里不能改写
- 通常用X0~X7、X10~X17等编号
- 一个输入继电器可以无限次使用
3.9 输出继电器(Y)
输出继电器对应的是PLC的物理输出点。比如你控制一个接触器,就把它接到Y0上。
特点:
- 只能由程序驱动,外部不能直接改变
- 通常用Y0~Y7、Y10~Y17等编号
- 一个输出继电器在程序里只能出现一次(线圈)
3.10 辅助继电器(M)
辅助继电器是PLC内部的中间变量。它不接外部设备,只用于程序内部的逻辑控制。
特点:
- 可以无限次使用
- 通常用M0~M7、M10~M17等编号
- 有些辅助继电器有特殊功能(比如M8000是运行监视)
我习惯用辅助继电器来做中间状态。比如一个复杂的启停逻辑,我会先用M0表示“允许启动”,再用M0去控制Y0。这样程序结构清晰,调试也方便。
嗯,这一章的内容就到这里。下一章咱们聊聊PLC的定时器和计数器,那可是控制逻辑里的常客。到时候我会分享一些我在项目里用过的实用技巧。