西门子SCL编程入门教程连载(2)-变量
上一篇文章我们对西门子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栏就是用来声明静态变量的。

变量的声明还必须为其指定数据类型。明确了数据类型,编译器才知道需要为该变量分配多大的地址空间;明确了数据类型,才能知道该变量支持哪些指令。关于数据类型,由于无法添加早期文章的链接,请到官网(https://www.founderchip.com)搜索一下。或者进入小程序【李工谈工控】,在搜索栏中搜索“数据类型”。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03
