0725 【万泉河】所有小型PLC也都能做标准化程序了
先讲解一个关于“能”和“能力”的概念。
当我们描述一个事物的某个特征能力的时候。即说A事物能不能实现某某B功能,咱们可以客观判断一下,断定能或者不能,这是一个客观判断。
比方断定猪不会飞,在没有外力辅助的情况下不能飞上天。这就是一个客观判断。 后来雷军说站在风口上猪也能飞上天的时候, 那不是猪的能力, 而是风口的能力。 所以原话猪不会飞并没有错。
而在另外一些领域, 比方我一直以来表达说一些功能简单的小型PLC不能做烟台方法标准化编程,其实就不是一个精确的客观判断。 如果完整一点表达,只能是,在当时的认知情况下,以我彼时的技术水平和个人能力,在功能简单的小PLC上做不到标准化编程。
因为从今天开始,我可以宣布能了。 所有已知的未知的,见过的没见过的PLC品牌和型号, 都可以做标准化烟台方法编程了。
即,不管别人能不能, 我, 我的烟台方法,能了。
这同时又是一个证有易证无难的非对称逻辑。 有9999个人说不能,也只是他们不能, 而只要有1个人说能, 那就是能了。
前一篇文章《0724 【万泉河】烟台方法前进之路:在信捷PLC中实现FB功能》发表后, 有读者表示, 阅读之后思路瞬间打开。以前做信捷PLC程序做的非常痛苦,现在则有思路了。
而其实何尝他自己思路打开,我自己思路也随之打开了。 在我看来像信捷这样的PLC所谓的子程序, 除了一个CALL之外,什么功能都没有,经过自己的努力改造, 只要没有的功能,我们通过编程方法给补足,未来也一样可以实现面向对象的标准化架构和应用了。
那么,其实需要的门槛只有一个:子程序功能。而子程序功能的本质,其实就是一个跳转和返回。 那么,即便有PLC系统没有所谓子程序功能, 那么它只要有JUMP或者GOTO等跳转指令, 那就相当于具备子程序功能。
而跳转指令, 原本就是汇编语言中的基本指令。所有PLC厂家, 哪怕是个人开发爱好者,自己用单片机捣鼓攒一个PLC系统出来, 跳转功能也一定有的。
昨天,随便撸了一个某网站上的PLC品牌列表:
把上面的原本没摸过的PLC的软件全部找来下载安装了:南大奥拓,矩形,科威,海为。
其实主要研究他们系统中实现子程序和子程序调用的方法。总得来说大同小异。 无非各自间使用的指令名称不同, 有叫CALL的, 也有叫JSR的。仅此而已。
而在此基础上,我更关注的一件事,它的系统中是否能够具备8个或者更多的位聚到一个字节或者字的功能。子程序具备功能可以, 有其它的专用指令也可以。
比如海为的PLC的子程序可以有最多8个INPUT和3个OUTPUT,
那么我们就可以打造一个8BIT到一个MB的函数。
然后当我们自己的子程序需要传入实参的时候, 就可以通过调用这个函数,实现稍微不那么难看的优雅和整洁,即对库函数的使用者来说, 耦合的难度可以小一点。
比如:
我们可以通过调用一次函数,把数据送到V10中,然后库函数中拆分V10的数据后使用。这样,在库函数管脚不够,甚至没有管脚的时候,可以实现管脚输入。 而即便库函数需要的管脚数量更多,还可以多次调用,把数据分别送到V10,V11,V12中。而输出管脚也同样的方法。
我在SMART200的标准化程序中就是使用了这样的方法。
我猜一定有人总想教我用指针和循环来处理,所以我做上面的例子刻意把点位的顺序弄乱,不让他那么整齐, 不给人做循环的机会。 真正的工程应用中, 点位的顺序肯定是杂乱的,不会给你机会去精心设计IO顺序。
然后就会有人给出解决方案说, 用IO映射啊!先都整理映射到内部的一个整齐规则的数据区, 然再来做循环。
那么,请有这样想法的人瞪大眼睛看一看, 我这里把一批数据送到了V10.0-V10.7的数据区中, 是不是就相当于IO映射?我用一次函数调用,目的要避免的就是重复8行简单赋值的垃圾工作量啊!
一直以来,很多把IO映射大法当作处理问题的核心技能的同行们,本质上是不认为IO映射重复写几百几千行无效程序当作工作量,认为简单重复无难度的工作内容就可以忽略不计了。
如果那样, 那么上一篇信捷的调用方法就已经足够满足你们的需要了。 然而对我来说,觉得很繁琐, 很丑陋,希望能有更好的办法。 这些品牌的具体指令我都不熟悉,如果有人知道比如信捷如果有相关的指令, 麻烦请告诉我。
从这样来看,这些小型PLC的烟台方法的实现,其实就是在原本的SMART200的标准化程序基础上做一步扩展,就可以了。 比如通过今天举例的海为PLC,其标准化程序架构会无限接近于SMART200, 甚至有可能可以直接照抄移植过来。
所以, 这样的话, 我也没必要亲历亲为为每一个小型PLC品牌都做一套标准化示范了。 有需要学习的同行,可以直接报名SMART200的学习营,在把SMART200的架构原理了解清楚后,再补充一点费用, 我给提供一个相应品牌的小的例子, 再给做个一对一的讲解,把过程中的难点和注意事项稍微讲解,大致就可以实现。
当然, 还是那句话, 越小的越简单的PLC, 实现起标准化来越难。 那么学习难度和门槛就越高。 一定要有充分的思想准备。 当然, 如果做的设备供货量足够大, 有足够的利润支撑的话,可以邀请我合作一起来做。
另外, 这些品牌商厂家,我能理解你们,把IEC61131标准落地实现到自己的控制器中, 难度已经相当大了,面向对象需求的这些功能, 其实只是上位编程软件上面需要做更多的功能, 然而市场的需求和呼声实在太小。 即,即便你们费尽心力,投入大量人员和资金给开发提供了FB功能以及面向对象需要的其它功能接口, 也没多少应用工程师能够充分利用发挥所有效力。 所以你们自然没有动力投入更多。
不过咱们可以有合作,各品牌商可以找我协助开发一批实现功能模块的例子以及应用指导, 填充到你们的帮助系统或示例中,将来对提高品牌在各行各业的标准化应用水平,更大程度提高市场竞争力,会有一些帮助的。
楼主最近还看过