塑料齿轮传动误差试验机数据采集系统设计

2022-01-12 10:24石照耀
测控技术 2021年12期
关键词:模拟信号计数器光栅

毛 川,杨 策,王 鹏,石照耀

(北京工业大学 材料与制造学部 北京市精密测控技术与仪器工程技术研究中心,北京 100124)

塑料齿轮因其生产效率高、成本低、传动噪声小等优点,在各领域中的应用越来越广泛。关于塑料齿轮的传动误差测量与分析,国内基本上是空白[1]。作为国内首台塑料齿轮传动误差试验机,其中用到了大量的光栅传感器、扭矩传感器和其他类型的传感器。因此,塑料齿轮传动误差试验机需要一种能同步采集多种信号的数据采集系统。

塑料齿轮传动误差试验机数据采集系统设计的难点在于如何保证多类型、多通道信号的同步采集,尤其是多路光栅信号的高速采集。常见的数据采集系统由CPU+控制逻辑+通信接口控制器组成[2],崔琪等[3]利用DSP+FPGA的架构,实现了对光纤Bragg光栅信号的高速采样,并降低了数据采集系统成本。Wu等[4]设计了FPGA+EPICS(Experimental Physics and Industrial Control System)架构,实现了超导插入设备的失超检测,该数据采集系统实现了16路模拟信号的同步采集。张月等[5]设计的基于STM32+FPGA的架构,实现了64路模拟信号的采集,但是最高的采集频率只有20 kHz。上面所述的这种结构占用空间较大,通信速率较低,比如STM32+FPGA的这种结构,FPGA和STM32之间常用的通信协议为FSMC、SPI等,FPGA和STM32之间的通信速度限制了其在高速采样领域的应用。

另一方面,现在的多通道数据采集系统往往只涉及模拟信号或数字信号。宿文玲[6]设计了一款同步采集4路光栅信号的数据采集系统,只涉及了数字信号的采集,不能同步采集其他信号。陈红亮等[7]设计了一种可以采集4种信号的数据采集系统,简化了航空发动机试验中数据采集系统复杂程度,但这4种信号均为模拟信号。牟雪姣等[8]利用ADS1282实现了多路模拟信号的同步采集,提高了地震数据采集的系统工作效率。

针对以上存在的问题,本文以Zynq7000为平台设计了一款高速数据采集系统。Zynq7000 本身具有 CPU+可编程逻辑的架构,相比于传统数据采集系统减小了占用空间,内部采用AXI 进行通信,通信的实时性和传输速度更好,可以更好地满足高速采集的要求。把采集高速光栅信号的过程放在Zynq7000 PL部分完成,从而不再需要专门的光栅采集模块。把低频的模拟信号采集结果锁存起来,和高频的数字信号采集结果合成一组128 bit数据,保证了多路信号的同步性。

1 整体设计

Zynq7000是Xilinx推出的全可编程SoC,内部集成了双核ARM Cortex-A9 处理器和Artix-7 系列FPGA,其中FPGA部分被称作PL(Programmable Logic),ARM部分被称作PS(Processing System),两者之间通过AXI进行通信[9-11]。

系统的整体框图如图1所示,光栅传感器的信号和ADC采集到的数据传输到Zynq7000的PL部分,在PL部分进行相应的处理,然后通过AXI把数据存储到DDR3当中,Zynq7000的PS通过千兆以太网把数据发送到上位机。频率测量程序和电机控制程序集成在PL部分。可以由上位机发出控制指令决定数据采集的开始、暂停、终止等。

图1 系统框图

1.1 光栅接收电路及程序设计

光栅传感器输出的信号是相位相差90°的A,B两路信号以及光栅零位信号Z[12]。为了方便远距离传输,光栅传感器内部的转换电路已经把光栅信号转换成差分信号。如图2所示,A+,A-,B+,B-,Z+,Z-为光栅传感器输出的差分信号,经过差分信号接收芯片SN75175把差分信号转换成单极性信号。单极性信号A,B,Z输入到Zynq7000内部进行整形、细分、辨向、计数。

图2 光栅信号接收电路

1.1.1 光栅整形程序设计

光栅信号进入到Zynq7000内部后,为了消除可能影响计数结果的因素,首先利用数字方法对信号进行整形[13]。影响计数结果的主要因素是信号中存在的毛刺干扰,如图3(a)所示,方波信号为光栅信号,毛刺信号为干扰,这些叠加在原始光栅信号上的毛刺干扰,可能会被误认为信号的上升沿,因此需要整形去除这些干扰。整形的原理为:Zynq7000内部的时钟频率比毛刺和光栅信号的频率要高得多,毛刺比光栅信号持续的时间短很多。在时钟上升沿检测输入信号的电平,只有持续一定时间不发生改变的电平信号才被当作光栅信号,否则认为是毛刺干扰。整形过后的光栅信号如图3(b)所示,与图3(a)相比,图3中的毛刺信号明显减少,提高了测量的准确性。

图3 光栅信号

1.1.2 细分辨向程序设计

光栅每移动一个栅距,输出两个相差90°的方波信号。为了更精密地测量,需要对光栅信号进行细分处理[14]。假设光栅正向移动时,A相超前B相90°,如图4(a)所示。A,B两相信号的电平状态改变顺序为(1,0)→(1,1)→(0,1)→(0,0)→(1,0),当光栅反向移动时,如图4(b)所示,电状态变化顺序为(0,1)→(1,1)→(1,0)→(0,0)→(0,1)。可以根据两路信号状态的变化顺序,辨别光栅移动的方向。在一个周期内,A,B两路的状态发生了4次改变,每次状态改变时,输出一个脉冲信号,就可以实现光栅信号四细分。

图4 光栅传感器输出信号

1.1.3 可逆计数器设计

可逆计数器的作用是记录输入脉冲的个数,根据脉冲个数计算光栅移动的距离。计数器如图5所示。计数器主要有以下几个功能:锁存功能、计数模式选择、等间距计数。锁存功能用来锁存当前计数器的计数结果,供软件读取。在图5中,当latchFlag信号由低电平变成高电平时,lockedValue会保存cntValued的值,直到下一个锁存脉冲到达时才会改变。计数器的计数模式主要有两种:绝对计数模式和相对计数模式。绝对计数模式是记录光栅现在的位置与光栅零位之间的绝对位置,需要光栅零位信号Z到达时,计数器才开始工作。相对计数模式记录光栅现在的位置与开始位置之间的关系,不需要光栅零位信号,只要有光栅脉冲计数器就开始工作。等间距计数主要应用在有特殊采样要求的仪器上,比如双啮仪。双啮仪采集光栅数据并不是每个光栅信号都需要采集,而是间隔一定的数据采集一次,在图5中,可以用setValue预先设置间隔的大小,当到达计数结果等于setValue时,会产生一个计数完成标志位供软件查询。

图5 计数器

1.2 模拟量采集模块设计

模拟量采集模块选择德州仪器的ADS8584S,这是一款16位的模数转换器,可以同步采集4路模拟信号,最大采样频率可以达到330 kS/s。模数转换电路如图6所示,DB15-DB0是16位数据输出通道,AVCC是5 V模拟电源,VDD是3.3 V数字电源,Signal1、Signal2是两路模拟信号的输入。可以通过引脚ADC_RANGE的输入状态控制模拟量的输入范围,当ADC_RANGE=1时,输入范围为±10 V,当ADC_RANGE=0时,输入范围为±5 V。本设计采用并行输出,16位采样结果输入到Zynq7000内部。

图6 ADS8584S电路图

ADS8584S芯片的时序图如图7所示。CONVSTA和CONVSTB连接在一起控制4路模拟量采集的起停,在CONVSTA和CONVSTB的上升沿启动ADC采样,同时采集4 路模拟信号,BUSY信号高电平时,表示ADC正在转换数据,当BUSY信号由高电平变为低电平时表示转换完成,可以读取采样结果。当CS和RD信号为低电平时,依次读取AIN_1,AIN_2,AIN_3,AIN_4通道的数据值。

图7 ADS8584S时序图

在Zynq7000内部实现ADS8584S读取状态机如图8所示。在图8中,初始状态为IDLE,所有状态在复位信号RST=1时都会进入IDLE状态,当RST=0、CONVST信号的上升沿到达时,会启动A/D转换,进入START状态,在START状态时,当BUSY信号变成高电平时会进入BUSY状态,BUSY状态表示ADC正在转换,还未完成所有通道的转换,当转换完成时,BUSY信号会变成低电平。CS/RD信号变成低电平后,FRSTDATA=1时,此时可以读取转换结果,系统进入READ状态。Zynq7000会依次读取每个通道的转换结果,每读取一个通道的结果后,CHANEL_CNT就会加1,当CHANEL_CNT=2’B11时,表示4个通道的结果已经读取完成,之后会进入WAIT状态,等待本轮采样周期的结束,然后重新进入IDLE状态,开始下一次采样。

图8 ADS8584S状态机

1.3 频率测量与电机控制模块设计

频率测量原理如图9所示,其中被测信号为外部输入的方波信号,高频时钟为Zynq7000内部时钟信号。在方波信号上升沿对高频时钟脉冲计数,下一个上升沿到达时停止计数,假设被测信号的频率为f1,高频时钟的频率为f2,高频脉冲个数为N,则:

图9 频率测量原理

(1)

由此可以计算出被测信号的频率。

电机控制主要控制3个参数:电机输入脉冲的频率、电机使能信号和电机的转向信号。电机使能信号和电机的转向信号由FPGA的I/O口产生,通过高低电平进行控制。控制电机转速的脉冲频率由FPGA内部的时钟产生。电机所需要的最高脉冲频率为1 MHz,在FPGA内产生一个2 MHz的时钟作为电机控的基准时钟,还有一个可以设置分频倍数的分频器。当设置分频倍数为N时,得到输出脉冲的频率为1/NMHz,实现电机调速。

1.4 以太网通信模块设计

以太网具有传输速率高、传输距离远的特点,目前的计算机基本都具有网卡,均可以进行以太网通信,而不需要额外安装相关接口驱动[15]。本设计选用Realtek公司的RTL8211E芯片,RTL8211E能够支持10 M/100 M/1000 M以太网通信速率,可以根据微控制器支持的以太网通信速率自动调整自身通信速度,而不需要手动设置通信速度,同时支持RGMII/GMII接口。充分满足本系统对以太网传输的要求。RTL8211E电路图如图10所示,图中PHY_MDI接口连接到RJ45与PC机连接,ETH_RXD和ETH_TXD连接到Zynq7000,Y1为25 MHz的晶振,为RTL8211E工作提供时钟。

图10 RTL8211电路图

Zynq7000 PS部分有以太网控制器,支持千兆以太网通信,因为采用裸机开发PS部分,所以使用LWIP协议栈,且使用RAW API。TCP 数据包的发送主要依赖于 tcp_write 和 tcp_output 两个函数,tcp_write 将所需要发送的数据写入TCP发送缓冲区等待发送,tcp_output 函数则将缓存区内数据包发送出去。

2 数据处理与传输

数据传输过程如图11所示,计数器1~计数器4为光栅信号的采样结果,每路光栅信号的计数结果为32位,计数器4和ADC的采样结果共用一个32位的通道。为了保证信号的同步采集,把4路信号的计数结果合成一个128位数据。Zynq7000内部通过AXI进行通信,采集到的数据不能直接在Zynq7000内部通信,首先要把它转换成AXI格式才能在Zynq7000内部通信。转换成AXI-Stream之后的数据写入128位宽的FIFO,通过DMA控制器把数据搬运到DDR3之中,每搬运1024个数据后,产生一个DMA中断,Zynq7000的PS端启动TCP传输把DDR3中的数据发送到上位机。

图11 数据传输过程

3 实验验证

在实验验证时,主要验证各个模块的功能是否正确和传输速度能否满足要求。经验证,各个模块的功能可以实现预期功能。

3.1 以太网通信试验

以太网通信实验时,主要测试以太网传输数据是否正确和传输速度能否满足要求。测试以太网传输数据正确性时,在Zynq7000的PL不间断循环构造32 bit 位宽的0~511的数据发送到上位机。在接收端统计接收到的数据,选取其中2000个数据,统计结果如图12所示,在图中接收到的数据逐次增加,每次增加到511后,数据归零,然后再重新开始计数,可以得出以太网发送的数据和接收的数据完全一致。

图12 以太网传输测试

测试以太网传输速度时,使用ADI公司的ADALM2000产生1~12 MHz的方波信号,在通信稳定后记录以太网传输速度,测试结果如图13所示。从图13中可以看出,随着采集速度逐渐增加,通信速度并未发生较大的波动,而是稳定在600 Mbit/s左右,可以确定设计的数据采集系统以太网通信速度能够满足要求。

图13 以太网通传输速度

3.2 光栅采集实验

光栅采集实验中,采集光栅信号的频率为1~10 MHz。其中3 MHz光栅信号采集数据如图14所示,图中红色圆圈中的数据为第1路光栅计数器的最低两位,可以看出脉冲计数结果是逐次增加的,未出现数据丢失的情况。随着采集系统采集速度的增加会出现数据的丢失的现象。由于计数器计数结果是逐次增加的,所以统计相邻两个数据之间的差值可以知道丢失数据的多少。对采集速率从1~10 MHz之间的数据进行统计,每组数据随机抽取1000个连续的数据,统计相邻数据之间的差值,统计结果如图15所示。δ=0、1时,表示正常的采集数据,并未出现数据丢失,当δ=2时,表示两个数据之间丢失一个数据的情况。从图中可以看出当采集速度小于4 MHz时,不会出现数据丢失的情况。当采集速度大于4 MHz,随着采集速度的增加,连续丢失一个数据的情况在增加,但是并未出现δ≥3的情况。说明采集结果只会出现丢失一个数据的情况,丢失一个数据表示少采集了一个光栅脉冲,由于光栅精度比较高,丢失一个信号仍能满足精度要求,所以数据采集系统可以满足同步采集4路光栅信号,每路10 MHz的采样要求。

图14 3 MHz光栅信号采集数据

图15 相邻数据差值统计

3.3 ADC性能验证

ADC性能测试主要测试ADC采集的精度能否满足要求,采集到的数据是否能够恢复原来信号的波形。精度测试时,以ADALM2000产生3 V的直流信号,选取2000次采样结果,结果如图16所示。从图16中可以看出,采样结果在3 V左右,最大值为3.00180 V,最小值为2.99936 V,平均值为3.00010 V,最大值误差为0.00180 V,最大相对误差为0.06%,可以满足测量精度的要求。恢复信号的波形测试时,以ADALM2000产生两路频率为50 Hz,幅值为3.3 V,相位相差90°的正弦信号。Matlab恢复后的波形如图17所示,从图17中可以看出,两路信号的幅值可以达到3.3 V,相位差能稳定地维持在90°,说明设计的ADC采样状态机能够很好地采集模拟量。

图16 3 V信号采样结果

图17 Matlab恢复数据波形

4 结束语

介绍了用于塑料齿轮传动误差试验机的数据采集系统。经过实验验证,该系统可以同步采集4路频率高达10 MHz的光栅信号,模拟信号的采集精度达到0.06%,控制程序可以较好地实现电机控制。弥补了传统的数据采集系统的不足,满足了塑料齿轮传动误差试验机对数据采集系统的要求,也可以用于其他仪器光栅信号的采集,采用网络通信,为以后仪器智能测量、远程测量奠定了基础,具有很好的应用前景。

猜你喜欢
模拟信号计数器光栅
基于CAN总线的车身控制模拟信号采集程序设计
采用虚拟计数器的电子式膜式燃气表
一种基于ADG426多路模拟开关的模拟信号输入接口设计
模拟信号的三种调制方法比较研究
CDIO教学模式在超声光栅实验教学中的实践
算盘是个“小气鬼”
基于LabView的光栅衍射虚拟实验研究
基于单片机的模拟信号自动追踪控制器
基于单片机的仰卧起坐计数器
光栅衍射实验教学中的体会