《控制系统实验与综合设计》综合四至六(含程序和题目)

1.电机模型辨识实验

1.1 实验目的

(1)掌握一阶系统阶跃响应的特点,通过实验加深对直流电解模型的理解;

(2)掌握系统建模过程中参数的整定,体会参数变化对系统的影响;

(3)熟悉Matlab软件在计算机控制方面的应用掌握建模拟合曲线的方法。

1.2 实验原理

        在设计数字控制系统的控制算法的过程中,往往借助在 Matlab 等仿真软件中模拟实际系统在特定算法中的工作情况,以便设计和改进控制算法。因此,必须建立被控对象的准确的数学模型,对于参数已知的系统可以通过数学计算产生传递函数,而对于参数未知的被控对象可以通过系统辨识来确定其传递函数。目前普遍采用的系统辨识的方法主要有阶跃响应和冲激响应等。

        利用阶跃响应辨识系统,就是在 t 时刻向系统输入阶跃信号,通过测量系统的响应曲线,反推出系统的传递函数参数。例如系统的传递函数未知为 W(s),在 t 时刻以前输入值为 0,在 t 时刻时输入值变为 1,则系统的输出与时间的关系为 y(t),上述关系表示为图2.1。

图 2.1 阶跃响应示意图

        由于输入为 1(t)已知,输出 y(t)通过测量可得,从而可以计算出系统的传递函数 W(s)的参数。由于通过阶跃响应进行系统辨识的实验操作和运算简单,本文以此为手段辨识调速实验系统中被控对象的传递函数。

        调速系统中的被控对象是一台直流伺服电机,其额定电压为 12V,额定电流为0.07A,其内部参数未知,传递函数待测。由于该直流电机较小,其内部线圈电感值等参数可忽略,转速 n 和其他参量的关系可以表示为式(2.1)。

式中U_{a} 为电枢供电电压(V),I_{a} 为电枢电流(A),R_{a} 为电枢回路总电阻,C_{e} 为电势系数。由于电机的电枢供电电压来自于直流调压模块,阶跃响应的输入值由上位机设定转速占空比表示,故将直流调压模块与小型直流电机共同看作无延时一阶惯性系统,其传递函数可表示为式(2.2)。

        其中 KT1 为系统中未知的参数值,可见只需要根据阶跃响应和输入阶跃值算出 KT1 的值即可得到被控对象的传递函数。

1.3 实验过程

        使用KEIL C51按照操作手册中介绍的方法建立调速系统辨识实验工程,名为速度开环,其核心代码如下所示:

void Port_init()
{
	P1M1=0x00;    //配置P1各个端口的模式
	P1M0=0x00;
}
void PWM_init(void)
{
	CCON = 0X00;
	CH = 0X00;
	CL = CH;
	CMOD = 0X02;    //TIMER CLOCK RESORCE 
}
void PWM0_Setting(unsigned char pwm)
{
	CCAP0H = 255-pwm;
	CCAP0L = CCAP0H;	 
	CCAPM0 = 0X42;     //CCAPMn寄存器的PWMn和ECOMn必须置位
	CR = 1;            //PWM 启动    
}
void ClosePWM0()
{
	CCAPM0=0;
}

        将工程编译生成的speed_open.hex文件在STC ISP软件中打开,按照操作手册中介绍的方法把程序下载到单片机中,通过上位机设定转速占空比。

        以上准备工作完毕之后,启动控制过程并观察速度曲线,当发现电机进入稳态时停止控制过程并保存数据,数据会保存在名data.txt文件中。

        然后按照实验操作手册中关于使用Matlab工具箱进行模型辨识的具体步骤进行辨识,根据三次实验得到的K平均值和T1 平均值。在 Matlab 中进行一阶系统进行阶跃响应仿真实验,具体实验代码如下所示,判断结果是否与仿真吻合。

function [ output_args ] = Untitled2( input_args )
load 234.txt
A = textread('234.txt');
G = tf(1508.976,[0.0199 1]);   
x = 0:0.005:7.81;             
y = step(G,x);
plot(y,'LineWidth',2);
axis([0 240,0 3500]);
hold on
plot(A,'r')
end

1.4 实验结果及分析

1.4.1 占空比设为30

通过辨识结果可知,占空比设为30时,由于占空比过低,导致电机无法正常运行,无法辨识出正确的K值与T1 值。

1.4.2 占空比设为60

(1)辨识结果

K=11.3931;T1 =0.03517;n=2212

(2)仿真结果与实物结果比较分析

        通过图中可以看出,较为平滑的曲线为仿真曲线,带有锯齿的曲线为三次实物测试结果,可以看出由于系统的自身误差,导致三次测试结果有一些差异,但是实物曲线与仿真曲线基本吻合。

1.4.3 占空比设为90

(1)辨识结果

K=16.7408;T1 =0.02764;n=1704

(2)仿真结果与实物结果比较分析

        通过图中可以看出,较为平滑的曲线为仿真曲线,带有锯齿的曲线为三次实物测试结果,可以看出由于系统的自身误差,导致三次测试结果有一些差异,但是实物曲线与仿真曲线基本吻合。

1.4.4 占空比设为120

(1)辨识结果

K=19.3626;T1 =0.02588;n=1599

(2)仿真结果与实物结果比较分析

        通过图中可以看出,较为平滑的曲线为仿真曲线,带有锯齿的曲线为三次实物测试结果,可以看出由于系统的自身误差,导致三次测试结果有一些差异,且由于占空比较大,实物曲线存在较多饱和部分,但是实物曲线与仿真曲线基本吻合。

1.4.5 占空比设为150

(1)辨识结果

K=20.9127;T1 =0.0255;n=1450

(2)仿真结果与实物结果比较分析

通过图中可以看出,较为平滑的曲线为仿真曲线,带有锯齿的曲线为三次实物测试结果,可以看出由于系统的自身误差,导致三次测试结果有一些差异,且相比于占空比为120的实物曲线,存在更多的饱和部分,但是实物曲线与仿真曲线基本吻合。

1.4.6 占空比设为180

  1. 辨识结果

(2)仿真结果与实物结果比较分析

        由图象可以看出,电机曲线完全饱和,当电机占空比超过临界时,转速稳定在3500r/min,此时实物图象无法准确表现点击真实运转情况,不具有分析性。

1.5 综合分析

        随着电机占空比的增加,辨识出的K值不断增加,T1 值基本不变,电机稳定转速不断增加;当电机占空比低于临界时,电机不转;当电机占空比高于临界时,电机饱和,维持在可测最大转速。

2.温度系统模型辨识实验

2.1 实验目的

(1)掌握带纯滞后的一阶惯性系统的传递函数与控制特点;

(2)掌握系统建模过程中参数的整定,体会参数变化对控制系统的影响;

(3)熟悉Matlab软件在计算机控制方面的应用;

2.2 实验原理

        模型辨识的原理速度辨识实验所述一样,仅针对于温控系统的被控对象传递函数进行分析。

        温控系统中的被控对象是一导热性良好的铜块,当设定一个目标温度值时,通过PWM输出调节实际温度向目标温度靠近,当温度达到目标值时,会继续上升一段时间,达到一定阈值才开始下降,因此在控制上存在一定的滞后性。由于加热片供电电压来自于直流调压模块,阶跃响应的输入值由上位机设定转速占空比表示,故将直流调压模块与加热铜块共同看作具有纯滞后的一阶惯性系统,其传递函数可表示

        其中 KT1、τ为系统中未知的参数值,可见只需要根据阶跃响应和输入阶跃值算出KT1、τ的值即可得到被控对象的传递函数。

2.3 实验过程

        使用KEIL C51按照操作手册中介绍的方法建立温控速系统辨识实验工程,名为温度开环,其核心代码如下所示:

void main()                    //主函数
{
	Port_Init();
	Heater_Init();
	TM1638_Init();
	InitPWM();
	EA=1;
	UART_init(19200);
  	ES=1;	
	while(Start_Flag != 1);
	Start_Flag = 0;	
	ConfigT1M1();
	ENHeater();
    SetPWM1(set_value);
	display(0000);
    while(1)
	{	
		if(timer1flag)
		{
			timer1flag=0;
			PreReadTemp();
			TempShow = ReadTemp();
			SendData(TempShow);
			display(TempShow);
		}
		if(Stop_Flag)
		{
		    Stop_Flag = 0;
			ClosePWM1();
			Heater_Init();
		}
		if(Reset_Flag)
		{
			ISP_CONTR=0X20;  
		}
	} 
}
//驱动代码
void InitPWM(void)           
{
	CCON&=0X00;	CH=0X00;
	CL=CH;
	CMOD=0X02; 
}
void SetPWM1(unsigned char pwm)
{

	CCAP1H = 255-pwm;
	CCAP1L = CCAP1H;
	CCAPM1 = 0X42;
	CR = 1;
}
void ClosePWM1()
{
	CCAPM1=0;
}
void Port_Init()
{
	P1M1=0x00;
	P1M0=0x00;
}

        程序编译无误后,将wd_open.hex通过STC ISP下载工具下载到单片机中,通过上位机设定占空比。

        启动控制过程并观察温度曲线,当发现温度趋于平稳时停止控制过程并保存数据,数据会保存在名为data.txt文件中。

        然后按照实验操作手册中关于使用Matlab工具箱进行模型辨识的具体步骤进行辨识,根据得到的K值、T_{1}值、\tau值。在 Matlab 中进行一阶系统进行阶跃响应仿真实验,具体实验代码如下所示,判断结果是否与仿真吻合。

load 456.txt                %数据名
A = textread('456.txt');
A = A(:,1)-22.87;
num = [0,6.521];
den = [1258.566,1];
G = tf(num,den,'InputDelay',21.122);
x = 0:1:2340;
y = step(G,x);
plot(y,'LineWidth',2);
axis([0 3200,0 40]);
hold on
plot(A,'r')

2.4 实验结果及分析

(1)辨识结果

(2)仿真结果与实物结果比较分析

        本次实验,我们几乎没有辨识出延时环节,正常由于仪器温度升到室温有一定的时间,因此对于温度辨识实验应该有10s-20s的延时环节,但由于我们在做实验时,并不是从加热开始进行测量,而是在仪器已经加热一段时间后才开始进行测量,此时仪器温度已经接近室温,在第二次实验降温时也没有降到室温以下,因此在辨识中,没有较为明显的延时环节。从图中看出两次实物结果有一定差异,可能由两次起始温度不一样和系统自身误差造成,但仿真曲线与实物曲线基本吻合,总体来说实验成功。

3.电机速度PID实验

3.1 实验目的

(1)通过实验了解调速控制系统的硬件组成,以及各个单元的作用;

(2)掌握PID各项参数的作用;

(3)掌握调速系统中PID运算的参数整定;

(4)初步掌握闭环系统的基本调试方法;

3.2 实验原理

        当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的,即调节器的输出与输入是比例—积分—微分的关系。

        在计算机控制系统中,使用数字PID,将上式离散化,写成差分方程:

3.3 实验过程

(1)实验代码

function [ output_args ] = untitled2( input_args )
load SD.txt
A = textread('SD.txt');
G = tf(1132.896,[0.020013 1]);   
x = 0:0.005:7.215;                
y = step(G,x);
plot(y,'LineWidth',2);
axis([0 50,0 1200]);
hold on
plot(A,'r','LineWidth',1)
end

(2)运行结果

(3)实验代码

function [ output_args ] = untitled2( input_args )
load SDPID.txt
load SD240.txt
W = textread('SDPID.txt');
A = textread('SD240.txt');
axis([0 100,0 1500]);
hold on
plot(W,'b','LineWidth',1)
plot(A,'r','LineWidth',1)
end

(4)运行结果

3.4 思考与解答

1、什么是一般PID控制以及一般PID算法;

答:PID算法的参数调试是指通过调整控制参数(比例增益、积分增益/时间、微分增益/时间)让系统达到最佳的控制效果。

2、说明位置式PID和增量式PID的区别。

答:(1)位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;

(2)增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。

(3)由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。

4.温控系统PID实验

4.1 实验目的

(1) 通过实验了解温度控制系统的硬件组成,各个单元的作用以及信号量在系统中的传递过程;

(2) 用Keil建立工程,编写PID控制算法;

(3) 掌握PID各项参数的作用;

(4) 初步掌握闭环系统的基本调试方法。

4.2 理论分析

P=70,I=0.65,D=0.2

4.3 实验过程

(1)Matlab代码

function [ output_args ] = untitled2( input_args )
load WD.txt
A = textread('WD.txt');
plot(A,'r','LineWidth',1)
end

(2)运行结果

4.4 比较结果

        通过理论与实际对比分析可以看出,理论与实际之间有些区别,可能是由于外界空气流动de那个因素干扰导致

5.电机速度最小拍实验

5.1 实验目的

(1)掌握最小拍控制器的设计方法;

(2)比较最小拍控制器和经典PID控制器的控制效果;

(3)无纹波和有纹波的在设计上的区别。

5.2 理论分析

(1)控制器设计

a. 求G(z)

>> s = tf('s');

>> Gc = (19.156/(0.025649*s+1));

>> c2d(Gc,0.01,'z')

ans =

    6.185

  ----------

  z - 0.6771

采样时间: 0.01 seconds

离散时间传递函数。

b. 求D(z)

(2)建立simulink模型:

a. 未加限幅

        输出波形如下,同时将生成的数据导入到工作区方便后续与实物数据进行比较。

b. 加入正负250限幅后

5.3 实验过程

        在实验中我们利用占空比为120的模型进行识别,利用matlab工具识别出被控对象为:

        最小拍核心代码如下:

float ZXP_Control(float refspeed,float realspeed
{	int duty_err;
	err = refspeed - realspeed;
	duty_err = duty_err_last + err / 6.14 - err_last_1 / 6.14 * 0.773;
	duty_err_last = duty_err;
	err_last_1 = err;
	if(duty_err < 0) duty_err = 0;
	if(duty_err + 39 > 250)        //39是考虑电机死区的因素
		return 250;
	else return duty_err + 39;	 
}

5.4 比较结果

(1)Matlab代码如下

function [ output_args ] = untitled2( input_args )
load SD120.txt
load ZXP.txt
load YXP.txt

A = textread('SD120.txt');
W= textread('ZXP.txt');
Q= textread('YXP.txt');
G = tf(2298.72,[0.025649 1]);   
x = 0:0.005:5.48;                
y = step(G,x);
plot(y,'LineWidth',2);
axis([0 100,0 3500]);
hold on
plot(A,'r','LineWidth',1)
plot(W,'b','LineWidth',1)
plot(Q,'g','LineWidth',1)
end

(2)运行结果

(3)结果分析

        通过实验与仿真结果可以看出实验与仿真结果基本吻合,实验成功。

5.5 思考与解答

1、最小拍设计的要求是什么?

答:闭环控制系统在最少的采样周期内达到稳定,且系统在采样点的输出能够准确地跟踪输入信号,不存在稳态误差。

2、最小拍控制器局限性及如何解决?

答:局限性:

(1)最小拍控制系统的输出在采样点之间可能存在纹波

(2)最小拍控制系统对各种典型输入函数的适应性差

(3)最小拍控制系统对被控对象的模型参数变化敏感

解决方法:可以通过最小拍无纹波控制器的设计解决问题1;针对问题23,只有在不同被控对象中,不断设计控制器来解决。

3、仿真和实际的结果存在一定的差异,简述存在的差异并分析原因。

答:实际结果在初始时会突变,可能是因为电机老化等外部因素,并由于外界干扰,实验结果数据有波动,而仿真结果则是在完全理想情况下,无波动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624634.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国外新闻媒体投放:多元化媒体分发投稿平台-大舍传媒

引言 随着全球信息传播的加速和全球化的发展&#xff0c;国外新闻媒体的推广变得越来越重要。在这个数字化时代&#xff0c;多元化的媒体分发投放成为了有效推广的关键。本文将介绍大舍传媒在国外新闻媒体推广中的经验与策略。 国外新闻媒体的重要性 国外新闻媒体是获取国际…

信创替代后的设备处置

信创替代后的设备处置 在信创项目中替换下来的设备&#xff0c;如果从技术层面讲还具有较高的应用价值&#xff0c;如何处置呢&#xff1f; 一、数据处置 信创适配完成后&#xff0c;这些被替换下来的服务器上有大量的数据&#xff08;包括结构化和非结构化&#xff09;&…

【2024】前端,该卷什么呢?

✅顺便推个机会&#xff0c;技术大厂&#xff0c;部门捞人&#xff0c;前后端可投。 2024ChatGPT 的炸裂式发展&#xff0c;很多大佬都亲自入场整活儿&#xff0c;你不得不说&#xff0c;人工智能时代的未来已来&#xff0c;大势所趋&#xff0c;不可阻挡。随着生成式AI的迅猛发…

Linux进程控制——Linux进程等待

前言&#xff1a;接着前面进程终止&#xff0c;话不多说我们进入Linux进程等待的学习&#xff0c;如果你还不了解进程终止建议先了解&#xff1a; Linux进程终止 本篇主要内容&#xff1a; 什么是进程等待 为什么要进行进程等待 如何进程等待 进程等待 1. 进程等待的概念2. 进…

收藏:如何轻松建立CRM系统的帮助中心

大家好&#xff0c;今天咱们来聊聊怎么给公司的CRM系统建个帮助中心。为什么CRM系统需要建立帮助中心呢&#xff1f;很简单&#xff0c;就是为了让客户、员工在遇到问题时能有个快速找到答案的地方&#xff0c;提升咱们的服务质量和内部工作效率。 一、为什么需要建立CRM系统的…

瑞友科技质量改进服务事业部总经理张力受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 北京瑞友科技股份有限公司质量改进服务事业部总经理张力先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“PMO如何对接战略成为企业IT投资成功的有效保障”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#x…

Python接口自动化测试之动态数据处理

在前面的知识基础上介绍了在接口自动化测试中&#xff0c;如何把数据分离出来&#xff0c;并且找到它的共同点&#xff0c;然后依据这个共同点来找到解决复杂问题的思想。我一直认为&#xff0c;程序是人设计的&#xff0c;它得符合人性&#xff0c;那么自动化测试的&#xff0…

Github新手入门使用方法

**存在问题&#xff1a;**新手如何快速入门github&#xff0c;能够下载开源文件&#xff0c;并且修改后更新远程github仓库&#xff1b; 解决方案&#xff1a; 参考&#xff1a; http://www.360doc.com/content/24/0301/12/60419_1115656653.shtml https://blog.csdn.net/gongd…

一个不知名的开源项目可以带来多少收入

起源 2020 年新冠疫情开始蔓延&#xff0c;当时我在同时经营 3 个不同的公司。除了其中的体育赛事平台因为疫情关门大吉之外&#xff0c;另外两个公司并没有受影响&#xff0c;营收和利润反而都持续增加。但是连续几个月不能出远门&#xff0c;也不能随便见朋友和客户&#xff…

大语言模型的RAG:综述

23年12月同济大学和复旦大学的综述论文“Retrieval-Augmented Generation for Large Language Models: A Survey”。 大语言模型&#xff08;LLM&#xff09;展示了强大的功能&#xff0c;但在实际应用中仍然面临挑战&#xff0c;如幻觉、知识更新缓慢以及答案缺乏透明度。检索…

分布式搜索-elaticsearch基础 安装es

这里是在虚拟机的Linux系统里安装es的教程: 1.创建网络 在Finashell终端输入指令 docker network create es-net 2.将es.tar安装包放入tmp的目录下 输入指令加载镜像&#xff1a;docker load -i es.tar 3.再运行docker 命令 docker run -d \--name es \-e "ES_JAVA_O…

触摸播放视频,并用iframe实现播放外站视频

效果&#xff1a; html: <div:style"{ height: homedivh }"class"rightOne_content_div_div"mouseenter"divSeenter(i)"mouseleave"divLeave(i)"click"ItemClick(i)"><!-- isUser是否是用户上传 --><divv-if…

NodeJS编写后端接口

技术栈 1.express&#xff1a;Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建 各种 Web 应用&#xff0c;和丰富的 HTTP 工具&#xff0c;使用 Express 可以快速地搭建一个完整功能的网站。 2.mysql&#xff1a;用于操作MySQL数据库 3.bod…

HarmonyOS应用模型Stage基本介绍

文章目录 <font colorcoral> HarmonyOS应用模型概况<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 写在后面的话<font colorcoral>Referen…

Grafana(CVE-2021-43798)、Apache Druid 代码执行漏洞

文章目录 一、Grafana 8.x 插件模块目录穿越漏洞&#xff08;CVE-2021-43798&#xff09;二、Apache Druid 代码执行漏洞&#xff08;CVE-2021-25646&#xff09; 一、Grafana 8.x 插件模块目录穿越漏洞&#xff08;CVE-2021-43798&#xff09; Grafana是一个系统监测工具。 利…

Spring的核心概念

目录 1、控制反转&#xff08;IoC&#xff09; 什么是控制反转 IoC与IoC容器的关系 Spring框架的控制反转 2、Bean 注解&#xff1a;​​​ 3、DI 4、总结 1、控制反转&#xff08;IoC&#xff09; 什么是控制反转 IoC&#xff08;Inversion of Control&#xff0c;控…

01 Triton backend

1 整体架构 三部分组成&#xff1a; Triton backend tensorRT_backend、onnx_backend、tfs_backend、torch_backend **Triton model ** 不同的模型 **Triton model instance ** 模型实例 ![P2}5X%2ULV(2OAC$_OKOP.png 2 设计思路 需要实现七个接口&#xff1a; TRITON…

给定两点所能得到的数学关系

给定两点所能得到的数学关系 正文 正文 这里介绍一个基础问题&#xff0c;如果给定平面上的两个点的坐标&#xff0c;那么它们之间能够得到什么数学关系呢&#xff1f; ω arctan ⁡ y 1 − y 0 x 1 − x 0 x 1 − x 0 d cos ⁡ ω y 1 − y 0 d cos ⁡ ω d ( x 1 − x…

【 PowerJob 的使用 -分布式调度】

PowerJob 的使用 最近项目中使用了PowerJob做任务调度模块&#xff0c;感觉这个框架真香&#xff0c;今天我们就来深入了解一下新一代的定时任务框架——PowerJob&#xff01; 简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#xff0c;与xxl-job一样&#xff0…

内联函数+auto关键字(C++11)+指针空指针nullptr(C++11)

内联函数auto关键字&#xff08;C11&#xff09;指针空指针nullptr&#xff08;C11&#xff09;详解 内联函数概念特性 auto关键字&#xff08;C11&#xff09;auto简介auto的使用细则auto不能推导的场景 基于范围的for循环(C11)范围for的语法范围for的使用条件 指针空指针null…