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_Machine 和 FB_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方法 StateNumber 的 FBMachine.

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

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

  8. 声明功能块变量。

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

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

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

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

    应用程序编译没有错误。

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

    可以监控功能块实例 fb_A.

    _uml_img_cd_simple_monitoring.png