未用心做过一个程序的都想楼上这么说的。什么自动化公司帮做的程序,一般都是随便做完,能动就算了。完全没有在客户方面想过这样做才能做好。常常发生一些客户无法理解而且又必须的操作才能继续工作的事。
我一般的同意楼主意见。
程序本身就是要达到功能。好,谁评呢?用户。
好的程序要好操作。自动。纠错。顺理成章。
如何好操作呢?比如:什么状态就自动弹出什么界面。不需要你操心去翻。
如何自动呢?比如:一个行走机械前方有若干个可以停靠的站,程序应该可以根据当前位置意料到操作者需要把机械停在应该去的位置,而不是由操作者看着机械去停机。
如何纠错呢?无论是操作错还是电眼断线……大家都懂的了。只是不做而已。
如何顺理成章?手工操作做到哪个步骤,随时切换到自动,都要可以无缝切换。
我觉得纠错能力最重要。
不认同楼主的观点。
1.现在的PLC指令执行速度已经大大超过过去,几千步的指令,数毫秒就可以完成,至于如果需要高速扫描的话,也可以使用中断功能来实现。即使是中大型PLC由于指令执行速度更加快,所以往往扫描周期根本不是问题。至少我在写程序时,不用特别关注扫描周期的问题。
2.程序可读性不重要!这个观点纯属胡说八道,误导新手。
在我看来,程序的可读性应该排在第一为,不管是PLC编程,还是C,都如此。在工业控制中,由于CPU主频的提高和存储器成本的降低,那种必须珍惜每一个位、每一个指令周期的汇编语言时代已经结束,至少我们PLC应用中几乎碰不到这样的情况。即使是用单片机,现在这个问题也不突出。所以无需刻意的节约存储空间,和指令周期。
程序的可读性强,会带来一系列的好处。
程序可读性越强,程序出现BUG的可能性越低。能使程序更可靠。
程序可读性越强,程序功能实现越方便。 能实现更复杂的功能。
程序可读性越强,程序整个开发周期越短。 能缩短项目开发周期,提前交货。
程序可读性越强,后期维护越简单。 这条至关重要,能降低维护难度。
程序可读性越强,程序复用性越好。 能降低开发成本。
为了达到可读性强,程序长度不可避免的会加长,但这是值得的。
写的程序一个月后,自己都看不懂,何来好一说。
我看楼上的观点有点圈地为王,沾沾自喜。仅仅是站在自己的一边,完全没有想到用户这份啊。只要可读,就算程序行不行也排第二算了吗?
我想大胆问一下:楼上是自动化公司的,还是设备生产制造商的?我笨人是制造商(打工的)。
经常看见很多人发帖:急!急急!急急急!裸雪体地跪求……这些人能写出的程序好极都有限。但是如果他是设备的最终用户,那么我非常同情他。因为,这些设备肯定就是让一些无良的编程人员做的。一些垃圾得不得了的控制策略,弄得用户火力来水里去。没办法之下,半桶水的设备管理人员都要逼上梁山。特来求救。我真心同情这些上梁山的人。
但是如果这是一些滥竽充数的人混饭吃,你行,你有本事,蒙得过昨天,蒙不过明天。
六楼的哥们,你编过程序么?知道扫描周期是什么意思么?
其实有许多人编写PLC要么依赖软件提供的各种向导,要么依赖网上下载的各种功能库。用这些东西攒吧攒吧就是一个程序了。
这样的程序,可读性极佳。但效率未必很高。
以单键起停为例,有的方式只对一个输入一个输出,两个位地址进行指令逻辑操作而达到功能。有的方式使用计数器达到功能。还有的方式采用字节递增或者字节异或指令来实现功能。。。。
综上所述,你认为是就控制两个位的程序执行更快呢?还是控制一个字节或者一个字的程序执行更快呢?但控制两个位的方式,其程序长度可能要比异或方式长。你觉得哪种算更好呢?
其他的东西,比如容错。个人认为这也属于功能运行可靠的范畴。试想一个程序扫描周期很短,但在错误操作的情况下,程序就出错了,这显然不能算功能运行可靠。
另外,容错类的东西一般不太占资源的,容错容错,其实只是在错误发生的时候才会调用运行。正常过程中,基本不会影响扫描速度。但程序里加了容错,程序长度必然增加,而且看似与主要功能不相干的代码指令也会导致可读性下降。试问这样的设计,算好么?
对于可读性这个要求,个人认为,程序写出来是给机器看的,而不是给人看的。让机器看得懂玩的溜才是程序最终极的目标。至于是不是能够让初学者看懂,这根本无所谓。机器运行顺畅,说明机器对程序很满意。机器很满意,用户就会很满意。至于程序员的上级或者同事或者各种小偷看不看得懂,满不满意,能不能从中学到有用的东西,这是一个程序设计师的首要目标么?抱歉,这是培训老师的首要目标!
代码可读性强,可维护性就强??这是多么虚伪的一个命题啊??你见过会写程序的人不会修改自己的程序么??
引用 第五纪冰川 的回复内容: 不认同楼主的观点。1.现在的PLC指令执行速度已经大大...
现如今的自动化公司多如牛毛,但但绝大多数公司的服务理念就有问题。这是客气的说法,不客气的说法就是水平差!
我从来不认为一个设备的控制器需要经常性的维护和修改。设备控制器就像一个公司的管理层,试想一个公司三天两头的换经理或者修改公司章程,那这个公司还有个好?
好的控制器,从交付用户的时间起,就应该是一个能够可靠执行用户要求的控制器。事后顶多是在需要增加功能的时候才有必要动程序。谁没事老把控制程序改来改去的?
可读性强,后期维护就简单??你的程序需要后期维护,和不需要后期维护,这本身就是两个档次。。。
回复内容:
对: 湖北老四 引用 第五纪冰川 的回复内容: 不认同楼主的观点。1.... 内容的回复!
不知道楼主接触过上千万的项目没有,不知道楼主接触过上百万的项目没有?
如果只做过价值数万,不超过100点的系统,并且还是封闭系统的话,适用你的原则。
一个数千,上万点的系统,如果没有可读性,对于客户简直就是灾难!
你见到过一个系统持续的维护10年吗,你觉得这10年来都是那个编写程序的人在维护吗?你觉得这个系统10年来都保持毫无变化吗?
至于程序的可读性,不管是自动化行业,还是软件行业,都一样适用,也许你有高中同学进入软件行业,打个电话聊聊这个话题,也许你的观点就改变了。
还有,提醒你一下,对通讯网这样的前辈尊重点。我不觉得你有挑战他的那个智力水平和工程经验。
回复内容:
对: 芳季 我看楼上的观点有点圈地为王,沾沾自喜。仅仅是站在自己的... 内容的回复!
芳兄误会我的意思了。
至于你说的“程序行不行”,如果程序不行的话,怎么能交货呢?
程序实现目标任务是基本要求,本帖讨论的是何为好程序,所以所有的讨论都必须基于基本要求必须满足的前提下。
对于你说的关于设备维护人员的问题,正说明了程序可读性的重要性,而且是非常重要的。对于客户来说,如果他们自己能够看懂程序,能够独立完成普通的维护工作,那不正说明这是一个好程序吗?反观,如果程序中使用了太多的编程技巧,比如把汇编语言的习惯带入PLC项目,结果真的有点让人崩溃。比如汇编语言中经常用到跳转指令,移位乘法指令等这会给程序编写带来方便,有时是不得以而为之。但你可以想象一点,如果PLC项目中也使用这样的编程方式,你让半桶水的维护人员怎么看懂。
当然,对于向维护人员开放程序的问题,我觉得本帖不讨论。小系统和专有设备不可能(或不大可能)向客户开放程序。这样的系统不存在这个问题,当其它的几条问题依然存在。
引用 第五纪冰川 的回复内容: 回复内容:对: 湖北老四 引用 第五纪冰川 的回复内...
首先,尊重是相互的。我对每一个认真讨论的人都很尊重,但对捣乱的人,不管他是谁有什么资历,我都不觉得他具备让我尊重的资格!
回到主题上来。再大的程序再庞大的系统,都是由很多具体的功能指令集综合作用实现的。事实上我所强调的,只是一种务实的态度!
就好比一个简单继电控制能够实现的功能,就不必要用PLC!一个位指令能够实现的功能,就不必非要用高级指令!用高级指令并不代表水平高,能让机器运行流畅的程序就是好程序!
庞大的系统我没主持过,但我想按照目前的行业水平,一个庞大系统的主脑设备,不可能放在PLC上,应该是一台PC或者服务器来完成最顶级的运算以及资源配置。再说了,用汇编语言设计一个巨庞大的系统,不觉得很傻么?
系统庞大了,并不意味着对编程的要求有多高,考验更多的是总设计者的统筹架构能力。话说专业写代码的,真的只是蓝领。。。PLC编程只是实现要求的手段之一,仅此而已。