我有一个可用的 C 项目,它使用 ADS C API 与本地或远程 TwinCAT 3 系统通信(在线示例也很好用)。
但是,我们现在正尝试将程序部署到仅安装了 TwinCAT ADS 的另一台机器上(如“仅安装 TwinCAT 3 ADS”下所述)。我们在两台机器上都添加了路由。为了简化测试,我们甚至在 ADS 机器和运行时机器上都完全禁用了防火墙。但我仍然无法将数据返回到应用程序。
我从 ADS 得到的错误是 10051,这基本上是一个Winsock 错误:
网络不可达。尝试对无法访问的网络进行套接字操作。这通常意味着本地软件不知道到达远程主机的路由。
但是,我很确定这些路线是有效的。它们是使用广播搜索添加的,我可以在 Wireshark 中看到两个系统都在不断地交换 ADS 读/写请求(如果我删除任何 PC 上的路由,交换就会停止)。
一个细节是仅 ADS 系统未处于启动模式,即我无法将其置于“启动”状态,尽管这可能是正常的,因为那里没有运行时?
我的问题是:
仅 ADS 系统是否也必须使用托盘图标(“启动/重新启动”)切换到启动模式?即这个操作是否也会影响消息路由器?因为如果我在 ADS 系统上尝试这个,我会得到一个错误,所以我不确定这是因为那台 PC 上没有运行时,还是有错误。事件查看器显示错误:“启动 TCRTSOBJECTS 服务器时出错。系统找不到指定的路径”,没有其他线索。
除了配置路由之外,在仅 ADS 的系统上是否还有其他必须完成的设置?