一种BiSS协议的编码器数据读取方法( 二 )


XMC4500将BiSS-B协议编码器MA线状态由空闲时间的高电平状态置为低电平状态 , 以启动一次BiSS-B总线上的数据发送 。 作为回应 , 编码器会在一定时间后将SLO线状态由高电平置为低电平状态 , 并随后再次置为高电平 , 以表示开始传输位置数据 。 位置数据以Start位开始 , 后面依次为:12位多圈计数值用于记录编码器旋转圈数;13位单圈计数值用于记录编码器单圈位置;1位错误位用于监测光电编码器LED工作状态;1位警告位用于监测编码器内部传感器工作环境温度、6位CRC校验位和Timeout段 。
一种BiSS协议的编码器数据读取方法
文章图片
2软件设计
XMC4500的SPI接口有长达64位的FIFO存储空间 , 可以一次性存储全部BiSS-B协议数据帧 。 初始化时 , 应对SPI接口的波特率及FIFO存储空间进行相应设置 。 文中BiSS-B协议编码器数据通过定时中断来读取 。 根据BiSS-B协议编码器传感器模式时序 , XMC4500的MOSR引脚先发送若干Ack位检测时钟 , 直到MRSO引脚检测到Ack位为止 。 由于编码器输出SLO数据响应MA时钟和总线传输有一定延迟时间 , 需要测量并记录Ack位相对时钟延迟时间以进行补偿 。 然后 , XMC4500的MOSR引脚根据数据帧有效位数不断发送其他数据位时钟 , 同时MRSO引脚将SLO线数据逐一存储 。 当有效数据位数计数完毕后 , XMC4500读取存于FIFO中的数据帧位 , 并根据编码器Timeout延迟时间将MA线拉高直至数据帧结束 。 根据前面记录的Ack位延迟时间 , 对读取的FIFO数据帧位逐一处理 , 并采用多数表决方式确定每位的准确值 , 完成编码器单圈和多圈位置值重组 , 并定时将通过CRC校验的正确位置值发送至上位机进行显示 。 CRC校验方式为BiSS-B协议编码器数据帧中的多圈值+单圈值+错误位+警告位 。 根据编码器CRC计算等式 , 将计算出的6位CRC校验值与数据帧结尾处的6位动态随机CRC校验值比较 , 若两者相同则表示接收编码器数据正确 , 该读取值可以使用;否则应判定为错误值 , 予以忽略 。 编码器数据读取软件程序工作流程图如图4所示 。
一种BiSS协议的编码器数据读取方法
文章图片
3实验结果与分析
使用安川公司SGMM-A2C312伺服电机配合AD36-1213AF.0RBI多圈绝对值光电编码器搭建的实物平台对该方案实际效果进行了测试 , 实物验证平台如图5所示 。
LabVIEW上位机分别显示编码器上传的单圈和多圈位置值 , 如图6所示 。 编码器单圈位置值为13位 , 最大值8191 , 多圈值为12位 , 最大值为4195 。
一种BiSS协议的编码器数据读取方法
文章图片
将同步采集伺服电机自带的2048线增量式编码器位置值与采集到的13位绝对式编码器位置值进行对比 , 对比效果如图7所示 。
一种BiSS协议的编码器数据读取方法
文章图片
记录连续3个周期采集到的绝对式编码器和增量式编码器输出的位置值 , 并计算每个周期的平均速度 , 对比结果如表1所示 。
一种BiSS协议的编码器数据读取方法
文章图片
采用绝对式编码器和增量式编码器连续3个周期获得的平均速度相比误差很小 , 可见采用XMC4500采集的绝对式编码器值与增量式编码器相比具有较好的准确度和线性度 。
一种BiSS协议的编码器数据读取方法】使用XMC4500的SPI接口对BiSS-B协议编码器以传感器模式读取实际时序波形 , 如图8所示 。 图中通道1为MA线波形 , 通道2为SLO线波形 , 与BiSS-B协议传感器模式协议时序一致 。