上一篇文章我们对西门子SCL语言进行了简单的介绍,今天这篇文章,我们来介绍下SCL语言的变量。
变量(Variable),是指在程序运行过程中其值可以被改变的量。与“变量”相对应的是“常量(Constant)”。顾名思义,常量的值在程序运行过程中保持不变。
与变量相关的几个概念包括:
变量的名称;
变量的数据类型;
变量的作用域;
变量的生命周期;
变量的名称简称为变量名,用来唯一标识该变量。变量名必须满足编程语言的命名约定,比如S7-200 SMART规定变量名称不能以数字开头,不能使用关键词,长度不能超过23个字符等等。
变量的数据类型用来表明其占用存储区的大小及支持的操作方式。比如,布尔型数据占用存储区的一个位,而字节型数据占用一个字节,整型数据占用两个字节等等。
变量的作用域是指变量的作用范围。根据作用域的不同,变量可分为全局变量和局部变量;
变量的生命周期是指变量的存在时间。全局变量和静态变量的生命周期与系统程序相同,即在整个系统程序运行期间都有效;而临时变量只在其所属的程序块被执行期间有效。一旦该程序块退出运行,该变量的内存就被释放;当程序块再次运行时,其值重新被初始化。更多关于静态变量与临时变量的内容,请参考我之前写的这篇文章:
编程的本质,是通过各种指令,对数据(变量+常量)进行操作的过程。在西门子SCL的编程中,变量必须先声明才能使用。
下面这张图是西门子博途V14中SCL编辑器对功能(FC)的编辑界面。
编辑器的上部是变量的声明部分。其中包括:输入(Input)、输出(Output)、输入及输出(InOut)、临时变量(Temp)、常量(Consta)及返回值(Return)。
在输入(Input)、输出(Output)、输入及输出(InOut)中声明的变量作为函数块(FC)的形参,可以在上级调用中赋予不同的值。
比如下面这张图为该功能(FC)添加电机启停控制的变量参数:
在OB1中调用该FC的代码如下图:
临时变量只在本程序块中有效,它一般用来保存程序运行过程的中间值,当FC的调用结束后,其存储空间被释放。也就是说,临时变量的值不能一直保存。
但有时候,我们需要程序运行的中间结果也能保存。比如,做一个累加器,我们希望其累加的结果在下一次调用时也是存在的,而不是每次都从0开始累加。
怎么办呢?这就要用到静态变量。
在西门子SCL编程中,FC中不能声明静态变量。要使用静态变量,必须使用功能块(FB)。
下面这张图是FB的编辑界面,其中Static栏就是用来声明静态变量的。
变量的声明还必须为其指定数据类型。明确了数据类型,编译器才知道需要为该变量分配多大的地址空间;明确了数据类型,才能知道该变量支持哪些指令。
更多关于数据类型的文章,可以在本站内部搜索一下。
欢迎扫描下方的二维码关注我们的微信公众号。
来源:本站| 大小:519KB| 下载次数:2722次
发表评论