Skip to main content

设计和开发

当您在类图中以图形方式编程时,您的更改会自动导致对类图中对象的适应 POU 查看和 设备 看法。新对象被插入到它们的基本结构中,并且现有对象被调整。例如,您可以通过类图在 POU 中插入声明。

这允许您在类图中设计应用程序的体系结构并同步获取合适的 POU。然后补充 POU 中的实现。

以下步骤为应用程序创建类图。

1. 创建项目

  1. 打开 CODESYS.

  2. 点击 文件 → 新项目.

  3. 指定名称和位置,然后选择 标准项目 模板。

    标准项目 对话框打开。

  4. 为了 PLC_PRG 输入, 选择 结构化文本 (ST) 实现语言。

    项目已创建。

  5. 选择 应用 代码并点击 添加对象→UML类图.

    添加 UML 类图 对话框打开。

  6. 指定对象名称 CD_Simple

  7. 选择 将项目结构导入活动类图 选项。

  8. 点击 添加.

    _uml_img_cd_simple.png
  9. 将项目另存为 SimpleMachine.project.

2. 识别接口

接口确定公开可见的方法和属性以实现类。

  1. 打开类图的编辑器 CD_Simple.

  2. 在里面 工具箱 查看,选择一个界面。

  3. 将界面拖到编辑器中。

    添加接口 对话框打开。

  4. 指定名称 IBaseMachine.点击 添加 退出对话框。

  5. 在里面 工具箱 查看,选择一种方法。

  6. 将方法拖到界面中。

    添加接口方法 对话框打开。

  7. 指定名称 DoIt.

  8. 指定返回类型 BOOL.点击 添加 退出对话框。

  9. 在里面 工具箱 查看,选择一个属性。

  10. 将属性拖到界面上。

    添加接口属性 对话框打开。

  11. 指定名称 StateNumber.

  12. 指定返回类型 INT.点击 添加 退出对话框。

    _uml_img_cd_simple_imachine.png

提示

有关接口的更多信息,请参阅: 对象:接口对象:接口属性

3. 识别类并实现接口

实现相同接口的不同类包含相同的方法和属性。如果稍后更改或扩展接口,那么这将影响所有实现类。

  1. 打开类图的编辑器 CD_Simple

  2. 在里面 工具箱 查看,选择一个类。

  3. 将类拖到编辑器中。

    添加POU 对话框打开。

  4. 指定名称 FB_Machine

  5. 选择 功能块 选项。

  6. 对于实现语言,选择 UML 状态图 (SC).点击 添加 退出对话框。

    班上 FB_Machine 被添加到类图中。

  7. 选择班级。

    命令图标显示在类上方。

  8. 点击 _uml_icon_realization.png 实现 (IMPLEMENTS) 命令图标,然后单击 IMachine 界面。

    选择实现语言 对话框打开。

  9. 选择 结构化文本 (ST).

    班上 FB_Machine 继承了接口的属性和方法,因此实现了接口 IMachine.

    _uml_img_cd_simple_fbmachine.png

4. 概括

一般来说,一个类继承另一个类的属性和方法。

  1. 打开类图的编辑器 CD_Simple.

  2. 在里面 工具箱 查看,选择一个类。

  3. 将一个类拖到编辑器中。

    添加 POU 对话框打开。

  4. 指定名称 FB_Machine_A.

  5. 选择 扩展 选项并指定类 FB_Machine 在输入字段中。

    功能块 FB_Machine 被扩展,因此它是 FB_Machine_A.

  6. 对于实现语言,选择 UML 状态图 (SC).点击 添加 退出对话框。

    班上 FB_Machine_A 在类图中创建。类之间存在泛化 FB_MachineFB_Machine_A. FB_Machine_A 继承其属性和方法 FB_Machine.

  7. 在里面 工具箱 查看,选择 变量声明 元素并将其拖到类中 FB_Machine_A.

    申报变量 对话框打开。

  8. 指定名称 iCounter 和数据类型 INT.点击 好的 退出对话框。

    现在上课 FB_Machine_A 除了继承的属性和方法之外,还有自己的变量。

  9. 在课堂里 FBMachine_A, 选择方法 DoIt() 并按下 德尔 钥匙。

    从图中删除该方法,以及从图中删除的对象 设备 看法。继承功能块 FBMachine_A 该方法不需要自己的特殊实现。相反,它调用方法 DoIt 基本功能块 FBMachine 必要时。

    注意

    当您调用分配给基本功能块并继承的方法时,请使用指针 SUPER.

    _uml_img_cd_simple_fbmachine_a.png

提示

有关详细信息,请参阅 扩展功能块指针:超级.

5. 实例化

  1. 打开类图的编辑器 CD_Simple.

  2. 选择程序 PLC_PRG.

    命令图标显示在程序上方。

  3. 点击 _uml_icon_composition.png 作品 (VAR) 命令图标,然后单击 FB_Machine_A 班级。

    变量声明 对话框打开。

  4. 指定名称 fb_A.

    物体 fb_A 班级的 FBMachine_A 被实例化。现在,具体形式的类实例是在运行时生成的。

    _uml_img_cd_simple_plc_prg.png

类图显示与生成应用程序代码相关的所有对象。然而,最重要的是,类图可视化了对象之间的关系:谁实现了谁?谁继承谁?谁实例化什么?否则,此信息将隐藏在声明中,例如在 设备 看法。

6. 实施

  1. 打开功能块 FBMachine.

  2. 声明功能块变量。

    FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine
    VAR
        iState: INT;
        iMachine : INT;
    END_VAR
  3. 实现功能块。

    iState := iState + 1; // Dummy for control ID
  4. 实现它的方法 DoIt.

    METHOD PUBLIC DoIt : BOOL
    iMachine := iMachine + 1; // Dummy
  5. 实现属性的Get方法 StateNumberFBMachine.

    StateNumber := iState;
  6. 实现属性的Set方法 StateNumberFBMachine.

    iState := StateNumber;
  7. 打开功能块 FBMachine_A.

  8. 声明功能块变量。

    FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine
    VAR
     iCounter: INT;
    END_VAR
  9. 实现功能块。

    iCounter := iCounter + 1;
  10. 实现属性的Get方法 StateNumberFBMachine_A.

    StateNumber := iCounter;
  11. 实现属性的Set方法 StateNumberFBMachine_A.

    iCounter := StateNumber;
  12. 点击 构建 → 生成代码.

    应用程序编译没有错误。

    _uml_img_cd_simple_objects.png
  13. 下载并启动应用程序。

    可以监控功能块实例 fb_A.

    _uml_img_cd_simple_monitoring.png