一种BiSS协议的编码器数据读取方法
2021-02-10李绍军胡福东李其昌梁冬冬夏伟光
李绍军 胡福东 李其昌 梁冬冬 夏伟光
摘 要:针对目前BiSS协议编码器数据读取多采用FPGA实现的实际情况,文中介绍一种基于XMC4500微控制器的BiSS协议编码器数据读取实现方案。采用该方案,可将使用BiSS协议编码器的伺服系统控制电路常用的DSP+FPGA双控制器架构方式简化为XMC4500单控制器方式,在一定程度上降低了硬件成本和开发难度。用该方案采集BiSS协议编码器数据的实物平台,使用LabVIEW显示对读取的数据,并与电机自带增量编码器值进行对比,同时记录BiSS协议编码器实际数据波形图,结果表明,该方案具有较高的采样速率和较好的读取效果,具有一定参考价值。
关键词:BiSS;XMC4500;DSP;FPGA;LabVIEW
0 引言
BiSS协议是一种快速双向通信协议,具有通信速率高、抗干扰能力强、硬件电路简单等优点,在伺服系统位置传感器领域得到了越来越广泛的使用[1-2]。BiSS通信协议物理接口采用全双工差分RS422方式,但由于其时序较为独立及长度不定,难以使用常用的通用异步串口直接对BiSS协议编码器数据解码读取。实际使用中,BiSS协议的编码器数据可通过编码器厂商提供的专用解码芯片、微控制器或FPGA读取[3]。编码器厂商提供的专用解码芯片一般价格较高且功能单一;文 献[4]中提出使用CY8C29466微控制器对BiSS协议编码器数据进行解码,以读取正确的解码值,但受限于微控制器功能及性能,只能实现较低的采样速率,难以满足高速、高性能伺服控制系统的要求;文献[5]提出使用A3P400型FPGA对BiSS协议编码器数据进行解码,以准确读取解码值且具有较高采样速率,但FPGA只用于编码器数据采集,实际伺服电机由DSP驱动,即伺服系统电路结构采用DSP+FPGA方式实现。这种双控制器方式通过高性能DSP实现控制算法的快速准确计算,同时利用FPGA的并行机理完成信号采集[6]。如果可以使用较为简化的硬件电路实现对BiSS协议编码器数据准确的解码,并具有较高的数据采样速率,这样的方式显然具有更高实用价值。
1 设计方案
BiSS-B在BiSS协议中应用最为广泛,由于涉及专利保护问题,随之开发出BiSS-C协议,BiSS-C与BiSS-B可实现物理接口兼容[7],不同点在于两者时序定义略有差异,文中编码器使用BiSS-B协议。BiSS协议具有传感器模式和寄存器模式两种不同工作模式,前者可实现编码器数据的快速读取,后者可实现编码器寄存器数据的读写双向访问[8],文中基于传感器模式对方案的可行性进行了验证。
BiSS协议编码器使用Hengstler公司的AD36-1213 AF.0RBI多圈绝对式光电编码器,其具有500 kHz带宽,适合作为无刷伺服电机位置传感器。
BiSS-B协议传感器模式时序如图1所示。
MA为BiSS总线的时钟线,SLO为Biss总线的数据线。当MA和SLO同为高电平状态时,总线处于空闲时间,不进行数据传送。非空闲时间BiSS-B协议编码器数据线SLO上的数据帧格式如图2所示,图中括号内的数字表示该段数据所占用的MA时钟个数,不带括号的表示与MA时钟个数无关。
根据3种不同BiSS协议编码器数据解码方式特点和BiSS-B协议编码器时序的分析,文中采用XMC4500微处理器实现对BiSS-B协议编码器数据的解码,该方案硬件电路组成如图3所示。
XMC4500是Infineon公司推出的基于Arm Cortex-M4 内核的微控制器,主频可以达到120 MHz,其内部集成多种专用电机控制外设,有多达6个通信接口方面,分别用于UART、SPI、IIC和IIS等4种不同功能的通用串行接口。本文使用其SPI功能接口实现对BiSS-B编码器数据的解码。XMC4500的SPI接口MOSR引脚作为输出引脚,输出BiSS协议编码器时钟线MA信号;MRSO引脚作为输入引脚,采集BiSS协议编码器数据线SLO上的信号。LabVIEW是一种图形化编程的数据采集软件,具有数据读取、数据分析、数据管理等功能,可减少程序代码编写,缩短设计时间[9]。为方便对BiSS编码器数据的观察,使用LabVIEW设计了对应的上位机,显示XMC4500通过UART接口定时发出的编码器解码数据。
XMC4500将BiSS-B协议编码器MA线状态由空闲时间的高电平状态置为低电平状态,以启动一次 BiSS-B总线上的数据发送。作为回应,编码器会在一定时间后将SLO线状态由高电平置为低电平状态,并随后再次置为高电平,以表示开始传输位置数据。位置数据以Start位开始,后面依次为:12位多圈计数值用于记录编码器旋转圈数;13位单圈计数值用于记录编码器单圈位置;1位错误位用于监测光电编码器LED工作状态;1位警告位用于监测编码器内部传感器工作环境温度、6位CRC校验位和Timeout段。
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所示。
3 实验结果与分析
使用安川公司SGMM-A2C312伺服电机配合AD36- 1213AF.0RBI多圈绝对值光电编码器搭建的实物平台对该方案实际效果进行了测试,实物验证平台如图5所示。
LabVIEW上位机分别显示编码器上传的单圈和多圈位置值,如图6所示。编码器单圈位置值为13位,最大值8 191,多圈值为12位,最大值为4 195。
将同步采集伺服电机自带的2 048线增量式编码器位置值与采集到的13位绝对式编码器位置值进行对比,对比效果如图7所示。
记录连续3个周期采集到的绝对式编码器和增量式编码器输出的位置值,并计算每个周期的平均速度,对比结果如表1所示。
采用绝对式编码器和增量式编码器连续3个周期获得的平均速度相比误差很小,可见采用XMC4500采集的绝对式编码器值与增量式编码器相比具有较好的准确度和线性度。
使用XMC4500的SPI接口对BiSS-B协议编码器以传感器模式读取实际时序波形,如图8所示。图中通道1为MA线波形,通道2为SLO线波形,与BiSS-B协议传感器模式协议时序一致。
局部波形如图9所示,图中可见,XMC4500的SPI接口所提供的MA线时钟频率大于5 MHz。
综合图8和图9进行分析,使用XMC4500微控制器SPI接口对该型编码器完成一次读取用时少于28 μs,其中包含编码器厂商设定的Timeout时间约(10~15)μs, 可实现较高的采样速率。
4 结束语
文中提出了一种基于XMC4500讀取BiSS协议编码器数据的方法,试验结果表明,该方法可替代FPGA完成对BiSS协议的解码,具有较高的数据采样速率。使用该方法可以用XMC4500单控制器替代DSP+FPGA方式,实现对BiSS协议编码器伺服系统的控制,简化了硬件电路设计,具有较好的参考价值。
参考文献:
[1] 商怀昊,韩基鹏,肖鹏,等.基于BiSS-C协议的编码器接口技术及在伺服驱动系统中的应用[J].工艺技术创新,2014,01(02):211-215.
[2] 俞小露,赵志方,卢欣霁.BiSS-C绝对式级联光栅编码器在工业机器人领域的应用[J].世界制造技术与装备市场,2015 (2):119-120.
[3] 王希远,成荣,朱煜,等.基于FPGA的BiSS-C协议编码器接口技术研究及解码实现[J].液晶与显示,2016,31(4):386-391.
[4] 高长清,林辉,张辉.BiSS接口的光电编码器数据读出研究[J].计算机测量与控制,2009,17(5):957-958,961.
[5] 王列虎,皮佑国.基于BiSS协议的编码器接口技术研究及研究[J].机床与液压,2011,39(8):103-105,121.
[6] 李捷,卢子广,杨达亮.基于DSP/FPGA的级联型固态变压器控制研究[J].电测与仪表,2016,53(24):39-43,55.孙彦超.基于XMC4500的PMSM的控制系统的设计[D].沈阳:沈阳航空航天大学,2016.
[8] 霍海龙.基于BiSS的编码器及其在伺服驱动系统中的应用[J].电气自动化,2011,33(3):12-14.
[9] 谢志远,魏佳红,时方,等.LabVIEW在中压电力线信道噪声发生器设计中的应用[J].电测与仪表,2014,51(14):120-124.