董靖川, 王太勇, 陆钢庆, 李晓奇, 张永宾, 王自静
(天津大学 机械工程学院, 天津 300354)
基于Simulink的开放式伺服控制实验装置设计
董靖川, 王太勇, 陆钢庆, 李晓奇, 张永宾, 王自静
(天津大学 机械工程学院, 天津300354)
为解决现有教学用伺服控制实验装置开放性差、编程复杂的不足,设计了基于Simulink软件的开放式伺服控制实验装置。该装置以STM32F429单片机为硬件平台控制器,配有A/D、D/A、编码器、通用输入/输出等伺服控制专用接口,以及彩色液晶显示器、RS-232通信接口等外设。实验装置的软件平台基于Simulink设计,具备伺服算法设计、仿真、执行、数据通信、分析等功能,具有开放、模块化、图形化、易操作等优点,可进行各类伺服控制原理验证和创新实验。该装置能够充分满足伺服控制类课程的实验教学需求。
伺服控制; 实验装置; 单片机; Simulink
随着工业现代化的发展,以计算机为核心的数字伺服控制系统在很多领域内得到了广泛的应用,掌握伺服控制系统的原理和应用,已成为高端装备、精密仪器、航空航天、机器人等相关产业技术人员的一项迫切需求[1]。伺服控制实验课程是学习伺服控制理论的重要环节,然而目前高校实验室的伺服控制实验装置存在封闭、开放性差、编程复杂等不足,难以达到理想的教学效果,也不便于开展学生的自主创新实验。
本文介绍了基于Simulink软件、采用单片机为核心控制器的开放式伺服控制实验装置的设计。学生可以利用该装置进行开放式、图形化的伺服程序设计与仿真实验[2-3],也可将自动生成的控制器代码[4]下载到实验装置进行伺服控制实验验证,具有直观、易学、开放等优点。
Simulink具有强大的图形化建模、仿真能力,以及完整的工具箱,并且可以与Matlab无缝集成,是控制系统工程师的必备软件,也是高校工程类专业师生熟悉的编程系统。本文的伺服控制实验装置以Simulink为软件平台,构建了开放式、图形化的实验设计环境,实现了伺服控制模型设计、仿真和控制程序的自动化生成。控制器的硬件平台采用STM32F429单片机作为中央处理器,具有高性能、高集成度、可靠性好、成本低等优点。为实现与伺服电机等被控对象的连接,实验装置扩展了A/D、D/A、编码器、通用I/O等接口,也提供了彩色液晶显示器、按键、LED、RS-232通信接口等外设,便于实现人机交互和数据采集。
该实验装置的总体设计框图如图1所示。
图1 开放式伺服控制实验装置框图
STM32F429单片机具有基于ARM 32位 Cortex-M4的高性能核心及硬件浮点处理单元,主频达180 MHz[5],并支持DSP指令,内建2 MB Flash和256 KB SRAM。单片机可通过程序下载接口下载由用户设计的伺服控制程序,实现开放式的实验。实验装置具备D/A接口,可生成-10 V~+10 V的模拟电压,作为伺服控制驱动器的电压指令;编码器接口可连接正交编码器,实现位置或速度的数字化测量;A/D接口可连接各种模拟量输出的传感器,如测速发电机、电流传感器、温度传感器等;I/O接口可输入/输出开关量信号,可连接继电器、传感器、开关等;通信接口采用RS-232协议,可连接计算机进行数据的传输。彩色液晶显示器分辨率为320×240(像素),可用于文字、图形的实时显示;按键和LED指示灯可用于改变或指示控制器状态,实现实时人机交互。
2.1D/A接口电路
D/A接口可以将单片机内部用数字表示的控制信号转换为模拟电压信号。STM32F429已经在内部集成了2路12位分辨率的DAC功能,可以在PA4脚和PA5脚产生0~3.3 V的模拟电压。为了将该模拟电压用于工业设备的伺服控制,本装置将其转换为-10 V~+10 V的模拟量输出,其原理如图2所示。
图2 D/A接口原理
以第一组D/A输出为例,采用运算放大器搭建模拟减法器和反向放大电路。PA4脚产生的0~3.3 V电压与固定的1.65 V电压相减,将电压偏置为-1.65 V ~+1.65 V。然后,通过增益为6.06的反相放大器将此电压放大、取反,变换为-10 V~+10 V的范围,作为反相电压输出信号DA1-。最后,通过增益为1的反相放大器将DA1-的电压极性再次取反,成为同相电压输出信号DA1+。DA1-和DA1+可以作为一对差分信号输出,也可以单独使用DA1+作为单端信号进行输出。
2.2编码器接口电路
在运动控制类的伺服设备中,位置信号常采用正交编码信号进行反馈。正交编码信号有A、B两个信号,它们的脉冲数与位移成比例、脉冲频率与速度成比例。A、B信号的相位差为90°,当正方向运动时A信号超前B信号90°,反方向运动时B信号超前A信号90°[6],由此可以判断运动方向和运动距离。
由于正交编码信号只能提供相对移动量信息,无法提供绝对位置信息,因此,需要另外的Z信号脉冲指示位置原点。为了增强抗干扰能力,实际的正交编码信号常采用差分信号对进行传输。本装置包含2组编码器接口电路。以第一组编码器信号为例,为了处理正交编码信号,首先将3组差分信号转换为单端信号,并将信号变换为3.3 V的CMOS电平,以便和单片机连接。STM32F429的定时器具有正交编码信号计数功能,需要将A1信号和B1信号分别连接到定时器TIM1的通道1和通道2上[7]。Z1信号连接到普通的输入管脚,可以在该管脚的输入中断中对TIM1的计数清零,实现绝对坐标的定位。
2.3A/D接口电路
A/D接口用于采集模拟输出传感器的信号并转化为数字信号。STM32F429内部带有集成的ADC,可以将0~3.3 V的模拟信号转换为数字信号。A/D接口原理如图3所示:反相放大器将AIN1变换为-1.65 V~+1.65 V,再通过加法器与1.65 V固定电压叠加,最终将电压变换为0~3.3 V,输入到单片机的ADC管脚上。
图3 A/D接口原理
2.4I/O接口设计
I/O接口用于连接开关量的输入、输出装置。本实验装置采用工业设备中最常用的24 V直流控制信号。在输出通道中,将单片机的通用输出信号通过光电耦合器件进行信号隔离,再通过达林顿三极管进行电流放大。在输入通道中采用光电耦合器件进行隔离和电压转换,将转换后的信号接入单片机的通用输入管脚。每个输入/输出信号上均配有LED指示灯,可以清楚地看到I/O接口的开关状态。由于采用了信号隔离措施,有效地提高了信号的抗干扰能力。
3.1软件环境的建立
开放式伺服控制实验装置的操作系统为Windows 7专业版。为建立开放式伺服控制软件环境,需要安装Matlab R2013b及Simulink软件包,且须确认已安装Matlab Coder、Simulink Coder和Embedded Coder模块,以用于模型代码自动生成。此外,还需要安装单片机的嵌入式软件开发环境,包括STM32CubeMx、ST-Link仿真器驱动程序和Keil ARM MDK。STM32CubeMx是图形化的单片机配置和固件自动生成工具;ST-Link用于连接伺服控制实验装置的下载/调试接口;Keil ARM MDK是ARM单片机的C语言集成开发环境,可以完成软件工程管理、代码编辑、程序编译、链接、烧写、调试等功能[8]。
为了在Simulink环境建立的模型中调用单片机的硬件模块,还需要下载安装STM32 Matlab Target工具箱。该工具箱包含了STM32系列单片机的ADC、DAC、GPIO、I2C、TIMERS、USART和xWDG等模块,可以直接将所需的模块拖拽到Simulink控制模型中使用。
3.2实验支持库的开发
为了进一步提高实验装置的开放性和易用性,设计了一套实验支持库,在原有控制程序中增加了图形显示、数据采集和数据传输功能。这套软件库具有通用性,可以在控制代码中直接调用。
(1) 图形显示。图形显示模块用于在液晶显示器上进行图形显示。图形显示分为2层:底层包含点、线、矩形绘制、矩形填充、文字显示等基本绘图操作功能;上层是图形组件显示功能,包含示波器组件、数字表组件、静态文本组件等。组件显示内容可以根据实时状态进行动态刷新,其中示波器组件可以设定需要观测的信号数量和地址,以及时间(横坐标)、信号幅度(纵坐标)的刻度、显示位置等参数。在控制器运行期间,示波器可以实时显示设定信号的时间曲线,实现对多组内部和外部信号的显示。
(2) 数据采集。数据采集模块可定义需采集信号的类型、信号地址、数据存储地址、采集长度等参数,在控制程序执行期间实时采集各种信号数据,可供图形显示或数据传输模块使用。
(3) 数据传输。在数据传输模块中可以设置采集数据的类型和地址,以及通信参数。通信协议采用标准的xmodem协议[9],将实验装置的RS-232接口与计算机的串行通信口相连,即可在计算机上用超级终端等软件接收数据并存储为数据文件。在Matlab下设计了用于解析数据文件的函数,可以读取数据文件并转化为Matlab矩阵,供进一步分析使用。
3.3伺服控制程序设计流程
本实验装置采用开放式的程序设计模式,可以通过Simulink对控制算法进行图形化编程,伺服控制程序设计流程如图4所示。
图4 伺服控制程序设计流程
在设计前,需要对Simulink的模型参数进行设置,选择Fixed-step固定步长求解器,设置采样周期为0.001 s。在代码生成选项中选择stm32.tlc,并在STM32 Options中设置STM32CubeMx和STM32-MAT Target的安装路径,将STM32作为目标平台进行编译。然后,在Simulink中建立控制器模型和被控对象模型。若仿真实验结果不满足要求,可以修改模型或调整参数,直至满足要求。
控制器模型验证后可以进行代码自动生成。首先需要删除被控对象模型,并将控制器的输入/输出接口用STM32 Adapter中的模块替换,以便操作单片机上的各个外设。模型中需要包含STM32_Config模块,并在此模块中选择单片机的.ioc配置文件。.ioc配置文件是在STM32CubeMx中生成的,已经按照实验装置的电路进行了设置,可以自动产生硬件驱动程序和初始化代码。设置完成后,按Build model按钮,即可自动生成伺服控制程序的C语言源代码。
控制代码生成后,会自动打开STM32CubeMx,并打开用户指定的.ioc文件。此时,按Generate Code按钮即可生成一个完整的软件工程,包含Simulink生成的控制算法源代码,并自动生成所需要的硬件驱动程序。用Keil软件可以直接打开工程文件并查看源代码。用户可以在源代码中添加并调用前述的实验支持库,增加图形显示、数据采集与传输等功能。最后可以编译、链接源程序,生成可执行的二进制文件,下载到实验装置中进行实际运行测试。
开放式伺服控制实验装置的实物照片见图5。进行伺服控制实验时,控制板需要连接伺服驱动器,下载电缆、5V和24V电源。如果需要传输数据,还要用RS-232接口连接计算机的串行通信接口。以伺服电机的位置、速度双闭环控制实验为例[10],采用松下MINAS A4交流伺服驱动器和交流伺服电机,将伺服驱动器设置为转矩控制方式并设置转矩增益、反馈脉冲分倍频分子、分母等参数。将伺服驱动器的模拟量输入管脚和脉冲输出管脚分别与实验装置的D/A接口和编码器接口相连,伺服使能和报警信号分别与实验装置的I/O管脚相连。Simulink控制模型中各个输入/输出模块按照实际连接情况设置。在自动生成的程序中,找到代表实际位置的信号变量,调用实验支持库中的数据采集模块进行采集,然后传递到图形显示模块,可以显示位置信号的响应曲线。
图5 开放式伺服控制装置实物照片
实验采用位置阶跃指令,下载控制程序并执行后,可以看到电机转动到指定位置,并在屏幕上显示实际位置的阶跃响应曲线。通过调用数据传输模块,可将采集的数据上传至计算机,用Matlab作进一步分析。由于采用开放式的设计方法,使用者可以尝试搭建不同的控制器模型实现闭环控制,并通过实际验证比较各种方法的特点。目前该实验装置已成功实现了伺服电机的控制接口、速度控制、位置控制、加减速控制、系统辨识、前馈控制、双轴联动控制、PID神经网络控制、交叉耦合控制等实验[11-12]。
基于Simulink的开放式伺服控制实验装置采用高性能单片机,设计了伺服控制专用的A/D、D/A、编码器、I/O接口,并集成了彩色液晶显示、按键、LED、程序下载和通信接口,实现了开放式、图形化的伺服控制程序设计与仿真,并可自动生成控制器代码。开放的设计方法使得实验方案灵活多样,既能满足一般验证性实验的需要,也便于开展创新性的设计实验。
References)
[1] 廖晓钟,刘向东.控制系统分析与设计[M].北京:清华大学出版社,2008.
[2] 贾秋玲,袁冬莉,栾云凤.基于MATLAB 7.x/Simulink/Stateflow系统仿真、分析及设计[M].西安:西北工业大学出版社,2006.
[3] 尚丽,淮文军.基于Matlab/Simulink和GUI的运动控制系统虚拟实验平台设计[J].实验室研究与探索,2010,29(6):66-71.
[4] 刘杰.基于模型的设计及其嵌入式实现[M].北京:北京航空航天大学出版社,2010.
[5] 田谞,王宏伟,其木苏荣.基于STM32F429的音频信号发生器[J].微型机与应用,2014,33(24):87-90.
[6] 焦东升,张秀彬,应俊豪.基于正交编码器高精度测速方法的研究[J].微型电脑应用,2010,26(10):13-15.
[7] 吴涛,李勇波,杨靖.基于STM32的变频器+编码器精确定位控制系统设计[J].机床与液压,2013,41(14):98-99.
[8] 王海燕,杨艳华.Proteus和Keil软件在单片机实验教学中的应用[J].实验室研究与探索,2012,31(5):88-91.
[9] 黄琰,俞建成,金文明.基于改进Xmodem协议的水下滑翔机通信系统设计[J].传感器与微系统,2013,32(3):120-123.
[10] 孙宇,王志文,孔凡莉,等.交流伺服系统设计指南[M].北京:机械工业出版社,2013.
[11] 徐丽娜.神经网络控制[M].3版.北京:电子工业出版社,2009.
[12] 王丽梅,武志涛,孙宜标,等.直接驱动XY平台轮廓误差分析及法向交叉耦合控制[J].电机与控制学报,2010,14(9):63-68.
Design of an open servo control experimental kit based on Simulink
Dong Jingchuan, Wang Taiyong, Lu Gangqing, Li Xiaoqi, Zhang Yongbin, Wang Zijing
(School of Mechanical Engineering,Tianjin University,Tianjin 300354,China)
The conventional servo control experimental kits are lack of openness and difficult for programming. To overcome these problems,an open servo control experimental kit based on the Simulink software is designed. The hardware of the experimental kit is based on the STM32F429 microcontroller,which includes AD,DA,encoder and general purpose IO ports for the servo control,and a color TFT monitor and an RS-232 communication port. The software platform is based on the Simulink,which allows users to perform servo algorithm design,simulation,execution,data exchange and analysis. The platform is open,modular,graphical and easy to use,thus makes it suitable for perform verification and innovative servo control experiments. The experimental kit can satisfy the requirements of servo control courses.
servo control; experimental kit; microcontroller; Simulink
10.16791/j.cnki.sjg.2016.09.032
2016-03-08
国家自然科学基金项目(51475324);天津市科技重大专项与工程项目(15ZXZNGX00170);江苏省工业装备数字制造及控制技术重点实验室开放研究基金课题(DM2015001);天津大学实验室建设与管理改革项目
董靖川(1983—),男,天津,博士,工程师/实验师,主要研究方向为数控技术.
E-mail:new_lightning@aliyun.com
TP23
A
1002-4956(2016)9-0126-04