基才Matlab的倒立摆系统实时模糊控制研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基才Matlab的倒立摆系统实时模糊控制研究
徐雄,石曙东
(湖北师范学院计算机科学系,湖北黄石 435002)
1 引言
倒立摆系统是一种是非最小相位系统,它具有非线性、多变量和不稳定的特点,因而成为控制理论教学和科研的典型对象,以往主要通过软件仿真或在精密倒立摆上实现各种控制算法,而对倒立摆硬件系统开发的相关报道却甚少。

目前,国内各高校基本上都采用香港固高公司和加拿大Quanser公司生产的系统,由于采用高精度的零部件,因此,硬件成本较高;其软件大多采用VC等可视化编程软件来开发,研发周期长,并且不提供源代码,缺乏可读性和再利用性。

本文介绍一种倒立摆系统的软硬件开发,其硬件系统具有低成本、高可靠性和稳定性等优点;其软件系统在Matlab环境下编程和实时控制,源代码完全开放,而且可调用丰富的Matlab 工具箱函数,非常适用于教学和科研上的再学习和开发。

2 倒立摆系统的硬件设计
一级水平倒立摆硬件系统框图如图1所示,多级水平倒立摆也相类似,区别之处只是摆杆不同。

倒立摆系统由导轨、力矩电机、滑块与摆杆、皮带等部件组成。

摆杆连接滑块,滑块由皮带拖动在导轨上滑行。

滑块离中心点的水平位移和摆杆的角度分别由旋转编码器1和2检测,通过旋转编码器信息采集卡转换后对应于θ和x的计数值。

在导轨的两侧各有一个限位开关(常闭),当滑块滑行到两侧时,将碰到限位开关并使其断开,用来判断滑块的位置是否超出限定范围以及是否立即停止电机运行。

限位开关的通断信号由数据采集卡I/O采集,控制电压通过数据采集卡D/A输出,经过力矩电机控制器转换后作用于电机。

硬件系统组成部件说明如表1 所列。

2.1 力矩电机控制器设计
数据采集卡D/A输出电压一般为0 V~+5 V或0 V~+10 V,而力矩电机的伺服驱动电压为-24 V~+24 V,因此需要设计一个控制器,将数据采集卡的输出电压按比例转换成力矩电机控制所需的伺服电压。

力矩电机控制器采用不带MPU的分立元件反馈方法设计,以提高可靠性。

当电机带动小车运动到两端碰到限位开关时,施加在电机上的电压必须马上变成0 V,电机立即停止转动,但力矩电机的堵转电流非常大,会击穿达林顿管,因此在设计力矩电机控制器时,应考虑碰到限位开关时要立即切断电机的达林顿输出电路,使电机端的电压箝位于0 V。

2.2 旋转编码器接口设计
摆杆的角度(θ)是倒立摆控制所需的最主要的反馈检测信号,而小车的位置(x)只起到辅调节作用,要求精度不高。

因此,摆杆角度检测采用日本NEMI- COM公司生产的高精度旋转编码器,而小车位置检测所用旋转编码器则自制,由旋转编码盘加上带槽光耦检测电路实现。

旋转编码器的典型输出为两个相位差90°的方波信号(A和B)以及零位脉冲信号Z。

其中,Z 脉冲信号标志旋转编码盘转过的圈数(每圈360°),A、B两相信号脉冲数标志转编码盘转过的角度,A、B之间的相位关系为码盘的转向,即当A相超前B相90°时,标志码盘正转;当B相超前A相90°时,标志码盘反转。

旋转编码器接口电路将A、B、Z脉冲信号转换成旋转码盘转过角度的计数值,一般采用单片机来实现。

从光电编码器接口电路要求高速度、高精度和计算机接口等方面考虑,本系统设计的旋转编码器接口应为插在计算机PCI插槽上的PCI板卡,计数电路采用高速CPLD器件EPM7128实现,采用抗干扰二倍频方法设计,PCI接口器件采用PLX公司的PCI9052。

自制旋转编码器及接口电路框图如图2所示,左边虚线框内是自制的旋转编码器电路,调整好带槽光耦01 和02之间的距离,转动带齿光码盘,A、B就会产生相位差为90°的脉冲信号。

3 倒立摆软件系统设计
倒立摆软件系统一般都是在Windows操作系统中采用Turbo C、Visual C++、C++Builder等可视化编程软件开发,虽然实时性比较好,但控制算法实现难度较高,开发周期长并且缺乏灵活性。

笔者提出以计算、绘图和仿真功能强大的Matlab软件作为控制算法的开发环境,用Visual C++开发MEX接口生成的动态链接库(DLL)作为Matlab与PCI数据采集卡和旋转编码器信号采集卡进行通信的中介,编制M文件实现模糊控制算法,具有编程简单、工具箱函数调用和数据分析方便等优点。

3.1 Matlab环境下实现实时控制
用Matlab 对系统进行实时控制有两种可选择的方法,编制M文件或利用Simulink,这两种方法也可以交互使用。

另外,也可以采用Matlab与第三方软件相互调用的方法实现实时控制。

直接采用M文件编程简单易学,但运行速度较慢;使用Simulink和Real-Time Workshop 进行实时控制,控制参数修改方便,运行速度快,在仿真和调试完成后,可生成C代码并移植到硬件直接使用,快速实现控制系统。

Matlab 环境下这两种方法的数据交换过程如图3所示,其中,上部是编制M文件实现实时控制的数据交换过程。

Matlab 只带有知名公司板卡产品的驱动程序,如果采用国内公司或者用户自行设计的板卡,则需要自行编写设计驱动程序并采用Matlab访问硬件的接口程序。

M文件下没有直接访问硬件的函数,因此需要使用Matlab提供的MEX接口函数来开发硬件驱动,生成动态链接库(DLL)。

如果利用Simulink模块实时控制,则需要编制访问硬件的S-Function接口,利用此函数可以编写实现自身功能的Simulink模块。

还可以采用S-Function编写 Mat-lab不带驱动的硬件板卡的驱动程序。

3.2 变量组合的模糊控制器设计
单级倒立摆是一个两输入单输出的多变量系统,控制目标是摆杆的角度θ和滑块的水平位移X皆为0或者在0点附近动态调整,若要控制这两个量,就必须引入其变化率作为反馈量。

因此,模糊控制器的输入量为摆杆的角度θ、角速度ω、滑块的水平位移X以及水平速度V,而输出为力矩电机的控制电压U。

通过线性变换,将摆的角度θ的电压值映射到论域[-6,6],角速度ω的论域和角度θ相同。

θ和ω采用7级分割,分别为NB、NM、NS、ZE、PS、 PM、PB、用钟形隶属度函数。

同理,将滑块的水平位移X映射至论域[-1,1],模糊分割为3级,分别是NM、ZE、PM,使用三角形隶属度函数。

水平速度V论域为[-1,1],模糊分割为2级,分别是N、P,使用三角形隶属度函数。

输出的控制电压u论域为[-6,6],分割成7级,分别为NB、NM、 NS、ZE、PS、PM、PB。

在进行模糊推理运算时,采用Mamdani最大-最小合成运算,而输出的解模糊运算则采用重心法。

对于多变量模糊控制系统,由于可能的控制规则数目是输入变量数的指数,因此,如何有效地减少多变量模糊控制系统中控制规则的数目,对理论分析和工程应用都有着非常重要的意义。

为了减少规则的数量,本文根据摆杆的角度θ和滑块的水平位移x分别设置模糊控制规则库,而最终的控制信号就是分别调用这两个规则库所得到的控制信号的组合。

具体地,第
i条规则就是:
其中,如果根据摆杆的角度和角速度来确定控制信号,那么,I1=θ而I2=ω;如果根据水平位移x和速度v确定控制信号,那么,I1=x而I2=v。

具体的模糊控制规则分别如表2和表3所示,推理采用max-min合成运算,解模糊则采用重心法。

在实际控制中,这两个规则库是交替使用的,从而在保证摆杆不倒的前提下,使滑块向中心位置靠拢。

具体做法:每三个采样周期的前两个周期采用角度控制规则库,第三个周期则同时采用两个规则库进行模糊推理计算,并将得到的两个控制量按下式加权计算出最终的控制量U。

其中,Uθ和Ux分别为通过角度控制规则库和位移控制规则库推理计算得到的控制量,加权系数可根据不同要求进行调整。

倒立摆系统的控制算法分两部分:摆杆自动起摆控制和稳定在垂直小角度范围内控制,一般以摆杆偏离垂直站立角度±12°为界限,在±12°范围内采用模糊控制算法使其稳定在垂直站立状态,超出这个范围则启动自动起摆控制算法,再次使其稳定在垂直站立状态。

为了提高倒立摆系统的抗干扰性能,摆杆在±12°范围内摆动时使用的模糊规则库可进一步细分,以确定合适的控制电压。

4 实验结果
单级倒立摆控制系统的采样周期一般不大于20 ms。

本系统模糊控制器的采样周期为15 ms,即每隔15 ms采样一次θ、ω、x和v的值,并给出控制信号U。

图4和图5分别给出了前20 s内摆杆的角度电压曲线和前100 s内滑块的位移电压曲线。

在倒立摆处于竖直倒立状态时加入不同的扰动信号,本控制系统表现出良好的抗干扰性能。

图6和图7分别为加入幅值0.5的阶跃扰动和幅值0.5频率为0.5 Hz的方波扰动后的摆杆角度波形图。

扰动是通过将程序代码加在输出控制电压值上来实现的,输出控制电压范围为0~+10 V。

由图可以看出,在Matlab环境下应用组合变量模糊控制策略对倒立摆系统的实时控制取得了很好的效果。

在实际运行时,Matlab环境下的模糊控制器使倒立摆系统保持稳定时间可以长达几个小时,并且具有鲁棒性,受外界干扰时可自动调整至稳定状态。

5 结束语
本文给出了一种低成本、高可靠性和稳定性的倒立摆硬件系统的解决方案以及在Matlab环境下控制软件的实现方法。

在硬件方面,与其他同类倒立摆系统相比较,本系统在保证性能的前提下大大降低了成本、实用性强;而且在软件方面,控制软件在Matlab环境下开发,利用简单的Matlab语言编程,对教学和科学研究十分有益。

实验结果表明,在Matlab环境下进行复杂非线性系统的实时控制是可行的。

使用Matlab进行实时控制系统的开发,可大大简化系统建模和控制算法的实现,利用Real-Time Workshop生成的C代码可直接移植到硬件或其他软件上,有效地缩短软件的开发时间。

相关文档
最新文档