欢迎光临散文网 会员登陆 & 注册

《九》canfestival系列教程之canopen中驱动器的配置方法(二)

2021-08-14 13:11 作者:GXTon_阿通  | 我要投稿

上面一节讲解了一下原理,如果对原理不明白的可以看第一节.

下面开始操作.

第一步

首先你要查手册,看一下驱动器的can初始波特率.如果没有波特率,就无法进行连接.

如果懒得去查,那就不断去切换波特率,什么时候有数据返回,就可以了.

一般返回的是设备上线报文,例如: 0x00000705  0x00

就说明当前驱动器是5号节点.

有了波特率节点号,后面就是进行参数配置了.

第二步(原理)

 先进行读取,读取驱动器的原有状态.

我们的目的是要进行配置驱动器,让驱动器接收速度指令.

并根据传入的速度值进行运动.

因为是要配置驱动器的接收,所以需要配置RPDO,

一般驱动器支持多个RPDO.

我们此次使用RPDO1.

RPDO1的通讯参数索引是1400h.(ds301上规定好的)

RPDO1的映射参数索引是1600h.(ds301上规定好的)

速度的在字典中的索引是60ffh.(ds402上规定好的)

这里都是协议上规定好的,配置好之后,驱动器接收了PDO1的数据,自然会找到1400h和1600h索引.从根据里面的配置解析数据.如果用的是PDO2,就是1401h和1601h索引了.

1400h是PDO的通讯参数,里面有6个子索引,分别代表了PDO的6个功能.

00h子索引:里面的值表示后面的子索引个功能里面,有几个参数是有效的.如果是1,就表示01子索引有效.

01h子索引:PDO的触发条件.

进行数据的读取:

读取 索引1400  子索引00

0x00000605      0x4000140000000000

返回

0x00000585      0x4F00140002000000

说明有2个参数

读取 索引1400  子索引01       

 0x00000605      0x4000140100000000

返回

0x00000585      0x4300140105020000

说明,0205代表接收的id是205(注意这里是小端模式) 

读取 索引1400  子索引02

0x00000605       0x4000140200000000

返回

0x00000585       0x4F001402FF000000

说明,ff代表模式.(因为是接收PDO,所以这个参数没有作用).

读取 索引1600  子索引00

0x00000605      0x4000160000000000

返回

0x00000585      0x4F00160001000000

说明,01代表有一个参数.

读取 索引1600  子索引01

0x00000605      0x4000160100000000

返回

0x00000585      0x4300160110004060

说明,10 00 40 60,因为是小端模式,所以正确顺序为:0x60 40 00 10.

6040代表索引,00代表子索引,10代表类型.


第三步(向字典中写入数据,确定PDO映射关系)

写入数据是有一套流程的.

这一步骤非常关键,它是配置PDO数据含义的,配置完成之后pdo传输的数据,就会按照配置好的意义解析.它决定了PDO这个"列车"上面载了什么样的"货物".通过这里,可以决定PDO传输速度还是位置等.

1.失能:  先要失能PDO.把PDO的cob-id最高位置一.

2.消数:  把PDO的映射个数写0.

3.映入:  把PDO要传输的数据写入字典中.

4.写数:  把PDO中映射的参数个数写到00子索引.

5.使能:  把PDO中cob-id使能.

6.模式:  把驱动器模式改成速度模式.


例子:

第1步  失能

0x00000605       0x22 00 14 01 05 02 00 80

22     :不计长度的写.(还有一种是按照个数的写)

14 00:索引

01     :子索引

0205:要接收的PDO的id号

80    :最高位置一,代表失能

返回以60开头,就是写入成功,以80开头就表示失败.


第2步  消数

0x00000605       0x22 00 16 00 00 00 00 00

22     :不计长度的写.(还有一种是按照个数的写)

16 00:索引

00     :子索引

00 00 00 00:要接收的PDO的id

返回以60开头,就是写入成功,以80开头就表示失败.


第3步  映射进入数据

0x00000605       0x22 00 16 01 20 00 ff 60

22     :不计长度的写.(还有一种是按照个数的写)

16 00,01:索引,子索引.

20 00 ff 60: 实际是0x60 ff 00 20,含义60ff是索引,00是子索引,20是32位无符号.驱动器接收到的数据,会存入到60ff,00里面.存入的数据以32位无符号格式.因为字典在ds402中规定好了,不能更改,字典索引60ff,00的里面存储的是速度值.所以改变这里面的值,就是改变驱动器的速度.

返回以60开头,就是写入成功,以80开头就表示失败.


第4步  传输个数写入

0x00000605       0x22 00 16 00 01 00 00 00

22     :不计长度的写.(还有一种是按照个数的写)

16 00,01:索引,子索引.

01 00 00 00: 数据个数是 0x00 00 00 01,就是传输一个数据,一条PDO中可以包含多个数据,但是这次我们只传输一个速度值,所以个数是1.

返回以60开头,就是写入成功,以80开头就表示失败.


第5步  PDO使能

0x00000605       0x22 00 14 01 05 02 00 00

22     :不计长度的写.(还有一种是按照个数的写)

14 00,01:索引,子索引.

05 02 00 00:因为是小端模式,转换之后是0x00 00 02 05,这个也就是驱动器接收的cob-id号.因为最高位不是1,所以是有效的PDO.驱动器会接受以0x205开头的can报文.

返回以60开头,就是写入成功,以80开头就表示失败.


第6步  设置为速度模式

0x00000605       0x22 60 60 00 03 00 00 00

22     :不计长度的写.(还有一种是按照个数的写)

60 60,00:索引,子索引.

03 00 00 00:03代表了速度模式.

返回以60开头,就是写入成功,以80开头就表示失败.

第四步(用PDO传输数据,验证结果)

用PDO传输数据,

本次实验是电脑用PDO传输速度给驱动器,

驱动器接收PDO速度,以该速度进行电机驱动.

因为驱动器配置成了5号节点.

所以,PDO的格式为:

0x00000205      0xe803000000000000

0x00000205: 标识符  或者叫做  id  或者叫做  COB-ID.

                      这里可以拆解成两部分200+5,

                      200代表功能码,表示该条报文为PDO传输数据

                      5代表节点号,因为驱动器被配制成第五节点.

 0xe803000000000000:  数据,因为是小端,所以正确顺序为0x03e8,就是10进制的1000.

综上,该条指令的意思就是,向5号驱动器,用PDO的方式发送1000这一数据.

数据"1000"代表什么含义,PDO指令并没有说明,因为传输双方,在配置字典的时候就已经规定PDO1传输的数据是0x60ff里的数据(也就是ds402中规定的速度),所以传输双方"心知肚明".












《九》canfestival系列教程之canopen中驱动器的配置方法(二)的评论 (共 条)

分享到微博请遵守国家法律