1. 从继电器柜到PLC:为什么控制逻辑的载体变了
刚入行那会儿,我跟着师傅在配电室里摸爬滚打,满墙的中间继电器、时间继电器、接触器,接线密密麻麻像蜘蛛网。一个简单的星三角启动,柜子里塞了七八个元件,改一个逻辑就得重新理线、拆端子、对图纸,折腾大半天。后来第一次接触PLC,看着一段梯形图几分钟就把同样的功能跑通了,那种感觉就像从手摇计算器换到了电子表格——不是快了一点,是思维方式整个变了。
PLC,全称可编程逻辑控制器,本质就是一台为工业现场量身定制的工业计算机。它把传统继电器柜里那些硬件连线实现的逻辑关系,变成了存储在内存里的程序指令。输入端子接按钮、传感器、限位开关,输出端子接接触器线圈、电磁阀、指示灯,中间所有的联锁、延时、计数、运算,全部由程序来完成。这个转变带来的直接好处是:改逻辑不用动一根线,复制方案不用重新打柜子,排查故障可以在线监控每一个触点的状态。
但这里有个初学者最容易忽略的点:PLC不是万能的,它替代的是逻辑控制部分,不是替代所有电气元件。急停回路、安全门锁、过载保护这些涉及人身安全的环节,规范上仍然要求用硬接线实现,不能只靠程序。我见过有人把急停按钮直接接到PLC输入点,程序里写个常闭触点就完事,这在安全规范上是站不住脚的。PLC负责的是"聪明"的部分,安全底线还得靠硬件兜底。
那PLC到底适合谁学?我的判断是三类人:一是电气自动化相关专业的学生,这是吃饭的家伙;二是做设备维护、产线调试的技术员,不懂PLC就只能等厂家来修,被动得很;三是想从电工转型做自动化的师傅,PLC是绕不过去的第一道门槛。至于纯软件背景想转工控的,PLC反而不是最优先的,先把电气基础和现场仪表搞明白更实际。
2. PLC的硬件骨架:CPU、IO、电源和通讯口到底怎么配合
很多人学PLC一上来就啃编程指令,结果连模块都认不全,接线的时候对着端子排发懵。我建议先把硬件结构吃透,后面编程会顺很多。一台典型的模块式PLC,机架上插着几类模块,各司其职。
2.1 CPU模块:整个系统的大脑
CPU模块负责执行程序、管理内存、处理通讯。选型时最关键的几个参数是:程序存储容量、数据存储容量、指令执行速度、内置通讯口类型和数量、支持的最大IO点数。小型机比如三菱FX系列、西门子S7-200 SMART,CPU和IO集成在一起,适合几百个点以内的单机设备。中大型的西门子S7-1500、汇川AM系列,CPU独立成模块,通过背板总线带一堆IO模块,能扩展到几千点。
有个参数初学者经常忽略:扫描周期。PLC的工作方式是循环扫描——读输入、执行程序、刷新输出,一圈一圈跑。扫描周期就是跑一圈的时间,通常几毫秒到几十毫秒。如果程序写得臃肿,或者通讯任务太重,扫描周期会拉长,导致输入信号响应变慢。我遇到过一个案例,设备偶尔漏检一个短脉冲信号,查了半天是程序里有个死循环式的判断逻辑,把扫描周期从5ms拖到了40ms,脉冲宽度只有10ms,自然就漏了。
2.2 IO模块:PLC的手和眼
输入模块负责把现场的信号转换成CPU能识别的电平。这里要分清源型输入和漏型输入,也就是常说的NPN和PNP接法。国内现场PNP(源型)用得比较多,因为传感器输出高电平,抗干扰相对好一些。但日系设备上NPN也不少,接线时公共端接法完全相反,接错了要么不动作,要么烧模块。
输出模块分继电器输出、晶体管输出和晶闸管输出。继电器输出能带交流负载,但动作慢、寿命有限,适合频繁度不高的场合。晶体管输出响应快、寿命长,但只能带直流负载,而且要注意每点的额定电流,超了就得加中间继电器转接。我见过有人用晶体管输出直接驱动电磁阀,阀的启动电流比额定电流大好几倍,用了没多久输出点就烧了。
2.3 电源与接地:最不起眼却最容易出问题
PLC一般用DC24V供电,电源模块把交流220V转成24V给CPU和IO用。这里有个坑:不要用开关电源同时给PLC和感性负载供电。接触器、电磁阀这些感性负载在断电瞬间会产生反向电动势,干扰PLC运行,严重的直接导致宕机。正确做法是PLC单独用一个电源,或者至少加隔离模块。
接地更是老生常谈。PLC的接地端子要单独接大地,接地电阻小于4欧姆,不能和变频器、大功率设备共用接地。我处理过一次莫名其妙的故障:设备运行正常,但一启动旁边的变频器,PLC就报通讯错误。最后查出来是接地线共用,变频器的高频干扰串过来了,分开接地后问题消失。
2.4 通讯口:PLC和外界对话的通道
现在主流PLC都带以太网口和串口。以太网用于编程下载、连接触摸屏、接入SCADA系统。串口(RS485/RS232)用于连接变频器、仪表、老式设备。初学者常问的一个问题是:SCADA怎么和PLC连接?简单说,SCADA作为上位机,通过以太网或串口用对应的协议(西门子的S7协议、三菱的MC协议、Modbus TCP/RTU等)读写PLC的寄存器地址。配置的时候要搞清楚PLC的IP、端口号、站号、寄存器地址映射,这几项对不上,通讯就是连不通。
3. 编程语言的选择:梯形图、ST、FBD到底该先学哪个
PLC编程语言有好几种,IEC 61131-3标准里定义了五种:梯形图(LD)、功能块图(FBD)、结构化文本(ST)、指令表(IL)、顺序功能图(SFC)。实际工程中用得最多的是梯形图和ST,初学者往往纠结从哪个入手。
3.1 梯形图:电气人的母语
梯形图是从继电器逻辑图演变来的,左边是母线,右边是输出,中间是触点和线圈。对于有电工基础的人来说,梯形图几乎零门槛——常开触点、常闭触点、线圈,这些符号和继电器图纸一模一样。它的优势是直观,逻辑关系一目了然,排查故障时在线监控,哪个触点通了哪个没通,颜色一变就看得出来。
但梯形图也有局限。写复杂的数学运算、循环、字符串处理就很别扭,一个公式要拆成一堆加减乘除的方块。所以我的建议是:逻辑联锁、顺序控制用梯形图,数据处理、通讯解析用ST。两者在同一个项目里混用完全没问题,西门子的博途、汇川的InoProShop都支持。
3.2 结构化文本ST:像写代码一样写PLC
ST的语法接近Pascal和C,有IF-THEN-ELSE、FOR、WHILE、CASE这些结构。对于有编程基础的人,ST比梯形图效率高得多。比如要做一个配方管理,用ST写个数组循环,几行就搞定,梯形图得画一大片。
但ST的缺点是调试不如梯形图直观。在线监控时看不到"电流"流动,只能看变量值。而且不同品牌的ST语法有差异,西门子的ST和汇川的ST在细节上不完全一样,移植的时候要改。
3.3 功能块图FBD:模拟电路工程师的最爱
FBD用方框和连线表示逻辑,和数字电路图很像。做逻辑运算、PID控制、滤波算法的时候,FBD比梯形图清爽。但国内现场用FBD的比例不高,维护人员不一定看得懂,所以除非团队统一,否则不建议作为主力语言。
3.4 顺序功能图SFC:流程设备的利器
SFC把控制过程拆成一个个步(Step),步与步之间有转换条件(Transition)。做包装线、装配线、电梯这种有明显工序的设备,SFC能把流程画得清清楚楚。三菱的SFC、西门子的GRAPH都是这类。但SFC对简单逻辑来说反而啰嗦,杀鸡用牛刀。
我个人的学习路径建议是:先梯形图打底,把基本指令、定时器、计数器、比较指令练熟,然后学ST处理复杂运算,最后根据项目需要接触SFC和FBD。别一上来就追求"高级语言",梯形图都写不利索,ST写出来也是一团乱麻。
4. 初学者最容易踩的五个认知误区
教过不少人学PLC,也看过很多初学者的代码,有些误区反复出现,这里集中说一下。
4.1 误区一:把PLC当单片机,追求"精简"代码
有些从单片机转过来的朋友,写PLC程序也想着省指令、省扫描时间,一个触点复用七八次,逻辑绕来绕去。但PLC编程的第一原则是可读性和可维护性,不是执行效率。现场维护的电工可能只懂梯形图,你写个高度优化的代码,他看不懂,出了问题只能找你。多用一个中间继电器(M点),把逻辑分段,加注释,这才是工程做法。
4.2 误区二:忽略扫描周期,用PLC抓短脉冲
前面提过扫描周期的问题。PLC不是实时系统,它的输入刷新是周期性的。如果一个信号只持续几毫秒,而扫描周期是十几毫秒,这个信号就可能被漏掉。需要抓短脉冲的场合,要么用高速计数模块,要么用中断程序,不能指望主程序循环去抓。
4.3 误区三:输出点直接带大负载
PLC输出点的额定电流通常只有0.5A到2A,带个指示灯、小继电器没问题,直接带接触器线圈、电磁阀、电机,十有八九要烧。正确做法是输出点驱动中间继电器,中间继电器的触点再去带负载。多花几十块钱的中间继电器,省下的是几百块的输出模块。
4.4 误区四:不重视模拟量信号的抗干扰
温度、压力、流量这些模拟量信号,从传感器到PLC要经过长距离传输,很容易受干扰。初学者经常遇到读数跳动、不准的问题。处理办法:用屏蔽双绞线,屏蔽层单端接地;信号线和动力线分开走线槽;软件里加滤波,比如取几次采样的平均值。如果干扰特别严重,加信号隔离器。
4.5 误区五:程序没有急停和安全逻辑
这是最要命的。有些初学者写的程序,急停按钮只在主程序里判断一下,如果程序卡死或者扫描不到,急停就失效了。安全逻辑必须用硬件实现,急停按钮直接切断输出模块的负载电源,或者通过安全继电器控制。程序里的急停判断是辅助,不是主力。
5. 从零跑通第一个程序:电机启停控制的完整实操
理论说再多,不如动手跑一个。电机启停控制是PLC的"Hello World",但里面包含的知识点很全:输入输出接线、梯形图逻辑、自锁、互锁、在线监控。我以西门子S7-200 SMART为例,把整个过程走一遍。
5.1 硬件接线
准备一个S7-200 SMART CPU SR20,一个按钮开关(启动),一个按钮开关(停止),一个24V中间继电器,一个24V指示灯。
接线如下:
- 启动按钮一端接DC24V正极,另一端接PLC的I0.0端子
- 停止按钮一端接DC24V正极,另一端接PLC的I0.1端子
- 中间继电器线圈一端接PLC的Q0.0端子,另一端接DC24V负极
- 指示灯并联在继电器线圈两端
这里注意:输入公共端1M接DC24V负极,这样按钮接通时,I0.0得到高电平,PLC识别为ON。如果接反了,按钮按下反而没反应。
5.2 梯形图编写
打开STEP 7-Micro/WIN SMART,新建项目,在主程序里写:
Network 1: 启动停止控制 I0.0 I0.1 Q0.0 --| |----|/|----( )-- | | Q0.0 | --| |-------|这段逻辑的意思是:启动按钮I0.0按下(常开闭合),且停止按钮I0.1没有按下(常闭导通),则Q0.0线圈得电。Q0.0的常开触点并联在I0.0两端,形成自锁——松开启动按钮后,电流通过Q0.0自己的触点继续维持。
停止按钮用常闭触点,这样正常状态下I0.1是ON的,梯形图里的常闭触点断开,Q0.0不得电。按下停止按钮,I0.1变OFF,常闭触点闭合,但此时启动按钮已经松开,自锁回路被切断,Q0.0失电。这个逻辑和继电器控制完全一致。
5.3 下载与在线监控
用网线连接PLC和电脑,设置电脑IP和PLC在同一网段。在软件里点"下载",把程序写入PLC。然后点"运行",PLC进入RUN模式。
点"程序状态"按钮,梯形图会显示实时状态:导通的线路显示绿色(或蓝色,看软件版本),断开的显示灰色。按下启动按钮,可以看到I0.0变绿,Q0.0变绿并自锁。按下停止按钮,Q0.0变灰。这个过程能帮你建立对PLC扫描机制的直观感受。
5.4 常见问题排查
如果按下启动按钮没反应,按这个顺序查:
- 看PLC上的输入指示灯I0.0亮不亮。不亮说明按钮接线有问题,或者按钮坏了。
- 看软件里I0.0的状态变不变。硬件灯亮但软件不变,可能是地址写错了。
- 看Q0.0的指示灯亮不亮。软件里Q0.0变绿但硬件灯不亮,可能是输出模块故障或者负载接线问题。
- 如果Q0.0一亮就灭,检查停止按钮是不是接成了常开,导致程序里常闭触点一直断开。
这套排查思路适用于所有PLC故障,核心就是从信号源头往负载方向逐级查。
6. 仿真软件能不能替代真机:PLCSIM和实际设备的差距
很多初学者没有条件买真机,就用仿真软件练手。西门子的PLCSIM、三菱的GX Simulator、汇川的仿真功能,都能在没有硬件的情况下跑程序。但仿真和真机有本质区别,用不好会形成错误的习惯。
6.1 仿真软件能做什么
仿真软件模拟的是CPU的执行过程,能验证逻辑对不对、定时器计数器跑得准不准、数据运算结果对不对。对于学习指令、练习编程思路,仿真完全够用。PLCSIM Advanced还能模拟通讯接口,和触摸屏、SCADA做联合仿真,这个对学习上位机连接很有帮助。
6.2 仿真软件不能做什么
仿真软件没有真实的输入输出电路,所以:
- 模拟量信号的滤波、抗干扰、线性化,仿真里体现不出来
- 输出点的驱动能力、继电器动作时间、触点寿命,仿真里没有
- 通讯的实时性、丢包、干扰,仿真里是理想状态
- 接地、屏蔽、布线这些现场问题,仿真完全不涉及
我见过有人仿真跑通了就以为项目没问题,到现场一接线,输入信号抖动、输出带不动负载、通讯时断时续,全是仿真里遇不到的坑。
6.3 PLCSIM Advanced启动不了的常见原因
有朋友问PLCSIM Advanced的PLC实例启动不了,报Error 11或者干脆没反应。根据我的经验,常见原因有这几个:
- 虚拟网卡没有正确安装或启用。PLCSIM Advanced需要虚拟网卡来模拟通讯,网卡被禁用或者驱动异常,实例就起不来。
- 端口被占用。PLCSIM Advanced默认用一些端口做通讯,如果被其他软件占了,会启动失败。
- 权限问题。有些系统需要管理员权限才能创建虚拟实例。
- 软件版本和操作系统不兼容。老版本的PLCSIM Advanced在新系统上可能有问题。
排查顺序:先看虚拟网卡状态,再查端口占用,然后试管理员运行,最后考虑重装或换版本。如果实在搞不定,用普通PLCSIM先练逻辑,那个对系统要求低很多。
7. 品牌生态与选型:西门子、三菱、汇川、信捷怎么选
PLC品牌众多,初学者经常问学哪个好。我的观点是:先学一种打基础,再根据工作需要扩展。不同品牌的编程思想是相通的,差异主要在指令细节和软件操作上。
7.1 西门子:生态最全,资料最多
西门子在国内工控市场占有率很高,从S7-200 SMART到S7-1200、S7-1500,覆盖小型到中大型。博途(TIA Portal)平台把PLC、触摸屏、驱动、SCADA集成在一起,学一套能通吃。缺点是软件吃配置,正版价格不低。初学者可以从S7-200 SMART入手,便宜、资料多、仿真方便。
7.2 三菱:日系代表,小型机王者
三菱的FX系列和Q系列在小型设备上用得极多,尤其是老设备改造,经常遇到FX2N、FX3U。编程软件GX Works2/3,梯形图风格和西门子略有不同,但逻辑一致。三菱的定位控制、高速计数功能做得不错,做简单运动控制有优势。老式FX2N的编程软件FXGPWIN在Win7/8/10上兼容性有问题,需要设置兼容模式或者用虚拟机。
7.3 汇川:国产龙头,性价比高
汇川的PLC分AM系列(中型,基于Codesys)和Easy系列(小型,类似三菱FX)。AM系列支持Codesys平台,编程灵活,适合复杂项目。Easy系列主打性价比,替代三菱FX的场合很多。汇川的触摸屏和PLC配套性好,整体方案成本低。有个常见问题是威纶通触摸屏找不到汇川PLC的驱动,这时候要么更新触摸屏软件的驱动库,要么用Modbus协议自己映射地址。
7.4 信捷:小型自动化利器
信捷的XD系列在包装、纺织、电子设备上用得不少,价格便宜,编程软件免费。XD系列支持以太网和串口,连接触摸屏、变频器都方便。信捷的指令系统和三菱很像,有基础的人上手很快。
选型的时候,除了品牌,还要看几个实际因素:项目预算、现场维护人员熟悉什么品牌、供应商的技术支持能力、备件采购周期。我见过为了省钱选了冷门品牌,结果模块坏了等一个月,产线停产的损失远超省下的钱。
8. 从会编程到能交付:工程思维比指令更重要
最后说点掏心窝的话。PLC编程本身不难,指令就那么多,练几个月都能会。但为什么有的工程师能独立做项目,有的只能改改程序?差距在工程思维。
第一,先画流程图再写程序。拿到需求别急着打开软件,先把设备的动作流程、联锁关系、异常处理理清楚,画成流程图或者时序图。流程对了,编程就是翻译。
第二,考虑异常和边界。正常流程谁都会写,但传感器坏了怎么办?通讯断了怎么办?操作工误操作怎么办?这些异常处理才是程序稳定性的关键。我习惯在程序里加超时判断、状态校验、故障记录,出问题能快速定位。
第三,留好调试接口和注释。程序里多留几个强制点、模拟点,调试的时候方便。注释要写清楚每个网络的功能、每个中间变量的含义。你走了之后,别人能看懂你的程序,这是职业素养。
第四,文档和图纸同步更新。程序改了什么,图纸要改,IO表要改,操作说明要改。现场最怕的就是程序和图纸对不上,修起来要命。
PLC这条路,入门容易精通难。基础指令一个月能学完,但现场经验、故障处理、方案设计,需要一个个项目积累。别指望看几篇文章就成高手,找个真机,接上线,把程序跑起来,遇到问题一个个解决,这才是最快的成长方式。