配置 包含 资源任务 (在 资源 中定义), 全局变量访问路径 和实例初始化。下图为一个简单配置的图形示例:

@2x

功能块程序 的纲要声明如下:

@2x

配置,资源和访问路径

下表列举了声明配置、资源、全局变量、访问路径,以及实例化的特性。

编号 说明
1 CONFIGURATION...END_CONFIGURATION 构造
2 定义在CONFIGURATION中的VAR_GLOBAL...END_VAR构造
3 RESOURCE...ON...END_RESOURCE 构造
4 定义在RESOURCE中的VAR_GLOBAL...END_VAR构造
5a 周期性的TASK构造
5b 非周期性的TASK构造
6a 关联PROGRAMTASKWITH构造
6b 关联功能块与TASKWITH构造
6c 没有TASK关联的PROGRAM声明
7 VAR_GLOBAL中声明的直接表示变量
8a 直接表示变量与PROGRAM输入的连接
8b GLOBAL变量与PROGRAM输入的连接
9a PROGRAM输出与直接表示变量的连接
9b PROGRAM输出与GLOBAL变量的连接
10a VAR_ACCESS...END_VAR构造
10b 直接表示变量的访问路径
10c PROGRAM输入的访问路径
10d RESOURCEGLOBAL变量的访问路径
10e CONFIGURATIONGLOBAL变量的访问路径
10f PROGRAM输出的访问路径
10g PROGRAM内部变量的访问路径
10h 功能块输入的访问路径
10i 功能块输出的访问路径
11 VAR_CONFIG...END_VAR构造
12a RESOURCE声明中的VAR_GLOBAL CONSTANT
12b CONFIGURATION声明中的VAR_GLOBAL CONSTANT
13a RESOURCE声明中的VAR_EXTERNAL
13b RESOURCE声明中的VAR_EXTERNAL CONSTANT
  • RESOURCE...ON...END_RESOURCE中的ON限定符用来指定处理功能及其人机接口、传感器-执行器接口的类型。
  • VAR_GLOBAL的作用域限于声明它的 配置资源
  • VAR_ACCESS用于远程访问(IEC 61131-5),可以关联的变量有:全局变量、直接表示变量、任何 程序功能块 的输入、输出、内部变量。
  • VAR_CONFIG...END_VAR构造用于初始化符号表示的变量和位置未确定的(*表示)直接表示变量。

VAR_ACCESS的关联需要指出变量所处的完整层级;对于下列变量不可定义访问路径:VAR_TEMP,VAR_EXTERNAL,VAR_IN_OUT;访问路径可指定方向:READ_WRITE,READ_ONLY(默认)。 VAR_CONFIG不可对下列类型的实例初始化:VAR_TEMP,VAR_EXTERNAL,VAR CONSTANT,VAR_IN_OUT

下图给出了上述特性的示例:

CONFIGURATION CELL_1

    VAR_GLOBAL w: UINT; END_VAR 

    RESOURCE STATION_1 ON PROCESSOR_TYPE_1
        VAR_GLOBAL z1: BYTE; END_VAR 
        TASK SLOW_1(INTERVAL := t#20ms, PRIORITY := 2) ; 
        TASK FAST_1(INTERVAL := t#10ms, PRIORITY := 1) ;
        PROGRAM P1 WITH SLOW_1 :
            F(x1 := %IX1.1) ; 
        PROGRAM P2 : G(OUT1 => w,
            FB1 WITH SLOW_1, 
            FB2 WITH FAST_1) ;
    END_RESOURCE

    RESOURCE STATION_2 ON PROCESSOR_TYPE_2
        VAR_GLOBAL z2   : BOOL ;
            AT %QW5     : INT ;
        END_VAR
        TASK PER_2(INTERVAL := t#50ms, PRIORITY := 2) ;
        TASK INT_2(SINGLE := z2, PRIORITY := 1);
        PROGRAM P1 WITH PER_2 :
            F(x1:=z2,x2:=w) ; 
        PROGRAM P4 WITH INT_2 :
            H(HOUT1 => %QW5, 
                FB1 WITH PER_2);
    END_RESOURCE

    VAR_ACCESS
        ABLE    : STATION_1.%IX1.1  : BOOL READ_ONLY ;
        BAKER   : STATION_1.P1.x2   : UINT READ_WRITE ;
        CHARLIE : STATION_1.z1      : BYTE ;
        DOG     : w                 : UINT READ_ONLY ;
        ALPHA   : STATION_2.P1.y1   : BYTE READ_ONLY ;
        BETA    : STATION_2.P4.HOUT1: INT READ_ONLY ;
        GAMMA   : STATION_2.z2      : BOOL READ_WRITE ;
        S1_COUNT: STATION_1.P1.COUNT  : INT;
        THETA   : STATION_2.P4.FB2.d1 : BOOL READ_WRITE; 
        ZETA    : STATION_2.P4.FB1.c1 : BOOL READ_ONLY; 
        OMEGA   : STATION_2.P4.FB1.C3 : INT READ_WRITE;
    END_VAR

    VAR_CONFIG
        STATION_1.P1.COUNT : INT := 1; 
        STATION_2.P1.COUNT : INT := 100; 
        STATION_1.P1.TIME1 : TON := (PT := T#2.5s); 
        STATION_2.P1.TIME1 : TON := (PT := T#4.5s); 
        STATION_2.P4.FB1.C2 AT %QB25 : BYTE;
    END_VAR

END_CONFIGURATION

任务

任务 是可以调用一个程序组织单元集合的执行控制元素。可以是周期性地调用,也可以是当指定布尔变量上升沿发生时调用。

每个 资源 可以拥有任务的上限和任务执行间隔的精度是 实现相关 的。

任务对程序执行单元的控制应满足下列规则:

  1. 关联的程序组织单元应在任务的SINGLE输入的每个上升沿被调度。
  2. INTERVAL输入非零,关联的程序组织单元应被周期性调度,直到SINGLE非零。
  3. PRIORITY输入建立了相关联的程序组织单元的优先级,用于抢占式和非抢占式调度。
  4. 没有与TASK关联的program拥有最低的系统优先级。
  5. 功能块任务 关联后,其执行应受该任务的独有控制,而与其声明所在的程序组织单元无关。
  6. 没有直接与 任务 关联的程序组织单元应遵循程序组织单元的语言元素的正常求值顺序。
  7. 同一 程序 内功能块的执行应被同步,以保证并发的数据一致性。

任务的图形表示

         TASKNAME
       +---------+ 
       |  TASK   |
BOOL---|SINGLE   | 
TIME---|INTERVAL | 
UINT---|PRIORITY |
       +---------+

(* 周期任务 *)
           SLOW_1               FAST_1 
         +---------+          +---------+ 
         |  TASK   |          |  TASK   | 
         |SINGLE   |          |SINGLE   | 
t#20ms---|INTERVAL | t#10ms---|INTERVAL | 
     2---|PRIORITY |      1---|PRIORITY | 
         +---------+          +---------+

本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://harttle.land/2014/07/06/plc-config.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。