万泉河
WX:ZHO6371995,欢迎+
级别: 略有小成
精华主题: 0
发帖数量: 131 个
工控威望: 248 点
下载积分: 836 分
在线时间: 11(小时)
注册时间: 2021-06-11
最后登录: 2025-01-14
查看万泉河的 主题 / 回贴
楼主  发表于: 5天前
0114 【万泉河】PLC通用编程理论

有没有想过,PLC行业有哪些通用编程理论?

在回答这个问题之前,首先要把概念界定清楚。

首先得是所有PLC,行业内所有厂家的都算在内。这个理论得能通用于所有品牌所有型号,而不能是只针对其中的某个品牌,某个型号。 那样的算不上理论,顶多可以算是它家的产品说明书,或者对产品说明书的深度理解应用。

其次只能是PLC,不能把PLC之外的外围工艺算进来。外围工艺有的确实挺难的,但只是那个工艺难,与PLC并没有什么关系, PLC顶多是作为一个载体工具实现了他们需要的工艺功能,一方面,这套工艺解法离开了那个行业,如果到了更多应用PLC的行业,毫无用处。那就算不上PLC的编程理论。另一方面,同样的工艺,也完全有可能被人用PLC之外的其他控制器实现,比如单片机MCU, MPU ,DSP , CNC,FPGA,嵌入式,甚至工控机,触摸屏等都能实现,使用了同样的解法,控制了同样的工艺设备,那么就不能称之为PLC理论。

按照上述的2个标准套下来, 很多大家习以为常的认为的编程理论方法好像都不符合了。

比如卷绕算法。 根据材料的线速度,角速度,计算直径,根据纠偏系统的偏差测量张力,计算估计传动系统到滚轴的转动惯量,计算和动态控制速度和张力,这些是这个工艺本身的控制理论方法,掌握了之后可以用PLC实现,也可以用单片机实现,更可以用更多的其它的控制器实现。 甚至掌握的好的高手,可以自己开发专用的控制器,封装好了以后,作为一个单独的产品,输送给全行业使用。

然后使用者拿到后,不需要懂得其原理,只需要经过简单设定,甚至连简单设定都不需要,系统自动可以识别优化参数,然后就把工艺设备驯服控制到乖乖听话。这样的是真高手。 这样的公司是真的有技术含量,可以为客户提供真正的技术价值。

相似的例子还有PID。这大家就更熟悉了。 很多做PID表的专用厂家,其控制模型当然是完全封装的,不对外的。但其控制效果比我们自己用PLC来写PID程序块,哪怕是套用厂家写好的PID自优化功能,控制效果也好很多。

所以这些都不能算到PLC的编程理论里面。

那么还有什么,起保停?状态机?

没错,起保停确实是PLC行业的通用理论。 然而它是PLC的先天基因,甚至比PLC诞生的还早,整个PLC这个产品就是从继电控制硬件线路发展来的,即便PLC发展到今天,更高性能的CPU芯片都用上了,但起保停的理论不变,一直是可以使用的。 当然,我也早就写过文章,分析过PLC编程中的起保停与SR的关系,以及与高级语言IF THEN 语句的关系。

而状态机,其实本质上就是个大号的起保停,或者倒过来说,起保停就是个小号的状态机。只不过状态机的模式状态会有13种或者17种,而起保停的状态只有区区的4种或6种。

所以,你可以用IF THEN写出来起保停相同的逻辑,但要写状态机的逻辑,就只能用CASE语句了。 当然, 我们倒过来看, 状态机的编程思路是从高级语言学来的,原本就是从他们的SWITCHE  CASE语句照抄过来的。 还真算不上PLC通用编程理论了。 你总不能说IF THEN是一种编程理论方法吧?同样的道理。

所以同理,我一直在宣扬的面向对象的编程方法,也不能算作PLC通用编程理论。 那原本是计算机软件编程行业几十年前就有的旧货,我只不过把它成功应用到PLC行业,当然同时也有更多工程师也在尝试把它应用到PLC中,我只不过是应用更早,更彻底,也更领先一步把理论总结成章,写成了文章和书,也愿意把真正工程应用的案例样板拿出来分享(非免费)而已。

而其他同行为什么没有人分享出来同样有价值的知识呢?是他们不喜欢或是看不到其中存在的价值?还是他们自己做出来应用在自己的行业中已经赚得盘满钵满不在乎这点了?还是他们行业实在机密得很,不方便分享?

要我看,都不是。

我一直想找一些同行的佼佼者,有钱有闲有技术有能力,然后可以合谋合作做一些事情。 然而一直都找不到。 很多被行业公认的大师高手,其实还是要被日常工作所累,自己自由的时间根本不多。 所以基本上可以否定了前两条。

而第三条,就更不可能了。 按照本文的观点,通用的技术理论方法可以超越于行业的。 如果所做的设计有行业工艺机密,那可以脱敏后拿出来啊!甚至可以不针对具体项目,就找一点简单控制对象, 80个指示灯,80个双联开关,80个模拟量,80,800台传送带电机等等。

所以,总结下来, 要把面向对象的方法彻底应用到PLC行业,还不是简单的了解了库的封装,类的派生继承多态就可以实现的。 背后还需要一些适用于PLC行业的专用理论。

除此之外,读者们是不是很难找到一些符合条件的理论了?

我还真替大家找到了一个:IO映射。

这是一个从名字就可以知道实现方法所有内容细节的方法理论,虽然浅显,但确实通用,也被好多同行奉为核心技术。而恰恰是我一直以来反对使用的技术。我有写过好多篇不建议使用IO映射的文章。

但我首先要对很多只熟悉倍福TC2的用户做个解释。倍福的PLC使用的CODESYS的内核,其硬件组态和软件编程是分开的2个软件。到TC3以后虽说集成到了一起,但本质上也还是2家人。

所以,硬件组态的通道要和软件系统的变量有对应关系,需要做一一对应的映射,名字就叫做IO映射,这是软件的操作过程。

以往我提到不用IO映射的时候,就有倍福的用户质疑我, 不做IO映射,软件都无法和硬件物理世界产生关联,还如何控制设备?

是这样,那些做IO映射的编程方法,是在PLC系统已经有IQ变量得到了与物理量的通讯之外,又单独做了一层IO映射,把数据映射到了另外的变量,M, DB 中。 即,对应到倍福,他们相当于是要做2次IO映射!

我为什么会想到这一点,以及为什么会想到这个话题,是因为我看到了一张图,一张工控行业需要掌握的技能的思维导图:
  


然后我就发现了,在PLC编程领域,除了我看不上的IO映射之外,整个行业还没有什么可以值得学习的通用理论。

而烟台方法,则是填补了这个空白。

我在用烟台方法实现PLC的标准化设计编程的同时,打通了许多理论基础。 然而我又不是太善于总结,理论都三步在许多零零星星的编程技能方法的文章里了。要说有总结,工控行业五连鞭可以勉强算是了。

万线圈, 不用MT, 不用交叉索引, 不用IO映射, 抵制UDT。 ……工控行业五连鞭

这其中恰恰就包含了不用IO映射的理论。

理论的总结归纳,难度还是比较大的。有的时候做出来容易,但要提炼上升总结为理论,就很难。 其中一个最大的难题是:理论的命名。

我们在读书的时候,导师教导我们的,就是反对随意创造概念,乱命名。 把一些已经存在的概念方法,自己套用后再起个标新立异的名字,就成了自己的独创了。 这一点,在经济学领域和管理领域,特别常见,也特别讨人厌。 一些所谓的行业大师,专家,其实只不过是PPT大师,创新词高手而已。

我在前面2篇文章:
1218 【万泉河】翘空之美--每一个PLC工程师都应该了解的真相
0103 【万泉河】PLC程序块INOUT管脚的倒置用法

其中的翘空和倒置,都是我新创的词汇。不是为了猎奇而非要独创,而实在是没有找到合适的已经通行的词汇。 而正因为此,我才可以宣布这是自己独创的理论。

其中的翘空,还被人评价用留白比较符合他的认知习惯。

怎么说呢,就相当于一个大龄剩女,你可以描述她是独身主义,也可以描述她是没人要嫁不出去。 但前者是自己主动选择的,后者则是被动的。

我们选择给FB的管脚翘空的时候,是我们主动的选择,而且以此为美。 而留白的词汇就显得苍白,分明是被错过,被忽视的感觉。

但不管怎样,我第一个提出了这个理论方法,那么我就有它的命名权。 哪怕我名字起的再不合适,后来者也只能遵循沿用。 你哪怕有能力起个再贴切的名字,只要是发表的理论比我晚,说起来也是照抄了我的理论。甚至自己没有任何建树,只是在名称方面指手画脚的,就更是没有什么意义了。

我们知道,工控行业的工程师里面,有许多是自命不凡桀骜不驯的优秀人才。

对于这些人,可以问一句,本文中提到的这些理论,服不服?

我猜,一定会有很多人提出来:不服!

我就最喜欢这样的能人了。 很简单, 不服的话,就自己贡献创造一两个自己专属的理论。PLC的入门门槛很低,从事PLC行业需要的理论也很浅,任何人都很容易对行业的发展做出点贡献。做出来了以后,才可以有底气说:不服!而在此之前,如果两手空空,只凭嘴巴不服的话,那这种不服只是自己释放负面情绪,是无能的体现,并不会得到任何人的尊重。对行业也更无任何贡献。  

总结一下:目前为止,烟台方法为PLC通用编程贡献了99.9%的理论。