回复:都是子程序,差别还是值得注意一下

winter938

  • 帖子

    1557
  • 精华

    33
  • 被关注

    41

论坛等级:至圣

注册时间:2005-06-09

黄金 黄金 如何晋级?

发布于 2019-06-21 18:36:41

8楼

展开查看
以下是引用我是石头在2019-06-21 18:01:43的发言 >


我猜测啊

IN INOUT 是在调用fc子程序开始就将实参赋值形参,

INOUT OUT 是在fc子程序扫描到时?(或结束前?)才会将形参赋值实参。

所以如果在out形参 输出  使用前,使用其作为 条件输入 ,其形参值是不确定的。如果在同一扫描周期中,前后连续调用了fc子程序,那么out值就可能会是上一次调用fc子程序时的运算值

200的子程序没有static型的变量存放过程数据,如果有过程数据需要读出和写入就需要INOUT变量来接纳这样的数据,或者编程用间接寻址的方式开辟管理一块子程序专有的V寄存器存放每次调用产生的过程数据。比如边沿检测指令的输入状态暂存就是这样的数据,它用于存储上次扫描时输入的状态,先是读出与当前的输入状态共同决定沿输出,然后把当前输入状态写入刷新。每个沿检测都需要分配这样一个过程数据存储。由于300,1200之类的FB块有static变量且有背景数据块一一对应存储每次调用产生的过程数据,用户可以省心不少。

工控爱好者
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9428条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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