
1. 入行前必须想清楚的几件事1.1 自动化应届生到底在慌什么每年毕业季我都会收到不少学弟学妹的私信问的问题翻来覆去就那么几个PLC到底该怎么学学校里教的西门子S7-200跟企业里用的博途是不是一回事面试官问SCADA怎么和PLC连接我该怎么答说实话这些问题我十二年前也问过那时候没人给我系统讲全靠自己踩坑踩出来的。先泼一盆冷水学校里的PLC课程和企业里的自动化项目中间隔着一道不小的鸿沟。学校教你的是“怎么让电机转起来”企业要的是“整条产线稳定跑三年不出大故障”。这两件事的难度差着量级。但好消息是这道鸿沟完全可以通过有方向的刻意练习填平不需要你天赋异禀只需要你别把时间浪费在错误的地方。这篇内容我打算按90条的节奏来写每天更新一部分把PLC工程师入行最核心的经验拆开揉碎讲清楚。不管你是自动化、电气工程还是机电一体化专业只要你想入这行这些内容都能帮你少走至少两年的弯路。1.2 先搞清楚PLC工程师每天到底在干什么很多应届生对PLC工程师的想象是坐在电脑前写程序写完下载到PLC里设备就动起来了。这个画面不算错但只占了实际工作量的三成左右。真实的工作分布大概是这样的前期跟机械工程师对方案、确认IO点位表占20%画电气原理图和布局图占15%写PLC程序和HMI画面占25%现场调试和修改占30%剩下10%是写文档、做备份、跟客户扯皮。注意最后那30%的现场调试这才是真正拉开工程师水平差距的地方。程序写得好不好在办公室看不出来到了现场设备一跑问题全暴露。我见过太多应届生编程能力不差但一到现场就懵了。为什么因为现场有太多变量是你在办公室想不到的传感器信号抖动、气缸动作时间不一致、变频器干扰导致模拟量跳变、上位机通信超时……这些东西没有一本教材会系统教你只能靠项目喂出来。但如果你提前知道会遇到什么至少不会手足无措。1.3 入行前最该建立的三个认知第一个认知PLC编程的核心不是“写代码”而是“理逻辑”。梯形图也好SCL也好ST也好都只是表达工具。真正值钱的是你对设备动作流程的理解能力。一个经验丰富的工程师拿到工艺要求就能在脑子里跑通整个流程知道哪里会出问题、哪里需要加互锁。这个能力比会十种编程语言都重要。第二个认知通信是自动化的命脉。现在的产线早就不是单台PLC孤军奋战了PLC要跟变频器、伺服、机器人、视觉系统、上位机SCADA、MES系统打交道。Modbus、Profinet、EtherCAT、OPC UA这些协议你得至少精通一两种其他的能看懂配置就行。热搜里经常有人问“SCADA如何与PLC连接”这个问题背后其实就是通信配置的基本功。第三个认知文档能力决定你的职业天花板。我见过技术很强但从来不写文档的工程师干了十年还在现场调试。也见过技术中等但文档写得极其规范的三五年就做到项目主管。原因很简单文档是知识沉淀的载体你能把项目经验写成可复用的文档你的价值就不再局限于个人而是可以复制给团队。2. 核心技能拆解与学习路径2.1 PLC编程入门从梯形图到结构化编程PLC编程入门我的建议永远是先死磕梯形图再学SCL/ST最后碰FBD和顺序功能图。这个顺序不能乱。梯形图为什么重要因为它最接近继电器控制逻辑是理解“互锁”“自锁”“延时”这些基础概念的最佳载体。你去看任何一个PLC品牌的编程手册梯形图都是放在最前面的。而且现场调试的时候梯形图最直观你盯着屏幕就能看出哪个触点没通、哪个线圈没吸合。我到现在去现场排查问题第一件事还是切到梯形图监控模式。但梯形图有个致命缺陷处理复杂数学运算和循环逻辑的时候极其臃肿。这时候就需要SCL结构化控制语言或者ST结构化文本。SCL写起来像PascalST写起来像C本质上都是高级语言。用SCL写一个PID整定算法可能二十行就搞定了用梯形图得画满三屏。学习路径我建议这样安排第一周拿一个西门子S7-1200或者汇川AM系列的小型PLC把电机正反转、星三角启动、红绿灯控制这几个经典案例用梯形图写一遍。第二周把同样的逻辑用SCL重写一遍体会两种方式的差异。第三周找一个带模拟量输入输出的案例比如温度PID控制练习模拟量处理和PID参数整定。这三周下来你就具备了基本的编程能力。注意不要一上来就学SCL更不要一上来就学C或者Python写PLC。梯形图是根基根基不牢后面学什么都飘。2.2 通信协议Modbus和Profinet必须拿下通信这块我直接给结论Modbus RTU/TCP和Profinet是必须拿下的EtherCAT和OPC UA是加分项其他协议用到再学。Modbus为什么必须会因为它简单、通用、几乎所有的PLC和仪表都支持。你随便拿一个温控仪表、一个变频器、一个称重传感器大概率都支持Modbus。学会Modbus你就能把大部分第三方设备接进PLC。Modbus RTU走串口Modbus TCP走网口本质上都是主从问答式通信。你需要掌握的是功能码03读保持寄存器、06写单个寄存器、16写多个寄存器、寄存器地址映射、数据格式16位整数、32位浮点数、字节序问题。Profinet为什么必须会因为它是西门子生态的核心国内中大型项目里西门子PLC的占有率极高。Profinet是基于工业以太网的实时通信协议配置起来比Modbus复杂但性能强太多。你需要掌握的是GSD文件安装、设备名称分配、IO设备组态、实时周期设置。这些操作在博途里都有向导跟着走一遍就会了但背后的原理要理解为什么Profinet能保证实时性因为它用了RT和IRT机制绕过了TCP/IP协议栈。EtherCAT在运动控制领域很强尤其是多轴同步的场景。如果你以后想做伺服控制、机器人集成EtherCAT值得花时间学。OPC UA是上位机通信的趋势SCADA和MES系统越来越多地用OPC UA跟PLC通信。热搜里“SCADA如何与PLC连接”这个问题答案通常就是OPC UA或者Modbus TCP。2.3 HMI与SCADA从画面组态到系统集成HMI和SCADA经常被混为一谈其实差别很大。HMI是本地触摸屏通常跟单台PLC配套画面简单、功能单一。SCADA是上位机监控系统可以监控多条产线、多台PLC功能强大得多。应届生入行先学HMI再学SCADA。HMI组态很简单西门子WinCC、威纶通EasyBuilder、昆仑通态MCGS随便挑一个学两天就能上手。核心是画面布局要合理、按钮反馈要明确、报警信息要清晰。我见过很多新手做的HMI画面按钮小得跟蚂蚁一样报警信息就写个“故障1”操作工根本看不懂。记住HMI是给操作工用的不是给你自己看的。SCADA的学习曲线陡得多。以WinCC为例你需要掌握变量管理、画面开发、报警记录、趋势曲线、用户权限、脚本编写。再往上走还要学数据库对接、报表生成、Web发布。SCADA的核心价值在于数据采集和可视化所以通信配置是重中之重。一台SCADA同时跟十几台PLC通信怎么保证不丢包、不延迟这里面有很多门道。实操心得学SCADA的时候不要只学一个品牌。WinCC、组态王、Ignition、iFIX都了解一下。不同品牌的SCADA设计理念不同多接触能帮你理解SCADA的本质而不是只会点某个软件的按钮。2.4 电气基础不会看图纸的PLC工程师走不远这条可能有点反直觉但确实是我十二年经验里最深的体会之一PLC工程师必须懂电气。你可以不会画复杂的电气原理图但你必须能看懂。否则现场出了问题你连排查方向都没有。举个最简单的例子一个气缸不动作。如果你只懂PLC你会怀疑程序逻辑、怀疑输出点、怀疑电磁阀。但如果你懂电气你会先看电磁阀的供电是否正常、中间继电器是否吸合、PLC输出模块的公共端是否接对。很多时候问题根本不在程序里而在电气回路上。应届生至少要掌握这些电气知识继电器控制逻辑自锁、互锁、延时、接触器和热继电器选型、断路器选型、导线截面积计算、接地和屏蔽处理、24V直流电源分配。这些知识不需要你精通到能设计配电柜但必须能看懂图纸、能判断常见故障。2.5 仿真工具没有硬件也能练手的方案很多应届生问我没有PLC硬件怎么练答案是用仿真软件。西门子的S7-PLCSIM Advanced是最好用的仿真工具之一可以仿真S7-1200/1500系列PLC支持跟博途联调还能跟第三方SCADA通过OPC UA通信。热搜里有人问“S7-PLCSIM Advanced V5.0 PLC实例为什么启动不了”这个问题我后面会专门讲。除了PLCSIM Advanced还有几个选择三菱的GX Works3自带仿真功能汇川的AutoShop也支持仿真欧姆龙的Sysmac Studio同样有仿真模式。如果你连软件都不想装还可以用Factory IO这种3D仿真软件它内置了各种工业场景传送带、分拣线、立体仓库你可以用PLC程序控制虚拟设备视觉效果很直观。仿真工具的价值在于让你在没有硬件的情况下把程序逻辑跑通、把通信配置调通。但仿真永远替代不了真实硬件因为真实世界有干扰、有延迟、有各种意想不到的问题。所以我的建议是仿真练逻辑硬件练手感两者缺一不可。3. 实操过程与核心环节实现3.1 第一个项目从IO表到程序框架假设你现在接到一个最简单的项目控制一台电机正反转带过载保护带启动停止按钮带运行指示灯。这个项目小到不能再小但麻雀虽小五脏俱全能帮你建立完整的项目思维。第一步列IO表。这是所有PLC项目的起点。输入有哪些启动按钮、停止按钮、热继电器常闭触点。输出有哪些正转接触器、反转接触器、运行指示灯。每个IO点分配一个PLC地址比如I0.0启动、I0.1停止、I0.2热继电器Q0.0正转、Q0.1反转、Q0.2运行灯。第二步画电气原理图。主回路怎么走、控制回路怎么走、PLC输出怎么驱动接触器。这里有个关键点PLC输出模块的容量有限通常不能直接驱动接触器线圈需要加中间继电器。这个细节很多新手会忽略结果烧了输出模块。第三步写程序。梯形图逻辑很简单启动按钮和停止按钮控制一个中间变量中间变量再控制正转或反转输出。正转和反转之间必须互锁热继电器动作时切断所有输出。程序写完之后用PLCSIM仿真跑一遍确认逻辑正确。第四步现场调试。接线检查、IO点测试、空载运行、带载运行。每一步都要记录每一步都要确认。我见过太多人跳过IO点测试直接跑程序结果因为一个线接错了把接触器烧了。这个项目虽然简单但流程跟大项目是一样的。你把这个小项目走通了后面的大项目就是在这个框架上做加法。3.2 模拟量处理从原始值到工程值模拟量是PLC编程里最容易出问题的地方。温度、压力、流量、液位这些物理量通过传感器变成4-20mA或者0-10V信号再通过PLC的模拟量输入模块变成整数。这个整数叫原始值你需要把它转换成有物理意义的工程值。以西门子S7-1200为例模拟量输入模块的原始值范围通常是0-27648对应0-10V或者4-20mA。假设你接了一个4-20mA的压力变送器量程是0-1.6MPa。那么4mA对应原始值020mA对应原始值27648线性关系。工程值 (原始值 / 27648) × 1.6。但这里有个坑4-20mA信号在断线的时候原始值会变成负值或者超过27648。如果你不做断线检测程序会算出一个离谱的工程值可能导致误动作。所以模拟量处理必须加限幅和断线报警。还有一个坑是干扰。变频器、伺服驱动器、大功率接触器都会产生电磁干扰导致模拟量信号跳变。解决办法是信号线用屏蔽双绞线、屏蔽层单端接地、模拟量模块的电源加滤波、程序里加滑动平均滤波。这些措施看起来简单但能解决80%的模拟量问题。3.3 PID控制参数整定的实战方法PID控制是自动化工程师绕不过去的坎。温度控制、压力控制、流量控制、位置控制本质上都是PID。但很多应届生学PID的时候只记住了公式到了现场根本不知道怎么整定参数。我先说一个反直觉的事实大部分工业现场的PID控制用不上D微分。P比例和I积分就能解决90%的问题。D对噪声极其敏感现场信号稍微有点干扰D的输出就会剧烈波动。所以新手整定PID先把D设为0只用PI。整定步骤我推荐“先P后I”的方法。先把I设为0P从小到大慢慢加直到系统开始振荡然后取振荡临界值的60%作为P。然后加II从大到小慢慢减直到消除稳态误差。整个过程可能需要反复几次但比盲目试参数快得多。还有一个实用技巧如果系统允许先用手动模式把输出稳定在一个值观察被控量的变化趋势估算出系统的滞后时间和时间常数然后用齐格勒-尼科尔斯法算出初始PID参数。这个方法比纯试凑快但需要你对系统有一定的了解。注意PID参数不是一劳永逸的。设备老化、环境温度变化、物料特性变化都会影响PID效果。所以程序里最好留一个参数自整定功能或者至少让操作工能微调参数。3.4 通信配置实战Modbus RTU读取温控仪表拿一个最常见的场景用西门子S7-1200通过Modbus RTU读取一台温控仪表的当前温度。温控仪表的通信参数是9600波特率、8数据位、1停止位、无校验从站地址1温度值存在寄存器40001。硬件接线S7-1200的通信模块比如CM 1241 RS422/485的A接仪表的AB接仪表的BGND接仪表的GND。如果是多点通信所有从站的A接A、B接B首尾加终端电阻。软件配置在博途里添加Modbus RTU主站指令块MB_MASTER配置通信参数。波特率9600、数据位8、停止位1、无校验、从站地址1。功能码用03读保持寄存器起始地址0对应40001读取长度1。数据解析读回来的原始值是整数需要根据仪表的协议手册转换成实际温度。有些仪表是温度值乘以10有些是直接值有些是补码格式。这个必须看手册不能猜。常见问题通信不上先检查接线和终端电阻数据不对先检查寄存器地址和数据类型偶尔丢包检查波特率和通信距离。Modbus RTU在9600波特率下通信距离理论上1200米但实际超过500米就不太稳了建议加中继器或者转成光纤。3.5 程序框架设计让项目可维护可扩展新手写程序往往是想到哪写到哪所有逻辑堆在Main里。项目小的时候没问题项目一大就完蛋。我见过一个中型项目Main程序块有三千多行梯形图改一个逻辑要翻半天而且改完还容易影响其他地方。正确的做法是模块化。把程序分成几个层次设备层单个气缸、单个电机的控制、单元层一个工位的控制、流程层整个设备的动作顺序、通信层跟外部设备的通信、报警层故障检测和报警输出。每个层次用独立的FC或FB实现通过接口变量交互。这样做的好处是调试的时候可以单独测试每个模块维护的时候改一个模块不影响其他模块扩展的时候直接复用已有模块。我现在的项目不管多大Main里永远只有几十行就是调用各个功能块。还有一个技巧把常用的功能封装成FB功能块比如电机控制FB、气缸控制FB、PID控制FB、报警处理FB。这些FB可以跨项目复用大大减少重复劳动。我自己的FB库积累了上百个功能块新项目直接拖出来用效率提升非常明显。4. 常见问题与排查技巧实录4.1 仿真软件启动不了怎么办热搜里有人问“S7-PLCSIM Advanced V5.0 PLC实例为什么启动不了且没有报错”这个问题我遇到过好几次原因通常有这几个第一Hyper-V或者WSL2冲突。PLCSIM Advanced依赖Windows的虚拟化功能如果你装了Docker Desktop或者WSL2可能会冲突。解决办法是关闭Hyper-V和WSL2或者改用PLCSIM不是Advanced版本。第二防火墙拦截。PLCSIM Advanced会创建一个虚拟网卡如果防火墙拦截了虚拟网卡的通信实例就启动不了。解决办法是在防火墙里放行PLCSIM Advanced相关的程序。第三许可证问题。热搜里还有人问“自动化许可证管理器(0086:000301)未正确安装”这是西门子软件常见的许可证错误。解决办法是重新安装Automation License Manager或者用西门子的许可证修复工具。第四端口占用。PLCSIM Advanced默认使用一些特定端口如果这些端口被其他程序占用了实例也启动不了。用netstat命令查一下端口占用情况把冲突的程序关掉。4.2 PLC程序下载后设备不动作这是现场调试最常见的问题排查思路要系统化不能东一榔头西一棒子。先确认PLC是否真的在运行模式。有些PLC下载完程序后默认是STOP模式需要手动切到RUN。这个低级错误我见过不止一次包括我自己早期也犯过。再确认输出点是否有电。用万用表量PLC输出模块的对应端子看有没有24V输出。如果没有可能是程序逻辑没满足也可能是输出模块损坏。如果有24V但设备不动问题就在电气回路上检查中间继电器、接触器、接线。然后确认输入点是否正常。有时候设备不动是因为输入信号没进来比如光电开关没检测到物体、按钮触点接触不良。用PLC的监控功能看输入点的状态一目了然。最后确认程序逻辑。如果输入输出都正常那就是程序逻辑有问题。用梯形图的监控模式逐行看哪个条件没满足。这时候前期程序结构清晰的优势就体现出来了模块化的程序很容易定位问题。4.3 通信中断的排查流程通信问题是最让人头疼的因为它涉及硬件、软件、配置、干扰多个方面。我总结了一个排查流程按这个顺序走基本能解决大部分问题。第一步物理层检查。网线有没有插好、水晶头有没有做对、串口线有没有接反、终端电阻有没有加。这些基础问题占了通信故障的一半以上。第二步参数检查。波特率、数据位、停止位、校验位、从站地址、IP地址、子网掩码这些参数必须完全匹配。我见过太多因为波特率设错导致通信不上的案例。第三步用工具抓包。Modbus用Modbus Poll或者Modbus SlaveProfinet用Wireshark串口用串口调试助手。抓包能看到实际发送和接收的数据快速定位是发送问题还是接收问题。第四步检查干扰。如果通信时好时坏大概率是干扰问题。检查通信线是否跟动力线走在一起、屏蔽层是否接地良好、是否有变频器等干扰源。解决办法包括通信线远离动力线、加磁环、用光纤替代铜缆。4.4 常见问题速查表问题现象可能原因排查方法解决方案PLC无法下载程序通信线故障、IP冲突、PLC在STOP模式检查网线、ping PLC地址、看PLC指示灯换线、改IP、切RUN模式模拟量跳变干扰、屏蔽不良、电源不稳观察跳变规律、检查接地加滤波、换屏蔽线、加隔离器通信偶尔丢包波特率过高、距离过远、干扰降低波特率测试、抓包分析降波特率、加中继、改光纤PID振荡P太大、I太小、D干扰先关I和D单独调P按先P后I步骤重新整定输出模块烧毁直接驱动大负载、短路检查负载电流、检查接线加中间继电器、加熔断器HMI画面卡顿变量过多、刷新周期太短减少画面变量、延长刷新周期优化画面、分组刷新程序下载后不运行程序块未调用、OB块缺失检查Main调用、检查OB1补全调用、重建OB块4.5 独家避坑技巧第一条永远备份。每次修改程序之前先备份当前版本。我见过太多人改程序改出问题想回退却发现没有备份。备份命名要有规律比如“项目名_日期_版本号_修改内容”方便追溯。第二条现场调试带三样东西万用表、网线测试仪、串口调试助手。这三样东西能解决80%的现场问题。万用表量电压通断网线测试仪查网线串口调试助手调通信。第三条不要相信“上次就是这么干的”。每个现场都不一样上次能用的参数这次不一定能用。该测的测该调的调不要偷懒。第四条程序里加诊断。每个关键动作加一个超时检测超时了报警。这样出了问题能快速定位是哪个环节卡住了而不是干等着看设备不动。第五条跟操作工搞好关系。操作工是最了解设备实际运行情况的人他们知道哪个动作容易卡、哪个参数经常要调。跟他们聊十分钟比你看半天程序有用。5. 职业发展与持续学习5.1 从应届生到独当一面需要多久这个问题没有标准答案但我可以给一个参考区间如果方向对、项目跟得上两到三年可以独立负责中小型项目五到八年可以负责大型项目或者带团队。关键变量有三个项目数量、项目复杂度、个人复盘习惯。项目数量决定你见过多少场景项目复杂度决定你思考的深度复盘习惯决定你能否把经验转化成能力。我见过干了五年还在做重复项目的工程师也见过三年就独当一面的。差别就在这三个变量上。给应届生的建议前两年不要挑项目什么项目都接多接触不同行业、不同设备、不同工艺。这两年是你积累场景库的黄金期场景库越丰富后面越值钱。第三年开始有选择地深入某个细分领域比如汽车产线、锂电设备、光伏设备、物流分拣成为这个领域的专家。5.2 新技术该不该追自动化行业的新技术层出不穷AI PLC代码生成、RPA、数字孪生、边缘计算、OPC UA over TSN。应届生很容易焦虑怕自己学的东西过时。我的观点是底层能力永远不过时应用技术按需学习。什么是底层能力电气基础、编程逻辑、通信原理、调试方法。这些能力不管技术怎么变都是需要的。什么是应用技术某个品牌的PLC、某个版本的软件、某个特定的协议。这些技术更新快但学起来也快用到再学完全来得及。AI PLC代码生成这个方向确实值得关注。现在已经有一些工具能根据自然语言描述生成梯形图或者SCL代码虽然还不能完全替代人工但作为辅助工具已经能提升效率了。我的建议是保持关注适当尝试但不要把所有精力都押在上面。AI生成代码的前提是你自己能判断代码对不对如果你连基本的编程逻辑都不懂AI生成的代码你也不敢用。5.3 考证和学历要不要卷自动化行业里证书的含金量普遍不高。西门子、三菱、罗克韦尔的官方认证有一定价值尤其是外企和大型集成商比较认可。但国内的中小企业更看重实际项目经验证书只是锦上添花。学历方面本科是主流门槛大专也有机会但需要更强的项目经验来弥补。硕士在研发岗和大型设计院有优势但在现场调试和项目管理岗本科和大专反而更接地气。我的建议是如果你已经本科了没必要为了学历去读研除非你想转研发或者进特定单位。把读研的两年时间用来跟项目收获可能更大。5.4 给应届生的日常学习建议每天花半小时看技术文档不用多贵在坚持。西门子的系统手册、三菱的编程手册、Modbus协议规范这些文档看多了很多问题自然就有答案了。每周动手写一个小程序哪怕只是仿真。编程是手艺活三天不写就手生。我到现在还保持每周写点东西的习惯有时候是帮朋友解决一个小问题有时候是自己琢磨一个新功能块。每月复盘一个项目把遇到的问题、解决的方法、学到的经验写下来。不用写得多正式几百字就行。坚持一年你会发现自己的进步速度远超同龄人。每年深入学一个新东西可以是一个新品牌的PLC、一种新协议、一个新软件。不用学到精通但要知道它是什么、能干什么、怎么入门。这样你的知识面会越来越宽遇到新项目不会慌。最后再分享一个小技巧加入一些技术社区但不要只潜水。看到别人问问题试着回答看到别人分享经验试着讨论。教是最好的学你在帮别人解决问题的过程中自己的理解也会加深。我很多技术上的突破都是在跟别人讨论的时候突然想通的。