西门子SCL逻辑块中声明的变量或参数类型

描述

每类本地变量或参数,都有用各自关键字对标识的自己的声明子域。每个子域包含允许的详细的声明子域,子域可按任何顺序定位。

下表显示能够在各种逻辑块中声明的变量或参数类型。

变量作为:

静态变量VAR

...

END_VAR

临时变量VAR_TEMP

...

END_VAR

块参数作为:

输入参数VAR_INPUT

...

END_VAR

输出参数VAR_OUTPUT

...

END_VAR

输入/输出参数VAR_IN_OUT

...

END_VAR

静态变量

静态变量是本地变量,块运行时其值被保留。用来保存功能块的值,并包含在相应实例数据块中。

句法(Syntax)

静态变量在VAR / END_VAR声明区内声明。该声明子域是FB声明部分的一部分。编译之后,该子域和块参数子域决定了指定的实例数据块的结构。

在该子域能够:

建立变量,指定变量的数据类型和初始化变量。

如果要在当前FB中作为本地实例调(其他的)FB,则将一个被调用的FB声明为静态变量。

例子(Example)

VAR

RUN :INT;

MEASARR :ARRAY [1..10] OF REAL;

SWITCH :BOOL;

MOTOR_1,MOTOR_2 :FB100; // 实例声明

END_VAR

存取(Access)

从如下代码部分存取变量:

块内存取(Access within the block):在功能块的代码部分能够存取在声明部分声明的变量。详细的解释在标题为“赋值语句(Value Assignment)”节。

用实例DB进行外部存取(External access using the instance DB): 用索引存取能够从其他块存取变量,如DBx.变量。

临时变量

Temporary Variables

临时变量在本地属于逻辑块,不产生静态内存区域,他们位于CPU的堆栈里。本块正在运行时,其值才被保留。临时变量不能从声明它的块外存取。一个OB、FB或FC首次执行前,临时变量的值是不确定的。也不能被初始化。

如果只要求在OB、FB或者FC执行时记录中间结果,可以声明临时数据。

句法(Syntax)

临时变量在VAR_TEMP / END_VAR声明部分里声明。该声明部分是FB、FC或OB的一部分。通过变量声明以声明变量名和数据类型。

例子(Example)

VAR_TEMP

BUFFER 1 : ARRAY [1..10] OF INT ;

AUX1, AUX2 : REAL ;

END_VAR

存取(Access)

变量总是从逻辑块的代码部分存取,变量是在声明部分声明的(内部存取)。参见题为“赋值语句(Value Assignment)”节。

块参数

Block Parameters

参数是占位符,块被实际地调用时才指定一个值。在块里声明的占位符认为是指派了作为实际参数的值的形式变量。且参数提供了一个块间交换信息的机制。

块参数的类型(Types of Block Parameters)

被实际参数指定的形式输入参数(数据流入块)。

形式输出参数用来传递输出参数(数据 从块流出)。

有输入和输出参数功能的形式输入/输出参数。

句法(Syntax)

在功能块或函数的声明部分制作形式参数的声明,根据在三种声明子域内的参数类型组合参数。在变量声明中,指定参数名和数据类型。初始化只可能对一个FB的输入和输出参数。

声明形式参数时,不仅只能用基本的、复杂的和用户定义数据类型,也可用参数数据类型。

例子(Example)

VAR_INPUT // 输入参数

MY_DB : BLOCK_DB ;

CONTROLLER : DWORD ;

TIMEOFDAY : TIME_OF_DAY ;

END_VAR

VAR_OUTPUT // 输出参数

SETPOINTS: ARRAY [1..10] of INT ;

END_VAR

VAR_IN_OUT // 输入/输出参数

SETTING : INT ;

END_VAR

存取(Access)

块参数可从逻辑块的代码部分进行存取如下:

内部存取: 从在其声明部分已经声明该参数的逻辑块的代码部分存取。在题为“赋值语句(Value Assignment)”和“表达式、操作和地址(Expressions, Operations and Addresses)”节有解释。

用实例数据块外部存取: 用特定的DB能够存取功能块的块参数。

责任编辑:haq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分