回复:200 Smart PLC子程序调用

--意孤行

  • 帖子

    517
  • 精华

    7
  • 被关注

    48

论坛等级:奇侠

注册时间:2016-12-16

普通 普通 如何晋级?

发布于 2019-09-19 18:38:59

16楼

展开查看
以下是引用sangshunyang在2019-09-19 08:35:46的发言 >13楼


不管SMART 200  S7-200中的 子程序还是S7-300 ,400  S7 -1200 ,1500中的  FC  FB 。在子程序,FB,FC 中定义的变量都是局部变量,这些变量作用域只在该块中起作用,离开自身定义的子程序,FB,FC这些变量没有任何意义,其他程序也没办法调用,谈不上干扰。当然有的会说FB中静态变量,这里讲一下,调用FB是需要背景数据块的,FB执行时是调用背景数据块的数据初始化对应的定义的局部变量(不严谨)又把FB运行的结果保存到对应的背景数据块中。其他程序都没办法调用这些局部变量干扰就无从谈起。

以下是引用芳季在2019-09-18 22:09:12的发言 >11楼:你设计个程序测试一...

引用11楼详细内容:

你设计个程序测试一下公布一下结果嘛。口水战没用的。或多或少你也拿点可以支持你论点的证明材料啊。

以下是引用sangshunyang在2019-09-17 21:55:33的发言 >7楼:别误导人,子程序中...

引用7楼详细内容:

别误导人,子程序中临时变量子程序调用多少次也不会干扰,临时变量只在调用的子程序中起作用。

写程序变量作用域,变量的生命周期这个需要非常清楚。

以下是引用--意孤行在2019-09-17 17:08:40的发言 >2楼:两次调用子程序,...

引用2楼详细内容:

两次调用子程序,其实用的是同一个L区,临时变量相互干扰的

论坛里面有相关的帖子

@sangshunyang

  1. 不是说子程序调用了其他子程序的局部变量造成干扰。局部变量干扰,或者说是存储器的干扰,局部变量也是要要有存储单元,且同一调用级别的子程序共用同一个局部变量存储区的,如果子程序调用没有遵循先赋值后使用的准则,造成了不是编程意图的结果,算是干扰吧。

  2. 针对异步指令(指多个扫描周期才能有结果的子程序)局部变量是要全局保存的(类似FB指令里面的静态变量),这样的变量算什么呢。


认真做事,低调做人
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8936条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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