gpt4 book ai didi

c++ - libnodave 与 S7-1200 通信

转载 作者:太空狗 更新时间:2023-10-29 12:31:58 29 4
gpt4 key购买 nike

这几天我一直在尝试使用 libnodave 作为通信库来与西门子的 S7-1200 PLC(CPU 1214C)进行通信。libnodave 库提供了一些东西。Delphi 应用程序正在运行,Windows 可执行文件正在运行。

在我运行 Linux 的 Vmware 上,testISO_TCP 的预编译二进制文件正在运行。看来我可以使用它,对吧?

daveInterface * di;
daveConnection * dc;
_daveOSserialType fds;
ds.rfd=openSocket(102, "192.168.0.1");
fds.wfd=fds.rfd;
if (fds.rfd>0) {
di =daveNewInterface(fds,"IF1",0, daveProtoISOTCP, daveSpeed187k);
daveSetTimeout(di,5000000);
dc =daveNewConnection(di,0,0,1); // insert your rack and slot here
if (0==daveConnectPLC(dc))
{
printf("Connected..\n");
}
}

但是当我将源代码 1:1 复制到我的 IDE (Eclipse) 时,我收到以下错误消息:

IF1 error in daveConnectPLC() step 1. retrying...IF1 error in daveConnectPLC() step 1. retrying...IF1 error in daveConnectPLC() step 1. retrying...Couldn't connect to PLC.
Please make sure you use the -2 option with a CP243 but not with CPs 343 or 443.

似乎在连接到 PLC 时出现了一些错误。以下函数会生成此错误:

DaveConnectPLC(dc)

请注意,与 Linux 中执行的二进制文件相比,机架和插槽没有变化!

有人能帮我让它在 Eclipse IDE 上运行吗?很奇怪所有的可执行文件/二进制文件都在工作,但是当我想直接从 IDE 执行它时却没有。

提前致谢。

最佳答案

首先,在虚拟机上运行与在真实计算机上运行不同。尽管源相同和/或使用相同的库,但它在 Windows 上运行并不能保证它在 Linux 下运行。基本上Linux下的预编译程序是它能运行的唯一证明。

每当我在这方面遇到问题时,我都会查看使用的编译器版本和编译器设置。使用调试选项运行代码因硬件通信损坏代码而臭名昭著。

如果您还没有使用过 Wireshark,我强烈建议您使用它。它是查看正在发生的事情的完美工具。

关于c++ - libnodave 与 S7-1200 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24039796/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com