回复:【万泉河】FB内的static静态变量是全局变量吗?

YiMoon

西门子1847工业学习平台

  • 帖子

    1228
  • 精华

    36
  • 被关注

    87

论坛等级:至圣

注册时间:2005-04-14

黄金 黄金 如何晋级?

发布于 2018-10-22 18:54:42

40楼

展开查看
以下是引用yming在2018-10-22 16:05:05的发言 >36楼

证据?你不是贴出来了么?


在全部程序中有效 -这不就是全局变量的定义么?

以下是引用YiMoon在2018-10-22 15:21:06的发言 >34楼:在没有查阅资料之前...

引用34楼详细内容:

在没有查阅资料之前,我也认为是全局变量,以至于投票也是投的全局变量,万斑问的是:FB内的static静态变量是全局变量吗?从SIEMENS资料上看就是局部变量。

如果非要说是全局变量,拿证据来

以下是引用yming在2018-10-22 13:08:48的发言 >31楼:那全局变量是什么?...

引用31楼详细内容:

那全局变量是什么?

全局变量不就是在全部程序中有效么?


以下是引用YiMoon在2018-10-22 13:02:08的发言 >30楼: 静态变量虽然可...

引用30楼详细内容:


 静态变量虽然可以全局使用,但本质上还是局部变量

以下是引用yming在2018-10-22 12:45:00的发言 >29楼:曾经也试过用接口...

引用29楼详细内容:

曾经也试过用接口 inout 传送配方、参数。方法是 建立数组DB,固定其数组0 与 FB 交换数据。这时,每次调用,数组0的数据总是最新的。HMI 也与数组0打交道。需要的时候,保存到原来的数组 n 中。

尽管这样也行,但是要在外部做 确认与取消。数组的类型 有时还得做成UTD,反而觉得更麻烦。

后来发现,西门子提供的许多 FB功能块,只把常用的(每次调用都要使用的)做在接口上,不常用的、设置类型的,放在背景DB的静态变量中。再后来发现,西门子提供的封装功能块FB接口越来越简单,像原来放在接口上的IP地址呀,端口呀,PID的参数呀,都“收”到其背景DB的静态变量中了。


另外,像驱动的 Drive 功能块,常用的都是控制字、状态字,好多都是位操作。接口使用位Bool。当我使用8/8PZD时,这功能块接口成什么样了?对于那些简单应用来说(启动、停止、速度给定)烦不烦呀。

(尽管可以使用默认参数)

所以这种功能块,还是仅将常用的做成位Bool,其他的也只是传送字。你还得外部将它们分解成位。

甚至有些功能块的诊断状态,还得从其背景数据块中取得。




在全部程序中有效:指的是下面的PII/PIQ。。。等


静态变量是归入局部变量中 的


左侧是全局变量,右侧是局部变量


所以,我的意思是:静态变量在定义上是归入局部变量的,但它可以全局使用。


还有,请忽略图片最上面的 ”局部变量“ 这个几个字,这是这一章要讲内容的标题



Keep calm and carry on!!!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15113条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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