Skip to main content

示例:第一步

产品CODESYS Application Composer

此示例展示了如何开始创建和使用模块CODESYS Application Composer为此,您将创建一个带有灯和开关的房间。

描述

本示例实现了一个简短的楼宇自动化场景:为房间配备照明灯和相应的开关。开关也可用作调光器。因此,照明灯也应支持不同的亮度等级。

  1. 准备工作

    创建新的CODESYS项目来自带有应用程序编写器的标准项目模板。选择AC_ModuleBase作为图书馆。

    _ex_ac_img_first_steps1.png
  2. 顶级模块Room

    在项目的POU池中添加一个新的模块声明。指定名称Room模块声明和关联的功能块。功能块还必须扩展AC.Module功能块定义在AC_ModuleBase图书馆。AC.Module功能块已经提供了许多不必覆盖的方法和属性。

    _ex_ac_img_first_steps2.png

    声明以关键字开头MODULE后跟模块名称和附加关键字IMPLEMENTED_BY以及实现该模块的功能块。具体来说,该功能块是Room刚刚创建的功能块。在大多数情况下,MetaData部分现已声明。

    有关所有参数和部分的详细信息,请参阅:模块编辑器

    因为Room在我们的例子中,模块是顶级模块,你声明Toplevel接下来的部分。在本节中,您将为全局变量列表定义一个名称,该列表包含生成后的顶层功能块的实例名称。之后,您仍然需要在Toplevel部分。这项任务Standard_Task在这个例子中。它被定义为MEDIUM任务并包含CREATE_IF_MISSINGUPDATE_IOS旗標。

    _ex_ac_img_first_steps3.png

    所有用作描述和图标占位符的图标和字符串(DescIcon_16, 和Icon_32参数)必须在文本列表和图像池中引用。因此,您需要创建相应的文本列表TL和一个图像池IP在包含所引用的图标和文本的POU池中。

  3. 子模块:Switch

    创建模块声明和相应的功能块,名称为Switch。此模块不是顶级模块,因此不需要Toplevel部分。与所有代表模块的功能块一样,Switch功能块还必须扩展AC.modules。 而且,Switch实现ISwitch接口,您也需要创建它。反过来,ISwitch接口扩展AC.IModule但并没有添加任何新的方法或属性。

    此外,开关需要输入信号才能识别按下状态。您可以在IO部分,使用xIn输入变量Switch功能块。此外,您需要一个参考时间来区分开关的两个功能:按下开关的持续时间tTimer启动调光功能——短按只会打开或关闭灯光。您可以定义输入变量tTimer作为模块的参数(Parameters部分)。这样,以后使用模块时就可以轻松设置时间。

    您定义变量xIntTimer作为输入Switch功能块,在其中设置 500ms 的初始值tTimer范围。

    _ex_ac_img_first_steps4.png

    您还需要扩展文本列表和图像池以显示描述。

  4. 子模块:SwitchSimple

    您创建的第二个开关模块是一个简单的开关,只有两个状态:开和关。为此,您需要创建一个模块声明和一个功能块,它们与现有开关仅在以下几点不同:参数和tTimer变量不是必需的。此外,您无需实现ISwitchISwitchSimple,这也延伸了AC.IModule

    _ex_ac_img_first_steps5.png
  5. 子模块:Light

    与之前的开关一样,对于灯,您也需要创建一个模块声明LightLight功能块和ILight界面。

    要插入Light房间下方的模块,您需要添加Slots部分到Light模块声明。在本节中,您将声明一个子节Slot_Multi,你称之为Lights并且可以容纳以下类型的模块ILight . 必须或可以添加到房间的灯的数量由Cardinality。您还可以定义变量VariableVar_Count并将它们链接到模块声明pLights(POINTER TO ILight)uiNumberOfLights (UINT)。这确保只有其功能块实现的模块ILight接口可以添加到Lights投币口。

    _ex_ac_img_first_steps6.png

    随着Light模块,你还定义了一个可以插入交换机的插槽。因此,你需要添加一个Switch插槽到Light模块声明。附加参数Light模块是调光器的速度rSpeed和最大亮度uiMaxValue最后,您需要定义一个表示灯光亮度的输出。您需要添加所有参数、插槽、输出以及Light功能块。

    _ex_ac_img_first_steps7.png
  6. 子模块:LightSimple

    你创建的最后一个模块是一个简化的灯,它与简单开关配合使用。为此,你需要一个模块声明和一个LightSimple功能块扩展AC.Module并实施现有的ILight接口。与Light模块如下:输出应为类型BOOL并有名字xSwitchedOn。此外,rSpeed参数不是必需的。

    _ex_ac_img_first_steps8.png
  7. 执行

    对于该功能的实现Switch模块,使用CallPrioMediumStart方法来自AC.Module并用其自身的实现覆盖它。选择此函数是因为Room顶级模块声明一个MEDIUM任务。这意味着CallPrioMediumStart方法Switch功能块会在任务的每个循环中自动调用。然而,开关的主要功能是区分开关和调光。按下开关后,计时器会启动,时间可以通过用户参数预设。当计时器计时结束,开关仍处于按下状态时,将应用调光功能,该功能由变量xPushLong . 变量xPush当开关按下很短时,为 TRUE。对于两个变量xPushLongxPush,属性被添加到Switch功能块和接口,以便可以从父级灯光功能块中使用它们。

    此外Light功能块覆盖CallPrioMediumStart方法。根据相应输入变量的值,灯光可以调暗或简单地打开/关闭。对于调光器,声明参数的速度值rSpeed被使用。达到最大或最小调光值后,调光停止。如果灯处于调光状态,按下开关,灯就会亮。

    您可以在示例项目中看到可能的实现。

  8. 工程

    您可以在模块视图。为此,首先添加Room模块导入后,将顶层模块添加到模块树中。在Lights插槽,添加一个Light和一个LightSimple . 为每个SwitchSwitchSimple然后,您可以设置模块实例的参数和 I/O。出于测试目的,建议将输入和输出链接到全局变量列表中的变量。

    最后,使用作曲家创造命令创建项目。下载到设备后,您可以根据需要测试示例。您还可以改变房间的布局,而无需修改代码或模块。您还可以修改模块实例参数的值并检查其效果。参数值可以在离线和在线模式下更改。

    _ex_ac_img_first_steps9.png

系统要求和限制

编程系统

CODESYS Development System(版本 3.5.17.0 或更高版本)

运行时系统

CODESYS Control Win(版本 3.5.17.0)

附加组件

CODESYS Application Composer

注意

_example_icon.png下载项目