![116d1b5354f867fbf79042fa82d6ba8a.png](https://img-blog.csdnimg.cn/img_convert/116d1b5354f867fbf79042fa82d6ba8a.png)
上次看了邓李老师的文章《邓李:如何编写优质的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做一份,以便存档。![7a60a7cc13b2103a7e9f0b3a4d72f86d.png](https://img-blog.csdnimg.cn/img_convert/7a60a7cc13b2103a7e9f0b3a4d72f86d.png)
![3cc5c4c9d755694c8ad5d53e039a5c36.png](https://img-blog.csdnimg.cn/img_convert/3cc5c4c9d755694c8ad5d53e039a5c36.png)
![a2be02567015662070fb3e20d3a40ffe.png](https://img-blog.csdnimg.cn/img_convert/a2be02567015662070fb3e20d3a40ffe.png)
![1466ca3f5704caa6fb529beeadd0c409.png](https://img-blog.csdnimg.cn/img_convert/1466ca3f5704caa6fb529beeadd0c409.png)
![edb76bb71104dba48bc238666a109d72.png](https://img-blog.csdnimg.cn/img_convert/edb76bb71104dba48bc238666a109d72.png)
![fac1dac0d7b84730098d2cd34ddc0a7a.png](https://img-blog.csdnimg.cn/img_convert/fac1dac0d7b84730098d2cd34ddc0a7a.png)
![f7a85d94a029a07244e00acb24759818.png](https://img-blog.csdnimg.cn/img_convert/f7a85d94a029a07244e00acb24759818.png)
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程序,而且对程序质量要求很低,只要求机器能跑。这些特点,造成了自动化行业,尤其是离散自动化行业,对于代码的质量基本是没有要求的。我记得大学时候买过一本《软件工程》的书,开头有个例子,是一个科幻电影里的飞船计算机艾尔出了软件故障的故事,随着现在机械设备制造业的发展,机器的销售越来越多,客户的需求也变得越来越定制化,这种软件的故障,在将来会慢慢出现,如何应对这个事情,唯一的道路,只能是从计算机行业去借一些经验来。 我作为一个销售来写这个文章,会有很多漏洞,但还是期望我的文字可以引起自动化工程师的共鸣,起到抛砖引玉的作用,大家一起为未来做些事情。
作者简介
周舟,硕士,2003年毕业于河南科技大学,师从张洛平教授,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段。
来源/工控百家谈
文章推荐
【原创分享】设备改造案例:S7-200PLC与横河DCS系统的通讯实现【原创分享】M200 PLC和昆仑通泰触摸屏的连接和仿真【原创分享】利用PLC消除高炉煤气余压透平发电装置的安全生产隐患【原创分享】三菱Q系列和FX2N系列进行CC-Link通讯(主站和智能设备站的通讯)【原创分享】西门子PLC电路高效设计2——快速进行PLC地址编码及原理图建立【原创分享】西门子PLC电路图高效设计——基于EPLAN与TIA Selection【原创分享】三菱FX5U系列PLC和西门子MM420系列变频器实现USS协议串口通信【原创分享】谈谈国产化压力传感器的艰难发展之路【原创征集】工控技术牛人的成长之路,都有过这些时刻!【原创分享】从新的角度解读经典的PID控制器【原创分享】PLC梯形图编程很low?那你一定要看看PLC梯形图的由来了【原创分享】WINCC7.3和1200如何建立OPC通讯?我知道你“在看”哟~