
1. 为什么我要写这份PLC实战经验总结干了三年PLC从最开始连IO分配表都看不懂到现在能独立扛非标项目调试中间踩过的坑、熬过的夜、被老师傅骂过的次数说实话已经数不清了。刚入行那会儿我特别希望有人能告诉我梯形图里那个常闭触点为什么放在这里、西门子1200的PID温度波动大到底该调哪个参数、步进电机的梯形图跟普通电机有什么区别。但网上搜出来的东西要么太理论要么太零碎真正能直接抄作业的实战经验少得可怜。这份总结就是把我这三年在产线上、在调试现场、在深夜改程序时积累下来的90条经验按主题分类整理出来。涉及的内容包括PLC基础认知、IO分配与硬件接线、梯形图编程逻辑、西门子1200与博途实战、程序框架搭建、非标项目调试、常见故障排查以及步进电机、变频器通讯、PID温度控制这些具体场景。适合刚入行1到3年的PLC工程师也适合那些从学校出来只会写简单逻辑、一到现场就发懵的朋友。我不讲虚的每条经验都尽量说清楚“为什么这么做”和“不这么做会怎样”让你看完就能用。2. PLC基础认知与入行避坑2.1 先搞清楚你面对的是哪类PLC很多人一上来就问“PLC编程怎么入门”这个问题其实没法回答因为不同品牌的PLC编程思路差异很大。三菱的GX Works2和西门子的博途操作逻辑完全是两套东西。我建议你先确定自己公司或目标岗位用的是哪个品牌然后死磕这一个平台。我见过太多人今天看三菱教程、明天学西门子1200结果两个月过去连一个完整的电机顺启逆停程序都写不利索。从市场占有率来看西门子S7-1200和S7-200 SMART在中小型非标项目里用得最多三菱FX系列在日系设备和老产线上常见汇川PLC这几年在国产替代趋势下增长很快。如果你完全零基础我建议从西门子S7-1200加博途开始因为资料最全、社区最活跃遇到问题容易找到答案。台达PLC的下载程序和通讯设置相对简单适合练手但大型项目里用得少。注意不要同时学两个品牌。先把一个平台的编程逻辑、硬件组态、通讯配置吃透再迁移到其他品牌你会发现底层逻辑是相通的。2.2 梯形图符号不是背出来的是用出来的网上有很多“梯形图符号大全”但光背符号没意义。我刚开始学的时候把常开、常闭、线圈、置位、复位这些符号背得滚瓜烂熟结果一到实际程序里就不知道该怎么组合。后来才明白梯形图的核心不是符号本身而是“能流”的概念——电流从左母线流到右母线经过条件判断最终驱动输出。举个最简单的例子电机顺启逆停。要求是润滑电动机先运行3秒后主轴电机运行系统停止时主轴电机先停4秒后润滑电机再停。这个逻辑用梯形图写关键就是两个定时器和一个启动保持回路。润滑电机启动后T1计时3秒T1常开触点闭合驱动主轴电机停止时主轴电机先断电T2计时4秒T2常闭触点断开润滑电机。你看符号还是那些符号但组合方式决定了逻辑对不对。我建议新手在写梯形图之前先用纸笔画一下时序图把每个动作的先后顺序和延时关系标清楚再转化成梯形图。这个习惯能帮你省下大量在线调试的时间。2.3 程序框架比单个逻辑块重要得多入行第一年我写程序就是“想到哪写到哪”一个主程序里塞了几百个网络找一个问题要翻半天。后来跟一个老师傅做项目他第一件事就是让我建程序框架手动模式、自动模式、报警处理、参数设置、通讯管理每个功能块单独建FC或FB主程序里只做调用和模式切换。这个习惯彻底改变了我的编程效率。程序框架清晰之后调试时可以直接定位到某个功能块修改也不会影响其他逻辑。西门子1200的博途里我通常这样组织OB1做主循环调用FC1手动控制、FC2自动流程、FC3报警处理、FC4模拟量处理、FB1电机控制块、FB2 PID控制块。每个FB都做成可重复调用的比如电机控制块输入参数包括启动条件、停止条件、故障信号、输出点这样一台设备有十个电机我就调用十次不用重复写十遍逻辑。提示FB的接口参数一定要定义清楚Input、Output、InOut、Static、Temp各归其位。我见过有人把所有变量都塞在Temp里结果调用两次就出问题因为Temp是临时变量每个扫描周期都会刷新。3. IO分配与硬件接线实战3.1 IO分配表是项目的命根子IO分配表看起来简单但它是整个项目的基础。我踩过的最大一个坑就是IO分配没做好导致后期改程序时发现输入点不够用只能加扩展模块多花了两千多块钱。从那以后我每次做项目第一件事就是列IO表而且一定要留20%的余量。IO分配表要包含这些信息点位编号、信号名称、信号类型DI/DO/AI/AO、电压等级、对应设备、备注。比如“I0.0 启动按钮 DI 24VDC 操作台 常开触点”。这样接线的时候一目了然编程的时候也不用猜这个点是什么。对于西门子S7-1200本体自带14个DI和10个DO但实际项目里往往不够用。我的经验是数字量输入输出各留4个备用点模拟量输入至少留2个通道。如果项目涉及温度、压力、流量这些模拟量还要考虑信号类型是4-20mA还是0-10V因为接线方式和模块选型不一样。3.2 输入输出的接线细节输入接线最常见的问题是漏型和源型搞混。西门子1200的DI模块支持漏型/源型输入但接线方式不同。漏型输入是公共端接24V正极输入点接开关到0V源型输入是公共端接0V输入点接开关到24V。如果你接错了输入信号要么一直亮要么完全不亮。输出接线更要注意负载类型。继电器输出可以接交流负载但动作频率低、寿命有限晶体管输出只能接直流负载但响应快、寿命长。我见过有人用晶体管输出直接驱动电磁阀结果电磁阀的反向电动势把输出点打坏了。正确的做法是在电磁阀线圈两端并联续流二极管或者用中间继电器隔离。注意PLC输出点驱动感性负载时一定要加保护电路。直流感性负载并联续流二极管交流感性负载并联RC阻容吸收电路。这个细节很多教程不讲但现场烧输出点的案例太多了。3.3 模拟量信号的采集与换算模拟量是新手最容易懵的地方。西门子1200的模拟量输入模块4-20mA信号对应的数值范围是0到27648。如果你接的是温度变送器量程是0到100度那么实际温度 (采集值 / 27648) × 100。这个换算公式要写在程序里通常用NORM_X和SCALE_X两个指令配合完成。但这里有个坑如果传感器断线采集值会变成负值或者超过27648这时候如果不做处理程序里算出来的温度就会乱跳。我的做法是在程序里加一个判断采集值小于0或者大于27648时直接输出故障报警同时把温度值强制为上次的有效值或者0。对于PLC自带的模拟量输入输出比如西门子1200本体上的AI点精度和抗干扰能力比专用模块差一些适合要求不高的场合。如果项目对温度控制精度要求高比如PID温度波动要控制在正负1度以内建议用专用模拟量模块并且信号线用屏蔽双绞线屏蔽层单端接地。4. 梯形图编程与程序框架搭建4.1 从电机顺启逆停看梯形图逻辑电机顺启逆停是PLC入门的经典案例但很多人只是照抄程序不理解为什么这么写。我重新拆解一下润滑电动机启动后T1定时器开始计时3秒后T1常开触点闭合主轴电机启动。停止时主轴电机先停T2定时器开始计时4秒后T2常闭触点断开润滑电机停止。这个逻辑的关键在于“保持回路”和“互锁”。润滑电机的启动回路里要并联一个自己的常开触点这样按钮松开后电机还能保持运行。主轴电机的启动条件里要串联润滑电机的运行信号确保润滑电机没启动时主轴不能启动。停止按钮按下时先断开主轴电机的保持回路再通过定时器延时断开润滑电机。在实际项目里电机的顺启逆停往往还涉及故障信号、过载保护、手动/自动切换。我的做法是把这些逻辑封装成一个FB输入参数包括启动按钮、停止按钮、故障信号、启动延时、停止延时输出参数包括电机输出、运行指示、故障指示。这样一台设备有多个电机时直接调用多次就行。4.2 十字路口红绿灯的程序框架红绿灯程序是练习定时器和状态机的好例子。我见过很多人的写法是用一堆定时器串联东西南北四个方向各写一套程序又长又乱。更好的做法是用一个步序变量配合比较指令或者CASE语句把整个周期分成几个阶段。比如一个完整的红绿灯周期是东西绿灯30秒东西黄灯3秒南北绿灯30秒南北黄灯3秒。我用一个整数变量Step表示当前阶段Step1时东西绿灯亮Step2时东西黄灯亮以此类推。每个阶段用一个定时器计时时间到就切换到下一个Step。这样程序结构清晰修改时间参数也方便。如果要用梯形图实现可以用比较指令当Step等于1时驱动东西绿灯输出当Step等于2时驱动东西黄灯输出。步序的切换用定时器的完成位来触发。这种写法比串联定时器更灵活也更容易扩展比如增加左转灯、人行道灯。4.3 程序框架的分层设计一个完整的PLC程序框架我通常分成四层硬件层、设备层、工艺层、调度层。硬件层负责IO读写和通讯配置设备层封装电机、阀门、气缸这些执行机构工艺层实现具体的工艺流程调度层负责模式切换和报警处理。以西门子1200为例硬件层在OB1里调用硬件组态和通讯指令设备层用FB封装电机控制、阀门控制工艺层用FC实现自动流程调度层用OB1的主程序做模式判断手动模式调用手动FC自动模式调用自动FC。这样分层之后程序的可读性和可维护性大幅提升。提示FB的背景数据块要统一命名比如“FB_Motor_1_DB”、“FB_Valve_2_DB”这样在线监控时能快速找到对应的数据块。我见过有人用默认的DB编号结果程序里几十个DB根本分不清哪个是哪个。5. 西门子1200与博途实战经验5.1 博途项目创建与硬件组态博途是西门子1200的标配编程软件但它的操作逻辑和STEP7 Micro/WIN SMART完全不同。新建项目后第一件事是添加设备并组态硬件。CPU型号、扩展模块、通讯模块都要在设备视图里配置好否则程序下载后硬件不匹配会报错。硬件组态里有个细节容易被忽略CPU的启动模式。默认是“暖启动-断电前的模式”意思是断电恢复后CPU会回到断电前的运行状态。如果你的项目要求断电后必须手动重启就要改成“暖启动-停止模式”。这个设置在生产线上很重要因为突然断电后设备自动恢复运行可能造成安全事故。还有一个坑是博途的IP地址设置。PLC和触摸屏、上位机的IP地址必须在同一个网段否则通讯不上。我通常把PLC设为192.168.0.1触摸屏设为192.168.0.2上位机设为192.168.0.10。子网掩码统一255.255.255.0。如果项目里有多个PLC地址依次往后排。5.2 程序下载与在线调试博途下载程序时经常遇到“在线检查保护机密PLC组态数据的密码时出错”这个提示。这通常是因为PLC里已经有一个项目而且设置了保护密码。解决办法是在博途里选择“在线访问”找到PLC后执行“复位为出厂设置”然后再下载新程序。但要注意复位会清空PLC里的所有程序和数据操作前一定要确认。下载程序后在线监控是调试的核心手段。博途的监控表可以强制修改输入输出点也可以监控变量值。我调试时习惯建几个监控表一个监控所有输入点一个监控所有输出点一个监控关键变量。这样排查问题时不用来回翻程序直接看监控表就行。注意强制输出点在调试时很方便但调试完成后一定要取消强制否则程序里的逻辑控制会失效。我见过有人调试完忘了取消强制结果设备运行时输出点一直保持强制状态差点出事故。5.3 西门子1200与变频器通讯西门子1200和ABB变频器、森兰变频器通讯通常用Modbus RTU或Profibus。以Modbus RTU为例需要配置通讯模块CM 1241 RS422/485然后在博途里调用Modbus_Comm_Load和Modbus_Master指令。通讯参数包括波特率、数据位、停止位、校验方式必须和变频器设置一致。我做过一个项目西门子S7-200 SMART和森兰SB200变频器通讯用的是Modbus RTU。调试时发现通讯时断时续后来查出来是终端电阻没接。RS485通讯在总线两端要接120欧姆的终端电阻否则信号反射会导致通讯不稳定。这个细节在变频器手册里往往写得很小但现场调试时特别关键。如果项目里PLC和变频器距离较远比如超过50米建议用光纤转换器或者加中继器。另外通讯线一定要用屏蔽双绞线并且远离动力电缆否则变频器的干扰会串到通讯线上。6. 非标项目调试与故障排查6.1 非标项目调试的实战流程非标项目调试和标准设备调试完全是两回事。标准设备有成熟的程序和调试流程非标项目往往是从零开始边调试边改程序。我的经验是非标项目调试要分三步走先单机调试再联机调试最后带负载调试。单机调试时先不接负载只测试PLC的输出点是否能正常驱动中间继电器和接触器。用监控表强制输出点听接触器吸合的声音看指示灯是否亮。这一步能排除大部分接线问题。联机调试时把设备之间的联锁信号接进来测试顺启逆停、互锁保护这些逻辑。带负载调试时逐步增加负载观察电流、温度、压力这些参数是否正常。我踩过的一个坑是单机调试时一切正常带负载后电机启动瞬间PLC就重启了。后来查出来是电源容量不够电机启动时电压跌落导致PLC电源模块欠压保护。解决办法是给PLC单独配一个开关电源或者加大电源容量。6.2 常见故障排查速查表故障现象可能原因排查方法解决方案PLC电源指示灯不亮供电电压不对、电源模块损坏万用表测电源端子电压检查供电回路更换电源模块输入点无信号接线错误、传感器损坏、公共端接错短接输入点看指示灯检查接线更换传感器输出点不动作负载短路、输出点烧坏、程序逻辑错误监控表强制输出检查负载更换输出模块通讯中断终端电阻未接、地址冲突、干扰检查通讯参数和接线加终端电阻屏蔽线接地模拟量跳动信号线未屏蔽、接地不良、模块精度不够测量信号线电压用屏蔽双绞线单端接地PID温度波动大参数整定不当、传感器响应慢观察PID输出曲线重新整定P/I/D参数这张表是我三年调试经验的浓缩基本上现场遇到的故障都能在里面找到对应项。但要注意故障排查不能只靠表还要结合具体现象分析。比如输出点不动作可能是程序逻辑问题也可能是硬件问题要先区分是PLC没输出还是输出后负载没动作。6.3 PID温度波动大的调节方法PLC温度PID波动温差大是很多工程师头疼的问题。我做过一个注塑机温度控制项目刚开始温度波动正负5度后来调到正负0.5度。关键在三点采样周期、PID参数、传感器位置。采样周期不能太短否则传感器噪声会被放大也不能太长否则响应滞后。对于温度控制我通常设采样周期为1秒。PID参数先用自整定功能跑一遍然后手动微调。比例带P设大一点积分时间I设长一点微分时间D先不用。如果温度还是波动检查传感器安装位置热电偶要贴紧加热体不能悬空。提示西门子1200的PID_Compact指令有自整定功能但在自整定之前要确保系统处于稳定状态否则整定出来的参数不准。我通常先手动输出一个固定值等温度稳定后再启动自整定。7. 步进电机、软启动器与扩展应用7.1 步进电机梯形图控制步进电机的梯形图控制和普通电机不一样它需要脉冲输出和方向控制。西门子1200的PTO脉冲串输出功能可以控制步进驱动器梯形图里用CTRL_PTO指令配置脉冲参数包括脉冲数、频率、方向。我做过一个三轴步进电机的项目用的是汇川PLC控制六轴机械臂伺服。步进电机的梯形图逻辑其实不复杂关键是脉冲频率和加减速时间的设置。频率太高电机会失步频率太低效率上不去。加减速时间要根据负载惯量来调负载大就设长一点。注意步进电机的脉冲线一定要用屏蔽线并且远离动力线。我见过脉冲线被动力线干扰导致电机走位不准的案例。另外步进驱动器的细分设置要和程序里的脉冲数匹配否则实际走的距离和程序算的不一样。7.2 软启动器一拖三接线与程序软启动器一拖三是指一台软启动器轮流启动三台电机。这种方案在成本敏感的项目里很常见但接线和程序都有讲究。接线时软启动器的输出端要通过接触器切换到不同的电机接触器之间要有互锁防止同时吸合。程序里的逻辑是启动第一台电机时先吸合对应的接触器再给软启动器启动信号启动完成后软启动器输出旁路信号接触器切换到旁路运行然后软启动器复位准备启动下一台电机。整个过程要用步序控制确保任何时刻只有一台电机在启动状态。我踩过的坑是接触器切换时没有加延时导致软启动器还没完全停止就切换产生了电弧。后来在程序里加了2秒的切换延时问题解决。另外软启动器的参数要设置成“一拖多”模式否则每次启动都会报故障。7.3 一个PLC接两个触摸屏一个PLC接两个触摸屏在大型设备上很常见比如操作台一个、现场一个。西门子1200支持多个HMI连接但要注意通讯资源的分配。每个触摸屏占用一个连接资源S7-1200最多支持16个连接所以接两个触摸屏完全没问题。配置时两个触摸屏的IP地址要不同但都要和PLC在同一网段。触摸屏的画面可以独立设计也可以共用一套画面。如果两个触摸屏控制同一台设备要注意权限管理比如现场触摸屏只能操作操作台触摸屏可以修改参数。提示两个触摸屏同时读写同一个变量时可能会有冲突。我的做法是关键参数只允许一个触摸屏修改另一个触摸屏只做显示。这样避免数据不一致的问题。8. 写在最后的一些个人体会这份总结里的90条经验有些是我自己踩坑踩出来的有些是老师傅教的有些是在项目现场跟同行交流学到的。PLC这行入门不难但要做好需要不断积累。我到现在也不敢说自己什么都懂每次做新项目还是会遇到新问题。如果你刚入行我的建议是先把一个品牌的PLC吃透然后多动手、多调试、多总结。不要怕犯错但同样的错误不要犯第二次。每次调试完一个项目把遇到的问题和解决方法记下来一年之后你会发现这些笔记比任何教程都有价值。另外AI PLC代码生成这类工具可以帮你提高效率但不要依赖它。PLC程序的核心是逻辑和安全AI生成的代码只能做参考最终的逻辑判断和安全保护还是要靠你自己。我试过用AI生成一段梯形图逻辑看起来没问题但实际调试时发现少了一个互锁条件差点造成设备损坏。所以工具是辅助脑子才是关键。最后再分享一个小技巧每次下载程序之前先备份一份到本地。我见过太多人改程序改出问题想回退却发现没有备份。博途的项目文件、触摸屏的画面文件、变频器的参数文件统统备份。这个习惯看起来麻烦但关键时刻能救你一命。