前言:
眼前咱们对“c语言的临时变量”大体比较着重,姐妹们都需要学习一些“c语言的临时变量”的相关文章。那么小编在网络上收集了一些对于“c语言的临时变量””的相关文章,希望大家能喜欢,咱们快快来学习一下吧!对于很多初学西门子PLC的朋友来说很容易对FC和FB相混淆,很可能认为FB仅仅是比FC多了一个背景数据块,其实,这种误解是非常危险的,很容易在你编写的程序中造成意外。
在STEP7中关于FC的描述是这样的;
FC是一个没有存储空间的逻辑快,FC的临时变量存储在本地数据堆栈中,这些数据在FC执行完毕后将会丢失,要永久保存数据,必须使用共享数据块DB。
所以呢,由于FC没有存储空间,必须要给FC的参数指定实参。这也就是为什么FC块的输入输出变量必须填写参数的原因。
同时FC的临时变量是无法指定初始值的。
举个例子来说:
我们建立两个FC功能,
在FC1中新建两个临时变量,并做加法运算如下图所示:
在FC2中新建两个变量,并对两个变量赋值:
在OB1中先调用FC2,接着调用FC1就会发现一个意想不到的结果
先看看结果:如下图所示:
我在FC2中赋值,在FC1中的临时变量却得到了赋值结果,这是为什么呢?
其实这是因为对于FC或FB的临时变量来说,不要希望将本次调用的数值可以存储在里面来供下次程序调用使用,因为,这些临时变量所使用的L堆栈控制在FC或FB调用结束后就会释放给系统了,其他后续的程序可以任意使用。
这就解释了为什么在FC2中的赋值,缺在FC1中使用。
针对这一特点,尽量避免:
a、将临时变量用于上升/下降沿指令。
b、将临时变量用于自保持逻辑。
c、临时变量未在所在程序段中赋值,直接使用。