1.发送pdo
1.配置字典
CANopen知识、cia301协议(查找字典中的索引号)
2.配置时钟
us和ms的系数,配置准了之后就可以了。
TPDO1的通信参数是0x1800,映射参数是0x1A00,其中1800和1A00是成对出现的。意思是用就是用1对,没有用1个之说。
所以如果要用TPDO1就需要配置0x1800和0x1A00,和配置sync一样,找这两个索引号。
0x1800有很多子索引:一共有是6个子索引(6个参数)。
映射参数0x1A00可以根据实际情况进行配置。
00h 值为5 表示下面五个参数是有效的,ro表示只读。
01h 发送的标识符即COB-ID,180是功能码,ID是节点号
02h 传输类型 FF表示按照定时器发送,如果是01就表示跟随同步帧发送,每一个同步帧发送一个PDO。
0x00同步传输,TPDO在每次接收到SYNC报文时触发发送。
0x01同步传输,TPDO在每接收到1个SYNC报文时触发发送。
0x02同步传输,TPDO在每接收到2个SYNC报文时触发发送。
0x03....(以此类推)
0xFE-异步传输--事件驱动,TPDO在数据发生变化时或定时器超时触发发送。
0xFF-异步传输--设备特定事件驱动,TPDO触发条件由制造商定义。
03h Inhibit Time 禁止时间,为了不让某一个ID(防止某一低层级或高等级的报文)一直占用总线,也就是相同的两个报文中间有时间间隙,便于其他不同等级的报文可以插进去。单位ms
0表示没有禁止时间。
04h Compatibility Entry(兼容性条目),用于兼容性设置,通常用于特定应用场景。
05h Event Timer 事件定时器,定义事件驱动传输模式下,TPDO的最大发送间隔时间,单位ms
06h SYNC start value ,定义同步传输模式下,TPDO的起始SYNC计数器值。
比如SYNC start value配置为02,就表示收到SYNC报文就从2开始计数,此时若子索引0x02配置为5,则经历2、3、4、5就会发送PDO。
注意:子索引05和子索引06的配置与子索引02有关。
另外:Transmission Type设置为0x02表示设置为收到两个SYNC报文就发送TPDO,这个SYNC报文是由谁发出的?比如我的从站节点为2,应该收到什么样的canid报文才表示收到了SYNC报文?
SYNC 报文 是由 SYNC 生产者(通常是主站或同步节点) 发出的。它的作用是同步所有从站节点的 TPDO(传输过程数据对象)和 RPDO(接收过程数据对象)的传输。
SYNC 生产者通常是主站。
SYNC 生产者会周期性地发送 SYNC 报文,以同步网络中的从站节点。
SYNC 报文的 CAN ID:固定为 0x080(默认的 SYNC 对象标识符)
从站节点如何识别 SYNC 报文
从站节点会监听 CAN ID 为 0x080 的报文,识别是否为 SYNC 报文。
SYNC 报文通常是一个空报文(数据长度为 0),或者包含一个字节的同步计数器值(可选)。
如果 SYNC 报文包含同步计数器值,从站节点可以根据该值进行更复杂的同步操作。
总结:从站节点会监听 CAN ID 为 0x080 的报文,如果 Transmission Type 设置为 0x02,则从站节点会在接收到 2 个 SYNC 报文 后发送一次 TPDO。
CAN ID 过滤:
SYNC 报文内容:
00h 如果想传1个数据就把值改为1,如果想传2个数据就把值改为2。
01h 数据A,A是在字典的7100h索引、01h子索引的10h,10h表示16位的数据。
02h 数据B,B是在字典的7100h索引、02h子索引的08h,08h表示8位的数据。
总结:
每个PDO都是1个通道,开源CANFestival库提供了100多个pdo通道,tpdo1、tpdo2、tpdo3等等。
一般的驱动器有2-4个rpdo通道,比如A驱动器有rpdo1、rpdo2、rpdo3、rpdo4,B驱动器有rpdo1和rpdo2。
根据以上tpdo和驱动器的rpdo进行绑定,然后就可以控制电机了,绑定需要用到COB-id的知识。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】