1.1 从源代码构建和运行 4diac IDE

(1)获取开发环境

获取最新的 Eclipse IDE,使用 Eclipse Modeling Tools。

下载网站:Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects...

选择工作区间存储位置

 

(2)下载4diacIDE源码

需要 Git 使用克隆命令将其从 Git 下载到存储库 https://git.eclipse.org/r/4diac/org.eclipse.4diac.ide。如果您使用的是终端,请执行以下操作:

(3)将插件导入工作区

File -> Import -> General -> Existing Projects into Workspace -> Select root directory -> ../../org.eclipse.4diac.ide-2.0.1/plugins

导入结果展示

注意:导入需要一定的时间,不要着急操作(查看 Eclipse 主窗口右下角的进度条)

检查问题视图中的错误。如果收到 API 基线未设置错误,则需要执行以下步骤:

Window → Preferences -> 搜素API -> 选择API Baselines -> 设置 Missing API Baseline为Ignore -> Apply ->Apply and Close。

(4)设置目标平台

在 org.eclipse.fordiac.ide.product 插件中打开 Eclipse 首选项

等到目标平台解析完毕,或按“重新加载”并等待解析(第3步可忽略),这个过程时间比较长,需耐心等待。

按右上角的设置为目标平台,然后等待,直到构建工作区。

(5)在开发模式下运行

org.eclipse.fordiac.ide.product -> org.eclipse.fordiac.ide.product ->  Overview ->  Synchronize 。要直接在此(开发)Eclipse下使用4diac IDE,您需要一个类型库和模板。

将../../org.eclipse.4diac.ide-2.0.1/data/template(模板)、typelibrary(类型库)文件夹复制到 ../../.metadata/.plugins/org.eclipse.pde.core/.bundle_pool 目录中。以上操作结束后点击Overview中的 Launch an Eclipse application选项。

1.2 自建功能块的创建、编译和测试

功能块(FB)可分为基本功能块、简单功能块、复合功能块和服务功能块等不同类型,本小节介绍了如何创建、编译和测试自定义的功能块 (FB)。新创建的FB可在 FB Palette 中用于系统的应用程序中。

当所需的功能不在库 FB中,或该功能可以由多个 FB 组合成一个 FB 实现时,我们需要创建新的 FB。我们需要定义接口,其输入、输出事件、数据以及定义FB 内部运行算法。本节以第二章中的实现的Blinking功能作为示例,介绍如何创建、使用不同类型的功能块完成同样的功能。

1.2.1创建基本功能块

通过“文件---新建---新类型”创建一个新的功能块,我们选择 BlinkTest 作为父文件夹。为新的 FB 选择一个名称,我们将其命名为BasicTest。然后,选择您要创建的 FB 类型,在本例中我们选择TemplateBasic。功能块类型编辑器(FBT 编辑器)在单击完成后打开。

点击完成,进入编辑功能块界面。

由编辑功能块界面可以看到,TemplateBasic FB 已经有一些常用的输入和输出。如果需要其他的元素,只需将其从 Palette 拖放到 FB 或右键单击 FB 设置,也可以通过按 Delete 键或右键单击删除来删除不需要的部分。

要实现闪烁功能块,我们需要有一个输入事件作为触发条件,一个输出事件更改指示符,以及一个布尔数据输出值代表状态。默认情况下,布尔输出设置为false并记住该状态,直到有新事件出现,将布尔值转换为true,下一个新事件出现时状态将再次发生改变。因此,我们需要改变当前TemplateBasic FB 的输入和输出。

选择 INIT、 QI 和 INITO事件并将其删除,选择 QO 输出,并通过双击它或在下面的属性中将其名称更改为 STATE。可以在属性中更改每个事件和数据的注释。检查属性中的状态类型是否为 BOOL。

WITH代表事件和数据之间的连接关系线。它们指示事件发生时哪些数据输出,或数据输入,在当前的闪烁功能块中,没有数据输入。由于触发 CNF 时状态会更改,因此CNF与STATE它们之间有一条 WITH 线。尝试将事件和不同类型的数据输入和输出添加到界面中,如图所示。

选择ECC(执行控制图)选项卡在中央编辑区的底部,点击ECC我们将看到一个状态机图表。这是TemplateBasic FB默认功能块行为,我们可以在此处实际编码功能块的行为。紫色框为状态,黄色为功能块进入状态时执行的算法,粉色为算法后触发的事件。它们之间的箭头表示到达功能块的事件,箭头可以携带触发下一个状态的条件。“1”意味着它总是会在算法之后改变状态。一次只消耗一个事件。

为实现闪烁功能,我们选择并删除除START状态之外的所有内容(单击并拖动)。从右侧的 Palette 拖放,添加一个 State。通过双击它或选择然后编辑下面的属性将其名称更改为On,添加另一个 State 并将其命名为Off。通过从 Palette 中拖放或右键单击 Add Action 将Action 添加到状态On 。

通过单击中央编辑区域的背景不选择任何内容,然后在属性视图中选择算法选项卡。在这里,我们可以看到功能块的所有默认算法。通过选择并单击红叉将它们全部删除,通过单击绿色加号添加一种算法。选择名称并将其更改为turnOn。

根据所选算法类型,提供不同的算法编辑器。目前,最常用的算法语言是 IEC 61131-3 结构化文本 (ST)。ST 编辑器提供语法高亮和代码完成。此代码会转换为 4diac FORTE 代码。

在右侧编写代码。在turnOn算法中,我们将 STATE 变量设置为 TRUE。通过单击绿色加号添加另一个算法。选择名称并将其更改为turnOff。在turnOff算法中,我们将您的 STATE 变量设置为 FALSE。

双击On状态动作的黄色框,选择turnOn算法。双击On状态动作的绿色框,选择CNF输出事件。双击Off状态的action的黄色框,选择turnOff算法。双击关闭状态动作的粉色框,选择CNF输出事件。

通过拖放从START到状态On绘制过渡。选择它,然后在属性视图的转换选项卡中选择条件REQ。可以添加条件(例如,如果 STATE == TRUE 或类似条件)但在闪烁例子中,除了REQ事件之外不需要任何条件。通过拖放绘制状态On与状态Off的过渡,然后在属性视图的转换选项卡中选择条件REQ。

 

因此,可看到 ECC 的工作方式。开始时,FB 处于 START 状态。当一个 REQ 事件到达时,它会跳转到On状态,执行算法turnOn并触发CNF输出事件。当下一个事件到来时,跳转到Off状态,执行算法turnOff并触发CNF输出事件。

1.2.2创建一个简单的功能块

Simple FB 只有一种算法,没有 ECC。同上,我们选择 BlinkTest 作为父文件夹,为新的 FB 选择一个名称为SimpleTes,选择Simple。在单击完成后打开FBT 编辑器。

同1.2.1改变界面。

选择中央编辑区域底部的算法选项卡,定义 Simple FB 的算法。

1.2.3创建服务功能块

同上,我们选择 BlinkTest 作为父文件夹。将新的 FB将命名为ServiceInterfaceTest。选择要创建的 FB 类型ServiceInterface。单击完成后打开FBT 编辑器。

同5.2.1一样改变界面。

服务功能块的行为必须直接在由它生成的代码中实现,需要为每个传入事件实现功能,管理内部变量并在导出后自行发送输出事件。闪烁实例的代码如下:

void FORTE_ServiceTest::executeEvent(int pa_nEIID){

switch(pa_nEIID){

case scm_nEventREQID:

st_STATE() = !st_STATE();

sendOutputEvent(scm_nEventCNFID);

break;

}

}

1.2.4功能块的导出

4diac IDE 提供了一个导出过滤器来生成可以包含在 4diac FORTE 开发过程中的 C++ 代码。导出功能块类型有两种方式:

A:选择file→export→4diac IDE→4diac IDE Type Export→next

B:右键单击要导出的功能块并选择export → 4diac IDE → 4diac IDE Type Export

点击next后,在右侧选择要导出的 FB。自建功能块与系统自带功能块导出步骤相同,为了更好的编译,我们选择ext_modules/EXAMPLE_TEST为导出文件夹。选择导出器,导出我们需要的功能块,这里我们选择刚刚创建的四种功能块类型。

1.2.5自建功能块的编译

创建和导出自己的功能块后,需要将功能块添加到编译中。在上文中,我们创建了文件夹ext_modules/EXAMPLE_TEST(最好是这个名称,方便系统能够访问到模块),包括每个自定义FB的.cpp、.h文件和CMakeLists.txt的文件

同第三章,我们对FORTE源码进行编译,在 CMake 中,源代码文件夹仍然是 FORTE_DEV,FORTE_EXTERNAL_MODULES_DIRECTORY的变量。将此设置为ext_modules文件夹。再次按配置时,将出现一个名为FORTE_MODULE_EXTERNAL_EXAMPLE_TEST的变量。在编译选项中选中该模块。

点击configure,和之前一样,没有红色出现时,点击generate,在visual studio2022中打开,然后单击Build来构建 4diac FORTE。

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。