论坛里有几篇关于标准化编程的帖子
把工艺理解并拆分成,位于不同层级的抽象设备(单元化的逻辑块)之间的,自顶向下的调用结构。凡逻辑皆设备,没有存在于设备之外的逻辑。这包括最底层的硬件设备、小工艺单元,大工艺单元,一条生产线等等,看你的项目有多大和工艺层级的数量需求。
一般来说,程序员把某一部分逻辑单独提取出来做个块(抽象设备)相对容易。但经常遇到的情形是,抽象设备之间存在互锁关系,例如:设备x1、设备x2的状态都要启动,且设备x3、设备x4等的状态都要停止,设备y才能启动,否则停止。
互锁关系中,前置条件设备的数量是不等的,但他们的状态无非是常开和常闭中的一种。有时候会遇到数值大小的前置判断,可以在抽象设备内部转化为开闭状态输出。
把互锁这种关系结构,也抽象成一个设备,写成一个块。
这个块,比如有10个常开和10个常闭引脚输入(根据自己的业务情况,引脚数量足够用就行)。常开引脚默认值是1,常闭引脚默认值是0。在块里面写一句话,把所有这些常开常闭串联起来,然后线圈输出。
在各种不同的互锁场景下,调用这个块的时候。把有关联的前置设备状态,按照是常开还是常闭的区别,分别关联到引脚上。因为数量不定,必然会有一些用不到的输入引脚闲置,它们的数值或者是1或者是0,在运行中保持不变,等于不存在,就不会影响整体互锁逻辑输出。这个块的输出就关联到被调用设备的启停引脚。
这样可以一个通用的方式来处理,千差万别的工艺被分解后的单元之间的纠葛。会简化整体工艺分解的思路和迭代效率。