实验2:类的方法和流程控制

实验2:类的方法和流程控制
实验2:类的方法和流程控制

广东技术师范学院实验报告

学院:计算机科学学

专业:

计算机科学与

技术(师范)

班级:成绩:

姓名:孔哥哥学号:组别:组员:

实验地点:Win10电脑实验日期:指导教师签名:

实验名称:类的方法和流程控制

一、实验目的:

1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。

2.掌握Java语言中具各种运算符表达式的基本知识。

3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。

4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。熟练掌握特殊流程控制语句如break,continue,标号语句。

6.熟练掌握一维数组和二维数组的使用

7.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题

二、实验内容和步骤:(说明代码及运行结果)

1.设n为自然数:n!=1×2×3×…×n 称为n的阶乘,并且规定0!=1.试编程计算2!、4!、6!和10!,并将结果输出到屏幕上。

import java.io.IOException;

import java.util.Scanner;

public class test {

static int digui(int i)

{

int sum = 0;

if (i == 0)

return (1);

else

sum = i * digui(i-1);

return sum;

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

try{

for(int q=0;q<4;q++){

System.out.println("请输入数字:");

int i = sc.nextInt();

System.out.println(i+"! ="+digui(i));

}

}

catch(Exception e){

System.out.println("请输入数字!");

}

}

2. 编写程序,接收用户从键盘输入的三个整数x、y、z,从中选出最大和最小者。import java.util.Scanner;

public class test1 {

static int daxiao(int a,int b,int c){

//判断大小

int max;

if(a>b){

max=a;

if(max

max=c;

}

}

else{

max=b;

if(max

max=c;

}

}

return max;

}

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

try{

System.out.println("请输入第一个数字:");

int x=sc.nextInt();

System.out.println("请输入第二个数字:");

int y=sc.nextInt();

System.out.println("请输入第三个数字:");

int z=sc.nextInt();

System.out.println("max="+daxiao(x,y,z));

}

catch(Exception e){

System.out.println("请全部输入整数!");

}

}

}

3. 求出100以内的素数,并将这些数在屏幕上5个一行地显示出来。public class SuShu{

public static void main(String args[]){

int k=0;

for(int n=2;n<=100;n++){

int y=1;

for(int i=2;i

if(n%i==0) {

y=0;

break;

}

if(y==1){

k++;

System.out.print(n+" ");

if(k%5==0)

System.out.print("\n");

}

}

}

}

4.从键盘输入一种物品的价格(范围在0.1~5.00元),假设用户付了一张5元纸币,请列出一种找零方案,是得纸币及硬币的个数最小。(书上102页,第6小题)

import java.util.Scanner;

public class YingBi {

public static void main(String[] args) {

System.out.println("请输入价格(五元以内):");

double d1=Keyboard.getDouble();

double d2=5-d1;

if(d2<0) System.out.println("请输入0至5的数字!");

else if (d2!=0) {

int y= (int) (d2/1);//一元

d2=d2%1;

int z=(int) (d2/0.5);//五角

int j=(int)(d2/0.1);//一角

d2=d2%0.1;

int i=(int)(d2/0.05);//五分

d2=d2%0.05;

int k=(int)((d2+0.005)/0.01);//一分,加0.005是为了四舍五入

d2=d2%0.01;

System.out.println(y+" 张一元");

System.out.println(z+" 张五角");

System.out.println(j+" 张一角");

System.out.println(i+" 张五分");

System.out.println(k+" 张一分");

}

}

}

import java.io.*;

public class Keyboard {

static BufferedReader inputStream=new BufferedReader(new InputStreamReader(System.in));

public static double getDouble(){

try{

return

(Double.valueOf(inputStream.readLine().trim()).doubleValue());

}catch(Exception e){

e.printStackTrace();

return 0;

}

}

public static String getString(){

try{

return (inputStream.readLine());

}catch(IOException e){

return "0";

}

}

}

5. 水仙花数是三位数,它的各位数字的立方和等于这个三位数本身,例如:371=33+73+13,371就是一个水仙花数。找出所有水仙花数。

public class ShuiXianHuaShu {

public static void main(String[] args) {

int x = 0; //定义水仙花数的个数

for(int i=100;i<=999;i++){

int b = i/100; //取得百位数

int s = i%100/10; //取得十位数

int g = i%10; //取得个位数

if(i==Math.pow(b, 3) + Math.pow(s, 3) + Math.pow(g, 3)){

x++; //每次符合水仙花数条件,则x+1;

System.out.print(i+" "); //输出符合条件的数

}

}System.out.println(); //换行

System.out.println("水仙花数总共有"+x+"个"); //输出水仙花数的总数}

}

三、习题

1.简述Java的异常处理机制。

java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。

2.系统定义的异常与用户定义的异常有什么不同?如何使用这两类异常?

系统定义的特定情况出现的问题,而此时用来对可能遇到的问题进行处理。用户定义的是自己觉得可能会出现问题时,需要处理的。这样避免程序中断或是出现未知错误。系统异常有两种一种是运行时异常,一种是普通异常,普通异常要求用户捕获或者抛出的,不补货或者抛出就会编译不通过。运行时异常编译可以通过,但是运行时才显露出来。

四、实验问题及原因

1.做第四题求硬币的时候忽略了精度的问题,导致了后面的分是8的时候,找零的时候是1分,所以加了0.005完成对数字的四舍五入

质量控制流程图

3.1.1 现场质量控制流程图 施工准备 项工程施工计划施工方案 工程质量控制指标 检验频率及方法 材料、机械、劳动力、现 场管理人员准备 分项开工报告 批准 分项开工批复单 每道工序施工 施工测量放线 报告 检验试验报告设计施工复核 不批准 分析原因,及时修复改正或返工 材料检查工艺流程检查测量检测试验检测质检工程师检查 自检结果 工序交接报告 不合格 抽样检查资料检查试验抽测测量检测工序检验记录检查 交工报告 不合格 合格 交工证书 现场质量控制流程图

3.1.2 质量管理组织机构流程图 指挥长 生产副指挥长 质量安全 总工程师 材 料 厂 科 程 工 安全质量 试 验 室 指挥部质管 工程师 质量安全 委员会办 指挥部质管 工程师 工 程 队 队 程 工 程 队 工 质量管理组织机构流程图

3.1.3 质量检验总流程图 原材料取样 不 合 标准试验格 试验结果评定、是否合格 试验报告 实施控制检验 成品抽样检验 试验结果评定、是否合格 合格不合格 作业结论分析原因 结束提出处理意见 质量检验总流程图

3.1.4 工程材料、构配件和设备质量控制流程图 承包单位填写 《工程材料/构配件/设备报验单》 方法: 承包单位另选不合格 监理工程师审核 合 格 1.审核证明资料 2.到厂家考察 3.进场材料检验 4.进行验证复试承包单位使用 工程材料、构配件和设备质量控制流程图

3.1.5 技术质量主要工作流程图 图纸会审 参加设计交底 编制施工组织设计工程师审批 工程物料确认 进场验收 技术复核 分部工程验收 技术交底工程定位交接 甲方、监理确认工程师确认 隐蔽验收质量验收 资料审核 甲方、乙方、设计联合验收 交付使用送交资料和竣工图 回访维修 技术质量主要工作流程图

linux进程控制 实验报告

长安大学 操作系统实验报告 实验课程:操作系统 实验名称:linux进程控制 学院:信息学院 专业:软件工程 学号:2406090106 姓名:刘建 日期:2012-5-09

一、实验目的 熟悉进程的创建过程,了解系统调用函数fork() 和execl()。 二、实验内容 1、阅读实例代码fork1,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握系统调用fork( )的用法,返回值的意义。 2、阅读实例代码fork2,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握在程序中运行一个操作系统命令和运行一个程序的方法。 3、修改fork2,使之能把运行的命令和程序作为参数传给fork2。 三、设计思想 1、程序框架

pid = -1 pid = 0pid> 0 2、用到的文件系统调用函数 fork() 和execl() 四、调试过程 1、测试数据设计 (1)fork1 命名程序1: 编写程序1:

编译程序1: 运行程序1: (2)fork2

编写程序2: 运行程序2:

(3)修改fork2 编写修改程序2: 修改后的运行结果: 2、测试结果分析 (1)对于程序1:因为系统调用fork()函数是一次调用两次返回值,而且先生成子进程还是父进程是不确定的,所以第一次执行生成子进程的时候返回的pid = 0,判断pid!=-1,所以输出了I’m the child. I’m the parent. 第二次,执行父进程的时候,返回的是子进程的进程号pid> 0,即pid的值仍然不为-1,所以又输出了一次I’m the child. I’m the parent。 (2)对于程序2:第一次调用fork()函数时,由于执行的是子进程还是父进程是随机的,所以第一次对父进程返回的是子进程的进程号(大于0),即pid> 0,所以输出I’m the parent. Program end.当第二次执行子进程时返回值是0,即pid = 0,所以输出I’m the child. 并调用了execl()函数,查看了指定路径中的文件。

自动控制原理实验报告

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

实验一 典型环节的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= ④ 微分环节

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

进程管理实验报告

进程的控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new

program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 3 .实验步骤 (1)gedit创建进程1.c (2)使用gcc 1.c -o 1编译并./1运行程序1.c #include #include #include #include void mian(){ int id; if(fork()==0) {printf(“child id is %d\n”,getpid()); } else if(fork()==0) {printf(“child2 id %d\n”,getpid()); } else {id=wait(); printf(“parent id is %d\n”,getpid()); }

自动控制实验报告1

东南大学自动控制实验室 实验报告 课程名称:自动控制原理 实验名称:闭环电压控制系统研究 院(系):仪器科学与工程专业:测控技术与仪器姓名:学号: 实验室:常州楼五楼实验组别:/ 同组人员:实验时间:2018/10/17 评定成绩:审阅教师: 实验三闭环电压控制系统研究

一、实验目的: (1)通过实例展示,认识自动控制系统的组成、功能。 (2)会正确实现闭环负反馈。 (3)通过开、闭环实验数据说明闭环控制效果。 二、实验原理: (1)利用各种实际物理装置(如电子装置、机械装置、化工装置等)在数学上的“相似性”,将各种实际物理装置从感兴趣的角度经过简化、并抽象成相同的数学形式。我们在设计控制系统时,不必研究每一种实际装置,而用几种“等价”的数学形式来表达、研究和设计。又由于人本身的自然属性,人对数学而言,不能直接感受它的自然物理属性,这给我们分析和设计带来了困难。所以,我们又用替代、模拟、仿真的形式把数学形式再变成“模拟实物”来研究。这样,就可以“秀才不出门,遍知天下事”。实际上,在后面的课程里,不同专业的学生将面对不同的实际物理对象,而“模拟实物”的实验方式可以做到举一反三,我们就是用下列“模拟实物”——电路系统,替代各种实际物理对象。 (2)自动控制的根本是闭环,尽管有的系统不能直接感受到它的闭环形式,如步进电机控制,专家系统等,从大局看,还是闭环。闭环控制可以带来想象不到的好处,本实验就是用开环和闭环在负载扰动下的实验数据,说明闭环控制效果。自动控制系统性能的优劣,其原因之一就是取决调节器的结构和算法的设计(本课程主要用串联调节、状态反馈),本实验为了简洁,采用单闭环、比例调节器K。通过实验证明:不同的K,对系性能产生不同的影响,以说明正确设计调节器算法的重要性。 (3)为了使实验有代表性,本实验采用三阶(高阶)系统。这样,当调节器K值过大时,控制系统会产生典型的现象——振荡。本实验也可以认为是一个真实的电压控制系统。 三、实验设备: THBDC-1实验平台 四、实验线路图: 五、实验步骤:

浙工大过程控制实验报告

浙工大过程控制实验报告 202103120423徐天宇过程控制系统实验报告 实验一:系统认识及对象特性测试 一实验目的 1了解实验装置结构和组成及组态软件的组成使用。 2 熟悉智能仪表的使用及实验装置和软件的操作。 3熟悉单容液位过程的数学模型及阶跃响应曲线的实验方法。 4学会有实际测的得单容液位过程的阶跃响应曲线,用相关的方法分别确定它们的参数,辨识过程的数学模型。二实验内容 1 熟悉用MCGS组态的智能仪表过程控制系统。 2 用阶跃响应曲线测定单容液位过程的数学模型。三实验设备 1 AE2000B型过程控制实验装置。 2 计算机,万用表各一台。 3 RS232-485转换器1只,串口线1根,实验连接线若干。四实验原理 如图1-1所示,设水箱的进水量为Q1,出水量为Q2,水箱的液面高度为h,出水阀V2固定于某一开度值。根据物料动态平衡的关系,求得: 在零初始条件下,对上式求拉氏变换,得:

式中,T为水箱的时间常数(注意:阀V2的开度大小会影响到水箱的时间常数),T=R2*C,K=R2为单容对象的放大倍数, R1、R2分别为V1、V2阀的液阻,C 为水箱的容量系数。 阶跃响应曲线法是指通过调节过程的调节阀,使过程的控制输入产生一个阶跃变化,将被控量随时间变化的阶跃响应曲线记录下来,再根据测试记录的响应曲线求取输入输出之间的数学模型。本实验中输入为电动调节阀的开度给定值OP,通过改变电动调节阀的开度给定单容过程以阶跃变化的信号,输出为上水箱的液位高度h。电动调节阀的开度op通过组态软件界面有计算机传给智能仪表,有智能仪表输出范围为:0~100%。水箱液位高度有由传感变送器检测转换为4~20mA的标准信号,在经过智能仪表将该信号上传到计算机的组态中,由组态直接换算成高度值,在计算机窗口中显示。因此,单容液位被控对象的传递函数,是包含了由执行结构到检测装置的所有液位单回路物理关系模型有上述机理建模可知,单容液位过程是带有时滞性的一阶惯性环节,电动调节阀的开度op,近似看成与流量Q1成正比,当电动调节阀的开度op为一常量作为阶跃信号时,该单容液位过程的阶跃响应为 需要说明的是表达式(2-3)是初始量为零的情况,如果是在一个稳定的过程下进行的阶跃响应,即输入量是在原来的基础上叠加上op的变化,则输出表达式是对应原来输出值得基础上的增

自动控制原理实验报告2

自动控制原理课程实验 2010-2011学年第一学期 02020801班 张驰2008300566

? 课本实验内容 6-26 热轧厂的主要工序是将炽热的钢坯轧成具有预定厚度和尺度的钢板,所得到的最终产品之一是宽为3300mm 、厚为180mm 的标准板材。他有两台主要的辊轧台:1号台与2号台。辊轧台上装有直径为508mm 的大型辊轧台,由4470km 大功率电机驱动,并通过大型液压缸来调节轧制宽度和力度。 热轧机的典型工作流程是:钢坯首先在熔炉中加热,加热后的钢坯通过1号台,被辊轧机轧制成具有预期宽度的钢坯,然后通过2号台,由辊轧机轧制成具有与其厚度的钢板,最后再由热整平设备加以整平成型。 热轧机系统控制的关键技术是通过调整热轧机的间隙来控制钢板的厚度。热轧机控制系统框图如下: 扰动)(s N )(s R (1)已知)54(/)(20++=s s s s s G ,而)(s G c 为具有两个相同实零点的PID 控制器。要求:选择PID 控制器的零点和增益,使闭环系统有两对对等的特征根; (2)考察(1)中得到的闭环系统,给出不考虑前置滤波器)(s G P 与配置适当)(s G P 时,系统的单位阶跃响应; (3)当)(s R =0,)(s N =1/s 时,计算系统对单位阶跃扰动的响应。 ? 求解过程 解:(1)已知 )54(/)(20++=s s s s s G )(s G P )(s G C )(0s G

选择 s z s K s G c /)()(2+= 当取K=4,Z=1.25时,有 s s s s s G c 4/25.610/)25.1(4)(2++=+= 系统开环传递函数 )54(/)25.1(4)()(2220+++=s s s s s G s G c 闭环传递函数:)25.61094/()5625.15.2(4))()(1/()()()(2 34200++++++=+=s s s s s s s G s G s G s G s c c φ (2) 当不考虑前置滤波器时,单位阶跃输入作用下的系统输出 )25.61094(/)5625.15.2(4)()()(2342++++++==s s s s s s s s R s s C φ 系统单位阶跃响应如图1中(1)中实线所示。 当考虑前置滤波器时,选 2)25.1/(5625.1)(+=s s G p 则系统在单位阶跃输入作用下的系统输出 )25.61094(/25.6)()()()(234++++==s s s s s s R s s G s C p φ 系统单位阶跃曲线如图1中(1)虚线所示。 (3)当)(s R =0,)(s N =1/s 时,扰动作用下的闭环传递函数 )25.61094/())()(1/()()(23400++++-=+-=s s s s s s G s G s G s c n φ 系统输出 )25.61094/(1)()()(2 34++++-==s s s s s N s s C n n φ 单位阶跃响应曲线如图1中(2)所示。 MATLAB 程序代码: MA TLAB 程序:exe626.m K=4;z=1.25; G0=tf(1,conv([1,0],[1,4,5])); Gc=tf(K*conv([1,z],[1,z]),[1,0]); Gp=tf(1.5625,conv([1,z],[1,z])); G1=feedback(Gc*G0,1); G2=series(Gp,G1); G3=-feedback(G0,Gc); t=0:0.01:10; [x,y]=step(G1,t);[x1,y1]=step(G2,t); figure(1);plot(t,x,'-',t,x1,':');grid

过程控制实验报告

《过程控制实验》 实验报告

第一章、过程控制实验装置的认识 一、过程控制实验的基本内容及概述 本次过程控制实验主要是对实验室的水箱水位进行控制。水箱液位控制系统是一个简单控制系统,所谓简单液位控制系统通常是指由一个被控对象、一个检测变送单元(检测元件及变送器)、以个控制器和一个执行器(控制阀)所组成的单闭环负反馈控制系统,也称为单回路控制系统。 简单控制系统有着共同的特征,它们均有四个基本环节组成,即被控对象、测量变送装置、控制器和执行器。 图1-1 水箱液位控制系统的原理框图 这是单回路水箱液位控制系统,单回路调节系统一般指在一个调节对象上用一个调节器来保持一个参数的恒定,而调节器只接受一个测量信号,其输出也只控制一个执行机构。本系统所要保持的恒定参数是液位的给定高度,即控制的任务是控制水箱液位等于给定值所要求的高度。 二、主要设备 1)水路装置的认识 过程控制实验用的水路装置图如下

图1-2 水路图 由水路装置图我们看到,装置主要有水箱,交流电动泵,热炉,管道,电动阀,电磁阀,流量计,液位传感器,温度传感器组成,可以构成一个完整的过程控制实验平台。从上图我们可以看出,装置主要分为两大部分,第一水路,管道,热炉,水箱等等物理对象,第二是传感器,执行机构等等的控制部分的装置。 实验装置具体介绍如下:

b)电气连接图 由电气装置的图我们可以看到,所有的电器连接都在这里,主要是一些传感器信号,电动驱动信号,用于电动装置的驱动。 见附件 c)操作面板图: 从操作面板上我们可以看到主要是由四个表,由P909构成,用于测量控制压力、流量、液位、温度的测量以及控制,PV代表反馈测量,外给定可以用于串级控制,OUT用于输出信号,以上接口均使用4-20mA标准 见附件 第二、三章、实验系统的认知(包括力控软件,P909,实验装置) a)力控软件的安装 首先使用光盘里的Setup.exe安装力控软件的主题部分,然后将IO Servers文件夹拷到力控软件的安装目录下,安装IO Servers驱动 然后打开力控软件,寻找到力控软件的目录,点击开发模式,然后找到COM设置的部分,如图

北邮-大三-操作系统-进程管理实验报告

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码如下: #include #include<> #include<> #include <> #include <> int main(int argc,char* argv[]) { pid_t pid1,pid2; pid1 = fork(); if(pid1<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid1 == 0){

printf("b\n"); } else{ pid2 = fork(); if(pid2<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid2 == 0){ printf("c\n"); } else{ printf("a\n"); sleep(2); exit(0); } } return 0; } 结果如下: 分析原因: pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!

自动控制原理实验报告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 +-=

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1);

自动控制实验报告一-控制系统的稳定性分析

实验一控制系统的稳定性分析 一、实验目的 1.观察系统的不稳定现象。 2.研究系统开环增益和时间常数对稳定性的影响。 二、实验仪器 1.自动控制系统实验箱一台 2.计算机一台 三、实验内容 系统模拟电路图如图 系统模拟电路图 其开环传递函数为: G(s)=10K/s(0.1s+1)(Ts+1) 式中K1=R3/R2,R2=100K,R3=0~500K;T=RC,R=100K,C=1f或C=0.1f两种情况。 四、实验步骤

1.连接被测量典型环节的模拟电路。电路的输入U1接A/D、D/A卡的DA1输出,电 路的输出U2接A/D、D/A卡的AD1输入,将纯积分电容两端连在模拟开关上。检查无误后接通电源。 2.启动计算机,在桌面双击图标[自动控制实验系统] 运行软件。 3.在实验项目的下拉列表中选择实验三[控制系统的稳定性分析] 5.取R3的值为50K,100K,200K,此时相应的K=10,K1=5,10,20。观察 不同R3值时显示区内的输出波形(既U2的波形),找到系统输出产生增幅振荡时相应的R3及K值。再把电阻R3由大至小变化,即R3=200k,100k,50k,观察不同R3值时显示区内的输出波形, 找出系统输出产生等幅振荡变化的R3及K 值,并观察U2的输出波形。 五、实验数据 1模拟电路图

2.画出系统增幅或减幅振荡的波形图。C=1uf时: R3=50K K=5: R3=100K K=10

R3=200K K=20: 等幅振荡:R3=220k:

增幅振荡:R3=220k: R3=260k:

C=0.1uf时:R3=50k:

自控第二次实验报告

成绩 实验报告

实验二频率特性测试与频域分析法建模实验 实验时间第12周周三上午实验编号 同组同学无 一、实验目的 1.掌握频率特性的测试原理及方法。 2.学习根据所测定出的系统的频率特性,确定系统传递函数的方法。 二、实验内容 1.测定给定环节的频率特性。 系统模拟电路图及系统结构图分别如图 2.2.1及图 2.2.2。 取Ω===M R R R 10.432,F C C μ121==,Ω==k 101R R 系统传递函数为: 1=K 时,取Ω=K R 10,则10 1010 )(2++= s s s G 2=K 时,取Ω=K R 20,则10 1020 )(2 ++=s s s G 若正弦输入信号为)sin()(1t A t Ui ω=,则当输出达到稳态时,其输出信号为)sin()(20?ω+=t A t U 。改变输入信号频率π ω 2= f 值,便可测得二组2 1 A A 和ψ随f(或ω)变化的 数值,这个变化规律就是系统的幅频特性和相频特性。 2.根据测定的系统频率特性,确定系统的传递函数。

三、实验原理 1.幅频特性即测量输入与输出信号幅值A 1及A 2,然后计算其比值A 2/A 1。 2.实验采用“李萨如图形”法进行相频特性的测试。以下简单介绍一下这种测试方法的原理。 设有两个正弦信号: )sin()(t X t X m ωω=) sin()(?ωω+=t Y t Y m 若以X (ωt )为横轴,Y (ωt )为纵轴,而以ω作为参变量,则随着ωt 的变化, X (ωt )和Y (ωt )所确定的点的轨迹,将在X -Y 平面上描绘出一条封闭的曲线。这个图形就是物理学上所称的“李萨如图形”,如图2.2.3所示。 图2.2.3李沙育图形 3.相位差角的求法: 对于)sin()(t X t X m ωω=及) sin()(?ωω+=t Y t Y m 当0=t ω时,有0)0(=X ;)sin()0(?m Y Y =即)/)0(arcsin(m Y Y =?,2/0π?≤≤时成立 4.记录实验结果数据填写表2.2.1。 表2.2.1实验结果数据表 编号 1 2 3 … 10 ω A 2/A 1Y 0/Y m

操作系统进程控制实验报告

操作系统进程控制实验报告 硬件环境:处理器:Intel(R) Core(TM) i5-3210M CPU @2.50GHz 2.50GHz 安装内存:4.00GB 系统类型:64位操作系统 软件环境:Linux系统 一、实验目的 加深对于进程并发执行概念的理解。实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。 二、实验步骤 (1)分析实例实验 (2)进行独立实验 (3)思考并完成实验报告 实验截图:

思考: 说明它们反映出操作系统教材中进程及处理机管理一节讲解的进程的哪些特征和功能?在真实的操作系统中它是怎样实现和反映出教材中讲解的进程的生命期、进程的实体和进程状态控制的。你对于进程概念和并发概念有哪些新的理解和认识?子进程是如何创建和执行新程序的?信号的机理是什么?怎样利用信号实现进程控制?根据实验程序、调试过程和结果分析写出实验报告。 1.进程的概念:进程不仅是一段程序代码,还包括当前活动(通过程序计数器和寄存器中的内容来表示),另外,进程还包括进程堆栈段,和数据段等。 2.并发概念:是指进程之间交替并发执行 3.进程通过系统调用fork()函数创建子进程,子进程由唯一的pid

值标示,pid通常是一个整数值。通过fork创建的子进程实际上是父进程的克隆体,通过复制原来进程的地址空间而成,父子进程同时执行fork之后的程序。但是父子进程的pid值不同,可以通过对pid的判断,使父子进程执行不同的程序。子进程如果想执行不同的程序,需要系统调用exec()函数装入新的程序执行。 4.信号的机理:信号是用来通知进程某个特定的事件已经发生。信号是由特定的事件产生,信号必须要发送到进程,一旦发送,进程必须得到处理。信号可以可以有系统默认处理也可以用户自定义处理。 5.如何通过信号控制程序:每个进程都有信号机制检验是否有信号到达,如果有,捕获信号后,根据系统默认处理或者用户自定义的防方法处理信号,当信号处理完后,在返回原来的程序继续执行。 代码: pctl.c: #include "pctl.h" int main(int argc, char *argv[]) { int m=2; int i; int seconds=3; int pid1; int pid2; //存放子进程号 int status1; int status2; //存放子进程返回状态 char *args1[] = {"/bin/ls","-all",NULL}; //子进程1要缺省执行的命令 char *args2[] = {"/bin/ps","-l",NULL}; //子进程2要缺省执行的命令 signal(SIGINT,(sighandler_t)sigcat); //注册一个本进程处理键盘中断的函数 while(m!=0)

自动控制实验报告.

成绩 北京航空航天大学 自动控制原理实验报告 学院机械工程及自动化学 专业方向工业工程与制造 班级110715 学号11071113 学生姓名吕龙 指导教师 自动控制与测试教学实验中心

实验一一、二阶系统的电子模拟及时域响应的动态测试 实验时间2013.10.30 实验编号同组同学无 一、实验目的 1.了解一、二阶系统阶跃响应及其性能指标与系统参数之间的关系。 2.学习在电子模拟机上建立典型环节系统模型的方法。 3.学习阶跃响应的测试方法。 二、实验内容 1.建立一阶系统的电子模型,观测并记录不同时间常数T时的跃响应曲线,测定其过渡过程时间Ts。 2.建立二阶系统的电子模型,观测并记录不同阻尼比ζ时的跃响应曲线,测定其超调量σ%及过渡过程时间Ts。 三、实验原理 1.一阶系统: 系统传递函数为: 模拟运算电路如图1-1所示: 图1-1 由图得: 在实验当中始终取, 则, 取不同的时间常数T分别为: 0.25、 0.5、1。 记录不同时间常数下阶跃响应曲线,测量纪录其过渡过程时 ts。(取误差带)2.二阶系统: 其传递函数为:

令,则系统结构如图1-2所示: 图1-2 根据结构图,建立的二阶系统模拟线路如图1-3所示: 图1-3 取,,则及 取不同的值, , ,观察并记录阶跃响应曲线,测量超调量σ%(取误差带),计算过渡过程时间Ts。 四、实验设备 1.HHMN-1型电子模拟机一台。 2.PC 机一台。 3.数字式万用表一块。 4.导线若干。 五、实验步骤 1. 熟悉HHMN-1 型电子模拟机的使用方法,将各运算放大器接成比例器,通电调零。 2. 断开电源,按照实验说明书上的条件和要求,计算电阻和电容的取值,按照模拟线路图搭接线路,不用的运算放大器接成比例器。 3. 将与系统输入端连接,将与系统输出端连接。线路接好后, 经教师检查后再通电。 4.运行软件,分别获得理论和实际仿真的曲线。 5. 观察实验结果,记录实验数据,绘制实验结果图形,填写实验数据表格,完成

过程控制实验报告

过程控制系统Matlab/Simulink仿真实验实验一过程控制系统建模 (1) 实验二PID控制 (10) 实验三串级控制 (27) 实验四比值控制 (35) 实验五解耦控制系统 (40)

实验一 过程控制系统建模 作业题目一: 常见的工业过程动态特性的类型有哪几种?通常的模型都有哪些?在Simulink 中建立相应模型,并求单位阶跃响应曲线。 答:常见的工业过程动态特性的类型有:无自平衡能力的单容对象特性、有自平衡能力的单容对象特性、有相互影响的多容对象的动态特性、无相互影响的多容对象的动态特性等。通常的模型有一阶惯性模型,二阶模型等。 (1) 无自平衡能力的单容对象特性: 两个无自衡单容过程的模型分别为s s G 5.01)(=和s e s s G 55.01)(-=,在Simulink 中建立模型如下

(2) 有自平衡能力的单容对象特性: 两个自衡单容过程的模型分别为122)(+=s s G 和s e s s G 51 22 )(-+=,在Simulink 中建立模型如下:

(3) 有相互影响的多容对象的动态特性: 有相互影响的多容过程的模型为1 21 )(2 2++=Ts s T s G ξ,当参数1=T ,2.1 ,1 ,3.0 ,0=ξ时,在Simulink 中建立模型如下:

(4) 无相互影响的多容对象的动态特性: 两个无相互影响的多容过程的模型为) 1)(12(1 )(++= s s s G (多容有自衡能力的对象)和 ) 12(1 )(+= s s s G (多容无自衡能力的对象),在Simulink 中建立模型如下

自动控制原理实验报告

自动控制原理 实验报告 实验一典型系统的时域响应和稳定性分析 (2) 一、实验目的 (3) 二、实验原理及内容 (3) 三、实验现象分析 (5) 方法一:matlab程序 (5) 方法二:multism仿真 (12)

方法三:simulink仿真 (17) 实验二线性系统的根轨迹分析 (21) 一、确定图3系统的根轨迹的全部特征点和特征线,并绘出根轨迹 (21) 二、根据根轨迹图分析系统的闭环稳定性 (22) 三、如何通过改造根轨迹来改善系统的品质? (25) 实验三线性系统的频率响应分析 (33) 一、绘制图1. 图3系统的奈氏图和伯德图 (33) 二、分别根据奈氏图和伯德图分析系统的稳定性 (37) 三、在图4中,任取一可使系统稳定的R值,通过实验法得到对应的伯德图,并据此导 出系统的传递函数 (38) 实验四、磁盘驱动器的读取控制 (41) 一、实验原理 (41) 二、实验内容及步骤 (41) (一)系统的阶跃响应 (41) (二) 系统动态响应、稳态误差以及扰动能力讨论 (45) 1、动态响应 (46) 2、稳态误差和扰动能力 (48) (三)引入速度传感器 (51) 1. 未加速度传感器时系统性能分析 (51) 2、加入速度传感器后的系统性能分析 (59) 五、实验总结 (64) 实验一典型系统的时域响应和稳定性分 析

一、 实验目的 1.研究二阶系统的特征参量(ξ、ωn )对过渡过程的影响。 2.研究二阶对象的三种阻尼比下的响应曲线及系统的稳定性。 3.熟悉Routh 判据,用Routh 判据对三阶系统进行稳定性分析。 二、 实验原理及内容 1.典型的二阶系统稳定性分析 (1) 结构框图:见图1 图1 (2) 对应的模拟电路图 图2 (3) 理论分析 导出系统开环传递函数,开环增益0 1 T K K = 。 (4) 实验内容 先算出临界阻尼、欠阻尼、过阻尼时电阻R 的理论值,再将理论值应用于模拟电路中,观察二阶系统的动态性能及稳定性,应与理论分析基本吻合。在此实验中(图2), s 1T 0=, s T 2.01=,R 200 K 1= R 200 K =?

Linux进程管理-实验报告

《Linux 操作系统设计实践》实验一:进程管理 实验目的: (1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)学习通过进程执行新的目标程序的方法。 (4)了解Linux 系统中进程信号处理的基本原理。 实验环境:Red Hat Linux 实验内容:(1)进程的创建 编写一段程序,使用系统调用fork()创建两个子进程,当此进程运行时,在系统中有一个父进程和两个子进程活动,让每一个进 程在屏幕上显示一个字符,父进程显示字符“a”;子进程分别显示字符“b”和字符“c”,试观察记录屏幕上的显示结果,并分析原 因。 程序代码: #include int main() { int p1 ,p2 ; while((p1=fork())==-1); if(p1==0) putchar('b'); else { while((p2=fork())==-1); if(p2==0) putchar('c'); else putchar('a');

return 0; } 运行结果:bca 分析:第一个while里调用fork() 函数一次,返回两次。子进程P1得到的返回值是0,父进程得到的返回值是新子进程的进程ID(正整数);接下来父进程和子进程P1两个分支运行,判断P1==0,子进程P1符合条件,输出“b”;接下来else里面的while里再调用fork()函数一次,子进程P2得到的返回值是0,父进程得到的返回值是新子进程的进程ID(正整数);接下来判断P2==0,子进程P2符合条件,输出“c”,接下来父进程输出“a”,程序结束。 (2)进程的控制 ①修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。 程序代码: #include int main() { int p1,p2; while((p1=fork())==-1); if(p1==0) printf("Child1 is running!\n"); else { while((p2=fork())==-1); if(p2==0) printf("Child2 is running!\n"); else printf("Father is running!\n"); } return 0;

相关文档
最新文档