欢迎光临
我们一直在努力

伺服控制入门 第二章——伺服控制的通信协议基础(二)

参考教程:https://www.bilibili.com/video/BV14q4y147PU?spm_id_from=333.788.videopod.episodes&vd_source=8f8a7bd7765d52551c498d7eaed8acd5

二、CANopen基础(下)

1、CANopen紧急报文

(1)紧急报文是事件触发型报文,仅当设备内部出现的致命错误时触发,以最高优先级发送到其它设备,适用于中断类型的错误报警信号。

(2)一个紧急报文的数据段包含8个字节,报文格式如下:

(3)16进制的应急错误代码如下表所示,应急错误代码中“xx”部分由相应的设备子协议定义。

(4)错误寄存器(Error Register)在设备的对象字典(索引0x1001)中有定义。下表说明了错误寄存器的位定义,设备可以将内部错误映射到这个状态字节中,快速查看当前错误。

2、SDO通讯

(1)SDO(Service Data Object,服务数据对象)概述:

①SDO主要用来在设备之间传输低优先级的对象,典型是用来对从设备进行配置、管理,比如修改速度环、位置环的PID参数,以及修改PDO配置参数等。

②通过使用索引和子索引,SDO使客户机能够访问(读或写)设备对象字典中的对象。

③通常情况下,传输的数据长度不超过4个字节,当数据长度超过4个字节时,需要分拆成几个报文。

④SDO协议是确认服务类型,每个请求消息都需要生成一个应答。SDO请求和应答报文总是包含8个字节。

(2)SDO的通讯对象标识符,使用中具体定义规则如下:

对象

COB_ID

COB_ID范围

通讯对象

Tx-SDO(请求报文)

0x600+节点地址

0x601-0x67F

/

Rx-SDO(应答报文)

0x580+节点地址

0x581-0x5FF

/

(3)SDO读报文格式:

①SDO读报文的请求报文格式如下,其中命令字为0x40,Byte4-7为缺省内容,可填充0。

②SDO读报文的应答报文格式如下,Byte4-7为根据索引寻到的数据(最大4字节),根据数据的大小,命令字的选取如下:

如果数据为1字节,则命令字为0x4F

如果数据为2字节,则命令字为0x4B

如果数据为3字节,则命令字为0x47

如果数据为4字节,则命令字为0x43

如果失败,则命令字为0x80

(4)SDO读报文示例:

        读取设备站号为0x01的伺服实际位置(Index为6063,Sub_Index为00,数据宽度为32bits),读到的数据是4个字节,CANopen数据低字节在前、高字节在后(小端模式),所以数据为FFFFFD113H(补码形式),转换成10进制即为-12013

        请求(发送)报文的命令字为0x40,Bit4-Bit7缺省,以“0”填充;回应的数据长度为4个字节,所以应答(回应)报文的命令字为0x43

(5)SDO写报文格式:

①SDO写报文的请求报文格式如下,Byte4-7为请求写入对象索引指向对象的数据(最大4字节),根据数据的大小,命令字的选取如下:

如果数据为1字节,则命令字为0x2F

如果数据为2字节,则命令字为0x2B

如果数据为3字节,则命令字为0x27

如果数据为4字节,则命令字为0x23

②SDO写报文的请求报文格式如下,Byte4-7为缺省内容,可填充0或者主站请求写入的数据,如果写入成功,命令字为0x60,否则命令字为0x80。

(6)SDO写报文示例:

        写设备站号为0x01的伺服目标位置(Index为607A,Sub_Index为00,数据宽度为3220bits),请求写入的数据是4个字节,CANopen数据低字节在前、高字节在后(小端模式),所以数据为100000,转换成16进制即为000186A0H(补码形式)

        请求的数据长度为4个字节,所以请求(发送)报文的命令字为0x23;应答(回应)报文的命令字为0x60,Bit4-Bit7缺省,以主站请求写入的数据填充

(7)如果SDO通讯失败,从站回复的报文格式如下,命令字为0x80,Bit4-Bit7为4字节的错误代码。

3、PDO通讯

(1)PDO(Process Data Object,过程数据对象)概述:

①PDO用来传输实时数据,数据从一个生产者传到一个或多个消费者。1个PDO1次最多传输8个字节的数据。

②每个PDO在对象字典中用2个对象描述:

[1]PDO通讯参数:包含COB_ID、传输类型、禁止时间、定时器周期。

[2]PDO映射参数:包含对象字典中对象列表,这些对象映射到PDO里,包含数据长度。生产者和消费者根据映射的地址解释PDO报文的内容。

③PDO报文的内容是预定义的(或者在网络启动时由主站配置)。

(2)PDO通讯参数:

①PDO通讯参数分为发送PDO通讯参数(Index范围为1800H-19FFH)和接收PDO参数(Index范围为1400H-15FFH)。

②PDO通讯参数说明了PDO的基本特性,如COB-ID、传输类型、禁止时间和事件定时器等,它决定了PDO是以何种方式发送和接收数据。

③PDO禁止时间:两个连续PDO报文传输的最小间隔时间,其目的是避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低的数据无力竞争总线的问题。禁止时间由16位无符号整数定义。

④PDO定时周期:当超过定时时间后,一个PDO报文可以被触发发送,然后计时时间重置,周期由16位无符号数定义。

(3)PDO的通讯对象标识符,使用中具体定义规则如下:

①每路Tx/Rx-PDO都有自己的COB-ID,就像每个物理外设都有独立的地址,主站可以通过不同的ID,分别和不同的PDO通道通信,互不干扰。

②上表中的“通讯对象”就是对象词典里的索引地址,用来配置这路PDO的通讯参数,比如1800H对应Tx-PDO1的通讯参数。

(4)PDO报文的传输类型:

①同步传输:设备的PDO报文发送,必须等待主站发的SYNC报文,所有设备同步在同一时间点收发数据。

        非周期:由远程请求帧(RTR)预触发传送,或者由设备子协议规定中的对象特定事件预触发传送

        周期:每收到N个SYNC报文后(N可配置,范围1~240),发送一次PDO报文

②异步传输:由设备协议中规定的对象特定事件触发传送,设备不依赖SYNC报文。

(5)PDO映射:

①PDO映射表说明了PDO中所包含的通讯对象,决定了发送或接收的数据内容。

[1]发送端(Tx-PDO)映射表:决定把设备里哪些对象字典参数打包发出去。

[2]接收端(Rx-PDO)映射表:决定收到的PDO数据,要存到设备的哪些对象字典参数里。

②比如PDO1,传输映射的Index范围为1A00H-1BFFH,接收映射的Index范围为1600H-17FFH,其中1A00H指向TPDO1映射组中有多少有效映射的对象,假如是3个,那么设备只会按前3个映射项打包数据,后面的会被忽略,同样的,1600H指向RPDO1映射组中有多少有效映射的对象。

(6)发送PDO报文举例:

①上图是伺服的发送PDO(Tx-PDO1)配置,映射组有效映射的对象数量为2,表示这个PDO里有2个有效数据,按Index从小到大的顺序将有效数据填入PDO报文:

[1]映射1——1A0001的Value为60630020H,第一个有效数据的Index=0x6063(实际位置对象)、SubIndex=0x00、Bits=0x20(长度32位),假设实际位置为-12013,那么转换为十六进制补码,得FFFFD113H。

[2]映射2——1A0002的Value为60410010H,表示第二个有效数据的Index=0x6041(状态字对象)、SubIndex=0x00、Bits=0x10(长度16位),状态字为0231H。

②传输类型为254,那么,可以是实际位置或者状态字改变时,发出该PDO报文。

(7)接收PDO报文举例:

①上图是伺服的接收PDO(Rx-PDO1)配置,映射组有效映射的对象数量为3,表示这个PDO里有3个有效数据:

[1]映射1——160001的Value为60FF0020H,第一个有效数据的Index=0x60FF(位置模式下的目标速度)、SubIndex=0x00、Bits=0x20(长度32位)。

[2]映射2——160002的Value为60400010H,表示第二个有效数据的Index=0x6040(控制字对象)、SubIndex=0x00、Bits=0x10(长度16位)。

[3]映射3——160003的Value为60600008H,表示第二个有效数据的Index=0x6060(工作模式)、SubIndex=0x00、Bits=0x08(长度8位)。

(8)EDS(电子数据表格)文件是PLC所连接从站的标识文件,PLC通过该文件来辨认从站所属的类型,该文件包含包含了从站的所有信息,比如生产厂家、序列号、软件版本、支持波特率种类、可以映射的OD及各个OD的属性等等参数,类似于Profibus的GSD文件,因此在进行硬件配置前,首先需要把从站的EDS文件导入到上位组态软件中。

4、同步报文

(1)同步报文的数据帧格式如下所示,它没有数据段,COB_ID固定为0x80。

(2)同步报文的作用:

①控制TPDO的发送。

②控制RPDO的激活。

③同步各个节点的时钟。

(3)同步报文的传输类型:

①同步报文的传输类型与PDO的传输类型关联。

②1-240类型:每经过N个SYNC报文后(N可配置,范围1~240,通常设置为1),发送一次PDO报文。

(4)同步报文的通讯参数:

①通讯循环周期:索引为1006H,规定了同步帧的循环周期。

②同步窗口时间:索引为1007H,约束了同步帧发送后从节点发送PDO的时效,即在这个时间内发送的PDO才有效,超过时间的PDO将被丢弃。

(5)伺服周期性同步位置模式(CSP,Cyclic Synchronous Position Mode)原理:

①伺服工作在7号插补模式,上位控制器完成位置指令规划,然后将规划好的目标位置(索引为0x607A)以周期性同步的方式发送给伺服驱动器,控制器发送目标位置的周期必须是伺服驱动器位置环周期的整数倍。

②控制器周期性地发送同步报文,比如1ms、2ms或者4ms等,驱动器主动通过微调自身控制环频率将控制环(电流环、速度环、位置环)和同步信号同步,从而实现多个驱动器同步工作。

③控制器发送RPDO给各个驱动器,比如目标位置,在下一个同步报文到来后,驱动器将指令激活,所有的驱动器同时更新指令,从而实现同步。

④在运行同步工作模式的时候,SDO和TPDO也是允许的,但是发送的时机需要检测,因为RPDO是最重要的数据,必须优先保证RPDO的接收,然后在空闲时间才可以发送SDO和TPDO,一个比较合理的排列是,同步周期里面,前半时间用于SDO以及TPDO的发送,后半时间用于RPDO的接收。

⑤驱动器接收到设定位置后与当前位置比较,并依据控制器的周期与伺服位置环周期的倍数进行线性或非线性插值,将插值作为每个位置环周期的“设定位置”。

        FD422S位置环的周期1ms,假设控制器周期为4ms,伺服当前位置为300inc,目标位置为700inc,那么接下来的4个周期,伺服位置环的“设定值”就依次是400inc、500inc、600inc、700inc

        如果不进行插值,伺服的第1个周期就将位置设置为700inc,那么接下来2-4个位置环扫描周期内设定位置维持不变,相当于电机停止,直到第4ms时控制器又发送新的“给定位置”,由于间隔了4ms驱动器才更新“设定位置”,电机并没有真的停止,而是表现为顿挫感,转动不流畅、不连贯

⑥伺服的速度取决于控制器的周期以及每个周期的脉冲增量,以上面的举例为例,如果控制器每4ms将目标位置增加400inc,那么此时伺服的运转速度n=400inc×1000ms÷4ms=100000inc/s,也就是600rpm。

⑦在CSP模式下,多个轴之间可以实现同步控制,各个轴的目标位置由PLC规划,PLC将规划好的目标位置周期性地发给各个轴,轴上的伺服电机收到目标位置后,以同步信号为参考,保证同步执行这个目标位置(不会出现“腿比手先动”之类的情况)。

(6)由于CAN总线有带宽的限制(负载率的限制),那么一个网段中,最多同步控制的轴数与同步周期有关。

        比如同步周期为1ms,那么最多控制轴数为3,因为PLC发送一个RPDO用时111us(47us+64us),SERVO发送一个TPDO用时111us(47us+64us),PLC发送同步报文用时47us,那么控制3个轴,一个同步周期至少耗时(111us+111us)×3+47us=713us,此时总线负载率已经很高了,继续增加轴数,可能会导致总线频繁出现错误帧

        类似地,如果同步周期为2ms,那么最多控制轴数为6,,如果同步周期为4ms,那么最多控制轴数为12,这对于多数自动化设备已经足够了

​​​​​​​

(7)同步精度取决于同步信号的精度,高性能的伺服同步信号抖动一般小于5us。如果同步信号抖动为5us,电机速度3000rpm,分辨率为10000,同步周期为4ms,即每4ms更新2000inc,那么5us是2.5inc,即5us的抖动精度在±2.5inc。

赞(0)
未经允许不得转载:171主机测评 » 伺服控制入门 第二章——伺服控制的通信协议基础(二)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址