c#应用程序连接西门子S7-200

本文关键字:S7-200 西门子 连接 应用程序 | 更新日期: 2023-09-27 17:52:55

我有一个从PLC到PC获取数据的问题。我有S7-200和CP 243-1通信模块。

我需要从PLC读取数据。我读了很多关于libnodave库,并试图为自己写一个应用程序进行通信,并在模板上下载了Vb链接的样本。

在我的应用程序中,我得到异常错误

无法下载libnodave.dll。没有找到模块。

但是在项目的参考中我添加了libnodave.net.dll…我不知道。

我所有的尝试都失败了,也许有人知道如何使用libnodave或其他库来通信PC与PLC西门子S7-200。提前谢谢。

问候。

c#应用程序连接西门子S7-200

只是一个狂野的镜头,但libnodave.dll是一个本地DLL和libnodave.net.dll包装这个DLL吗?

那么您需要确保在搜索路径上找到libnodave.dll。理想情况下,您将DLL复制到项目的输出文件夹中,这样libnodave.dlllibnodave.net.dll都在同一个文件夹中。您可以通过将本机DLL添加到项目的根目录(而不是引用它,像普通现有文件一样添加它),将其构建类型设置为"none"answers"copy always"来自动做到这一点。这将确保DLL总是被复制到bin/debug或bin/release文件夹。

由于您不能将本机dll添加为。net项目的引用,因此开发人员可能会创建一个。net包装器,其中可以添加,但不能单独使用。它将通过P/Invoke调用本机DLL中的函数。


从"链接到模板"页面:

你需要复制libnodave.net.dll文件在你的PC和添加引用在VB。. NET项目属性。它实现了libnodave.dll和用MS . net语言编写的应用程序之间的桥接层。

这意味着我上面的猜测似乎是正确的。这两个dll都需要。页面继续显示:

同时将libnodave.dll拷贝到exe文件所在的目录下。


PS:请确保使用纠正位为您的项目。本机DLL可能是32位的,因此您可能必须将目标平台从"Any CPU"设置为"x86"才能使其工作。