由于PLC采用的是循环扫描的工作方式,在一个扫描周期里从上到下,从左到右不断的循环执行用户程序。
这种方式就决定了:
1、PLC程序执行是单线程的,数据存储器的数据是可以被预知的(在上一个扫描周期里的所有数据都是不可变且唯一的)。
2、用户程序存在耗时任务的话会导致PLC扫描周期变长,PLC的实时性就会变差。
3、PLC里的指令是精心设计的,执行时间短,用户使用不会阻塞程序运行。
用户只能使用PLC厂家的提供的指令,基本不存在第三方的指令库,不同品牌的PLC间甚至同品牌不同系列PLC指令也不通用。
这里我认为是非官方的库会导致不可预测的后果,严重的话会导致PLC程序崩溃。为了自家PLC的稳定性,干脆做成封闭的指令系统。
基于3,我们是要在PLC厂家制订规则内应用他们规定的指令来构建我们自己的程序。
简单得说,就是别人给你用什么,我才能使用什么。
别人给你三个轴,我也只能多用到三个轴。别人不给你内存空间,我也用不了面向对象方式来写程序。
或许我对PLC的理解还不够深刻,我认为模块化的编程方式是适合大部分PLC的编程方式。
把工艺切割再切割,分成一个个独立的模块。
每个模块只保留一个进口跟出口,减少各模块的耦合性。
人是要跟自己计较的,当翻看到自己以前写的程序,觉得它写得像是一坨屎的时候,我们就已经在进步了。
我个人认为PLC编程有三重境界:
1、觉得别人写的程序都是垃圾。
2、觉得自己以前写的程序都是垃圾。
3、自己开发一套PLC,让别人在自己制订的规则下来编写PLC程序。
不固步自封,不骄傲自满,能沉淀下来推动一个行业的发展,我觉得这才是一个工控人的价值所在。