引言
很多刚接触PLC的朋友都以为写程序是最难的部分,真正上手做完一整套项目才会明白,组态配置和通讯调试才是最耗精力的环节。
等你把所有前期准备工作都捋顺落地之后就会发现,反而是写逻辑程序这件事,成了整个流程里最简单的一环。
今天,我们就来扒一扒,为什么说编程只是PLC工程师的“基本功”,而组态和通讯才是真正的“渡劫”。
一、编程的错觉:那只是最后一步的“搭积木”
为什么说编程最简单?因为编程的逻辑是线性的、确定的。
举个例子:你要控制一台电机启动停止。程序怎么写?一个启动按钮常开触点,一个停止按钮常闭触点,加上一个接触器的自保触点,线圈输出。只要你的控制逻辑没有死循环,只要语法不出错,程序就能跑起来。
当硬件都已经连通,数据都能准确读取时,编程就像是搭积木。“传感器亮了,电机就转;液位到了,阀门就关。”这种因果关系的建立,对任何一个有逻辑思维的人来说,只要熟悉了指令集,不过是时间问题。
真正的难点,在于让这些信号能够“传”到PLC里,让PLC“认识”外部的硬件。
二、第一座大山:硬件组态——“对不起,我不认识你”
硬件组态,简单来说就是告诉PLC:“你是个什么型号,你肚子里插了哪些模块,你的底层参数是多少”。
很多新手以为,模块插在导轨上,线接好,PLC就能用了。大错特错!
举个真实的“翻车”例子:
现场控制柜加入了一个新的温度采集模块(RTD),工程师满心欢喜地写好了读取温度的程序,一下载,发现数值一直是0。
他检查了半天接线,没问题;检查了程序,没问题。最后发现,在博途(TIA Portal)的硬件组态里,他根本没有添加这个模块!PLC看着这个插在背板上的陌生家伙,心里想的是:“这玩意儿谁啊?我没见过,我不会理它的。”
更让人抓狂的是“版本匹配”问题。
组态时选了V4.0的固件版本,但实际买来的模块是V4.2的;或者组态里选了某个第三方网关,但设备描述文件(GSD)没装对。这些组态上的微小差异,都会导致PLC直接亮红灯报错。
组态,就是建立PLC与物理硬件之间的“虚拟映射”。这一步没做好,你的程序写得再天花乱坠,也不过是空中楼阁。
三、第二座大山:通讯协议——“你说什么,我听不懂”
如果说组态是让PLC认识自己的“四肢”,那么通讯就是让PLC学会和“外界”交流。这也是整个自动化行业最让人头秃的环节。
工业通讯协议五花八门:Modbus RTU、Modbus TCP、Profinet、EtherCAT、CANopen等,每一个都有自己的一套脾气。
通讯翻车案例:变频器的Modbus通讯
工程师需要用PLC通过RS485控制一台变频器。手册上写着变频器的频率给定地址是40001。
工程师在PLC里读取40001,结果变频器纹丝不动,PLC报通讯超时错误。
排查了几个小时,最后发现了三个坑:
接线坑
:RS485的A和B线接反了(有些厂家A+,有些厂家A-,全凭运气)。
参数坑
:变频器的通讯波特率设成了9600,奇偶校验设成了None,但PLC里设的是8-N-1。
地址坑
:Modbus地址存在“偏移”。有些设备手册写的是从0开始,有些写的是从1开始。实际要读写的寄存器,可能要加上一个偏移量变成40002。
如果是Profinet通讯,那更是噩梦。IP地址冲突、子网掩码不对、设备名称(Profinet Device Name)没有分配或者有空格……只要一个标点符号不对,整个网络就会瘫痪,通讯指示灯死活不闪绿光。
在通讯面前,所有的工程师都是卑微的。只要数据传不过来,你连调试程序的机会都没有。
四、顿悟时刻:准备工作做完了,编程如鱼得水
一个资深的PLC工程师是怎么做项目的?
他到了现场,第一件事绝对不是打开电脑写梯形图。而是拿着万用表检查接线,打开软件配置硬件组态,然后花费大量时间盯着电脑屏幕,一个字节一个字节地去抓包、去测试通讯。
当你终于把硬件的红灯变成了绿灯;
当你终于看到变频器的实际频率稳稳地传到了PLC的MD100寄存器里;
当你终于把各种传感器的数据干干净净地映射到了DB块中……
这时候,你长舒一口气,点开主程序块(OB1)。你会发现,之前觉得复杂的控制逻辑,现在写起来如丝般顺滑。因为你知道,只要你在程序里给一个M0.0置位,现场的电机就一定会转;只要你在程序里改一个数值,变频器就一定会响应。
原来,70%的精力都在铺路(组态和通讯),而编程,只是在已经修好的高速公路上开车而已。
五、结语
在自动化这个行当里,写程序决定了一个项目的“上限”,而组态和通讯决定了一个项目的“下限”。
组态涉及硬件选型、连接和参数配置,稍有疏漏会导致系统无法运行;通讯涉及多协议对接且场景不可预知;而程序本身只是逻辑顺序控制,结构相对简单。
PLC经典案例与源程序