实现的功能:此单片机模拟电梯用绿色发光二极管组成的箭头来指示电梯当前是处于上升状态还是下降状态,用数码管显示当前是处于哪一层,用红色发光二极管指示电梯走到哪一层会停电源接通后,若没有人按下停止按键,它就以每层2秒的速度一直上下运行,若有人按下某一层的停止按键,它就会在相应的那一层停止4秒钟,并伴有开门和关门的声音提示。
程序初始化1
tcount航天4ch
航天4dh曾
0000h丙
ljmp开始
000bh丙
ljmp int0x
0030h丙
;;;;;;;;;;;;初始化;;;;;;;;;;;;;;;;;
启动:mov tmod,# 1小时
mov th0,# 3针
mov tl0,# 0 B0H;50毫秒
mov ie,#小时
setb tr0
mov tcount,4号
CLR F0
mov 20h,# 0
mov r0、# 30小时
mov r1,# 30
清:mov @r0,# 00 H
公司r0
djnz r1、清;把30H到4DH这30个单元清0
并打动,# 6小时
mov p3,# 0 F8H
2主程序调用
小熏:简森-巴顿p10,一
lcall ys10ms
简森-巴顿p10,一个,判断一层的停止按键是否按下
clr p20;若按下则把对应的红色发光二极管点亮
一:简森-巴顿p11,两个
lcall ys10ms
简森-巴顿p11,两个,判断二层的停止按键是否按下
clr p21;若按下则把对应的红色发光二极管点亮
二:简森-巴顿p12、射孔
lcall ys10ms
简森-巴顿p12、射孔
clr p22
各段:简森-巴顿p13,精打细算
lcall ys10ms
简森-巴顿p13,精打细算,
clr p23
台北县:简森-巴顿p14,FIV的猫咪
lcall ys10ms
简森-巴顿p14,FIV的猫咪
clr p24
FIV的猫咪:简森-巴顿p15、共六人
lcall ys10ms
简森-巴顿p15、六
clr p25
六:简森-巴顿p16,SEV
lcall ys10ms
简森-巴顿p16,SEV
clr p26
SEV:简森-巴顿p17、训
lcall ys10ms
简森-巴顿p17、训
clr p27
ljmp鲁迅
中断程序调用3
INT0X:mov th0,# 3针
mov tl0,# 0 B0H
公司tcount
mov,TCOUNT
cjne,5 #,ZHUAN2;50毫秒= 250 5女士
mov tcount,# 00 H
简森-巴顿f0,《左传》
ljmp zhuan1
《左传》:ljmp虾酱
ZHUAN1:mov p3,# 0 F8H;上升的箭头
mov,蹭
cjne,# 00 H、社里
并打动,# 06 h,显示
简森-巴顿p20,SS1_1
公司30h
mov,30小时
cjne,# 1、SSX1_1
clr p34;一层门开的声音开
SSX1_1:cjne,2号,SSX1_2
setb p34;一层门开的声音关
SSX1_2:cjne,# 16,SSX1_3
clr p34;一层门关的声音开
SSX1_3:cjne,17号,ZHUAN2;16 250毫秒= 4 S(总共次,但实际在这里停止的时间只有次MS)
mov 30h,# 0
setb p34;一层门关的声音关
setb p20;熄灭对应的红色发光二极管
SS1_1:公司31h
mov,31 H
cjne,# 9,ZHUAN2;8 250毫秒= 2秒(总共次,但实际上升一层只用次MS)
mov 31h,# 0
公司曾
社里:mov,蹭
cjne,# 1小时,SS3
并打动,5 # BH,显示
简森-巴顿p21,SS2_1
公司32h
mov一个32小时
cjne,# 1、SSX2_1
clr p34;二层门开的声音开
SSX2_1:cjne,2号,SSX2_2
setb p34;二层门开的声音关
SSX2_2:cjne,# 16,SSX2_3
clr p34;二层门关的声音开
SSX2_3:cjne,17号,ZHUAN2;16 250毫秒= 4 S(总共次,但实际在这里停止的时间只有次MS)
mov 32h,# 0
setb p34;二层门关的声音关
setb p21;熄灭对应的红色发光二极管
SS2_1:公司33h
mov,33 H
cjne,# 9,ZHUAN2;8 250毫秒= 2秒,但实际上升一层只用次MS(总共次吗
mov 33h,# 0
ljmp zhuan3
package bean;public class dianti {int on=1;//定义一个初始化楼层 初始化是在1层
//先从简单的开始 我们先写两个方法 一个是在电梯外面方法 一个是在电梯内部的方法
public void wai(int num)//外部方法
{
if(num==thison)
{
Systemoutprintln("停留在本层 直接开门");
}
else if(num>thison)
{
Thread th = new Thread();
for(int i=thison;i<=num;i++)
{
if(i==num)
{
Systemoutprintln("电梯到达~开门请进···");
thison=num;
}
else
{
Systemoutprintln("电梯在"+i+"层 马上就到,请等待····");
try {
thsleep(1000);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
}
else if(num>0&&num<thison)
{
Systemoutprintln("进来了" +num+" "+thison);
Thread th1 = new Thread();
for(int u=thison;u>=num;u--)
{
if(u==num)
{
Systemoutprintln("电梯到达~开门请进···");
thison=num;
}
else
{
Systemoutprintln("电梯在"+u+"层 马上就到,请等待····");
try {
th1sleep(1000);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
}
else
{
Systemoutprintln("1111111111111");
}
}
//内部方法
public void nei(int num)
{
Systemoutprintln("进来了~当前楼层是"+thison+" 我们的目标是"+num+"层");
if(num==thison)
{
Systemoutprintln("您就在本层 开门");
}
else if(num>0&&num<11&&num<thison)
{
for(int y=thison;y>=num;y--)
{
Thread th1 = new Thread();
if(y==num)
{
Systemoutprintln("电梯到达~欢迎下次在做···");
thison=num;
}
else
{
Systemoutprintln("电梯在"+y+"层 马上就到,请等待····");
try {
th1sleep(1000);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
}
else if(num>0&&num<11&&num>thison)
{
for(int y=thison;y<=num;y++)
{
Thread th1 = new Thread();
if(y==num)
{
Systemoutprintln("电梯到达~欢迎下次在做····");
thison=num;
}
else
{
Systemoutprintln("电梯在"+y+"层 马上就到,请等待····");
try {
th1sleep(1000);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
}
}
public static void main(String[] args) {
dianti d = new dianti();
//模拟开始 初始化是1层 首先我们去10层
dwai(1);//传进去的1表示我们是在1层按电梯准备上
dnei(10);//表示电梯到了 我们选择了10层开始上升 现在电梯停留在10层
dwai(5);//在电梯还在10层停留的时候 5层有人使用
dnei(1);//目标是一层
//这个其实不完整 还需要加上很多判断的 必然经过每层的时候判断是否有顺路下的
//还有就是电梯在上升的时候经过了2层到了3层 此时2层有人按 又该如何 自己试着去想一想解决方法}}
电梯系统需要以下几个程序功能:
(1)处理电梯呼叫:乘客呼叫电梯、电梯按钮明灭、电梯控制器处理电梯呼叫、处理按钮信息更新等
(2)处理楼层呼叫:包括乘客选择楼层、楼层按钮明灭、电梯控制器处理楼层呼叫、处理按钮信息更新等
(3)移动停止电梯:包括驱动速度的改变、停止的判定、电梯的运动方向驱动
(4)标志移动方向:让乘客知道电梯目前运动方向、决定是否进入电梯
(5)标志电梯位置:让乘客知道乘客的目的层是否到达。决定是否离开电梯
(6)开关门:乘客进出电梯,电梯应该开关门。应包括电梯正关闭而乘客想进入时乘客可以使电梯门打开
(7)触发紧急处理器:电梯有安全机制确定一个不安全的状态不是瞬时产生的
匿名2012-06-01 //运行控制函数(核心)void control(){ int floor,i,j; /顺便服务策略 到达目标楼层确定下一目标楼层/ //S1:电梯向上运行或无运行状态 if(direction==UP){ current_floor=(up_count==0current_floor:current_floor+1); floor=checkup(current_floor,MAXFLOOR,outside_up); //比当前楼层高的楼层有上行请求 if(floor<=MAXFLOOR) dest_floor=floor; //无高层上行请求 从最高层搜索下行请求 else{ floor=checkdown(MAXFLOOR,1,outside_down); if(floor>=1) dest_floor=floor; else{ //无下行请求 从最低层搜索上行请求 floor=checkup(1,MAXFLOOR,outside_up); if(floor<current_floor) dest_floor=floor; } } } //S2:电梯向下运行 else if(direction==DOWN){ current_floor=(down_count==0current_floor:current_floor+1); floor=checkdown(current_floor,1,outside_down); //比当前楼层低的楼层有下行请求 if(floor>=1) dest_floor=floor; //无低层下行请求 从最低层搜索上行请求 else{ floor=checkup(1,MAXFLOOR,outside_up); if(floor<=MAXFLOOR) dest_floor=floor; else{ //无上行请求 从最高层搜索下行请求 floor=checkdown(MAXFLOOR,1,outside_down); if(floor>current_floor) dest_floor=floor; } } }if(direction==NONE){ for(i=current_floor;i<=9&&outside_up[i]==0&&outside_down[i]==0&&inside[i]==0;i++); for(j=current_floor;j>=1&&outside_up[j]==0&&outside_down[j]==0&&inside[j]==0;j--); if(i!=10&&j!=0){ //上下都搜索到则进行比较 floor=((i-current_floor)>=(current_floor-j)j:i); dest_floor=floor; } else if(i==10&&j!=0)//只搜索到下行请求 dest_floor=j; else if(j==0&&i!=10)//只搜索到上行请求 dest_floor=i; } if(dest_floor>current_floor) direction=UP; else if(dest_floor<current_floor) direction=DOWN; else direction=NONE;}
问题一:M1-5是什么意思分析一下0-5步长
M为中间继电器,M1到M6是一层到六层呼叫的标志,如当M2为1时,表示二楼有人呼叫电梯(来自内部或外部),电梯将要运行到二楼。
以逻辑行5为例进行分析,X001为二楼下行呼叫、X002为二楼上行呼叫、X013是来自电梯轿厢内部要运行至二楼的呼叫,当这三个按钮中有任意一个被接通时M2为1,表示电梯将运行至二楼并自锁,当电梯到达二楼后,Y003接通,M2为0,表示电梯已到达二楼,本次呼叫已被相应。
问题二:上图中的M17-26是什么意思 ?M30 是什么?34-55步长分析一下
这个图中的中间继电器来自于图2,需要结合图2来理解,
确定电梯的运行方向要遵循最远端站原则和优先记原则。利用内部继电器M15~M26实现。如:电梯在6楼,1,2楼上行呼叫,遵循最远端原则先到1楼再到2楼;电梯下降到2楼时,1楼内部继电器M15起保号作用,从而达到记忆作用。到2楼时开门同时消号。
这个程序中通过这些中间继电器来判断电梯应该上行还是下行。
问题三: T31、T41是什么意思K1呢?? 分析一下 76-90步长
在PLC中这些标T是时间继电器,起到定时的作用,K1是设定的时间值,如逻辑行81表示当Y002接通后,经过定时时间K1(具体表示的时间我记不太清楚了,本人一直用西门子的PLC,可以查阅三菱的技术资料)后,T30线圈接通,逻辑行76中T30的常闭触点断开,以保证程序达到最远端原则。
问题四:K5 T13 M5 M26是什么意思 分析一下
这些都是定时器和中间继电器,这段程序利用电梯上下行条件配合定时用计数器来模拟电梯到达每层时的行程开关,这在实际的电梯控制系统中式没有的,必须用真实的行程开关。
问题五:分析一下这个图的意思
这段程序是电梯到达每层后,接通外部的楼层指示灯,程序中的C是用于模拟行程开关的计数器。
问题六:分析一下上面这个图
这段程序是电梯到达每层后的开关门控制子程序。第一个逻辑行输出M27是根据开门条件发出开门请求,接收到开门请求后如果电梯没有在运行中间,则执行开关门动作,后面的部分是开关门的时间限制。
问题七:这个指令表是什么得到的
PLC的梯形图转指令表有一套非常标准的规范,按标准转换即可,现在的编程软件可以直接将梯形图转换为指令表。
这样回答不知道能不能满足你的要求,论文中的程序并不完整,我只能做这样的简略回答。
以上就是关于小弟要做电梯模拟设计,下面代码不懂,求高手帮翻译每一行是代码是什么意思。(我把金币都给你,重谢!)全部的内容,包括:小弟要做电梯模拟设计,下面代码不懂,求高手帮翻译每一行是代码是什么意思。(我把金币都给你,重谢!)、电梯的程序应该怎么编、电梯编程都包括什么程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)