PLC编程别慌!我从双色注塑机到立体车库,悟透了先做Excel表真相

B站影视 港台电影 2025-10-25 22:23 1

摘要:其实我刚接触PLC的时候,比你们还懵。今天就掏心窝子跟大家聊聊,我从一个啥也不懂的新手,到能独立写程序做项目,最关键的一个心得——写PLC程序前,先把Excel表做好。

其实我刚接触PLC的时候,比你们还懵。今天就掏心窝子跟大家聊聊,我从一个啥也不懂的新手,到能独立写程序做项目,最关键的一个心得——写PLC程序前,先把Excel表做好

说真的,这个方法不是我凭空想出来的,是踩过坑、摸过爬滚打出来的经验,亲测对新手特别友好。

第一次跟PLC打交道,是在海天公司的时候。当时要给一台双色注塑机加个转轴功能,可注塑机自带的电脑里压根没有这个程序,没办法,只能额外装一个PLC。

我还记得很清楚,当时用的是三菱FX系列,这也是我人生中接触的第一台PLC。那时候心里直打鼓,毕竟以前没碰过,生怕搞砸了。好在供应商很给力,不仅提供了PLC、伺服电机这些硬件,连程序都一并写好了,我算是捡了个“现成”,但也正是这次经历,让我对PLC产生了强烈的好奇。

真正逼着我自己上手写程序的,是后来到了倍福之后。那时候整个办事处就我一个人,典型的“万金油”——既要做销售,又得兼着技术支持。

第一个项目是上海的同事写的代码,他来现场跑了一趟把框架搭好,后面的维护就全交到我手上了。我当时拿着TwinCAT2软件,心里慌得不行,对着屏幕看了半天,硬着头皮一点点琢磨。没想到这软件还挺“友好”,界面逻辑不复杂,我边摸索边调试,修修改改几次之后,居然真的上手了。

后来慢慢有了信心,也开始给客户写一些DEMO。好多客户一听到IEC61131-3、ST语言就皱眉头,觉得是啥高深的高级语言,我就用自己写的小例子跟他们解释:“你看,这其实跟咱们平时安排工作流程差不多,一点都不难。”

写的多了,慢慢就总结出一些规律。而这些规律,还得从两段“不务正业”的学习经历说起。

可能有人会问,写PLC程序跟Excel表有啥关系?这就得提我年轻时的两件小事了,现在回头看,它们对我搞编程的影响真挺大。

一件是读研究生的时候,学校里来了个ISO内审员的培训班推销课程。我那时候年轻好奇心重,想着“ISO是啥?听起来挺厉害”,就花了几百块报了名。讲课的是位老干部,说话慢条斯理的,但讲的内容很实在——凡事要有流程,流程要有标准,标准要有数据,数据要可追溯。当时没觉得多有用,后来做工业4.0相关的项目时,突然就开窍了,这不就是工业自动化的核心逻辑嘛!

另一件是刚上班的时候,脑子一热报了个计算机高级程序员考试。我啃了好几个月的书,结果成绩出来,离及格线差了一大截,当时还挺沮丧的。但现在想想,那段时间没白熬,学到了不少软件工程的知识,比如怎么搭建一个大的程序框架、怎么避免重复工作,这些后来用到PLC编程里,简直是如虎添翼。

而我今天要跟大家说的核心方法——先做Excel表,本质上就是这两个经历教会我的:把纸面工作做扎实,后面的实操才会顺

光说不练假把式,我拿一个咱们天天能见到的“立体车库”项目当例子,跟大家说说这个Excel表具体要做哪些内容。毕竟我每天到办公室都要经过楼下的立体车库,用它举例大家也容易理解。

IO表就像是PLC的“接线说明书”,得写清楚这几件事:用的是什么型号的输入输出模块、模块装在哪个位置、每个模块上的每个点对应啥功能,以及外面接的是传感器还是气缸这类元器件。

可能有人会说,现在很多电气CAD软件能自动生成IO表啊,何必再用Excel重做一遍?我跟你说,Excel版的好处是方便存档,而且自己手动整理一遍,能让你对整个设备的硬件连接烂熟于心。我以前就吃过没整理的亏,有次调试时某个点没反应,翻CAD图翻了半天,后来发现是自己当初没搞清楚模块位置,要是有Excel表一眼就能查到。

变量表就是给PLC里的数据“起名字”。这里面分两种变量:

一种是有具体地址的,比如Modbus通讯时用到的变量,得跟前面的IO表对应上,就像给每个房间编上门牌号,找的时候才不会乱;另一种是没有实际地址的“内部变量”,但也不能随便起名字,比如“车库升降电机运行”就比“变量1”好懂多了,不然过俩月你自己都忘了这变量是干啥的。

结构体这个概念听起来有点专业,其实就是“打包”。比如立体车库里有很多气缸,每个气缸都要管方向、管磁性开关状态,还要设超时报警时间。要是每个气缸都单独定义一遍这些变量,得写几十行,累还容易错。

这时候就可以设计一个“气缸结构体”,把方向、磁性开关、超时时间这些属性都装进去。后面再用到气缸,直接拿这个结构体“复制粘贴”就行,就像咱们填表格时用模板一样,效率高多了。

如果需要,还可以加个“枚举变量”,比如把车库的“待机、升降、平移、故障”这些状态列出来,写程序时直接选就行,不用反复输数字。

POU就是程序组织单元,简单说就是把整个程序分成不同的“部门”,有负责整体控制的“程序(Program)”、负责特定功能的“功能块(Function Block)”,还有负责计算的“函数(Function)”。

我举个例子,立体车库里“升降”和“平移”是两个常用功能,我就可以做两个功能块。下次遇到类似的车库项目,直接把这两个功能块拿过来改改参数就能用,不用从头写,既省时间又能避免重复出错——当然了,要是功能块本身有问题,那所有用到的地方都会出问题,所以写功能块时得更仔细。

而程序的调用顺序、状态怎么切换,就像是给各个部门安排工作流程,流程顺了,整个系统才稳定,后续改功能也方便。

工艺说明就是把设备的工作流程写下来:第一步干啥、第二步咋衔接、满足啥条件才能切换到下一步。比如立体车库的“取车流程”:先检测车位是否有空、再控制升降台到位、接着平移托盘、最后提醒车主取车,这些步骤和条件都得写明白。

这一步用Word或PPT也能写,但我更推荐Excel,因为表格可以无限拉长,写多少步骤都不怕乱,而且能把步骤、条件、对应IO点放在同一行,看起来一目了然。我习惯备一个A4笔记本,先在本子上画草图,再整理到Excel里,手写的过程能帮我发现流程里的漏洞。

Excel表做好了,是不是就可以直接写代码了?别急,我再跟你说几个关键细节,都是我踩坑总结出来的经验。

Excel里的变量表可以直接复制到TwinCAT这类软件里,省得手动输入。我之前试过手动输,结果把“X0”写成了“X1”,调试时折腾了俩小时才发现,后来就养成了复制粘贴的习惯。而且Excel里可以批量加注释符号,比如给每个变量后面加“(* 注释内容 *)”,选中单元格一拖就搞定,效率超高。

写程序的时候,难免要加新变量。这时候千万别图省事直接在软件里加,一定要先在Excel表里更新,再复制到程序中。我知道这有点像“强迫症”,但真的有用。有次我临时加了个“超时报警变量”没更表格,过了半个月要改程序,死活想不起来这个变量是干啥的,最后翻调试记录才搞明白,从那以后我就严格遵守这个规矩。

接下来建各个POU,功能块要写清楚输入输出变量,函数写好参数就行。重点来了:每个POU建好后,先在主体里敲个“;”,这时候即使一句代码不写,程序也能编译通过。要是编译不通过,肯定是哪里手误了,比如用了系统保留字当名称,或者忘了加标点,这时候改比写满代码再排查简单多了。

很多新手一上来就闷头写代码,写着写着就乱了。我的习惯是先写满注释,把每个功能块要做啥、每个步骤的逻辑写清楚。比如立体车库的升降模块,先写“/* 1. 检测升降台是否到位 2. 到位后启动平移电机 3. 平移到位后发送完成信号 */”,再往注释里填代码。

这样做的好处是,即使中途被打断,回来一看注释就知道自己写到哪儿了。而且逻辑有问题的话,看注释比看代码更容易发现。

如果已经画好了流程图,就先把流程图“搬”到程序里,先把大步骤搭好。其实对设备来说,步骤之间的衔接比单个步骤的细节更重要。比如立体车库要是“升降”和“平移”的顺序搞反了,就会出故障,而单个步骤里的速度参数,后期可以慢慢调。这时候可以用注释代替代码,先把框架搭稳。

如果用的是TwinCAT或Codesys这类集成了人机界面(HMI)的软件,建表格的时候可以顺便画个HMI草图。我跟你说,这绝对是自动化工程师的“大救星”。

以前调试的时候,要在程序里一个个看变量状态,眼睛都看花了。现在我把关键变量都放到HMI上,比如“升降电机电流”“超时报警状态”,调试时一眼就能看到哪里出问题。有次做DEMO,我把逻辑动作的条件和输出状态都放HMI上,客户一看就明白“为啥这个动作没执行”,沟通效率高多了。

程序写好、机器能动了,千万别忘了做一张“修改记录表”。写下某年某月某日,因为啥原因改了程序,改的是哪个模块,怎么改的,改完后怎么测试的,效果怎么样。

而且千万别直接改原程序!可以新建一个POU,或者在原来的POU里加个新的action,调用的时候改个名字就行。我有次改了程序后发现新问题,因为有修改记录,五分钟就切回了原来的版本,要是直接改原程序,哭都来不及。

可能有人会说,搞这么多纸面工作,是不是太浪费时间了?其实短期看是多花了点时间,但长期下来能省太多事。我总结了一下,至少有这几大好处:

降低了代码编写的工作量,工程师可以把精力放在关键的工艺逻辑上,而不是纠结变量名怎么起;
方便沟通:IO表可以跟电气工程师核对,工艺说明能跟工艺工程师确认,不用因为“你说的是哪个点”“我要的是这个流程”而扯皮;
便于维护:新人接手项目时,拿着Excel表和修改记录,很快就能上手;多人协作时,大家按统一的表格规范来,也不会乱;
换平台方便:要是需要换别的品牌PLC,IO表、变量表、工艺说明这些核心内容都能复用,不用从头再来。我之前把一个项目从三菱换成倍福,因为有这些表格,一周就搞定了,要是重新写程序,至少得半个月。

其实我本身是做销售的,写技术文章可能有不少漏洞,但还是想把自己的经验分享出来。一方面是看了邓李老师的文章,受到启发,觉得好的经验就该拿出来交流;另一方面,也是因为看着工业4.0越来越普及,咱们国内的OEM制造业也在往高端走,PLC程序也得跟上节奏,不能再停留在“机器能开就行”的阶段了。

跟PC软件比,自动化程序有几个特点:用的人少、代码量小、协作性低。很多公司就一个自动化工程师负责写PLC程序,只要机器能跑就没人管程序质量。我上大学时读《软件工程》,开头讲了个科幻故事:飞船计算机出了软件故障,差点酿成大祸。以前觉得这是瞎编的,但现在看,随着设备越来越复杂、客户需求越来越定制化,软件故障早晚会成为行业痛点。

解决这个问题的办法,就是从计算机行业学经验——把流程做规范、把基础打扎实。我今天说的“先做Excel表”,就是最基础也最实用的一步。

希望我的这些唠叨能引起自动化工程师们的共鸣,起到抛砖引玉的作用。也欢迎大家在评论区分享自己的编程经验,咱们一起把程序写得更规范、更靠谱!

来源:自动化知识库

相关推荐