fb静态区域_关于Step7 FC、FB功能中的Temp、Stat 变量的学习

Temp是临时变量,cpu调用时分配内存,调用结束后释放内存,Stat属于静态变量,分配内存不释放,所以临时变量不占用db块地址

Stat静态变量,只有功能块FB有,也是FB和FC的一个最大的区别。静态变量在其对应FB块执行完后数据会保存,而临时变量Temp在对应FB块执行完后数据就清除。特别提示一点:如上升沿和下降沿等必须采用静态变量,所以当你不确定以后是否会用到上升沿或下降沿,或不确定是否会因调用某些系统功能块等而需要用到多重背景的时候,建议使用FB.因为多重背景也只能在静态变量中定义

stat变量在FB块中声明,存在于FB对应的背景DB中,据我目前所知通过指定DB地址在程序中是可以使用该stat变量的。如果FB有多个数据背景,那么在该FB中声明的Stat变量就存在多个数据块中,名字一样,参数不同而已。适用于那种控制过程一样,仅仅是参数不同的对象(如很多教材中讲到的汽油机和柴油机)。但如果一个FB有很多不同参数(如SFB4 TON 系统功能,在程序中可能有几十上百次的调用),那就要有很多背景数据和他们对应,就会很麻烦。 为了解决这个问题,就引入了多重背景的概念,多重背景其实也很简单,在调用这个块的时候,对着块点右键选择“更改为多实例调用”,按语法规定输入名字(名字取得好会让程序阅读性很强,如调用SFB4 TON,给电机一启动延时用,则你可以取名为Motor1_OnDelayTimer),确定后你会发现,在你现在的FB块的Stat中多了一个以你刚刚输入的为名字的变量还带加号,点开加号,你会发现里面就是被你调用的块的背景数据,书上关于多重背景废话了一堆,其实如上你就完成了多重背景的应用。

start和driver是外部输入输出接口。

例:如果在TEMP接口中新建一个变量A,数据类型为BOOL,地址0.0

1,正确的FC程序如下:

| #start #A

|--| |---------()

|

| #A #driver

|--|/|---------()

2,错误的例子:

| #A #driver

|--|/|---------()

|

| #start #A

|--| |---------()

分析:

程序的扫描是从上到下。S7

FC中的接口TMEP中的变量必须遵守:先赋值后使用的原则。

1程序,当start的值从0变为1,A也将从0变为1。扫描到第一段程序时,因为A的值已经发生改变,程序将成功扫描到A的常闭触点从1变为0,那么driver线圈将成功得从原来的1改变为0。

2程序,因为扫描到第一段程序的时候CPU没有发现A的值改变。之后A值将一直保持不变,即使start的值从0变为1,A值也不会发生改变;结果是程序没有反应。

下面是大家的一些心得体会

西门子这一点比其他的PLC都灵活,FB的DB作为FB的变量的固定存放地址,而Temp则是有系统分配临时区L地址。比如:存在FC1,FC2两个功能,它们都有两个Temp,那么当调用FC1时,系统分配L区域地址给FC1的Temp,如分配了LB0,LB1,那么当FC1调用完成后,系统认为LB0,LB1已经不需要,但是西门子的系统不会对临时区进行清零,只是继续分配,当调用FC2时,系统将LB0,LB1重新分配给FC2的Temp,此时如果不遵循先赋值后使用的准则,那么FC2的Temp使用的值将是FC1的Temp的值。

临时变量可以用于所有块中

(OB, FC, FB)。当块执行的时候它们被用来临时存储数据,当退出该块时这些数据将丢失。因此, 在PLC扫描运行时,

FC块中的临时变量TEMP不能自锁!

如果FC块, 请你使用全局变量(标志位和数据块)来存储数据,实现自锁!

如果FB块, 除了全局变量之外, 你也可以使用静态变量来存储数据,实现自锁!

TEMP变量不能自锁的原因显而易见:

每个扫描周期开始时,TEMP变量的值并不像Q或M那样可以保持上个周期的值。除非明确对其赋值,否则它的值是不确定的。

我使用TEMP只有一个原则:

第一次出现某个TEMP变量,必须是对其赋值(或线圈刷新)的写指令,而不能是读指令。

如果出现问题,建议使用STAT变量替代。

对TEMP的认识都有问题!

我的建议是做逻辑不用TEMP,只在做运算是用TEMP,会省去很多麻烦

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值