设计和开发
当您在类图中以图形方式编程时,您的更改会自动导致对类图中对象的适应 POU 查看和 设备 看法。新对象被插入到它们的基本结构中,并且现有对象被调整。例如,您可以通过类图在 POU 中插入声明。
这允许您在类图中设计应用程序的体系结构并同步获取合适的 POU。然后补充 POU 中的实现。
以下步骤为应用程序创建类图。
1. 创建项目
打开 CODESYS.
点击
.指定名称和位置,然后选择 标准项目 模板。
这 标准项目 对话框打开。
为了 PLC_PRG 输入, 选择 结构化文本 (ST) 实现语言。
项目已创建。
选择 应用 代码并点击 .
这 添加 UML 类图 对话框打开。
指定对象名称
CD_Simple
。选择 将项目结构导入活动类图 选项。
点击 添加.
将项目另存为
SimpleMachine.project
.
2. 识别接口
接口确定公开可见的方法和属性以实现类。
打开类图的编辑器
CD_Simple
.在里面 工具箱 查看,选择一个界面。
将界面拖到编辑器中。
这 添加接口 对话框打开。
指定名称
IBaseMachine
.点击 添加 退出对话框。在里面 工具箱 查看,选择一种方法。
将方法拖到界面中。
这 添加接口方法 对话框打开。
指定名称
DoIt
.指定返回类型
BOOL
.点击 添加 退出对话框。在里面 工具箱 查看,选择一个属性。
将属性拖到界面上。
这 添加接口属性 对话框打开。
指定名称
StateNumber
.指定返回类型
INT
.点击 添加 退出对话框。
3. 识别类并实现接口
实现相同接口的不同类包含相同的方法和属性。如果稍后更改或扩展接口,那么这将影响所有实现类。
打开类图的编辑器
CD_Simple
。在里面 工具箱 查看,选择一个类。
将类拖到编辑器中。
这 添加POU 对话框打开。
指定名称
FB_Machine
。选择 功能块 选项。
对于实现语言,选择 UML 状态图 (SC).点击 添加 退出对话框。
班上
FB_Machine
被添加到类图中。选择班级。
命令图标显示在类上方。
点击
实现 (
IMPLEMENTS
) 命令图标,然后单击IMachine
界面。这 选择实现语言 对话框打开。
选择 结构化文本 (ST).
班上
FB_Machine
继承了接口的属性和方法,因此实现了接口IMachine
.
4. 概括
一般来说,一个类继承另一个类的属性和方法。
打开类图的编辑器
CD_Simple
.在里面 工具箱 查看,选择一个类。
将一个类拖到编辑器中。
这 添加 POU 对话框打开。
指定名称
FB_Machine_A
.选择 扩展 选项并指定类
FB_Machine
在输入字段中。功能块
FB_Machine
被扩展,因此它是FB_Machine_A
.对于实现语言,选择 UML 状态图 (SC).点击 添加 退出对话框。
班上
FB_Machine_A
在类图中创建。类之间存在泛化FB_Machine
和FB_Machine_A
.FB_Machine_A
继承其属性和方法FB_Machine
.在里面 工具箱 查看,选择 变量声明 元素并将其拖到类中
FB_Machine_A
.这 申报变量 对话框打开。
指定名称
iCounter
和数据类型INT
.点击 好的 退出对话框。现在上课
FB_Machine_A
除了继承的属性和方法之外,还有自己的变量。在课堂里
FBMachine_A
, 选择方法DoIt()
并按下 德尔 钥匙。从图中删除该方法,以及从图中删除的对象 设备 看法。继承功能块
FBMachine_A
该方法不需要自己的特殊实现。相反,它调用方法DoIt
基本功能块FBMachine
必要时。注意
当您调用分配给基本功能块并继承的方法时,请使用指针
SUPER
.
5. 实例化
打开类图的编辑器
CD_Simple
.选择程序
PLC_PRG
.命令图标显示在程序上方。
点击
作品 (
VAR
) 命令图标,然后单击FB_Machine_A
班级。这 变量声明 对话框打开。
指定名称
fb_A
.物体
fb_A
班级的FBMachine_A
被实例化。现在,具体形式的类实例是在运行时生成的。
类图显示与生成应用程序代码相关的所有对象。然而,最重要的是,类图可视化了对象之间的关系:谁实现了谁?谁继承谁?谁实例化什么?否则,此信息将隐藏在声明中,例如在 设备 看法。
6. 实施
打开功能块
FBMachine
.声明功能块变量。
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iState: INT; iMachine : INT; END_VAR
实现功能块。
iState := iState + 1; // Dummy for control ID
实现它的方法
DoIt
.METHOD PUBLIC DoIt : BOOL iMachine := iMachine + 1; // Dummy
实现属性的Get方法
StateNumber
的FBMachine
.StateNumber := iState;
实现属性的Set方法
StateNumber
的FBMachine
.iState := StateNumber;
打开功能块
FBMachine_A
.声明功能块变量。
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iCounter: INT; END_VAR
实现功能块。
iCounter := iCounter + 1;
实现属性的Get方法
StateNumber
的FBMachine_A
.StateNumber := iCounter;
实现属性的Set方法
StateNumber
的FBMachine_A
.iCounter := StateNumber;
点击
.应用程序编译没有错误。
下载并启动应用程序。
可以监控功能块实例
fb_A
.