随着科技的不断进步,高性能伺服控制系统在航空航天、数控机床、高端机器人等领域得到广泛应用,并且对定位精度和速度的要求不断提升.位置编码器作为高性能伺服系统的重要组成部分,在传输伺服电机位置数据方面显得极为关键,其反馈精度直接影响着伺服系统的精度[1-3].位置编码器根据工作模式可分为增量式和绝对式编码器.相较于增量式编码器而言,绝对值编码器每个位置都有固定的编码值,精度高、传输速率快、能反映绝对位置[4].目前,众多知名伺服电机生产厂商在伺服电机绝对值编码器内存储伺服系统的电子铭牌数据,通过读取这些信息实现对伺服系统识别和控制,这已成为高性能伺服系统的一种通用方式.而对编码器寄存器参数的写入和修改,则是高性能伺服电机维修的重要环节.一些知名伺服电机厂商定义了绝对式编码器的协议标准,其通信速率和通信方式影响高性能伺服系统反馈环节的精度.由iC-Haus公司提出的BiSS协议是一种双向同步串行通信协议,包括私有的BiSS-B版本和开源的BiSS-C版本,其波特率可达10 Mb/s,是其他同类型通用串行通信协议的4倍,因此被广泛应用于高性能伺服控制系统领域[5-6].BiSS协议的解码可以通过官方芯片BiSS Master、单片机或者现场可编程门阵列(FPGA)来实现[7].尽管官方解码芯片易于使用,但是其处理数据的方式单一且成本较高.单片机虽然可以完成对BiSS协议的解码,但在高精度系统中,由于单片机性能的限制,可能导致编码器位置数据的丢失[8].相比之下,FPGA具有并行特性、高灵活性和快速处理数据的能力[9-10],更能满足BiSS协议的要求.王列虎等[11]对BiSS-B协议的传感器模式和寄存器模式进行了研究,并用FPGA实现了协议的传感器模式,但是没有实现BiSS-B的寄存器模式及BiSS-C协议.文献[12-15]基于FPGA设计了BiSS-C协议传感器模式数据的解码系统,但是也没有同时实现BiSS-B协议和BISS-C的寄存器模式.因此,设计同时支持BiSS-B和BiSS-C协议传感器及寄存器模式的解码系统,并实现对编码器内电子铭牌数据读写的全功能BiSS协议解码系统,提升了伺服系统的性能,对伺服驱动器支持BiSS及其他编码器协议具有理论和实践意义;同时,相关技术可用于高性能BiSS伺服系统的维修,具有重要的应用前景.针对上述问题,本研究提出了基于嵌入式FPGA的全功能BiSS协议解码方案,并利用QT平台设计了PC上位机人机交互系统.该解码方案同时实现了对BiSS-B和BiSS-C协议的解码,并支持对编码器寄存器数据的读写,全面实现了BiSS编码器协议的解码.1 BiSS协议时序分析BiSS协议包含BiSS-B和BiSS-C两个版本,在协议时序上存在差异,但在接口上实现了完全兼容.BiSS-B和BiSS-C两个版本协议均包括传感器模式和寄存器模式两部分内容,在传感器模式下可以快速获取编码器位置信息,在寄存器模式下则可以实现寄存器数据读写[16].BiSS-C协议的传感器模式时序由两条信号线构成,其中帧头、位置数据和超时3个阶段组成一个完整的BiSS帧,如图1所示.当设备处于空闲时,时钟信号与编码器位置信号均被置为高电平;当时钟信号开始工作时,在第2个上升沿编码器信号被置为低电平,进入“ACK”状态,等待若干个时钟后,传输“Start”开始位、“CDS”位与编码器位置数据,之后传输2位数据,即“Err”位和“Warn”位,用于检测编码器是否工作正常,最后传输6位CRC校验码.校验码传输完成后进入TIMEOUT阶段,在该阶段主机的时钟信号的相反电平对应CDM位.其中BiSS-B协议的传感器模式类似,只是不包含CDS位和CDM位的传输[16].10.13245/j.hust.241209.F001图1传感器模式数据帧寄存器模式下,BiSS-B协议数据传输较慢,时钟信号根据占空比进行编码,在1个BiSS帧完成寄存器数据传输;而BiSS-C协议的寄存器模式支持连续读写,主机的CDM帧和从机响应的CDS帧由多个BiSS帧CDM位和CDS位拼接而成.按照协议帧格式发送相应的地址序列和读写指令,即可实现对寄存器内部数据的读写,协议中的CRC校验码以反向电平传输.寄存器模式数据帧格式如图2所示,其中地址序列的CTS控制位为“1”,编码器ID为“000”,ADR为8位寄存器地址,WNR为BiSS-B协议中控制读写模式的信号.BiSS-C协议中的“RW”位是控制寄存器的读写模式的信号.当读取数据时,读写指令为12个“0”位;当写入数据时,读写指令为8位写入数据与其校验生成的4位CRC校验码.在读写指令发送完成后,以停止位结束一位寄存器数据的读写.读写指令发送的同时,编码器会同步传输寄存器中的8位数据及4位CRC校验码.10.13245/j.hust.241209.F002图2寄存器模式数据帧2 BiSS协议解码系统硬件设计根据BiSS协议数据帧时序特点,结合FPGA在时序逻辑处理方面的优势,本研究采用嵌入式FPGA芯片实现BiSS协议主机的时序逻辑控制,并采用PC机显示和人机交互.由于嵌入式FPGA系统须要和PC机通信传输数据,另外BiSS-B协议须要处理正余弦模拟信号,因此设计增加USB转串口和A/D模块.图3为BiSS协议码系统整体结构图,解码系统由主设备(FPGA嵌入式系统)和PC上位机组成.主设备向从设备(BiSS协议编码器)发送MA信号以请求数据传输,从设备收到主设备发出的信号后同步时钟,并根据BiSS协议的帧格式向主机传输数字信号SLO,若为BiSS-B协议,则从设备同时传输正余弦模拟信号.10.13245/j.hust.241209.F003图3BiSS协议解码系统整体结构图3 接口功能模块及上位机软件实现3.1 嵌入式系统FPGA接口功能实现为了准确获取伺服电机位置信息并实现对编码器铭牌数据的读写,根据BiSS-B和BiSS-C协议的特点,采用模块化的方法设计了FPGA接口功能,其中包括封包模块、解包模块、解码模块和校验模块,具体框图如图4所示.10.13245/j.hust.241209.F004图4BiSS协议解码系统控制逻辑框图当FPGA接收到上位机发出的串行数据指令时,封包模块解析上位机发出的串行数据并将数据封包处理.A/D模块负责处理BiSS-B协议编码器中的模拟信号,并通过二路信号进行处理,一路通过CORDIC单元计算模拟信号幅值,经数字滤波后用于上位机画圆显示,同时对角度细分;另一路经边沿检测单元对4倍频脉冲信号计数,并结合细分角度位置计算编码器实时位置,发送至上位机.解码模块实现传感器模式和寄存器模式的时钟生成与数据解码,每个模式通过有限状态机控制时钟生成单元、解码单元和控制信号单元[17].时钟生成单元负责生成不同模式下的时钟信号,解码单元对编码器数据解码取出有用信息,将解码后的数据通过串/并转换单元转换成并行数据;等待并行数据接收完成后,控制信号单元产生CRC校验信号,与待校验数据同时发送至校验模块.校验模块在收到校验信号后,对数据进行并行的CRC循环冗余校验,在一个系统时钟周期内即可完成校验,确保系统的运行效率[18].解包模块将解包提取传入的有效数据,并将其打包成符合串口通信协议格式的数据发送至上位机.在传感器模式下,BiSS-B和BiSS-C协议都是通过发送相同频率的时钟脉冲获取位置数据.BiSS-C协议传输位置数据时比BiSS-B协议多了1位CDS位,根据此特点,本研究采用一个状态机实现两种协议传感器模式的解码,当处理BiSS-B数据时,只舍弃CDS位即可.传感器模式下的解码模块状态机如图5所示.状态机在初始或复位后都处于空闲状态.当收到传感器模式指令信号sen_s时,时钟生成单元产生传感器模式时钟信号,状态机从空闲状态跳转至准备状态.在准备状态下,检测编码器传输的SLO信号,当收到SLO下降沿信号时状态机跳转至ACK状态.ACK状态下SLO信号一直处于低电平状态,一旦SLO信号拉高,状态机进入开始状态.开始状态检测到时钟上升沿信号后,状态机进入工作状态.工作状态下,解码单元根据传入的编码器位数接收编码器位置数据,在收到数据接收完成10.13245/j.hust.241209.F005图5传感器模式有限状态机data_done信号后进入超时状态.超时状态的时钟信号一直保持高电平状态,在SLO从低电平拉高后,状态机跳转至空闲状态,如此循环工作.控制信号单元在工作状态结束后会产生crc_check信号,同时把接收到的位置数据、CRC码传至传感器模式校验单元.位置数据校验单元在收到crc_check信号后对位置数据CRC校验,其校验多项式为G(x)=x6+x1+1.在寄存器模式下,BiSS-B协议通过控制时钟占空比发送协议帧获取寄存器数据,而BiSS-C协议须发送多个BiSS帧,通过每个BiSS帧中的CDM位拼接组合成CDM帧获取寄存器数据.根据两种协议帧的时序控制特点,采用两个有限状态机分别实现两种协议下的寄存器数据读写.所设计的状态机在初始或复位后都处于空闲状态.BiSS-B协议寄存器模式状态机如图6所示.当收到寄存器读写指令时,时钟生成单元产生时钟信号,状态机由空闲状态跳转至开始状态1.开始状态1传输BiSS帧中的开始信号,传输完成进入寻址状态.寻址状态根据地址序列控制时钟信号传输,地址序列传输结束时产生addr_done信号,一旦收到此信号,状态机进入开始状态2.在开始状态2下,产生若干个高占空比的时钟信号,在检测到编码器SLO响应的高电平信号后,跳转至读写状态.在读写状态下,根据读写指令控制时钟信号传输,并在读写指令后传输停止.同时,解码单元接收编码器传输的寄存器数据,在读写状态数据接收完成后,系统产生done信号,收到此信号后进入超时状态,超时状态产生的时钟信号与传感器模式一致.同样,在检测到SLO从低电平拉高后进入空闲状态.10.13245/j.hust.241209.F006图6BiSS-B寄存器模式有限状态机BiSS-C寄存器模式状态机如图7所示.当收到寄存器读写指令时,时钟生成单元产生时钟信号,计数器cnt开始对传输的CMD位计数.空闲状态下,传输20个CDM“0”以初始化寄存器,当计数值大于20时,状态机进入开始状态1并传输一位开始信号,开始信号传输完成进入寻址状态.寻址状态的CDM位由地址序列控制,共传输15位数据,当计数器大于36时传输完成,状态机进入读写控制状态.读写控制状态下,传输两位读写控制命令,传输完成后进入开始状态2.在开始状态2下,传输若干个CDM高电平,在收到CDS位响应的编码器高电平后,跳转至读写状态.读写状态下,根据读写指令产生CDM位,并在读写指令后传输1位停止位,解码单元在编码器响应的CDS位对编码器数据解码.数据接收完成的同时,对读写字节数进行判断,若读写字节数与传入字节位数相同,系统产生mode_done信号,状态机跳转至空闲状态;否则,系统产生byte_flag信号,读写字节数加1,状态机跳转至开始状态2,连续读写下一位寄存器数据.10.13245/j.hust.241209.F007图7BiSS-C寄存器模式有限状态机CRC模块的校验信号由控制信号单元在不同的状态下生成,生成的校验信号与数据一起传入相应的校验单元中.校验单元收到校验信号后对数据进行CRC校验,其校验多项式为G(x)=x4+x1+1.校验信号产生时序如图8所示,地址序列校验信号addr_crc和读写指令的校验信号write_crc在开始状态1和开始状态2的第一个系统时钟周期内分别生成,传输至时钟校验单元;寄存器数据校验信号read_crc在读写状态传输停止位的时候生成,传输至寄存器数据校验单元.10.13245/j.hust.241209.F008图8寄存器模式控制信号生成时序3.2 PC上位机软件实现BiSS协议编码器上位机软件基于QT Creator平台开发,QT Creator图形化界面设计工具提供基本控件和丰富的API函数接口,同时支持RS232串口通信.可通过自定义或内建对话框的方式构建操作面板和上位机的图形界面.根据FPGA接口功能的控制需求,在上位机实现串口通信、协议判断、发送指令及数据显示等功能.上位机软件的操作流程如图9所示,连接串口后系统会自动初始化.上位机软件分为BiSS-B和BiSS-C两个界面,当连接编码器时,上位机根据接收到的编码器数据判断所使用的BiSS协议,并跳转至当前所连接的协议界面.在相应界面指令发送后,上位机判断发送的指令信息,处理BiSS编码器数据,并显示在当前界面.收到的传感器数据根据编码器位数转换成当前角度,显示在角度信息区域;收到的寄存器数据转换成16进制数据,显示在寄存器数据区域.10.13245/j.hust.241209.F009图9上位机软件操作流程BiSS-B和BiSS-C协议版本在不同的工作模式下产生的BiSS协议帧不同,FPGA的状态机设计须要依据上位机发出的指令包进行状态跳转,发出相应的BiSS协议帧.根据串口传输的字节位数编码了上位机指令包,上位机指令包如表1所示,伺服电机BiSS编码器的协议、工作模式、编码器位数及读写字节位数通过命令字控制.同时,根据编码器寄存器地址与数据长度规定了读写数据的起始地址和写入数据命令字的有效范围.10.13245/j.hust.241209.T001表1上位机指令包字节位数功能命令字命令字含义1协议选择0xBE/0xCEBiSS-B/BiSS-C协议2模式选择0xF1/0xF2传感器/寄存器模式3位数选择0x00-0x40编码器位数范围4字节选择0x00-0x40读写字节数范围5地址选择0x00-0x0F读写地址范围6~69数据选择0x00-0xFF写入数据范围4 仿真与实验4.1 Modelsim仿真验证编写相应的Testbench测试文件模拟BiSS-B与BiSS-C协议的编码器位置数据和寄存器数据,并用Modelsim对各模块功能时序仿真,验证FPGA接口功能设计的正确性.模拟BiSS-B和BiSS-C协议传感器模式下的位置数据,其中BiSS-B协议采用36位数据,BiSS-C协议采用23位数据.当收到传感器模式指令时,时钟生成单元正确产生MA时钟信号.在工作状态下,接收的数据与编码器SLO传输的编码器位置数据一致.两组数据的CRC校验结果与仿真波形中传输的校验码一致,CRC模块正常工作.结果表明在传感器模式下能够正确接收两种协议下不同位数的编码器位置值.对BiSS-B和BiSS-C协议寄存器的一个地址中写入寄存器数据,验证产生波形的正确性.在BiSS-B仿真波形中,读取数据与写入数据产生地址序列波形与协议中“ID+ADR+WNR+CRC”相对应,产生的读写指令中的写入数据与CRC校验码正确,地址序列和读写指令与传输的时钟信号占空比相对应,符合BiSS-B协议寄存器模式时序,与仿真波形中编码器传输的读写寄存器数据、CRC校验码一致,读写功能正常.在BiSS-C仿真波形中,传输的地址序列与协议中地址序列格式“CTS+ID+ADR+CRC”相对应,读写指令中的写入数据与CRC校验码正确,符合BiSS-C协议寄存器模式时序,时钟生成单元正常工作.与仿真波形中编码器传输数据一致,与读写指令中的数据相对应,读写功能正常.4.2 实验验证本实验搭建的平台包括FPGA硬件、带BiSS协议编码器的伺服电机、德国Hengstler公司BiSS协议编码器及PC机.PC上机软件与FPGA硬件通信,实现对BiSS协议编码器的解码控制,同时将解码后的数据显示在PC机上.不同厂商的伺服电机使用的BiSS协议编码器位数及寄存器内部数据不同,但其BiSS-B和BiSS-C协议版本是一致的.选择分别支持BiSS-B和BiSS-C协议的2个不同厂商的BiSS编码器实验是具有代表性的,伺服电机及BiSS协议编码器型号如表2所示.10.13245/j.hust.241209.T002表2实验伺服电机编码器类型生产商伺服电机/编码器型号编码器协议位数HengstlerAD36/1912AF.0XBIOBiSS-B36(多圈)HIWINFR-SL-20-2-0-6-06-CBiSS-C23(单圈)PC机发送BiSS传感器模式指令,使用SignalTap Logical Anlyzers采集编码器传输数据,对比分析采集数据与解码数据以验证解码后位置数据的准确性.BiSS-B协议编码器实际传输波形如图10(a)所示,传输的数据段为“|1|000000000000110010010.13245/j.hust.241209.F010图10SiganalTap Logical Anlyzers波形采集00000011011000000|00110011|”.其中传输的第1位数据为开始位,最后8位数据为状态信息与CRC校验码.解码后编码器位置数据为0xC806C0,CRC模块校验结果为0x32,与采集的BiSS-B编码器传输波形相对应.图10(b)为BiSS-C协议编码器实际传输波形,传输的数据段为“|1|0|11101100111110011010001|11011110|”.与BiSS-B协议不同的是,传输的第2位数据为CDS位.解码后编码器位置数据为0x767CD1,CRC模块的校验结果为0x1E,与采集的BiSS-C编码器传输的波形相对应.根据仿真结果分析,图10中的波形图符合BiSS编码器协议帧,解码后的数据与编码器传输波形对应,并且CRC模块校验正确,传输位置数据正确.上位机软件发送编码器传感器模式数据请求指令,并根据上位机显示角度值来验证传感器模式下的位置数据.经验证,编码器角度值实时在上位机文本框中显示,转动编码器一圈后,编码器角度值连续变化360°,并且当BiSS-B协议多圈编码器在经过零度时,其多圈位数也会随之变化.实验结果表明:上位机能够正确显示BiSS-B和BiSS-C协议的编码器角度值,绘制的编码器码盘能够直观地显示编码器当前所处位置.上位机软件发送寄存器读写指令,分别读取BiSS-B协议和BiSS-C协议编码器寄存器数据中的电子铭牌信息,将读取数据修改后写入寄存器中,写入寄存器数据完成后,再次读取寄存器数据.实验结果表明所读取的寄存器数据与写入的数据一致.实验验证了伺服电机BiSS协议编码器解码装置的各功能正确性,对于支持BiSS-B和BiSS-C协议的伺服电机编码器,所设计解码装置能够正确获取其传感器模式位置信息,并且实现了寄存器数据读写功能.5 结语本研究基于FPGA和QT平台设计了一种伺服电机BiSS协议编码器解码装置,兼容BiSS-B和BiSS-C两个版本协议,且同时支持传感器模式与寄存器模式,并采用并行CRC校验确保了解码数据的准确性和快速性,实现了BiSS协议的全功能解码.实验结果表明:所设计的装置实现了对不同厂商伺服电机BiSS编码器位置值的精确采集及对寄存器数据的有效控制,能够在PC上位机软件正确显示角度位置信息和寄存器内部的电子铭牌,该解码装置对伺服控制和智能运维具有重要的理论价值和实际应用价值.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览