各种逻辑块中声明的变量或参数类型

描述

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

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

变量作为:
静态变量

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能够存取功能块的块参数。

 


审核编辑 :李倩

 


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

全部0条评论

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

×
20
完善资料,
赚取积分