首页 > 你问我答 >

问 plc 程序详细讲解 原理与编写入门

2026-11-10 15:15:19
最佳答案

答

plc 程序就是可编程逻辑控制器内部运行的控制逻辑代码,它按照扫描循环的方式,持续读取外部输入信号,经过内部逻辑运算之后,再驱动输出端子控制电机电磁阀指示灯这类现场设备,plc 程序最常用的表达方式是梯形图,也就是类似继电器电路图的图形化编程,也支持语句表功能块图结构化文本等多种编程语言,整套程序不是一次性执行完毕,而是不断循环扫描,每一轮扫描都包含输入采样程序执行输出刷新三个阶段,理解这个扫描机制是看懂和编写 plc 程序最核心的基础,不管是西门子三菱还是国产 plc,底层这个运行逻辑基本一致,只是指令和地址编号规则会有差别。

核心原理

plc 本质是一台专门用于工业现场的专用计算机,它和普通电脑最大区别就是抗干扰能力强,适合工厂高温粉尘振动环境,并且专门适配工业开关量模拟量信号。

plc 程序运行采用周期扫描机制,每一个扫描周期固定完成三件事

第一输入采样阶段,plc 一次性读取全部输入端子的通断状态,存放到输入映像寄存器,在本轮程序执行期间,就算外部输入信号发生变化,本轮运算依旧使用采样时刻的数据,不会中途刷新。

第二程序执行阶段,cpu 按照从上到下从左到右的顺序,逐条执行梯形图或者其他语言编写的 plc 程序,根据输入映像寄存器的数据,运算中间继电器定时器计数器等软元件状态,运算结果写入输出映像寄存器。

第三输出刷新阶段,本轮全部程序运算结束之后,把输出映像寄存器里面的状态统一送到物理输出端子,驱动外部负载动作。

扫描周期的长短,由程序长度 cpu 性能决定,一般是几毫秒到几十毫秒,程序越长扫描周期越大,响应速度就会变慢,这也是编写 plc 程序需要重点考虑的参数。

软元件基础

软元件是 plc 程序里面虚拟的元器件,不是真实硬件,全部存储在 plc 内部寄存器里面

输入继电器 X 接收外部按钮接近开关信号

输出继电器 Y 对外输出信号,控制接触器指示灯

辅助继电器 M 中间中转逻辑,不能直接驱动外部负载

定时器 T 延时接通或者延时断开,达到设定时间触点动作

计数器 C 对脉冲信号计数,达到设定数值触点动作

数据寄存器 D 存放模拟量数值运算数据,常用于温度压力采集运算

基础编写步骤

第一步 工艺梳理,先明确现场控制需求,把输入信号有哪些,输出设备有哪些,动作顺序联锁保护条件全部列清楚,绘制工艺流程图。

第二步 IO 分配,给每一个输入输出信号分配 X 和 Y 地址,制作 IO 分配表,避免地址重复冲突。

第三步 绘制梯形图,按照控制逻辑编写 plc 程序,优先实现主逻辑,之后增加急停互锁过载保护这类安全逻辑。

第四步 离线仿真,在编程软件里面模拟测试 plc 程序,检查逻辑是否有误,观察软元件状态变化。

第五步 下载到 plc,把编写好的 plc 程序写入控制器,进行空载测试,不接大功率负载,单独验证信号动作。

第六步 联机调试,接上现场设备,逐步调试,观察扫描周期响应延时,修改不合理逻辑,增加故障报警。

第七步 备份存档,调试完成之后保存原始 plc 程序工程文件,记录参数,方便后期维修修改。

基础梯形图示例说明

以电机启停自锁 plc 程序举例

启动按钮接 X0,停止按钮接 X1,接触器输出 Y0

逻辑是按下 X0,Y0 线圈得电,Y0 常开触点闭合实现自锁,松开启动按钮之后 Y0 依旧保持导通,按下停止按钮 X1,回路断开 Y0 失电。

这个是 plc 程序最经典基础案例,所有复杂 plc 程序都是由自锁互锁定时器这些基础逻辑组合而成。

主流 plc 编程方式对比表格

编程方式特点适用场景
梯形图 LD图形直观,类似继电器图纸,电工容易上手开关量逻辑控制,机床输送线
语句表 STL指令文本形式,占用内存小简单逻辑,老款 plc
功能块图 FBD图形功能块拼接,适合模拟量运算PID 调节 工艺闭环控制
结构化文本 ST类似高级文本编程语言复杂算法,大批量数据运算

调试常见要点

编写 plc 程序的时候一定要增加互锁,比如正反转电机,Y0 和 Y1 不能同时导通,否则会造成电源短路。定时器计数器需要设置准确设定值,注意区分时基,三菱 plc 普通定时器 100ms 时基,西门子 S7 系列定时器单位可以自行选择。程序里面可以增加报警标志 M,当过载急停触发的时候,停止输出并且点亮报警灯。如果扫描周期过长,会造成控制滞后,需要精简程序,减少不必要运算。

综合来说,plc 程序学习顺序建议先吃透扫描原理,再掌握软元件,然后练习自锁互锁定时器基础逻辑,之后再学习模拟量 PID 通信指令,循序渐进,不要一开始直接学习复杂大型项目 plc 程序。

【常见问题】

问题 1 plc 程序为什么是循环扫描而不是从上到下只执行一次

回答 1 plc 程序采用循环扫描,是为了持续采集现场信号实时响应设备变化,如果只执行一次,外部按钮信号变化之后 plc 不会重新运算,设备就无法持续自动控制,这也是 plc 程序和普通电脑顺序程序最核心差别。

问题 2 plc 程序里面输入采样阶段外部信号改变会影响本轮运算吗

回答 1 plc 程序在输入采样完成之后,本轮程序执行阶段外部输入信号就算发生变化,也不会更新输入映像寄存器,本轮运算依旧使用采样时刻的数据,要等到下一个扫描周期才会读取新信号。

问题 3 plc 程序梯形图可以转换成语句表吗

回答 1 绝大多数主流编程软件,plc 程序梯形图和语句表可以互相转换,梯形图是图形显示,语句表是底层指令,二者逻辑完全等价,只是表达方式不一样。

问题 4 plc 程序扫描周期过长会带来什么故障

回答 1 plc 程序扫描周期过长,会造成输入输出响应滞后,急停保护动作延迟,高速脉冲定位控制容易出错,严重的时候还会触发 plc 看门狗报警,所以编写 plc 程序需要尽量优化代码缩短扫描周期。

【免责申明】

本内容为 plc 程序通用原理教学讲解,不同品牌型号 plc 指令地址编程软件存在差异,现场工业设备调试涉及电气安全,实操必须由具备电工资质人员完成,本内容不替代原厂手册,不承担现场施工调试相关风险。