华科编译原理实验报告

华科编译原理实验报告
华科编译原理实验报告

课程实验报告课程名称:编译原理

专业班级:CS1209

学号:

姓名:

指导教师:周时阳

报告日期:2015.6.28

计算机科学与技术学院

目录

1 课程实验概述 (1)

2 实验一词法分析器的实现 (2)

2.1 问题描述 (2)

2.1.1 实验内容 (2)

2.1.2实验原理 (2)

2.2 系统设计 (3)

2.2.1实验前准备 (3)

2.2.2实验流程图 (5)

2.3 系统实现 (11)

2.4 效率分析 (11)

2.4.1程序的执行结果 (12)

2.4.2实验程序的优点和缺陷 (13)

3 实验总结与评价 (13)

1 课程实验概述

词法分析(Lexical Analysis) 是编译的第一阶段。词法分析器的主要任

是读入源程序的输入字符、将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应一个词素。这个词法单元序列被输出到语法分析器进行语法分析。

词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等

(1) 关键字是由程序语言定义的具有固定意义的标识符。例如,Pascal 中的begin,end,if,while都是保留字。这些字通常不用作一般标识符。

(2) 标识符用来表示各种名字,如变量名,数组名,过程名等等。

(3) 常数常数的类型一般有整型、实型、布尔型、文字型等。

(4) 运算符如+、-、*、/等等。

(5) 界符如逗号、分号、括号、等等。

词法分析器所输出单词符号常常表示成如下的二元式: (单词种别,单词符号的属性值)

单词种别通常用整数编码。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可将其全体视为一种。运算符可采用一符一种的方法。界符一般用一符一种的方法。对于每个单词符号,除了给出了种别编码之外,还应给出有关单词符号的属性信息。单词符号的属性是指单词符号的特性或特征。

2 实验一词法分析器的实现

2.1 问题描述

2.1.1 实验内容

1.要完成一个完整的编译器,需要实现的功能如下:

(1)组织源程序的输入

(2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件

(3)删除注释、空格和无用符号

(4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。

(5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表。

标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址

注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入。

常量表结构:常量名,常量值

2.能对任何S语言源程序进行分析

在运行词法分析程序时,应该用问答形式输入要被分析的S源语言程序的文件名,然后对该程序完成词法分析任务。

2.1.2实验原理

词法分析程序的算法思想:算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。

2.2 系统设计

2.2.1实验前准备

(1)在扫描程序的过程中,注释被忽略。(2)各种单词符号对应的编号(如下):

表2-1:编号对照表

(2)实验的状态转换图如图2-2示:

图2-2:实验状态转换图

2.2.2实验流程图

图2-3:系统流程图

(4)扫描注释模块流程图如下所示:

图2-4:注释分析模块

图2-5:数字分析模块流程图

图2-6:引号分析模块流程图

图2-7:单词分析模块流程图

(8)扫描其他字符模块流程图如图2-8所示:

图2-8:其他符号分析模块流程图

2.3 系统实现

(1)确定关键字,一共有32个,把32个字符保存在定义的数组中,其下标就是每个关键字的编码,这样设计的原因是方便分析。其他字符根据自定义的编号,扫描到后直接返回它们的编号。

(2)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。

(3)注释被忽略。

(4)确定设计的词法分析程序的功能:

输入:建立单独的txt文件保存所给文法的源程序字符串,我的是test.txt 文件。

输出:由行号、字符串和编号构成,分析的结果打印在显示在屏幕上,同时保存在另一个txt文件中,我命名的文件是a.txt。

2.4 效率分析

测试语句为:

Program example ;

var int j,m,n;

Begin /*there is * a

/ comment*/ i:=2;

j:=6;

m:=3; //there is a comment

n:=j+m;

If n>=3 and n<5

then j:=j-1;

end .

2.4.1程序的执行结果

结果截图如图2-9所示:

图2-9:结果截图

打开a.txt文件,如图2-10所示,结果与屏幕上的结果一致。

图2-10:a.txt文件内容

2.4.2实验程序的优点和缺陷

优点:该程序可以出来多种情况,并且运行效率高。

缺陷:程序中没有出错处理能力,并且在分析长代码时,不能全部分析完成,由于时间关系没有来得及修改这个bug。

3 实验总结与评价

我在这次词法分析器的设计过程中学到了很多东西,其中最大的收获是对于编译原理中的词法分析这一过程理解的更加清楚明了。没做实验之前根本就不理解其中的原理,其次,是在使用C编程的能力有所提高,因为在程序分析时,要分析特别细,稍有疏忽,就可能出错。另外,在该词法分析器设计中也有一些不足的地方,比如没有出错处理功能。分析结果输出方式为:用一个存放结果的字符串数组,并用指针指向它,输出结果正确,总的来说,这次实验达到了其初衷,实现了规定的功能。

源代码:

#include

#include

#include

#include

int guanjz(char ch1[])//关键字和标识符判断

{

int i;

char

ch2[32][9]={"auto","double","int","struct","break","else","long","switch","case","enum",

"register","typedef","char","extern","return","union","const","float","short",

"unsigned","continue","for","signed","void","default","goto","sizeof",

"volatile","do","while","static","if"};//定义关键字集,共32个for(i=0;i<32;i++)

{//逐个比对如果为关键字则返回类别i+1

if(!strcmp(ch1,ch2[i]))

return i+1;

}

return 47;//否则返回一般标识符类

}

void main()

{

FILE *fp,*fp1;

int k=0;

int i=0;

int j=0;

int hanjsq=1;//行计数器,保存行号

int guanjz(char ch1[]);//关键字和标识符判断

char ch,infile[15],outfile[15];//定义输入和输出文件名

printf("Enter the infile name:");

scanf("%s",infile);

printf("Enter the outfile name:");

scanf("%s",outfile);

if((fp = fopen(infile,"r")) == NULL)//打开需要扫描的文件

{

printf("cannot open file\n");

exit(0);

}

if((fp1 = fopen(outfile,"w")) == NULL)//打开需要存入的文件

{

printf("cannot open file\n");

exit(0);

}

printf("\n****************开始进行词法分析****************\n");

printf("\n行号字符串编号\n\n");

fprintf(fp1,"行号字符串编号\n");

fprintf(fp1,"*********************************************************\n"); while(!feof(fp))

{

ch=fgetc(fp);

if(ch==10)

hanjsq++;

if(isalpha(ch) || ch=='_')//如果第一个字符为字母或下划线则判断为标识符

{

int i=0;

char ch1[30];//假定每个标识符最长为

ch1[i++]=ch;//将ch保存到ch1[0]中并使i自加1

while(!feof(fp))

{

ch=fgetc(fp);

if(ch==10)

hanjsq++;//如果ch为换行符,则行计数器自加1

if(isalpha(ch) || isdigit(ch) || ch=='_')

{//如果ch为字母、数字或下划线就把ch放到ch1[i]中并使i自加1 ch1[i++]=ch;

}

if(ch=='.')//如果ch为小数点则判断是否为头文件

{

if((ch=fgetc(fp))=='h')//如果小数点后一位为h则判定其为头文件

{

if(ch==10)

hanjsq++;

ch1[i++]='.';

ch1[i++]='h';

ch1[i]='\0';//把结束标志放到ch1[i]中作为单词结束标志

printf("line %d: %s 83\n",hanjsq,ch1);//以字符串形式输出ch1

fprintf(fp1,"line %d: %s 83\n",hanjsq,ch1);

break;

}

else//如果小数点后一位不是h则判定其为标识符

{

fseek(fp,-1,1);//fp回退1

ch1[i]='\0';//把结束标志放到ch1[i]中作为单词结束标志

printf("line %d: %s

%d\n",hanjsq,ch1,guanjz(ch1));//以字符串形式输出ch1

fprintf(fp1,"line %d: %s

%d\n",hanjsq,ch1,guanjz(ch1));

break;

}

}

if(!isalpha(ch) && !isdigit(ch) && ch!='_' && ch!='.')

{//如果ch不为字母、数字、下划线和点时判断其为标识符

ch1[i]='\0';

printf("line %d: %s

%d\n",hanjsq,ch1,guanjz(ch1));

fprintf(fp1,"line %d: %s

%d\n",hanjsq,ch1,guanjz(ch1));

break;

}

}

}

if(isdigit(ch) || ch=='-')//如果ch为数字或'-'

{

if(isdigit(ch))//如果ch为数字

{

printf("line %d: %c",hanjsq,ch);

fprintf(fp1,"line %d: %c",hanjsq,ch);

while(!feof(fp))

{

ch=fgetc(fp);//预读一位如果ch为数字和点则循环输出

if(isdigit(ch) || ch=='.')

{

printf("%c",ch);

fprintf(fp1,"%c",ch);

}

else//否则视为数字结束

{

printf(" 46\n");

fprintf(fp1," 46\n");

fseek(fp,-1,1);//回退一位

ch='0';//置ch为0,以免影响下面误判并顺利退出扫描数字

break;

}

}

}

if(ch=='-')//如果ch为'-'

{

ch=fgetc(fp);//预读一位

if(ch=='-')//如果ch还是为'-'则判断为自减符'--'

{

printf("line %d: -- 80\n",hanjsq);

fprintf(fp1,"line %d: -- 80\n",hanjsq);

}

if(ch=='>')//如果ch为'>',则判断为结构体运算符'->'

{

printf("line %d:ch1[i]= -> 81\n",hanjsq);

fprintf(fp1,"line %d: -> 81\n",hanjsq);

}

if(isdigit(ch))//如果ch为数字则可能为减号或负号

{

fseek(fp,-3,1);//回退3为判断

ch=fgetc(fp);

if(isdigit(ch))//如果ch为数字则判断'-'为减号

{

ch=fgetc(fp);

printf("line %d: %c 79\n",hanjsq,ch);

fprintf(fp1,"line %d: %c 79\n",hanjsq,ch);

}

else //否则判断'-'为负号

{

ch=fgetc(fp);

printf("line %d: %c",hanjsq,ch);

fprintf(fp1,"line %d: %c",hanjsq,ch);

while(!feof(fp))

{

ch=fgetc(fp);//预读一位如果ch为数字和点则循环输出

if(isdigit(ch) || ch=='.')

{

printf("%c",ch);

自动控制原理实验报告

《自动控制原理》 实验报告 姓名: 学号: 专业: 班级: 时段: 成绩: 工学院自动化系

实验一 典型环节的MATLAB 仿真 一、实验目的 1.熟悉MATLAB 桌面和命令窗口,初步了解SIMULINK 功能模块的使用方法。 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。 3.定性了解各参数变化对典型环节动态特性的影响。 二、实验原理 1.比例环节的传递函数为 K R K R R R Z Z s G 200,1002)(211 212==-=-=- = 其对应的模拟电路及SIMULINK 图形如图1-3所示。 三、实验内容 按下列各典型环节的传递函数,建立相应的SIMULINK 仿真模型,观察并记录其单位阶跃响应波形。 ① 比例环节1)(1=s G 和2)(1=s G ; ② 惯性环节11)(1+= s s G 和1 5.01 )(2+=s s G ③ 积分环节s s G 1)(1= ④ 微分环节s s G =)(1 ⑤ 比例+微分环节(PD )2)(1+=s s G 和1)(2+=s s G ⑥ 比例+积分环节(PI )s s G 11)(1+=和s s G 211)(2+= 四、实验结果及分析 图1-3 比例环节的模拟电路及SIMULINK 图形

① 仿真模型及波形图1)(1=s G 和2)(1=s G ② 仿真模型及波形图11)(1+= s s G 和1 5.01)(2+=s s G 11)(1+= s s G 1 5.01 )(2+=s s G ③ 积分环节s s G 1)(1= ④ 微分环节

计算机组成原理实验报告

福建农林大学计算机与信息学院信息工程类实验报告系:计算机科学与技术专业:计算机科学与技术年级: 09级 姓名:张文绮学号: 091150022 实验课程:计算机组成原理 实验室号:___田405 实验设备号: 43 实验时间:2010.12.19 指导教师签字:成绩: 实验一算术逻辑运算实验 1.实验目的和要求 1. 熟悉简单运算器的数据传送通路; 2. 验证4位运算功能发生器功能(74LS181)的组合功能。 2.实验原理 实验中所用到的运算器数据通路如图1-1所示。其中运算器由两片74181

以并/串形式构成8位字长的ALU。运算器的输出经过一个三态门(74245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74373)锁存,锁存器的输入连接至数据总线,数据开关INPUT DEVICE用来给出参与运算的数据,并经过一个三态门(74245)和数据总线相连,数据显示灯“BUS UNIT”已和数据总线相连,用来显示数据总线内容。 图1-2中已将用户需要连接的控制信号用圆圈标明(其他实验相同,不再说明),其中除T4为脉冲信号,其它均为电平信号。由于实验电路中的时序信号均已连至W/R UNIT的相应时序信号引出端,因此,在进行实验时,只需将W/R UNIT 的T4接至STATE UNIT的微动开关KK2的输出端,按动微动开关,即可获得实验所需的单脉冲,而S3,S2,S1,S0,Cn,LDDR1,LDDR2,ALU-B,SW-B各电平控制信号用SWITCH UNIT中的二进制数据开关来模拟,其中Cn,ALU-B,SW-B为低电平控制有效,LDDR1,LDDR2为高电平有效。 3.主要仪器设备(实验用的软硬件环境) ZYE1603B计算机组成原理教学实验系统一台,排线若干。 4.操作方法与实验步骤

控制理论实验报告MATLAB仿真实验解析

实验报告 课程名称:控制理论(乙) 指导老师:林峰 成绩:__________________ 实验名称:MATLAB 仿真实验 实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 实验九 控制系统的时域分析 一、 实验目的: 1.用计算机辅助分析的办法,掌握系统的时域分析方法。 2.熟悉Simulink 仿真环境。 二、实验原理及方法: 系统仿真实质上就是对系统模型的求解,对控制系统来说,一般模型可转化成某个微分方程或差分方程表示,因此在仿真过程中,一般以某种数值算法从初态出发,逐步计算系统的响应,最后绘制出系统的响应曲线,进而可分析系统的性能。控制系统最常用的时域分析方法是,当输入信号为单位阶跃和单位冲激函数时,求出系统的输出响应,分别称为单位阶跃响应和单位冲激响应。在MATLAB 中,提供了求取连续系统的单位阶跃响应函数step ,单位冲激响应函数impulse ,零输入响应函数initial 等等。 二、实验内容: 二阶系统,其状态方程模型为 ? 1x -0.5572 -0.7814 1x 1 = + u ? 2x 0.7814 0 2x 0 1x y = [1.9691 6.4493] +[0] u 2x 四、实验要求: 1.编制MATLAB 程序,画出单位阶跃响应曲线、冲击响应曲线、系统的零输入响应、斜坡输入响应; (1)画出系统的单位阶跃响应曲线; A=[-0.5572 -0.7814;0.7814 0 ]; B=[1;0];

自动控制原理实验报告

实验报告 课程名称:自动控制原理 实验项目:典型环节的时域相应 实验地点:自动控制实验室 实验日期:2017 年 3 月22 日 指导教师:乔学工 实验一典型环节的时域特性 一、实验目的 1.熟悉并掌握TDN-ACC+设备的使用方法及各典型环节模拟电路的构成方法。

2.熟悉各种典型环节的理想阶跃相应曲线和实际阶跃响应曲线。对比差异,分析原因。 3.了解参数变化对典型环节动态特性的影响。 二、实验设备 PC 机一台,TD-ACC+(或TD-ACS)实验系统一套。 三、实验原理及内容 下面列出各典型环节的方框图、传递函数、模拟电路图、阶跃响应,实验前应熟悉了解。 1.比例环节 (P) (1)方框图 (2)传递函数: K S Ui S Uo =) () ( (3)阶跃响应:) 0()(≥=t K t U O 其中 01/R R K = (4)模拟电路图: (5) 理想与实际阶跃响应对照曲线: ① 取R0 = 200K ;R1 = 100K 。 ② 取R0 = 200K ;R1 = 200K 。

2.积分环节 (I) (1)方框图 (2)传递函数: TS S Ui S Uo 1 )()(= (3)阶跃响应: ) 0(1)(≥= t t T t Uo 其中 C R T 0= (4)模拟电路图 (5) 理想与实际阶跃响应曲线对照: ① 取R0 = 200K ;C = 1uF 。 ② 取R0 = 200K ;C = 2uF 。

1 Uo 0t Ui(t) Uo(t) 理想阶跃响应曲线 0.4s 1 Uo 0t Ui(t) Uo(t) 实测阶跃响应曲线 0.4s 10V 无穷 3.比例积分环节 (PI) (1)方框图: (2)传递函数: (3)阶跃响应: (4)模拟电路图: (5)理想与实际阶跃响应曲线对照: ①取 R0 = R1 = 200K;C = 1uF。 理想阶跃响应曲线实测阶跃响应曲线 ②取 R0=R1=200K;C=2uF。 K 1 + U i(S)+ U o(S) + Uo 10V U o(t) 2 U i(t ) 0 0 .2s t Uo 无穷 U o(t) 2 U i(t ) 0 0 .2s t

计算机组成原理实验报告

重庆理工大学 《计算机组成原理》 实验报告 学号 __11503080109____ 姓名 __张致远_________ 专业 __软件工程_______ 学院 _计算机科学与工程 二0一六年四月二十三实验一基本运算器实验报告

一、实验名称 基本运算器实验 二、完成学生:张致远班级115030801 学号11503080109 三、实验目的 1.了解运算器的组成结构。 2.掌握运算器的工作原理。 四、实验原理: 两片74LS181 芯片以并/串形式构成的8位字长的运算器。右方为低4位运算芯片,左方为高4位运算芯片。低位芯片的进位输出端Cn+4与高位芯片的进位输入端Cn相连,使低4位运算产生的进位送进高4位。低位芯片的进位输入端Cn可与外来进位相连,高位芯片的进位输出到外部。 两个芯片的控制端S0~S3 和M 各自相连,其控制电平按表2.6-1。为进行双操作数运算,运算器的两个数据输入端分别由两个数据暂存器DR1、DR2(用锁存器74LS273 实现)来锁存数据。要将内总线上的数据锁存到DR1 或DR2 中,则锁存器74LS273 的控制端LDDR1 或LDDR2 须为高电平。当T4 脉冲来到的时候,总线上的数据就被锁存进DR1 或DR2 中了。 为控制运算器向内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245 实现)。若要将运算结果输出到总线上,则要将三态门74LS245 的控制端ALU-B 置低电平。否则输出高阻态。数据输入单元(实验板上印有INPUT DEVICE)用以给出参与运算的数据。其中,输入开关经过一个三态门(74LS245)和内总线相连,该三态门的控制信号为SW-B,取低电平时,开关上的数据则通过三态门而送入内总线中。 总线数据显示灯(在BUS UNIT 单元中)已与内总线相连,用来显示内总线上的数据。控制信号中除T4 为脉冲信号,其它均为电平信号。 由于实验电路中的时序信号均已连至“W/R UNIT”单元中的相应时序信号引出端,因此,需要将“W/R UNIT”单元中的T4 接至“STATE UNIT”单元中的微动开关KK2 的输出端。在进行实验时,按动微动开关,即可获得实验所需的单脉冲。 S3、S2、 S1、S0 、Cn、M、LDDR1、LDDR2、ALU-B、SW-B 各电平控制信号则使用“SWITCHUNIT”单元中的二进制数据开关来模拟,其中Cn、ALU-B、SW-B 为低电平有效,LDDR1、LDDR2 为高电平有效。 对于单总线数据通路,作实验时就要分时控制总线,即当向DR1、DR2 工作暂存器打入数据时,数据开关三态门打开,这时应保证运算器输出三态门关闭;同样,当运算器输出结果至总线时也应保证数据输入三态门是在关闭状态。 运算结果表

现代控制理论实验报告

现代控制理论实验报告

实验一系统能控性与能观性分析 一、实验目的 1.理解系统的能控和可观性。 二、实验设备 1.THBCC-1型信号与系统·控制理论及计算机控制技术实验平台; 三、实验内容 二阶系统能控性和能观性的分析 四、实验原理 系统的能控性是指输入信号u对各状态变量x的控制能力,如果对于系统任意的初始状态,可以找到一个容许的输入量,在有限的时间内把系统所有的状态引向状态空间的坐标原点,则称系统是能控的。 对于图21-1所示的电路系统,设iL和uc分别为系统的两个状态变量,如果电桥中 则输入电压ur能控制iL和uc状态变量的变化,此时,状态是能控的。反之,当 时,电桥中的A点和B点的电位始终相等,因而uc不受输入ur的控制,ur只能改变iL的大小,故系统不能控。 系统的能观性是指由系统的输出量确定所有初始状态的能力,如果在有限的时间内根据系统的输出能唯一地确定系统的初始状态,则称系统能观。为了说明图21-1所示电路的能观性,分别列出电桥不平衡和平衡时的状态空间表达式: 平衡时:

由式(2)可知,状态变量iL和uc没有耦合关系,外施信号u只能控制iL的变化,不会改变uc的大小,所以uc不能控。基于输出是uc,而uc与iL无关连,即输出uc中不含有iL的信息,因此对uc的检测不能确定iL。反之式(1)中iL与uc有耦合关系,即ur的改变将同时控制iL和uc的大小。由于iL与uc的耦合关系,因而输出uc的检测,能得到iL的信息,即根据uc的观测能确定iL(ω) 五、实验步骤 1.用2号导线将该单元中的一端接到阶跃信号发生器中输出2上,另一端接到地上。将阶跃信号发生器选择负输出。 2.将短路帽接到2K处,调节RP2,将Uab和Ucd的数据填在下面的表格中。然后将阶跃信号发生器选择正输出使调节RP1,记录Uab和Ucd。此时为非能控系统,Uab和Ucd没有关系(Ucd始终为0)。 3.将短路帽分别接到1K、3K处,重复上面的实验。 六、实验结果 表20-1Uab与Ucd的关系

自动控制原理MATLAB仿真实验报告

实验一 MATLAB 及仿真实验(控制系统的时域分析) 一、实验目的 学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点 1、 系统的典型响应有哪些? 2、 如何判断系统稳定性? 3、 系统的动态性能指标有哪些? 三、实验方法 (一) 四种典型响应 1、 阶跃响应: 阶跃响应常用格式: 1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。 2、),(Tn sys step ;表示时间范围0---Tn 。 3、),(T sys step ;表示时间范围向量T 指定。 4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。 2、 脉冲响应: 脉冲函数在数学上的精确定义:0 ,0)(1)(0 ?==?∞ t x f dx x f 其拉氏变换为:) ()()()(1)(s G s f s G s Y s f === 所以脉冲响应即为传函的反拉氏变换。 脉冲响应函数常用格式: ① )(sys impulse ; ② ); ,();,(T sys impulse Tn sys impulse ③ ),(T sys impulse Y = (二) 分析系统稳定性 有以下三种方法: 1、 利用pzmap 绘制连续系统的零极点图; 2、 利用tf2zp 求出系统零极点; 3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析 Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.

计算机组成原理实验报告(运算器组成、存储器)

计算机组成原理实验报告 一、实验1 Quartus Ⅱ的使用 一.实验目的 掌握Quartus Ⅱ的基本使用方法。 了解74138(3:8)译码器、74244、74273的功能。 利用Quartus Ⅱ验证74138(3:8)译码器、74244、74273的功能。 二.实验任务 熟悉Quartus Ⅱ中的管理项目、输入原理图以及仿真的设计方法与流程。 新建项目,利用原理编辑方式输入74138、74244、74273的功能特性,依照其功能表分别进行仿真,验证这三种期间的功能。 三.74138、74244、74273的原理图与仿真图 1.74138的原理图与仿真图 74244的原理图与仿真图

1. 4.74273的原理图与仿真图、

实验2 运算器组成实验 一、实验目的 1.掌握算术逻辑运算单元(ALU)的工作原理。 2.熟悉简单运算器的数据传送通路。 3.验证4位运算器(74181)的组合功能。 4.按给定数据,完成几种指定的算术和逻辑运算。 二、实验电路 附录中的图示出了本实验所用的运算器数据通路图。8位字长的ALU由2片74181构成。2片74273构成两个操作数寄存器DR1和DR2,用来保存参与运算的数据。DR1接ALU的A数据输入端口,DR2接ALU的B数据输入端口,ALU的数据输出通过三态门74244发送到数据总线BUS7-BUS0上。参与运算的数据可通过一个三态门74244输入到数据总线上,并可送到DR1或DR2暂存。 图中尾巴上带粗短线标记的信号都是控制信号。除了T4是脉冲信号外,其他均为电位信号。nC0,nALU-BUS,nSW-BUS均为低电平有效。 三、实验任务 按所示实验电路,输入原理图,建立.bdf文件。 四.实验原理图及仿真图 给DR1存入01010101,给DR2存入10101010,然后利用ALU的直通功能,检查DR1、

编译原理实验报告

编译原理实验报告 班级 姓名: 学号: 自我评定:

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。 输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。 输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。 三、实现方法与环境 词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。 总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。 四、实验设计 1)题目1:试用手工编码方式构造识别以下给定单词的某一语言的词法分析程序。 语言中具有的单词包括五个有代表性的关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。 单词的分类:构造上述语言中的各类单词符号及其分类码表。 表I 语言中的各类单词符号及其分类码表 单词符号类别编码类别码的助记符单词值

现代控制理论实验报告

现代控制理论 实 验 报 告 学院:机电学院 学号:XXXXX 姓名:XXXXX 班级:XXXX

实验一系统的传递函数阵和状态空间表达式的转换 一、实验目的 1.熟悉线性系统的数学模型、模型转换。 2.了解MATLAB 中相应的函数 二、实验内容及步骤 1.给定系统的传递函数为 150 3913.4036 18)(23++++= s s s s s G 要求(1)将其用Matlab 表达;(2)生成状态空间模型。 2.在Matlab 中建立如下离散系统的传递函数模型 y (k + 2) +5y (k +1) +6y (k ) = u (k + 2) + 2u (k +1) +u (k ) 3.在Matlab 中建立如下传递函数阵的Matlab 模型 ?????? ??????+++++++++++=7266 11632256 51 2)(2 32 2s s s s s s s s s s s s G 4.给定系统的模型为 ) 4.0)(25)(15() 2(18)(++++= s s s s s G 求(1)将其用Matlab 表达;(2)生成状态空间模型。 5.给定系统的状态方程系数矩阵如下: []0 , 360180,001,010001 1601384.40==???? ? ?????=????? ?????---=D C B A 用Matlab 将其以状态空间模型表示出来。 6.输入零极点函数模型,零点z=1,-2;极点p=-1,2,-3 增益k=1;求相应的传递函数模型、状态空间模型。 三、实验结果及分析 1.程序代码如下: num = [18 36]; den = [1 40.3 391 150]; tf(num,den) ss(tf(num,den))

北航自动控制原理实验报告(完整版)

自动控制原理实验报告 一、实验名称:一、二阶系统的电子模拟及时域响应的动态测试 二、实验目的 1、了解一、二阶系统阶跃响应及其性能指标与系统参数之间的关系 2、学习在电子模拟机上建立典型环节系统模型的方法 3、学习阶跃响应的测试方法 三、实验内容 1、建立一阶系统的电子模型,观测并记录在不同时间常数T时的响应曲线,测定过渡过程时间T s 2、建立二阶系统电子模型,观测并记录不同阻尼比的响应曲线,并测定超调量及过渡过程时间T s 四、实验原理及实验数据 一阶系统 系统传递函数: 由电路图可得,取则K=1,T分别取:0.25, 0.5, 1 T 0.25 0.50 1.00 R2 0.25MΩ0.5M Ω1MΩ C 1μ1μ1μ T S 实测0.7930 1.5160 3.1050 T S 理论0.7473 1.4962 2.9927 阶跃响应曲线图1.1 图1.2 图1.3 误差计算与分析 (1)当T=0.25时,误差==6.12%; (2)当T=0.5时,误差==1.32%; (3)当T=1时,误差==3.58% 误差分析:由于T决定响应参数,而,在实验中R、C的取值上可能存在一定误差,另外,导线的连接上也存在一些误差以及干扰,使实验结果与理论值之间存在一定误差。但是本实验误差在较小范围内,响应曲线也反映了预期要求,所以本实验基本得到了预期结果。 实验结果说明 由本实验结果可看出,一阶系统阶跃响应是单调上升的指数曲线,特征有T确定,T越小,过度过程进行得越快,系统的快速性越好。 二阶系统 图1.1 图1.2 图1.3

系统传递函数: 令 二阶系统模拟线路 0.25 0.50 1.00 R4 210.5 C2 111 实测45.8% 16.9% 0.6% 理论44.5% 16.3% 0% T S实测13.9860 5.4895 4.8480 T S理论14.0065 5.3066 4.8243 阶跃响应曲线图2.1 图2.2 图2.3 注:T s理论根据matlab命令[os,ts,tr]=stepspecs(time,output,output(end),5)得出,否则误差较大。 误差计算及分析 1)当ξ=0.25时,超调量的相对误差= 调节时间的相对误差= 2)当ξ=0.5时,超调量的相对误差==3.7% 调节时间的相对误差==3.4% 4)当ξ=1时,超调量的绝对误差= 调节时间的相对误差==3.46% 误差分析:由于本试验中,用的参量比较多,有R1,R2,R3,R4;C1,C2;在它们的取值的实际调节中不免出现一些误差,误差再累加,导致最终结果出现了比较大的误差,另外,此实验用的导线要多一点,干扰和导线的传到误差也给实验结果造成了一定误差。但是在观察响应曲线方面,这些误差并不影响,这些曲线仍旧体现了它们本身应具有的特点,通过比较它们完全能够了解阶跃响应及其性能指标与系统参数之间的关系,不影响预期的效果。 实验结果说明 由本实验可以看出,当ωn一定时,超调量随着ξ的增加而减小,直到ξ达到某个值时没有了超调;而调节时间随ξ的增大,先减小,直到ξ达到某个值后又增大了。 经理论计算可知,当ξ=0.707时,调节时间最短,而此时的超调量也小于5%,此时的ξ为最佳阻尼比。此实验的ξ分布在0.707两侧,体现了超调量和调节时间随ξ的变化而变化的过程,达到了预期的效果。 图2.2 图2.1 图2.3

现代控制理论实验报告河南工业大学

河南工业大学 现代控制理论实验报告姓名:朱建勇 班级:自动1306 学号:201323020601

现代控制理论 实验报告 专业: 自动化 班级: 自动1306 姓名: 朱建勇 学号: 201323020601 成绩评定: 一、实验题目: 线性系统状态空间表达式的建立以及线性变换 二、实验目的 1. 掌握线性定常系统的状态空间表达式。学会在MATLAB 中建立状态空间模型的方法。 2. 掌握传递函数与状态空间表达式之间相互转换的方法。学会用MATLAB 实现不同模型之 间的相互转换。 3. 熟悉系统的连接。学会用MATLAB 确定整个系统的状态空间表达式和传递函数。 4. 掌握状态空间表达式的相似变换。掌握将状态空间表达式转换为对角标准型、约当标准 型、能控标准型和能观测标准型的方法。学会用MATLAB 进行线性变换。 三、实验仪器 个人笔记本电脑 Matlab R2014a 软件 四、实验内容 1. 已知系统的传递函数 (a) ) 3()1(4)(2++=s s s s G

(b) 3486)(22++++=s s s s s G

(c) 6 1161)(232+++++=z z z z z z G (1)建立系统的TF 或ZPK 模型。 (2)将给定传递函数用函数ss( )转换为状态空间表达式。再将得到的状态空间表达式用函 数tf( )转换为传递函数,并与原传递函数进行比较。 (3)将给定传递函数用函数jordants( )转换为对角标准型或约当标准型。再将得到的对角 标准型或约当标准型用函数tf( )转换为传递函数,并与原传递函数进行比较。 (4)将给定传递函数用函数ctrlts( )转换为能控标准型和能观测标准型。再将得到的能控标 准型和能观测标准型用函数tf( )转换为传递函数,并与原传递函数进行比较。

计算机组成原理实验报告

计算机组成原理实验报告 ——微程序控制器实验 一.实验目的: 1.能瞧懂教学计算机(TH-union)已经设计好并正常运行的数条基本指令的功能、格式及执 行流程。并可以自己设计几条指令,并理解其功能,格式及执行流程,在教学计算机上实现。 2.深入理解计算机微程序控制器的功能与组成原理 3.深入学习计算机各类典型指令的执行流程 4.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念 5.学习微程序控制器的设计过程与相关技术 二.实验原理: 微程序控制器主要由控制存储器、微指令寄存器与地址转移逻辑三大部分组成。 其工作原理分为: 1、将程序与数据通过输入设备送入存储器; 2、启动运行后从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事; 3、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回存储器指定的单元中; 4、运算任务完成后,就可以根据指令将结果通过输出设备输出 三.微指令格式: 其中高八位为下地址字段、其余各位为控制字段、 1)微地址形成逻辑 TH—UNION 教学机利用器件形成下一条微指令在控制器存储器的地址、 下地址的形成由下地址字段及控制字段中的CI3—SCC控制、当为顺序执行时,下地址字段不起作用、下地址为当前微指令地址加1;当为转移指令(CI3—0=0011)时,由控制信号SCC 提供转移条件,由下地址字段提供转移地址、 2)控制字段 控制字段用以向各部件发送控制信号,使各部件能协调工作。 控制字段中各控制信号有如下几类: ①对运算器部件为了完成数据运算与传送功能,微指令向其提供了24位的控制信号,包括:4位的A、B口地址,用于选择读写的通用积存器3组3位的控制码I8-I6、 I5-I3、I2-I6,用于选择结果处置方案、运算功能、数据来源。 3组共7位控制信号控制配合的两片GAL20V8 3位SST,用于控制记忆的状态标志位 2位SCI,用于控制产生运算器低位的进位输入信号 2位SSH,用于控制产生运算器最高,最地位(与积存器)移位输入信号 ②对内存储器I/O与接口部件,控制器主要向它们提供读写操作用到的全部控制信号,共3位,即MRW

编译原理实验报告总结

学年第学期《编译原理》实验报告 学院(系):计算机科学与工程学院 班级:11303070A 学号:11303070*** 姓名:无名氏 指导教师:保密式 时间:2016 年7 月

目录 1.实验目的 (1) 2.实验内容及要求 (1) 3.实验方案设计 (1) 3.1 编译系统原理介绍 (1) 3.1.1 编译程序介绍 (2) 3.1.2 对所写编译程序的源语言的描述 (2) 3.2 词法分析程序的设计 (3) 3.3 语法分析程序设计 (4) 3.4 语义分析和中间代码生成程序的设计 (4) 4. 结果及测试分析 (4) 4.1软件运行环境及限制 (4) 4.2测试数据说明 (5) 4.3运行结果及功能说明 (5) 5.总结及心得体会 (7)

1.实验目的 根据Sample语言或者自定义的某种语言,设计该语言的编译前端。包括词法分析,语法分析、语义分析及中间代码生成部分。 2.实验内容及要求 (1)词法分析器 输入源程序,输出对应的token表,符号表和词法错误信息。按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误; (2)语法分析器 输入token串,通过语法分析,寻找其中的语法错误。要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。 (3)语义分析和中间代码生成 输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生 成中间代码。要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。 实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。3.实验方案设计 3.1 编译系统原理介绍 编译器逐行扫描高级语言程序源程序,编译的过程如下: (1).词法分析 识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。 (2).语法分析 一个语句看作一串记号(Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。 (3).语义分析 语义分析器对各句子的语法做检查:运算符两边类型是否相兼容;该做哪些类型转换(例如,实数向整数赋值要"取整");控制转移是否到不该去的地方;是

北理工自动控制理论实验报告

本科实验报告 实验名称:控制理论基础(实验)

实验一:控制系统的模型建立 一、实验目的 1.掌握利用MATLAB 建立控制系统模型的方法。 2.掌握系统的各种模型表述及相互之间的转换关系。 3. 学习和掌握系统模型连接的等效变换。 二、实验原理 1、系统模型的 MATLAB描述 系统的模型描述了系统的输入、输出变量以及内部各变量之间的关系,表征一个系统的模型有很多种,如微分方程、传递函数模型、状态空间模型等。这里主要介绍系统传递函数(TF)模型、零极点增益(ZPK)模型和状态空间(SS)模型的MATLAB 描述方法。 1)传递函数(TF)模型 传递函数是描述线性定常系统输入-输出关系的一种最常用的数学模型,其表达式一般为 在MATLAB 中,直接使用分子分母多项式的行向量表示系统,即 num = [bm, bm-1, … b1, b0] den = [an, an-1, … a1, a0] 调用tf 函数可以建立传递函数TF对象模型,调用格式如下: Gtf = tf(num,den) Tfdata 函数可以从TF对象模型中提取分子分母多项式,调用格式如下: [num,den] = tfdata(Gtf) 返回cell 类型的分子分母多项式系数 [num,den] = tfdata(Gtf,'v') 返回向量形式的分子分母多项式系数 2)零极点增益(ZPK)模型 传递函数因式分解后可以写成

式中, z1 , z2 , …,zm 称为传递函数的零点, p1,p2,…,pn称为传递函数的极点,k 为传递系数(系统增益)。 在MATLAB 中,直接用[z,p,k]矢量组表示系统,其中z,p,k 分别表示系统的零极点及其增益,即: z=[z1,z2,…,zm]; p=[p1,p2,…,pn]; k=[k]; 调用zpk 函数可以创建ZPK 对象模型,调用格式如下: Gzpk = zpk(z,p,k) 同样,MATLAB 提供了zpkdata 命令用来提取系统的零极点及其增益,调用格式如下: [z,p,k] = zpkdata(Gzpk) 返回cell 类型的零极点及增益 [z,p,k] = zpkdata (Gzpk,’v’) 返回向量形式的零极点及增益 函数pzmap 可用于求取系统的零极点或绘制系统得零极点图,调用格式如下: pzmap(G) 在复平面内绘出系统模型的零极点图。 [p,z] = pzmap(G) 返回的系统零极点,不作图。 3)状态空间(SS)模型 由状态变量描述的系统模型称为状态空间模型,由状态方程和输出方程组成: 其中:x 为n 维状态向量;u 为r 维输入向量; y 为m 维输出向量; A 为n×n 方阵,称为系统矩阵; B 为n×r 矩阵,称为输入矩阵或控制矩阵;C 为m×n 矩阵,称为输出矩阵; D为m×r 矩阵,称为直接传输矩阵。 在MATLAB 中,直接用矩阵组[A,B,C,D]表示系统,调用ss 函数可以创建ZPK 对象模型,调用格式如下: Gss = ss(A,B,C,D) 同样,MATLAB 提供了ssdata 命令用来提取系统的A、B、C、D 矩阵,调用格式如下: [A,B,C,D] = ssdata (Gss) 返回系统模型的A、B、C、D 矩阵 4)三种模型之间的转换

计算机组成原理实验报告册

实验一监控程序与汇编实验 实验时间:第周星期年月日节实验室:实验台: (以上部分由学生填写,如有遗漏,后果由学生本人自负) 1、实验目的 1)了解教学计算机的指令格式、指令编码、选择的寻址方式和具体功能。 2)了解汇编语言的语句与机器语言的指令之间的对应关系,学习用汇编语言设计程序的过程和方法。 3)学习教学机监控程序的功能、监控命令的使用方法,体会软件系统在计算机组成中的地位和作用。 2、实验平台 硬件平台:清华大学TEC-XP实验箱的MACH部分 软件平台:监控程序、PC端指令集仿真软件 3、实验要求 1)学习联机使用TEC-XP 教学实验系统和仿真终端软件; 2)使用监控程序的R 命令显示/修改寄存器内容、D 命令显示存储器内容、E 命令修改存储器内容; 3)使用A 命令写一小段汇编程序,使用U命令观察汇编码与机器码之间的关系,用G 命令连续运行该程序,用T命令单步运行并观察程序单步执行情况。 **代码不得写到0000——1FFF的地址单元中,如有违反将被取消当堂成绩 4、操作步骤及实验内容 1)实验箱功能开关设置及联机操作: 1. 将实验箱COM1口与PC机相连; 2. 设置功能状态开关为00110; 3. 于PC端运行; 4. 按RESET,START键,若PC端出现如下输出(如图所示),则操作成功; 图 2)仿真软件相关操作: 1. 在项目文件夹找到并启动; 图

2. 点击文件-启动监控程序; 图 4.若PC端出现如下输出(如图所示),则操作成功; 图 3)理解下列监控命令功能: A、U、G、R、E、D、T 1. A命令:完成指令汇编操作,把产生的指令代码放入对应的内存单元中,可连 续输入。不输入指令直接回车,则结束A命令(如图所示); 图 2. U命令:从相应的地址反汇编15条指令,并将结果显示在终端屏幕上(如图所 示); 图 注:连续使用不带参数的U命令时,将从上一次反汇编的最后一条语句之后接着继续反汇编。 3. G命令:从指定(或默认)的地址运行一个用户程序(如图所示); 图 4. R命令:显示、修改寄存器内容,当R命令不带参数时,显示全部寄存器和状 态寄存器的值(如图所示); 图 5. E命令:从指定(或默认)地址逐字显示每个内存字的内容,并等待用户打入 一个新的数值存回原内存单元(如图所示); 图 6. D命令:从指定(或默认)地址开始显示内存120个存储字的内容(如图所示);

编 译 原 理 实 验 报 告

编译原理实验报告 课程:编译原理 系别:计算机系 班级:11网络 姓名:王佳明 学号:110912049 教师:刘老师 实验小组:第二组 1

实验一熟悉C程序开发环境、进行简单程序的调试 实验目的: 1、初步了解vc++6.0环境; 2、熟悉掌握调试c程序的步骤: 实验内容: 1、输入下列程序,练习Turbo C 程序的编辑、编译、运行。 #include main() { printf(“Programming is fun.\n”); } 2、分析程序,预测其运行结果,并上机检测你的预测。 #include main() { printf(“*\n”); printf(“* * *\n”); printf(“* * * * *\n”); printf(“* * * * * * *\n”); } 3、下面是一个加法程序,程序运行时等待用户从键盘输入两个整数,然后求出它们的和并输出。观察运行结果(程序输出),上机验证该程序。 #include main() { int a,b,c; printf(“Please input a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; printf(“%d+%d=%d\n”,a,b,c); } 2

实验二词法分析器 一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","else","while","write","read", "do", "call","const","char","until","procedure","repeat" (2)运算符:"+","-","*","/","=" (3)界符:"{","}","[","]",";",",",".","(",")",":" (4)其他标记如字符串,表示以字母开头的标识符。 (5)空格、回车、换行符跳过。 在屏幕上显示如下: ( 1 , 无符号整数) ( begin , 关键字) ( if , 关键字) ( +, 运算符) ( ;, 界符) ( a , 普通标识符) 三、使用环境: Windows下的visual c++6.0; 四、调试程序: 1.举例说明文件位置:f:、、11.txt目标程序如下: begin x:=9 if x>0 then x:=x+1; while a:=0 do 3

现代控制理论实验报告

现代控制理论实验报告 组员: 院系:信息工程学院 专业: 指导老师: 年月日

实验1 系统的传递函数阵和状态空间表达式的转换 [实验要求] 应用MATLAB 对系统仿照[例]编程,求系统的A 、B 、C 、阵;然后再仿照[例]进行验证。并写出实验报告。 [实验目的] 1、学习多变量系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数相互转换的方法; 2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数相互转换方法。 [实验内容] 1 设系统的模型如式示。 p m n R y R u R x D Cx y Bu Ax x ∈∈∈?? ?+=+=& 其中A 为n ×n 维系数矩阵、B 为n ×m 维输入矩阵 C 为p ×n 维输出矩阵,D 为传递阵,一般情况下为0,只有n 和m 维数相同时,D=1。系统的传递函数阵和状态空间表达式之间的关系如式示。 D B A SI C s den s num s G +-== -1)() () (()( 式中,)(s num 表示传递函数阵的分子阵,其维数是p ×m ;)(s den 表示传递函数阵的按s 降幂排列的分母。 2 实验步骤 ① 根据所给系统的传递函数或(A 、B 、C 阵),依据系统的传递函数阵和状态空间表达式之间的关系如式,采用MATLA 的编程。注意:ss2tf 和tf2ss 是互为逆转换的指令; ② 在MATLA 界面下调试程序,并检查是否运行正确。 ③ [] 已知SISO 系统的状态空间表达式为,求系统的传递函数。

, 2010050010000100001 0432143 21u x x x x x x x x ? ? ??? ? ??????-+????????????????????????-=????????????&&&&[]??? ? ? ???????=43210001x x x x y 程序: A=[0 1 0 0;0 0 -1 0;0 0 0 1;0 0 5 0]; B=[0;1;0;-2]; C=[1 0 0 0]; D=0; [num,den]=ss2tf(A,B,C,D,1) 程序运行结果: num = 0 den = 0 0 0 从程序运行结果得到:系统的传递函数为: 2 4253 )(s s s S G --= ④ [] 从系统的传递函数式求状态空间表达式。 程序: num =[0 0 1 0 -3]; den =[1 0 -5 0 0]; [A,B,C,D]=tf2ss(num,den) 程序运行结果: A = 0 5 0 0 1 0 0 0 0 1 0 0

自动控制原理实验报告73809

-150-100 -50 50 实验一 典型环节的模拟研究及阶跃响应分析 1、比例环节 可知比例环节的传递函数为一个常数: 当Kp 分别为0.5,1,2时,输入幅值为1.84的正向阶跃信号,理论上依次输出幅值为0.92,1.84,3.68的反向阶跃信号。实验中,输出信号依次为幅值为0.94,1.88,3.70的反向阶跃信号, 相对误差分别为1.8%,2.2%,0.2%. 在误差允许范围内可认为实际输出满足理论值。 2、 积分环节 积分环节传递函数为: (1)T=0.1(0.033)时,C=1μf (0.33μf ),利用MATLAB ,模拟阶跃信号输入下的输出信号如图: T=0.1 T=0.033 与实验测得波形比较可知,实际与理论值较为吻合,理论上T=0.033时的波形斜率近似为T=0.1时的三倍,实际上为8/2.6=3.08,在误差允许范围内可认为满足理论条件。 3、 惯性环节 i f i o R R U U -=TS 1 CS R 1Z Z U U i i f i 0-=-=-=15 20

惯性环节传递函数为: K = R f /R 1,T = R f C, (1) 保持K = R f /R 1 = 1不变,观测T = 0.1秒,0.01秒(既R 1 = 100K,C = 1μf , 0.1μf )时的输出波形。利用matlab 仿真得到理论波形如下: T=0.1时 t s (5%)理论值为300ms,实际测得t s =400ms 相对误差为:(400-300)/300=33.3%,读数误差较大。 K 理论值为1,实验值2.12/2.28, 相对误差为(2.28-2.12)/2.28=7%与理论值 较为接近。 T=0.01时 t s (5%)理论值为30ms,实际测得t s =40ms 相对误差为:(40-30)/30=33.3% 由于ts 较小,所以读数时误差较大。 K 理论值为1,实验值2.12/2.28, 相对误差为(2.28-2.12)/2.28=7%与理论值较为接近 (2) 保持T = R f C = 0.1s 不变,分别观测K = 1,2时的输出波形。 K=1时波形即为(1)中T0.1时波形 K=2时,利用matlab 仿真得到如下结果: t s (5%)理论值为300ms,实际测得t s =400ms 相对误差为:(400-300)/300=33.3% 读数误差较大 K 理论值为2,实验值4.30/2.28, 1 TS K )s (R )s (C +-=

相关文档
最新文档