万泉河
WX:ZHO6371995,欢迎+
级别: 略有小成
精华主题: 0
发帖数量: 130 个
工控威望: 246 点
下载积分: 831 分
在线时间: 11(小时)
注册时间: 2021-06-11
最后登录: 2024-11-07
查看万泉河的 主题 / 回贴
楼主  发表于: 2022-09-10 10:51
0909 【万泉河】PLC编程烟台方法升级:万线圈技术

有一些小的道理本来是不明而喻的, 但是由于受众群体理解力大不不同,所以有时候看起来很浅显的道理也仍然需要反复阐述,才可以逐渐形成最大共识。

所以,有可能显得有些啰嗦且没有技术含量,那么一些先行者敬请忍一忍,慢下来等一等后来者也是你修行的一部分。

比如,技术的进步通常不是一蹴而就的,而是需要许许多多技术细节的不断提升和打磨,最终才能彻底实现。

我在很多个场合提到过,烟台方法是一种全新的PLC程序设计思想和方法,学习的难度非常高。而现有的学员的经历也在证实这一点。第一批参加的学员从2018年就开始了学习,到现在已经接近4年,彻底实现了自己公司的标准化设计,并且完美程度能跟我交给他们的样板设计同样级别的,估计不会很多。而我自己因为一开始的疏忽大意, 设计中也有一点点小的缺憾,所以不能算满分,但我在注释中已经详细著名,解决方案也已经在后面的文章中反复阐述。真要我改进的话,所需要花费的时间不需要超过半个小时。所以,四舍五入可以认为无限接近满分了。

当然,学员们到目前为止没有1个人就这一点对我发难的。 毕竟,我带给他们的新知识新技能繁杂丰富到眼花缭乱,够他们学习很久了。 而他们自己可以把学习到的技能逐渐应用到自己的设计工作中,即便达不到和我一样的程度,也已经终生受益了。工作效率已经得到了极大程度的提高。

所以有一些人把我说的难学给理解成,既然难学,学不会,那就索性不学。 学和不学一个样。这样属于恶性误读。

而另一个方面, 烟台方法本身也不是静止不动的, 也是在持续进步成长中。 有一些是把过去无意中使用过的技能总结归纳为理论, 而有一些则是随着新的应用新的工艺遇到的新的逻辑需求,而产生的。

比如近几个月来, 实现了在国产小型PLC中的标准化设计方法, 仅仅依靠原有的技术理论显然是不够的。除了思想方式有改进,具体的实践环节,也是有一些新技术创新点。

其中,比较重要的是对双线圈原理的解读。写了好多篇文章, 还做了好几场讲座。通过从原理上对PLC行业原有的双线圈问题的解读,另辟蹊径, 以原本传统上许多人避之不及的看起来貌似会发生双线圈错误的编程方法,反而更高效更优雅地实现了某些特定逻辑功能。

这些文章和观点在同行中也引起了不小的反响。 一些同行反应大有收获。 这么简单的道理以前没有深入想过,从中深受启发。

而与此对应的是另外一批同行,可能以前写的好多文章涉及的技术点他们不怎么熟悉, 而谈及双线圈,不管懂不懂文章在说了什么,至少词汇懂啊!入门级的概念,在学校的时候老师可能都教过的啊!然后万老师竟然最基本的错误都敢冒犯,可笑可笑啊!

然后这些人聚集越来越多,竟然还形成了一个小团体,还组了个过百人的微信群,专门看我笑话呢!然后他们以讨论学习为理由还邀请我进群,我进群之后就发现气氛根本不对,那些人起的名字都五花八门,专门针对万某以及双线圈的。 然后我就跟他们的群主表示,他们不是反感我割韭菜嘛,那我就割一把。想让我做讲座,可以。除群主之外,每人缴费10元,凑齐了以后就给他们做讲座好好把双线圈问题讲讲清楚。

然后这事自然就不了了之了。

然而他们那群人或自嘲, 或起哄, 给他们自己和给我起的外号都挺有意思的。 最有意思的把我搞到笑翻的是称为∞线圈,我太喜欢了!然而很可惜, 这个按倒的8发音不方便读,要读“无穷大”,我说那就直接叫万线圈好了。

万线圈技术, 万线圈方法。 也正好贴合了万某的名号。

既然他们的本意是嘲笑我, 那我就顺势笑纳了。 但愿以后不要再有人跳出来表达反对意见,再认为我没有那个资格独占这一技术方法的命名权。  

那就太不讲究了。

我们对双线圈的定义,是因为不当地多次使用线圈指令,导致程序功能错误,所以双线圈是错误。

而如果我们能精确把握PLC程序中的线圈指令,以及许多貌似线圈的其他指令,最终虽然貌似有双线圈错误的嫌疑,然而程序功能是可以成功达到预期目的的,同一线圈可以无限次重复使用,可以80次,可以一万次,可以无穷大次,那么我们统一称之为万线圈。

所以,程序中有双线圈是一种错误程序, 而程序中有万线圈是一种有意为之的正确程序。

贴一下我做过的信捷PLC程序标准化架构中的一段程序:



前面一篇文章中曾经贴过这段代码,有人不以为然嘲笑我这样的平淡无奇的程序也好意思贴出来。

那么请注意看程序双线圈检查的结果:

这些变量都是疑似双线圈,而实际上我们现在可以称他们为万线圈。

最后再补充一点,程序中对M211,M212,M213等的变量的使用方法, 其实是相当于把它们当做了FB的INOUT管脚。 信捷PLC的子程序只有CALL,没有参数,而我这里则通过万线圈方法,不仅让它们有了INPUT ,OUTPUT, 甚至INOUT, TEMP, STATIC都是可以实现的了。

当然, 这些技能是参考了汇编语言的处理方法。曾经反编译某个EXE,读取其汇编逻辑的时候,获得的技能。