进程的创建控制-实验报告

进程的创建控制-实验报告
进程的创建控制-实验报告

内蒙古师大计算机与信息工程学院《操作系统》课程实验报告

1

图2

图3

操作系统实验报告--进程的创建

操作系统原理实验报告(一) 进程的创建 2016年11月27日星期日

实验内容: 进程的创建 编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。 源代码: #include #include #include int main(){ printf("\n梦想起航的地方:\n"); pid_t fpid1,fpid2;/*fpid表示fork()函数的返回值*/ printf("得到父进程的ID:%d\n",getpid()); printf("\n开始调用fork函数:\n如果调用成功应该会生成一个子进程1\n返回值:若成功调用一次则返回两个值,\n子进程返回0,父进程返回子进程标记(ID);\n 否则,出错返回-1。\n"); fpid1=fork(); fpid2=fork(); if(fpid1<0)exit(0); else if(fpid1>0) printf("\n这个是父进程打印:a\n"); else if(fpid1==0) printf("\n这个是子进程1的打印:b\n"); if(fpid2<0)exit(0); else if(fpid2>0) printf("\n这个还是父进程'打印:a\n"); else if(fpid2==0); printf("\n这个是子进程2的打印:c\n"); }

燕山大学控制工程基础实验报告(带数据)

自动控制理论实验报告 实验一 典型环节的时域响应 院系: 班级: 学号: 姓名:

实验一 典型环节的时域响应 一、 实验目的 1.掌握典型环节模拟电路的构成方法,传递函数及输出时域函数的表达式。 2.熟悉各种典型环节的阶跃响应曲线。 3.了解各项参数变化对典型环节动态特性的影响。 二、 实验设备 PC 机一台,TD-ACC+教学实验系统一套。 三、 实验步骤 1、按图1-2比例环节的模拟电路图将线接好。检查无误后开启设备电源。 注:图中运算放大器的正相输入端已经对地接了100k 电阻。不需再接。 2、将信号源单元的“ST ”端插针与“S ”端插针用“短路块”接好。将信号形式开关设为“方波”档,分别调节调幅和调频电位器,使得“OUT ”端输出的方波幅值为1V ,周期为10s 左右。 3、将方波信号加至比例环节的输入端R(t), 用示波器的“CH1”和“CH2”表笔分别监测模拟电路的输入R(t)端和输出C(t)端。记录实验波形及结果。 4、用同样的方法分别得出积分环节、比例积分环节、惯性环节对阶跃信号的实际响应曲线。 5、再将各环节实验数据改为如下: 比例环节:;,k R k R 20020010== 积分环节:;,u C k R 22000== 比例环节:;,,u C k R k R 220010010=== 惯性环节:。,u C k R R 220010=== 用同样的步骤方法重复一遍。 四、 实验原理、内容、记录曲线及分析 下面列出了各典型环节的结构框图、传递函数、阶跃响应、模拟电路、记录曲线及理论分析。 1.比例环节 (1) 结构框图: 图1-1 比例环节的结构框图 (2) 传递函数: K S R S C =) () ( K R(S) C(S)

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()函数,查看了指定路径中的文件。

windows进程管理实验报告

实验报告 课程名称:操作系统 实验项目:windows进程管理 姓名: 专业:计算机科学与技术 班级: 学号:

计算机科学与技术学院 计算机系 2019 年 4 月 23 日

实验项目名称: windows进程管理 一、实验目的 1. 学习windows系统提供的线程创建、线程撤销、线程同步等系统调用; 2. 利用C++实现线程创建、线程撤销、线程同步程序; 3. 完成思考、设计与练习。 二、实验用设备仪器及材料 1. Windows 7或10, VS2010及以上版本。 三、实验内容 1 线程创建与撤销 写一个windows控制台程序(需要MFC),创建子线程,显示Hello, This is a Thread. 然后撤销该线程。 相关系统调用: 线程创建: CreateThread() 线程撤销: ExitThread() 线程终止: ExitThread(0) 线程挂起: Sleep() 关闭句柄: CloseHandle() 参考代码: ; } 运行结果如图所示。 完成以下设计题目: 1. 向线程对应的函数传递参数,如字符串“hello world!”,在线程中显示。 2. 如何创建3个线程A, B, C,并建立先后序执行关系A→B→C。

实验内容2 线程同步 完成父线程和子线程的同步。父线程创建子线程后进入阻塞状态,子线程运行完毕后再唤醒。 相关系统调用: 等待对象 WaitForSingleObject(), WaitForMultipleObjects(); 信号量对象 CreateSemaphore(), OpenSemaphore(), ReleaseSemaphore(); HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes _In_ LONG lInitialCount, _In_ LONG lMaximumCount, _In_opt_ LPCTSTR lpName ); 第一个参数:安全属性,如果为NULL则是默认安全属性 第二个参数:信号量的初始值,要>=0且<=第三个参数 第三个参数:信号量的最大值 第四个参数:信号量的名称 返回值:指向信号量的句柄,如果创建的信号量和已有的信号量重名,那么返回已经存在的信号量句柄参考代码: n"); rc=ReleaseSemaphore(hHandle1,1,NULL); err=GetLastError(); printf("Release Semaphore err=%d\n",err); if(rc==0) printf("Semaphore Release Fail.\n"); else printf("Semaphore Release Success. rc=%d\n",rc); } 编译运行,结果如图所示。

操作系统进程创建及通信实验报告材料

武汉工程大学计算机科学与工程学院 《操作系统》实验报告[Ⅰ]

一、实验目的 创建进程,实现进程消息通信和共享内存通信,了解进程的创建、退出和获取进程信。了解什么是映像文件、管道通信及其作用,掌握通过内存映像文件和管道技术实现进程通信。 二、实验内容 本例用三种方法实现进程通信,仅用于示例目的,没有进行功能优化。 1、创建进程A和B后,在进程A中输入一些字符,点“利用 SendMessage发送消息”按钮可将消息发到进程B。 2、在进程A中输入一些字符,点“写数据到内存映像文件”按钮, 然后在进程B中点“从内存映像文件读数据”按钮可收到消息。其中在点“写数据到内存映像文件”时,要求创建映像文件,B进程在印象文件中读取数据。 3、先在进程B中点“创建管道并接收数据”按钮,然后在进程A 中输入一些字符,点“写数据到管道文件”按钮可将消息发到进程B。管道是连接读/写进程使他们进行通信的一个共享文件,目的是更好地实现进程间的通信。 三、实验思想 这次试验最主要的内容和核心思想就是学会创建进程并实现进程间的简单通信、创建映像文件和创建管道文件来通信,后两者是实现进程通信的高级通信机制中的两种。. 创建一个程序A和程序B,其中程序A和B各有一个主窗体,A主窗体上要求可以实现创建进程B(即调用函数B)、结束进程B、关闭进程A、向进程B 发送数据、创建映像文件、创建管道文件等功能,进程B要求有从映像文件读取数据、创建管道并接收数据、结束进程B功能。最终让A、B进程相互通信。

四、设计分析: 首先设得设计A、B两个程序的操作界面,然后编写各个功能模块。对于A 程序窗体,在“利用SendMessage发送消息”按钮的消息响应函数中,主要是利用Windows API函数CWnd::FindWindow来找到接收消息的窗体,即进程B,找到进程B后,利用这个函数返回的窗体指针的SendMessage函数来发送消息。在“写数据到内存印象文件”按钮的消息响应函数中,主要是利用函数CreateFileMapping来创建一个印象文件,这个函数返回的是这个印象文件的句柄,然后将这个句柄和要发送的消息字符串传递到函数sprintf中,就可以所要发送的消息写入印象文件,在B程序窗体中有个“从内存印象文件读数据”按钮,在这个按钮的消息响应函数中读取父进程所创建的印象文件中的数据就可以实现通信了。在B程序窗体按钮“写数据到管道文件”的消息响应函数中,不能直接将要发送的消息发送到管道文件,因为管道必须先由子进程通过函数CreateNamedPipe创建,只有待子进程创建好管道后父进程才能根据管道创建管道文件,将消息写入管道文件并及时发送给子进程。而且这个管道只能使用一次,即每次发送完消息后那个管道不能在使用了,必须再由子进程创建一个管道,A 进程才能再次创建管道文件并向其中写入消息。这个程序也不一定要MFC实现,还可以用其他的技术和语言实现,比如说Java、VB等,外表构架可以不一样,但核心技术都是一样的,只是不同的调用形式和调用方法,比如说在VB中,实现进程间的一般通信就是使用动态数据交换DDE,实现起来就比较简单,但是要创建映像文件和管道文件就比较繁琐,可以根据不同的需求采用不同的语言。 五、程序部分源代码: 1.“利用SendMessage发送消息”按钮中的主要代码 //找到接收消息的窗口(窗口名为Receiver) CString str="进程B"; CWnd *pWnd=CWnd::FindWindow(NULL,str); if(pWnd) { COPYDATASTRUCT buf; char * s=new char[m_Msg1.GetLength()]; //m_Msg1为CString类型的变量 s=m_Msg1.GetBuffer(0);

南理工机械院控制工程基础实验报告

实验1模拟控制系统在阶跃响应下的特性实验 一、实验目的 根据等效仿真原理,利用线性集成运算放大器及分立元件构成电子模拟器, 以干电池作为输入信号,研究控制系统的阶跃时间响应。 二、实验内容 研究一阶与二阶系统结构参数的改变,对系统阶跃时间响应的影响。 三、实验结果及理论分析 1.一阶系统阶跃响应 a. 电容值1uF,阶跃响应波形: b. 电容值2.2uF,阶跃响应波形:

c. 电容值4.4uF,阶跃响应波形: 2?—阶系统阶跃响应数据表 U r= -2.87V R°=505k? R i=500k? R2=496k 其中

T = R2C U c C:)=「(R/R2)U r 误差原因分析: ①电阻值及电容值测量有误差; ②干电池电压测量有误差; ③在示波器上读数时产生误差; ④元器件引脚或者面包板老化,导致电阻变大; ⑤电池内阻的影响输入电阻大小。 ⑥在C=4.4uF的实验中,受硬件限制,读数误差较大3?二阶系统阶跃响应 a.阻尼比为0.1,阶跃响应波形: b.阻尼比为0.5,阶跃响应波形:

4.二阶系统阶跃响应数据表 E R w ( ?) 峰值时间 U o (t p ) 调整时间 稳态终值 超调(%) 震荡次数 C. d. 阻尼比为0.7,阶跃响应波形: 阻尼比为1.0,阶跃响应波形: CHI 反相 带宽限制 伏/格

四、回答问题 1.为什么要在二阶模拟系统中 设置开关K1和K2 ,而且必须 同时动作? 答:K1的作用是用来产生阶跃信号,撤除输入信后,K2则是构成了C2的 放电回路。当K1 一旦闭合(有阶跃信号输入),为使C2不被短路所以K2必须断开,否则系统传递函数不是理论计算的二阶系统。而K1断开后,此时要让 C2尽快放电防止烧坏电路,所以K2要立即闭合。 2.为什么要在二阶模拟系统中设置 F3运算放大器? 答:反相电压跟随器。保证在不影响输入和输出阻抗的情况下将输出电压传递到输入端,作为负反馈。 实验2模拟控制系统的校正实验 一、实验目的 了解校正在控制系统中的作用

进程管理实验报告

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

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

操作系统实验报告(进程的创建)(DOC)

实验题目进程的创建小组合作否姓名班级学号 一、实验目的 1、了解进程的创建。 2、了解进程间的调用以及实现。 3、分析进程竞争资源的现象,学习解决互斥的方法。 4、加深对进程概念的理解,认识并发执行的本质。 二.实验环境 Windows 系统的计算机一台,安装了Linux虚拟机 三、实验内容与步骤 1、fork()系统调用的使用例子 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid;int loc=3; printf("before fork();glod=%d,loc=%d.\n",glob,loc); if((pid=fork())<0) { printf("fork() error. \n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes glob and loc: \n"); } else

wait(0); printf("parent process doesn't change the glob and loc:\n"); printf("glob=%d,loc=%d\n",glob,loc); exit(0); } 运行结果: 2、理解vofork()调用: 程序代码: #include #include #include int glob=3; int main(void) { pid_t pid; int loc=3; if((pid=vfork())<0) { printf("vfork() error\n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes the glob and loc\n"); exit(0); } else printf ("parent process doesn't change the glob and loc\n"); printf("glob=%d,val=%d\n",glob,loc);

清华大学精仪系--控制工程基础--实验内容与实验报告

实验内容 (一)直流电机双环调速系统实验,此时必须松开连轴节!不带动工作台! 1. 测试电流环特性 ,由于外接霍尔传感器只有一套,有五套PWM 放大器有电流输出(接成跟随器方式,其电流采样输出为25芯D 型插座的17(模拟地),19脚,但模拟地是电流环的模拟地,不是实验箱运算放大器OP07的地!所以,只能用万用表量测。多数同学可用手堵转,给定微小的输入电压(小于±50mV )加入到电流环输入端,再加大就必须松开手,观察电机转速能否控制?为什么?如果要测试电流环静态特性,必须用台钳夹住电机轴,保证电机堵转。所以此项实验由教师按图22进行,这里只给出以下数据: 图 22 电流环静态特性实验接线图 (1)霍尔传感器的校准 利用直流稳压电源和电流表校准霍尔传感器,该 传感器为LEM-25,当原边为1匝时,量程为25A ,而原边采用5匝时, 量程为5A ;现在按后者的接法实验,M R 约500Ω。 (2)然后利用它来测试PWM 功率放大器的静态传递系数。电流环的静态特性如表2所示。注意电机是堵转的!

1V;得到通频带400Hz. 2.根据给定参数,利用MATLAB设计速度环的校正装置参数,画出校正前后的Bode图调,到实验室自己接线,教师检查无误后,可以通电调试;首先,正确接线保证系统处于负反馈,如果正反馈会产生什么现象?如何通过开环特性判断测速反馈是负反馈?对此有正确定答案后方能够开始实验。 (1)在1 β和β=0.4~0.5时分别调试校正装置的参数,使其单位阶跃输入的 = 响应曲线超调量最小,峰值时间最短,并记录阶跃响应曲线的特征值; 能够用A/D卡把数据采集到计算机中更好! (2)断开电源,记录最佳的校正装置参数; (3)测试速度环静态特性,为加快测试速度,可直接测试输入电压和测速机电压的关系;在转速低的情况下用手动阻止电机的转动,是否会影响转速? 为什么?分析速度环的机械特性(转速与负载力矩的关系曲线称为机械特 性),从而说明系统的刚度。 (4)有条件的小组可测试速度环频率特性(只测量幅频特性)。 (二)电压-位置伺服系统实验 开始,也必须脱开电机与工作台的连轴节!直到位置环调试好后,再把连轴节连接好! 1.断开使能,手动电机转动,检查电子电位计工作的正确性! 2.让位置环开环,利用调速系统,观察电子电位计在大范围工作的正确性,可利用示波器或万用表测试电位计的输出。 3.位置环要使用实验箱的头2个运算放大器,所以必须注意注意位置反馈的极性;为保证位置反馈是负反馈,必须通过位置系统开环来判断,这时位置调节器只利用比例放大器,如果发现目前的接线是正反馈后,怎么接线? 4.将位置环的位置反馈正确接到反馈输入端,利用给定指令电位计,移动它,使电机位置按要求转动。正确后,即可把连轴节连接好,连接连轴节时用专用内六角扳手。这时应该断电! 5.按设计的校正装置连接好,再上电。测试具有比例放大器和近似比例积分调节器时的阶跃响应曲线,并记录之; 6.测试输入电压-位置的传递特性曲线; 7.用手轮加小力矩估计系统的(电弹簧)刚度。 三、实验报告要求 (一)速度环实验 1.对速度环建模,画出速度环方块图,传递函数图 2.画出校正前后的Bode图,设计校正装置及其参数; 3.写出实验原始数据,整理出静态曲线和动态数据; 4.从理论和实际的结合上,分析速度环的特点,并写出实验的收获和改进意见; (二)位置环实验 1.对位置环建模,画出位置环方块图,传递函数图;

进程管理实验报告

进程的控制 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()); }

操作系统实验报告(进程的创建)

wait(0); printf("parent process doesn't change the glob and loc:\n"); printf("glob=%d,loc=%d\n",glob,loc); exit(0); } 运行结果: 2、理解vofork()调用: 程序代码: #include<> #include #include<> int glob=3; int main(void) { pid_t pid; int loc=3; if((pid=vfork())<0) { printf("vfork() error\n"); exit(0); } else if(pid==0) { glob++; loc--; printf("child process changes the glob and loc\n"); exit(0); } else printf ("parent process doesn't change the glob and loc\n"); printf("glob=%d,val=%d\n",glob,loc);

} 运行结果: 3、给进程指定一个新的运行程序的函数exec(). 程序代码: 代码: #include<> int main(int argc,char * argv[]) { int n; char * * ptr; extern char * * environ; for(n=0;n #include #include<> #include char * env_list[]={"USER=root","PATH=/root/",NULL}; int main() { pid_t pid; if((pid=fork())<0) { printf("fork error!\n"); exit(0); } else if(pid==0) { if(execle("/root/print1","print1","arg1","arg2",(char *)0,env_list)<0) printf("execle error!\n");

南京理工大学控制工程基础实验报告

《控制工程基础》实验报告 姓名欧宇涵 914000720206 周竹青 914000720215 学院教育实验学院 指导老师蔡晨晓 南京理工大学自动化学院 2017年1月

实验1:典型环节的模拟研究 一、实验目的与要求: 1、学习构建典型环节的模拟电路; 2、研究阻、容参数对典型环节阶跃响应的影响; 3、学习典型环节阶跃响应的测量方法,并计算其典型环节的传递函数。 二、实验内容: 完成比例环节、积分环节、比例积分环节、惯性环节的电路模拟实验,并研究参数变化对其阶跃响应特性的影响。 三、实验步骤与方法 (1)比例环节 图1-1 比例环节模拟电路图 比例环节的传递函数为:K s U s U i O =)()(,其中1 2R R K =,参数取R 2=200K ,R 1=100K 。 步骤: 1、连接好实验台,按上图接好线。 2、调节阶跃信号幅值(用万用表测),此处以1V 为例。调节完成后恢复初始。 3、Ui 接阶跃信号、Uo 接IN 采集信号。 4、打开上端软件,设置采集速率为“1800uS”,取消“自动采集”选项。 5、点击上端软件“开始”按键,随后向上拨动阶跃信号开关,采集数据如下图。 图1-2 比例环节阶跃响应

(2)积分环节 图1-3 积分环节模拟电路图 积分环节的传递函数为: S T V V I I O 1 -=,其中T I =RC ,参数取R=100K ,C=0.1μf 。 步骤:同比例环节,采集数据如下图。 图1-4 积分环节阶跃响应 (3)微分环节 图1-5 微分环节模拟电路图 200K R V I Vo C 2C R 1 V I Vo 200K

浙工大过程控制实验报告

浙工大过程控制实验报告 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的变化,则输出表达式是对应原来输出值得基础上的增

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

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 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); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

南理工 机械院 控制工程基础实验报告

页眉 实验1 模拟控制系统在阶跃响应下的特性实验一、实验目的 根据等效仿真原理,利用线性集成运算放大器及分立元件构成电子模拟器,以干电池作为输入信号,研究控制系统的阶跃时间响应。 二、实验内容 研究一阶与二阶系统结构参数的改变,对系统阶跃时间响应的影响。 三、实验结果及理论分析 1.一阶系统阶跃响应 a.电容值1uF,阶跃响应波形: b.电容值2.2uF,阶跃响应波形: 页脚 页眉

,阶跃响应波形:电容值c.4.4uF 阶系统阶跃响应数据表2.一稳态终值U(∞)(V)时间常数T(s) 电容值c(uF)理论值实际值实际值理论值0.50 2.87 1.0 0.51 2.90 1.07 2.90 2.2 2.87 1.02 2.06 2.90 2.87 4.4 2.24 元器件实测参数=505kU= -2.87V R? R=496k? =500kR?2o1r其中 T?RC2U(?)??(R/R)U rc21页脚 页眉 误差原因分析: ①电阻值及电容值测量有误差;

②干电池电压测量有误差; ③在示波器上读数时产生误差; ④元器件引脚或者面包板老化,导致电阻变大; ⑤电池内阻的影响输入电阻大小。 ⑥在C=4.4uF的实验中,受硬件限制,读数误差较大。 3.二阶系统阶跃响应 a.阻尼比为0.1,阶跃响应波形: b.阻尼比为0.5,阶跃响应波形: 页脚 页眉 ,阶跃响应波形:0.7c.阻尼比为

,阶跃响应波形:阻尼比为1.0d. 阶系统阶跃响应数据表4.二ξR(?)峰值时间U(t) 调整时间稳态终值超调(%)震荡次数pow M()t)t(s V()(s UV)N psps6 62.7 2.8 0.3 0.1 2.95 454k 4.8 1 0.5 0.5 3.3 52.9k 2.95 11.9 0.4 1 0.7 0.3 0.4 24.6k 3.0 2.7 2.92 1.0 1.0 2.98 1.0 2.97k 2.98 页脚 页眉 四、回答问题

过程控制实验报告

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

第一章、过程控制实验装置的认识 一、过程控制实验的基本内容及概述 本次过程控制实验主要是对实验室的水箱水位进行控制。水箱液位控制系统是一个简单控制系统,所谓简单液位控制系统通常是指由一个被控对象、一个检测变送单元(检测元件及变送器)、以个控制器和一个执行器(控制阀)所组成的单闭环负反馈控制系统,也称为单回路控制系统。 简单控制系统有着共同的特征,它们均有四个基本环节组成,即被控对象、测量变送装置、控制器和执行器。 图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的sched.h源码文件,加深对进程管理概念的理解; (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"); } 1/11

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(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!因此,这三个进程哪个先执行,哪个后执行,完全取决于操作系统的调度,没有固定的顺序。 (2)进程的控制 修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 将父进程的输出改为father process completed 2/11

进程创建实验报告

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

四、调试过程 1、测试数据设计(1)fork1 命名程序1: 编写程序1: 编译程序1:

(2)fork2 编写程序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()函数,查看了指定路径中的文件。(3)对于修改后的程序2:改变了系统调用execl()中参数的文件路径和可执行文件名,即可在程序中执行另一个程序(但要注意可执行文件名是123)。 五、总结 1、调试过程中遇到的主要问题及解决过程 运行程序2的时候如果不加execl()函数的头文件<>会提示警告,而且因为execl()的第三个参数是字符型指针数组,所以要强制转换成指针型,即写成(char*)0 才行。 2、体会和收获 通过这次实验我进一步熟悉了linux系统,也学会了进程的创建过程和返回值的意义。同时学会了一个新的系统调用函数execl()及其头文件和参数类型。也学会了在编写完程序之后,不仅可以用:wq 保存并退出,也可以用快捷键shift + zz。 六、附录:源程序代码(另附)

相关文档
最新文档