阳志林,杨志军,柯帮维,邓亚雄
(1.广东工业大学,精密电子制造技术与装备国家重点实验室,广东广州 510006;2.佛山市华道超精科技有限公司,广东佛山 528225)
随着集成电路制造、精密电子封装等领域的快速发展,该行业对高速、超精密定位运动平台的需求越来越高[1-2],同时对平台的电机伺服控制也要求越高。单回路控制已不能满足部分超精密运动平台的需求,如传统大行程宏微复合平台以双驱动宏微切换满足宏和微的定位控制[3]、刚柔耦合平台用以微带宏单驱动双反馈控制获取柔性铰链弹性变形来补偿摩擦死区,需要对电机编码器和平台光栅尺的同步采集才能满足控制要求[4-5]。
绝对式多摩川协议和BISS协议都有着抗干扰能力强、通信速率高等优点,在位置传感器领域得到广泛的应用[6]。电机伺服系统通常以ARM或DSP为计算核心,对获取的位置反馈做闭环运算。但单独用ARM实现对编码器和光栅尺的双反馈采样会因MCU串行执行而出现采样延时,不能获取它们同一时刻位置信息。故可利用FPGA并行性、快速性的特点对多编码器并行实时采样,满足系统双回路控制的需求[7]。
本文介绍了多摩川和BISS协议的数据结构,以同时采集刚柔耦合滚珠丝杆平台的电机编码器和平台光栅尺为背景,设计了该采集装置的通讯接口电路和软件模块,并设计上位机显示平台的位移。
FPGA基于多摩川协议和BISS协议设计解码模块,分别对电机绝对式编码器和绝对式直线光栅尺进行同步采集。同时FPGA还需要通过FMC总线完成与ARM之间的数据传输。
多摩川协议采用“一问一答”的通讯方式[8],在读取编码器模式下,以波特率为2.5 Mbit/s,按照协议的时序细节、通信指令、数据格式进行异步串行通信。每次需向编码器发送位置请求命令,编码器接收无误后按照协议格式返回对应信息,完成一次数据交换。
1.1.1 向编码器发送控制命令
FPGA向编码器发送一个控制命令字段CF作为读取位置请求信号。控制字段构成如图1所示。
图1 控制字段数据组成
字段含有串口通讯固定的起始位、引导码、4位数据ID码、校验位、停止位,改变4位数据ID码可对应不同的命令字段。编码器根据接收的不同命令返回不同的数据,在不包含起始停止位的情况下,常用的控制命令从高位到低位的命令如下:单圈值命令ID1(00000010);多圈值加单圈值为ID3(00011010)。本文以使用ID3控制命令为主,对返回的位置信息提取多圈和单圈值。
1.1.2 接收编码器应答数据
编码器接受到FPGA发送的CF字节后,经过大概3 μs开始按照协议数据格式串行返回信息。返回数据格式如图2所示,首先原样返回第1个接收到的CF字段。
图2 编码器返回数据组成
第2个为状态字段SF,包含编码器的状态信息,判断编码器工作状态是否正常。
DF0至DF7为数据字段,根据发送的CF控制字段不同,返回不同的位置信息数据。如发送CF为ID3,则DF0~DF2为单圈值信息,DF4~DF6为多圈值信息。
CRC为校验字段,对从CF到DF7字段进行校验,用于检测接收的数据是否出错。采用CRC-8校验算法,生成8个bit的校验码,校验多项式对应校验字段为100000001。
BISS 协议是一种全双工同步串行总线通信协议,能满足实时、双向、高速的传感器通信[9]。目前通信协议版本为BISS-C,带有CRC校验功能,可保证数据传输的可靠性。
BISS-C协议根据工作模式可分为寄存器模式和传感器模式。虽然传感器模式相对寄存器模式获取的状态信息少,但是具有更高的位置采样频率[10]。传感器模式下控制器作为主机向从机光栅尺发送频率为5 MHz的MA时钟作为位置请求,就能快速获取相应的信息。协议返回数据结构及时序如图3所示。
图3 BISS-C协议数据格式
MA是由主机FPGA发送至从机光栅尺的时钟,空闲时为高电平,开始采集数据才发送时钟。SLO为数据信号,空闲时为高电平,由从机将数据发送给主机。
开始采集数据时,当从机接受到MA时钟第2个上升沿时,将SLO信号拉低,代表进入ACK应答状态。
等待从机信号将SLO再次拉高,进入下一个开始Start状态。
此时光栅尺开始将位置信息通过二进制传输,第1位为0位,随后Position为32 bit位置信息,Error位为1 bit、Warn位1 bit、CRC校验位6 bit。随后将MA时钟信号拉高进入超时Timeout状态,等待下一次读取时钟的到来。
所有数据接收完成后,对32 bit位置数据,1位错误位,1位警告位共34 bit进行校验。本次实现的BISS-C的CRC校验多项式为1000011。
FMC是一种总线通信,该总线称为灵活存储控制器(flexible memory controller),是STM32针对各种存储器外设推出的一种总线控制器,可以配置多种存储器接口用来通信,根据需求设置传输的数据位宽,是一种并行通讯[11]。其相对于串行通信,极大地提高了传输速度。
总线控制的存储器类型可以是NOR/PSRAM、SRAM、SDRAM等。因此可以把FPGA看作是ARM的一块外接SRAM型存储器,用对SRAM的读写方式从而对FPGA进行读写操作[12]。通过片选信号CS选中存储器,其对应FMC控制SRAM存储区地址如图4所示。
图4 FMC存储块SRAM地址映像
通信选用16位地址线A0~A15和数据线D0~D15,读使能RD和写使能WR信号。FMC外设支持输出多种不同的时序以便控制不同的存储器,共有4种模式(A、B、C、D),选用A模式对FPGA进行读操作,图5为FMC读时序。
图5 FMC模式A读时序
硬件系统由ARM(STM32H743)和FPGA(EP4CE6E22C8)、伺服电机编码器、平台绝对式光栅尺构成。硬件电路设计主要包括2部分:FPGA与多摩川绝对式编码器及绝对式光栅尺的电气连接;FPGA与ARM控制器之间的电气连接。
FPGA与编码器多摩川协议通讯和光栅尺的BISS协议通讯均为RS485差分线信号驱动。多摩川协议为异步串口通信的方式,只需要对数据线差分。而BISS协议为同步时钟通信,需要对时钟线MA和数据线SLO差分。因此采用3个差分芯片SP3485对RS485信号处理。该SP3485芯片的接收与发送通过RE和DR引脚控制。对RE与DE引脚共接,当共接为低电平,芯片处于接收状态,高电平时为发送状态。FPGA通过2个DB9接口与编码器和光栅尺连接,数据传输速率可达到10 Mbit/s,满足多摩川和BISS协议的通信速率传输要求。电路采集接口原理图如图6所示。而ARM与FPGA之间的FMC总线通讯使用线连接相关IO引脚即可。
图6 采集接口电路图
双反馈数据采集装置内部系统框图如图7所示,主要由FPGA实现对编码器和光栅尺的解码读取及校验,再通过FMC总线传输数据至ARM,最后数据通过上位机显示。
图7 系统模块框图
产生80 μs一次的sys_sync采样使能信号,开始对编码器和光栅尺采样。
3.2.1 串口发送
接收到采样使能信号,开始发送CF控制字段,如多圈值获取命令ID3。通信波特率为2.5 MHz,即一个控制字段发送完成需要4 μs。
3.2.2 串口接收
发送完成等待3 μs左右,编码器会以同样波特率开始返回数据。按位接收包含起始停止位共110 bit数据完成后,去掉起始停止位后将接收数据给CRC模块校验,并等待下次接收开始。
3.2.3 CRC校验
多摩川协议CRC对应校验字段10000001。采用并行CRC校验在一个时钟周期生成8个位数的校验码,与接收的CRC校验字段进行对比[13-14]。
crc_out[0]=d[72]^d[64]^d[56]^d[48]^d[40]^
d[32]^d[24]^d[16]^d[8]^d[0]^c[0];
crc_out[1]=d[73]^d[65]^d[57]^d[49]^d[41]^
d[33]^d[25]^d[17]^d[9]^d[1]^c[1];
crc_out[2]=d[74]^d[66]^d[58]^d[50]^d[42]^
d[34]^d[26]^d[18]^d[10]^d[2]^c[2];
crc_out[3]=d[75]^d[67]^d[59]^d[51]^d[43]^
d[35]^d[27]^d[19]^d[11]^d[3]^c[3];
crc_out[4]=d[76]^d[68]^d[60]^d[52]^d[44]^
d[36]^d[28]^d[20]^d[12]^d[4]^c[4];
crc_out[5]=d[77]^d[69]^d[61]^d[53]^d[45]^
d[37]^d[29]^d[21]^d[13]^d[5]^c[5];
crc_out[6]=d[78]^d[70]^d[62]^d[54]^d[46]^
d[38]^d[30]^d[22]^d[14]^d[6]^c[6];
crc_out[7]=d[79]^d[71]^d[63]^d[55]^d[47]^
d[39]^d[31]^d[23]^d[15]^d[7]^c[7];
d[79:0]为校验的前10个字节,c[7:0]初始值为0,crc_out为并行计算的校验结果。将crc_out与接收的CRC字节对比,两者相等则代表数据正确,此时提取单圈值和多圈值有效位数拼接成32 bit位置数据。否则代表接收错误,将接收数据丢弃,等待下次重新采样。正确结果传至FMC模块等待ARM的读取。
3.3.1 MA时钟控制
为了确保双反馈位置采样的同步性,即尽可能保证编码器和光栅尺同一时刻接受到采集请求。因编码器是在采样时能信号后4 μs,才接收完控制字段开始准备数据。光栅尺是在接收到2个MA时钟上升沿才进入应答准备数据,而1个MA时钟周期200 ns。因此MA时钟模块接受到同步采样使能信号之后,延迟3.6 μs开始发送MA时钟。
3.3.2 SLO接收
SLO信号由光栅尺发送至FPGA,根据BISS协议时序特点,采用状态机的方式读取SLO信号,将接收分为5个过程,如图8所示。在MA上升沿跳变状态机,MA的下降沿读取SLO信号。第1次读取由INIT初始化状态进入IDLE空闲状态,等待SLO拉低后进入ACK应答状态,待SLO重新拉高表示Start位,即开始计数进入工作接收状态,包含0位在内,完成接收后进入“TIMEOUT”状态,等待SLO从低变到高电平,即重新进入到空闲状态。
图8 SLO数据接收状态机
3.3.3 CRC
当数据接收完成,对位置信息和Error位和Warn位共34 bit按校验字段1000011生成6 bit校验码。计算生成的校验码与对光栅尺接收的校验码进行比对,数据一致时代表接收正确,保存有效位置信息,校验原理与多摩川模块校验类似。否则丢弃数据,等待下一次的位置读取。
将读取的编码器和光栅尺的数据都按32 bit组成,其中多摩川位置按高9位为多圈值,低23位为单圈值拼接。光栅尺32 bit则全是位置信息,将位置信息存储在相应的寄存器中,等待ARM的读取。
可利用STM32CubeMX配置串口功能与上位机通信、FMC功能实现与FPGA的通信、定时器功能每80 μs发送一次读取命令获取FPGA存储的双反馈位置信息。
上位机开发是基于MatlabGUI工具箱的图形界面。该GUI工具箱含有串口通讯相关函数模块可调用[15]。同时MATLAB具有强大的数据分析和绘图的功能,适用于信号的数据处理与分析。在内部定义与ARM的通讯格式,ARM将2个32 bit的位置反馈数据分8个字节传输给上位机,上位机对数据提取组合后显示并图形绘制。该工具箱也能使设计的界面程序转换成exe软件,脱离MATLAB依然能够使用,非常便捷。
将FPGA软件模块程序编译下载,移动平台位置,通过Signal Tap Logic Analyzer捕获FPGA内部编码器和光栅尺相关信号数据,如图9所示。
由于多摩川协议读取和BISS协议读取返回时间不一致,信号分析图截取多摩川协议读取为例。sys_sync拉高为代表开始发送读请求,当接收编码器的校验码crc_check[7∶0]和FPGA计算校验出的crc_out[7:0]相等时,则接收数据正确,产生crc_done信号。对数据进行更新,取多圈的9 bit和单圈的23 bit传输给FMC模块tama_fdb[31∶0]。同理光栅尺的位置数据为Biss_fdb[31∶0]。由图9可见数据接收模块能够正常工作,符合软件设计初衷。
由于编码器和光栅尺分辨率不一样,为直观获取滚珠丝杆平台双反馈相对位移,将反馈数据均换成nm单位显示。Pos_init代表以当前位置为零点,pos_fdb1为平台移动时多摩川编码器相对脉冲差值,由于电机转一圈滚珠丝杆移动10 mm,即一个脉冲代表107/223(nm/count)。Pos_fdb2为光栅尺相对差值脉冲,分辨率本身就为1 nm/count,不需换算。将转动滚珠丝杆一圈,对应的Signal Tap图捕获位置数据转换成nm单位由上位机显示,如图10所示。可见换算数据正确,该双反馈采集装置能够正确采集数据传送至ARM并由上位机显示位移图形。
本文根据多摩川协议和BISS协议基于FPGA设计了硬件接口电路和解码模块,实现对编码器和光栅尺的同步读取。满足装置双反馈采样的同时加入并行CRC校验,对采样数据能快速校验,保证数据反馈的可靠性。采样数据通过FMC总线并行传输至ARM,可用于伺服系统的闭环运算。且以FPGA为核心的采集模块具有良好的拓展性和移植性,对未来不同平台的双反馈协议可灵活搭配。实验结果表明:该双反馈数据采集装置能够快速准确采集编码器和光栅尺数据,解码后数据传输给上位机统一成纳米显示,能直观反映平台的运动信息。