0

我有一个可用的 C 项目,它使用 ADS C API 与本地或远程 TwinCAT 3 系统通信(在线示例也很好用)。

但是,我们现在正尝试将程序部署到仅安装了 TwinCAT ADS 的另一台机器上(如仅安装 TwinCAT 3 ADS”下所述)。我们在两台机器上都添加了路由。为了简化测试,我们甚至在 ADS 机器和运行时机器上都完全禁用了防火墙。但我仍然无法将数据返回到应用程序。

我从 ADS 得到的错误是 10051,这基本上是一个Winsock 错误

网络不可达。尝试对无法访问的网络进行套接字操作。这通常意味着本地软件不知道到达远程主机的路由。

但是,我很确定这些路线是有效的。它们是使用广播搜索添加的,我可以在 Wireshark 中看到两个系统都在不断地交换 ADS 读/写请求(如果我删除任何 PC 上的路由,交换就会停止)。

一个细节是仅 ADS 系统未处于启动模式,即我无法将其置于“启动”状态,尽管这可能是正常的,因为那里没有运行时?

我的问题是:

  • 仅 ADS 系统是否也必须使用托盘图标(“启动/重新启动”)切换到启动模式?即这个操作是否也会影响消息路由器?因为如果我在 ADS 系统上尝试这个,我会得到一个错误,所以我不确定这是因为那台 PC 上没有运行时,还是有错误。事件查看器显示错误:“启动 TCRTSOBJECTS 服务器时出错。系统找不到指定的路径”,没有其他线索。

  • 除了配置路由之外,在仅 ADS 的系统上是否还有其他必须完成的设置?

4

1 回答 1

1

我可以正确回答部分问题 - 不,仅 ADS 系统不需要(也不能)处于运行状态。

您确定已从两端建立连接吗?有时一台服务器会注册连接,而另一台则不会。

要检查的另一件事是,您在 ADS 路由列表中是否有其他条目具有相同的 IP 或 ADS 地址(我想您的开发 PLC 可能有多个条目)。我以前看到过这种情况很困惑,必须先删除冲突的条目才能起作用。

于 2019-04-03T14:24:45.537 回答