基于PCIE总线3D打印机运动控制系统提高了打印机的精度跟效率
扫描二维码
随时随地手机看文章
引言
目前3D打印机在工业、民用领域得到广泛应用,随着3D打印技术的革新,3D打印不仅在传统的制造行业体现出非凡的发展潜力,而且其魅力延伸至食品制造、服装奢侈品、影视传媒以及教育等多个与人们生活息息相关的领域。经过对比各种芯片性能,选用PEX8311与X7043协同工作,PEX8311芯片对 PCIE总线信号进行译码,生成16路总线数据和地址信号,这些控制信号可用于X7043运控控制芯片,保证同时对最多4台伺服电机进行实时同步的控制。实验过程中发现即使3D打印机与主控机相距3 m,误码率仍在万分之一以下,对3D打印机的运动控制性能有明显提升。
1 总体设计
该套方案的系统结构图如图1所示,在整个设计中,用户控制主机,向下发送指令,指令信息最先到达PCIE板卡,指令经过处理(如打包)按照PCIE总线协议发送到信号加强转接板,该板需插入机箱内部插槽(金手指),经过信号加强芯片,对PCIE总线信号加强,P13EQX5801芯片对信号重驱动后,信号能传输的有效距离将大大增加。
总线信号中的读/写信息都是以高频差分对的形式传输,对特征阻抗的要求非常高,按照PCI2.0总线协议,差分对在PCB走线时不能超过15 cm,只有进行重驱动,才能使PCIE总线信号到达打印机的运动控制模块,否则在线路传输中信号将被干扰而失真,不能实现主机对3D打印机运动控制系统的实时操作。
运动控制系统硬件主要由上位机、工控机、P13EQX5801重驱动电路、PEX8311解析电路、X7043控制电路和3台伺服电机驱动系统组成,图2 所示即为整个系统结构。上位机为用户提供操作界面,工控机则用来发送上位机下达的指令给下位机,PCIE总线信息首先经过PI3EQX5801进行重驱动处理,以使信号在进行远距离传输后不失真。在多轴运控控制电路板上装有PEX8311、X7043和CPLD芯片,PEX8311对传输过来的总线进行信号解析,产生能被X7043使用的数据总线、地址总线和控制总线信号,CPLD用于采集编码信号和来自伺服电机驱动器的信号,进而准确控制电机运行状态。着重介绍具有创新意义的PI3EQX5801的使用。
2 PI3EQX5801的电路设计
PI3EQX5801特性:兼容PCIe 2.0协议,可调节量化接收器,两路5.0 Gbps差分信号对,100 Ω匹配电阻差分输入端,为引脚加强的配置输出且能控制摆幅输出,单通道的输入信号检测和去噪,自动接收检测,低电压工作为-330 mW(3.3 V)/-150 mW(1.5 V),采用TQFN(4×4 mm)20引脚封装。
这款低功耗、高性能的信号驱动器是为PCIE 2.0协议特别研制的,芯片提供可编程量化器,去加重,具有输出幅度控制功能,通过抑制系统内多样的物理媒介产生的干扰来优化芯片的性能。芯片支持两路100 Ω特征阻抗的差分信号输入/输出,使用户平台上的ASIC协议信号在经过转换机构、导线或远程数据线路后仍有效。
当通道使能时,EN#=0,开始操作,通道的输入信号极性决定输出极性,而不管输出是否激活。当输入通道的信号下降到阈值(Vth-)以下时,输出也被驱动到相同的电压。另外在有信号条件下,当EN#=1时,芯片会进入低功耗的待机模式。PI3EQX5801还包含一个完全可编程的I2C总线接口。当 I2C总线控制模式使能时,I2C EN=1,量化、输出摆动和去加重功能的设置可以通过编辑相应的寄存器得到调整。
特别注意的是该芯片的输出振幅设置,当信号频率为2.5 GHz时,电阻的选型可根据表1进行选择,在默认情况下输出的振幅为被加强。
数据发送周期以主控制器产生的一位开始位开始,芯片在识别这个开始位后,将监督下一位信息,看该数据是否与它的地址匹配。当发现匹配后,在接下来的时钟信号里,它将回应一个读或写的数据。每字节后都必须跟着一位应答位,除非最后的一个字节以一位停止位结束。在一个发送周期中,跟着地址字节的第一个数据字节是伪字节或填充字节,并不被PI3EQX5801使用。这个字节是为了兼容使用10位地址的系统而产生的。数据传输中最先传输最重要的数据。
重驱动的电路设计参考了百利通公司给出的标准图,为了让电路具有对其他设备的适用性,保留了官方配置时需要的各个电阻,在做PCB板时加入了拨码开关,可以根据不同需要进行模式选择。
3 PEX8311设计
PEX8311起到桥梁作用,它将PCIE总线变成一般的局部总线信号。芯片支持3种不同的总线协议或模式。由于该芯片引脚足够满足本控制系统的设计要求,所以该系统中使用C(非复用)模式,总共96个引脚。作为Local总线的主控方,PEX8311提供了一个32位的地址用于数据传输,8位数据传输时,LAD[31:0]提供字节地址;16位数据传输时,LAD[31:1]提供字地址,LAD[0]为0;32位数据传输时,LAD[31:2]提供双字地址,LAD[1:0]为00。作为Local总线的从控方,主控方以32位地址访问PEX8311,LAD[1:0]忽略,在ADS#有效期间、LCLK上升沿到达时或者ALE有效时,输入的地址被锁存入PEX8311中。
在一个数据周期中,作为Local总线的主控方,PEX8311通过总线数据宽度访问方式可以提供8/16/32位数据传输通道;作为Local总线的从控方,32位的数据总线被用来读取/写入PEX8311。
PEX8311上电后接收PCIE协议信息完成自身的初始化,对局部总线进行读写操作。初始化过程代码如下:
4 X7043电路设计
X7043作为大规模集成电路,能产生控制伺服电机和步进电机速度和位置的脉冲序列,最多能控制4个轴。芯片单元包含一个S形或线性的加速/减速脉冲发生器、一个线性插值除法器、一个基于形或三角形驱动的减速点自动计算器、多个编码器和计数器的输入脚(可用作当前位置计数器或偏差计数器),一个回原点的传感器接口、一个限位传感器接口、一个伺服驱动接口、一个8位多用途的输入口和一个8位多用途的输出口。输入为PEX8311解码后的数据信号,包括16位地址和8位数据,由于X7043只有8位输入,所以我们只用到了16位地址线中的8位。
X7043拥有多种指令形式,分别对应多种功能,发送命令代码时,代码先进入命令寄存器中。该系统最常用的命令代码有00h、01h、指数驱动,这样的驱动形式伴随加速和减速过程,电机会先加速到最高速度,在最高速运行一定时间后进入减速状态,到达目标位置时刚好停止。电机转速状态如图3所示。
X7043使用前需先下载应用文件,对需要的功能进行配置,具体配置方法参考官方的使用手册。
梯形正弦加速度设置公式:
Tsg=f×K×R5/131 072
梯形正弦减速度设置公式:
Tsg=f×K×R6/131 072。
其中,K代表速度分辨率,K=f/65536×R0;f为参考时钟频率;R0频率系数寄存器值;R5为加速度设置寄存器值;R6是减速度设置寄存器值。
PEX8311写给X7043的程序代码如下:
实验中,对伺服驱动器输出数值进行采集,并对各轴的目标位置与实际位置进行分析,调整梯形规划算法并优化上位机程序,以提高电机响应速度。实际效果图如图4所示。
图中预设是反向220 r/min,粗线是实际转速,细线为设置转速,可以看出电机的转停没有较大的冲击,并且能够达到很高的控制精度。
结语
此运动控制系统采用具有高速数据处理能力的芯片,对从上位机下发的指令信号进行一整套的解析,在3D打印机的多轴控制试验中取得了很好效果,这套体系也可用于多轴控制的其他设备中。作为新方案,轴的运动速度及精度与进口3D打印机相比还有一定差距。若要达到国外高级3D打印机的打印精度,还需在控制算法上进行深入研究。目前,3D打印机在国内应用市场前景很广阔,这套运动控制系统为高精度、高效率的3D打印机设计提供了新思路。