龙空技术网

关于西门子S7的FC功能临时变量使用的一些小误区

跟我动手学电气 1541

前言:

眼前咱们对“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、临时变量未在所在程序段中赋值,直接使用。

标签: #c语言的临时变量 #c临时变量