最近拿到一份有很多EN/ENO 指令的程序,打算改成常规的写法(对不熟悉的人来说不是很友好),同时保持相同的读写特性;方法有了(所有output改为InOut),趁着有时间,拓展一些细节,做一些实验;
下面图片中的FB 可以不填参数,FC 不填会报错;;
1.

2.内部先做成一样的;

3.特性1,失去EN 后结果保持不变;

4.特性2,失去EN 后,控制输入失效,不对结果造成影响;

总结: 失去EN 后,相当于这段程序删除了;
针对大家的疑问,补充下面几点:
补充1:其他类型在FB/FC 编辑阶段会不会报错?

结论FC 对于其他数据类型,空白都会报错;FB 对variant 和 定长/不定长数组不填参数会报错;
补充2..失去EN 会对结果锁定。
此描述是错误的,锁定意味着不能修改,其实是可以修改的;其实就是相当于这段代码不存在了,所有输出保持失去EN 前的状态,直到被后面的程序修改,理解上,失去EN 后说是删除没有问题。可以看到作为输出的Tag_3 在监视表里面被修改了。

补充3: 如果没有语句对输出进行操作,相当于对输出持续写0,除非后面有语句持续写1,才能改变;

不同的是,FB 因为有数据块,即使前面的输入条件没了,后面的output 数据也会保持,并且接口上的变量同样不可修改,除非直接去修改DB; 相当于数据先写到DB, 再从DB 写到接口;而FC 因为没有DB,就会和前面没有写,默认当作写0;

到这可能回想,此处的IF 和前面的EN 功能是不是一样? 对FB 来说,并不完全一样;从结果上来说,失去了EN ,output 接口上的变量可以被修改;但是IF 不满足的情况,output 接口的变量不能被外部直接修改,除非一直写;