回复:2台泵开启调用FC块同时动作问题

rindu

  • 帖子

    10
  • 精华

    0
  • 被关注

    3

论坛等级:游士

注册时间:2008-07-07

普通 普通 如何晋级?

发布于 2012-06-30 20:52:30

2楼

quote:以下是引用youhm在2012-06-29 18:08:42的发言:
O #relayrqjidianq
问题就在这里,当#relayrqjidianq的实参是一个绝对地址引用的DB块数据时,这个形参#relayrqjidianq将用一个临时变量来处理这个参数,做为一个OUT参数,块开始执行不会读取实参到形参里,所以这个临时变量就没有被赋值,所以当你的输入实参是一个绝对地址引用的DB块数据时,这条指令就违背了临时变量先赋值后使用的原则,因为系统很多时候临时变量区域是重叠使用的,所以临时变量要先赋值后使用,不然就会引起错误。
如何避免这个问题呢?
1.可以使用IN_OUT替换OUT,因为IN_OUT在块开始时会读入实参到形参,所以临时变量也就被赋值了
2.可以用OPN指令先打开数据块,在参数输入DBXx.y这样的数据,或者是其他区域M、Q等,因为这些做为实参时是直接访问实参地址,而不会使用临时变量

是这样啊,我在OB1中没有使用DB块数据,而是将所有的IN,OUT变量直接连到实际的输入输出地址上,将IN-OUT地址用M点连接的,所以基本上是没有动用临时变量的。我简单描述一下我的程序把,是用软启来拖两台泵。启动时先将软启继电器送运行信号同时将软启接触器合闸,延时10S后跳开软启运行信号和软启动接触器,再延时2S后将工频接触器合上。先前做的程序涉及到临时变量就全部修改到现在这个程序,感觉不知道用IN,OUT,还是IN_OUT来做程序中的临时中间变量(程序中需要过渡的变量,非设置临时变量的类型),帮忙看一下啊
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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