自控原理实验任务书

更新时间:2024-07-10 13:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《自动控制原理》

实验指导书

戴 波 盛 沙

北京石油化工学院信息工程学院

2005年8月

目 录

实验一《控制系统装置实验》 ........................................................................... 1 实验二《典型环节的阶跃响应实验》 ......................................................... 4 实验三《MATLAB软件控制系统分析实验》 ........................................... 6 实验四《典型控制系统研究与分析》 ......................................................... 8 实验四《典型控制系统研究与分析》(选做二) ............................ 12 附录一 球杆系统使用说明................................................................................... 15 附录二 直线倒立摆系统使用说明 ................................................................ 28

自控原理实验指导书

实验一《控制系统装置实验》

一. 实验目的:

通过对典型实际控制系统装置的认识,了解实现控制的物理方式,建立控制的系统概念,加深对自动控制原理的理论认识。掌握如何根据实际物理系统画控制系统方块图。

二. 实验内容与要求:

1 流量控制系统装置

流量控制系统装置是以水为介质,由容器、管线、泵组成,如下图:

孔板 转子流量计 调节器 变送器 记录仪 电/气转换

过了解该装置

通的工作任务:

图1.1 流量控制系统

泵 过程,完成以下

1) 画出系统闭环控制原理图,并说明其工作原理。

2 球杆控制系统装置

直线位移传感器

IPM智能驱动器

电脑 图1.2 球杆控制系统

1

自控原理实验指导书

该装置由球杆装置、IPM智能驱动器、计算机、电机、齿轮减速器、直线位移传感器所组成,通过电机控制小球在杆上的位置。计算机输入小球的控制位置,把数据传输给IPM智能驱动器,产生相应的控制量,使电机转动,带动杠杆臂运动,使小球的位置得到控制。了解该装置的工作过程,完成如下任务:

1) 画出球杆控制系统闭环控制原理图,并说明其工作原理。

3 直线一级倒立摆与直线二级倒立摆控制系统装置

图1.3 直线倒立摆控制系统

该装置由计算机、电控箱、倒立摆本体等部件组成,通过控制小车直线运动,达到使摆杆稳定倒立的目的。了解该装置的工作过程,完成如下任务:

1) 画出一级倒立摆系统闭环控制原理图,并说明其工作原理。 4 双旋翼控制系统装置

该装置是由计算机、电控箱、双旋翼装置组成的三自由度多变量控制装置,通过调节两个旋翼的旋转速度,达到控制双旋翼高度、倾角、转速的目的。

2

自控原理实验指导书

图1.4 双旋翼MIMO系统

了解该装置的工作过程,完成如下任务:

1) 画出双旋翼系统闭环控制原理图,并说明其工作原理。

三.实验条件:

流量控制系统、球杆控制系统、倒立摆控制系统、双旋翼控制系统。

四.其它要求:

结合教材第一章的内容,加深对“控制”、“开环”、“闭环”、“反馈”“方块图”等概念的认识。

3

自控原理实验指导书

实验二《典型环节的阶跃响应实验》

一.实验目的:

1、 熟悉并掌握labACT实验系统的使用。

2、 熟悉各典型环节的电路、传递函数及其特性,掌握典型环节的电路模拟与软件仿

真研究。

3、 测量各典型环节的阶跃响应曲线,了解参数变化对其动态特性的影响。 4、 初步了解MATLAB中SIMULINK的使用方法。

二. 实验原理:

1典型环节的阶跃响应

采用电路模拟方法,在实验板上通过电路模拟比例、积分和一阶惯性环节,用信号发生器产生输入信号,用示波器观察不同环节输入输出信号情况。 1) 比例环节

微分方程 c(t)= - K*r(t) 传递函数 C(S)/R(S)= -K 模拟电路图如图2.1所示。 2) 积分环节

微分方程T dc(t)/dt= - r(t) 传递函数C(S)/R(S)=-1/TS 模拟电路图如图2.2所示。 3) 惯性环节(一阶系统) 微分方程T dc(t)/dt +c(t)= - K*r(t) 传递函数C(S)/R(S)=-K/(TS+1) 模拟电路图如图2.3所示。

图2.2 积分环节 图2.1 比例环节

三. 实验内容:

1、 设计并组建各典型环节的模拟电路;

图2.3 惯性环节

4

自控原理实验指导书

2、 测量各典型环节的阶跃响应,并研究参数变化对其输出响应的影响;

3、 利用MATLAB中的SIMULINK工具箱,完成各典型环节的软件仿真,并与模拟电路

测试的结果相比较。

四、实验步骤

1、熟悉实验箱,利用实验箱上的模拟电路单元,构建所设计的(可参考本实验附录)典型环节(包括比例、积分、惯性环节)的模拟电路。

1) 比例环节要求r(t)为一阶跃信号, 幅度为1V,改变比例系数(K=0.5、K=2),

观测结果,研究参数变化对输出响应的影响。

2) 积分环节要求r(t)为一阶跃信号,幅度1V,改变时间常数T(R1=100K、C1=1uF ,

R1=200K、C1=1uF ,观测结果,研究参数变化对输出响应的影响。

3) 惯性环节要求r(t)为一阶跃信号,幅度为1V,改变时间常数T及比例系数K

(R1=100K、C1=1uF、K=1; R1=100K、C1=1uF、K =2),观测结果,根据结果,测量出惯性环节的时间常数T(具体方法,可参考《自动控制原理》一阶系统的单位阶跃响应),研究参数变化对输出响应的影响。

2、运行MATLAB中的SIMULINK,构建典型环节,进行仿真实验,存储波形和数据完成实验报告。(可选做)

五. 实验报告要求:

1) 画出各典型环节的实验电路图和阶跃响应曲线,并注明参数。

2) 根据测得的典型环节单位阶跃响应曲线,分析参数变化对动态特性的影响。

六.实验思考题:

1、 用运放模拟典型环节,其传递函数在什么假设条件下近似导出的?

2、 积分环节和惯性环节主要差别是什么?在什么条件下,惯性环节可以近似地视为积

分环节,而又在什么条件下,惯性环节可以近似地视为比例环节。

3、 想一想:介绍实验原理时,只用了一个运放,但为何实验时,各典型环节都用到了

两个运放?

七. 实验条件:

1) 微机及MATLAB软件 1台 2) 电路实验箱 1 套

5

自控原理实验指导书

实验三《Matlab软件控制系统分析实验》

一. 实验目的:

1.学会使用Matlab求出系统的阶跃响应;使用Matlab绘制系统的根轨迹。 2.掌握利用Matlab软件来分析与设计稳定的系统。

二. 实验原理:

在《自动控制原理》第三章当中,介绍了判定一个线性系统的稳定的充分必要条件是:闭环系统特征方程的所有根均具有负实部,或者说,闭环传递函数的极点均严格位于左半S平面。

1948年,埃文斯(Evans)提出一种求解闭环特征方程根的简单方法,并且在控制工程中得到了广泛的应用。这种方法称为根轨迹法。根轨迹法是在已知控制系统开环传递函数的极点、零点分布的基础上,研究系统参数的变化(通常该参数为增益K)对控制系统闭环传递函数极点分布的影响的一种图解法。

应用根轨迹法,只需要通过简单的计算,即可看出某个或某些系统参数变化时,对系统闭环极点的影响趋势。这种定性的分析在研究控制系统的稳定性和在提出改善系统性能的合理途径等方面都具有重要意义。

三.实验内容与步骤

需要分析的系统如下:

1) 求出闭环传递函数,利用劳斯判据,求出使系统稳定的K的取值范围。 (预习报告中

完成)

2) 当K=10、50、110、120时,分别利用Matlab程序求出系统的阶跃响应,观察k的取值

对系统稳定的影响,在实验报告中记录三种情况下的系统的阶跃响应。(预习报告写出相关程序)

3) 用Matlab编程画出系统根轨迹图,确定使系统稳定的K的取值范围,并与计算的取值

相比较。(提示:根轨迹画的是K从0至∞时,所有闭环极点的集合,根据系统稳定的

6

自控原理实验指导书

充分必要条件,只要极点在虚轴的左边就是稳定的系统。那么如何找到K的取值呢?)(预习报告:根据根轨迹绘制法则手工绘制出系统根轨迹,求出临界稳定时的K值。 写出相关程序)

五. 实验条件:

1) 微机 1台 2)Matlab仿真软件 1 套

六. 其它要求:

按要求完成预习报告,实验前教师检查实验预习报告,预习报告不通过不得进行实验。

Matlab相关命令:

(1)画出系统的单位阶跃响应:step(num,den,t )

其中num和den分别用系统闭环传递函数分子和分母多项式的降幂排列的系数矩阵表示 (2)绘制系统的根轨迹: rlocus(num,den)

其中num和den分别是下图中sys的分子和分母多项式的降幂排列的系数矩阵

R sys —— k C

(3) [k poles]=rlocfind(num,den) 其中num,den的含义同rlocus

移动图形窗口上的+字光标到根轨迹图中的某点,单击左键,可得到此点的根轨迹增益值k和对应的闭环极点列向量poles(可在命令窗口中查看数值)

1例1.已知系统的闭环传函为?(S)?使用

2s?3s?10matlab来求阶跃响应。 利用命令step(num,den,t) t=0:0.1:30;

num=[1];den=[1 3 10];step(num,den,t ) 运行结果为:

Amptude阶跃响应1.41.210.80.60.4K(s?1)例2.已知系统开环传递函数为G(s)H(s)?2s(s?9)使用Matlab绘制系统的根轨迹。

num=[0,0,1,1];den=[1,9,0,0];rlocus(num,den) [k poles]=rlocfind(num,den) axis('square');grid on 运行结果为:

0.20051015Time (sec)202530 7

自控原理实验指导书

实验四《典型控制系统研究与分析》

一.实验目的:

通过对球杆系统进行分析和实验,学生可以学习对物理系统的建模和控制系统的设计,熟悉PID控制的设计和调节,及各参数对于控制的影响。

二.实验原理及方法:

1球杆系统建模

L x Beam α Lever Arm θ d

对小球在导轨上滚动的动态过程的完整描述是非常复杂的,设计者的目的是对于该控制系统给出一个相对简单的模型。

实际上使小球在导轨上加速滚动的力是小球的重力在同导轨平行方向上的分力同小球受到的摩擦力的合力。考虑小球滚动的动力学方程,小球在V型杆上滚动的加速度:

a?gsin???gcos? (1)

其中?为小球与轨道之间的摩擦系数,而?为轨道杆与水平面之间的夹角。 但在进行数学建模的过程中,我们忽略了摩擦力,因此,其基本的数学模型转换成如下方式:

? mgsin??m?x (2)

当?<<1时,将上式线性化,得到传递函数如下

x(s)g?2 ?(s)s (3)

其中X(s)为小球在轨道上的位置。

但是,在实际控制的过程中,杆的仰角?是由电动机的转角输出来实现的。影响电动机转角?和杆仰角?之间关系的主要因素就是齿轮的减速比和非线性。因此,我们可以得到它们的关系如下:

?(s)?L??(s) d (4)

把(4)式代入(3)式,我们可以得到另一个模型:

x(s)gd?2 ?(s)Ls (5)

因此,球杆系统实际上可以简化为一个二阶系统。由建模分析我们得到球杆系统的开环传递函数为:

8

自控原理实验指导书

x(s)gd (6) ??(s)Ls2三.实验内容:

球杆系统的开环模型

球杆系统是一个典型的单输入单输出系统,通过上面的分析可以得到,其传递函数可以近似为一个两阶的积分器:

其中,w(s)??(s) W(S)

x(s)x(s)gd? 2?(s)LS为开环传递函数的拉普拉斯变换。X(s)和θ(s)分别为系统输出(小球的位置)和输入(齿轮的角度)的拉普拉斯变换。

1)如果不稳定,则需要对其添加控制器。假设控制的指标要求如下:

? 调整时间小于2.5秒(5%误差) ? 超调量小于10%

下面将采用PID控制来设计它的控制器:

kdS2?kps?kiki, kp??kds?ss其中,kp,ki和kd为PID控制器的比例,积分和微分参数。 1) P控制分析

首先,我们将分析在添加P控制器后,系统的闭环响应,然后,微分和积分控制器将在需要时加。控制系统如下图所示: Gp(s) W(s) e -

其中,Xd为小球目标位置的拉普拉斯变换, 设PID控制器为:Gp(s)?Kp

feedback xd ? x

9

自控原理实验指导书

1) 根据P控制框图,与对象的传函,求出系统的闭环传递函数。

2) 根据闭环传递函数,取Kp=3,g= 9.8,L=0.4,d=0.04时在matlab下编写程序,画出

系统的阶跃响应曲线。 (参考程序)

g=9.8; L=0.4; D=0.04;

Num=[(g*D)/L]; Den=[ L 0 0];

Plant=tf(Num,Den);%系统的开环传函 kp=3;

Sys_cl=feedback(kp*Plant,1,-1);%求系统的闭环传函 Step(0.2*Sys_cl);%给系统施加一个0.2m的阶跃输入

3) 在球杆系统中进行实验,让小球稳定在一个位置,如50,取参数Kp=3 ,观察实际结

果,得到实际响应曲线,分析实验结果与仿真是否一致。 记录下实际响应的结果。

按照附录的步骤,在MATLAB Simulink 环境下运行演示程序。

2) PD控制分析

控制系统如下图所示:

-

10

xd Gpd(s) e ? W(s) x 自控原理实验指导书

设PD控制器为:G(s)=1+KdS

1) 为简单起见,我们假设比例增益KP =6,调整KD. 的大小。根据PD控制框图,与对象

的传函,求出系统的闭环传递函数。

2) 根据闭环传递函数,取Kp=6,g= 9.8,L=0.4,d=0.04,Kd=6(可以任取)时在matlab下编

写M文件,画出系统的阶跃响应曲线,观察,判断此时的系统是否为一个稳定的系统,得到仿真条件下,系统的超调量和稳定时间?是否满足设计要求?如果不满足要求,可更改Kp与Kd的值,直到满足系统要求为止。

(参考程序):g=9.8; L=0.4; D=0.04; Num=[(g*D)/L]; Den=[1 0 0]; Plant=tf(Num,Den); %系统的开环传函 Kp=6; Kd=6; Contr=tf([Kd Kp],1); Sys_cl=feedback(Contr*Plant,1,-1) T=0:0.01:5; Step(0.2*Sys_cl); 3) 在球杆系统中进行实验,让小球稳定在一个位置,如50,取参数Kp ,Kd为仿真的值,观

察实际结果,得到实际响应曲线,分析实验结果与仿真是否一致。 记录下实际响应的结果。

按照附录的步骤,在MATLAB Simulink 环境下运行演示程序。

4)分析一下,PD控制很快平衡的原因,对比实验结果与仿真结果的区别。

四.实验条件:

1)球杆控制 1套 2)微机 1 台 3)matlab软件包 1套

五.其它要求:

实验前教师检查实验预习报告,预习报告要求得到系统的闭环传递函数,编写Matlab程序,预习报告不通过不得进行实验。

11

自控原理实验指导书

实验四《典型控制系统研究与分析》(选做二) 一.实验目的:

通过对一级倒立摆系统进行分析和实验,学生可以学习对物理系统的建模和控制系统的设计,熟悉PID控制的设计和调节,及各参数对于控制的影响。

二.实验原理及方法:

1 微分方程的推导

在忽略了空气阻力,各种摩擦之后,可将直线一级倒立摆系统抽象成小车和匀质杆组成的系统,如下图4.1所示。

图4.1 直线一级倒立摆系统

我们不妨做以下假设:

M 小车质量 m 摆杆质量 b 小车摩擦系数

l 摆杆转动轴心到杆质心的长度

I 摆杆惯量 F 加在小车上的力 x 小车位置

φ 摆杆与垂直向上方向的夹角

θ 摆杆与垂直向下方向的夹角(考虑到摆杆初始位置为竖直向下)

下图是系统中小车和摆杆的受力分析图。其中,和为小车与摆杆相互作用力的水平和垂直方向的分量。

注意:在实际倒立摆系统中检测和执行装置的正负方向已经完全确定,因而矢量方向定义如图所示,图示方向为矢量正方向

分析小车水平方向所受的合力,可以得到以下方程:

Mx?F?bx?N

由摆杆水平方向的受力进行分析可以得到下面等式:

12

...自控原理实验指导书

d2N?m2(x?lsin?)

dt把这个等式代入上式中,就得到系统的第一个运动方程:

(M?m)x?bx?ml?cos??ml?sin??F

为了推出系统的第二个运动方程,我们对摆杆垂直方向上的合力进行分析,可以得到下面方程:

......?2d2P?mg?m2(lcos?)

dt力矩平衡方程如下:

?Plsin??Nlcos??I?

注意:此方程中力矩的方向,由于θ=π+?,cos ?=-cosθ,sin ?=-sinθ,故等式前面有负号。

合并这两个方程,约去和,得到第二个运动方程:

..(I?ml)??mglsin???mlxcos?

设(是摆杆与垂直向上方向之间的夹角),假设与1(单位是弧度)相比很小,即《1,则可以进行近似处理:cos,,(。用来代表被控对象的输入力,线性化后两个运动方程如下:

....?2??mlx?(I?ml)??mgl ?.....??(M?m)x?bx?ml??u2....对方程组(1.3)进行拉普拉斯变换,得到 :

..?2?(I?ml)?(s)s2?mgl??mlX(s)s2 ?22??(M?m)X(s)s?bX(s)s?ml?(s)s?U(s)把方程组化简得到一级倒立摆的传递函数为:

ml2s?(s)q ?2)U(s)b(I?ml3(M?m)mgl2bmgls4?s?s?sqqq其中q=[(M+m)(I+ml)-(ml)]

实际系统的模型参数如下:

M 小车质量 1.096 Kg m 摆杆质量 0.109 Kg

b 小车摩擦系数 0 .1N/m/sec

13

2

2

自控原理实验指导书

l 摆杆转动轴心到杆质心的长度 0.2 5m

I 摆杆惯量 0.0034 kg*m*m T 采样频率 0.005秒

注意:在进行实际系统的MATLAB仿真时,请将采样频率改为实际系统的采样频率。请用户自行检查系统参数是否与实际系统相符,否则请改用实际参数进行实验。 2 PID控制设计 控制系统如下图所示:

r(s)=0 PID f Single Pendulum ? + _ e

设PID控制器为:Gc(s)?Kp?Kds?- feedback

Ki s

三.实验内容:

1) 根据实际系统参数及PID控制器的传函求出系统的闭环传递函数。

2) 在matlab下编写程序,进行仿真实验,通过调节PID参数请仔细观察思考控制器参数

对系统瞬态响应和稳态响应的影响。找到一组合适的控制器参数作业实际控制的参数。 3) 进入matlab simulink窗口,点击Inverted Pendulum Toolbox,在其右边点击single Pendlum

PID Control Demo, 进行仿真实验。在Start Real Pendulum Control /PID模块修改PID控制器参数及控制周期。

4) 如果控制效果不理想,调整控制器参数,直到获得较好的控制效果。 5) 分析理论结果与实际结果的差异。

四.实验条件:

一级倒立摆控制系统,装有Matlab软件包的计算机。

五.其它要求:

实验前教师检查实验预习报告,预习报告要求得出系统的闭环传递函数,预习报告不通过不得进行实验。

14

自控原理实验指导书

附录一 球杆系统使用说明

1.系统简述

球杆系统(Ball & Beam)是为自动控制原理等基础控制课程的教学实验而设计的实验设备。该系统涵盖了许多经典的和现代的设计方法。这个系统有一个非常重要的性质——它是开环不稳定的。不稳定系统的控制问题成了大多数控制系统需要克服的难点,有必要在实验室中研究。但是由于绝大多数的不稳定控制系统都是非常危险的,因此成了实验室研究的主要障碍。而球杆系统就是解决这种矛盾的最好的实验工具,它简单、安全并且具备了一个非稳定系统所具有的重要的动态特性。

整个装置由球杆执行系统、控制器和直流电源等部分组成。该系统对控制系统设计来说是一种理想的实验模型。正是由于系统的结构相对简单,因此比较容易理解该模型的控制过程。

球杆执行系统(如图1所示)由一根V型轨道和一个不锈钢球组成。V型槽轨道一侧为不锈钢杆,另一侧为直线位移电阻器。当球在轨道上滚动时,通过测量不锈钢杆上输出电压可测得球在轨道上的位置。V型槽轨道的一端固定,而另一端则由直流电机(DC motor)的经过两级齿轮减速,再通过固定在大齿轮上的连杆带动进行上下往复运动。V型槽轨道与水平线的夹角可通过测量大齿轮转动角度和简单的几何计算获得。这样,通过设计一个反馈控制系统调节直流电机的转动,就可以控制小球在轨道上的位置。

GBB1004型球杆系统由三大部分组成:IPM100智能驱动器、球杆装置和控制计算机。IPM100智能驱动器使用方法请参照《IPM100SK用户手册》;计算机为装有Windows的计算机或是其他兼容机。本实验说明主要讲述球杆装置、控制软件及实验.

Ball and Beam系统图示如下: L

x Beam Ball Lever Arm ? ?

Gear d 图1.1 球杆装置示意图 在一长约0.4米的轨道上放置一不锈钢球,轨道的一侧为不锈钢杆,另一侧为直线位移传感器,当球在轨道上滚动时,通过测量不锈钢杆上输出的电压信号可获得球在轨道上的位置x。电机转动带动齿轮系驱动杠杆臂Lever Arm转动,轨道Beam随杠杆臂的转动与水平方向也有一偏角?,球的重力分量会使它沿着轨道滚动,设计一个控制系统通过调节伺服角度?使得不锈钢球在Beam上的位置能被控制。

此系统为一个单输入(电机转角?)、单输出(小球位置)系统,输入量?利用伺服电机自带角度编码器来测量,输出量x由轨道上电位器的电压信号来获得。系统组成框图如下:

15

自控原理实验指导书

计算机 IPM100智能伺服驱动器 伺服电机 球杆装置 电机编码器 直线位移传感器 图1.2 球杆系统组成原理图 系统包括计算机、IPM100智能伺服驱动器、球杆本体和光电码盘、线性传感器几大部分,组成了一个闭环系统。光电码盘将杠杆臂与水平方向的夹角、角速度信号反馈给IPM100智能伺服驱动器,小球的位移、速度信号由直线位移传感器反馈。智能伺服控制器可以通过RS232接口和计算机通讯,利用鼠标或键盘可以输入小球的控制位置和控制参数,通过控制决策计算输出(电机转动方向、转动速度、加速度等),并由IPM100智能伺服驱动器来实现该控制决策,产生相应的控制量,使电机转动,带动杠杆臂运动,使球的位置得到控制。

2. 机械部分

选用直流伺服电机,采用齿轮箱减速机构进行减速,在输出齿轮上距齿轮圆心d(d小于齿轮半径)处连接一杠杆臂Leaver Arm,此连接处螺钉不能固定太紧,杠杆臂的另一端与轨道Beam铰链,机构的另一端是一固定座,此固定座上端与轨道的左侧铰链,见下图:

图2.1 球杆系统机械图

电机箱内部机构:电机,齿轮减速机构。

整个机构运行如下:电机转动带动与连杆相连的齿轮转动,此时连接点与齿轮中心连线和水平线的夹角为?(角度?应被限定在一定角度范围内,即使导轨倾角?最大和最小),轨道会绕左侧与固定座铰链处转动,轨道与水平方向的角度为?。此处角度编码器用于测量角度?, 此为系统的输入信号。

16

自控原理实验指导书

图2.2 转角α和β示意图

3.电气部分

a) 球滚动时位移的测量:直线位移传感器

线性轨道传感器接+5V电压。轨道两边测得的电压作为IPM100控制卡A/D输入口的信号。当小球在轨道上滚动时,通过不锈钢杆上输出的电压信号的测量可得到小球在轨道上的位置。

To A/D GND +5v

300Ω 直线位移传感器 图3.1 小球位置测量示意图 不锈钢杆 b) 伺服输出角度的测量:

采用IPM100控制器,电机驱动齿轮转动时通过电机实际位置转换得到角度?,接线及定义请参照《IPM100SK用户手册》

4.软件实现

注意在使用软件前, 请仔细阅读《IPM100SK用户手册》,不正确的操作将对系统造成破坏。

4.1 控制程序流程图:

17

自控原理实验指导书

4.2 操作

读出运动控制卡检测到的小球的当前位置x 从键盘或鼠标键入小球位置xd 是否在轨 道范围内? 是 ——否 重新键入新的数据 xd?x Controller 反馈回运动控制卡 驱动Lever arm,带动Beam 转动一个角度?以使球稳定在所要控制的位置 请按以下操作打开IPM Studio Motion 固高科技球杆系统运行窗口 4.2.1 安装IPM Motion Studio

1. 把光盘装入计算机光驱,选择“IPM Motion Studio”进入安装界面,然后点击

“IPM Motion Studio Setup Kit”选项,按照提示步骤进行安装。 2. 注释:1)安装程序将产生一个包含所有组件的“IPM Motion Studio”文件夹 2)

在WinNT的操作系统中请选择“Administrator”(管理员)用户登录

4.2.2 安装固高科技球杆系统控制程序

将BallBeamProject文件夹拷贝到安装目录中“...\\IPM Motion Studio\\Projects”文

件夹中,在修改前请注意备份。

4. 3 运行程序

1.点击“开始“菜单如下图所示:

图4.1 开始IPM Motion Studio

2.打开IPM Motion Studio应用程序窗口:

18

自控原理实验指导书

图4.2 IPM Motion Studio 窗口

备注:如果打开失败或是在窗口中下方没有显示找到P069.001.C01.S000A,请参照《IPM100SK用户手册》相关章节 3. 打开固高球杆系统控制软件

点击”Open Projects”打开工程文件,注意在打开之前,请确认您已经将BallBeamProject文件拷贝到“...\\IPM Motion Studio\\Projects”文件夹中,也可以点击”Browse”按钮指定路径,如下图所示:

图4-3 打开工程文件

如果点击”OK”后窗口没有显示内容:请按下图点击菜单“View| Project”打开工程窗口:

19

自控原理实验指导书

图4-4 显示工程界面

工程窗口如下图所示:

图4-5 工程界面

4. “Motor”和”Drive”已经调试好, 建议用户在比较熟悉IPM100SK及电机特性前不要更改.详

细调试方法见相关章节. 5. 点击上图中”Motion”图标, 打开控制程序如下图

20

自控原理实验指导书

图4-6 控制程序(BallBeam)窗口

6. 点击 “+”或 “-“打开 (关闭) 组如下图所示:

图4-7 程序编辑窗口

确认程序正确后点击”OK”关闭对话框,回到如图4-5所示工程界面,请按下面步骤运行程序: 1) 给IPM100上电并确认计算机和IPM100之间通讯正常。 2) 点击运行按钮

运行程序, 运行程序时请用手托起连杆使球杆保持在水平位置,直

21

自控原理实验指导书

到程序给电机上伺服时松开,过程中请注意安全,小心手指被齿轮夹伤!正确方法如下图所示:

图4-8 手指夹持位置示意图

遇到不正常情况请点击

(IPM100复位)、(电机下伺服)或直接关掉电源停止电机运动

7. 为观察小球位置、电机位置等参数,点击”View Control Panels” 选择”固高科技球杆系统”如下图所示:

图4-9 进入固高科技球杆系统可视化界面

点击鼠标打开以下窗口:

22

自控原理实验指导书

图4-10 固高科技球杆系统界面

在上面的小窗口中,点击鼠标右键,如下图所示:

图4-11 开始可视化显示窗口

点击”Start”开始进行可视化显示,显示如下:

说明: 界面分成左边和右边两大部分,左边显示小球位置、速度,位置误差,电机位置、电机速度等量,右边为参数调整界面,包括小球目标位置,PID参数调节,Break,Continue,Axisoff等命令.

23

自控原理实验指导书

图4-12 固高科技球杆系统界面

在界面左边,可以观察控制的结果,如下图所示,

图4-13 运行结果显示图

在右边,可以在线更改参数

1) 更改小球目标位置,拖动小球目标位置滑块,到需要的位置,或是键入小球目标位置. 2) 更改PID控制参数,上下拖动Kp,Ki,Kd窗口内滑块,调整其参数,由于Kp,Ki,Kd都为

int型,所以只能为整数.(由于内部DSP乘法计算限制)

3) 点击”Break”可以暂停运动,点击”Continue”继续运行,点击”Axisoff”关闭电机。

附 程序说明(TML语言):

第一部分: 变量声明(int 为16位整型, long为32位带符号整型, fixed 为32位实型, 前16位

24

自控原理实验指导书

为整数部分,后16位为小数部分) 注:英文注释为程序自带注释

int Kp; //PID控制器比例系数 int Ki; //PID控制器积分系数 int Kd; //PID控制器微分系数 fixed BallRefPos; //小球目标位置 fixed FeedbackVol; //反馈电压 fixed BallActPos; //小球实际位置

fixed BallPosErrNew; //此采样周期中小球实际位置相对目标位置的位置误差 fixed BallPosErrOld; //上次采样周期中小球实际位置相对目标位置的位置误差 fixed BallPosErrDot; //小球运动速度

fixed PIDMotorPos; //PID比例部分引起的电机目标位置 fixed PIDErrDot; // PID微分部分引起的电机目标位置 fixed BallPosErrIntegral; //PID积分部分引起的电机目标位置 long MulResult; //乘积结果(用于IPM100内部DSP乘积运算) int MulTran; //乘积转移变量(用于IPM100内部DSP乘积运算) fixed PD_PID_Select; //PD PID控制器选择因子(用于分段PID控制) int MotorTPos; //电机目标位置

BallRefPos = 200; //Set 32 bit variable BallRefPos with value/32 bit variable 200 Kp = 4; //Set variable Kp with value/16 bit variable/label 4 Ki = 8; //Set variable Ki with value/16 bit variable/label 8 Kd = 4; //Set variable Kd with value/16 bit variable/label 4

第二部分: 主控制循环

loop:

FeedbackVol(H) = 0; //Set HIGH part of variable FeedbackVol with value/16 bit variable 0

FeedbackVol(L) = AD5; //Set LOW part of variable FeedbackVol with value/16 bit variable AD5 //通过AD5

读取电压反馈值,0-5V的电压被转化成0-1的小数

FeedBackVol*400 << 0; //Set P register with the product of variable FeedBackVol with value/variable 400

LEFT shifted with 0 bits.//电压反馈值乘以400(杆实际有效长度)得到小球实际位置

MulResult = PROD(L); //Set 32 bit variable MulResult with value/32 bit variable PROD(L) //乘积结果送入乘积寄存器

MulTran = MulResult(H); //Set variable MulTran with HIGH part of 32 bit variable MulResult BallActPos(H) = MulTran; //Set HIGH part of variable BallActPos with value/16 bit variable MulTran MulTran = MulResult(L); //Set variable MulTran with LOW part of 32 bit variable MulResult BallActPos(L) = MulTran; //Set LOW part of variable BallActPos with value/16 bit variable MulTran //48位的乘积结果转化成32位fixed实数型

BallPosErrNew = BallActPos; //Set 32 bit variable BallPosErrNew with value/32 bit variable BallActPos BallPosErrNew -= BallRefPos; //Substract from variable BallPosErrNew the value/variable BallRefPos //计算位置误差

BallPosErrDot = BallPosErrNew; //Set 32 bit variable BallPosErrDot with value/32 bit variable

BallPosErrNew

BallPosErrDot -= BallPosErrOld; //Substract from variable BallPosErrDot the value/variable BallPosErrOld

25

自控原理实验指导书

BallPosErrOld = BallPosErrNew; //Set 32 bit variable BallPosErrOld with value/32 bit variable

BallPosErrNew// 计算位置误差微分

BallPosErrDot*20 << 0; //Set P register with the product of variable BallPosErrDot with value/variable 20

LEFT shifted with 0 bits. //采样周期位50ms,转化单位 mm/采样周期 到 mm/s

MulResult = PROD; //Set 32 bit variable MulResult with value/32 bit variable PROD MulTran = MulResult(H); //Set variable MulTran with HIGH part of 32 bit variable MulResult

BallPosErrDot(H) = MulTran; //Set HIGH part of variable BallPosErrDot with value/16 bit variable MulTran MulTran = MulResult(L); //Set variable MulTran with LOW part of 32 bit variable MulResult

BallPosErrDot(L) = MulTran; //Set LOW part of variable BallPosErrDot with value/16 bit variable MulTran //48位的乘积结果转化成32位fixed实数型

PD_PID_Select = BallPosErrDot; //Set 32 bit variable PD_PID_Select with value/32 bit variable

BallPosErrDot //根据误差微分选择PID控制策略

GOTO BallPosErrDot_GT_0, PD_PID_Select, GT; //GOTO BallPosErrDot_GT_0 if PD_PID_Select > 0 PD_PID_Select += 50; //Add to variable PD_PID_Select the value/variable 50 GOTO PD_control, PD_PID_Select, LT; //GOTO PD_control if PD_PID_Select < 0 GOTO CheckPosErr; BallPosErrDot_GT_0:

PD_PID_Select -= 50; //Substract from variable PD_PID_Select the value/variable 50 GOTO PD_Control, PD_PID_Select, GT; //GOTO PD_Control if PD_PID_Select > 0 GOTO CheckPosErr; //当速度小于50mm/s时采用PID控制策略 CheckPosErr:

PD_PID_Select = BallPosErrNew; //Set 32 bit variable PD_PID_Select with value/32 bit variable BallPosErrNew

GOTO BallPosErr_GT_0, PD_PID_Select, GT; //GOTO BallPosErr_GT_0 if PD_PID_Select > 0 PD_PID_Select += 50; //Add to variable PD_PID_Select the value/variable 50 GOTO PD_control, PD_PID_Select, LT; //GOTO PD_control if PD_PID_Select < 0

BallPosErrIntegral += BallPosErrNew; //Add to variable BallPosErrIntegral the value/variable BallPosErrNew GOTO PID_control; BallPosErr_GT_0:

PD_PID_Select -= 50; //Substract from variable PD_PID_Select the value/variable 50 GOTO PD_Control, PD_PID_Select, GT; //GOTO PD_Control if PD_PID_Select > 0

BallPosErrIntegral += BallPosErrNew; //Add to variable BallPosErrIntegral the value/variable BallPosErrNew GOTO PID_Control; //当位置误差小于50mm时采用PID控制策略,注,只有同时满足上面两个条件

才采用PID控制,否则采用PD控制

PD_control:

BallPosErrIntegral = 0; //Set 32 bit variable BallPosErrIntegral with value/32 bit variable 0 //积分清零

PID_control: //比例控制作用

BallPosErrNew*Kp << 0; //Set P register with the product of variable BallPosErrNew with value/variable Kp LEFT shifted with 0 bits.

MulResult = PROD; //Set 32 bit variable MulResult with value/32 bit variable PROD MulTran = MulResult(H); //Set variable MulTran with HIGH part of 32 bit variable MulResult

PIDMotorPos(H) = MulTran; //Set HIGH part of variable PIDMotorPos with value/16 bit variable MulTran MulTran = MulResult(L); //Set variable MulTran with LOW part of 32 bit variable MulResult

26

自控原理实验指导书

PIDMotorPos(L) = MulTran; //Set LOW part of variable PIDMotorPos with value/16 bit variable MulTran //积分控制作用

BallPosErrIntegral >>= 6; //Shift RIGHT variable BallPosErrIntegral by 6 bits.

BallPosErrIntegral*Ki << 0; //Set P register with the product of variable BallPosErrIntegral with

value/variable Ki LEFT shifted with 0 bits.

MulResult = PROD; //Set 32 bit variable MulResult with value/32 bit variable PROD MulTran = MulResult(H); //Set variable MulTran with HIGH part of 32 bit variable MulResult PIDMotorPos(H) += MulTran; //Add to variable PIDMotorPos(H) the value/variable MulTran MulTran = MulResult(L); //Set variable MulTran with LOW part of 32 bit variable MulResult PIDMotorPos(L) += MulTran; //Add to variable PIDMotorPos(L) the value/variable MulTran BallPosErrIntegral <<= 6; //Shift LEFT variable BallPosErrIntegral by 6 bits. //微分控制作用

BallPosErrDot*Kd << 0; //Set P register with the product of variable BallPosErrDot with value/variable Kd

LEFT shifted with 0 bits.

MulResult = PROD; //Set 32 bit variable MulResult with value/32 bit variable PROD MulTran = MulResult(H); //Set variable MulTran with HIGH part of 32 bit variable MulResult PIDMotorPos(H) += MulTran; //Add to variable PIDMotorPos(H) the value/variable MulTran MulTran = MulResult(L); //Set variable MulTran with LOW part of 32 bit variable MulResult PIDMotorPos(L) += MulTran; //Add to variable PIDMotorPos(L) the value/variable MulTran //给定电机目标位置及运动模式

MotorTPos = PIDMotorPos(H); //Set variable MotorTPos with HIGH part of 32 bit variable PIDMotorPos CPOS = MotorTPos<<0; //Set 32 bit variable CPOS with 16 bit value of variable MotorTPos left shifted with

0bits

CACC = 1.27324; //Acceleration command for position profile //给定电机运动加速度 CSPD = 8.00000; //Speed command for position profile //给定电机运行速度 CPA; //Position command is Absolute MODE PP3; //Set Position Profile Mode 3 TUM1; //Set Target Update Mode 1 UPD; //Update immediate

//设定时针为10 个DSP周期即: 10*5ms=50ms !RT 10; //Set event if RelativeTime >= 10 WAIT!; //WAIT until event occurs GOTO loop; //主循环结束

__

常见故障及解决办法:

1. IPM智能伺服驱动器和计算机通讯不正常,显示Board not found!请参见IPM100SK用户

手册中通讯错误解决办法!

2. 电机不能正常运转,请确认电机和驱动器连接是否正常!

小球位置误差过大,可能的原因:a。PID参数太小,增大Kp;b。初始位置不正确,退出程序,重新进入。并确认在程序开始运行时候小球导轨基本上水平。

27

自控原理实验指导书

附录二 直线倒立摆系统使用说明

固高倒立摆系统实验控制软件工作在Windows 2000操作系统环境下,不支持Windows98和95。系统运行时需要MATLAB 6 Release 12.1以及SIMULINK 4.1支持。用户使用控制软件前需自行安装上述软件。

固高倒立摆系统MATLAB实验软件的安装

第一步:倒立摆系统控制软件以光盘的形式分发,请将光盘插入驱动器

第二步:在光盘上找到软件安装目录,双击“setup.exe”,启动安装程序。系统出现图4-1提示

第三步:安装程序需要知道MATLAB软件所在的软件根目录路径,点击“Browse ?”按钮,系统会现图4-2浏览对话框,找到MATLAB软件路径并选中。

第四步:点击确定,然后点击“setup”按钮,系统会出现进度框。软件自动安装于MATLAB\\Toolbox\\pendPCI目录下。如果此目录存在,安装可能失败。

第五步:安装完毕,可以启动SIMULINK使用本软件。

28

自控原理实验指导书

固高倒立摆实时控制工具箱

固高倒立摆系统工具箱软件包括板卡相关功能函数、简单的例子、直线型单级倒立 摆以及二级倒立摆的实时控制示例程序几个部分。用户可以根据说明自己设计更新的算法, 或者将之移植到环型倒立摆系统上。实时控制示例程序包括一级倒立摆LQR算法、极点配置算法、PID控制、根轨迹法、频域设计法五种以及二级倒立摆LQR算法。 注意:因为Windows 2000是多任务的操作系统,为了保证倒立摆系统控制输出的实时性,请在运行实控程序前关闭其余的应用程序,并且在运行过程中禁止启动其它的应用程序。

实验步骤如下:

1. 检查电源线、数据线正确安装关闭电控箱电源。将小车放在导轨中间。

2.保证倒立摆杆垂直向下稳定。 3. 打开电控箱开关,接通电源。 4. 打开示例程序,设置正确地控

制参数,开始实控。 5. 用手将倒立摆杆柔和地扶起,

当电机启动后,手轻轻放开。 6. 对于经典控制理论设计的控

制算法,只能保证倒立摆杆

平衡,不能控制小车的位置。实验时需手动保证小车不要“撞墙”。 7. 实验结束,关闭程序,关闭电控箱。

下面以直线型一级倒立摆LQR 算法实时控制示例程序为例子,介绍倒立摆系统实时控制工具箱的应用及使用方法。

首先在Windows 2000操作系统环境下启动MATLAB应用程序,在Command Windows窗口中键入SIMULINK命令,启动成功安装倒立摆系统控制软Toolbox”模块库,单击模块库,在右边窗口中模块库展开包括示例程序五个(红色)两个简单的例子两个(绿色)。,封装的S-Function模块十个(蓝色)(图4-6所示)。封装的S-Function主要是运动控制板卡的功能函数的封装,如果不是对于C语言和MATLAB的CMEX功能不是很熟悉,建议用户不要修改,

29

自控原理实验指导书

并且不要修改相应的头文件和c语言源代码。

双击“Single Pendulum LQR Control Demos”模块,仿真程序如下:

仿真模块包括“Pendulum Initializaion”,”Enable Real Control at Each Step”以及”Start Real Pendulum Control “三个主要的部分。其中“Enable Real Control at Each Step “主要是设定控制时钟,使板卡控制输出使能。”Pendulum Initialization“部分是运动控制板卡的初始化,其模块结构如下:

双击蓝色 S—Function 模块,可以获得该模块的功能说明。 通过“Profile Mode

Constant”模块可选择板卡的控制模式,默认为速度控制模式。关 于板卡的工作模式的意义及初始化设定过程,请参见相关板卡的说明书。

实时控制示例程序最主要的部分是”Start Real Pendulum Control“,其结构如图4-9所示。

30

自控原理实验指导书

在数据采集和电机控制输出中使用了通过S—Function封装好的板卡相关功能函数。算法控制部分包括控制逻辑判断,控制算法等。其中的速度量通过延时环节差分得到:

实时控制输出模块为“Real Control”,其内部结构如下图所示。

该模块通过逻辑判断触发“Action Port”,将控制算法的结果包括理论运算的的速度和 加速度输出到板卡。关于运动控制板卡的速度工作模式下功能调用请参见相关说明书。

控制算法模块将得到的系统输入运用控制理论的相关算法得出理论的系统输出,对于LQR控制器,其算法为:

OutPut= Pos* Kx+PosDot*Kx’+Angle*Ka+AngDot*Ka’

双击“LQR Controller”,设置控制器参数如下:

其值为[kx Kx’ Ka Ka’]=[-10 -5 50 5]

点击“确定”按钮,使所设控制器参数生效。然后点击菜单条上“SIMULINK”菜单中的“Start”菜单。或者直接按“Ctrl-T”,系统开始进行实时控制。

其它的示例程序全部类似。

31

本文来源:https://www.bwwdw.com/article/4tt.html

Top