工控前辈经验之谈 编写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表格 ,大约有这么几项 (这里我虚拟了一个立体车库的项目,因为每天到办公室都会和立体车库打交道):
1 、IO表 ,输入输出的模块型号,模块的位置,每个模块上每个点的定义,以及外面接的是什么元器件。对于一些电气CAD软件,会自动生成这个表,但我们还是建议用EXCEL做一份,以便存档。
2 、变量表 ,一部分变量是有地址的,比如需要和上面提到的IO表进行对应,比如Modbus通讯。Modbus通讯需要定义变量地址,而IO对应的不需要在程序中指定,只要在系统配置中和硬件进行连接。另一部分变量是没有地址的,但也不能随便定义,要有一定的规则,以便阅读。
3 、结构体 (Structure),结构体的设计,可以放在变量表之前,为了提高效率,我们会设计一些结构体来做数据类型,比如一个气缸,就可以设计一个结构体来表述,这个结构体会包含气缸的方向,磁性开关状态,以及两个方向的超时报警时间。在使用到气缸时,就可以用这个结构体类型来直接定义气缸,而无需去定义每个气缸设计的变量。
必要的话,可以设计枚举变量,用来表述机器的状态。
4 、POU名称 (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控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段。
❒ 声明: 本文由《工控百家谈》-工控参考独家发布,如需转载,请联系我们。
PLC工程师等级大全,看看你是青铜还是王者!
在工业自动化迅猛发展的背景下,PLC工程师的角色至关重要,他们是自动化系统的架构师、维护者,并且是推进工业4.0时代的核心驱动力。要成为一名卓越的PLC工程师,需历经不同阶段的成长和发展,每一阶段均对应不同的技能层次和责任范畴。以下概述了PLC工程师发展的六个层级及其各自对应的实践案例和成长轨迹。
第一层级:倔强青铜
- **理论奠基**:掌握PLC的基本原理和运作机制。
- **初步编程**:学习PLC的基本编程语言并编写简单控制逻辑。
- **硬件认知**:识别和理解PLC硬件构成,包括I/O模块、CPU等核心部件。
- **安全标准**:熟知工业自动化安全规范与操作规程。
如同实例中的小李,作为自动化专业的应届毕业生,他借助校内实验和课程设计的机会,初步学会了PLC编程和基本操作。在一家制造企业的实习期间,他通过亲手操作PLC设备,深化了对其实现原理和实际应用场景的理解。此阶段的小李正处在不断积累阶段,通过研读专业文献、参加行业会议和实际动手实践,逐步提升自身技术水平。
第二层级:秩序白银
- **实战编程**:能独立编写实用PLC程序以解决实际控制问题。
- **故障处理**:具备诊断和修复常见PLC硬件与软件故障的能力。
- **系统集成能力**:能够将PLC与各类自动化元件(如传感器、执行机构)有效集成。
- **通信技术**:通晓工业通信协议,保证设备间通信畅通无阻。
类似小王这样有一定工作经验的初级工程师,已经开始承担起独立编写PLC程序的任务,并成功解决了多起现场问题。例如,在一项生产线改造项目中,小王主导了新控制程序的编写,并确保了项目如期顺利完成。在此阶段,小王通过实践经验的积累和解决实际问题的锻炼,使自己的技术水平和问题解决能力得到明显跃升。
第三层级:荣耀黄金
- **进阶编程技艺**:擅长设计复杂的PLC程序,编写出高效、优化的代码。
- **系统设计实力**:具备设计中等规模自动化系统的能力,包括系统规划和配置策略。
- **项目管理能力**:负责项目进度管理,调配资源,确保项目按时保质交付。
- **跨平台适应**:熟练操作多种品牌和型号的PLC系统进行开发与维护。
到达中级专家水平的工程师,如赵工,已积累了五年以上的工作经验,他曾涉足多个不同品牌PLC项目,且对自动化系统其他部分有深入认识。在一个国际合作项目中,赵工成功整合了不同国家的自动化设备,并保障了系统的平稳运行。在这个阶段,赵工除了扎实的技术根基外,还需具备出色的沟通协调能力,以便在多元文化背景下的团队中高效工作。
第四层级:尊贵铂金
- **需求把握**:深刻理解客户业务需求,提供切实可行的自动化解决方案。
- **性能优化专长**:能够深度分析并优化现有系统,以提升整体性能表现。
- **领导与协调作用**:展现出团队领导才能,指导团队成员,确保项目成功执行。
- **行业洞察能力**:紧跟行业发展动态,将前沿技术应用于日常工作场景。
达到高级顾问级别的孙顾问,在自动化领域拥有十五年以上经验,曾为一家大型制造企业提供关键技术咨询服务,协助企业改进生产工艺,大幅提升生产效率。在这一阶段,孙顾问凭借深厚的行业知识和实战经验,为客户提供了战略性的建议和定制化解决方案,助力企业在竞争激烈的市场环境中保持竞争优势。
第五层级:永恒钻石
- **创新精神**:具备前瞻性和创新思维,能够提出并实施新型自动化理念与技术。
- **研发导向**:积极参与甚至领导新技术的研发工作,推动自动化技术的创新突破。
- **战略规划视野**:为企业擘画技术发展战略,引领自动化技术的发展方向。
- **跨学科融合**:善于将自动化技术与信息技术、物联网等领域深度融合。
像李博士这样的创新领袖,不仅在PLC技术方面造诣颇深,还具有前瞻视野和创新能力。他带领的团队研发了一套基于物联网的智能监控系统,能够实时监测生产线状况并智能调节生产参数以优化效率。李博士通过不懈的探索和实践,积极推动自动化技术革新,并为企业带来颠覆性的技术变革。
第六层级:最强王者
- **行业权威**:在自动化行业内享有崇高的地位,对行业发展产生深远影响。
- **传承育人**:致力于培养新一代工程师,传授深厚的专业知识和丰富经验。
- **国际合作交流**:参与国际级项目,分享实践经验,促进全球自动化技术的交流合作与发展。
- **持续创新动能**:不断挖掘新技术潜力,引领自动化技术的持续创新与广泛应用。
成为行业大师是PLC工程师职业发展的顶峰,他们在技术领域登峰造极,并在业内具有极高威望和影响力。例如,张教授是自动化技术领域的权威人士,多次在国际学术会议上发表重要演讲,著有多部专业著作。张教授投身于培养新生代工程师的事业,通过高校教学和研究生指导,将毕生所学倾囊相授。他们的贡献既体现在技术创新上,又表现在对行业未来发展的指引和对后继人才培养的投入。
PLC工程师的成长道路是一条不断求知、实践与创新的道路,每一个层级都代表着工程师在技术能力、实践经验以及行业影响力方面的提升。不论处于何种层级的工程师,都需要保持对技术的热忱和对学习的渴望,不断提高自我,为自动化产业的进步贡献力量。在这个过程中,工程师应当与时俱进,更新知识体系,掌握最新自动化技术和工业发展趋势,同时培养自身的创新思维和领导能力,以便在愈发复杂的工业环境中提出创新解决方案,引领团队实现目标。跨学科的学习与合作同样至关重要,因为现代自动化系统往往涵盖机械、电气、计算机科学、网络通信等多个交叉学科知识。
总之,PLC工程师的职业生涯发展是一个充满挑战与机遇的过程。通过不断学习与实践,每位工程师都有可能在各自领域成为专家,为企业发展和工业自动化进步创造价值。在这个过程中,他们不仅实现了个人职业成长,还在推动整个行业进步,向着更智能、更高效、更可持续的生产方式迈进。
免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!
如何获取更多 电气热门资料?
操作指引如下!
相关问答
末流985刚毕业的自动化专业,现在在学上位机plc做电气工程师方面的工作,这种有前途吗,还是去考研啊?
这么多建议做it的?我就是学电气做it的,互联网行业竞争特别厉害,年龄大了就被优化,我今天还面试了一个来做中控的,四十多了,说以前做程序员出身,以前学的现...
研究生搞plc有前途吗?
有。1、如果你是一名电工,每个月辛辛苦苦只能赚到4000元,但通过学习PLC后,你能赚到8000元。那么在这种情况下,学习PLC可以明显提高你的薪资,因此可以说这是...
电脑与PLC通讯用什么语言编程比较好啊?-ZOL问答
可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出...
PLC编程买什么配置的笔记本-ZOL问答
可以说只要是电脑就可以运行PLC编程软件。有用(0)回复9990909006对于笔记本来说配置没有装机来的自由不过现在的笔记本品牌产品都很多结合自己的使用要求一...
面试官问对plc有什么认识怎么回答-职业科普-醉学网
[最佳回答]如果面试官问对PLC(可编程逻辑控制器)有什么认识,可以从以下几个方面来回答:1.定义:PLC是一种工业控制计算机,它是由控制器、输入输出(I/O)模块、通...
学习PLC编程对电脑有什么要求-ZOL问答
PLC编程对电脑的配置没有什么要求,能打字就行,只要有U口就行了剩下的都可以靠转换器来搞定有用(0)回复精品应用推荐新浪微博天气通淘宝特价版UC浏览...
请问PLC的程序是不是根据电路图来编写的?-ZOL问答
你可以这样理解在编写PLC程序的时候如果你手里只有对应电路图,那么你首先要做的是按照你现有的电路图来分析它的工作原理、设备的工作流程和控制方式等等,在实...
求文档:三菱PLC编程用电脑怎么样直接用指令语言写-ZOL问答
有专门的编程软件,为什么还要用指令语言?有用(0)回复重新安装一个版本有用(0)回复展开查看全部5条讨论精品应用推荐新浪微博天气通淘宝特价版UC浏览...
西门子PLC与电脑连接不上,提示(在线:不能装载所挑选的驱动程...
然后重启系统,重装驱动,修复PLC软件,并设置好通讯参数。有用(0)回复zhezhemao1可能是编程电缆的问题,建议用西门子原装电缆有用(0)回复of8scei3egt您好...
PLC编程电脑接口有什么要求?-ZOL问答
你用的是什么牌子的PLC一般的串口都是用9针RS-232的,也有直接用USB连接的,还可以将232接口转换成USB的,但是需要一个USB驱动程序,驱动了以后就可以用了COM0口...