版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自控原理实验指导书PAGEPAGE35《自动控制原理》实验指导书戴波盛沙北京石油化工学院信息工程学院2005年8月目录TOC\o"1-2"\h\z实验一《控制系统装置实验》 1实验二《典型环节的阶跃响应实验》 1实验三《Matlab软件控制系统分析实验》 1实验四《典型控制系统研究与分析》 1实验四《典型控制系统研究与分析》(选做二) 1附录一球杆系统使用说明 1附录二直线倒立摆系统使用说明 1实验一《控制系统装置实验》实验目的:通过对典型实际控制系统装置的认识,了解实现控制的物理方式,建立控制的系统概念,加深对自动控制原理的理论认识。掌握如何根据实际物理系统画控制系统方块图。实验内容与要求:1流量控制系统装置流量控制系统装置是以水为介质,由容器、管线、泵组成,如下图:图1.1流量控制系统图1.1流量控制系统转子流量计变送器记录仪电/气转换调节器泵孔板通过了解该装置的工作过程,完成以下任务:画出系统闭环控制原理图,并说明其工作原理。2球杆控制系统装置直线位移传感器IPM智能驱动器图1.2球杆控制系统电脑直线位移传感器IPM智能驱动器图1.2球杆控制系统电脑该装置由球杆装置、IPM智能驱动器、计算机、电机、齿轮减速器、直线位移传感器所组成,通过电机控制小球在杆上的位置。计算机输入小球的控制位置,把数据传输给IPM智能驱动器,产生相应的控制量,使电机转动,带动杠杆臂运动,使小球的位置得到控制。了解该装置的工作过程,完成如下任务:画出球杆控制系统闭环控制原理图,并说明其工作原理。3直线一级倒立摆与直线二级倒立摆控制系统装置图1.3直线倒立摆控制系统图1.3直线倒立摆控制系统该装置由计算机、电控箱、倒立摆本体等部件组成,通过控制小车直线运动,达到使摆杆稳定倒立的目的。了解该装置的工作过程,完成如下任务:画出一级倒立摆系统闭环控制原理图,并说明其工作原理。4双旋翼控制系统装置该装置是由计算机、电控箱、双旋翼装置组成的三自由度多变量控制装置,通过调节两个旋翼的旋转速度,达到控制双旋翼高度、倾角、转速的目的。图1.4双旋翼MIMO系统图1.4双旋翼MIMO系统了解该装置的工作过程,完成如下任务:画出双旋翼系统闭环控制原理图,并说明其工作原理。三.实验条件:流量控制系统、球杆控制系统、倒立摆控制系统、双旋翼控制系统。四.其它要求:结合教材第一章的内容,加深对“控制”、“开环”、“闭环”、“反馈”“方块图”等概念的认识。实验二《典型环节的阶跃响应实验》一.实验目的:熟悉并掌握labACT实验系统的使用。熟悉各典型环节的电路、传递函数及其特性,掌握典型环节的电路模拟与软件仿真研究。测量各典型环节的阶跃响应曲线,了解参数变化对其动态特性的影响。初步了解MATLAB中SIMULINK的使用方法。二.实验原理:1典型环节的阶跃响应采用电路模拟方法,在实验板上通过电路模拟比例、积分和一阶惯性环节,用信号发生器产生输入信号,用示波器观察不同环节输入输出信号情况。比例环节微分方程c(t)=-K*r(t)传递函数C(S)/R(S)=-K图2.1比例环节模拟电路图如图2.1所示。图2.1比例环节积分环节微分方程Tdc(t)/dt=-r(t)传递函数C(S)/R(S)=-1/TS模拟电路图如图2.2所示。惯性环节(一阶系统)微分方程Tdc(t)/dt+c(t)=-K*r(t)图2.2积分环节传递函数C(S)/R(S)=-K/(TS+1)图2.2积分环节图2.3惯性环节模拟电路图如图2.3所示。图2.3惯性环节三.实验内容:设计并组建各典型环节的模拟电路;测量各典型环节的阶跃响应,并研究参数变化对其输出响应的影响;利用MATLAB中的SIMULINK工具箱,完成各典型环节的软件仿真,并与模拟电路测试的结果相比较。四、实验步骤1、熟悉实验箱,利用实验箱上的模拟电路单元,构建所设计的(可参考本实验附录)典型环节(包括比例、积分、惯性环节)的模拟电路。比例环节要求r(t)为一阶跃信号,幅度为1V,改变比例系数(K=0.5、K=2),观测结果,研究参数变化对输出响应的影响。积分环节要求r(t)为一阶跃信号,幅度1V,改变时间常数T(R1=100K、C1=1uF,R1=200K、C1=1uF,观测结果,研究参数变化对输出响应的影响。惯性环节要求r(t)为一阶跃信号,幅度为1V,改变时间常数T及比例系数K(R1=100K、C1=1uF、K=1;R1=100K、C1=1uF、K=2),观测结果,根据结果,测量出惯性环节的时间常数T(具体方法,可参考《自动控制原理》一阶系统的单位阶跃响应),研究参数变化对输出响应的影响。2、运行MATLAB中的SIMULINK,构建典型环节,进行仿真实验,存储波形和数据完成实验报告。(可选做)五.实验报告要求:画出各典型环节的实验电路图和阶跃响应曲线,并注明参数。根据测得的典型环节单位阶跃响应曲线,分析参数变化对动态特性的影响。六.实验思考题:用运放模拟典型环节进,其传递函数在什么假设条件下近似导出的?积分环节和惯性环节主要差别是什么?在什么条件下,惯性环节可以近似地视为积分环节,而又在什么条件下,惯性环节可以近似地视为比例环节。想一想,为何实验时,各典型环节都用到了两个运放,而介绍原理时,只用了一个运放。七.实验条件:微机及MATLAB软件1台电路实验箱1套实验三《Matlab软件控制系统分析实验》实验目的:1.学会使用Matlab求出系统的阶跃响应;使用Matlab绘制系统的根轨迹。2.掌握利用Matlab软件来分析与设计稳定的系统。二.实验原理:在《自动控制原理》第三章当中,介绍了判定一个线性系统的稳定的充分必要条件是:闭环系统特征方程的所有根均具有负实部,或者说,闭环传递函数的极点均严格位于左半S平面。1948年,埃文斯(Evans)提出一种求解闭环特征方程根的简单方法,并且在控制工程中得到了广泛的应用。这种方法称为根轨迹法。根轨迹法是在已知控制系统开环传递函数的极点、零点分布的基础上,研究系统参数的变化(通常该参数为增益K)对控制系统闭环传递函数极点分布的影响的一种图解法。应用根轨迹法,只需要通过简单的计算,即可看出某个或某些系统参数变化时,对系统闭环极点的影响趋势。这种定性的分析在研究控制系统的稳定性和在提出改善系统性能的合理途径等方面都具有重要意义。三.实验内容与步骤需要分析的系统如下:利用劳思判据,求出使系统稳定的K的取值范围。(预习时完成)当K=10、50、120时,分别利用Matlab程序求出系统的阶跃响应,观察k的取值对系统稳定的影响,在实验报告中记录三种情况下的系统的阶跃响应。用Matlab编程画出系统根轨迹图,确定使系统稳定的K的取值范围,并与计算的取值相比较。(提示:根轨迹画的是K从0至∞时,所有闭环极点的集合,根据系统稳定的充分必要条件,知只要极点在虚轴的左边就是稳定的系统。那么如何找到K的取值呢?)五.实验条件:微机1台2)电路仿真软件1套六.其它要求:实验前教师检查实验预习报告,预习报告要求计算出使系统稳定的K的取值范围,编写自己的实验程序,预习报告不通过不得进行实验。Matlab相关命令:用Matlab绘制系统的根轨迹的指令为rlocus(num,den).例1.已知系统的闭环传函为使用matlab来求阶跃响应。利用命令step(num,den,t)t=0:0.1:30;num=[10];den=[1210];step(num,den,t)axis('square');gridontitle('阶跃响应')运行结果为:例2.已知系统开环传递函数为使用Matlab绘制系统的根轨迹。num=[0,0,1,1];den=[1,9,0,0];rlocus(num,den)axis('square');gridontitle('Root-locusplotofG(s)=K(s+1)/[(s^2(s+9)]')xlable('Re');ylable('Im')运行结果为:实验四《典型控制系统研究与分析》一.实验目的:通过对球杆系统进行分析和实验,学生可以学习对物理系统的建模和控制系统的设计,熟悉PID控制的设计和调节,及各参数对于控制的影响。二.实验原理及方法:LLeverArmBeamαLLeverArmBeamαθdθd对小球在导轨上滚动的动态过程的完整描述是非常复杂的,设计者的目的是对于该控制系统给出一个相对简单的模型。实际上使小球在导轨上加速滚动的力是小球的重力在同导轨平行方向上的分力同小球受到的摩擦力的合力。考虑小球滚动的动力学方程,小球在V型杆上滚动的加速度: (1)其中μ为小球与轨道之间的摩擦系数,而α为轨道杆与水平面之间的夹角。但在进行数学建模的过程中,我们忽略了摩擦力,因此,其基本的数学模型转换成如下方式: (2)当α<<1时,将上式线性化,得到传递函数如下 (3)其中X(s)为小球在轨道上的位置。但是,在实际控制的过程中,杆的仰角是由电动机的转角输出来实现的。影响电动机转角和杆仰角之间关系的主要因素就是齿轮的减速比和非线性。因此,我们可以得到它们的关系如下: (4)把(4)式代入(3)式,我们可以得到另一个模型: (5)因此,球杆系统实际上可以简化为一个二阶系统。由建模分析我们得到球杆系统的开环传递函数为: (6)三.实验内容:球杆系统的开环模型球杆系统是一个典型的单输入单输出系统,通过上面的分析可以得到,其传递函数可以近似为一个两阶的积分器:W(S)W(S)其中,为开环传递函数的拉普拉斯变换。X(s)和θ(s)分别为系统输出(小球的位置)和输入(齿轮的角度)的拉普拉斯变换。1)如果不稳定,则需要对其添加控制器。假设控制的指标要求如下:调整时间小于2.5秒(5%误差)超调量小于10%下面将采用PID控制来设计它的控制器:,其中,kp,ki和kd为PID控制器的比例,积分和微分参数。1)P控制分析-W-W(s)Gp(s)efeedback 、其中,Xd为小球目标位置的拉普拉斯变换,设PID控制器为:根据P控制框图,与对象的传函,求出系统的闭环传递函数。根据闭环传递函数,取Kp=1,g=9.8,L=0.4,d=0.04时在matlab下编写程序,画出系统的阶跃响应曲线。(参考程序)g=9.8;L=0.4;D=0.04;Num=[(g*D)/L];Den=[100];Plant=tf(Num,Den);%系统的开环传函kp=3;Sys_cl=feedback(kp*Plant,1,-1);%求系统的闭环传函Step(0.2*Sys_cl);%给系统施加一个0.2m的阶跃输入在球杆系统中进行实验,让小球稳定在一个位置,如50,取参数Kp=3,观察实际结果,得到实际响应曲线,分析实验结果与仿真是否一致。记录下实际响应的结果。按照附录的步骤,在MATLABSimulink环境下运行演示程序。2)PD控制分析-W(s)-W(s)Gpd(s)e设PD控制器为:G(s)=1+KdS为简单起见,我们假设比例增益KP=6,调整KD.的大小。根据PD控制框图,与对象的传函,求出系统的闭环传递函数。根据闭环传递函数,取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=[100];Plant=tf(Num,Den);%系统的开环传函Kp=6;Kd=6;Contr=tf([KdKp],1);Sys_cl=feedback(Contr*Plant,1,-1)T=0:0.01:5;Step(0.2*Sys_cl);在球杆系统中进行实验,让小球稳定在一个位置,如50,取参数Kp,Kd为仿真的值,观察实际结果,得到实际响应曲线,分析实验结果与仿真是否一致。记录下实际响应的结果。按照附录的步骤,在MATLABSimulink环境下运行演示程序。4)分析一下,PD控制很快平衡的原因,对比实验结果与仿真结果的区别。四.实验条件:1)球杆控制1套2)微机1台3)matlab软件包1套五.其它要求:实验前教师检查实验预习报告,预习报告要求得到系统的闭环传递函数,编写Matlab程序,预习报告不通过不得进行实验。实验四《典型控制系统研究与分析》(选做二)一.实验目的:通过对一级倒立摆系统进行分析和实验,学生可以学习对物理系统的建模和控制系统的设计,熟悉PID控制的设计和调节,及各参数对于控制的影响。二.实验原理及方法:1微分方程的推导图4.1直线一级倒立摆系统在忽略了空气阻力,各种摩擦之后,可将直线一级倒立摆系统抽象成小车和匀质杆组成的系统,如下图4.1所示。图4.1直线一级倒立摆系统我们不妨做以下假设:M小车质量m摆杆质量b小车摩擦系数l摆杆转动轴心到杆质心的长度I摆杆惯量F加在小车上的力x小车位置φ摆杆与垂直向上方向的夹角θ摆杆与垂直向下方向的夹角(考虑到摆杆初始位置为竖直向下)下图是系统中小车和摆杆的受力分析图。其中,和为小车与摆杆相互作用力的水平和垂直方向的分量。注意:在实际倒立摆系统中检测和执行装置的正负方向已经完全确定,因而矢量方向定义如图所示,图示方向为矢量正方向分析小车水平方向所受的合力,可以得到以下方程:由摆杆水平方向的受力进行分析可以得到下面等式:把这个等式代入上式中,就得到系统的第一个运动方程:为了推出系统的第二个运动方程,我们对摆杆垂直方向上的合力进行分析,可以得到下面方程:力矩平衡方程如下:注意:此方程中力矩的方向,由于θ=π+Ø,cosØ=-cosθ,sinØ=-sinθ,故等式前面有负号。合并这两个方程,约去和,得到第二个运动方程:设(是摆杆与垂直向上方向之间的夹角),假设与1(单位是弧度)相比很小,即《1,则可以进行近似处理:cos,,(。用来代表被控对象的输入力,线性化后两个运动方程如下:对方程组(1.3)进行拉普拉斯变换,得到:把方程组化简得到一级倒立摆的传递函数为:其中q=[(M+m)(I+ml2)-(ml)2]实际系统的模型参数如下:M小车质量1.096Kgm摆杆质量0.109Kgb小车摩擦系数0.1N/m/secl摆杆转动轴心到杆质心的长度0.25mI摆杆惯量0.0034kg*m*mT采样频率0.005秒注意:在进行实际系统的MATLAB仿真时,请将采样频率改为实际系统的采样频率。请用户自行检查系统参数是否与实际系统相符,否则请改用实际参数进行实验。2PID控制设计SinglePendulumSinglePendulumPIDffr(s)=0f+_ +_eefeedback-feedback-设PID控制器为:三.实验内容:根据实际系统参数及PID控制器的传函求出系统的闭环传递函数。在matlab下编写程序,进行仿真实验,通过调节PID参数请仔细观察思考控制器参数对系统瞬态响应和稳态响应的影响。找到一组合适的控制器参数作业实际控制的参数。进入matlabsimulink窗口,点击InvertedPendulumToolbox,在其右边点击singlePendlumPIDControlDemo,进行仿真实验。在StartRealPendulumControl/PID模块修改PID控制器参数及控制周期。如果控制效果不理想,调整控制器参数,直到获得较好的控制效果。分析理论结果与实际结果的差异。四.实验条件:一级倒立摆控制系统,装有Matlab软件包的计算机。五.其它要求:实验前教师检查实验预习报告,预习报告要求得出系统的闭环传递函数,预习报告不通过不得进行实验。附录一球杆系统使用说明1.系统简述球杆系统(Ball&Beam)是为自动控制原理等基础控制课程的教学实验而设计的实验设备。该系统涵盖了许多经典的和现代的设计方法。这个系统有一个非常重要的性质——它是开环不稳定的。不稳定系统的控制问题成了大多数控制系统需要克服的难点,有必要在实验室中研究。但是由于绝大多数的不稳定控制系统都是非常危险的,因此成了实验室研究的主要障碍。而球杆系统就是解决这种矛盾的最好的实验工具,它简单、安全并且具备了一个非稳定系统所具有的重要的动态特性。整个装置由球杆执行系统、控制器和直流电源等部分组成。该系统对控制系统设计来说是一种理想的实验模型。正是由于系统的结构相对简单,因此比较容易理解该模型的控制过程。球杆执行系统(如图1所示)由一根V型轨道和一个不锈钢球组成。V型槽轨道一侧为不锈钢杆,另一侧为直线位移电阻器。当球在轨道上滚动时,通过测量不锈钢杆上输出电压可测得球在轨道上的位置。V型槽轨道的一端固定,而另一端则由直流电机(DCmotor)的经过两级齿轮减速,再通过固定在大齿轮上的连杆带动进行上下往复运动。V型槽轨道与水平线的夹角可通过测量大齿轮转动角度和简单的几何计算获得。这样,通过设计一个反馈控制系统调节直流电机的转动,就可以控制小球在轨道上的位置。GBB1004型球杆系统由三大部分组成:IPM100智能驱动器、球杆装置和控制计算机。IPM100智能驱动器使用方法请参照《IPM100SK用户手册》;计算机为装有Windows的计算机或是其他兼容机。本实验说明主要讲述球杆装置、控制软件及实验.BallandBeam系统图示如下:BeamBeamLeverArmBallLeverArmGear图1.1球杆装置示意图在一长约0.4米的轨道上放置一不锈钢球,轨道的一侧为不锈钢杆,另一侧为直线位移传感器,当球在轨道上滚动时,通过测量不锈钢杆上输出的电压信号可获得球在轨道上的位置。电机转动带动齿轮系驱动杠杆臂LeverArm转动,轨道Beam随杠杆臂的转动与水平方向也有一偏角,球的重力分量会使它沿着轨道滚动,设计一个控制系统通过调节伺服角度使得不锈钢球在Beam上的位置能被控制。此系统为一个单输入(电机转角)、单输出(小球位置)系统,输入量利用伺服电机自带角度编码器来测量,输出量由轨道上电位器的电压信号来获得。系统组成框图如下:计算机IPM100智能伺服驱动器伺服电机计算机IPM100智能伺服驱动器伺服电机球杆装置电机编码器直线位移传感器系统包括计算机、IPM100智能伺服驱动器、球杆本体和光电码盘、线性传感器几大部分,组成了一个闭环系统。光电码盘将杠杆臂与水平方向的夹角、角速度信号反馈给IPM100智能伺服驱动器,小球的位移、速度信号由直线位移传感器反馈。智能伺服控制器可以通过RS232接口和计算机通讯,利用鼠标或键盘可以输入小球的控制位置和控制参数,通过控制决策计算输出(电机转动方向、转动速度、加速度等),并由IPM100智能伺服驱动器来实现该控制决策,产生相应的控制量,使电机转动,带动杠杆臂运动,使球的位置得到控制。2.机械部分选用直流伺服电机,采用齿轮箱减速机构进行减速,在输出齿轮上距齿轮圆心(小于齿轮半径)处连接一杠杆臂LeaverArm,此连接处螺钉不能固定太紧,杠杆臂的另一端与轨道Beam铰链,机构的另一端是一固定座,此固定座上端与轨道的左侧铰链,见下图:图2.1球杆系统机械图电机箱内部机构:电机,齿轮减速机构。整个机构运行如下:电机转动带动与连杆相连的齿轮转动,此时连接点与齿轮中心连线和水平线的夹角为(角度应被限定在一定角度范围内,即使导轨倾角最大和最小),轨道会绕左侧与固定座铰链处转动,轨道与水平方向的角度为。此处角度编码器用于测量角度,此为系统的输入信号。图2.2转角α和β示意图3.电气部分a)球滚动时位移的测量:直线位移传感器线性轨道传感器接+5V电压。轨道两边测得的电压作为IPM100控制卡A/D输入口的信号。当小球在轨道上滚动时,通过不锈钢杆上输出的电压信号的测量可得到小球在轨道上的位置。ToA/D+5vToA/D+5vGND直线位移传感器300Ω直线位移传感器300Ω不锈钢杆不锈钢杆图3.1小球位置测量示意图b)伺服输出角度的测量:采用IPM100控制器,电机驱动齿轮转动时通过电机实际位置转换得到角度,接线及定义请参照《IPM100SK用户手册》4.软件实现注意在使用软件前,请仔细阅读《IPM100SK用户手册》,不正确的操作将对系统造成破坏。4.1控制程序流程图:从键盘或鼠标键入小球位置从键盘或鼠标键入小球位置否是否在轨道范围内?否是否在轨道范围内?是重新键入新的数据是重新键入新的数据——读出运动控制卡检测到的小球的当前位置——读出运动控制卡检测到的小球的当前位置ControllerController反馈回运动控制卡反馈回运动控制卡驱动Leverarm,驱动Leverarm,带动Beam转动一个角度以使球稳定在所要控制的位置4.2操作请按以下操作打开IPMStudioMotion固高科技球杆系统运行窗口4.2.1安装IPMMotionStudio把光盘装入计算机光驱,选择“IPMMotionStudio”进入安装界面,然后点击“IPMMotionStudioSetupKit”选项,按照提示步骤进行安装。注释:1)安装程序将产生一个包含所有组件的“IPMMotionStudio”文件夹2)在WinNT的操作系统中请选择“Administrator”(管理员)用户登录4.2.2安装固高科技球杆系统控制程序将BallBeamProject文件夹拷贝到安装目录中“...\IPMMotionStudio\Projects”文件夹中,在修改前请注意备份。4.3运行程序1.点击“开始“菜单如下图所示:图4.1开始IPMMotionStudio2.打开IPMMotionStudio应用程序窗口:图4.2IPMMotionStudio窗口备注:如果打开失败或是在窗口中下方没有显示找到P069.001.C01.S000A,请参照《IPM100SK用户手册》相关章节打开固高球杆系统控制软件点击”OpenProjects”打开工程文件,注意在打开之前,请确认您已经将BallBeamProject文件拷贝到“...\IPMMotionStudio\Projects”文件夹中,也可以点击”Browse”按钮指定路径,如下图所示:图4-3打开工程文件如果点击”OK”后窗口没有显示内容:请按下图点击菜单“View|Project”打开工程窗口:图4-4显示工程界面工程窗口如下图所示:图4-5工程界面4.“Motor”和”Drive”已经调试好,建议用户在比较熟悉IPM100SK及电机特性前不要更改.详细调试方法见<IPM100SK用户手册>相关章节.5.点击上图中”Motion”图标,打开控制程序如下图图4-6控制程序(BallBeam)窗口6.点击“+”或“-“打开(关闭)组如下图所示:图4-7程序编辑窗口确认程序正确后点击”OK”关闭对话框,回到如图4-5所示工程界面,请按下面步骤运行程序:1)给IPM100上电并确认计算机和IPM100之间通讯正常。2)点击运行按钮运行程序,运行程序时请用手托起连杆使球杆保持在水平位置,直到程序给电机上伺服时松开,过程中请注意安全,小心手指被齿轮夹伤!正确方法如下图所示:图4-8手指夹持位置示意图遇到不正常情况请点击(IPM100复位)、(电机下伺服)或直接关掉电源停止电机运动7.为观察小球位置、电机位置等参数,点击”ViewControlPanels”选择”固高科技球杆系统”如下图所示:图4-9进入固高科技球杆系统可视化界面点击鼠标打开以下窗口:图4-10固高科技球杆系统界面在上面的小窗口中,点击鼠标右键,如下图所示:图4-11开始可视化显示窗口点击”Start”开始进行可视化显示,显示如下:说明:界面分成左边和右边两大部分,左边显示小球位置、速度,位置误差,电机位置、电机速度等量,右边为参数调整界面,包括小球目标位置,PID参数调节,Break,Continue,Axisoff等命令.图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位为整数部分,后16位为小数部分)注:英文注释为程序自带注释intKp;//PID控制器比例系数intKi;//PID控制器积分系数intKd;//PID控制器微分系数fixedBallRefPos;//小球目标位置fixedFeedbackVol;//反馈电压fixedBallActPos;//小球实际位置fixedBallPosErrNew;//此采样周期中小球实际位置相对目标位置的位置误差fixedBallPosErrOld;//上次采样周期中小球实际位置相对目标位置的位置误差fixedBallPosErrDot;//小球运动速度fixedPIDMotorPos;//PID比例部分引起的电机目标位置fixedPIDErrDot;//PID微分部分引起的电机目标位置fixedBallPosErrIntegral;//PID积分部分引起的电机目标位置longMulResult;//乘积结果(用于IPM100内部DSP乘积运算)intMulTran;//乘积转移变量(用于IPM100内部DSP乘积运算)fixedPD_PID_Select;//PDPID控制器选择因子(用于分段PID控制)intMotorTPos;//电机目标位置BallRefPos=200;//Set32bitvariableBallRefPoswithvalue/32bitvariable200Kp=4;//SetvariableKpwithvalue/16bitvariable/label4Ki=8;//SetvariableKiwithvalue/16bitvariable/label8Kd=4;//SetvariableKdwithvalue/16bitvariable/label4第二部分:主控制循环loop:FeedbackVol(H)=0;//SetHIGHpartofvariableFeedbackVolwithvalue/16bitvariable0FeedbackVol(L)=AD5;//SetLOWpartofvariableFeedbackVolwithvalue/16bitvariableAD5//通过AD5读取电压反馈值,0-5V的电压被转化成0-1的小数FeedBackVol*400<<0;//SetPregisterwiththeproductofvariableFeedBackVolwithvalue/variable400LEFTshiftedwith0bits.//电压反馈值乘以400(杆实际有效长度)得到小球实际位置MulResult=PROD(L);//Set32bitvariableMulResultwithvalue/32bitvariablePROD(L)//乘积结果送入乘积寄存器MulTran=MulResult(H);//SetvariableMulTranwithHIGHpartof32bitvariableMulResultBallActPos(H)=MulTran;//SetHIGHpartofvariableBallActPoswithvalue/16bitvariableMulTranMulTran=MulResult(L);//SetvariableMulTranwithLOWpartof32bitvariableMulResultBallActPos(L)=MulTran;//SetLOWpartofvariableBallActPoswithvalue/16bitvariableMulTran//48位的乘积结果转化成32位fixed实数型BallPosErrNew=BallActPos;//Set32bitvariableBallPosErrNewwithvalue/32bitvariableBallActPosBallPosErrNew-=BallRefPos;//SubstractfromvariableBallPosErrNewthevalue/variableBallRefPos//计算位置误差BallPosErrDot=BallPosErrNew;//Set32bitvariableBallPosErrDotwithvalue/32bitvariableBallPosErrNewBallPosErrDot-=BallPosErrOld;//SubstractfromvariableBallPosErrDotthevalue/variableBallPosErrOldBallPosErrOld=BallPosErrNew;//Set32bitvariableBallPosErrOldwithvalue/32bitvariableBallPosErrNew//计算位置误差微分BallPosErrDot*20<<0;//SetPregisterwiththeproductofvariableBallPosErrDotwithvalue/variable20LEFTshiftedwith0bits.//采样周期位50ms,转化单位mm/采样周期到mm/sMulResult=PROD;//Set32bitvariableMulResultwithvalue/32bitvariablePRODMulTran=MulResult(H);//SetvariableMulTranwithHIGHpartof32bitvariableMulResultBallPosErrDot(H)=MulTran;//SetHIGHpartofvariableBallPosErrDotwithvalue/16bitvariableMulTranMulTran=MulResult(L);//SetvariableMulTranwithLOWpartof32bitvariableMulResultBallPosErrDot(L)=MulTran;//SetLOWpartofvariableBallPosErrDotwithvalue/16bitvariableMulTran//48位的乘积结果转化成32位fixed实数型PD_PID_Select=BallPosErrDot;//Set32bitvariablePD_PID_Selectwithvalue/32bitvariableBallPosErrDot//根据误差微分选择PID控制策略GOTOBallPosErrDot_GT_0,PD_PID_Select,GT;//GOTOBallPosErrDot_GT_0ifPD_PID_Select>0PD_PID_Select+=50;//AddtovariablePD_PID_Selectthevalue/variable50GOTOPD_control,PD_PID_Select,LT;//GOTOPD_controlifPD_PID_Select<0GOTOCheckPosErr;BallPosErrDot_GT_0:PD_PID_Select-=50;//SubstractfromvariablePD_PID_Selectthevalue/variable50GOTOPD_Control,PD_PID_Select,GT;//GOTOPD_ControlifPD_PID_Select>0GOTOCheckPosErr;//当速度小于50mm/s时采用PID控制策略CheckPosErr:PD_PID_Select=BallPosErrNew;//Set32bitvariablePD_PID_Selectwithvalue/32bitvariableBallPosErrNewGOTOBallPosErr_GT_0,PD_PID_Select,GT;//GOTOBallPosErr_GT_0ifPD_PID_Select>0PD_PID_Select+=50;//AddtovariablePD_PID_Selectthevalue/variable50GOTOPD_control,PD_PID_Select,LT;//GOTOPD_controlifPD_PID_Select<0BallPosErrIntegral+=BallPosErrNew;//AddtovariableBallPosErrIntegralthevalue/variableBallPosErrNewGOTOPID_control;BallPosErr_GT_0:PD_PID_Select-=50;//SubstractfromvariablePD_PID_Selectthevalue/variable50GOTOPD_Control,PD_PID_Select,GT;//GOTOPD_ControlifPD_PID_Select>0BallPosErrIntegral+=BallPosErrNew;//AddtovariableBallPosErrIntegralthevalue/variableBallPosErrNewGOTOPID_Control;//当位置误差小于50mm时采用PID控制策略,注,只有同时满足上面两个条件才采用PID控制,否则采用PD控制PD_control:BallPosErrIntegral=0;//Set32bitvariableBallPosErrIntegralwithvalue/32bitvariable0//积分清零PID_control://比例控制作用BallPosErrNew*Kp<<0;//SetPregisterwiththeproductofvariableBallPosErrNewwithvalue/variableKpLEFTshiftedwith0bits.MulResult=PROD;//Set32bitvariableMulResultwithvalue/32bitvariablePRODMulTran=MulResult(H);//SetvariableMulTranwithHIGHpartof32bitvariableMulResultPIDMotorPos(H)=MulTran;//SetHIGHpartofvariablePIDMotorPoswithvalue/16bitvariableMulTranMulTran=MulResult(L);//SetvariableMulTranwithLOWpartof32bitvariableMulResultPIDMotorPos(L)=MulTran;//SetLOWpartofvariablePIDMotorPoswithvalue/16bitvariableMulTran//积分控制作用BallPosErrIntegral>>=6;//ShiftRIGHTvariableBallPosErrIntegralby6bits.BallPosErrIntegral*Ki<<0;//SetPregisterwiththeproductofvariableBallPosErrIntegralwithvalue/variableKiLEFTshiftedwith0bits.MulResult=PROD;//Set32bitvariableMulResultwithvalue/32bitvariablePRODMulTran=MulResult(H);//SetvariableMulTranwithHIGHpartof32bitvariableMulResultPIDMotorPos(H)+=MulTran;//AddtovariablePIDMotorPos(H)thevalue/variableMulTranMulTran=MulResult(L);//SetvariableMulTranwithLOWpartof32bitvariableMulResultPIDMotorPos(L)+=MulTran;//AddtovariablePIDMotorPos(L)thevalue/variableMulTranBallPosErrIntegral<<=6;//ShiftLEFTvariableBallPosErrIntegralby6bits.//微分控制作用BallPosErrDot*Kd<<0;//SetPregisterwiththeproductofvariableBallPosErrDotwithvalue/variableKdLEFTshiftedwith0bits.MulResult=PROD;//Set32bitvariableMulResultwithvalue/32bitvariablePRODMulTran=MulResult(H);//SetvariableMulTranwithHIGHpartof32bitvariableMulResultPIDMotorPos(H)+=MulTran;//AddtovariablePIDMotorPos(H)thevalue/variableMulTranMulTran=MulResult(L);//SetvariableMulTranwithLOWpartof32bitvariableMulResultPIDMotorPos(L)+=MulTran;//AddtovariablePIDMotorPos(L)thevalue/variableMulTran//给定电机目标位置及运动模式MotorTPos=PIDMotorPos(H);//SetvariableMotorTPoswithHIGHpartof32bitvariablePIDMotorPosCPOS=MotorTPos<<0;//Set32bitvariableCPOSwith16bitvalueofvariableMotorTPosleftshiftedwith0bitsCACC=1.27324;//Accelerationcommandforpositionprofile//给定电机运动加速度CSPD=8.00000;//Speedcommandforpositionprofile//给定电机运行速度CPA;//PositioncommandisAbsoluteMODEPP3;//SetPositionProfileMode3TUM1;//SetTargetUpdateMode1UPD;//Updateimmediate//设定时针为10个DSP周期即:10*5ms=50ms!RT10;//SeteventifRelativeTime>=10WAIT!;//WAITuntileventoccursGOTOloop;//主循环结束__ 常见故障及解决办法:IPM智能伺服驱动器和计算机通讯不正常,显示Boardnotfound!请参见IPM100SK用户手册中通讯错误解决办法!电机不能正常运转,请确认电机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场部年终工作总结工作计划课件模板
- 2024年度二手电脑交易合同书2篇
- 2024年磨豆机行业政策分析:磨豆机行业标准提升产品质量
- 赞美母爱的力量
- 二零二四年度城市轨道交通建设项目施工合同3篇
- 二零二四年度版权许可使用合同标的及使用期限规定3篇
- 二零二四年度体育运动器材采购与销售合同3篇
- 片形吸虫病的临床护理
- 2024年度医疗器械维修保养合同2篇
- 二零二四年农产品订购合同3篇
- 炼钢厂安全生产教育培训课件
- 拼音四线三格A4打印版
- 机械专业职业生涯发展报告
- 生物技术为精准医疗注入新动力
- MBD数字化设计制造技术
- 部编版道德与法治五年级上册中华民族一家亲第一课时课件
- 2024年金融科技行业的数字化金融培训
- 医疗服务中的人文关怀
- 《商务经理区域》课件
- 急诊护理人文关怀标题课件
- 家校携手家校共育家长会
评论
0/150
提交评论