我已经使用 libnodave 库建立了与 Siemens S7-300 PLC(通过 PlcSIM 模拟)的连接。连接 PLC 并将数据写入 PLC 没有问题。但是,我无法从开始/停止更改 PLC 的状态。我正在尝试使用以下 libnodave 方法来执行此类操作:
int daveStatus = daveStart(dc);
int daveStatus = daveStop(dc);
两个函数调用返回相同的错误:33794
nodave.c
引用错误如下:
case 0x8402:返回“CPU already in RUN or already in STOP?”;
daveStart()
和daveStop()
函数的使用可以查看示例testS7online.c
:
if(doStop) {
daveStop(dc);
}
if(doRun) {
daveStart(dc);
}
在示例中,启动/停止功能仅在与 PLC 建立 MPI 连接时调用。有谁知道启动/停止功能是否支持用于 TCP 连接?如果是这样,关于什么可能导致我的错误有什么建议吗?
最佳答案
我刚刚使用 libnodave 8.4 和 NetToPlcSim 工具尝试了 dc.start() 和 dc.stop()。它工作得很好。可能您没有使用通过 TCP/IP 连接到 PLCSim 的 NetToPlcSim 工具(显然是 127.0.0.1 端口 102),因此 dc 甚至无法连接。因此,如果您的线路不起作用,那么您一定做错了什么。
关于c++ - Libnodave - 使用 TCP 连接的 daveStart() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19958712/