使用集成C代码插件,可以在MetaFacture工程中包含外部实现的C代码文件,可以从IEC对象生成C存根。
在MetaFacture中,C代码模块对象类型可用于此目的。C代码文件和使用的IEC对象位于C代码模块的下面。硬盘上的一个文件目录与C代码文件被分配给每个C代码模块。
在这个项目中,您可以从C代码文件中以*.h或*.hpp的格式生成IEC对象(头文件),以便在其他POUs中使用它们。
生成c存根的目的是为了以下用例:
- C代码文件访问IEC对象: C代码文件不能直接访问IEC对象。它只能访问由IEC对象生成的C存根。
 - 生成可合并到库工程中的预编译模块。
 
导入后,导入的源代码文件是MetaFacture项目的一部分,因此它们与磁盘上的原始文件解耦。
在编译期间,从C代码模块生成一个动态模块,并将其保存为项目的一部分。信息、警告和错误显示在C代码模块类别的消息视图中。
在下载过程中,应用程序的所有动态模块都被传输并加载到Runtime系统。Runtime系统必须为此支持动态链接。
注意:Runtime系统的许可证
Runtime系统需要一个允许加载C模块的许可证。没有此许可证,动态模块在下载期间无法链接,因此下载将被中止。
动态模块是启动应用程序的一部分,它们在控制器重新启动时被重新加载和激活。Reset Origin命令卸载应用程序中的所有C代码模块。冷复位和热复位命令不会导致C代码模块的重复初始化。
提示:没有C代码的模拟模式!
在模拟模式下,不生成C代码并将其加载到runtime系统。为了模拟C模块中包含的代码,您可以在C代码模块的各个IEC对象中实现这一目标。
MetaFacture不支持在C代码文件中监视变量或在C源代码中设置断点。
库中预编译模块:
C代码集成提供了分配预编译Runtime模块的功能(例如: *.dll)在库中保存一个设备,然后将其保存在库中。然后,可以动态加载这些模块。
配置C代码模块
要求:打开的项目已经包含一个
C代码模块。
1.单击设备树中的
工程C代码模块。
2.右键菜单中选择属性命令
3.在属性对话框中打开编译标签。
4.指定计算机上Visual Studio安装的文件路径。输入助手( 
)和搜索工具(放大镜)也可用。
5.指定安装在计算机上的MS Windows SDK的文件路径。输入助手( 
)和搜索工具(放大镜)也可用。
6.指定用于MetaFacture存储临时编译文件的文件路径。
从文件目录导入包含C源文件的文件夹
要求:一个工程是开放的。工程控制器支持C代码的集成。
1.在设备树中选择Application点击工程 ➔ 添加对象 ➔ C代码模块。
2.如果需要,在添加C代码模块对话框中为您的C代码模块指定一个新名称。如果您不这样做,那么您的对象将被赋予标准名称C代码模块。
3.单击源目录输入字段旁边的符号(
)。
4.打开查找文件夹对话框。
5.在查找文件夹对话框中,选择包含C源文件的文件夹 (*.c, *.cpp, *.h, or *.hpp)。
6.当选择用于源代码更改的监视文件夹选项时,MetaFacture将在对文件系统选定文件夹中的C源文件进行更改时显示一条消息。
7.点击添加。
⇒MetaFacture使用文件夹扩展名、IEC接口和源文件将C代码模块插入到设备树中。
8.在设备树中,单击源文件文件夹的加号(+)。⇒在打开文件夹中列出了导入的C源文件。
9.如果双击其中一个C源文件( 
),则C代码文件将在编辑器中打开。
导入单独的C代码文件
要求:打开的项目已经包含一个
C代码模块。
1.单击设备树中的
工程C代码模块。
2.点击工程 ➔ 添加对象 ➔ C代码文件。
3.在添加C代码文件对话框中,使用输入助手( 
)在 *.c,*.cpp,*.h,或*.hpp格式中选择一个文件,然后单击添加。
⇒MetaFacture将选择的C代码文件插入到
C代码模块下面的设备树中。
4.如果双击设备树中的新C代码文件(
),它将在编辑器中打开以进行修改。
生成空的C代码文件
要求:打开的项目已经包含一个
C代码模块。
1.单击设备树中的
工程C代码模块。
2.点击工程 ➔ 添加对象 ➔ C代码文件。
3.在“添加C代码文件”对话框中,使用适当的文件扩展名指定新C代码文件的名称,然后单击“添加”。
⇒MetaFacture将选择的C代码文件插入到
C代码模块下面的设备树中。
4.如果双击设备树中的新C代码文件(
),它将在编辑器中打开以进行修改。
将C代码文件转换成IEC对象,在应用程序中用作编程对象 
要求:打开的项目包括
C代码模块和
C代码文件。例如,C代码文件包含以下C代码: int adder(int a, int b);
1.单击
文件扩展名为*.h的C代码文件。在例子中,他是test.h文件。
2.点击编译 ➔ C-Integration ➔ 创建IEC接口
⇒创建C接口对话框打开并列出文件test.h及其函数adder (int, int)。导入时激活了这两个变量。
3.点击导入。
4.MetaFacture生成adder (FUN)函数并将其作为对象插入设备树中的IEC接口文件夹中。
5.当您双击adder (FUN)对象时,它将在编辑器中打开。
⇒包含以下声明部分:
 
6.现在可以在POU的实现部分调用adder函数(例如:adder (diVar1, diVar2);)。
创建C存根
要求:打开的项目包含一个
C代码模块。一个POU被添加到C代码模块,这个POU已经实现了代码。
1.在设备树中,选择C代码模块下面的POU,然后单击 C-Integration ➔ Create Stub Implementation in C。
⇒MetaFacture创建对象iec_external.c和iec_external.h,并将它们添加到设备树中的扩展文件夹。
 在消息视图(C代码模块类别)中,您将发现一条消息,说明已经成功创建了一个m4文件。
注意:当您在单击在C中创建存根实现时,应用程序将自动编译。如果过程中出现错误,则这些错误将在消息视图中显示。另外,请监视C代码模块类别中的消息。
将预编译的Runtime模块分配给设备并将其保存到库中
要求:在MetaFacture中一个库(*.library)是打开的。
1.点击视图 ➔ POUs。
⇒POUs视图打开并显示库项目及其对象。
2.选择库工程并且点击工程 ➔ 添加对象 ➔ C-Implemented库。
3.在添加C-Implemented库对话框中点击添加。
⇒MetaFacture将对象
C实现的库添加到POUs视图。
4.双击
C Implemented库对象。
⇒对象在其编辑器中打开
5.在这个编辑器中点击添加。
⇒选择设备对话框打开。
6.在目标文件输入字段中,以*.dll或*.so格式指定可动态加载模块的名称。
 
提示!dll文件必须在其名称中包含库项目的标题。例如,如果库项目被命名为XYlib,那么对象文件必须被调用: 
7.在设备窗口中,选择用于分配目标文件的设备。
8.点击选择设备⇒MetaFacture在已编译组件的选项卡编辑器中显示已创建的设备文件分配。
9.保存库工程。