一,CAN总线基础知识:

总线状态总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态相与的结果为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。也就是说在总线上显性电平具有优先权,只有所有的单元都输出隐性电平,总线上才为隐性电平。另外在CAN总线的起止端都有一个120欧的终端电阻来做阻抗匹配,以减少回波。

CAN协议通过以下5种类型的帧进行:数据帧远程帧错误帧过载帧间隔帧

CAN报文发送优先权抉择:

CAN 总线以报文为单位进行数据传送,报文的优先级结合在11 位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图2 所示,当几个站同时发送报文时,站1 的报文标识符为011111;站2 的报文标识符为0100110;站3 的报文标识符为0100111。所有标识符都有相同的两位01,直到第3 位进行比较时,站1 的报文被丢掉,因为它的第3 位为高,而其它两个站的报文第3位为低。站2 和站3 报文的4、5、6 位相同,直到第7 位时,站3 的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2 的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。

CAN数据帧组成:

(1) 帧起始。 表示数据开的段帧起始。

(2) 仲裁段。 表示该帧优先级的仲裁段。

(3) 控制段。 表示数据的字节及保留位控制段。

(4) 数据段。 数据的内容,一帧可发送0~8个字节的数据段。

(5) CRC段。 检查帧的传输错误段。

(6) ACK段。 表示确认正常接收的段。

(7) 帧结束。 表示数据的段帧结束。

数据帧的构成如下图所示:图中D表示显性电平,R表示显性电平。

应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文远程帧由6 个场组成:帧起始、仲裁场、控制场、CRC 场、应答场和帧结束。远程帧不存在数据场。远程帧的RTR 位必须是隐位。DLC 的数据值是独立的,它可以是0~8 中的任何数值,为对应数据帧的数据长度。

使用PMC007电机驱动器时 只需要发送ID和数据域即可,其他位置由硬件自动完成。

二,CANOPEN协议

CANPro 协议分析平台中的 CANopen 协议分析插件有两种,一是 Block_CANopen,用于分析支持块传输的 CANopen 协议报文,二是 CANopen,用于分析不支持块传输的CANopen 协议报文。之所以作这样的区分,是因为 CANopen 协议中的块传输的报文是上下文相关的,要识别块传输报文需要知道之前传输的报文信息,但是 CANPro 协议分析平台只针对当前的 CAN 帧进行分析,因此无法识别块传输报文,而且只根据当前 CAN 帧判断可能会将块传输报文误认为是其他的 SDO 报文。因此,对于支持块传输的 CANopen 协议,在遇到 SDO 报文时,只显示它的节点 ID 和数据域,不再判断它是属于 SDO 中具体的哪种类型。不支持块传输的 CANopen 协议则会识别出 SDO 报文的具体类型。

下面对 Block_CANopen 协议中的每一类报文进行详细介绍:

1、 NMT Error Control NMT 错误控制报文

(1)、Node ID 从节点的 ID 标识

(2)、Node Status 节点状态信息

2、 Node Guarding Request 节点保护请求报文,用于获取从节点状态

(1)、Node ID 从节点的 ID 标识

3、 NMT Module Control NMT 模块控制报文

(1)、NMT Command NMT 命令标识

(2)、Node ID 从节点的 ID 标识

4、 SYNC 同步报文

5、 EMCY 紧急错误报文

(1)、Error Code 紧急报文的错误码

(2)、Error Register 紧急报文的错误寄存器

(3)、Manufacturer Specific 厂商自定义的错误码

6、 TIME 时间报文

(1)、Time Stamp 时间报文中的时间戳信息,已解析为时间

7、 PDO PDO 报文

(1)、PDO Object PDO 通讯对象

(2)、Node ID 从节点的 ID 标识

(3)、PDO Data PDO 对象数据

8、 Remote PDO 远程 PDO 报文,用于请求 PDO 传输

(1)、PDO Object PDO 通讯对象

(2)、Node ID 从节点的 ID 标识

9、 SDO SDO 报文

(1)、SDO Object SDO 通讯对象

(2)、Node ID 从节点的 ID 标识

(3)、Data Field SDO 对象数据

CANopen 协议对 SDO 报文的解释与 Block_CANopen 不同,其他类型的报文定义都相同,

这里不再赘述,CANopen 协议中定义的各种 SDO 报文如下:

1、Initiate SDO Download Request 初始化 SDO 下载请求报文

(1)、Node ID 从节点的 ID 标识

(2)、Object Index 对象索引值

(3)、Object Sub-index 对象子索引值

(4)、Transfer Type 指示传输类型为快速传输还是一般的分段传输

(5)、Size Indicator 指示报文是否标识了传输量

(6)、Bytes Not Data 数据域中无效的字节数,只有快速传输才有效

(7)、Bytes Downloaded 下载的数据字节数,只有分段传输才有效

(8)、SDO Data SDO 数据域,只有快速传输才有效

2、Initiate SDO Download Response 初始化 SDO 下载响应报文

(1)、Node ID 从节点的 ID 标识

(2)、Object Index 对象索引值

(3)、Object Sub-index 对象子索引值

3、Download SDO Segment Request SDO 分段下载请求报文

(1)、Node ID 从节点的 ID 标识

(2)、Toggle Bit 触发位

(3)、Whether More Segments 标识是否最后一个分段

(4)、Bytes Not Data 数据域中无效的字节数

(5)、SDO Data SDO 数据域

4、Download SDO Segment Response SDO 分段下载响应报文

(1)、Node ID 从节点的 ID 标识

(2)、Toggle Bit 触发位

5、Initiate SDO Upload Request 初始化 SDO 上传请求报文

(1)、Node ID 从节点的 ID 标识

(2)、Object Index 对象索引值

(3)、Object Sub-index 对象子索引值

6、Initiate SDO Upload Response 初始化 SDO 上传响应报文

(1)、Node ID 从节点的 ID 标识

(2)、Object Index 对象索引值

(3)、Object Sub-index 对象子索引值

(4)、Transfer Type 指示传输类型为快速传输还是一般的分段传输

(5)、Size Indicator 指示报文是否标识了传输量

(6)、Bytes Not Data 数据域中无效的字节数,只有快速传输才有效

(7)、Bytes Downloaded 上传的数据字节数,只有分段传输才有效

(8)、SDO Data SDO 数据域,只有快速传输才有效

7、Upload SDO Segment Request SDO 分段上传请求报文

(1)、Node ID 从节点的 ID 标识

(2)、Toggle Bit 触发位

8、Upload SDO Segment Response SDO 分段上传响应报文

(1)、Node ID 从节点的 ID 标识

(2)、Toggle Bit 触发位

(3)、Whether More Segments 标识是否最后一个分段

(4)、Bytes Not Data 数据域中无效的字节数

(5)、SDO Data SDO 数据域

9、Abort SDO Transfer SDO 传输中止报文

(1)、SDO Object SDO 通讯对象(是 Server 还是 Client)

(2)、Node ID 从节点的 ID 标识

(3)、Object Index 对象索引值

(4)、Object Sub-index 对象子索引值

(5)、Abort Code 中止代码,表示传输中止的原因

三,CAN总线控制电机时常用的硬件

USB-CAN  以太网-CAN  NI9082 PMC007电机驱动器

四,CAN总线开发时常用软件介绍

CANOPEN等协议分析平台 CAN pro

通用测试软件 CAN test

分析仪通讯软件 ECANtool

python canopen_CAN与CANOPEN在电机控制中的应用相关推荐

  1. 电机控制中的传感器与测速原理

    一.传感器与测速原理 在做电机控制中速度检测的是否准确是直接影响系统的控制精度的,目前测速有两种1:模拟测速(这里不做说明)2:数字测速----霍尔位置传感器和旋转编码器.这是大的分类.而霍尔传感器的 ...

  2. 滑膜观测器物理意义_电机控制中的滑模控制(滑模观测器设计)

    本文小结一下,电机无位置控制中的一种--滑模观测器的设计,还有自适应观测器的设计等其他内容,等有时间之后再来总结.现代永磁同步电机控制原理及MATLAB仿真 永磁同步电机无位置传感器控制系统的研究与设 ...

  3. Logistic函数的各个参数作用分析及其在电机控制中的应用

    近几天对神经网络分类器的学习中,看到了Sigmoid函数. Sigmoid函数的表达式为: 在Matlab或者Octave中可以画出函数曲线. t = -60:0.1:60; S = 1./(1+e. ...

  4. absolute 必须 relative_想搞BLDC电机控制,就必须要懂的角度传感器

    在终端市场上,利用无刷直流电机(或简称为BLDC)技术取代交流电机或高效率的机械泵已经取得了重大进展. 相对于交流电机,使用BLDC的优点包括:更高的功效和热效率.体积较小.性能更可靠.此外,由于BL ...

  5. 电机控制编程的数学运算优化方案

    引言   电机控制应用设计传统上采用微控制器(MCU)或数字信号处理器(DSP)来运行电机控制算法.在研究永磁同步电机(PMSM)矢量控制的时候,坐标变换的三角函数运算.观测器的迭代.锁相环的鉴相环节 ...

  6. 电机控制要点解疑:SPWM,SVPWM和矢量控制

    虽然现在做自动驾驶去了,还是有必要把之前一年做电机控制的心得分享一下,也能方便自己日后的参考. (以下针对反向电动势为正弦的永磁同步电机而言) 目录: 1. SPWM和SVPWM 2. 矢量控制(Sp ...

  7. 电机控制--FOC的优势

    FOC(Field-Oriented Control),即磁场定向控制,也称矢量变频,是以数学.物理理论为基础,对电机磁场矢量进行精确控制的电机高级控制算法.FOC电机控制中涉及数学.物理.自动控制. ...

  8. 电机控制学习笔记——坐标变换

    电机控制学习笔记--坐标变换 0 前言 1 坐标系 2 Clarke变换(abc/ α \alpha α β \beta β变换) 2.1 恒幅值变换 2.2 恒功率变换 2.3 小结 3 Park变 ...

  9. 电机控制应用中的电磁兼容性设计与测试标准

    简 介: 针对小型机电系统中由于静电的积累放电所造成的影响,本文结合 EMC design guides for motor control applications 给出了电机驱动应用中的电磁兼容性 ...

最新文章

  1. 联想计算机农村,农村的联想
  2. 【技术种草】介绍一款开源电商网站的购物车添加功能的实现
  3. rsync定时任务引起cpu负载高
  4. Hibernate【inverse和cascade属性】知识要点
  5. centos7下载安装mysql步骤_Linux-centos7安装mysql步骤
  6. 今天的西红柿就跑了的P8U8源码
  7. Nature Reviews Cancer综述:长非编码RNA在肿瘤转移中的作用
  8. 【算法1-2】排序(今天刷洛谷了嘛)
  9. C提高_day03_作业第三题
  10. poj 1252 Euro Efficiency (01背包变形)
  11. 【RobotStudio学习笔记】(九)坐标偏移设置
  12. c语言 turbo,C语言Turbo C 2.0内容介绍
  13. 电化学稳态阻抗谱(EIS)在等效电路已知的情况下进行拟合,python第三方工具包impedance.py
  14. 无线射频识别问答习题
  15. 在 ABT 节点部署 RPG 制作大师游戏指南 | ArcBlock 博客
  16. 标准正态分布怎么算_标准正态分布函数的快速计算方法
  17. AAAI 2023 | 基于联合学习与用户传播行为的虚假新闻早期检测
  18. 移动电源大家都买多大的?大容量移动电源推荐
  19. 【FLASH】报错“必要的系统组件未能正常运行,请修复Adobe Flash Player”及 error#2046
  20. java 定义别名_为java类起别名

热门文章

  1. ‘SHIT’上最全有限状态机设计研究(一)-状态机介绍
  2. Mac下手动备份Mysql数据库
  3. 使用扫码枪扫码二维码并采集二维码信息
  4. linux / in_addr 的用法
  5. 学生上课睡觉班主任怎么处理_“佛系教师”语录:小孩是别人的,成绩是校长的,饭碗是自己的...
  6. web前端期末大作业 :HTML+CSS+JavaScript+Bootstrap实现响应式网站潮酷音乐网站
  7. 邮件的发送和接收过程-----简单邮件传输协议(SMTP)和邮件读取协议!!!
  8. 挖Linux中的古老缩略语
  9. Python实现逐步回归
  10. 已知铁的密度是7.86g/cm3,从键盘输入铁球的直径(单位:cm),计算出铁球的表面积和质量,并输出(保留两位小数)(使用标准库math模块得到pi的值)。...