我用梯形图制作了一个简单的启动、停止、运行的自保持FC块,启动、停止按钮声明为input BOOL型变量,运行故意声明为output型变量,没按要求声明为inout类型(之前用300、400plc step7时类似使用,1500博图使用output变量会报警,提示不建议读取output类型变量,但能正常下载),结果程序扫描时,不能执行自保持功能。如图所示:

但是使用FB块不会出现如上情况,可以正常执行相关功能,如图所示:

然后我用SCL编写上述FC块程序,没有了output变量的读取,但也会出现上述不能保持情况,FB块则不会出现上述不保持情况,如图:


那么问题请各位大佬释疑:
1、output变量为什么不建议读取,读取会造成哪些错误。程序执行扫描的过程到底是个什么原则(上面run线圈接通,下面一行相应触头没有接通)。
2、为什么在FB中使用没问题,而在FC 中使用会出现相应问题。
3、在FC中使用IF语句的话,我也没有读取output变量(run变量),当start_button接通后,run执行为1,当start_button断开后间隔一个扫描后,为什么run自动复位为0.
4、与上述问题无关,博图1500使用temp临时变量会在每个扫描后清零吗,300、400plc使用step7 时会根据程序调用情况出现随机值,也就是说博图1500 使用temp变量前要首先复位吗。