【问题记录】Twincat与ROS不同设备上的Ads通信
配置具体方法参照该博客,足够详细路由配置方面仅作些许补充→ TwinCAT3与ROS之间的ADS通信实现_sjtu_way的博客
环境信息 Ubuntu18.04 win10 twincat2/3都通信成功
【路由配置】
ubuntu在设置中写好静态ip,此处无图可参看顶部博客,足够详细,保证和windows处于同一网段
windows上在 按win+i打开设置→网络和Internet→以太网→更改适配器选项 找到对应的网口设置ipv4
→ 
Twincat2/3静态路由设置方法参照↓

【Ads库文件】
根据顶部博客配置好后,在github下载 Beckhoff/ADS: Beckhoff protocol to communicate with TwinCAT devices. (github.com)其文件库。

使用meson编译,unbuntu可直接用sudo apt-get install安装,需要以来ninja与python3.7+,但本机python3.6也正常完成编译,。
【ROS】参考github上的 lemanhtrung/twincat_talker: ROS interface for Beckhoff TwinCAT PLC (github.com)
根据自己的需求改写CMakeLists和库文件。
可能出现的问题
①port不对
AdsDevice route{remoteIpV4, remoteNetId, AMSPORT_R0_PLC_TC3}; //第三个参数通常TC3 AMSPORT_R0_PLC_TC3 对应port 851 ; TC2 AMSPORT_R0_PLC 对应801
②一直卡在上面这句代码,之后屏幕上输出 Socket connect fail, 关闭Windows的防火墙即可。
③Ads operation error code 1797 : template里的数据类型不对。如读写INT,需uint8_t ,uint32_t即会报错。具体原因带查询即可知道如何使用
④Ads operation error code 1808: 就是没找到你要操作的变量
浙公网安备 33010602011771号