1.【EtherCAT】4.实现一个成熟的源码从站
2.MIT cheetah源码业务层逻辑简介
【EtherCAT】4.实现一个成熟的从站
学习EtherCAT从站能深入理解其核心原理与设计,包括状态机、源码PDO映射等。源码本文将介绍从站的源码基础知识及实现一个功能完善的从站的方法。
从站硬件包括ESC(EtherCAT从站核心)和MCU(微控制器)。源码ESC通过PDI接口将数据发送到MCU,源码new 源码执行实际应用层操作。源码ESC设计基于BeckHoff的源码IP核心,主流芯片在功能上相差不大,源码主要区别在于DPRAM大小、源码SM数量、源码FMMU数量和PDI方式。源码硬件参数详细信息可查询官方文档。源码
从站MCU通常选择性能强大且生态完善的源码stm,用于执行应用层逻辑。源码此外,源码视频在线Arduino或ESP等硬件也能实现应用层操作,但需支持ESC相关PDI接口。
从站硬件架构图展示了ESC、MCU以及它们之间的数据交互。
从站软件主要涉及MCU中的应用层操作。ESC完成从站帧链路层功能。MCU通过PDI接口读取ESC的PDO和SDO数据,执行应用层处理,如状态机、COE、EOE等逻辑。常用从站协议栈包括EtherCAT技术组提供的Slave Stack Code(SSC),支持EOE、COE、FOE等协议栈,解压 网站 源码并提供Cia等协议支持。SOES是另一款著名的EtherCAT开源协议栈,支持EOE和COE,以及静态和动态PDO映射。KPA协议栈是商用从站协议栈的代表,支持所有EtherCAT特性。
嵌入式实时操作系统(RTOS)在从站开发中发挥关键作用,确保EtherCAT通信的实时性和资源的有效利用。RTOS如ucos、vxworks、FreeRTOS和RT-thread,提供线程管理、通信机制、时钟管理等功能,为从站任务调度提供支持。源码搭建演示RT-thread内核支持多线程调度、线程间通信、内存管理和设备管理,这些特性对于构建高效、可靠的EtherCAT从站至关重要。
硬件抽象层的引入旨在提升程序的可移植性。它封装了ESC的数据访问,允许从站MCU通过统一接口访问不同类型的ESC和PDI接口。
应用层协议主要包括COE、基于COE的行规(如CiA)、FOE、EOE和SOE。COE和CiA协议是必须实现的,而SOE通常不是常用需求。动态PDO映射允许用户根据需求定制PDO配置,lua源码bianyi简化基于CiA的驱动器的配置工作。
分布时钟功能使所有EtherCAT设备使用相同的系统时间,支持从站的同步执行。分布时钟由ESC芯片实现,通过中断信号和时间漂移寄存器值更新本地系统时钟。
开发EtherCAT从站时,SDK的使用可以简化开发流程。参考SOES的slave editor,SDK应包含功能如动态PDO映射配置、分布式时钟支持等。
从站性能评估重点关注响应时间,它取决于硬件、网络结构和数据传输量。KPA studio提供运行状态下的从站响应时间查看功能。
MIT cheetah源码业务层逻辑简介
MIT Cheetah机器人源码揭示了其业务层逻辑的全面体系结构。自从MIT公开了Cheetah Mini的完整资料,包括主控源代码、电机驱动源代码、控制板硬件PCB设计以及本体结构资料后,这款腿部型机器人的研发在国内受到了广泛关注,从而催生了多个基于此平台的机器人研发团队。 整体系统由个电机驱动单元、一个数据转接板SPIne、一台主控电脑、一个手柄以及一个缺省状态的IMU组成。个电机驱动单元通过CAN总线和数据转接板SPIne连接,分别控制着Cheetah腿部的关节电机,每条腿由三个关节组成。SPIne模块由两个STM芯片构成,负责主控数据的分发到驱动以及驱动反馈数据的打包。主控部分采用开源ethercat协议栈soem,支持两种通信方式:spi通信频率为Hz,ethercat通信频率为Hz。目前推测SPIne上可能仅支持spi通信。主控部分是一个计算机,通过USB连接手柄,实现手动控制,并包含上位机软件及仿真器代码,用于配置主控单元的控制参数和下发指令信息。 主控部分业务逻辑主要通过多态设计实现多种控制类型,包括MIT_Controller、MiniCheetahSpi_Controller、JPos_Controller等。用户可根据已有功能模块继承基类RobotController,在Cheetah Software/user目录下创建自定义控制器。JPos_Controller提供参考示例,算法完整实现则需参考MIT_Controller模块调用。 程序运行模式分为仿真模式和实际控制模式,通过main_helper函数进行加载启动。HardwareBridge实现加载实际控制程序流程,从Cheetah3HardwareBridge.run()开始,执行控制器硬件初始化、配置参数加载以及算法功能模块初始化,随后启动多个任务,包括可视化线程、日志线程、手柄通信线程、IMU通信线程、关节电机通信线程和周期回调主控线程。 主控线程周期回调执行关键操作,包括更新数据、步态规划、外部输入转换、状态机运行以及控制数据更新。具体操作如下:更新数据:通过运动学和雅可比计算,将电机传回的关节角度和角速度信息转换为机器人腿部末端的速度和位置信息。
步态规划:对机器人步态进行规划,内容涉及算法细节,后续将单独分析。
外部输入转换:将外部指令转换为机器人本体的位姿控制信息,包括机器人位姿和位姿速度,共计组外部控制量。
状态机运行:执行机器人集成动作的状态机,进行动力学、步态规划、MPC控制等核心算法计算,周期性更新legController中command信息,通过调用legController中的updateCommand更新电机控制相关通信数据寄存器。
控制数据更新:将机器人控制核心的输出控制数据写入相关寄存器,通过spi接口输入到电机驱动,控制电机运行。
对于仿真部分,由于需要接入罗技F手柄才能进行仿真。因未配备手柄,源代码被相应修改,以便实现仿真运行。