机械手浅谈系列之---ethercat主站开发和实时操作系统

做机械手的控制,实际上是对多个电机轴的控制。在2013年,那时候还是脉冲型电机驱动控制的天下,我甚至都没听说过实时以太网总线控制。接触到的主控除了PLC就是运动控制板块。由于机械手运动控制算法的复杂性,在2013年做了一款简易的PC+运动控制板卡的机械手控制器。
该控制器的核心算法是在PC上面,自研的板卡只做简单的脉冲发送。随着后面对机械手算法的深入研究,遇到的第一个瓶颈就是PC上面WINDOWS操作系统的实时性,PC上面的算法不能实时执行的话,很多高级功能也无法实现。后面了解到WINDOS下的商业实时内核ArdenceRtx。做了简单的尝试,由于收费昂贵和缺乏技术支持等原因,对于该实时内核并不满意。
接触实时内核后,实时以太网技术也开始逐渐进入视野,并重视起来。曾经花费1w去购买倍加福提供的ethercat主站协议栈。由于该代码是windows平台下的示例代码,而且没有伺服的控制示例,后来对于该方案的探索也没有实质性的进展。
后面团队引入linux方面的人才,视野才开阔起来。
Linux平台实时方案
linux平台下的实时内核有较多的选项:rtpreempt,xenomai,rtai等。
Xenomai 的实时性非常强,但是在使用上有一些限制和需要注意的事项。我早期第一个在linux平台下,使用的就是该内核。实时线程需要调用Xenomai的实时api, 而且实时线程如果调用了非实时设备类api,会被自动切换为非实时线程。
RTAI 这个实时补丁,比较好的一个背书就是LINUXcnc开源项目了。
Rtpreempt实时性要弱于后面2者,但是它的官方支持背景非常强大,而且有很多的linux内核版本可以匹配。另外一个优点是,按照普通linux平台编写程序就可以,不需要第三方的实时api. 据德国acontis代理商的信息,国外在ethercat主控上面,主流使用该实时内核。后面。后期将项目也从xenomai切换到了rtpreempt。
总结下实时程序编写的原则:
1) 根据功能的实时性需要,合理分配线程的优先级。基本上ethercat主线程就会分配最高优先级。
2) 一切算法的计算时间都需要量化,并对关键时间段进行实时监控,超过限定需要有报错等处理。
3) 实时线程不得进行设备类调用(print打印,文件操作等),当然ethercat类实时驱动是例外(因为实时以太网驱动做了特殊处理)。
4) 注意多线程互斥锁的问题,实时线程和非实时线程如果都操作互斥锁,可能带来优先级反转。
商业独立实时操作系统
Vxworks使用比较广泛,机器人控制方面还不知道哪家在使用。
国产的sylixos推广的比较好,开发工具和支持的库也比较多,有几个机器人厂家在尝试使用。

Ethercat协议栈方面
商业ethercat协议栈
德国acontis,据说KUKA就是用的该商业栈。
德国KPAStudio ethercat商业协议栈。
国内的机器人控制器厂商主要用这2个商业协议栈,特别是acontis居多。收费方面一般是一次性的开发费+没台主站设备安装费。
开源ethercat协议栈
德国IGH,这个成熟度较高,国内的研究使用方面的文章也非常多。首要推荐使用该协议栈。对于伺服控制的开发,还需要了解CIA402协议,然后根据该协议调用IGH相关接口就可以实现伺服的控制,生手可能需要3-6个月的时间,才能消化掌握。难点主要还是DC同步时序问题。早期踩过的坑是,伺服偶尔出现卡顿,一直没有找到根本原因,直到几年后才根本解决。主要的解决思路是,伺服初始化的时候需要进行每个伺服时钟偏移的调整,保证相位同步。这也是经过长时间的摸索才找到的解决方法。
SOME开源协议栈:功能方面没有IGH强大,比较偏向底层协议栈,需要自己加太多的代码,才能实现伺服的控制。
2015年的时候,曾经试用过acontis和kpa, 效果都不错,唯一不方便的地方就是增减ethercat设备时,必须用它们的软件进行配置文件的生成,这点比较麻烦。
下面列举下了解到的机器人品牌的技术栈选择。
台湾宝元:linux+rtpreempt+igh
以色列高创:linux+rtpreempt+igh
国产NBT:linux+rtpreempt+acontis

如有笔误,还请指教! WeiXin18820959358

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值