小伙伴关心的问题:万泉河风景图片,万泉河风景名胜区 地址,本文通过数据整理汇集了万泉河风景图片,万泉河风景名胜区 地址相关信息,下面一起看看。

万泉河风景图片,万泉河风景名胜区 地址

0627 【万泉河】程序算法的本质

再发表一个可能会令所有同行惊掉下巴的观点:所有程序,包含计算机程序和PLC程序,当谈及算法的时候, 算法的本质一定有循环以及与IF语句的配合。

这其实很容易论证, 或者有可能也存在于每个人的潜意识里。

因为反过来说, 如果拿出所谓的算法, 其中并没有循环也没有IF THEN ,就是那么多功能简单平铺罗列实现,那么不管这些罗列的程序有多么冗长或者多么简短,你都不会好意思称之为有什么算法。

甚至,这种应用有时候连程序都算不上,很多场合会称之为脚本,SCRIPT。

而对PLC系统来说, 由于它自身内置了OB1循环机制,所以好多简单的循环功能甚至不需要用哪种显式的FOR NEXT或者LOOP语句,仅仅通过借用OB1的循环机制,就可以实现。 反而会比LOOP循环更节省OB1循环时间,所以,通常在PLC领域,用到循环的场合很少。

我在2019年曾经写过一篇文章, 《【万泉河】PLC编程中的循环语法使用》,文章宗旨便是指出,大部分的PLC应用领域,是不需要用循环语法的。 只有少数的算法中有可能用到。然而大家如果按照传统的方法写PLC程序的话, 实在没有多少算法,那么自然也没有机会用到。

然后引起了大家普遍地不适。 我们一方面为自己是个程序员自豪,一方面又不得不面对程序中实在没什么可称道的算法的现实。 太尴尬了。

有人在我文章后面回复跟我抬扛很久, 终于找出来一个:MODBUS 通讯报文的CRC校验。

没错, 这确实是有算法, 确实是需要用到循环。 然而,所有同行中, 有几个人需要调试CRC校验的程序呢?市面的所有PLC平台的应用, CRC校验基本都被封装成标准块了, 大家要做MODBUS通讯的时候,只需要调用这个库函数即可, 完全可以压根不晓得其内部的算法,也自然不需要知道有什么循环了。

而对于某些有机会做CRC以及BBC等别的校验计算语法的程序员,这些算法你顶多调试一次,一次成功后就会自己给自己打包,以后的项目中重复应用。如果说什么我每次项目都要调试CRC,调试循环, 那说明我程序封装的得有多差啊!

所以,从那位举出的CRC例子反而更是证明了, 工业控制PLC程序中用到循环算法的机会很少很少, 少之又少。

可能因为这样的原因,导致大家反而都非常珍惜用到循环的机会。 会不由自主地挖掘一切可以用循环实现功能的机会,以锻炼自己的语法掌控能力。

我推出的在所有PLC平台实现同样功能的80工位控制公用灯的系列例子, 从一开始就强调, 80只是个量的概念, 工位配置是复杂多样的,不要去尝试简单循环调用。 只要脱离例子本身, 只要针对工程项目, 循环规律必然被打破,没法用到循环语法了。

然而, 这根本不管用。 根本挡不住大家对循环的执念。

回复中,仍然 不断有各种回帖把我给出的例子程序改造后用循环实现,然后指着他那十来句的程序说,看看,我能做到的比你做的例子还简练!

然而你那循环程序毫无应用价值啊!

都不用到工程项目了, 我这儿例子题目稍微复杂一点点, 你那循环语句做法就死翘翘了。 对应到工程项目中, 工程现场的布局规律,工艺要求,稍微改变一点, 辛辛苦苦做出来的语法程序就彻底作废,就需要完全从头重来。 大家在工程项目中如果遇到这样的尴尬还不够多的话, 那就看看我把例子要求改进之后,该如何应对, 思考下原来的程序思路还是否继续够用。

例子发布后,就有一个群主嘲笑说,哪里会有精神病会80个工位设计1个公用灯呢!我说,这不是例子嘛。

那好吧,我们把80工位分一下, 分成三个区域,每个区域公用一个灯。

然而, 产线在厂房内的布局不是一字排开的, 而是蛇形弯曲的,这符合工程实际应用。

所以, 最终三个区域控制的灯,并不具备数字上的规律, 而是如图中的GW00, GW01, GW02, GW19, GW18, GW17, GW20……GW78, GW77等被划分在同一个公用灯A之下。

总之,这个环节的程序是需要在现场根据工艺图来的。而且,如果有甲方工艺员临时发神经, 再做个调整, 比如把GW63, GW76从B区移动到A区,请务必无条件配合,不许骂娘。 因为这是我们的本职工作,你本来就应该随时做到。

那么大家比较一下, 我原本的例子程序方法,适应这样的改变,难度有多大? 甚至, 有没有办法做到简单批量实现, 而不是仅靠眼手不犯错,仅靠细心检查?

建议大家有空的情况下, 还是尽量自己动手做一下,要求:最终调用的时候,仍然按照工位号顺序调用, 只不过调用时各自对应准确的灯。

(提示一下, 用EXCEL,多用排序功能)

在输出的灯多了以后,程序其实是变乱了,有心人还可以结合我以前的文章提出的方法,改进到更优雅。

有人肯定注意到了, 在产线方向折回的地方,增加了一个工位GW09A, GW19A等等, 原因是我设计布局的时候,为了整齐而认为增加的, 而实际工程应用也完全有可能有这样的临时改动, 请大家一定要谅解,要提前有准备。 不要埋怨甲方原始规划设计不精确, 变更太多。

大家可能也厌倦了, 我给出的所谓的系列例子结果其实全都大同小异。 所有程序大差不差都一个样子,看过一个PLC之后就不需要再看第二个。

是的。其实是这个系列例子特意要展示的是程序方法的兼容性。 有人对一些特定品牌特别熟悉,可以用其中的特殊功能比较便捷地实现, 那么自问一下, 如果移植到另外的品牌, 是否需要花费一些调试时间呢?

另外, 关于算法, 关于循环,传统的面向过程的PLC程序中很少用到,然而在标准化架构烟台方法中其实用到的机会很多。 比如我提出的优雅点亮指示灯, MODBUS自轮询的并行通讯等各种功能实现,以及近年来提出的一些算法题目,GETUID,配方参数联动竞赛等, 那些题目的实现背后其实都是靠着大量的循环语法支撑的。

甚至, 有的算法,是多重循环交叉配合才能实现, 除了FOR循环, 还要再借助OB1本身的循环机制,对于有兴致玩复杂算法的, 机会还是很多的。

然而当真正的算法题目摆在面前的时候, 很多人又不会自己设计算法, 只会用简单思维产生的无穷枚举来实现,实在是里外都谈不上优雅了。

记住了, 算法从来都是程序员自己设计的, 不是别人把算法要求好,循环区间和唯独都定好了, 你只管FOR循环语句。 那实在不存在什么价值。

0618 【万泉河】(多品牌PLC)80个工位双联开关控制公用灯示例

0625 【万泉河】PLC程序块FB和FC如何选?

0619 【万泉河】论一个好的程序框架的重要性

0615 【万泉河】PLC程序中SR逻辑的本质

0613【万泉河】一言不合就开讲

0612 【万泉河】浅议PLC程序中SR和RS逻辑的区别

0610 【万泉河】S7-1200 PLC中实现WINCC报警

0527 【万泉河】PLC程序中启保停的本质

更多万泉河风景图片,万泉河风景名胜区 地址相关信息请关注本站,本文仅仅做为展示!