一种适用于星载太阳翼的驱动控制器设计
2019-01-22李丽娇马吉雨
李丽娇,石 然,严 丹,马吉雨,张 俊
0 引 言
太阳翼,即太阳能帆板,主要应用于卫星、宇宙飞船的供能.卫星发射时太阳翼处于折叠转态,星箭分离后打开并在卫星飞行过程中不断调整方向,使太阳能板对准太阳,为整星工作提供能量[1].由于担负着为卫星提供能源的重要任务,太阳翼在发射后能否正常工作直接影响着卫星发射的成败.其中,驱动控制器作为太阳翼机构系统的关键技术,对机构的稳定、高精度运行起着关键性的作用.
相关文献针对星载太阳翼驱动控制进行了研究,其中任守志给出了星载太阳翼研制体系、部件技术和搭载验证等方面的建议[2];黄洪钟对太阳翼驱动结构建模并进行故障分析[3];刘强通过增大系统振动阻尼,控制太阳翼姿态调整后的残余振动衰减[4].经研究发现,现有文献大多是对太阳翼的展开或驱动结构进行可靠性评估、故障分析[5],缺乏完整的驱动设计,这是因为一方面航天器件朝着长寿命、高可靠、高精度的方向发展,可靠性评估和故障分析有着非常现实的意义,另一方面由于航天技术的保密性,驱动控制相关论文的获取受限.
本文设计并实现了一种适用于太阳翼的综合驱动控制器,以现场可编程逻辑器件FPGA为核心,使用硬件描述语言VHDL编写其逻辑功能,通过RS-422异步通信串口接收上位机指令,结合采集到的位置信息和电流信息实现对太阳翼进行高可靠、高精度的运动控制.设计在Modlesim中进行仿真,并在FPGA开发板、步进电机及相关外围电路上进行实物验证.
1 系统需求及分析
由于太空中电磁、辐射环境比较恶劣,当高能粒子进入半导体器件灵敏区时会使器件逻辑反转,从而导致计算结果错误、工作异常,严重时会发生灾难性事故.因此本文选用航天级反熔丝FPGA器件,可有效避免单粒子反转效应.
太阳翼在工作时由于展开面积大,质心离卫星本体远,大角度快速姿态机动会对卫星产生动态激励,从而影响卫星平台的稳定性[6-7],造成高分辨率成像质量下降,因此对太阳翼的控制必须缓慢、平稳.电机作为一种运动驱动设备,是太阳翼运动控制的关键部件.步进电机每接收到一个电脉冲信号就转动一个步距角,具有开环控制、精度高、停转可保持力矩、抗干扰能力强等特点[8].本文选用两相混合式步进电机,步距角为1.8°,带有起跳功能.
按照设计要求,机构转速(机构转速即电机经减速器后输出的速度值)小于1.2(°)/s,在0~0.1(°)/s速度段时差值须小于0.01(°)/s,0.1~1.2(°)/s速度段时误差须小于10%.此外,步进电机单步运行时,可能会存在失步、过冲、转矩波动大和低频震荡严重等问题[9].为此,控制器内部将采用自主梯形速度规划及加速度、启动制动速度可设置的方案,便于后期实际负载实验时获取最佳速度曲线,降低失步及过冲的风险.且对步进电机进行64细分驱动,不仅可提高归零时的位置精度,且可减缓震动,降低运转噪音[10].在控制器外部,则采用100:1减速比的减速器提高输出扭矩.
2 驱动控制器的设计
综合驱动控制器主要包括指令单字节和多字节收发、指令解析、零位信号采集、电流采集、内部信息采集、AD控制、位置控制、速度控制、步进控制、PWM细分控制和PWM脉冲控制等模块,其系统框图如图1所示.
该驱动控制器的主要功能是:通过RS-422异步传输接口接收上位机发送的单字节,通过指令多字节接收模块进行指令的拼接,由指令解析模块解析后获得完整的遥控指令或遥测指令,发送到对应模块进行控制;位置控制模块接收PWM脉冲输出模块的步进信号与零位信号采集模块的零位信号,对内部位置计数器进行更新;速度控制模块根据位置控制模块的零位信号和指令解码发送的归零指令或调速指令,规划速度曲线,并计算每一步的时间间隔;步进控制模块根据时间间隔输出脉冲信号;PWM细分模块使用查找表获取两相绕组的占空比值,并计算高低电平对应的周期数;PWM脉冲控制模块控制PWM脉冲的输出;通过驱动芯片驱动步进电机运动,经减速器后连接至太阳翼,最终实现对太阳翼的控制.
2.1 指令收发
指令收发模块包括单字节收发和多字节收发,其中单字节收发模块按照RS422串口通信协议收发数据,传输速率为115200bps,通信方式为两收一发.数据格式如图2所示,包括1位起始位、8位数据位、1位奇偶校验位和1位终止位.其中起始位为0;校验位采用奇校验法得到,当数据中1的个数为奇数时校验位为0,1的个数为偶数时为1;停止位为1.
接收指令时,从RS422异步传输接口接收单字节数据,然后将其组装为多字节数据包,当校验码错误或字节长时间未发送时重新传输,组装成功后将数据包发送到指令解析模块.当多字节数据包输出有效时,指令解析模块无条件接受.新指令可以覆盖未执行完成的旧指令.一旦输出有效,必须连续传送一个数据包对应的完整数据域,不可以中断.
指令发送过程与之相反,内部信息采集模块根据指令对相应模块进行遥测信息或调试信息的采集,经校验数据无误后发送到RS-422串口,根据传输数据格式打包后按位依次输出.
2.2 指令解析
接收到指令后,指令解析模块根据指令格式进行解析,指令格式为8位指令类别码、4位子指令码和4位指令对象码,有参数时还包括32位参数数据,指令格式及详细说明如表1所示.
图1 驱动控制器系统框图Fig.1 System block diagram of the drive controller
图2基于RS-422的数据传输格式Fig.2 Data transmission format based on RS-422
指令主要分为控制指令和调试指令,其中控制指令包括调速指令、归零指令、停止指令和遥测指令.指令解析时,如果是调速指令,则提取目标速度,更新参数寄存器并输出至速度控制模块,进行速度规划并驱动电机使得速度达到目标值;归零指令用于太阳翼位置初始化,当接受到归零指令时,速度控制模块则持续监测零位信号.当零位信号出现上升脉冲时,表示机构接近零位位置,则控制电机减速至制动速度,当零位信号再降为低电平时,表示机构到达零位位置,则停转锁定电机.如果是停止指令,速度控制模块则减速至制动速度,停转锁定电机.如果是遥测指令,则对信息收集模块发起信息收集请求.指令中参数为32位数据,包括1位符号位,15位整数位和16位小数位.
表1 指令格式及详细说明Tab.1 Instruction format and detailed descriptions
除上述控制指令外,本文还提供了调试时使用的内部调试指令,包括调试信息采集指令、软件复位指令、加速度参数设置指令、机构归零时匀速段速度设置指令、机构起跳制动速度设置指令、安全电流参数设置指令、占空比比例参数设置指令和电流开环设置指令等,用来调试加速度、初始累加量、累加量和安全电流等参数.内部调试指令在调试阶段使用,以获得最优参数,使系统运转时达到最佳性能.
2.3 速度控制
2.3.1 速度曲线规划
速度控制模块的主要功能是根据接收到的目标速度、归零信号或停止信号,对速度进行规划,并根据速度曲线计算每一步的时间间隔.其中,速度规划是依据步进电机的梯形速度曲线来控制的.但由于太阳翼运转过程中会对机构执行调速、归零或停止控制,实际的速度曲线不一定是标准的梯形曲线,可能是梯形曲线的一部分,也有可能是两个或多个梯形曲线的组合,具体曲线视指令情况而定.图3列举了部分可能的曲线.
图3 速度曲线Fig.3 Speed curve
图3中给了3种状况的速度曲线,说明如下:
(1) 0a段:初始是停止状态,依次执行高速正向调速和归零指令.执行第一条调速指令时,由于目标速度大于起跳速度,先直接跳至起跳速度,再经正向加速达到目标速度,并保持匀速;当接收到第二条归零指令时,由于当前速度大于制动速度,进入正向减速状态,当接收到预零位信号时,速度仍大于起跳速度,进入零位间减速状态,减速至制动速度后接收到真零位信号,速度跳至0实现归零.
(2) ab段:初始是停止状态,依次执行高速反向调速、低速正向调速和停止指令.执行第一条调速指令时,由于目标速度大于起跳速度,先直接跳至起跳速度,再经反向加速达到目标速度,并保持匀速;当接收到第二条调速指令时,由于方向发生了改变,先进行反向减速,减至制动速度时速度跳至0,由于正向目标速度小于起跳速度,直接跳至目标速度并保持匀速;接收到第3条停止指令时,由于当前速度小于制动速度,速度直接跳至0实现停止.
(3) bc段:初始是停止状态,依次执行低速反转调速和归零指令.执行第一条调速指令时,由于目标速度小于起跳速度,直接跳至目标速度并保持匀速;当接收到第二条归零指令时,由于速度小于起跳速度,直接跳至0,再跳至正向起跳速度,进入正向加速状态,当接收到预零位信号时,速度大于起跳速度,进入零位间减速状态,减速至制动速度时保持匀速,直到接收到真零位信号,速度跳至0实现归零.
以上列举了3种可能的速度曲线,但由于步进电机可以正转、反转,接收的指令有调速、归零和停止,新指令可以覆盖旧指令等多种原因,速度曲线的可能性有很多,在此不尽详述.
2.3.2 速度规划状态机设计
速度曲线规划通过状态机来实现,该状态机设计了12种状态,分别为正向加速、正向匀速、正向减速、零位间正向加速、起跳速度匀速、零位间正向减速、反向加速、反向匀速、反向减速、锁定停止、零位锁定和空闲状态,状态机及其转换如图4所示.
由于状态机较为复杂,只给出了设计的12种状态以及状态之间的转换,转换条件省略,双向箭头表示状态间能相互转换.对于太阳翼的控制主要有调速、归零和停止,其中停止指令实质是目标速度为0的调速,下面给出调速和归零两种情况下部分状态转换的分析.
1) 空闲状态:如果接收到调速指令,如果目标速度不为0,方向信号为0时进入正向加速,方向为1则进入反向加速;目标速度为0则进入锁定停止状态.如果接收到归零指令,则开始正向加速.
2) 正向加速状态:如果接收到反向调速指令,当前速度不为0时进入正向减速状态;当前速度为0且目标转速也为0时进入锁定停止状态;当前速度为0目标速度不为0时进入反向加速状态.如果接收到正向调试指令,当前速度大于目标速度时进入正向减速状态;当前速度等于目标速度,且当前速度为0时锁定停止,否则保持匀速;当前速度小于目标速度时正向加速.如果接收到归零指令,当前速度大于预零位前匀速速度时进入正向减速状态;当前速度等于预零位前匀速速度,且接收到预零位信号时进入零位间减速,否则保持匀速;当前速度大于起跳速度,且接收到预零位信号时进入零位间减速状态,否则进入正向加速状态;当前速度等于起跳速度,且接收到预零位信号时进入起跳速度匀速状态,接收到真零位信号则进入锁定零位状态,否则进入正向加速状态;当前速度小于起跳速度,且接收到预零位信号时进入零位间正向加速状态,接收到真零位信号则进入锁定零位状态,否则进入正向加速状态.
图4 速度规划状态机及其转换Fig.4 Speed planning state machine and conversion
3) 反向加速状态:如果接收到正向调速指令,当前速度不为0时进入反向减速状态;当前速度为0且目标转速也为0时则进入锁定停止状态;当前速度为0目标速度不为0则进入正向加速状态;如果接收到反向调速指令,当前速度大于目标速度时进入反向减速状态;当前速度等于目标速度,且当前速度为0时锁定停止,否则保持匀速;当前速度小于目标速度时反向加速.如果接收到归零指令,当前速度为0时进入正向加速状态,否则进入反向减速状态.
4) 零位间正向加速状态:如果接收到反向调速指令,当前速度不为0时进入正向减速状态;当前速度为0且目标转速也为0时则进入锁定停止状态;当前速度为0目标速度不为0则进入反向加速状态.如果接收到正向调速指令,当前速度大于目标速度时进入正向减速状态;当前速度等于目标速度,且当前速度为0时锁定停止,否则保持匀速;当前速度小于目标速度时正向加速.如果接收到归零指令,当前速度大于起跳速度时进入零位间正向减速状态;当前速度等于起跳速度,且接收到真零位信号时进入锁定零位状态,否则进入起跳速度匀速状态;当前速度小于起跳速度,且接收到真零位信号则进入锁定零位状态,否则进入零位间正向加速状态.
2.3.3 步进间隔计算
完成速度曲线规划后,模块根据速度曲线计算每一步的时间间隔.速度曲线可能包含的有匀加速、匀速和匀减速3种情况,匀速时取速度的倒数便可得到时间间隔,匀加速时根据运动学方程
(1)
进行推导,得到时间计算公式
(2)
那么时间间隔的计算方式如下:
(3)
根据式(3)进行硬件设计,包括速度、初始速度累加值、速度累加值、速度累加和、速度累加和开方值等寄存器.每次计算时间间隔时,只需计算速度累加值及其开方值,与上一次的计算结果相减便可得到时间间隔.
2.4 位置控制
位置控制模块主要接收来自位置采集模块的零位信号和PWM脉冲输出模块的步进信号.其中,零位信号由零位传感器检测得到,为标准的TTL电平,一般为低电平,当驱动机构达到零位的上升沿时,转为高电平,即出现一个脉冲上升沿,高电平维持,驱动机构继续转过扫描脉冲宽度4.5°后,该信号又从高电平转为低电平,即出现一个脉冲下降沿.零位信号采用三高三低的方式除毛刺,保证信号可靠性.即当零位信号在3个连续的低电平状态后变为3个连续的高电平,则判断为预零位信号;在3个连续的高电平状态后变为3个连续的低电平,则判断为真零位信号.
位置控制模块如果接收的是零位信号,则将内部位置计数器清零,如果是步进信号,则根据方向信号对内部位置计数器进行累加或递减.同时,该模块设置了失步标志寄存器,用来记录最近一次到零位时的失步情况.具体实现方法为,当接收到零位信号时,如果当前位置计数器不为0,则判断为失步.
2.5 PWM细分及时序控制
为了实现太阳翼的高精度控制,需要对步进电机进行细分控制,其实质是将步进电机相线圈中的方波电流改为阶梯状正弦波,使得合成磁场以微步的步距角旋转,带动转子以微步转动.
由于正弦波的对称性,计算占空比时只需计算前1/4周期,使用时加上相位控制和方向控制,就能得到正向递增、正向递减、反向递增和反向递减四种情况的占空比变化.本文对四分之一周期的正弦波进行64等分,再采用SPWM等效面积法计算各个等分对应的占空比,并将结果参数保存到ROM表中供细分驱动时使用.
PWM脉冲使用LMD18200芯片驱动,根据其数据手册接口时序可知,BRK、PWM及DIR3种输出信号的脉冲宽度必须大于1 us,而且3个信号的切换不能同时发生,需要至少间隔1 us.因此,设置及全局状态机对其进行控制,以满足时序要求.此状态机设计了7种状态,IDLE为空闲状态,RUN为运行状态,BRAKE0为BRK、PWM、DIR信号为低的刹车状态,BRAKE1为BRK为高、PWM、DIR信号为高的刹车状态,BRAKE2为BRK、PWM为高、DIR信号为低的刹车状态,BRAKE3为BRK位高、PWM、DIR信号为低的刹车状态,BRAKE4为BRK、PWM、DIR信号为低的刹车状态.状态机及其转换图见图5.
图5 PWM时序控制状态机Fig.5 PWM timing control state machine
状态之间的转换条件为:初始状态为IDLE,接收到刹车信号则进入到BRAKE0状态,否则接收到PWM细分有效信号则进入到RUN状态,进行PWM波输出,否则保持空闲状态;RUN状态时,接收到刹车信号则进入到BRAKE0状态,否则接收到PWM细分有效信号则保持RUN状态,进行PWM波输出;BRAKE状态等待时间达到后向下一BRAKE状态转换,否则维持原态.
2.6 电流采集
电流环使用AD574模数转换器对步进电机进行电流采集,提供限流保护,当采集到的电流值大于安全电流值时,输出电流异常信号到PWM脉冲控制模块,从而控制步进电机进行刹车.根据AD574的接口协议进行状态机设计,包括空闲,模拟开关切换,转换指令0,转换指令1,转换等待,读指令0,读指令1,读指令2和返回数据9种状态,状态机的转换逻辑为:初始状态为空闲状态IDEL,依次向下一状态转换,转换条件类似,当前状态周期计数器满即可.
2.7 冗余设计
为了提高本设计的可靠性,满足航天设备的要求,采取多重冗余设计技术:1) 接收上位机指令时采用两收技术,若收到的两条指令都是正确的则任取一条,若一条指令错误一条正确则取正确指令,若两条都错误则要求重发;2) 指令容错设计,包括设计奇偶校验位来检测指令的正确性,以及设置指令、指令参数错误标志位来检测指令错误;3) 对步进电机设置双绕组主备份,正常情况下由主机工作,当主机出现故障无法工作时,备机启动工作;4) 设计硬件时采用异步复位同步释放,避免了亚稳态;5) 五是设计了软件复位.
3 仿真及实验结果分析
3.1 Modelsim仿真及结果分析
为了对设计的驱动控制器进行调试和测试,编写系统测试平台,该平台模拟RS422接口进行指令的发送,同时对电流信息进行实时监测.该驱动器可以对两路太阳翼进行独立或同步控制,但为了验证功能的完整性,仿真都是对两路太阳翼进行同步控制,仿真在Modelsim软件中进行.
在仿真图中,speedenable为速度使能信号,当接收到调速指令时由低电平变为高电平;go_zero为归零信号,接收到归零指令时由低电平变高电平;rotatedir信号为旋转方向寄存器,为0时表示正转,为1时表示反转;zero信号为零位信号,接受到预零位信号时由低电平变高电平,接受到真零位信号则由高电平变为低电平;c_state_reg为当前速度状态寄存器,表示当前速度所处的状态;currentspeed_reg为当前速度寄存器,保存当前速度值;finish_inst为指令完成标志寄存器,为高电平时表示指令完成.
3.1.1 高速正转的调速指令
设置调速指令1103,对两个电机同时进行调速控制,目标速度设为8100(十六进制数,大于起跳速度8000).根据1位符号位、15位整数位、16位小数位的数据格式将8100换算成实际转速,为0.503 906 25(°)/s,以下给出的速度值均为寄存器中存储的速度值,并非实际速度值.仿真波形如图6所示.
由仿真波形可以看出,两路控制器的速度控制状态机初始状态均为空闲状态,接收到调速指令后speedenable由低电平变为高电平,开始速度规划,由于目标速度大于起跳速度,先直接跳至起跳速度8000,再进入正向加速状态,加速达到目标速度,并以目标速度8100保持正向匀速状态,finish_inst变为高电平,完成调速指令.
3.1.2 低速正转到高速反转的调速指令
设置调速指令1103,对两个电机同时进行调速控制,先设置低于起跳速度的较小目标速度4000正向运转,再改为大于起跳速度的较大目标值8100反向运转,仿真波形图如图7所示.
由波形图可以看出,两路控制器的速度控制状态机初始状态均为空闲状态,当收到第一条正向调速指令时,rotatedir为低电平,由于此时目标速度小于起跳速度,直接跳至目标速度4000,以该速度保持正向匀速,finish_inst变为1,完成第一次调速指令;再次接收到调速指令时,由于此时方向发生了变化,rotatedir信号由低电平变为高电平,且目标速度大于起跳速度,先把正向速度归零,再起跳至起跳速度,然后进入反向加速状态通过加速达到目标速度,并以目标速度8100保持反向匀速状态,完成调速.
图6 正向高速调速波形Fig.6 Forward high speed regulation waveform
图7 低速正转到高速反转调速波形Fig.7 Forward low speed to reverse highspeed regulation waveform
3.1.3 高速正转后的归零指令
对两个电机同时进行控制,设置调速指令1103,目标速度为10100,待调速完成后给出归零指令3303,仿真波形图如图8所示.
由波形图可以看出,两路控制器的速度控制状态机初始状态均为空闲状态,当收到调速指令时,speedenable由低电平变为高电平,开始速度规划,由于此时目标速度大于起跳速度,先跳至起跳速度8000,再加速至目标速度10100,随后保持匀速,此时调速指令完成,finish_inst信号变为高电平;当收到归零指令时,gozero信号变为1,speedenable信号变为0,速度进入减速状态,当接收到预零位信号,即zero由0变为1时,进入零位间减速状态,减速至制动速度8000后保持匀速,当接收到真零位信号,即zero由1变0时,速度直接跳至0,进入锁定零位状态,完成归零.
图8 高速正转后归零波形Fig.8 Forward high speed regulation to go zero waveform
3.1.4 低速正转后的停止指令
对两个电机同时进行控制,设置调速指令1103,目标速度4000,等调速完成后给出停止指令4403,仿真波形如图9所示.
图9 低速反转后停止波形Fig.9 Reverse high speed regulation to stop waveform
由波形图可以看出,两路控制器的速度控制状态机初始状态均为空闲状态,当收到调速指令时,speedenable由低电平变为高电平,由于此时目标速度小于起跳速度,直接跳至目标速度,并以该速度保持匀速,此时调速指令完成,finish_inst信号变为高电平;接收到停止指令时,此时速度小于制动速度,则速度直接降为0实现停止.
3.2 实验验证
为了对本文设计的综合驱动器进行验证,搭建硬件电路系统,包括FPGA主控板、电流采集电路、电机驱动板和步进电机等,并将代码下载至FPGA中进行实验.图10为电机驱动板实物,图11、12为示波器所测波形图.
经实验测试,该驱动控制器可以根据指令准确的进行调速、归零和停止控制.图11为归零时信号变化图,图中信号分别为步进电机的电流信号和零位信号,预零位信号来临时进行减速,电流信号发生变化,真零位信号到来时实现归零锁定,电流信号变为恒定值.图12为调速过程中步进电机的两相电流变化,由于驱动芯片的特性,波形只有正向部分.从图中可以看出两相电流相位相差90°,波形接近标准正向正弦波,说明细分后的PWM其占空比按照正弦波规律变化.
图10 步进电机驱动板Fig.10 The stepping motor drive board
图11 归零时的电流及零位信号变化图Fig.11 The wave of current and zero signalwhen going zero
图12 调速过程中步进电机的两相电流Fig.12 Two phase current of stepping motorduring speed regulation
由于本设计所采用的32位运算器存在一定计算误差,为了验证设计精度,在工作频率为22.118 4 MHz,起跳速度为0.5(°)/s,加速度为0.05(°)/s2的条件下,进行调速测试.低速段对0.01~0.1(°)/s以0.01(°)/s的间隔进行测试,高速段对0.1~1.2(°)/s以0.1(°)/s的间隔进行测试.测试方式为:通过串口发送调速指令,待机构达到目标速度后,发送遥测指令获取当前一个脉冲输出周期数,从而计算实际速度和速度误差.实际速度计算公式为:
(4)
其中,θ为步距角1.8°,d为细分数64,a为减速比100,n为脉冲输出周期数,T为系统周期.低速段的速度相对误差计算公式为实际速度-目标速度;高速段的速度误差计算公式为(实际速度-目标速度)/目标速度.
表2 低速段速段速度误差Tab.2 Relative speed errors of low speed
表3 高速段速度误差Tab.3 Speed errors of high speed
低速段的速度相对误差均小于0.006(°)/s,满足系统0.01(°)/s的设计需求;高速段的速度误差在±0.13%之间,优于系统10%的设计需求.
5 结 论
本文从航天应用的角度出发,设计并实现了一种适用于星载太阳翼的综合驱动控制器.首先给出了综合驱动控制器的总体框架,然后详细介绍了指令收发、指令解析、速度控制、位置控制、PWM细分控制、PWM时序要求以及电流采集等模块,同时根据航天器件可靠性设计给出了几种冗余设计的具体措施.经实验仿真和实物验证,结果证明了该驱动控制器满足预期设计需求,可以很好的实现太阳翼的运动控制.