【问题标题】:Libnodave - daveStart() Error using TCP ConnectionLibnodave - daveStart() 使用 TCP 连接时出错
【发布时间】:2013-11-26 08:17:19
【问题描述】:

我已经使用 libnodave 库与 Siemens S7-300 PLC(通过 PlcSIM 模拟)建立了连接。将数据连接和写入 PLC 没有问题。但是,我无法从 Start/Stop 更改 PLC 的状态。我正在尝试将以下 libnodave 方法用于此类操作:

int daveStatus = daveStart(dc);
int daveStatus = daveStop(dc);

两个函数调用返回相同的错误:33794

nodave.c 引用错误如下:

案例 0x8402:返回“CPU 已处于 RUN 或已处于 STOP 状态?”;

daveStart()daveStop()函数的使用可以看例子testS7online.c

if(doStop) {
    daveStop(dc);
}
if(doRun) {
    daveStart(dc);
}

在示例中,仅当 MPI 连接到 PLC 时才会调用启动/停止功能。有谁知道 TCP 连接是否支持启动/停止功能?如果是这样,关于可能导致我的错误的任何建议?

【问题讨论】:

  • 你用真正的PLC试过了吗? PLCSIM 是否处于 RUN-P 模式?有时模拟只是模拟......这是一个替代 S7 库:snap7.sourceforge.net
  • 有可能,在 PLCSim 中不支持通过 libnodave 将 PLC 状态从运行更改为停止。您绝对可以在它的 Step7 窗口中更改 PLCSim 的状态。但我会在一周内检查您的问题并回复更多信息。

标签: c++ plc libnodave


【解决方案1】:

我刚刚使用 libnodave 8.4 和 NetToPlcSim 工具尝试了 dc.start() 和 dc.stop()。它工作得很好。可能您不使用 NetToPlcSim 工具通过 TCP/IP(显然是 127.0.0.1 端口 102)连接到 PLCSim,因此 dc 甚至无法连接。所以如果你的台词不起作用,那么你一定是做错了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2014-07-07
    • 1970-01-01
    相关资源
    最近更新 更多