回复:FC内的输出点无法自锁

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23144
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2020-11-14 10:46:35

4楼

展开查看
以下是引用过眼云烟在2020-11-14 07:48:37的发言 >2楼

您说的“OutPut是不能被引用”,这个道理用于启保停我还是理解的,但是第二种用SET的方式将Motor置位=1了,是什么原因令其复位了,我们一般理解SET后必须要有RST才能够复位吧,哪有自行复位的了。这一点我还是没有搞明白,还望赐教。

以下是引用yming在2020-11-13 22:36:50的发言 >1楼:难道没有警告?Out...

引用1楼详细内容:

难道没有警告?

OutPut是不能被引用的。

用它赋值也不行。

逻辑上定义不准确。是指之前的状态?还是运算结果的状态?



3楼说的正确。

FC功能块是“函数”,每一次调用,操作系统按当前状态,临时分配可用的内存地址作为临时变量;且不进行清零

这些临时变量包括:Input InOut Output 和你要用到的Temp;

因此,所有临时变量使用前要定义,赋值。因为Input InOut在每次调用时被接口赋值,所以,每一次调用FC,计算操作只需对Temp赋值。而计算结果是对Output这个临时变量赋值。这就是为啥警告你Output不要被引用。

Constant(常量)则是编译时,和FC块保存在一起的。


你在一个FC内对一个临时变量 Set( 置位)有啥用?下一个循环周期调用,可能分配的是其他存储地址;何况下次调用之前,不知被系统分配了多少次。

即便使用InOut,也要保证是一个全局变量,它能保持上一个扫描周期的状态。这就是说,你用一个OB的Temp变量传递到InOut都是不确定的。



学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15105条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。