苏州实操派科技有限公司官网-实操派教育科技,汇川技术PLC培训,实操派PLC培训,苏州PLC培训机构

如何在CODESYS中调用DLL文件?

[复制链接]
1 623

附件下载,需登录可以查看贴内更多信息

您需要 登录 才可以下载或查看,没有账号?立即注册

x
文章大纲:

一、前置知识
1. CODESYS概述
2. DLL文件的概念和作用

二、CODESYS中调用DLL文件的方法
1. 创建DLL函数声明接口
2. 在CODESYS中创建一个CODESYS工程
3. 引入DLL文件
4. 声明和使用函数

三、代码实例讲解
1. 创建DLL文件
2. 在CODESYS中调用DLL文件的函数
3. DLL文件调用CodeSys函数


一、前置知识

1. CODESYS概述

CODESYS是一款非常优秀的自动化开发平台,可以广泛应用于工业控制、智能建筑、生产管理、机器人技术等领域。CODESYS在国际上被广泛接受,并被用作自动化系统编程的主要工具。

2. DLL文件的概念和作用

DLL文件,全称为“Dynamic Link Library”,即动态链接库,是一种Windows操作系统下的共享库。多个程序可同时从同一个DLL文件中调取函数或者变量,实现代码复用和节省内存等功能。在CODESYS中,调用DLL文件可以方便地扩展其功能。

二、CODESYS中调用DLL文件的方法

1. 创建DLL函数声明接口

首先,在Visual Studio中创建C++的动态链接库项目,并在其中添加需要用到的函数。

例如,我们可以写一个简单的DLL库,包含一个输出整数的函数。

```cpp
#include <iostream>
using namespace std;

// 定义输出整数的函数
extern "C" __declspec(dllexport) void add(int a);

void add(int a)
{
    cout << "The result is" << a << endl;
}
```

其中,extern "C" __declspec(dllexport)可以让编译器知道这是一个导出函数,而__declspec(dllexport)则是指导出函数的特殊标记。

2. 在CODESYS中创建一个CODESYS工程

在CODESYS中创建一个CODESYS工程,并将其保存到相应的目录中。为了便于管理和使用,可以在工程中创建一个专门存放DLL文件和头文件的文件夹。

3. 引入DLL文件

在CODESYS工程的外部目录中建立一个DLL文件夹,将编译好的DLL文件拷贝到该目录下。在CODESYS工程中打开PLC_PRG,然后右键单击“Libraries”,选择“Add Library...”来引入相关的库文件。

4. 声明和使用函数

代码示例:
```cpp
PROGRAM PLC_PRG
VAR
    iNum : INT := 10;
END_VAR
FUNCTION_BLOCK DLL_FUNCTION_CALL
VAR
    add : EXTERNAL (PUBLIC) void; // 声明add函数
    LIBRARY : EXTERNAL Library := 'DllFolderMyDll.dll'; // 引用DLL文件
END_VAR
```

在这个示例中,首先定义了一个名为iNum的INT变量,在DLL_FUNCTION_CALL中声明了add函数,并通过LIBRARY变量引入MyDll.dll文件。

接下来,在DLL_FUNCTION_CALL的FB_Init方法中调用add函数,将iNum作为参数传入。完整代码如下:

```cpp
PROGRAM PLC_PRG
VAR
    iNum : INT := 10;
END_VAR
FUNCTION_BLOCK DLL_FUNCTION_CALL
VAR
    add : EXTERNAL (PUBLIC) void; // 声明add函数
    LIBRARY : EXTERNAL Library := 'DllFolderMyDll.dll'; // 引用DLL文件
END_VAR

FB_INIT()
    add(iNum); // 调用add函数
END_FB
```

三、代码实例讲解

1. 创建DLL文件

我们先在Visual Studio中创建一个名为“AddFunc”的DLL项目,通过以下代码实现两数相加的功能。

```cpp
#include <iostream>
using namespace std;

// 定义add函数,进行两个数相加并输出结果
extern "C" __declspec(dllexport) int add(int a, int b)
{
    int result = a + b;
    cout << "The result is: " << result << endl;
    return result;
}
```

编译成功后,在Debug目录下可以找到AddFunc.dll。

2. 在CODESYS中调用DLL文件的函数

接下来,我们在CODESYS中创建一个工程,并新建PLC_PRG。在Main中添加如下代码。

```cpp
PROGRAM PLC_PRG
VAR
    cAddFunc : AddFunc_LIB; // 引入AddFunc.dll
    iResult : INT;
END_VAR

// 引用DLL文件
FUNCTION_BLOCK AddFunc_LIB
VAR
    AddFunc : EXTERNAL (PUBLIC) INT; // 声明AddFunc函数
    LIBRARY : EXTERNAL Library := 'DebugAddFunc.dll'; // 引用DLL文件
END_VAR

FB_Init()
    iResult := cAddFunc.AddFunc(1, 2); // 调用AddFunc函数
END_FB
```

在该代码示例中,我们首先引用了相应的库文件AddFunc.dll,并在AddFunc_LIB中声明了AddFunc函数。然后在FB_Init方法中调用AddFunc函数,并将1和2作为参数传入,最后将结果保存在iResult变量中。

3. DLL文件调用CodeSys函数

有时候,在DLL文件中需要调用CODESYS中的API函数,可以使用CODESYS提供的API声明来实现。

例如,在CODESYS中可调用的Sleep函数的声明如下:

```cpp
#include <bur/plctypes.h>

void OS_Sleep(unsigned long msTime);
```

因此,在DLL文件中就可以直接使用该函数了。

```cpp
extern "C" __declspec(dllexport) int AddFunc(int a, int b)
{
    int result = a + b;
    cout << "The result is: " << result << endl;
    OS_Sleep(1000); // 调用CODESYS中的Sleep函数
    return result;
}
```

以上就是如何在CODESYS中调用DLL文件的方法和实例讲解。希望对大家有所帮助。

________________________________________________________________________

免责声明:本文非官方发布,内容真实性请注意甄别,文章内容仅供参考。本站不对内容真实性负责,请悉知!本站不对内容真实性负责,请悉知!。我们专注于汇川技术产品培训,官网https://shicaopai.com
回复

使用道具 举报

shicaopai 2023-8-4 05:06:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

"π³ 实操派",培养中高端PLC工程师,PLC培训-Codesys培训

项目实战 手把手教学 微信&电话 15850116008
超2000节系统化课程,汇川优秀自动化讲师亲授!学一门Codesys,玩800家PLC仅剩少量名额
点击免费试听

到实操派,学PLC就是快!

扫码领取工控文库VIP

钻石VIP先到先得

服务电话 & 微信:9:00-22:00

15850116008

苏州实操派科技有限公司

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

Copyright © 苏州实操派科技有限公司 2022 到实操派,学PLC就是快!工业自动化业务培训适用人群:成人 ( 苏ICP备2022021576号-3 )

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

返回顶部