太复杂了,写软件特别是在进行块封装、FB之类的模块化编程的时候,一定不能想着把所有功能都塞到一个组件里面搞定,软件开发的基本原则就是高内聚低耦合,只有强相关的功能才可以封装到一起。
当然,这都是理论,实际操作的时候,怎么舒服怎么来~
举例:
我自己用的单线圈电磁阀气缸控制,输入只有使能(Enable)、输入(InPut),原点(SensorA)终点(SensorB),时间脉冲(TP),超时(TimeRange),复位(Reset)
输出点只有 输出(OutPut)、报警(Alarm)
块内的逻辑只有电磁阀输出,原点终点和超时报警逻辑,其他没了,这就已经很复杂了
至于说1L提出的那些复杂功能,不好意思,都不是气缸控制块应该管的事情,气缸控制就只管气缸控制
急停应该是状态管理的任务,滤波应该是输入模块的任务(我自己的程序会再写一遍输入,从X点过渡到M点或者其他什么内部软元件,且在整个程序最前面),至于输出互锁,特殊逻辑之类的,也都是M点内部运算完成以后再输出到Y点
简单来说,不能动的条件全部串到Enable前面,Enable没了气缸块自己保持自己的状态,要做自动撤回就在输出上再串上enable,包括1L提到的什么屏蔽,无非不给使能嘛;要求动的条件全部并到InPut前面,手动也是动,自动也是动,手自动共享块提供的基本功能和超时保护,至于点动也好,连续也好,控制一下输入不就行了,另外写程序去搞定,如果频繁使用也可以封装~