• CAN电压测试(电工)


    硬件接线: 

    这种是一般PLC上CAN的9芯插头引脚定义。 5接屏蔽线

    2   HL线电压

    1. 40米: 1 Mbps ( iso 11898_3)
    2. 逻辑1: H L 电压差 低于0.05V(隐性 1
    3. 逻辑0: H L 电压差 高于1.5V(显性 0
    4. 电阻: H L 负载电阻 (85Ω ~ 130Ω) / 2
    5. 一般120Ω /2
    6. 实际 H L 负载电阻值:60Ω
    7. 标准帧id使用11bit(0x7FF
    8. 扩展帧id使用29bit(0x1FFFFFFF)(11bit+18bit)
    9. 帧id=0x00;优先级最高

     这图上说的是隐性1的时候,H和L线都是2.5V,线压差是0v。

                              显性0的时候,H线3.5v,L线1.5v,线压差是2v(满足显性最低条件 >1.5v)。

    可以理解为,没数据的时候,大家都是2.5v。

    电压条件:

    1. H和L是负电压或<1.5v时 :逻辑1(隐性电平)
    2. H和L之间正电压,且大于1.5v:逻辑0(显性电平)
    3. 总线是或逻辑: 甲(隐性电平)乙(显性电平)总线结果是(显性电平)
    4. 子站都能读取总线状态。显性电平能覆盖总线电平(强制为显性电平)
    5. 所以从站id=0x00权限最高。下来是帧id = 0x01;
    6. 11bit地址先出现1的设备,先出局。

    1. 上图,空闲的时候:
    2. H是+1.46v
    3. L是+1.46v (我把L线电压下降 1V 是为了方便观看,实际波形是完全重叠的)
    4. 所以 H线和L线之间没有电压差,是逻辑1(隐性电平)

    1. 这个是截取工作状态的波形。
    2. H线和L线出现电压差大于1.5v(实测2.8v),表示逻辑0 (显性电平)
    3. 这就相当于,没有数据的时候一直逻辑1(H线电压就是L线电压)。有数据0的时候会(出现电压差2.8v)

    工作流程:

    所有设备都并联 CAN总线终端两边各并联120Ω电阻万用表量HL电阻60Ω),大家都没发报文时,HL线没有电压差,当主站发报文时,HL出现电压差。如果大家全在发报文,HL电压差占空比越大,接近于一直保持2.8v压差。虽然手册说隐性状态下HL应该同时保持在2.5v(实际1.46v),电压差0v,理论和实际总会有点差距。

    开始测试:

    只需要2根线:GND线可不用,gnd用于检修。

    H和L线,终端并联120Ω电阻。(断电,用万用表测 60Ω)

    21拨码都朝下 

    RES位置是内置120Ω电阻;拨码开关朝下是接通内置电阻。2个开关对应2个120Ω电阻

    3  硬件设备

    1. CAN总线: 一般用在汽车上,伺服驱动器,步进驱动器,舵机,分布式io等设备上。
    2. 有以太网转CAN和4G网转CAN。(注意每秒帧数1M≈9259帧)十的六次方除以 108bit
    3. 当然得到数据后,可以往RS485等上面传。

    4   CAN 数据帧

    1. 上图数值代表bit数量。
    2. 数据段:0~64表示 最大64bit(8字节)
    3. 标准数据帧,单帧最大108bit
    4. 1M是1000000bit(9259帧秒)
    5. 甲方出隐性,乙方出显性,总线结果是显性。(ack位置,甲方出隐性,从站出显性,甲方:确认已发送成功。)
    6. 最后保持7个bit隐性电平表示一帧结束。
    7. 高速FD设备:
    8. 除了数据段位置,其他都一样,在进入数据段后,波特率立即变成5MHz,同样的8字节时间长度,数据变成64字节。
    9. CAN-FD 数据段:速度是5M或8M,最大64字节(64byte)
    10. 和普通can不一样。普通CAN的单帧数据段只能最大64bit(8byte)

    设备ip我改的是77,默认ip是192.168.0.7 

    1. 硬件:有人 CANET200 (断链保存最后200帧)
    2. 电源 DC5~36
    3. 默认网络 192.168.0.7
    4. 密码 admin
    5. can1 20001(端口)用客户端模式去连
    6. rs485 20003
    7. can2 20005
    8. 设备支持:心跳,过滤id,中继,标准帧,扩展帧,CAN转485
    9. 单帧:固定13字节去覆盖标准帧(108bit)或扩展帧。

     现在要记住 148字节的样式,一会要用。它不能像串口那样单独发一个字节

    20001端口是 Can1

    20005端口是 Can2(端口和ip都是可以修改的,在网页192.168.0.7密码admin)

    1 4 8 样式的字节

    总共13个字节。 由于我设备是以太网转CAN,所以每帧固定发13字节。

    ★1 表示帧头信息占1字节(bit7,bit6,bit3~0)

    1. 7 6 54 3210
    2. 0 标准 0 数据帧 00 1000
    3. 1 扩展 1 远程 0~8有效字节数
    4. 调试结果:CAN2发,CAN1监视
    5. 08h 标准,数据帧, 8字节(id不能大于0x7FF11bit
    6. 48h 标准,远程 , 0字节(监视48h帧)应该类似于呼叫,11bit
    7. 88h 扩展,数据帧, 8字节(id不能大于0x1FFFFFFF),29bit
    8. C8h 扩展,远程 , 0字节(监视C8h帧),29bit
    9. 远程帧:8字节数据全是00h
    10. 本人测试,雷赛伺服CAN只支持08帧(标准数据帧)。CANopen把11bit切割成(4bit功能码 + 7bit从站地址)
    11. 48h和C8h应该类似于呼叫设备。所以数据段不使用

    ★4表示帧id信息:占4字节(COB_ID)//11bit(4bit+7bit)

    1. 新手:这部分只需要记住是占4个字节就行了。比如 12 34 56 78,不用考虑意义,再加上后
    2. 8字节,CAN就能发送出去。
    3. 标准帧:这部分使用11bit,值不能大于0x7FF;CANopen把11bit切割成(4bit功能码 + 7bit从站地址)
    4. 扩展帧:这部分使用29bit,所以id不能大于0x1FFFFFFF
    5. //=======老司机=================
    6. 这个4字节的内容会影响后面8字节的定义。
    7. 这个4字节也可以理解为:功能码+从站id地址
    8. 标准帧:(id帧只使用里面的11bit,功能码4bit + 从站地址7bit)//id值不能大于0x7FF
    9. 扩展帧:4字节内使用29bit// id值不能大于0x1FFFFFFF;
    10. 优先级:id帧首次出现隐性电平的帧,优先级低。(COB_ID 00000000最高)
    11. int cobid = 功能码<<7;
    12. cobid |= 从站id地址;
    13. return cobid;//标准帧:这个11bit具体定义要看手册,硬件上只定义id值不能大于0x7FF(11bit)
    14. //======标准帧============================
    15. COB_ID:(11bit)// 标准数据帧
    16. 功能码(4bit)+ 从站地址(7bit)
    17. 从站最大 0x7F0~127
    18. 雷赛手册定义:0站是广播站,指所有从站。
    19. COB_ID值(11bit)(4bit功能码 + 7bit从站地址)
    20. NMT 网络管理 0000 0x00
    21. 同步对象 0001 0x80
    22. 紧急 0001 0x80+从站地址
    23. Time 0010 0x100
    24. TXPDO1(发送) 0011 0x180+地址
    25. RXPDO1(接收) 0100 0x200+地址
    26. TXPDO2(发送) 0101 0x280+地址
    27. RXPDO2(接收) 0110 0x300+地址
    28. TXPDO3(发送) 0111 0x380+地址
    29. RXPDO3(接收) 1000 0x400+地址
    30. TXPDO4(发送) 1001 0x480+地址
    31. RXPDO4(接收) 1010 0x500+地址
    32. //=====SDO操作===========
    33. TSDO(服务器发送)1011 0x580+地址(get回帧)40读寄存器
    34. 4f8bit)
    35. 4b16bit)有效bit长度
    36. 4724bit)
    37. 4332bit)
    38. RSDO(客户发送) 1100 0x600+地址(set到驱动器)60成功80失败
    39. 2f8bit)
    40. 2b16bit)操作bit数
    41. 2724bit)
    42. 2332bit)
    43. //关闭心跳1017h+00寄存器赋值零 08 0000 0601 2b 1710 00 0000 0000
    44. // 08标准数据帧,601set从站1RSDO操作,2b覆盖16bit,
    45. // 1710寄存器0x1017,00子索引0,0000 0000值0x00;
    46. //伺服保存 08 0000 0601 23 1010 01 7361 7665
    47. //伺服恢复出厂 08 0000 0601 23 1110 01 6c6f 6164
    48. NMT 从站网络回帧 1110 0x700+地址
    49. //======参考==============
    50. cobid(4字节的11bit) b0 b1
    51. 00h 网络管理 01启用远程伺服节点 从站地址00广播(所有伺服)
    52. 02停止远程伺服节点
    53. 80预操作
    54. 81节点复位 01从站
    55. 82通讯复位
    56. //======参考==============
    57. cobid(4字节的11bit) 无b0
    58. 80h 同步报文 空
    59. //======参考================
    60. cobid(4字节的11bit) b0
    61. 700h + 从站地址(回帧 NMT) 00 Boot_up 心跳信号(寄存器 0x1017单位ms)
    62. 04 停止
    63. 05 操作
    64. 7F 预操作
    65. 注:因为是标准帧所以只使用11bit,又因为我的硬件是以太网转CAN,所以是固定的4字节里只使用11bit
    66. 如果是扩展数据帧,那4字节里就使用29bit
    67. //伺服恢复出厂 08 0000 0601 23 1110 04 6c6f 6164
    68. 1011这个寄存器是32bit的,必须用23操作码。
    69. 详细解释如下:
    70. 08 标准数据帧,数据长度8字节
    71. 601是 id帧(11bit)4bit功能码+7bit从站地址,RSDO操作1号从站
    72. 23 是写32bit数值
    73. 1110是: 0x1011寄存器
    74. 04是:子索引 第4个(14功能一样)
    75. 6c6f 6164 是: 数值 0x64616f6c

    ★8表示帧数据字节:占8字节 就算没数据,也得发8个0x00

    下面我发送:84 12345678 11 22 33 44 55 66 77 88

    84 12345678 11 22 33 44 55 66 77 88

    接收

    [2022-11-27 12:41:50.229] 84 12 34 56 78 11 22 33 44 00 00 00 00 

    看出区别了吗? 在第一字节是    控制byte, 4表示帧数据(在8个字节里只有4个字节有效。

    再来看下:

    1. 发: 88 12345678 11 22 33 44 55 66 77 88
    2. 收: 88 12 34 56 78 11 22 33 44 55 66 77 88

     这个案例,必须熟记。C#写业务的时候要用。

    //========================================================== 

    到这里,发送的数据帧就学完了。下面开始上硬菜。

    需要 EDS 对象字典  http://www.leisai.com/     

    参见《CANopen 技术指导手册

    从驱动器发送出来的 PDO 即为 TPDO

    DM-CAN 系列系列驱动器目前最多可以支持 4 组 TPDO(驱动器TX) 和 4 组 RPDO(驱动器RX) 。
    SDO 的传输效率要低于 PDO

    1. SDO做初始化参数用。
    2. PDO类似于快捷键,配置好参数后,就可以直接操作这个快捷键。
    3. SDO相当于去黄焖鸡单个点吃的,子索引相当于这道菜的基础上加辣?加香菇?加百叶?
    4. PDO相当于点套餐,后面的值是套餐的编号。这样可以省去一个个点菜的麻烦。(一个套餐要是有200多道菜,你用SDO一个个点,很浪费时间)

    伺服寄存器的bit长度需要使用对应的bit长度操作码。如 23

    1. get寄存器的bit长度
    2. 4f8bit)
    3. 4b16bit)
    4. 4724bit)
    5. 4332bit)
    6. set寄存器的bit长度 // 0x600+从站地址(set到驱动器)60成功80失败
    7. 2f8bit)
    8. 2b16bit)
    9. 2724bit)
    10. 2332bit)
    1. DM-CAN 系列驱动器的 CAN 地址总共有 7 位,最大地址 127
    2. 站点地址不可设置为 0
    3. 驱动器地址=高 2 位地址+低 5 位地址;
    4. 其中低 5 位地址由拨码开关 SW1~SW5 设定(off表示1
    5. ,高 2 位地址通过对象字典 0x2150寄存器 来设置,2150 默认值为 0,范围是 0~3
    6. 2150=1,表示增加地址32
    7. 2150=2,表示增加地址 64
    8. 2151 使用默认值00:地址来自拨码器,1地址来自2150寄存器
    9. 保存 1010+04 = 0x65766173; // 保存,重启生效(08 0000 0601 23 1010 04 7361 7665)
    10. 恢复出厂 1011+04 = 0x64616f6c; //驱动器恢复出厂设置 8字节数据
    11. 08 0000 0601 23 11 10 04 6c 6f 61 64
    12. 驱动器控制字(对象字典 6040h) 的 bit0-bit3、 bit7 位来控制(PV速度,HM回原点,PP位置)
    13. 状态字(对象 6041h) 的 bit0~bit3、 bit5、 bit6 显示硬件当前状态

     我也有考虑用can舵机,袖带方便,无奈价格吓退我,我花了80块买了这个步进驱动器。学习过程中,试错成本太高,猴年马月能回本????生活压力大。

    449元,广州那边发常州,东西还在路上。。

    下次更新

    驱动器接好后,会收到个心跳包。

     

    1. 7 6 54 3210
    2. 0 标准 0 数据帧 00 0001
    3. 1 扩展 1 远程 0~8有效字节数
    4. 回帧是 01h
    5. 标准,数据帧,长度1字节

    分析: 标准,数据帧,1字节,COB_帧id:0x0000 0707   ,数据  0x7f    //  07是驱动器地址

     光看心跳包01,大概知道,通讯用的是  标准  数据帧       0000  0001

    还得做测试,之前驱动器地址是0x07,我现在改成0x03地址,看看是什么心跳包。

    注意:驱动器OFF位置拨码表示1

     那148里 4的最后7bit是驱动器地址了(实际是 功能码4bit + 从站地址7bit)。

         00 00 07 03这里03是驱动器地址,07还不知道是什么意思,继续看手册。

    帧id:占4字节( COB_ID )功能码4bit + 从站地址7bit

    1. SDO收 580h+(get伺服)
    2. SDO发 600h+(set伺服)
    3. 700h+(从站状态)
    4. 0x00+(总线命令)
    5. 1字节 4字节 COB_ID 8字节
    6. 00 0000 0000 00 00 00 00 00 00 00 00
    7. 00 0000 0080 空 同步从站00(所有从站)
    8. 02 0000 0000 81 01 同步从站01
    9. 02 0000 0000 01 00 启动远程控制,从站00广播
    10. 01 0000 0701 00 回帧,心跳
    11. 08 0000 0601 23 00 14 01 00 00 00 80 SDO,写32bit
    12. 0x140001=0x8000 0000
    13. 08 0000 0581 60 00 14 01 00 00 00 00 回帧SDO 60成功,0x140001
    14. 08 601 2F 00 16 00 00 00 00 00 SDO写8bit,0x160000,=0x00
    15. 581 60 00 16 00 回帧SDO,60成功0x160000
    16. 08 601 2F 00 14 02 01 SDO写8bit,0x140002=0x01
    17. 581 60 00 14 02 回帧SDO,60成功140002
    18. 08 601 2B 00 14 03 90 01 SDO写16bit,140003=0x019040.0ms
    19. 581 60 00 14 02 回帧SDO,60成功140002

    帧头占1字节:8bit

    1. 7 6 54 3210
    2. 0 标准 0 数据帧 00 1000
    3. 1 扩展 1 远程 0~8有效字节数
    4. 调试结果:CAN2发,CAN1监视
    5. 08h 标准,数据帧, 8字节(id不能大于0x7FF
    6. 40h 标准,远程 , 0字节(监视40h帧)应该类似于呼叫
    7. 88h 扩展,数据帧, 8字节(id不能大于0x1FFFFFFF
    8. C0h 扩展,远程 , 0字节(监视C0h帧)
    9. 远程帧:8字节数据无意义,全是00h
    10. 本人测试,雷赛伺服CAN支持08帧(标准数据帧)。

    COB_ID 占4字节:只用低11bit(功能码4bit + 从站地址7bit

    帧id的功能码:00h+      80h+   180h+   200h+ 。。。。。

    这个00h是can总线命令。 

    COB_ID的值,直接影响后面数据8字节的功能。 

     C#设计的时候,COB_ID:  功能码  <<  7 ,然后或上从站地址

    1. int cobid = 功能码<<7;
    2. cobid |= 从站地址;
    3. return cobid;//标准帧(11bit)不能大于0x7FF;
    4. //==================================
    5. COB_ID:(11bit)
    6. 功能码(4bit)+ 从站地址(7bit)
    7. 从站最大0x7F0~127
    8. NMT 网络管理 0000
    9. 同步对象 0001 0x80+地址0
    10. 紧急 0010 0x80+地址
    11. TXPDO1(发送) 0011 0x180+地址
    12. RXPDO1(接收) 0100 0x200+地址
    13. TXPDO2(发送) 0101 0x280+地址
    14. RXPDO2(接收) 0110 0x300+地址
    15. TXPDO3(发送) 0111 0x380+地址
    16. RXPDO3(接收) 1000 0x400+地址
    17. TXPDO4(发送) 1001 0x480+地址
    18. RXPDO4(接收) 1010 0x500+地址
    19. TSDO(服务器发送)1011 0x580+地址(get回帧)
    20. RSDO(客户发送) 1100 0x600+地址(set到驱动器)
    21. NMT 错误控制 1110 0x700+地址(get回帧,从站状态)

    NMT 网络管理: 02     00000000     0101 0000  0000 0000

    1. COBID(11bit) B0 B1
    2. 00000000h 01启动远程 01从站地址
    3. 02停止远程 00广播
    4. 80预操作
    5. 81节点复位
    6. 82通讯复位

     SDO操作:写/读

    1. 580h+ TSD0 (get回帧)
    2. 600h+ RSD0 (set到驱动器)
    3. GOB_ID B0 B1B2 B3 B4B5B6B7
    4. 601(600h+从站地址)
    5. 2F8bit 1032寄存器(0x321010子索引 100x10)设定值
    6. 2B16bit 1032寄存器(0x321010子索引 10 320x3210
    7. 2724bit 1032寄存器(0x321010子索引 10 32 540x543210
    8. 2332bit 1032寄存器(0x321010子索引 10 32 54 760x76543210
    9. 40读寄存器 1032寄存器(0x321010子索引 空
    10. 1032寄存器地址(0x3210
    11. 10子索引(0x1016,一般是0~3
    12. 数值10 32 54 760x76543210

      

    SDO结果: 驱动器回帧 580h+

    1. 580h+ TSD0 (get回帧)
    2. 600h+ RSD0 (set到驱动器)
    3. GOB_ID B0 B1B2 B3 B4B5B6B7
    4. 581(580+从站地址)
    5. 60写入成功
    6. 80写入异常
    7. 4F一字节(回帧有效字节)
    8. 4B二字节
    9. 47三字节
    10. 43四字节
    11. 1032寄存器(0x3210
    12. 10子索引(0x1016,一般是0~3
    13. 数值10 32 54 760x76543210

    报文8字节:跟COB_ID配合使用

    1. 8字节报文详解:维修电工祁成
    2. B0 B1B2 B3 B4B5B6B7
    3. 0功能码
    4. 1寄存器地址 10 32 低字节在前 ( 0x3210
    5. 3子索引 010x01 )一般是0x00
    6. 4数据值 10 32 54 76 低字节在前(0x76543210
    7. B0功能码:
    8. 4f8bit)// 回帧有效bit长度
    9. 4b16bit)
    10. 4724bit)
    11. 4332bit)
    12. RSDO(客户发送) 1100 0x600+地址(set到驱动器)60成功80失败
    13. 2f8bit)//写寄存器bit长度
    14. 2b16bit)
    15. 2724bit)
    16. 2332bit)
    17. 读:
    18. 40读寄存器 0132(寄存器0x321010子索引(0x1016,一般子索引用0x00
    19. //样例: 08 0000 0601 40 10 32 00 //SDO到驱动器1从站40读寄存器 0x3210,子索引0
    20. // 40 03 30 00 // 40读寄存器,寄存器0x3003子索引0
    21. 4B二字节寄存器结果
    22. // 4B 03 30 00 5A 5A 00 00 //报文应该是:08 0000 0581 4B 03 30 00 5A 5A 00 00

    6000H~~~9FFFH 标准DSP CiA 402

    案例:运动模式   6060+00  =  3 //速度模式

    1. 运动模式(0x6060)= 1 位置
    2. 3 速度
    3. 4 转矩
    4. 6 回零模式
    5. 1 4 8
    6. 08 0000 0601 2f 6060 00 03 000000 // 2F写8bit,寄存器0x6060,子索引00,数值03

    案例2:保存设置   0x1010子索引1 = 0x65766173;

    1. 1 4 8
    2. 08 0601 23 10 10 01 73 61 76 65
    3. 注:
    4. 2332bit
    5. 1010 寄存器0x1010
    6. 01 子索引 0x01
    7. 73 61 76 65 寄存器数值 0x65766173
    8. 数据帧:"08 0000 0601 23 1010 01 7361 7665"
    9. 08 0000 0601 23 10 10 01 73 61 76 65
    10. 标准数据帧:8字节长度
    11. 帧id: 0x0601(SDO操作600h + 01h从站)
    12. 32bit: 23h
    13. 寄存器: 10 10 (低字节在前)
    14. 子索引: 01h
    15. 数据8字节: 73 61 76 650x65766173

    案例3:电机放向   2051+ 00  = 0;    //   0不变,1反方向

    1. 1 4 8
    2. 08 0000 0601 23 51 20 00 00 00 00 00
    3. 注:
    4. 2332bit
    5. 51 20 寄存器0x2051
    6. 00 子索引 0x00
    7. 00 00 00 00 寄存器数值 0x00000000
    8. 数据帧:
    9. 08 0000 0601 23 51 20 00 00 00 00 00

    1. 寄存器 子索引 长度 说明
    2. 1000h 00h 32bit 驱动器机种码 0x00040192
    3. 1001 00 错误缓存器(bit4通讯错误bit3温度bit2电压bit1电流bit0一般)
    4. 1003 预定义错误区
    5. 1005 SYNC同步码 0x80
    6. 1006 通讯周期us SNYC间隔
    7. 1007 PDO时间窗口
    8. 1008 00 设备名称
    9. 1009 00 硬件版本
    10. 100A 00 软件版本
    11. 1010 01 32bit 伺服保存 0x65766173
    12. 1011 01 32bit 恢复出厂值 0x64616f6c
    13. 1014 紧急事件(bit31 o开)
    14. 1017 生产者心跳周期ms
    15. 1018 01 厂家id
    16. 1018 02 产品代码
    17. 1018 03 修改版本
    18. 1018 04 序列号
    19. 1200 01 SDO参数 上→下 0x600+
    20. 02 上←下 0x580+
    21. 1400 01 PDO1参数(bit31 o开)(bit10~0 0x200+)
    22. 02 响应延迟
    23. 03 禁止时间
    24. 04
    25. 05 应答延迟
    26. 1401 PDO2参数
    27. 1402 PDO3参数(bit31 o开)(bit10~0 0x400+)
    28. 1403 PDO4参数
    29. 1600 01~08 RxPDO1对象绑定(不能超过64bit)
    30. 1601 01~08 RxPDO2对象绑定
    31. 1602 01~08 RxPDO3对象绑定
    32. 1603 01~08 RxPDO4对象绑定
    33. 1800 TxPDO1参数
    34. 1A00 01~08 TxPDO1对象绑定
    35. 1A01 01~08 TxPDO2对象绑定
    36. 1C00 01 邮箱输出类型:1
    37. 1C00 02 邮箱输入类型:2
    38. 1C00 03 过程输出类型:3
    39. 1C00 04 过程输入类型:4
    40. 1C12 00 PxPDO分配:0x1600
    41. 1C13 00 TxPDO分配:0x1A00
    42. 0x1000-设备类型UINT32 RO NO
    43. 0x1001-错误寄存器UINT8 RO YES
    44. 0x1002-制造状态寄存器UINT32 RO是
    45. 0x1003 8预定义错误字段ARRAY--
    46. 0x1005-COB-ID SYNC消息UINT32 RW NO
    47. 0x1006-通信周期UINT32 RW NO
    48. 0x1007-同步窗口长度UINT32 RW NO
    49. 0x1008-制造商设备名称STRING RO NO
    50. 0x1009-制造商硬件版本STRING RO NO
    51. 0x100A-制造商软件版本STRING RO NO
    52. 0x1010 2存储参数ARRAY RO NO
    53. 0x1011 2恢复默认参数ARRAY RO NO
    54. 0x1014-COB-ID EMCY UINT32 RO编号
    55. 0x1017-生产者心跳时间UINT16 RW NO
    56. 0x1018 4标识对象阵列--
    57. 0x1019-同步计数器溢出值UINT8 RW NO
    58. 0x1029 6错误行为对象ARRAY--
    59. 0x1200 2 SDO服务器参数ARRAY--
    60. 0x1400 2 RPDO通信参数1 ARRAY--
    61. 0x1401 2 RPDO通信参数2 ARRAY--
    62. 0x1402 2 RPDO通信参数3 ARRAY--
    63. 0x1403 2 RPDO通信参数4 ARRAY--
    64. 0x1600 8 RPDO映射参数1 ARRAY--
    65. 0x1601 8 RPDO映射参数2 ARRAY--
    66. 0x1602 8 RPDO映射参数3 ARRAY--
    67. 0x1603 8 RPDO映射参数4 ARRAY--
    68. 0x1800 6 TPDO通信参数1阵列--
    69. 0x1801 6 TPDO通信参数2 ARRAY--
    70. 0x1802 6 TPDO通信参数3阵列--
    71. 0x1803 6 TPDO通信参数4 ARRAY--
    72. 0x1A00 8 TPDO映射参数1 ARRAY--
    73. 0x1A01 8 TPDO映射参数2 ARRAY--
    74. 0x1A02 8 TPDO映射参数3 ARRAY--
    75. 0x1A03 8 TPDO映射参数4 ARRAY

    1. 寄存器 子索引 长度 说明
    2. 2000h 00h 32bit 最大电流ma
    3. 2001 00 电机一圈脉冲
    4. 2002 00 待机时间ms
    5. 2003 00 待机电流百分比 50%
    6. 2005 01 输出1功能
    7. 2005 02 输出2功能
    8. 2007 00 电机刹车
    9. 2008 输出引脚逻辑 0正逻辑 1
    10. 2009 fir滤波使能
    11. 2010 01 fir滤波时间
    12. 2012 软启动us
    13. 2013 电流环使能
    14. 2020 电机电阻
    15. 2021 电机电感
    16. 2028 输出极性
    17. 2039 外部位置H
    18. 2040 外部位置L
    19. 2043 当前转速
    20. 2048 母线电压
    21. 2051 电机方向 1反转
    22. 2056 故障检测
    23. 2057 清除报警 1清除
    24. 2058 软启动 1使能
    25. 2073 上电自动走位 1先正转30度再反转15
    26. 2093 清除故障记录
    27. 2150 从站地址
    28. 2151 从站地址来源
    29. 2152 01 DI1功能
    30. 02 DI2功能
    31. 03 DI3功能
    32. 04
    33. 05 DI5功能
    34. 2153 DI1滤波时间 us
    35. 2154 DI极性
    36. 2155 00 DI1状态
    37. 01 DI2状态

    1. 上面例举了2种CAN主站的方案:
    2. 以太网的方案分析数据帧简单,缺点是以太网实时性差,大负载后,网络卡顿。
    3. USB的方案,优点是实时性稳定,缺点是对开发人员门槛稍微高点。实际二次开发不难,就是把库再包装一下,方便自己调用。
    4. cia301 总线通信行规(数据帧格式)
    5. cia401 i/o模块行规
    6. cia402 运动控制
    7. cia403 人机接口行规
    8. cia404 测量设备与闭环控制行规
    9. cia406 编码器行规
    10. cia408 比例液压行规

    用 C# 写上位机,控制伺服电机,看我写的下篇。

  • 相关阅读:
    2023年第二十届中国研究生数学建模竞赛总结与分享
    Leetcode1462-课程表 IV
    基于python的火车票售票系统/基于django火车票务网站/火车购票系统
    localStorage和session storage
    2023版 STM32实战8 独立看门狗(IWDG)
    使用分贝的波动大小将声音数据降维成字符
    开快递驿站能赚钱么?去掉成本,一个月能赚多少钱?
    使用EasyExcel后端导出excel
    Vue实现动态组件
    25.leetcode---只出现一次的数字(Java版)
  • 原文地址:https://blog.csdn.net/cfqq1989/article/details/128009555