恭喜,你发布的帖子
发布于 2020-11-14 10:46:35
4楼
您说的“OutPut是不能被引用”,这个道理用于启保停我还是理解的,但是第二种用SET的方式将Motor置位=1了,是什么原因令其复位了,我们一般理解SET后必须要有RST才能够复位吧,哪有自行复位的了。这一点我还是没有搞明白,还望赐教。
3楼说的正确。
FC功能块是“函数”,每一次调用,操作系统按当前状态,临时分配可用的内存地址作为临时变量;且不进行清零。
这些临时变量包括:Input InOut Output 和你要用到的Temp;
因此,所有临时变量使用前要定义,赋值。因为Input InOut在每次调用时被接口赋值,所以,每一次调用FC,计算操作只需对Temp赋值。而计算结果是对Output这个临时变量赋值。这就是为啥警告你Output不要被引用。
Constant(常量)则是编译时,和FC块保存在一起的。
你在一个FC内对一个临时变量 Set( 置位)有啥用?下一个循环周期调用,可能分配的是其他存储地址;何况下次调用之前,不知被系统分配了多少次。
即便使用InOut,也要保证是一个全局变量,它能保持上一个扫描周期的状态。这就是说,你用一个OB的Temp变量传递到InOut都是不确定的。
请填写推广理由:
分享
只看
楼主