查看: 5477|回复: 30
收起左侧

[教程经验] 分享:临时变量temp/静态变量static

Slimming 2022-4-18 17:41:36 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 Slimming 于 2022-5-17 11:28 编辑

一、简介
中型机变量分为这几大类:input(输入)、in_out(输入输出)、out(输出)、temporary(临时)、static(静态)

最常用的是前三类,而后面两类并不常用。与其说不常用,倒不如说是各位用过了但是没有察觉,而且可能带有疑问。
如下图,为啥在FC中在线监控变量显示问号???
image.png

先给出结论:
临时变量不占内存,地址使用完释放掉。
静态变量占用内存,地址使用完保留。


二、变量类型

手册里面关于临时/静态变量的介绍少之又少,总结来说就,临时变量是在每次使用前会初始化,静态变量第一次调用后初始化。怎么理解呢?下面展开细说。
image.png


1.PRG/FB
在prg和FB中直接定义的变量var……end_var,默认是var_stat。
在线登陆后可以监控到数据在plc执行多个扫描周期后,即使变量没有调用其数据依然是保留的,这就是static类型的定义。
然而定义了临时变量后,prg中变量的地址用完释放,显示就均是问号。
image.png


2.FC
在FC中直接定义的变量var……end_var,默认是var_temp
在线登陆后可以监控到数据在plc执行多个扫描周期后,即使变量一直调用其数据依然不保留,这就是temp类型的定义。
然而定义了静态变量后,FC中变量的地址用完保留,显示就是具体数值。

image.png

看完上面的例子,是不是对临时/静态变量的理解更清楚一些了。


三、总结

各位可能有疑惑,为什么要搞出这么多类型出来,都是静态变量监控的时候都能看到数据多好,默认全是静态变量不行吗?
类似FC、FB一样,既然FB都能实现FC的功能,那FC有什么存在的必要呢?

个人看法讨论一下,临时变量不占用内存用完即释放,在处理大量数据时有着非常明显的节省资源的优势。所以说实例化数据虽然方便管理和继承,但是占用资源较多。
牺牲了资源来提高可编程性,这就是面向对象编程的缺点


当然FC和临时变量有存在的必要性,一份好的程序必然考虑资源占用问题,尤其是性能不强的cpu要处理大量数据必须考虑资源占用问题。在编程和资源之间协调出一个平衡点,在非必要的数据处理上面做成临时变量,在复杂算法和工艺上面做成静态变量,因为静态变量可监控非常有利于编程监控和查找bug,所以二者缺一不可,也在不同性能的cpu上面发挥着不可或缺的作用。


以上均为个人见解,如有错误还望指正。





上一篇:InoProShop(V1.6.2)SP2 CNC仿真报SMC_NO_LICENSE
下一篇:inoproshop输入法英文问题

已有 1 人打赏作者

7677568626 赏了楼主1水滴
回复 邀请回答送花

使用道具 举报

Slimming 2022-4-18 21:29:09 | 显示全部楼层
临时变量和静态变量,就像是FC和FB默认的变量,非实例化和实例化的差别
回复 送花

使用道具 举报

zouge888 2022-4-18 20:58:49 | 显示全部楼层
分享:临时变量/静态变量 我是 zouge888  http://bbs.inovance.com/plugin.p ... d=5476&tid=9203
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部