跳到主要内容

CLASS 类语法

编译器支持在“全ST文件”中使用 CLASS 定义类,并通过成员变量、方法、继承和动态方法调用组织可复用的控制逻辑。

CLASS 类语法适用于全 ST 文件。类定义、类实例及使用类的 PROGRAMFUNCTIONFUNCTION_BLOCK 可以位于同一个 .st 文件,也可以拆分到多个全 ST 文件中。

支持的主要能力

  • 使用 CLASSEND_CLASS 定义普通类;
  • 使用 ABSTRACT CLASS 定义抽象类;
  • 使用 EXTENDS 建立单继承关系;
  • 使用 PUBLICPROTECTED 和默认私有访问权限;
  • 在类中定义成员变量和 METHOD
  • 使用 OVERRIDE 重写父类方法;
  • 使用 THIS 调用当前实例的方法,使用 SUPER 调用父类实现;
  • 声明普通实例、类数组、嵌套实例和类指针;
  • 在多个全 ST 文件之间引用类和派生类。

快速示例

PROGRAM Main
VAR
counter : cCounter := (Increment := 2);
result : DINT;
END_VAR

result := counter.Add();
END_PROGRAM

CLASS cCounter
VAR
Value : DINT;
END_VAR
VAR PUBLIC
Increment : DINT := 1;
END_VAR

METHOD PUBLIC Add : DINT
Value := Value + Increment;
Add := Value;
END_METHOD
END_CLASS

程序首次调用 counter.Add() 后,result 的值为 2。实例初始化列表中的 Increment := 2 会覆盖类成员声明中的默认值 1

编写位置

  1. 在项目树中展开“全ST文件”;
  2. 新建或打开 .st 文件;
  3. 在文件顶层编写 CLASSPROGRAMFUNCTIONFUNCTION_BLOCK 定义;
  4. 保存文件并重新编译项目。

语法说明

备注

类是全 ST 源文件中的语言对象,不会作为独立的图形化 POU 节点进行编辑。修改类定义后,需要重新编译使用该类的全 ST 文件和项目。