8层模拟电梯c语言

操作系统模拟电梯调度算法C语言程序

多级反馈队列调度算法 多级反馈队列调度算法是一种CPU处理机调度算法,UNIX操作系统采取的便是这种调度算法。 多级反馈队列调度算法即能使高优先级的作业得到响应又能使短作业(进程)迅速完成。(对比一下FCFS与高优先响应比调度算法的缺陷)。 多级(假设为N级)反馈队列调度算法可以如下原理: 1、设有N个队列(Q1,Q2….QN),其中各个队列对于处理机的优先级是不一样的,也就是说位于各个队列中的作业(进程)的优先级也是不一样的。一般来说,优先级Priority(Q1) Priority(Q2) … Priority(QN)。怎么讲,位于Q1中的任何一个作业(进程)都要比Q2中的任何一个作业(进程)相对于CPU的优先级要高(也就是说,Q1中的作业一定要比Q2中的作业先被处理机调度),依次类推其它的队列。 2、对于某个特定的队列来说,里面是遵循时间片轮转法。也就是说,位于队列Q2中有N个作业,它们的运行时间是通过Q2这个队列所设定的时间片来确定的(为了便于理解,我们也可以认为特定队列中的作业的优先级是按照FCFS来调度的)。 3、各个队列的时间片是一样的吗?不一样,这就是该算法设计的精妙之处。各个队列的时间片是随着优先级的增加而减少的,也就是说,优先级越高的队列中它的时间片就越短。同时,为了便于那些超大作业的完成,最后一个队列QN(优先级最高的队列)的时间片一般很大(不需要考虑这个问题)。 多级反馈队列调度算法描述: 1、进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。 2、首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。 3、对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。 4、在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。 我们来看一下该算法是如何运作的: 假设系统中有3个反馈队列Q1,Q2,Q3,时间片分别为2,4,8。 现在有3个作业J1,J2,J3分别在时间 0 ,1,3时刻到达。而它们所需要的CPU时间分别是3,2,1个时间片。 1、时刻0 J1到达。于是进入到队列1 , 运行1个时间片 , 时间片还未到,此时J2到达。 2、时刻1 J2到达。 由于时间片仍然由J1掌控,于是等待。 J1在运行了1个时间片后,已经完成了在Q1中的 2个时间片的限制,于是J1置于Q2等待被调度。现在处理机分配给J2。 3、时刻2 J1进入Q2等待调度,J2获得CPU开始运行。 4、时刻3 J3到达,由于J2的时间片未到,故J3在Q1等待调度,J1也在Q2等待调度。 5、时刻4 J2处理完成,由于J3,J1都在等待调度,但是J3所在的队列比J1所在的队列的优先级要高,于是J3被调度,J1继续在Q2等待。 6、时刻5 J3经过1个时间片,完成。 7、时刻6 由于Q1已经空闲,于是开始调度Q2中的作业,则J1得到处理器开始运行。 8、时刻7 J1再经过一个时间片,完成了任务。于是整个调度过程结束。

用C语言编写一个关于电梯的程序

这是以前作的课程设计,是一个10层电梯的模拟,供楼主参考吧:

printf(“上下选择:1-上楼,2-下楼\t”);

scanf(“%d”,input_direction);

fflush(stdin);

printf(“输入该层的乘客想到达的楼层,以-1结束\n”);

void check(liftor myliftor) int flag1=0,flag2=0,flag3=0;

for(i=0;i10;i++)

{

if(myliftor.stored_flare[i]!=0)

flag1=1;

if(myliftor.stored_flare[i]==1)

flag2=1;

if(myliftor.stored_flare[i]==2)

flag3=1;

}

if(!flag1) myliftor.set_direction(0);

else if(!flag2flag3) myliftor.set_direction(2);

else if(!flag3flag2) myliftor.set_direction(1);

int main(int argc, char *argv[])

liftor myliftor;

char flag;

int j;

myliftor.direction=1;

printf(“**************************************\n”);

printf(“该程序用于模拟10(0-9)层的电梯控制\n”);

printf(“先输入按下电梯的层号及上下选\n择(类似电梯外的按钮)\n”);

printf(“每到一层时,输入乘客要到的楼\n层号(类似电梯内的按钮)\n”);

求电梯控制c语言程序

原地址带图片 : 1 前言 电梯的电气系统由拖动系统和控制系统两部分组成。传统的电气控制系统采用的继电器逻辑控制由于触点多、故障率高、可靠性差、体积大等缺点,正逐渐被淘汰。目前电梯设计使用可编程控制器(PLC),要求功能变化灵活,编程简单,故障少,噪音低。维修保养方便,节能省工,抗干扰能力强,控制箱占地面积少。当乘员进入电梯,按下楼层按钮,电梯门自动关闭后.控制系统进行下列运作:根据轿厢所处位置及乘员所处层数.判定轿厢运行方向,保证轿厢平层时减速。将轿厢停在选定的楼层上;同时,根据楼层的呼叫,顺路停车,自动开关门。另外在轿厢内外均要有信号灯显示电梯运行方向及楼层数。 MCGS(Monitor and Control Generated System,通用监控系统)是一套用于快速构造和生成计算机监控系统的组态软件,能够在Windows平台上运行。通过对现场数据的采集处理。以动画显示、报警处理、流程控制、实时曲线、历史曲线和报表输出等多种方式。向用户提供解决实际工程问题的方案。充分利用windows图形功能完备、界面一致性好、易学易用的特点。比以往使用专用机开发的工业控制系统更具通用性.在自动化领域有着更广泛的应用。本文利用MCGS组态软件检验电梯PLC控制系统的运行情况。 2 电梯PLC控制系统 S7-200可编程控制器是德国西门子公司研制的一种新型可编程控制器。它工作可靠,功能强,存储容量大,编程方便,输出端可直接驱动2A的继电器或接触器的线圈,抗干扰能力强。因此,能够满足电梯对电气控制系统的要求。S7-200系列小型PLC(Micro PLC)可应用于各种自动化系统。紧凑的结构。低廉的成本12.b~功能强大的指令集使得S7-200 PLC成为各种小型控制任务理想的解决方案。利用西门子S7-200可编程序控制器编写一个四层电梯的控制系统。分别完成轿内指令、厅外召唤指令、楼层位置指示、平层换速控制、开门控制等控制任务。 STEP 7-Micro/WIN 32是S7-200系列的PLC的编程软件.可以对S7-200的所有功能进行编程。该软件在WindOW8平台上运行。基本操作与omce等标准WindOWS软件相类似,简单、易学。其基本功能是协助用户完成应用软件任务。例如创建用户程序、修改和编辑过程中编辑器具有简单语法检查功能。还可以直接用软件设置PLC的工作方式、参数和运行监控。 2.1 电气控制系统 图l为本系统的组成框图。 图中。输出为:l、电动机;2、上下行接触器;3、快慢速接触器;4、位置指示;5、门锁。输入为:6、轿内指令;7、厅外指令;8、门区感应;9、手动开关门;10、楼层感应。 2.2 PLC系统部分 完成所设定的控制任务所需要的PLC规模主要取决于控制系统对输入,{禽出点的需求量和控制过程的难易程度。 (1)I/O点的估算: 系统的输入点有:门厅召唤按钮6个输入点;轿内指令按钮4个点;楼层感应器4个点;门区感应l点;手动开门l点:共计输入点16点。而输出点有:快慢速接触器2点;上下行接触器2点;楼层指示灯4点;门锁1个点;共计输出点9点。总计I/O点数为16/9; (2)可编程控制器S7-200的CPU226输入,输出点数为24/16。足以满足要求。 3 电梯PLC控制系统设计 因篇幅有限。仅将电梯指示及上下行程序列出说明。 3.1楼层状态指示设计 当电梯运行至某层有指令发出时.指示位置及指令。以二层为例: 3.2电梯下行程序设计 以电梯在三层下行情况为例。当电梯的一或二层有指令时,将三层下行位置1,同时无上行,驱动电梯下行。程序说明如下: 3.3电梯上行程序设计 以电梯在二层上行情况为例。程序说明如下: 3.4电梯到达时程序设计 电梯到达某层时。将已完成的指令信号复位。以电梯到达三层为例。程序ig明如下: 4 组态软件模拟电梯PLC控制系统显示设计 MCGsm态软件具有全中文、面向窗口的可视化操作界面。实时性强,有良好的并行处理性能和丰富生动的多媒体画面。MCGSm态软件的开放式结构拥有广泛的数据获取和强大的数据处理功能。同时。提供良好的安全机制,为多个不同级别用户设定不同的操作权限。MCGS组态软件支持多种硬件设备,实现”设备无关”,用户不必因外部设备的局部改动,而影响整个系统。MCGS组态软件由”MCGS组态环境”和”MCGS运行环境”两个系统组成。两部分互相独立。又紧密相关。 本文利用MCGS组态软件设计。在设备组态窗口中选择适当的串口通讯设备.添加西门子S7-200PLC。正确设置其属性。正确设置组态软件中数据变量设备通道的连接,即可实现PLC与组态软件的通讯。将PLC中的串口驱动程序与组态软件的需求响应相结合,使电脑对PLC发出的信号有响应。在MCGS组态软件的用户窗口中,制作一个动画界面。在界面上设置各个控件的属性,使设置的控件按照真实的情况动作,检验和测试电梯PLC控制系统对电梯的运行状态的控制效果。MCGS用主控窗口、设备窗口和用户窗口来构成一个应用系统的人机交互图形界面.组态配置各种不同类型和功能的对象或构构。可以对实时数据进行可视化处理。组态过程如图2所示: 5 结语 针对这个四层电梯的控制系统.本文采用西门子S7-200可编程控制器设-H-电梯的控制系统完成电梯的轿内指令、厅外召唤指令、楼层位置指示、平层换速控制、开门控制等控制任务。利用MCGS组态软减设计模拟电梯PLC控制系统的运行。将PLC中的串口驱动程序与组态软件的需求响应相结合,加载驱动。使设置的控件能够按照真实的情况动作。检验和测试电梯PLC控制系统对电梯的运行状态的控制效果。实践证明。将PLC可编程控制器和MCGS组态软件结合可以非常好地模拟电梯控制系统的测试运行.有利于PLC控制系统的设-H-、检测,具有良好的应用价值。

8层模拟电梯c语言

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月25日 21:13:01
下一篇 2024年3月25日 21:20:21

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7300
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6300
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3400
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4300

发表回复

登录后才能评论



关注微信