零差云控电机ubuntu+IGH调试记录

一、上位机

Twincat3安装:https://blog.csdn.net/LclLsh/article/details/122863502

Twincat3设置实时网卡:https://zhuanlan.zhihu.com/p/217715531

Twincat3设置独立cpu:https://blog.csdn.net/weixin_44555503/article/details/108711912

  • 零差云控的上位机包括两种形式,利用erob调试器(can2usb)的canopen协议进行调试和网线的ethercat协议进行调试。canopen就不说了,直接看手册就行。
  • ethercat就要麻烦一点了,需要用到倍福的Twincat软件进行调试,安装说明可以参考上面的链接,好像只能装在系统c盘中。安装之前需要确定自己网卡的类型,可以搜到一个twincat支持的网卡列表,只能支持部分的intel网卡。在安装完成后,有以下几个步骤:
    ①把零差云控的xml配置文件,放到Twincat文件夹下
    ②设置实时网卡
    ③restart twincat system,这时应该可以看到数据更新了
    ④配置参数,参考eRob CANopen and EtherCAT 用户手册第六章Twincat主站控制。注意这里一定要按照流程配置完成,尤其是控制量的映射关系和上下限制。如果用原来的参数会导致电机飞转,虽然会很快报错停住,但是如果是用在机械臂的大关节上,停住前可能已经碰到东西了。
    ⑤激活配置Active Configuration,这里可能会报错setting TwinCAT in RUN Mode with VMware running might fail,是没有设置独立cpu导致的。

二、单关节电机代码

ROS2_IGH方案bilibili:https://www.bilibili.com/video/BV15X4y1t7XY/

ROS2_IGH方案CSDN:https://blog.csdn.net/Primary_student/article/details/135156861

  • 整体的方案参考了上面大佬的做法,实时补丁+ros2+ros2_control+moveit2+igh,因为当时对moveit和ros2_control不熟悉,所以没有用上面方案中的ethercat_driver_ros2中间件。在学习了ros2_control后,重新写了硬件接口的代码。这部分代码参考的是下面这个链接。

IGH分享-让电机转起来:https://www.bilibili.com/video/BV1kP4y1Y7QK/?spm_id_from=333.788.recommend_more_video.2\&vd_source=a686d8f8b0e9b94066f2d4ba714466e7

三、多关节电机代码

1、igh命令行

资料:https://blog.csdn.net/u014077947/article/details/127489297

  • 这是一个很重要的点,除了启动master节点、查看从机状态,还有切换电机状态、向sod写数据、设置debug日志等功能

2、速度限制

  • 运行过程中,还有一个问题是电机运动快了以后会报错,一般错误原因是警告,如果查看一下警告的错误码,会发现是软速度报错,这是因为速度软误差限制太低导致的。
  • 这个限制可以修改0x3B61,利用命令行进行修改。但是修改完了以后发现重新上电后,这个寄存器会重新恢复原来的数值。这就涉及到手册里的另一个属性了,也就是Backup,也就是有一部分寄存器可以在断电后保存参数,要实现保存还要操作0x1010这个寄存器。

3、同步模式

  • 电机多了以后会出现电机初始化报错的情况,也就是SAFEOP向OP转换的时候,会出现SAFEOP+ERROR的情况。这个情况可以用命令行切换,但是很不方便,而且初始化失败,肯定是有什么问题。经过大佬的提示,最终发现这是同步问题导致的。
  • 这里就进入一个比较迷惑的情况了,零差给的手册中关于同步设置的寄存器0x1C32,存在问题。0a寄存器大小不对,表述不清。很多寄存器的默认值错误。
  • ethercat的同步模式有三种,freerun、SM、DC。默认情况是freerun的,之前单关节电机代码的写法,会把同步模式设置为SM同步管理器模式,但是这会导致出现上面说的问题。
  • 最终还是参考了ethercat_driver_ros2的写法,完成了DC模式的配置。要用到ecrt_slave_config_dc、ecrt_master_application_time、ecrt_master_sync_slave_clocks这几个函数,并且在循环中也要更新
相关推荐
疆鸿智能研发小助手18 小时前
疆鸿智能 EtherNet/IP转ETHERCAT网关:打通罗克韦尔与汇川伺服的石材产线
网关·以太网·工业自动化·ethercat·ethernet ip·工业通讯·协议转换网关
日更嵌入式的打工仔4 天前
Ehercat代码解析中文摘录<9>
笔记·ethercat
疆鸿智能研发小助手4 天前
工业网关融合之道:疆鸿智能ETHERNET/IP 与 EtherCAT 在包装印刷厂的精妙协奏
工业自动化·ethercat·ethernet ip·工业通讯·协议转换网关
疆鸿智能研发小助手5 天前
工业网络协议网关在危化品生产自动化中的关键作用:以ETHERNET/IP转EtherCAT为例
网关·工业自动化·ethercat·ethernet ip·工业通讯·协议转换网关·机械手臂
日更嵌入式的打工仔7 天前
Ehercat代码解析中文摘录<7>
笔记·ethercat
疆鸿智能研发小助手7 天前
疆鸿智能ETHERCAT转Modbus TCP/IP:高端PLC与通用设备毫秒级对话
tcp/ip·modbus·工业自动化·ethercat·工业通讯·协议转换网关
日更嵌入式的打工仔10 天前
Ehercat代码解析中文摘录<3>
笔记·ethercat
日更嵌入式的打工仔11 天前
Ehercat代码解析中文摘录<2>
笔记·ethercat
日更嵌入式的打工仔12 天前
Ehercat代码解析中文摘录<1>
网络·笔记·ethercat
日更嵌入式的打工仔14 天前
Ethercat EOE笔记
网络·笔记·ethercat