吴 侃,于明礼,李 明
(南京航空航天大学机电学院,江苏南京210016)
二元翼段模型常被用于气动弹性控制理论与实验研究。三自由度二元翼段模型的颤振主动抑制技术验证中,控制面由作动器来控制驱动。而控制律的设计需要各传感器的信号输入,就需要对各个信号进行数据采集以便对系统的状态实时监测。超声电机具有响应快、定位精度高、断电自锁、扭矩/重量比大等优点[1-3],在机翼颤振主动抑制的实验研究中,非常适合用于机翼副翼的作动器[4]。
含超声电机的二元翼段颤振主动控制系统中,控制系统的通信监控界面是整个实验系统工作的核心。而在现场控制和监测系统中,数据采集与处理模块是系统的重要组成部分,且要求能与上位机进行实时通信。张焜鋋等[5]针对数字信号处理器和PC 机的通信需要,设计了一种基于TMS320LF2407A 的串行通信系统,通过串行外设接口SPI 和通用异步收发器URAT实现DSP 与PC 机的串行通信。程志成等[6]针对用户经常面临的DSP 系统与PC 机实时数据通信时通信接口标准不兼容的问题,提出了一种新的串行通信设计方案,实现了DSP 同步串口McBSP 与PC 机异步串口RS-232 的全双工通信。韩芝侠等[7]利用SCI 串行通信接口实现DSP 与PC 机的通信,以便现场控制人员了解电机控制系统的转速等信息。
Matlab 是一款高性能的数值计算和可视化软件[8]。薛飞等[9]利用Matlab 串口工具箱,设计了基于Matlab GUI 的温度实时监控系统,提高了温度监控系统的数据处理速度。
笔者利用Matlab 的串口通信技术和对DSP 串行通信接口的配置,来实现DSP 与PC 机之间的数据通信,对采集的数据实时处理,使机翼颤振控制系统的输入信号和测量到的数据能实时显示波形,并对实验用的超声电机进行控制。
三自由度二元机翼模型截面图如图1所示。
图1 三自由度二元机翼模型截面图
超声电机可以直接安装在二元翼段控制面的转轴上来驱动翼段模型的副翼。控制面和机翼俯仰方向的输出转角由数字编码器实时测量,翼段沉浮方向的位移由激光位移传感器精确测得。翼段实物模型如图2所示。
各传感器安装位置如图3所示。
图2 二元翼段模型结构实物图
图3 各传感器安装位置实物图
DSP 芯片采用改进的哈佛总线结构,可以同时完成获取指令和数据读取操作。除具备通用微处理器的高速运算和控制功能外,可用于实时、快速地实现各种复杂的数字信号处理算法[10]。满足了二元翼段颤振主动抑制系统在高速数据传输、密集数据运算、实时数据处理等方面的需求。
实验的控制系统由德州仪器公司的TMS320F2812型DSP 芯片为控制器,软件部分由用于开发DSP 芯片的集成开发环境CCS 软件和一个上位机Matlab GUI编写的串口通信实时监控界面软件共同组成。DSP 控制器的实物图片如图4所示。
图4 TMS320F2812 型DSP 控制板
二元翼段颤振主动控制系统实验平台主要由超声电机、超声电机驱动器、TMS320F2812 型DSP 开发板、DSP 芯片电源、数字编码器以及激光位移传感器组成。整个控制系统的闭环控制流程图如图5所示。串口通信监控界面通过计算机的串口发送电机启动指令触发DSP 运行的中断程序,DSP 芯片发出控制电机转速和转向的指令,通过超声电机驱动器来控制电机,然后由编码器测量超声电机的实际转角,将超声电机的实际转角采集再传输到DSP 芯片,与控制指令相比较,计算出误差,再发出新的指令来对误差进行相应的补偿。
图5 超声电机控制系统闭环流程图
1.3.1 二元翼段颤振控制系统控制律的设计
本实验根据各传感器测得的输出量,基于最优控制理论[11]来设计最优控制律,即超声电机控制律。受控系统的状态方程为:
式中:B—反馈控制矩阵,βc—电机反馈控制律,X—系统状态矩阵,Y—系统的状态输出矩阵。
颤振主动抑制的方法是利用极点配置理论,通过反馈控制改变原来开环系统的极点分布,由超声电机驱动机翼控制面改变机翼的气动力分布,使二元翼段系统趋于稳定并最终收敛。设计最优控制律的方法是寻求一个增益反馈矩阵Kcon,来求出超声电机的控制律βc:
使目标函数J 取得极小值:
式中:Q—半正定加权矩阵;r—加权系数,取正值。
根据最优控制理论,可得:
式中:K*可根据Matlab 中的LQR 控制器求出。
1.3.2 超声电机运动控制算法
超声电机的运动控制呈非线性,且电机的性能易受外界因素的影响。因此,传统的控制方法难以实现电机输出的精确控制[12]。
本实验对超声电机的控制采用的是增量式PID 控制算法,来实时补偿电机实际输出转角和电机控制律之间的偏差。控制环节包括比例环节、积分环节和微分环节。其原理图如图6所示。
图6 PID 控制系统原理框图
PID 控制器的控制规律可用下式表达:
式中:u(t)—调节的控制量,Kp—比例调节系数,Ti—积分时间常数,Td—微分时间常数,e(t)—位置误差。
在DSP 处理器中,芯片只能处理数字信号,所以需将上式转化为离散的增量模式:
式中:A1=Kp+KI+KD,A2=-Kp-2KD,A3=KD,KI=Kp/Ti,KD=Kp·Td。
DSP 运算速度高、寻址方式灵活、通信性能强大、控制器功耗小[13]。TMS320F2812 中含有的串行通信接口SCI 模块支持DSP 系统与其他使用标准格式的异步外设之间的数字通信。SCI 接收器和发送器是双缓冲的,即把DSP 的串行通信接口与RS232 串行口连接就能进行DSP 与PC 间的数据通信[14]。
本研究中,利用TMS320F2812 的SCI 模块与PC机的COM1 按RS-232 通信格式进行数据通信。数据格式为:1 个起始位,8 个数据位,1 个奇/偶校验位,1个停止位。数据帧格式如图7所示。
图7 空闲线模式数据帧
在异步串行通信过程中,除了接收和发送侧的波特率要设置相同外,还必须设置为相同的数据格式。为了保证数据的完整性,SCI 对接收到的数据进行奇偶性校验、超时错误检测、溢出检测和帧错误检测。
TMS320F2812 的SCI 模块支持两种多处理器工作模式[15]。该设计中的DSP 控制器的SCI 模块设置为空闲线工作模式。在该模式下,要求数据块被一定长度的时间隔开,该时间间隔比数据帧间的间隔要长。一帧后的空闲时间(10 个或更多个高电平位)表明了一个新数据块的开始。该模式下数据通信的详细流程如下:
①初始化程序将SCI 设置成空闲线多处理器模式,程序开始后,DSP 处于SLEEP(侦听)状态,等待唤醒;②PC 机通过串口以广播的形式向DSP 处理器发送命令帧,该帧含有两个字节,第一个字节是地址,第二个字节为命令内容。SCI 接收到块起始信号后即被唤醒。③CPU 响应一个SCI 中断;④中断服务程序将接收到的与接收节点预设的地址进行比较;⑤如果SCI 的分配地址与接收到的地址相符,则中断服务程序清除SLEEP 位,并接收数据块中的后续数据;⑥如果SCI 的地址与接收到的地址相符,则SLEEP 位仍保持在置位状态,CPU 继续执行主程序。直接检测到下一个数据块的开始时继续从步骤②执行。
本实验SCI 设置如下:
SCI 通信可采用查询和中断两种方式进行。本研究中采用了中断通信方式,即当DSP 的SCI 模块接收到来自PC 机发送的命令帧后,向DSP 产生中断请求,DSP 响应中断请求,执行相应的中断服务程序来向PC机发送相应的数据帧,之后返回主程序。这种工作方式的优点是DSP 初始化串口后不用再询问它的状态,而主程序依然执行,实现了DSP 与串行口的并行运行,提高了数据通信的效率。
详细流程如图8所示。
图8 DSP 串行通信流程图
本研究的Matlab GUI 串口通信监控界面设计主要有3 部分模块构成:
在和DSP 控制器的SCI 通信时,可以通过数据收发模块设置数据发送和接收的格式。为了实现对串口的操作,本研究设置了如下程序:
(1)建立和设置串口设备对象及其相关属性:
(2)尝试获取串口,如果打开失败,则显示“串口不可获得”窗口:
(3)如果检测到串口有数据,尝试获取串口数据,并把数据转化为十六进制字符串:
该串口通信界面具备通过串口向DSP 的SCI 模块发送指令来触发相应的中断程序,可以控制DSP 控制器SCI 模块发送数据的使能、超声电机的启停以及切换电机的控制律。
3.2.1 DSP 控制系统SCI 模块的中断服务程序
3.2.2 串口通信界面的控制指令程序
当通过串口发送命令帧时,就会触发相应的中断服务程序。若触发数据显示中断程序,则DSP 开始向上位机发送传感器测得的实时数据;若触发电机控制中断程序,则控制电机启停以及控制律的切换。
串口通信监控界面的通信参数设置、数据收发模块以及电机指令模块如图9所示。
图9 数据收发和电机控制模块
要实现串口通信的自动收发数据,可以定义串口中断回调函数和定时器回调函数。串口中断回调函数常用于防止串口的输入缓冲区数据溢出,保证通信的稳定性。而定时器它是一类特殊的对象,适用于对数据的实时处理[16]。
3.3.1 串口中断回调函数的属性设置
BytesAvailableFcnMode 为Terminator 时,若读取到Terminator 属性指定的终止符,则产生bytes—available事件,并执行回调函数BytesAvailableFcn;当BytesAvailableFcnMode 为byte 时,若从输入缓冲区读取到BytesAvailableFcnCount 属性指定的字节数时,则产生bytes—available 事件,并执行回调函数BytesAvailableFcn。而只有当异步读操作时才能产生bytes—available 事件。本研究中的BytesAvailableFcnMode 设置为byte 模式,BytesAvailableFcnCount 设置的字节数为10。
3.3.2 用于接收数据实时显示的定时器设置
由于Matlab 的单线程环境是其本身固有的缺陷,在执行某段程序时,无法同时完成其他的计算处理任务[17]。而在Matlab 中,定时器timer 可以定时触发,周期性地执行指定的回调函数,而不会影响整个系统对用户其它操作的响应。本研究在这里只列出了其中一个定时器的设置程序。
ExecutionMode 是定时器的执行模式,本设计中采用的是fixedspacing 模式,指第一次定时器回调函数TimerFcn 执行完成到第二次定时器回调函数开始排队之间的时间为定时周期。定时器周期Period 设置为0.05 s。设置较长的定时周期可以使对数据的操作更加顺畅。程序中的“ang1_plot_Callback”回调函数是对接收到的数据进行筛选,然后分组实时显示。这里的定时器相当于在程序中加了一个线程操作。
本研究在二元翼段颤振主动控制系统的实验平台上对该串口通信监控界面进行了状态响应监测和超声电机控制测试。实验时各振动波形实时显示图像如图10所示。
图10 串口通信控制界面
实验结果表明,该串口通信监控界面运行稳定,能实时地控制超声电机的启停,包括电机控制律的切换。绘制的振动波形曲线准确、清晰。
基于RS-232 通信协议,本研究利用Matlab GUI 串口通信设计方法,对D SP 控制器SCI 模块的设置,设计了一个能与TMS320F2812 型DSP 控制器进行数据通信的串口通信监控界面,满足了对超声电机控制系统稳定性和便捷性的要求,提高了实验操作和执行的效率。
实验结果表明,串口通信监控界面能实时地对二元翼段颤振控制系统进行状态监测,控制超声电机的启停和控制律的切换,给用户提供了分析整个控制系统的可靠依据。
[1]赵淳生.面向21世纪的超声电机技术[J].中国工程科学,2002,4(2):86-91.
[2]KUMAR A, KROUSGRILL C M.Mode-splitting and quasidegeneracies in circular plate vibration problems:the example of free vibrations of the stator of a traveling wave ultrasonic motor[J].Journal of Sound and Vibration,2012,331(26):5788-5802.
[3]SEEMANN A,WOLFGANG.Ultrasonic traveling wave linear motor with improved efficiency[J].SPIE,Proceeding,1992(2716):554-564.
[4]于明礼,胡海岩.基于超声电机作动器的二维翼段颤振主动抑制[J].振动工程学报,2005,18(4):418-425.
[5]张焜鋋,杨建华,杜新虎.DSP 串行通信系统设计与实现[J].微处理机,2010(6):23-26.
[6]程志成,金施群.PC 机与DSP 异步串口通信实现研究[J].现代显示,2008(86):57-59.
[7]韩芝侠,杜新虎.基于DSP 的电机控制系统串行通信设计[J].机械与电子,2008(2):33-35.
[8]张 琨,高思超,毕 靖.Matlab 2010 从入门到精通[M].北京:电子工业出版社,2011.
[9]薛 飞,杨友良,孟凡伟,等.基于Matlab GUI 串口通信的实时温度监控系统设计[J].计算机应用,2014,34(1):292-296.
[10]韩丰田,李海霞.TMS320F2812x DSP 原理及应用技术[M].北京:清华大学出版社,2014.
[11]胡寿松,王执铨,胡维礼.最优控制理论与系统[M].北京:科学出版社,2005.
[12]张金龙,徐 慧,刘金南.基于模糊神经网络的精密角度定位PID 控制[J].仪器仪表学报,2012,33(3):549-554.
[13]沈忠铿,张 波,陈立辉.基于windows 的PC 机与DSP串行通信[J].通信电源技术,2005,22(4):39-42.
[14]陆元亮.基于DSP 的数据采集与处理系统的设计与实现[D].南京:南京航空航天大学航空宇航学院,2004.
[15]三恒星科技公司.TMS320F2812 DSP 原理与应用实例[M].北京:电子工业出版社,2009.
[16]罗华飞.Matlab GUI 设计学习手记[M].北京:北京航空航天大学出版社,2014.
[17]傅晓波,胡念苏.实现Matlab 定时处理功能[J].现代电子技术,2005(15):76-78.