APP下载

基于数字控制的稳定伺服平台失稳故障分析及启示

2022-11-23刘云峰尹彦东何凡甘春泉

机床与液压 2022年20期
关键词:中断单片机控制器

刘云峰,尹彦东,何凡,甘春泉

(1.火箭军装备部驻成都地区第四军事代表室,四川成都 610036;2.中国兵器工业第209研究所,四川成都 610041)

0 前言

某光电跟踪系统的稳定伺服平台在电磁环境较为复杂的厂房中进行系统试验时,出现了失稳现象:在对目标稳定跟踪一段时间后,稳定平台意外向下方偏左慢速运动,然后转而向上方偏右运动,最终令目标偏出光电跟踪系统的视场,导致跟踪失败。本文作者针对该失稳现象,介绍了某光电跟踪系统稳定伺服平台工作原理,并对平台失稳故障原因及机制进行了分析,将故障定位为伺服控制软件设计缺陷,最后就软件设计工作给出了启示。

1 稳定伺服平台工作原理

稳定伺服平台作为某光电跟踪系统的关键部件,其工作状态和性能直接影响系统的跟踪和稳定指标[1]。稳定伺服平台主要完成2个功能:(1)根据跟踪误差信号,调整平台运动,实现对目标的精确跟踪;(2)隔离载体的角振动,克服载体姿态变化对跟踪系统的影响,保证光电跟踪系统视轴稳定。因此稳定伺服平台必须具有足够高的跟踪精度和较好的扰动隔离度。

此稳定伺服平台由伺服控制器与二轴稳定平台负载共同组成,如图1所示。伺服控制器内部包括单片机(型号8051F120)、速率陀螺信号采集电路、正余弦旋转变压器信号采集电路、通信电路和脉宽调制输出驱动电路等;二轴稳定平台负载由力矩电机、平台框架、双轴速率陀螺和旋转变压器等组成[2-3]。

为了实现目标跟踪和载体扰动隔离,设计了方位、俯仰两通道双环控制回路(单通道控制回路框图如图2所示)[4-5]。回路外环为图像跟踪回路,使用光电跟踪系统的图像视频跟踪器测量目标跟踪失调角,进行误差校正后作为回路内环的角速率指令;回路内环为速率稳定回路,反馈信号为速率陀螺角速率信号,与角速率指令取差、校正后形成控制量[6],并通过脉宽调制驱动电路驱动二轴稳定平台转动,从而将光电跟踪系统光轴稳定地指向预定目标。

稳定伺服平台控制采用数字方式实现,主要由伺服控制器单片机中的伺服控制软件完成控制回路的误差校正、回路闭环、控制量的脉宽调制输出和对外通信等工作[7]。由于对实时性要求较高,伺服控制软件中采用了单片机的中断机制来处理脉宽调制控制量输出、双口RAM通信、串口通信及1 ms周期校正算法迭代[8-11]。

2 故障定位

2.1 初步定位

稳定伺服平台失稳可能由速率陀螺、旋转变压器、力矩电机、伺服控制器(软、硬件)等故障引起[12]。对相应硬件进行全面检查,均不存在异常,可以排除系统硬件故障,故障点集中于伺服控制软件中。

2.2 伺服控制软件中断设置情况

伺服控制软件主程序对系统初始化后进入循环执行体,而主体工作由4个中断服务程序完成,分别为脉宽调制输出中断、双口RAM通信中断、串口UART0中断和1 ms定时中断,其优先级由高至低设置为:调制输出中断 > 双口中断 > UART0中断 > 1 ms定时中断。

其中,进入主程序后,首先关闭中断,然后进行单片机片内寄存器设置,包括打开看门狗并设置看门狗定时器溢出时间、系统工作变量初始化等,之后使能中断并进入循环等待状态。调制输出中断服务程序主要完成对校正后产生的伺服控制量的输出,以给出功率放大器的电流输出量;双口中断服务程序主要完成对上位机双口通信的响应,进入中断后首先读取上位机指令数据,然后返回伺服控制器的状态数据;UART0中断服务程序用于地面调试,完成稳定伺服控制系统内部状态变量的监测和软件在线升级;1 ms定时中断服务程序主要完成对伺服框架角和陀螺角速度等传感器的采集、看门狗定时器清零,并根据上位机的指令数据进行校正运算,计算出稳定平台所需的控制量。

2.3 故障分析

经分析与此次故障现象相关的中断服务程序单元包括双口中断、UART0中断和1 ms定时中断,在排查代码时发现UART0中断的功能在试验状态下未按要求关闭。

UART0中断在同一中断矢量下有2个中断源:一个发送结束中断(发送中断标志TI0置位)和一个接收完成中断(接收中断标志RI0置位)。如果中断被允许,在中断标志TI0或RI0置位时将产生中断。根据芯片手册,当单片机转向中断服务程序时,硬件不清除UART0中断标志,中断标志必须用软件清除。

在伺服控制软件的初始化时,UART0被设置工作于8位全双工异步方式,收发波特率均设为38 400 b/s(对应波特率周期为1 s/38 400=26 μs),允许接收和允许中断,即发送结束和接收结束时都会产生中断。进一步排查代码发现,UART0中断服务程序只对发送中断标志TI0进行了清零处理,未对接收中断标志RI0进行任何处理,是一个明显的软件可靠性设计缺陷。

另外,以上3个程序单元的中断优先级由高至低设置为:双口中断 > UART0中断 > 1 ms定时中断,即1 ms定时中断可以被UART0中断嵌套,UART0中断又可以被双口中断嵌套。

以上3个中断中,1 ms定时中断服务程序用于稳定伺服平台自闭环(光轴稳定及电气锁零),双口中断服务程序用于响应上位机指令进行大闭环(光轴预置及目标跟踪),两者在光电跟踪系统中具有同等重要的地位。考虑到双口中断服务程序的运行时间远小于1 ms定时中断服务程序,所以采用双口中断优先级高于1 ms定时中断的设置,这样稳定伺服控制系统的实时性最好;而UART0接口作为地面使用的测试接口,其中断优先级高于1 ms定时中断则显然不合理。

综上所述,伺服控制软件存在以下2个缺陷:

(1)UART0接收中断未进行处理;

(2)中断优先级排序不合理。

在以上2个缺陷中,如果UART0接收中断异常触发,会引起接收该中断标志RI0无法清除,导致该中断一直占用伺服控制器单片机,进而使得优先级低于该中断的1 ms定时中断无法响应,并导致1 ms定时中断服务程序无法执行,则传感器信号采集和控制量校正计算将停止。在测试数据上表现为伺服控制器部分参数停止更新,控制量保持最后一次更新数据,稳定平台出现漂移,导致稳定平台失稳。

2.4 故障定位

对稳定伺服平台失稳故障建立故障树,经对故障树分支逐一排查,基本确定造成此故障的原因为伺服控制软件设计缺陷,故障诱发条件为厂房内某大功率用电设备。

光电跟踪系统加电并正常工作后,重复启动厂房内某大功率用电设备释放干扰,并观察光电跟踪系统工作情况,同时,使用笔录仪监测与伺服控制器单片机UART0连接的RS232接口接收端的电压波动脉宽、最大峰峰值。具体如表1和图3—图5所示。

表1 某大功率用电设备干扰试验结果

该试验环境下,当干扰到达RS232接收端的尖峰脉冲宽度为20 μs左右时,对光电跟踪系统的伺服控制器造成干扰,出现稳定伺服平台失稳,20 μs与UART0设置的波特率相匹配,被UART0误读为有效数据接收,因此故障得以定位。

3 故障机制

由于伺服控制软件设计存在的缺陷,未对不用的伺服控制器单片机片内UART0(异步串行收发器0)的接收中断进行禁止以及在中断服务程序中未清除接收中断标志位RI0,进行系统试验时,厂房内大功率用电设备产生的电磁干扰串入伺服控制器的RS232接口(其内部与伺服控制器UART0连接),致使RS232串口接收线上产生超过+3 V(RS232电平转换器的输出由空闲状态的逻辑1变为逻辑0)且时间不小于13 μs(波特率38 400周期的一半)的干扰信号。被伺服控制器单片机误读为UART0串行输入数据的起始位,9个波特率时钟后,UART0的接收中断被异常触发,伺服控制软件不断进入该中断,从而使伺服控制主流程(中断优先级较低的1 ms定时中断服务流程)无法正常执行,导致伺服部分参数(框架角和控制量)不更新,稳定平台不能正常控制,导致出现故障。

4 解决措施及有效性验证

在伺服控制软件中,合理的优先级设置应该为:双口中断 > 1 ms定时中断 > UART0中断,但是,由于器件限制,伺服控制器单片机无法将UART0中断优先级设置为低于1 ms定时中断,因此只能采取关闭UART0的措施对此类故障进行规避,一并采取多重软件可靠性措施。具体措施如下:

(1)将UART0控制寄存器设置为不允许接收,伺服控制软件UART0初始化配置单元作如下更改:

更改前为

void UART_Init(void)

{

SCON0 = 0x50;

}

更改后为

void UART_Init(void)

{

SCON0 = 0x40;

}

(2)在中断屏蔽寄存器中禁止UART0中断,伺服控制软件中断初始化配置单元作如下更改:

更改前为

void Interrupts_Init(void)

{

IE = 0x91;

}

更改后为

void Interrupts_Init(void)

{

IE = 0x01;

}

(3)为UART0中断设置空的中断服务程序,程序中清除接收和发送中断标志,然后设置中断屏蔽寄存器为禁止UART0中断,以避免该中断在被异常触发的情况下,也能及时退出中断服务程序。更改前为

void UART0_ISR(void) interrupt 4

{

… // 将组装完成的监测数据写入UART0发送缓冲区

}

更改后为

void UART0_ISR(void) interrupt 4

{

SFR_PGSaver3 = SFRPAGE;

SFRPAGE = UART0_PAGE;

RI0 = 0; // 清零UART0接收中断标志

TI0 = 0; // 清零UART0发送中断标志

ES0 = 0; // 禁止UART0中断

SFRPAGE = SFR_PGSaver3;

}

为了验证上述更改的有效性,在试验室建立了此故障的模拟环境,按以上措施修改伺服控制软件。系统加电,待系统工作正常后,启动故障注入装置,系统仍工作正常;系统断电,恢复伺服控制软件为原设计状态,系统上电,正常工作后,启动故障注入装置,系统故障复现,表明措施有效。

5 案例启示

经过问题回溯发现,伺服控制软件在设计、开发过程中不符合GJB/Z 102——1997《软件可靠性和安全性设计准则》中第5.8.1.3条:“对于电磁辐射、电磁脉冲、静电干扰,以及在太空中使用的计算机可能遇到的宇宙重粒子的冲击,硬件设计应按规定要求将这些干扰控制在规定得水平之下,软件设计要使得在出现这种干扰时,系统仍能安全运转。”软件设计开发人员对软件可靠性和安全性方面的相关设计标准和要求掌握得不够深入,造成了软件设计缺陷。技术人员在进行装备软件设计时,首先应将系统的所有激励源纳入设计考虑,比如此案例中,所有中断都是系统的激励源(即使没被使能),必须考虑如何响应那些非期望激励;充分重视非正常流程分支的合理设计,同时对于在复杂电磁环境条件下工作的设备,对外接口应考虑采用隔离电路和相应的软件设计来屏蔽干扰;对产品应用环境和条件充分了解,尤其对装备软件的特殊要求应掌握全面,并贯彻到软件的设计和开发之中。

如今,软件故障已成为航天系统失败的重要因素,此次发生的故障在采用软件静态分析技术后应能在装机前得以暴露和解决[13]。在采取以上设计措施的基础上,后续还应规范和加强软件分析和测试工作,消除故障潜回路,提高航天嵌入式软件的安全性与可靠性。

同时,军代表在装备研制跟踪中,需督促承制单位加强规范化设计,贯彻、执行航天标准,形成统一成熟的软、硬件设计规范,以加强电路的抗干扰能力设计和软件的安全性、可靠性设计。

6 结束语

文中针对稳定伺服平台失稳现象,分析了失稳故障机制,受硬件限制,中断优先级无法调整,只是采取了关UART0中断等措施进行综合治理,并再次在试验环境下验证分析。结果表明:伺服控制软件中设置不当的中断在相应接口受到干扰后,引发了伺服平台失稳现象;改进后的伺服控制软件在故障干扰条件下仍能正常工作,具有良好的鲁棒性,为复杂电磁环境下应用的设备的设计工作带来新的启示。

猜你喜欢

中断单片机控制器
工商业IC卡控制器改造为物联网控制器实践
TMS320F28335外部中断分析与研究
多级中断屏蔽技术分析
一种考虑GPS信号中断的导航滤波算法
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
面向国产化的MCU+FPGA通用控制器设计
跟踪导练(二)(5)
基于PID控制器和模糊逻辑控制器的D6114柴油机速度控制