当前位置: 首页 > article >正文

无人机CAN总线基础——CKESC电调小课堂14

1. 定义与基本原理

      CAN(Controller Area Network)总线即控制器局域网络,是一种用于实时应用的串行通讯协议总线。在无人机系统中,它是一种高效的设备间通信方式。其采用多主方式工作,网络中的任意节点(在无人机系统中可能是飞控单元、电机控制器、传感器等设备)在任意时刻都可以主动向网络上的其他节点发送信息,不分主从。

      CAN总线的数据传输是基于差分信号,它使用两根线(CAN_H和CAN_L)来传输信号。通过比较这两根线的电位差来确定数据是“0”还是“1”。这种差分信号传输方式具有很强的抗干扰能力,能有效减少电磁干扰等环境因素对信号传输的影响,这对于在复杂电磁环境下工作的无人机尤为重要。

更安全的电子调速器,更匹配的动力系统icon-default.png?t=O83Ahttps://www.ckesc.com/

2.通信协议特点

可靠性高

   CAN协议具有完善的错误检测、错误处理机制。它采用循环冗余校验(CRC)方式对数据进行校验,能够检测出传输过程中的错误。当检测到错误时,节点会自动采取措施,如重发数据等。例如,在无人机飞行过程中,如果飞控单元向电机控制器发送的控制指令出现错误,CAN总线可以检测并要求重发,保证电机正常工作。

    并且它具有故障界定功能,能够区分是暂时的数据错误还是永久性的节点故障,这有助于及时定位和排除故障。

实时性好

     CAN总线采用了优先级仲裁机制。在多个节点同时向总线发送数据时,通过对数据帧标识符(ID)进行仲裁,标识符数值越小,优先级越高。这使得无人机系统中重要的数据(如飞控单元发出的紧急控制指令)能够优先传输,保证系统的实时响应能力。例如,在遇到紧急情况需要快速调整无人机姿态时,飞控单元的控制指令可以优先通过CAN总线传输到执行机构。

灵活性强

      CAN总线可以很方便地添加或删除节点。在无人机系统的设计和升级过程中,如果需要增加新的传感器或执行器,只要其支持CAN协议,就可以很容易地接入CAN总线网络。例如,要添加一个新的环境监测传感器来收集空气质量数据,只需将其连接到CAN总线上并配置好相应的通信参数即可。

     同时,它支持多种数据传输速率,在无人机中可以根据实际需求选择合适的波特率。一般在短距离通信且对数据传输速度要求较高的情况下,可以选择较高的波特率,如1Mbps;在长距离通信或者对速度要求不高的场景下,可以使用较低的波特率。

3. 数据帧结构

       CAN数据帧主要包括帧起始(SOF)、仲裁场、控制场、数据场、CRC场、应答场和帧结束(EOF)几个部分。

帧起始(SOF):标志着数据帧的开始,为一个显性位(在差分信号中,显性位为逻辑“0”),用于通知总线上的所有节点数据传输开始。

仲裁场:包含标识符(ID)和远程发送请求位(RTR)。标识符用于确定数据帧的优先级,在多个节点同时发送数据时起仲裁作用。RTR位用于区分数据帧和远程帧,当RTR为显性位(“0”)时,表示数据帧。

控制场:规定了数据帧中数据的字节数长度等信息,它对于接收节点正确解析数据长度非常重要。 数据场:包含了要传输的实际数据内容,其长度可以为0 - 8个字节。在无人机中,数据可能是飞控单元发送给电机控制器的电机转速控制量、传感器发送给飞控单元的环境参数(如温度、气压等)等。

CRC场:用于存放循环冗余校验码,接收节点通过对接收数据进行CRC校验来判断数据传输是否正确。

应答场:发送节点通过此场来确认接收节点是否正确接收数据。如果接收节点正确接收数据,会在应答场发送一个应答信号(显性位)。

帧结束(EOF):由7个隐性位组成,表示数据帧的结束。

4. 在无人机系统中的应用

飞控系统与传感器通信:无人机的飞控单元需要获取各种传感器(如加速度计、陀螺仪、气压计、磁罗盘等)的数据来实现姿态解算和飞行控制。CAN总线为这些传感器与飞控单元之间提供了高效的通信方式。例如,加速度计可以将测量到的无人机加速度数据通过CAN总线实时发送给飞控单元,飞控单元根据这些数据计算无人机的姿态变化并发出相应的控制指令。

飞控系统与执行机构通信:飞控单元需要向电机控制器等执行机构发送控制指令来控制无人机的飞行。通过CAN总线,飞控单元可以将电机转速、舵机角度等控制指令快速、准确地发送给执行机构。例如,在无人机进行姿态调整时,飞控单元通过CAN总线向电机控制器发送电机转速调整指令,电机控制器根据指令控制电机的转速,从而改变无人机的姿态。

设备状态监测与管理: CAN总线还可以用于无人机系统中各个设备的状态监测。各个设备可以通过CAN总线将自身的状态信息(如温度、电压、故障代码等)发送给飞控单元或其他监控设备。这样可以方便地对无人机系统进行维护和管理,当某个设备出现异常时,能够及时发现并采取措施。例如,电机控制器可以将自身的温度信息发送给飞控单元,当温度过高时,飞控单元可以采取降低电机功率等措施来防止设备损坏。


http://www.kler.cn/a/402474.html

相关文章:

  • Hive离线数仓结构分析
  • Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图
  • 小米C++ 面试题及参考答案下(120道面试题覆盖各种类型八股文)
  • C++设计模式-策略模式-StrategyMethod
  • vscode可以编译通过c++项目,但头文件有红色波浪线的问题
  • SATA接口不通分析案例分享
  • 平价鼠标推荐-英菲克PW1有线鼠标
  • 【Spring boot】微服务项目的搭建整合swagger的fastdfs和demo的编写
  • Linux中定时操作
  • 【AIGC】破解ChatGPT!如何使用高价值提示词Prompt提升响应质量
  • 109. UE5 GAS RPG 实现检查点的存档功能
  • 计算机毕业设计Hive+Spark空气质量预测 空气质量可视化 空气质量分析 空气质量爬虫 Hadoop 机器学习 深度学习 Django 大模型
  • 鱼厂实习,光速转正了!
  • 【STM32项目】基于STM32设计的震动马达超声波电机高频震动——高级定时器PWM互补输出带死区控制
  • 《自动化运维》
  • 20.有效的括号-力扣(LeetCode)
  • 全面解析亚马逊云服务器(AWS):功能、优势与使用指南
  • 【Vue 表单类组件封装与 v-model 简化代码】
  • 使用vue-i18n为你的Vue应用添加多语言支持
  • 爬虫基础总结 —— 附带爬取案例
  • 青训营刷题笔记11
  • 笔记02----重新思考轻量化视觉Transformer中的局部感知CloFormer(即插即用)
  • linux安装docker并配置docker源
  • 保姆级Redis安装教程
  • QT基础 窗体 对话框 文件 QT5.12.3环境 C++实现
  • CTF攻防世界小白刷题自学笔记16