直播课堂
HOME
直播课堂
正文内容
plc编程草图 工控前辈经验之谈 编写PLC程序我从做Excel表开始
发布时间 : 2025-04-19
作者 : 小编
访问数量 : 23
扫码分享至微信

工控前辈经验之谈 编写PLC程序我从做Excel表开始

作为在工控自动化行业侵淫已久的工程技术人员,无论在程序编写,抑或现场处理都会总结出自己的一套,本文作者周舟,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段,也总结出自己的一套PLC编程经验,与大家分享。

//////////

次看了邓李老师的文章《如何编写优质的PLC/PAC程序?大神的这份作业建议你抄一下》颇有些感受。工作快20年,多少写了些程序,大多是和机器相关的,记得本科的毕业设计是用VB+数据采集卡写了一个拖拉机发动机喷油嘴的弹簧测试,硕士课题用C在Linux下做了一些代码,而毕业后在海天,和师傅一起,继续在Linux下用C和QT堆了一台注塑机的控制器出来。

01

第一次接触PLC,是在海天公司给一台双色注塑机增加一个转轴功能,这个功能注塑机电脑上没有,所以外加了一个PLC,记得当时用的是三菱FX,这是我接触的第一个PLC,当时因为供应商提供了PLC、伺服电机、减速机等一套产品,所以程序也就让供应商写了。

到了倍福之后,由于整个办事处就我一个人,处于什么都干的状态,所以除了销售工作,也做技术支持。记得第一个项目是上海的同事写的代码,同事来现场一次,后面的维护我接过来。所幸TwinCAT2这软件比较简单,一来二去自己就上手了。

后来慢慢地也给客户写一点DEMO,用来给客户解释为啥IEC61131-3是一个简单的东西,不像想象的那么难,不要一想到ST语言就想到高级语言,等等诸如此类的问题。写着写着,也有了一些心得。

在聊聊这些心得之前,先说点题外话。我做过两件和工作不太相关的学习,一次是读研究生时,一个培训班来学校推销ISO内审员的培训,当时因为好奇去报了名,花了几百块钱听了一堆ISO的知识,记得讲课的是一位老干部。另一次是刚上班时,去报了一个计算机高级程序员的考试,看了几个月书,离及格线差了那么一大点(不是一小点)。但这两个事情,对我的影响比较大,ISO的学习,让我理解了凡事要有流程,流程要有标准,标准要有数据,数据要可追溯,这为后来理解工业4.0打下了基础 ,而高级程序员的考试,让我学到不少IT的知识,尤其是软件工程方面的知识,对于构建一个大的程序,还是有帮助的。

下面的心得,和这两件事情,有比较大的关系,说穿了,就是多做纸面工作

02

在写代码之前,我会先建个EXCEL表格大约有这么几项 (这里我虚拟了一个立体车库的项目,因为每天到办公室都会和立体车库打交道):

1IO表 ,输入输出的模块型号,模块的位置,每个模块上每个点的定义,以及外面接的是什么元器件。对于一些电气CAD软件,会自动生成这个表,但我们还是建议用EXCEL做一份,以便存档。

2变量表 ,一部分变量是有地址的,比如需要和上面提到的IO表进行对应,比如Modbus通讯。Modbus通讯需要定义变量地址,而IO对应的不需要在程序中指定,只要在系统配置中和硬件进行连接。另一部分变量是没有地址的,但也不能随便定义,要有一定的规则,以便阅读。

3结构体 (Structure),结构体的设计,可以放在变量表之前,为了提高效率,我们会设计一些结构体来做数据类型,比如一个气缸,就可以设计一个结构体来表述,这个结构体会包含气缸的方向,磁性开关状态,以及两个方向的超时报警时间。在使用到气缸时,就可以用这个结构体类型来直接定义气缸,而无需去定义每个气缸设计的变量。

必要的话,可以设计枚举变量,用来表述机器的状态。

4POU名称 (Program Organization Unit程序组织单元)。POU有三种类型:程序(Program)、功能块(Function Block)、函数(Function)。在规划阶段,程序和功能块的构建是很重要的,功能块会降低很多重复工作,从而避免一些普遍性的错误(当然,错了也就都错了),程序的调用、状态的切换是否清晰可控,则决定了整个项目是否足够强壮,并可持久改进及维护。

5工艺说明 ,包括各个工作步骤、步骤的衔接、条件的转换等。这个步骤,可以在EXCEL中做,也可以用word、PPT,但相比之下,EXCEL可能是个更好的选择,因为EXCEL的纸面是没有限制大小的,而word和PPT很容易遇到编辑范围太小的问题。

当然,也可以在纸张上来画。我个人建议每个项目备一个A4的本子,和EXCEL配合使用。

做完这个表格之后,我习惯将变量表直接复制到TwinCAT中,因为在EXCEL中,很多重复工作可以直接选中表格单元进行拖拉复制,比如注释的“(* ”和“*)”,以及末尾的“;”,都是直接复制单元格的,而对于一些带序号的变量,如X0-X7,顺序复制即可,这会在大幅度减少工作量的同时,降低变量编写出错机率。

在程序编写过程中,除了用于for循环的累加数,以及用来调试时的一些标志之外,如果要增加有实际意义的变量名,必须先在EXCEL里增加,再复制到程序中。这有点强迫症,但事实证明,这个有用。

接下去就是建立各个POU,对于功能块,要写好输入变量和输出变量,而函数只需要有参数即可。写完了每个POU,记得在每个POU的主体敲个";",这样,即使我们一句代码也不写,也是可以编译通过的。如果这时候编译不通过,可以看看是不是哪里有手误了,因为这时候能错的地方都是系统保留字,或者是忘记敲";",注释的括号少了之类。

接下来是不是写代码?不是的,是先写注释,而且是全面注释,即在各个功能块中,先写好注释。在TwinCAT中,一个程序块只需要一个“;”,即可编译通过,我们上面已经敲好了";",所以不用担心没有代码会造成程序不能编译。

我们回到前面第4点,如果流程图已经画好,那我们就把流程图搬到编程环境中,还是按照从大到小的原则,我们先把步骤编好,具体每一步里面做什么,可能远不如步骤之间怎么切换衔接来得重要。所以,在这个过程中,我们还可以用注释来替代代码,但别忘了在各种for、case中加上“;”。

最后一步,让我们在所有注释的地方,把代码写上。然后,编译一下。

如果有人可以把PackML的文档看一遍,会发现里面就有关于状态切换的图表,如果有兴趣,可以去找下PackML的文档。

如果你用的是TwinCAT或者Codesys的环境,我建议在写EXCEL表格和画流程图的时候,顺带把人机界面的草图也画了,我觉得集成人机界面的开发环境就是自动化工程师的大救星。人机界面和PLC在同一个环境内,意味着可以随时看到工程师想看到的内容,比如在调试时,需要看多个变量,那建在人机界面上会方便很多,不需要在程序中在线观察。

人机界面和PLC的集成,除了大大提高自动化工程师的幸福感之外,也会极大激发自动化工程师的创作欲望。比如有些DEMO,我会将逻辑动作的条件和输出状态都放在画面中,这样可以很清楚看到一个逻辑动作没有执行的原因,比如某几个动作有先后,那做个定时器或者多个定时器,将这些定时器的输出放在同一个画面,就可以明察秋毫了。

写完了程序,机器也动了,我们再来做一张表,就是修改记录 ,在这张表里,我们写下,某年某月某日,为了什么原因,我们改了哪个程序,怎么改的,修改后我们怎么测试的,测试的效果如何。

而修改的程序,不建议直接在原程序上改,可以建一个新的POU,也可以在POU里写一个新的action,在对应的调用处改掉调用名字即可。这样,即使新的程序出了问题,也很容易改回(RollBack)到原来的程序。而新的代码中,记得在头部写好注释。

03

至此,我们回过头来看看,我们获得了哪些好处:

1 、我们有了一个清晰的名字列表,包括变量的、IO的、程序的

2 、我们有了一个清晰的结构

3 、所有的问题会有据可查。

上面这几点是针对程序本身的益处,而对于项目和企业而言,则有更大的意义:

1通过分解 ,将代码部分的工作量比例降低了,这种逐步聚焦的方式,可以让工程师把精力放在最关键的地方。

2便于沟通 ,在代码之前的这些工作,都可以和其他人共享,比如IO表部分可以和电气工程师以及电工沟通,程序流程部分可以用来和工艺工程师沟通。

3便于维护 ,在移交给其他工程师,或者多人开发同一项目时会方便很多。如果没有注释,基本上工程师自己都会忘记原来写的什么。

4便于更换平台 ,当需要更换一个控制器平台时,会发现,大部分工作是相通共用的,这会在切换平台时节约大量的时间。

本文用了一些IEC61131-3的概念,关于IEC61131-3的书很少,推荐彭瑜老师和何衍庆老师的那本《IEC61131-3编程语言及应用基础》,机械工业出版社出版,这本书我买了应该不下三十本,用来送人。记得在倍福10周年庆典那天,公司邀请了彭瑜老师,恰好庆典在人民广场附近举办,席间跑步前进到福州路的上海书城,居然买到了那本《IEC61131-3编程语言及应用基础》,请彭瑜老师签了个名,留作纪念。

另外推荐林锐博士写的《高质量程序设计指南 C++/C语言》,这本书有人不喜欢,觉得这本书水份太多,干货太少,但读起来还是比较轻松的,这本书出到了第三版,目前在网上有很多二手的在销售,也有一些电子版的,建议找来读一读。

后记

写这篇文章的原因,一方面是看了邓李老师的文章,也想谈谈自己的心得,另一方面,也是看到随着工业4.0的普及,以及我国OEM制造业正在向高端发展,PLC程序方面,也慢慢向IT方向发展。

相比于PC或者网络软件,自动化程序有几个特点:

1、使用对象比较窄 ,这造成了对程序的质量要求、功能要求都不是太高,机器能开就行。

2、代码量小 ,因为1的原因,以及机器本身的特性,PLC的代码量是很小的。

3、协作性很低 ,很多公司只有一个自动化工程师负责PLC程序,而且对程序质量要求很低,只要求机器能跑。

这些特点,造成了自动化行业,尤其是离散自动化行业,对于代码的质量基本是没有要求的。我记得大学时候买过一本《软件工程》的书,开头有个例子,是一个科幻电影里的飞船计算机艾尔出了软件故障的故事,随着现在机械设备制造业的发展,机器的销售越来越多,客户的需求也变得越来越定制化,这种软件的故障,在将来会慢慢出现,如何应对这个事情,唯一的道路,只能是从计算机行业去借一些经验来。

我作为一个销售来写这个文章,会有很多漏洞,但还是期望我的文字可以引起自动化工程师的共鸣,起到抛砖引玉的作用,大家一起为未来做些事情。

--END--

作者简介

周舟,硕士,2003年毕业于河南科技大学,师从张洛平教授,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段。

声明: 本文由《工控百家谈》-工控参考独家发布,如需转载,请联系我们。

CNC操机多年学UG编程后月薪2万!有人却问:CNC和PLC有什么区别?

从技校学习出来,做了几年的钳工。觉得没前途不干了,然后开了一年的模具cnc。

我不知道你在学校有没好好的学习理论知识,学校一般都有教ug 和MASTERCAM。 还有cad画图软件。

想学编程,看你要学哪种, 很多人不知道其实cnc做的产品分为两种。 一种是模具。题主的学的那种,另一种就是,零件。

模具一个东西要做很久,有些甚至一个工件放上去可以做几天都不用下机。对调机和编程来说都比较简单。编程的时间也要长一些。 一般认真学习个3-6个月在出来在进厂做编程就很厉害了,前提是有个好师傅带你。

零件。想做零件编程,必须要从开机学徒做起两三年做上师傅的位置,必须,我说的是必须。 为什么呢,零件跟模具的刀路和加工方式是很大区别的。。想零件编程你得懂得加工工艺,该用什么刀,什么方式最好走又能保证公差,又快。什么材料,该用多大的刀,多少转速。加工工艺很重要。非常重要。 涉及很多方面问题。你要是连这些都不知道你怎么加工,怎么弄程序出来怎么走,该从哪里下手 就比如,我说比如,我给你飞机的的机翼叫你做你知道飞面的该用什么刀吗,转数给多少,会不会太快会不会太慢,走出来好不好看。要怎么做压着做呢还是夹着做压着做压哪里,夹的话夹哪里,做出来会不会变形,这些都是编程师傅要考虑到的问题。编程师傅怎么知道呢,加工经验,加工经验在哪里来,实践。你只有做过才知道怎么做。

所以说你没精通开机就想做编程不是说不可以,很难,非常难。

我经常遇到就是以前做模具的然后想转做零件,或者在学校学了点皮毛,又或者开机都没开过就报了个班学了半年几个月的来应聘。然后叫他画个草图都画不好,或者话半天才画出来。编个程序不知道是什么鬼,一块30018010单边余量3个毫米,竟然用6毫米的刀来走

以上算是是给你科普cnc的一点小知识吧。

建议:

想学快一点呢,如果你觉得你现在对模具开机还算精通的话你可以现在去报个班学习

编程软件,和理论知识。然后就可以去应聘啦,不行被炒了也没关系,在被炒之前多学习学习多问问,然后卷铺盖在换一家呗,一般你进去就算你不好也不会立马炒你,一般最快也是一两个月以后,他们发现你不太行。除非你表现的实在太差劲。 模具编程的工资,一般都是比零件的要低。以我的了解,最高也是七八千。

零件的话你现在就别想了,为什么呢上面我也说的很清楚了。至于工资就比模具要高多,因为技术水平不在一个档次。最低七八千,最高一、两万多不是问题。上升空间也很大,现在这个行业非常缺人。我说的还只是3轴的而已,至于四五轴的就更高了有点直接起步就是一万五。

很多人的的经历和题主的一样。刚从技校出来的时候不懂就被骗去做一些没用的东西。白干了几年普工。25岁,嗯,有点晚,不过也不是太晚 还是可以的。只要用对了学习方式,按照说明来,一定可以零基础学好UG编程的,照样月薪很高,有的月薪直接是2万!

还有就是做这行一定要有上进心,好学,不懂就多问问。不管做什么,这三点都非常重要。

提到CNC,昨天有网友问了我一个让我惊讶的问题:CNC和PLC有什么区别?

我当时笑喷了,这两个用在不同领域的东西,CNC呢是用于数控领域的,一个呢是用于工控领域的,他们的区别可大了。大家觉得他们还有啥区别呢?CNC是控制机床的,PLC相当于人的大脑负责逻辑、指令,对了PLC还用于电子行业。

欢迎大家到来,每天会给大家分享最新数控前沿技术,喜欢的朋友可以分享到您的朋友圈,让更多的同行了解并学习。希望大家多多关注和支持。

行业人士都在的数控专业平台!

相关问答

你好,请问在欧姆龙官网肿么下载plc编程软件的详细过程,谢谢-...

cad草图与注释不显示工具栏的問題7519浏览8回答华为荣耀4x畅玩版肿么升级enui4.05872浏览5回答蓝牙耳机连接电脑,麦克风不能用怎么处理?8829浏览4回...

UG软件好学吗?

对于三维软件(UG或是PROE或是SOLIDWORKS)来说,学习三维软件需要掌握以下几点:1)熟悉软件的界面以及指令的去所在位置。2)懂得如何熟练运用指令。3)了解...对...

怎么才能学好电工技术?

电工是一门技术,人人都知道,做电工的人非常多,但是真正精通的人很少,了解电工掌握基本的电工知识和技能非常简单。但是真正的要想学好学精通电工是一件非常...(...

IT都有什么专业,要学多久啊?

Linux环境下C语言编程入门视频教程全52讲云计算视频教程-安卓开发(全7讲)...信号与系统本科视频教程全45讲电子科技大学信号与系统视频教程全58讲西安...

从事数控机床要学的东西有哪些?

在现代制造业中的地位已经越来越突出,并且一直吸引着更多的人源源不断地加入到该领域中来。从事数控机床看你主要是侧重于那个方面,数控机床方面的岗...机械加...

墙壁上露的电线接头该怎么处理_一起装修网

正确的接法,请参考(草图)(左零线,右火线,上为地线)(也就是:左零、右火、上地):祝您顺利!红火、蓝零、次色地;左零、右火、上为地;红色是示色、危险颜色:默认为...

 长谷川萌  岩蜜 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部