登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:【万泉河】PLC编程:注释有多重要?

点击:2719 回复:20

【万泉河】PLC编程:注释有多重要?
经常在各种场合见过一些行业专家整理的PLC编程的技巧或者原则,经常其中总会有一条:完备的注释。
我自己也发起过好程序差程序的讨论,见文章《【万泉河】好的PLC程序和坏的PLC程序的比较标准》
http://www.ad.siemens.com.cn/club/bbs/PostStory.aspx?a_id=1479565&b_id=82&s_id=&num=174#anch
后面的跟贴的网友,就有不少把完备的注释作为一个主要条件补充在后面的。大意就是写上完备注释的才是好程序,不写注释的就是烂程序!一看就知道是以往被没有详尽注释害惨了。简直苦大仇深啊!
看到这些评论的时候,我总是微微一笑。
不接茬。
今天主动讨论一下这个话题。
先说下什么是注释,为什么要写注释。
显然,符号表变量名不是注释。注释是程序段之间,或者每个程序段开头,留白的区域,可以备注一些文本。这些文本不是程序的一部分,所以没有语法检查,也不会报错。现在的软件,普遍已经支持中文注释了。不会有任何问题。
换位思考下,为什么要写注释?是编程者自己的备忘录。写给自己,或者自己团队其他人的。比如工作将来有可能交由其他同事继续完成或者维护,那么在这里把当时的想法,做法,改动细节等等记录下来。将来再有问题的时候,后来者可以从中了解到一些重要参考信息。
所以总的来说,注释是写给自己的。
如果注释的目标读者是其它人,比如学生。那么这是学校老师在准备教学生学习编程的教材。因为学生对象的认知水平是固定的,所以可以有的放矢的来写。
而如果目标读者都是未知的,这注释可怎么写?从最基础的一步步写还是步子大一点直接写最精要的纲领?
写的太精炼了,初学者就会表示看不懂,就有可能抱怨你注释没写好。甚至有情商低的,会从中揣度出来阴谋论,认为你就是故意不好好写注释,就是为了...让...俺...们...看...不...懂...!
而你要是注释写的每个细节面面俱到,那除了初学者之外的高手,或者初学者过了初学阶段后,看到这些注释,会认为罗嗦,你写这么详细,是拿我们当幼儿园小朋友吗?啥都往里面写,没有主次,重点都沉没在垃圾信息里了!
所以,标准都很难定呢!
我在初学PLC的时候,那时候还是S5的PLC,读的老外的程序,关于指示灯的。大致是:
意思是系统运行的时候指示灯亮起。但系统运行过程中(不会停),如果有不正常的状况,就闪烁。
那时候就非常搞不懂,一个运行,一个闪烁,并联就是了。为啥还要多此一举在运行后面还串个ALARM的非?
也抱怨过老外程序的注释也不写明白点。当然啦,他就是写的那点注释,也是德语的。要看懂还得逐字查德语词典。
后来,等自己写程序的时候,就下定决心,一定要让后面的维护人员看得懂!所以事无巨细,各种说明都写的满满的。
可这一行逻辑这样,换个设备还是这个逻辑,就把它连程序带注释复制过来,反正也不累。等复制上二十几行,我就想,我是不是成了絮叨的老太婆了?人家看了会不会烦啊!
那么程序的注释到底应该写成啥样子呢?
其实在论坛讨论的回帖里面,就有人说过,好的程序自带注释。
深以为然。
看一下标准化架构下做的一段程序吧,一个设备的调用:
这样的程序,连注释都是多余的。
但换个视图,不显示符号,只显示绝对地址会怎样?
乱糟糟,完全看不懂啊!每个变量都做啥的?
所以,我们的程序,需要的是一套完备的符号表,以及详尽的库函数的接口描述和功能说明。简单设备的库函数也不需要。
总结一句话:好的程序架构自带注释功能。
最后修改:2019/7/25 8:07:16
19-07-24 19:19
1楼
该帖内容不符合相关规定!
19-07-24 19:20
注释都是给“外人”看的,将I/O表,符号,工艺.....做个文件附件就好了
19-07-25 07:13
附件 43.jpg
19-07-25 08:01
己所不欲勿施于人,你认为是写给外人看的,很好。
你自己写程序的时候,原原本本都写清楚吧,就假设读者是个中学毕业的电工。
到时候可别连源程序都不给,甚至PLC上传都带密码啊!
19-07-25 08:04
程序不是写给别人看的,而是要让设备完美的运行起来!自己写的程序自己能理解就行,所以有没有注释不重要,也不能作为评判好坏程序的标准。我接手过不少二手工程,大多都是从PLC里读出来的,根本没注释可言?但我发现有些依然是很好的程序,特别是逻辑关系很清晰,程序各功能归类很好~~总之编程思路很好,有时我都是直接拿别人的程序修修改改就变成了我自己的模板了。。
19-07-25 08:38
我拜读了那篇文章,10年前我可能会非常赞同文章的内容,现在我却持有不同的意见:
好的程序应该是:
1、良好的可读性
2、维护性好,并不能因为一个小功能而去修改整个程序。
3、简单的逻辑结构,我的每一个功能块都不会超过25行代码,如果有超过25行代码的风险,我宁愿使用功能块嵌套。
而且那篇文章说面对对象的,我不清楚他所谓的面对对象是从硬件层次来描述的还是软件层次的,如果是从软件层次来描述的话,那么众所周知,软件上的面对对象三要素属性,接口和多态,目前接触下来,施耐德的Somachine可以做到,但是仍然不是所有系列均支持。
至于注释,不在于多而在于精炼,过多的注释是在侮辱下一位看程序的智商,而太少的注释或许若干年后连自己都看不懂,不过我写程序注释很少,以至于我现在回看我以前的程序发现竟然看不懂了。
Good Luck~
19-07-25 09:06
程序不是写给别人看的,而是要让设备完美的运行起来!自己写的程序自己能理解就行,所以有没有注释不重要,也不能作为评判好坏程序的标准。非常同意
19-07-25 09:44
西门子的大河淌过来,估计每贴都火。
自己缩写的程序,大一点的,没注释,时间一长,真的会忘记。
以前厂家有注释的程序不给我们,给的是从PLC上传的那个程序,
19-07-25 09:57

引用 万泉河. 在 2019/7/25 8:04:07 发言【内容省略】

中学毕业的电工,几级电工?
小学没毕业的8级电工,熟悉工艺,熟悉继电器逻辑,照样看懂你的程序,除非你编的程序眉飞色舞不着边际。
你付费的项目,程序+电子表格(内有I/O,控制说明)+外部接线图,统统给你
你要求加密,附件里有密码。
你讨价还价,备份在云盘,PLC里的程序随便下,看不懂那是你的事
19-07-25 10:37

上一页下一页

工控新闻

更多新闻资讯