title: 如何利用CANopen控制伺服电机？
desc: 现在在做一个搬运机器人的项目，需要使用CAN总线控制8个伺服电机。由于刚接触can，不太明白原理，网上搜的资料看的也是一知半解，望各位大神答疑解惑，非常感谢。<br><br>我是分割线<br>之前问题大部分都已经解决，现在又遇到新的问题，头疼一天了，关于SYNC报文和PDO的问题。<br><br><br>我使用pcan view软件作为NMT主机 私服驱动器节点1，想要通过PDO返回速度信息。PDO已经配置好，使用的同步模式，发送SYNC可以返回速度信息。问题，<br><br>1.为什么我设置了SYNC的周期 （index1006） 但是SYNC不能按照周期发送，依然需要手动点发送才行？ <br><br>2.object中PDO mapping没有显示EVENT的是不是就表明不能使用异步PDO返回数值？ 非常感谢<br><br>我是分割线<br><br>测试阶段：现在刚刚进行到测试阶段，<br>1.我的想法是买一个usb转can接口，连接电脑伺服驱动器dc伺服电机，使用电脑配套软件发送can报文测试伺服电机。<br>2.后期使用beaglebone black板子，连接伺服驱动器伺服电机。使伺服电机作为canbus，bbb板子作为主节点（发送命令）。然后再bbb板子里编程，发送报文控制伺服电机。<br><br>问题：<br>1. 测试阶段时使用usb转can接口和电脑连接，使电脑作为主节点。那控制电机时，是不是需要发送那些16位的控制命令来控制？？这些16位的控制命令（比如初始化，加速之类的）是所有电机通用的还是各不相同？？ 如果要控制电机，物理连接之后该做什么，就是该以什么步骤去初始化电机（麻烦这一步骤说详细一些吧）？？？<br>2. 后期想要把控制命令写入芯片中，各位大神有没有模版之类的，完全不知道该如何操作。。。谢谢各位了<br><br>描述问题时说的很不专业，我也只是看了几篇资料，可能问题的描述上不太清晰，如果哪说的不明白，还望各位大神指出。<br><br>最后非常非常感谢大家！！！！！
topic: CAN总线
content: 前段时间搞机械臂控制的时候，CAN协议和CANopen协议都使用过，略懂一二，献丑写点自己的理解。CAN协议一般发送八字节长度的短帧数据达到对节点的控制，你买的驱动器应该有厂家自己的协议，对照着相应指令，你去填充这八个字节（包含节点号指令类型指令类型对应的数据，比如电机期望位置速度数据）发送下去，就能控制了。而CANopen协议，是一个通用的跟驱动器相关联的标准化协议，跟上面CAN协议不同之处在于你给驱动器发
answerer_tags: 明天会更好