FB和FC的变量地址分配问题

1)局部变量表里的形参IN、OUT、IN_OUT,在其下面定义的变量,分配的地址是哪个存储区的地址?
2)在FB1里顶一个动态变量TEMP1,INT,地址:0.0;在FC里定义个局部变量TEMP2,INT,地址:0.0
      在FB1块被调用时,给变量TEMP1分配地址:LW0,当FC1被调用时,L堆栈被释放,从新分配,把TEMP2分配到LW0,在FC1执行完毕,L堆栈又被释放,会根据FB1的变量地址从新分配,我想问这个时候,TEMP1的值是不是等于在调用FC1时TEMP2最终的值?若我想在调用完FC1之后继续对TEMP1操作,是不是要把TEMP1清零之后从新开始?也就是说在调用FC1之前的那个TEMP1的值是不会保存的?
3)关于S7 300寄存器间接寻址,我在网上搜到的:有的说87000000是L区的,有的则说87000000是V区的,L区的是86000000,哪种说法是对的啊?还有,关于S7 300的V区(先前的本地数据区),求大神解说下是干嘛用的。

最佳答案

没注意这个问题发在1500版区,以下回答内容是对于S7-300、400的
1.对于FC来说,当IN、OUT、IN_OUT的实参是I、Q、M或外设区域以及非绝对地址引用的DB块数据(比如调用FC前使用OPN DB打开数据块,参数使用DBW0之类)时,变量实际传递的地址,也就是说访问形参变量等同于访问实参,其它的参数比如DB块的绝对地址引用(DB1.DBW0、LW0)等,形参保存在V区,这个V区实际就是上一层程序块的本地数据(L区),比如OB1调用FC1,在FC1里的V区实际地址就处于OB1的L区。
对于FB块,除了IN_OUT的实参是复杂数据类型时,传递的是地址指针,其余情况IN、OUT、IN_OUT的参数保存在背景数据块里。
2.临时变量根据系统调用结构的不同,同一片区域可能会被不同的块重复使用,未见赋值的临时变量可能是一个不确定的值,所以使用临时变量必须遵循先赋值后使用的原则。

提问者对于答案的评价:
看了你的解释,豁然开朗,非常感谢。。大神再帮忙看看我的另一个问题呗,快到期了,悬赏25分的,链接:http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=116487&cid=1029

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc173445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月13日
下一篇 2017年6月13日

相关推荐

  • S7通讯中分段发送与接收

    为什么错啦,该怎么填 问题补充:提示:不允许在具有优化访问的块中对数据进行绝对寻址 图片说明:    最佳答案 你可以在DB1中建立一个数组 RCV[…

    2017年5月31日
  • 1500 数字量模块接线问题

    第一次使用1500系列PLC,在查看数字量模块样本的时候发现如图中所有的通道公共端都接在一起,然后并没有接到24V或者M上,这样是怎么构成回路的,可以直接这样使用吗 图片说明: &…

    2017年6月10日
  • 请求指导et200sp如何配置安装

    和尊敬的老师,你们好!    我准备用et200sp开发项目,四个小车在不同的规道运行,用无线以太网控制四个小车。其中一个做IO控制接入器,…

    2017年6月6日
  • 博图软件授权

    为什么我的授权老是重新打开时失效,需要重新安装一下软件才能使用? 问题补充:我的系统是win10的,麻烦哪位大侠碰到过这种问题? 最佳答案 在电脑的服务项里面找到自动化许可证管理器…

    SIMATIC S7-1500 2017年6月3日
  • 如何计算S7-1500做运动控制时的CPU负荷

    如何计算S7-1500做运动控制时的CPU负荷 最佳答案 在S7-1500做运动控制选型初期,通常需要知道运动控制部分对CPU产生的CPU负荷,以便选择合适的CPU来完成任务。推荐…

    2017年6月7日
  • 1200能否用STL编程?

    请问各位老师。1、1200能否用STL语言编程(在新建块时可选的编程语言只有SCL FBD LAD)?2、有没有1200间接寻址的资料?谢谢支持。 图片说明: …

    2017年6月13日
  • botu v13

    哪里能下载博图V13软件和仿真软件? 最佳答案 链接:http://pan.baidu.com/s/1o8pUzR8 密码:64nr 提问者对于答案的评价:是最新的吗? …

    SIMATIC S7-1500 2017年6月3日
  • 博途和s7-1500

    是不是用s7-1500,必须用博途软件。以前的step7 5.5不能用了。触摸屏也不能用ktp600,需要换成ktp700.   &nbsp…

    2017年6月11日
  • 如何组态155

    为什么我的博图可以看到155,但是组不到硬件里呢,哪位高手指点一下 问题补充:6ES7155-5AA00-0AB0 最佳答案 什么155?补充:下载GSD进行安装PROFINET&…

    SIMATIC S7-1500 2017年5月29日
  • 安全指令

    工厂有台设备是老外写的程序,其中有个安全指令报错,就是ERROR引脚输出1.帮助文件中的指令说明有故障代码,但是输出引脚DIAG在安全程序中不能监视BYTE型。又不能强制信号,哪位…

    2017年6月3日