ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PLC编程入门到进阶:避开培训视频的坑,掌握核心学习路径

PLC编程入门到进阶:避开培训视频的坑,掌握核心学习路径 PLC编程入门这件事我见过太多人卡在同一个地方视频看了一堆教程收藏了几十个G真到动手写程序的时候连一个最简单的电机启停都调不通。问题不在于他们不够努力而在于市面上的培训视频大多是演示型的——老师敲一遍代码你看着觉得懂了但那个为什么这么写的思维过程完全缺失。我自己从零基础摸到能独立做项目前后踩了差不多两年的坑中间烧过PLC的输出点也遇到过仿真软件死活启动不了的情况。这篇内容就是把我这些年积累的学习路径、实操方法和避坑经验完整梳理出来不管你是刚买了一块二手PLC准备入门还是已经能写一些逻辑但想系统提升都能从中找到对你有用的东西。1. 先搞清楚PLC到底在控制什么再谈编程1.1 PLC的本质一个循环扫描的工业大脑很多人学PLC编程上来就背指令表什么LD、OUT、SET、RST背得滚瓜烂熟但完全不知道这些指令在硬件层面发生了什么。我建议你先花半小时理解PLC的核心工作机制——循环扫描。PLC的工作方式和普通计算机完全不同。你的电脑是事件驱动的你点一下鼠标它才响应一下。PLC不是它上电之后就在做一件事从头到尾扫描一遍程序然后立刻回到开头再扫一遍周而复始永不停止。这个扫描周期通常在1到10毫秒之间取决于程序长度和CPU性能。这个机制决定了三件非常重要的事第一输出映像区的概念。PLC在扫描过程中并不是每执行一条输出指令就立刻改变物理输出端子的状态。它先把所有输出结果写到内存里的输出映像区等整个扫描周期结束后再一次性把映像区的数据刷新到物理端子上。这意味着你在程序中间修改了某个输出但物理端子要等到本轮扫描结束才会真正动作。第二输入滤波与响应延迟。物理输入信号进入PLC后同样先写入输入映像区程序读的是映像区的值而不是端子的实时值。加上输入滤波电路的存在一个按钮按下去到程序看到它可能有几毫秒到几十毫秒的延迟。做高速计数或者精确定时的时候这个延迟必须考虑进去。第三扫描周期对定时器精度的影响。如果你用100ms的定时器但扫描周期是15ms那实际定时误差可能在0到15ms之间波动。对于大多数逻辑控制场景这无所谓但如果你要做精确的脉冲控制就得用中断程序或者高速计数器来处理。理解这些之后你再看那些培训视频里老师写的程序就能明白为什么他要在某些地方加中间继电器为什么有些输出要放在程序末尾统一处理。这些细节光看视频是看不出来的。1.2 不同品牌PLC的差异别被学一个就够了误导市面上主流的PLC品牌有西门子、三菱、欧姆龙、施耐德、汇川、信捷等等。很多培训视频会告诉你学会西门子就会所有PLC这话对了一半。对的部分是IEC 61131-3标准定义了五种编程语言——梯形图LD、功能块图FBD、顺序功能图SFC、指令表IL和结构化文本ST。主流品牌都支持这些标准语言逻辑思维是相通的。你理解了自锁、互锁、定时器、计数器的原理换一个品牌只是换个软件界面和指令名称的事。不对的部分是每个品牌的硬件架构、寻址方式、特殊功能指令、通信协议差异很大。比如西门子S7-200 SMART的定时器编号是T37、T38这种而三菱FX系列的定时器是T0到T255西门子的数据寄存器是VW、VD三菱是D、W。更不用说各家自己的通信协议了——西门子的PPI、MPI、PROFINET三菱的CC-Link、MELSEC通信完全不一样。我的建议是先精通一个品牌再横向扩展。如果你面向的是国内中小型自动化项目西门子S7-200 SMART或者S7-1200是很好的起点资料多、案例多、就业面广。如果你在珠三角地区三菱FX系列和汇川的可能更常见。选一个跟你目标就业区域或当前工作相关的品牌深入下去。1.3 学习路径的分水岭初级和高级到底差在哪我观察过很多学PLC的人初级和高级之间的分水岭不是指令会多少而是三个能力第一能不能独立完成一个完整项目的程序架构设计。初级的人拿到需求想到哪写到哪程序一团乱麻改一个功能要动十几个地方。高级的人会先做I/O分配表再规划程序结构初始化、手动、自动、报警、通信分块用子程序或功能块来组织代码。第二能不能处理模拟量。数字量逻辑开关量是个人都能学会但模拟量涉及AD转换、量程变换、滤波、PID控制这才是真正区分水平的地方。一个温度控制系统4-20mA信号进来怎么转换成实际温度值怎么做PID整定怎么处理超调这些不是看几个视频就能掌握的。第三能不能做通信和系统集成。现代自动化项目很少是单台PLC孤军奋战通常要和触摸屏、变频器、伺服驱动器、上位机SCADA系统通信。Modbus、PROFINET、OPC UA这些协议怎么配置数据怎么映射出问题了怎么排查这是高级工程师的日常。所以你在看培训视频的时候要有意识地区分这个视频是在教基础指令还是在教项目思维前者看一遍就够了后者需要反复琢磨并在实际项目中验证。2. 培训视频的正确打开方式从看到练的转化2.1 为什么你看完视频还是不会写程序这是我最想聊的一个话题。我见过太多人硬盘里存了几百G的PLC视频教程从入门到精通、从初级到高级一个不落全下载了但真正写程序的时候还是懵。原因很简单看视频是被动接收写程序是主动输出这是两种完全不同的认知活动。你看老师写一个电机星三角启动程序觉得逻辑很清晰每一步都能理解。但当你自己面对一个空白的编程界面没有老师告诉你下一步该写什么你的大脑就卡住了。这就像学游泳你在岸上看了一百遍教学视频动作要领背得比教练还熟但跳下水的那一刻还是会呛水。编程也是一样必须动手而且必须脱离教程动手。我的具体做法是看完一个知识点的视频后立刻关掉视频凭记忆把程序重新写一遍。写不出来就说明没真正掌握回去再看然后再关掉重写。这个过程很痛苦但效果比看十遍视频都好。2.2 仿真软件你的零成本练手平台不是每个人都有条件买一台PLC放在家里练。好消息是主流品牌都有仿真软件你可以在电脑上模拟PLC的运行。西门子的S7-200 SMART有官方的仿真软件S7-1200/1500可以用PLCSIM老版本或者PLCSIM Advanced新版本支持更高级的通信仿真。三菱的GX Works2/3自带仿真功能汇川的AutoShop也支持仿真。这里要重点说一下PLCSIM Advanced因为很多人在使用时会遇到启动不了的问题。常见的原因有这么几个授权问题PLCSIM Advanced需要有效的授权试用版有21天的期限过期后需要重新申请或者购买。网络适配器冲突PLCSIM Advanced会创建虚拟网卡如果你的电脑上有其他虚拟网卡比如VMware、VirtualBox创建的可能会冲突。解决办法是在网络适配器设置里禁用不相关的虚拟网卡。端口占用PLCSIM Advanced默认使用一些特定端口进行通信如果这些端口被其他程序占用了就会启动失败。可以用netstat -ano命令查看端口占用情况。Windows版本兼容性某些Windows更新会导致PLCSIM Advanced不兼容需要安装对应的补丁或者回退更新。如果PLCSIM Advanced实在搞不定退而求其次用PLCSIM也够用了。PLCSIM虽然不支持通信仿真但练习基本逻辑和PID控制完全没问题。提示仿真软件虽然方便但它不能完全替代真实PLC。仿真环境下你不需要考虑接线、电源、信号干扰、接地等实际问题。所以一旦有条件还是建议买一台二手PLC闲鱼上S7-200 SMART大概几百块配合练习。2.3 建立自己的程序库从抄到改到创我刚开始学PLC的时候有一个习惯每学到一个新的功能就把它写成一个独立的子程序保存起来。比如电机启停、星三角降压启动、红绿灯控制、交通灯带倒计时、模拟量滤波、PID温度控制等等。这些子程序就是我的程序库。后来做项目的时候遇到类似的功能直接调出来改改参数就能用效率极高。但要注意抄程序不是目的理解程序才是。你抄一个红绿灯程序不能只是复制粘贴要搞清楚为什么用定时器而不是计数器为什么用比较指令而不是直接输出如果我要加一个紧急全红功能应该在哪里改我建议你每抄一个程序都做三个练习改功能在原程序基础上增加或修改一个功能比如红绿灯增加黄灯闪烁。换写法用不同的指令实现同样的功能比如用SET/RST代替自锁用比较指令代替定时器串联。找bug故意在程序里制造一个逻辑错误然后自己排查修复。这三个练习做下来你对这个程序的理解会深入很多。3. 从初级到高级必须跨过的四道坎3.1 第一道坎模拟量处理与量程变换数字量逻辑是0和1的世界按钮按下就是1松开就是0简单直接。但现实世界是连续的温度、压力、流量、液位这些都是模拟量需要通过传感器转换成电信号通常是4-20mA、0-10V或者0-5V再接入PLC的模拟量输入模块。模拟量处理的核心是量程变换。举个例子一个温度传感器测量范围是0到100摄氏度输出4-20mA信号。PLC的模拟量输入模块把4-20mA转换成数字量比如0到27648西门子的标准。那么4mA对应0度数字量是020mA对应100度数字量是2764812mA对应50度数字量是13824换算公式是实际温度 (数字量 / 27648) × (100 - 0) 0但实际工程中传感器可能有偏差比如4mA实际对应的是-2度而不是0度。这时候就需要做偏移校准。你需要在程序里加一个偏移量或者用两点校准法来修正。还有一个容易被忽略的问题是滤波。模拟量信号很容易受到干扰读数会跳动。常见的滤波方法有算术平均滤波采集N个值求平均N越大越平滑但响应越慢。中值滤波采集N个值取中间值适合去除脉冲干扰。一阶滞后滤波本次输出 α × 本次采样 (1-α) × 上次输出α越小越平滑。我在实际项目中的经验是对于温度这种变化缓慢的信号用算术平均滤波N取10到20对于压力、流量这种变化较快的信号用一阶滞后滤波α取0.3到0.5。滤波太强会导致响应迟钝滤波太弱又起不到效果需要根据实际工况调整。3.2 第二道坎PID控制不是调三个参数那么简单PID控制是自动化领域的经典算法但很多人在学习时只记住了P是比例I是积分D是微分真到整定参数的时候就抓瞎。先说一个反直觉的事实大多数工业控制场景只用P和I就够了D基本不用。因为D对噪声极其敏感而工业现场的传感器信号多多少少都有噪声加了D反而会让输出抖动。PID整定的经典方法是齐格勒-尼科尔斯法Ziegler-Nichols步骤是把I和D设为0只留P。逐渐增大P直到系统出现等幅振荡记录此时的增益Ku和振荡周期Tu。根据经验公式计算PID参数P 0.6KuI 2/PD Tu/8。但这个方法在实际工程中很少直接用因为它会导致系统超调较大。更实用的方法是手动整定先把I和D设为0P从小到大调直到系统响应快但超调可接受。加入I从小到大调消除稳态误差。I太大会导致振荡太小则消除误差太慢。如果需要加入少量D抑制超调。我在做温度控制的时候一般P设5%到10%I设几十秒到几分钟D不用。做压力控制的时候P设10%到20%I设几秒到几十秒。当然具体数值要看被控对象的特性不能一概而论。还有一个重要的点是PID的输出限幅。比如你控制一个加热器输出范围是0到100%那PID的输出必须限制在这个范围内。如果不做限幅积分项可能会累积到很大的值导致系统失控。这就是所谓的积分饱和解决办法是加抗积分饱和逻辑当输出达到限幅值时停止积分累积。3.3 第三道坎通信配置与数据映射现代自动化项目PLC很少是孤立的。它要和触摸屏通信显示数据要和变频器通信控制频率要和上位机SCADA系统通信上传数据。通信配置是很多人的噩梦因为一旦通信不上你面对的是一个黑盒子不知道问题出在哪。以最常见的Modbus RTU为例通信配置需要注意这几个参数参数常见值说明波特率9600/19200/38400主从设备必须一致数据位8几乎都是8位停止位1或2主从设备必须一致校验方式无/奇/偶主从设备必须一致从站地址1-247每个从站地址唯一通信不上排查顺序是物理层接线对不对A接A、B接B终端电阻加了没有用万用表量一下A-B之间的电压正常应该在1到5V之间波动。参数层波特率、数据位、停止位、校验方式主从是否一致地址层从站地址对不对有没有地址冲突数据层寄存器地址对不对Modbus的寄存器地址有0-based和1-based的区别有的设备手册写40001实际访问地址是0。我踩过最坑的一次是一个变频器的Modbus通信手册上写的是40001寄存器我按1-based地址去读死活读不到数据。后来查了半天才发现这个变频器用的是0-based地址40001对应的实际地址是0。这种细节手册上往往写得不清楚只能靠试。3.4 第四道坎程序架构与标准化初级工程师写程序是一个功能一个功能地堆。高级工程师写程序是先搭框架再填内容。一个好的PLC程序架构应该包含这几个部分初始化程序上电时执行一次设置初始状态、清零数据、初始化通信。手动程序设备调试和维护时使用每个动作独立控制。自动程序正常生产时的流程控制通常用状态机或者步进控制来实现。报警程序监测各种故障条件触发报警并执行相应的保护动作。通信程序处理与触摸屏、变频器、上位机的数据交换。输出程序统一处理所有输出方便加互锁和保护逻辑。这种分块架构的好处是程序清晰易读改一个功能不会影响其他部分调试的时候可以分块调试。另外标准化是提高效率的关键。比如你做一个项目有10台同样的电机你不需要写10遍电机控制程序而是写一个电机控制功能块调用10次每次传入不同的参数启动按钮地址、停止按钮地址、输出地址、故障地址等。这样程序量大大减少而且改一处就全改了。西门子的S7-1200/1500支持功能块FB和功能FC三菱的GX Works3也支持FB。学会用FB/FC是从初级迈向高级的重要一步。4. 实操中那些教程不会告诉你的坑4.1 硬件接线烧输出点的惨痛教训我刚开始学PLC的时候犯过一个很低级的错误用PLC的输出点直接驱动一个电磁阀结果电磁阀的浪涌电流把输出点烧了。PLC的输出点通常有继电器输出、晶体管输出和晶闸管输出三种。继电器输出可以接交流也可以接直流但寿命有限机械触点有动作次数限制而且响应速度慢。晶体管输出响应快、寿命长但只能接直流而且有漏电流。晶闸管输出只能接交流。不管哪种输出都不能直接驱动大功率负载。电磁阀、接触器线圈、电机这些感性负载在断电瞬间会产生很高的反向电动势必须加续流二极管直流负载或者RC吸收电路交流负载来保护PLC输出点。正确的做法是PLC输出点驱动中间继电器中间继电器再驱动接触器或电磁阀。中间继电器便宜烧了换一个就行PLC输出点烧了修起来就麻烦了。还有一个细节PLC的电源和负载电源要分开。PLC的CPU电源通常是24V直流而负载可能是220V交流。如果共用一个电源干扰会很大甚至可能损坏PLC。4.2 接地与抗干扰看不见的杀手工业现场的电磁环境很恶劣变频器、伺服驱动器、大功率电机都是干扰源。如果你的PLC程序逻辑没问题但设备运行不稳定十有八九是干扰问题。抗干扰的措施包括PLC单独接地接地电阻小于4欧姆接地线尽量短粗。信号线用屏蔽线屏蔽层单端接地通常在PLC侧接地。模拟量信号远离动力线至少保持20厘米以上的距离不要走在同一个线槽里。变频器输出线用屏蔽电缆屏蔽层两端接地。加装滤波器在PLC电源输入端加装电源滤波器。我遇到过一个案例一个温度控制系统热电偶信号总是跳动换了传感器、换了模块都没用。后来发现是热电偶的补偿导线和电机的动力线走在同一个线槽里把信号线单独走线之后问题就解决了。4.3 程序调试在线监控与强制操作的技巧PLC编程软件都支持在线监控你可以实时看到程序里每个变量的值。这是调试程序最常用的手段。但很多人不知道的是强制操作Force要慎用。强制操作是强制把一个变量设为某个值不管程序逻辑怎么算。调试的时候用来测试输出很方便但如果忘了取消强制程序就会一直按强制值运行可能导致严重事故。我的习惯是强制操作之后立刻在纸上记下来调试完马上取消。有些PLC软件会在强制状态下显示特殊的颜色或者图标注意观察。还有一个调试技巧是用变量表监控。把关键变量加到一个变量表里可以同时监控多个值比在程序里一个个找方便得多。西门子的状态图表、三菱的软元件批量监控都是这个功能。4.4 程序备份与版本管理血泪教训我吃过一次大亏一个项目的程序改了好几个版本最后发现还是第一版最稳定但第一版已经被覆盖了只能重新写。从那以后我养成了一个习惯每次修改程序之前先备份当前版本。备份文件的命名规则是项目名_日期_版本号比如温度控制_20250115_v3。同时在程序里加注释说明这个版本改了什么。如果项目比较大建议用Git或者SVN做版本管理。虽然PLC程序是二进制文件Git不能做差异对比但至少可以保留每个版本的历史记录随时回退。另外程序注释非常重要。我见过太多人写程序不写注释过两个月自己都看不懂了。注释要写清楚这个网络段是干什么的这个变量的含义是什么这个定时器的时间为什么设这个值。好的注释让接手的人包括未来的你自己能快速理解程序逻辑。5. 从学习到实战如何积累项目经验5.1 用仿真项目练手从红绿灯到电梯控制没有实际项目怎么办自己造项目。红绿灯控制是最经典的入门项目。一个十字路口东西方向和南北方向轮流放行带倒计时显示。这个项目涵盖了定时器、计数器、比较指令、状态机等基础知识点。四层电梯控制是进阶项目。电梯的逻辑比红绿灯复杂得多楼层呼叫、方向判断、开关门控制、故障保护。这个项目能锻炼你的状态机设计能力和逻辑思维能力。大棚灌溉控制是模拟量项目。土壤湿度传感器采集湿度低于设定值就启动水泵高于设定值就停止。加上手动模式和报警功能。这个项目能让你练习模拟量处理和PID控制。自动售货机是综合项目。投币、选货、出货、找零涉及计数器、比较指令、状态机、通信如果加触摸屏。这个项目能锻炼你的综合设计能力。这些项目在网上都能找到案例但我的建议是先自己写写不出来再看别人的。自己写的过程才是真正的学习过程。5.2 拆解别人的程序学习最快的捷径如果你有机会接触到实际项目的程序那是最好的学习材料。拿到别人的程序不要只是看要拆解这个程序的架构是怎样的分了几个子程序I/O分配表是怎么做的地址规划有什么规律模拟量是怎么处理的量程变换公式是什么通信是怎么配置的数据是怎么映射的报警是怎么处理的有哪些保护逻辑拆解几个完整的项目程序之后你会发现很多套路是通用的。比如电机控制基本都是启保停加故障保护模拟量处理基本都是量程变换加滤波通信基本都是配置参数加数据映射。掌握这些套路你自己做项目的时候就有章可循了。5.3 建立自己的知识管理体系学PLC涉及的知识面很广电气基础、控制理论、编程语言、通信协议、硬件选型。如果没有一个知识管理体系学到后面就乱了。我的做法是用笔记软件比如Obsidian、Notion或者简单的文件夹建立分类笔记指令手册常用指令的用法和示例按品牌分类。程序模板常用的功能块和子程序可以直接复制使用。问题记录遇到过的故障和解决办法按现象分类。项目笔记每个项目的架构、I/O分配、关键逻辑、调试记录。学习笔记看视频、看书、看文档的笔记按主题分类。这个知识库会随着你的经验增长而不断丰富成为你最有价值的资产。6. 关于学习节奏和心态的一些个人体会学PLC这件事急不得。我见过有人三个月就能独立做项目也见过有人学了一年还在纠结定时器怎么用。差异不在于智商而在于是否真的动手做了。我的建议是每天至少写一个程序哪怕只是改一个参数、加一个功能。编程是手艺活手感很重要。三天不写手就生了。另外不要追求把所有指令都学会。PLC的指令有几百条但常用的也就二三十条。把常用的指令用熟比把所有的指令都了解一遍有用得多。遇到不常用的指令查手册就行了。还有一点学会看手册。培训视频只能带你入门真正深入的东西都在官方手册里。西门子的系统手册、三菱的编程手册虽然厚但讲得最清楚。养成查手册的习惯比看一百个视频都有用。最后说一个我自己的教训不要跳过基础直接学高级。我当初觉得梯形图太简单直接去学SCL结构化文本结果写出来的程序逻辑混乱调试的时候根本看不懂。后来老老实实回来用梯形图把基础打牢再学SCL就顺畅多了。基础不牢地动山摇这话在PLC学习上特别适用。如果你现在正在学PLC或者准备开始学我的建议是选一个品牌买一套仿真软件找一套系统的视频教程然后关掉视频打开编程软件开始写。写错了没关系仿真环境下不会烧硬件。写不出来就回去看视频看懂了再关掉视频继续写。这个循环重复一百次你就入门了。
返回列表