先看单个CAN数据帧:

单位是bit,sof占1bit,identifier就是11bit_ID值,DLC4bit表示字节有效数,0-8字节表示64bit

DLC的0~8字节:决定64bit内有效字节长度。

标准帧的bit数是固定的 1+11+3+4+64+16+3+7=109bit

11bit_帧id值定义:

NMT:总线命令 发00h

SYNC:同步命令 发80h

TIME:时间命令 发100h

EMCY:从站故障帧 回80h+从站地址

PDO1:快捷寄存器 发200h+回180h+(属于指针命令)

PDO2:快捷寄存器 发300h+回280h+

PDO3:快捷寄存器 发400h+回380h+

PDO4:快捷寄存器 发500h+回480h+

SDO:参数寄存器设置 发600h+回580h+(读写寄存器用)

NMT-上传:从站状态帧 回700h+从站地址


先看从站回帧 700h+从站地址 , 8字节数据

701,0000000 0000007F(表示:从站1现在待机状态)

701,0000000 00000005(表示:从站1现在工作状态)

77F,0000000 0000007F(表示:从站127现在待机状态)

77F,0000000 00000005(表示:从站127现在工作状态)

 8字节数据值:(从站状态)
0x00 初始化中(只有心跳帧有效)
0x7F 待机状态(PDO失效)只能用SDO读写寄存器
0x05 工作状态(PDO有效)可用快捷命令控制伺服
0x04 停止状态
注:由0x1017寄存器控制周期ms,默认2000ms

NMT:总线命令 发00h

NMT总线命令 00h+B0+B1

00h                  B0                 B101启动远程(05h)       01~0x7F从站地址(1~127)02停止远程(04h)       00广播(所有从站)80预操作(7fh)81节点复位(7fh)82通讯复位(7fh)NMT是总线命令:
11bit的值,固定为  0x00 ( 00h )
DLC长度为2字节
Byte0:功能码
Byte1:从站地址就是说11bit的值,固定为0x00,并且只有主站才使用这个数据帧。(帧id=0x00)
8字节数据内,只使用2字节byte0:01h 从站启动(回帧05h运行模式)02h 从站停止(回帧04h停止模式)80h 从站预运行(使能状态)(回帧7Fh预运行模式)PDO方法失效81h 从站重启(一般从站伺服报警后才用,或重启才能生效的参数)(回帧7Fh预运行模式)82h 从站通讯重连(回帧 7Fh预运行模式)byte1:00h 所有从站01~7f 从站地址(1~127)————————————————
版权声明:本文为CSDN博主「cfqq1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cfqq1989/article/details/128308808

SYNC:同步帧 发80h

帧id值固定为0x80,8字节数据值无效(全0)
0x80
pdo设置好所有从站后,0x80触发从站生效动作
触发寄存器值需要上升沿触发,先低电平,SYNC,再高电平,SYNC。

TIME:同步帧 发100h

帧id值固定为0x100,8字节数据值无效(全0)
0x100
pdo设置好所有从站后,0x80触发从站生效动作
CAN大部分驱动器不支持

EMCY:从站故障帧 回80h+从站地址,B0,B1,B2,B3

由从站硬件发出:
从站故障后,会上传 80h+从站地址的帧B0+B1    0x603F寄存器
B2       0x1001寄存器
B3       故障码

PDO:快捷寄存器

TXPDO1(发送)   0011    0x180+地址  (方向是:伺服发送到上位机)
RXPDO1(接收)   0100    0x200+地址TXPDO2(发送)   0101    0x280+地址
RXPDO2(接收)   0110    0x300+地址  (方向是:上位机发送到伺服)
TXPDO3(发送)   0111    0x380+地址
RXPDO3(接收)   1000    0x400+地址
TXPDO4(发送)   1001    0x480+地址
RXPDO4(接收)   1010    0x500+地址
————————————————
11bit拆开使用(4bit+7bit)其中4bit表示功能码,7bit表示从站地址
版权声明:本文为CSDN博主「cfqq1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cfqq1989/article/details/128009555
PDO是需要先映射寄存器地址后,才使用,对映射的寄存器快速读写。(PDO相当于快捷键)
去洗脚城点8号技师,(8号技师,可以是老板娘,也可以是小姨子,看寄存器指针怎么绑定)参数开关                         地址绑定
rPDO1(主→从)      1400h(200h+)                 1600h
rPDO2              1401h(300h+)                 1601h
rPDO3              1402h(400h+)                 1602h
rPDO4              1403h(500h+)                 1603h注:1400-00子索引总数2(只读)1400-01先关(1<<31),等1600配置好后,1400-01再开启(b31=0开;b30=1RTR强置关,b29=0标准11位,b10~0:COB_ID功能码200h+)
(注: 1400-01= 0x 4000 0201)//b31=0表示使能PDO功能,b30是RTR位// b29位=1是扩展帧, PDO1功能码0x201 从站11400有2个子索引:01:bit31(0开,1关rPDO)bit28(0:11bit,1:29bit扩展帧)bit10~0(COB_ID功能码200h+)02:在收到多少个SYNC(80h同步帧)后开始生效rPDO设置,(0~0xF0)0xFE事件驱动(制造商特定,值变化后生效)0xFF事件驱动(设备配置文件和应用程序特定)03:禁止时间us 04:兼容性条目05:事件计时器(不用于RPDO)1600有8个子索引:00:指针有效个数(把64bit分割,有效寄存器个数1~8)01:绑定指针1(一般绑 0x6040控制字)bit31~16寄存器编号bit15~8 子索引bit7~0  有效bit(8h,10h,20h)8位,16位,32位02:绑定指针2(0x607A目标位置)03:绑定指针3(0x6060工作模式1位置3速度4扭矩6回零7补间位置)04:绑定指针405:绑定指针506:绑定指针607:绑定指针708:绑定指针8参数开关               地址绑定
tPDO1(主←从)      1800h                 1A00h
tPDO2              1801h                 1A01h
tPDO3              1802h                 1A02h
tPDO4              1803h                 1A03h
注:1800h-00:子索引数(表示1800有多少个子索引)01:bit31(0开,1关tPDO)先关,绑好后再开bit30(0rtr开,1关)bit29(0标准帧,1扩展帧)bit10~0(COB_ID功能码 180h+)02:第N个SYNC同步帧后上传tPDO(0~0xFF)用0x0103:帧间隔禁止上传时间0.1ms(400是40ms)用于tPOD上传失败04:保留05:事件禁止时间ms(0: not used)06:SYNC信息计数器等于该值将会作为第一个接收到的SYNC消息处理。1A00有8个子索引:00:指针有效个数(64bit中寄存器占个数1~8)01:绑定指针1(一般绑 0x6041状态字)bit31~16寄存器编号bit15~8 子索引bit7~0  有效bit(8h,10h,20h)8位,16位,32位02:绑定指针2(0x6064PUU电机编码器回授位置)03:绑定指针3(0x6063回授命令位置)04:绑定指针405:绑定指针506:绑定指针607:绑定指针708:绑定指针8例子:寄存器0x1600子索引01赋值0x60400010;先设置 1400h-01=1<<31;// 关闭rPDO
1600h-01h = 0x6040 00 10;//0x60400010;绑定寄存器0x6040
RPDO1指针,指向寄存器0x6040,00子索引,10(16bit)
再设置 1400h-01=0<<31;// 打开rPDO08h(8bit)
10h(16bit)// 例子中 10 指 寄存器0x6040是16bit的
20h(32bit)// 0x20例子2: 寄存器0x1A00子索引01赋值0x60410010;0x1A00-01是伺服上传(TPDO1)
0x6041是把TPOD1和寄存器0x6041绑定
00是寄存器0x6041的子索引
10是寄存器的类型 16bit
作用:伺服上传 寄存器0x6041-00的数据//========================
寄存器0x1400-01
bit31:  PDO1总开关(0开,1关)//进行设置的时候先关,再开。 1600也是如此(1600-00先设置0)
bit28:地址bit长度(0:11bit   1:29bit)寄存器0x1400-02 //表示在下一个SYNC同步信号80h发生之后CANopen驱动器响应接收到的数据
0~0xF0 延时us   //雷赛用0x01us,0h立即,0xFE由SDO动作,0xFF事件立即响应

SDO:参数寄存器设置

580h+    TSD0 (get回帧)
600h+    RSD0 (set到驱动器)GOB_ID    B0             B1B2                  B3        B4B5B6B7
601(600h+从站地址)2F写  8bit     1032寄存器(0x3210)  10子索引  10 (0x10)设定值2B写 16bit     1032寄存器(0x3210)  10子索引  10 32 (0x3210)27写 24bit     1032寄存器(0x3210)  10子索引  10 32 54(0x543210)23写 32bit     1032寄存器(0x3210)  10子索引  10 32 54 76 (0x76543210)40读寄存器     1032寄存器(0x3210)  10子索引  空1032寄存器地址(0x3210)10子索引(0x10是16,一般是0~3)数值10 32 54 76(0x76543210)
————————————————
版权声明:本文为CSDN博主「cfqq1989」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cfqq1989/article/details/128009555

1000h段定义

1000h 驱动器机种码   0x0B02 0192  //0192伺服  0B02台达B3系列
1001h 错误缓存器  b0一般错误b1电流b2电压b3温度b4通讯
1003h 预先定义错误区
1005h 只读 同步帧  0x80
1006h 同步帧周期us 0关闭SYNC
100Ch 保护时间ms
100Dh 看门狗时间 100Ch的倍数(范例:若 OD 100Ch = 5 ms, OD 100Dh = 10,则 Life time 等于 50 ms。)
1010h 参数保存 -04=0x65766173
1011h 重置参数 -04=0x64616F6C
1014h 故障帧  b31:0开1关,b10~0:80h+地址
1016h 断网保护ms(b15~0 ms  b23~16 从站)AL180故障
1017h 回帧心跳ms  (700h+从站地址)
1018h 辨识对象
1029h -01故障后,默认状态0预操作1保持2停止模式
1200h SDO功能码 -01=600h+  -02=580h+
1400h (主→从)PDO功能码 -01 b31开关:0开  b10~0 功能码-02 同步帧后响应时间-03 保护时间-04 兼容性条目-05 事件计时器(不用于RPDO)
1600h PDO绑定寄存器1800h (主←从)PDO功能码 -01 b31开关:0开  b10~0 功能码
1A00h PDO绑定寄存器

6000h段定义

603fh 故障码6040h 控制字 06h关闭07h使能0f命令生效,1f(b4上升沿,b5生效,b6 0绝对位置1相对位置)b0启动b1电压输出b2急停(0急停报警)b3命令(上升沿)//===B3~0伺服命令b4运动命令(上升沿)b5 0等待旧命令位置完成b6  0绝对位置           1相对位置b7上升沿复位b8 1暂停    0继续b9  1使用上次的旧速度6041h 状态字 b0 准备启动  1637定位完成, 1237定位中b1 准备完成b2 伺服使能b3 异常b4 电压输出b5 急停b6 伺服关闭b7 警告b8 保留b9 远程控制b10 位置到达b14 正转禁止b15 反转禁止
605Ah  快停
605bh 使能关闭 1开启动态刹车
//===================================6060h  工作模式:0保留1位置3速度4扭矩6回零7补间位置
6061h 当前工作模式
6062h 命令位置
6063h 脉冲位置 (A2 对应到电机一圈 1280000 pulses,A3 / B3 对应到电机一圈 16777216 pulses)
6064h 编码器回授位置PUU
6065h 位置误差报警阀值 AL009 (60F4h当前位置误差)
6067h 位置到达范围
6068h 位置到达时间ms
606bh 命令速度
606ch 速度回授
606dh 速度到达范围
606eh 速度到达时间
606fh 零速准位
6071h 命令扭矩
6072h 最大扭矩
6074h 内部扭矩命令
6075h 电机额定电流
6076h 电机额定扭矩
6077h 回授扭矩
6078h 回授电流607Ah 目标位置607Ch 原点偏移
607Dh 软限位 -01负限位(-2147483648) -02正限位
607fh 最高速度命令
6080h 电机最高速度6081h 目标速度6082h 起跳速度6083h 加速斜率 (脉冲量/秒)6084h 减速斜率
6085h 急停斜率
6087h 扭矩斜率
6093h 齿轮比 -01分子 -02分母6098h 回零模式 35当前位置为零点6099h 回零速度 -01高速(1~2000) -02低速(1~500)609Ah 回零加减速60fdh DI输入信号(b0负 b1正 b2原点)
60ffh 目标速度//60B0h位置偏移-1
//60B1h速度偏移-1
//60B2h扭矩偏移-1
//60C0h插值子模式选择-1
//60C1h插值数据记录-1
//60C2h插值时间段-1
//60C5h最大加速度-1
//60C6h最大减速度-1
//60F2h定位选项代码-1
//60F4h跟随误差实际值0
//60FCh位置需求值-1
//set_region(0x2154, 0, 1);// 输入io电平逻辑 0正逻辑1反
//60FDh  输入 IO 状态0(bit0:负限位 bit1:正限位 bit2:原点信号 bit16:快速停止
//60FEh-01  物理输出开启1
//60FEh-02  物理输出开启2
//60FFh目标速度0
//6502h支持的驱动模式-1

CanOpen上位机设计相关推荐

  1. ROV采集与通信系统之上位机设计

    前言 时间一晃,我已经是一名即将步入研三的老学长,趁着这个假期抓紧时间把毕业设计的大体框架完成,后续细节的优化工作再慢慢处理.毕设的课题是ROV采集与通信系统,简单来说就是ROV水下实时采集高清图像信 ...

  2. 服务器网页版上位机设计 - 03 - 上位机 (完结)

    服务器网页版上位机设计 03 上位机 (完结) 本设计主要涉及三个方面: 服务器,网页版,上位机. 书接上回,介绍完网页页面的设计,现在来说说上位机的功能设计. 也就是js文件的内容编写. 1.获取h ...

  3. 漏电检测系统客户端上位机设计

    漏电检测系统客户端 整体介绍 登录 连接 时间校准 数据解析展示 整体介绍 该上位机客户端使用C#语言进行编写,运行环境是visio studio 2019,该项目整体代码简洁使用,主要有登录进入主界 ...

  4. 如何给上位机设计好看的ICON

    前文 上位机软件,一般需要一个简单清晰好看的icon来方便使用者使用,今天这里说下怎么来实现. 正文 首先我们先建立一个winform程序 这里不用和我一样哈,只需要你添加一个button就行了. 打 ...

  5. 【QT上位机设计——串口收发和波形显示】

    一.简介 最近粗略地学习了一下上位机的编程,大致了解了底层硬件与上位机之间的串口通信逻辑,TCP通信和UDP通信暂时还未学习. 本次把学习思路分享一下,主要学习视频是b站上北京迅为的QT教学视频,我的 ...

  6. 超声波探伤器上位机设计

    1.主菜单栏:文件&视图&工具 2.文件/保存&另存为&打开&退出:视图/矩形扇形转换&扇形矩形转换&插值并重新成像&图像播放& ...

  7. 上位机开发(架构设计)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 和一般的上位机开发相比,固件下载软件的流程是比较简单.清晰的.所谓的架构设计,一般都是从各种业务 ...

  8. 实战项目(一)嵌入式基础学习与上位机入门设计

    Hello,大家好,首先自我介绍一下,我是大家的新朋友,也是这个教程的主要创建人,大家可以称呼我David,我个人从大学一直到研究生,甚至到工作一直在学习应用嵌入式,从最初的51单片机,到后期深度学习 ...

  9. Qt 零基础设计实现TCP服务器和客户端上位机(零基础实战详解,附源码文件)

    文章目录 TCP和UDP TCP的三次握手和四次分手 TCP和UDP的区别 关于Socket(套接字) Qt TCP服务器的设计与实现 使用Qt的 帮助 TCP服务器和客户端 区别 UI界面设计和原则 ...

最新文章

  1. Python的pyroute2网络模块
  2. pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)
  3. Python3有哪几种数据类型?
  4. 掩膜区域内像素值_MRI ADC值是怎么来的?咱们来手算一下
  5. jquery解析XML
  6. 海量数据下的存储技术,哪些模式靠得住?
  7. CCNA网络小菜鸟笔记之(第十一章, 广域网协议)
  8. java模板设计学习
  9. CentOS7下安装MySQL5.7安装与配置(YUM)
  10. 解决wps如何只复制标题文字(不复制正文)
  11. python 对 list[list] 矩阵进行逆时针旋转90度 matrix = list(map(list, zip(*matrix)))[::-1]
  12. SCN和Checkpoint
  13. hi3559v100的amp双系统初始化
  14. 在RFID标准协议中 ISO18000-6B和ISO18000-6C的优点及区别
  15. mame 最新版本以及fba 编译
  16. 【快乐离散数学】命题逻辑 | 复合命题 | 等价命题 | Propositional Logic | Propositional Equivalences
  17. 汽车充电桩检测设备TK4860C交流充电桩检定装置
  18. 项目管理/互联网/软件全套文档、产品文档、技术文档、测试文档、运维文档、项目文档
  19. “三无”大学生,就业真难
  20. C语言(宏,内存,地址,指针,解引用)

热门文章

  1. 微积分在图像处理中的应用
  2. Markdown、Git及其他工具的简述
  3. Unity教程2:保姆级教程.几行代码实现输入控制2D人物的移动
  4. 装机(二) ubuntu网络配置和异常修复
  5. 上海交通大学考研资讯
  6. 基于ZBar,OpenCV和Python的二维码识别
  7. 打怪游戏 勇者打恶龙v2.0
  8. 屌丝程序员游戏从业8年之路
  9. hnu 数字电路 实验1.3 模型机指令译码器
  10. VC10如何在Release模式下调试代码