引言
本文使用TI公司的Stellaris LM3S9B96微控制器和ADI公司的16位D/A芯片AD5752为核心,设计了控制电路。实现了对两台安川伺服电机的远程控制。实验结果表明,该控制电路具有较好的拓展性,能实现多终端智能控制网络的组建,具有一定的工程应用价值。
1 双电机控制实验平台整体结构
双电机控制实验平台整体结构由上位机、单片机、信号调理电路、D/A模块、通信模块和伺服电机等部分组成,结构框图如图1所示。
图1 双电机控制实验平台结构框图
上位机通过CAN和USB同单片机通信,CAN总线传输控制信号,USB传输数据信息。通信模块中RS232用于现场调试,网口用于远程控制和程序升级。在简单控制中,单片机通过信号调理电路,使用PWM控制电机运动速度和位置,并接收伺服报警,增量式编码器等信号反馈。在双电机同步控制中,单片机通过SSI与D/A模块相连,控制模拟电压的输出实现双电机转速之间的匹配关系,并通过增量式编码器构成闭环反馈控制系统。通过配置伺服驱动器和对GPIO口进行置位和清零操作,在不同工作模式间的进行切换。
由于验证同步控制算法时,实时性要求较高。对单片机的运算速度、处理速度和数据传输速度有较高要求。因此选用TI公司的LM3S9B96作为处理核心。同时,D/A转换精度,极大影响同步效果,因此选择ADI公司的16位高精度双路输出低温漂芯片AD5752作为D/A模块。
2 硬件设计
2.1 单片机和信号调理模块设计
LM3S9B96采用ARM CortexM3处理器内核,其性能完全能够满足双电机实验平台的需求,同时具有一定可扩展性。
实验平台由水平电机和旋转电机组成,旋转电机采用安川伺服电机SGMJV04ADE6S,并配合安川的SGDV2R8A01B型驱动器。水平电机采用安川伺服电机SGMJV04ADE6S,并配合驱安川的驱动器SGDV2R8A05A。每个伺服驱动器与控制板之间通过50 PINS的SCSI端子连接,其端口定义和功能如图2所示。
图2 安川伺服驱动器连接示例
实验平台使用的安川电机采用的是增量式编码器,因此第2、4、21和22控制引脚不需使用。其余控制引脚,按伺服器内部电路不同,可以分为模拟量输入、位置指令输入、光耦输入、集电极开路输出和光耦输出5类。除模拟量输入类引脚直接与AD5752芯片相连外,其余4类控制引脚均需通过信号调理电路与LM3S9B96的I/O端口相连,信号调理电路的原理图如图3所示。
图3 信号调理模块电路原理图
2.2 AD5752芯片
LM3S9B96与AD5752以及安川伺服器控制引脚之间的连接的电路原理图如图4所示。第5引脚 BIN/2sCOMP表示在双极性输出时负电压的表示方式。在BIN模式下,输出电压的最小值、最大值和0 V分别对应0x0000、0xFFFF和0x8000;在2sCOMP模式下,负电压采用补码的形式表示,输出电压的最小值、最大值和0V分别对应0x8000、0x7FFF和0x0000。VoutA和VoutB分别与两个伺服驱动器的速度指令引脚相接。
图4 模拟电压输出电路原理图
2.3 单片机与D/A芯片之间通信
串行同步接口SSI是一种自带时钟的全双工高速接口。通信时,在主控者发出的时钟脉冲的控制下,从最高有效位MSB开始同步传输数据。如图4所示,LM3S9B96通过SSI口与AD5752进行通信,从而对其进行控制。在通信中LM3S9B96作为主机,提供串行时钟和帧同步时钟,AD5752作为从机接收并反馈数据,
AD5752的控制帧结构如图5所示,最高位DB23是读写位,0表示写对应寄存器,1表示读对应寄存器;DB22为零位,必须置0;DB21~DB19为寄存器选择位;DB18~DB16为输出通道选择;DB15~DB0为数据位。
图5 AD5752控制帧结构图
REG2、REG1和REG0与AD5752内部寄存器之间的对应关系见表1。D/A输出寄存器是在D/A转换时储存数字电压信息。输出范围寄存器与通道选择位(DB18~DB16)和数据位DB2~DB0配合可实现2个通道最大输出电压在5 V、10 V、10.8 V、±5 V、±10 V和±10.8 V之间切换。电源控制寄存器与数据位DB9、DB7、DB5、DB2和DB0配合使用,可以设置两个通道上电或是关闭,并查询是否有过流关断。控制寄存器与通道选择位(DB18~DB16)和数据位DB3~DB0配合使用,可以实现D/A输出寄存器清零、载入,以及一些监视控制功能。
表1 寄存器选择位与寄存器对应关系表
在数/模转换输出时,A2、A1和A0与AD5752芯片D/A输出通道之间的对应关系见表2。当A2、A1和A0都为0时,A通道输出,DB15~DB0的数据进入A通道的D/A输出寄存器;当A2、A1和A0分别为0、1、0时,B通道输出,DB15~DB0的数据进入A通道的D/A输出寄存器;当A2、A1和A0分别为1、0、0时,AB双通道输出,DB15~DB0的数据进入A通道和B通道的D/A输出寄存器。然后当第10引脚LDAC拉低寄存器得到载入或者控制指令后,两通道模拟电压输出同时更新。寄存器选择位(A2,A1,A0)可以和寄存器选择位(REG2,REG1,REG0)配合使用,实现一些特殊的控制功能,详细情况请参考AD5752的数据手册。
表2 输出通道选择位与输出通道对应关系表
AD5752在接收到SYNC串行帧同步信号的下降沿后,在每个时钟的下降沿出,对串行接收端数据进行采样,将结果从高位到低位,依次填入其RXFIFO。当24位数据传输完成后,AD5752在接收到SYNC上升沿后,将数据从RXFIFO填入对应寄存器,开始相应的操作。
LM3S9B96硬件结构支持3种同步串行帧格式,分别是TI格式、Freescale格式和MICROWIRE格式。对于这三种帧格式,在通信空闲时,串行时钟SSICLK保持不活动状态。3种帧格式之间的主要区别在于:
① TI帧格式,在发送每个帧之前,串行帧同步(SSIFss)会发出一个以上升沿开始并持续一个失重周期的脉冲,然后在整个帧传输周期中被下拉。主机和片外从器件在SSICLK的上升沿驱动各自的输出数据,并在下降沿锁存另一个器件的数据。
② Freescale帧格式,串行帧同步(SSIFss)引脚为低电平有效,并在整个帧的传输过程中被下拉。通过寄存器可以控制SSICLK时钟空闲状态下的极性和传输开始时的相位。
③ MICROWIRE帧格式,串行帧同步(SSIFss)引脚为低电平有效,并在整个帧的传输过程中被下拉。当帧开始传输时,向片外从机发送一个8位的控制报文,且发送过程中,SSI不接收任何输入数据。当控制报文发送结束后,从机等待1个串行时钟周期,然后发送4~16位的应答数据。
通过对比可知,TI的帧格式最为接近AD5752的通信时序。但TI的帧长度为4~16位,而AD5752的帧长度为24位,两者长度不匹配。而SSI通信的实质是:串行帧同步(SSIFss和SYNC)信号的下降沿激活RX-FIFO;在时钟信号(SSICLK和SCLK)的上升沿时刻,TXFIFO输出数据,在时钟信号的下降沿时刻,RXFIFO锁存数据;串行帧同步信号的上升沿时刻,RXFIFO内的数据转移到对应的寄存器,一帧数据传输完成。
分析可知,由于帧和帧之间的空闲期内,没有时钟信号,因此RXFIFO不会锁存数据。因此只要取消帧与帧之间的串行帧同步信号,就可以将发送端的多帧数据组成接收端的一帧,理论上可以实现SSI通信中任意长度帧的发送和接收。考虑到AD5752帧格式中前8位为控制字符,后16位为数据。因此,设计LM3S9B96帧长度为8位,每3帧组成一个24位的AD5752的通信帧。
使用PA25号引脚作为SSI端口,初始化程序代码略——编者注。
初始化完成后,主程序中控制AD5752的程序范例略——编者注。
3 测试平台和实验结果
基于前文的论述,设计了控制电路板并完成了控制程序。采用1 Hz的正弦波对伺服电机进行性能测试。测试条件为:上位机通过CAN总线发送信息,对系统进行控制。LM3S9B96每隔1.25 ms给AD5752发送一次电压值,同时通过QEI采集上一次的速度信息,存入预设的缓存区。AD5752的输出范围设置为±10 V,实际输出范围为±6 V。伺服驱动器放大系数设置为100 rpm/1 V。LM3S9B96设置2个缓冲区,当一个缓冲区满时,启用另一个,同时通过USB将采集的速度和对应的时间信息传递给上位机。测试结果如图6所示,电机响应快速,约2.5 ms后转速输出按正弦规律变化;电压控制输出稳定,实际输出的最大转速为600.5 rpm,与预期值600 rpm之间的误差为0.083%;但实际转速与预期转速之间存在稳定的延迟,延迟时间约为2.5ms。
图6 1 Hz正弦激励下伺服电机的输出响应曲线
采用基础的PI算法,对双电机同步控制进行了测试。采用主从控制模式,1号电机为主电机,2号电机为从电机。算法规定,2号电机的转速保持为1号电机的10倍。采用不同幅度的阶跃信号,对双电机进行同步控制实验。实验结果表明,在不同阶跃信号的激励下,系统的稳态误差基本为零,能实现比较好的同步效果。但是,不论阶跃信号的幅值,从电机响应均比主电机落后4 ms左右,证实了控制的延迟非负载造成,而是算法和系统的延迟之和。后期计划优化算法和系统,减小延迟,提供更好的控制效果。
结语
本文详细介绍了基于ARM的双电机控制实验平台的设计方法。在同步串行通信中,针对主机和从机帧长度不同的问题,提出了一种解决方案,并通过实验证明其可行性。系统能够满足预期的控制指标,可以为复杂的同步算法提供验证平台。同时,基于CAN总线的拓展性,该控制卡在分布式智能控制领域,具有一定的应用价值。