您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > VHDL电梯控制器程序设计与仿真
VHDL电梯控制器程序设计与仿真电梯控制器VHDL程序与仿真。----文件名:dianti.vhd。--功能:6层楼的电梯控制系统。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydiantiisport(clk:instd_logic;--时钟信号(频率为2Hz)full,deng,quick,clr:instd_logic;--超载、关门中断、提前关门清除报警信号c_u1,c_u2,c_u3,c_u4,c_u5:instd_logic;--电梯外人的上升请求信号c_d2,c_d3,c_d4,c_d5,c_d6:instd_logic;--电梯外人的下降请求信号d1,d2,d3,d4,d5,d6:instd_logic;--电梯内人的请求信号g1,g2,g3,g4,g5,g6:instd_logic;--到达楼层信号door:outstd_logic_vector(1downto0);--电梯门控制信号led:outstd_logic_vector(6downto0);--电梯所在楼层显示led_c_u:outstd_logic_vector(5downto0);--电梯外人上升请求信号显示led_c_d:outstd_logic_vector(5downto0);--电梯外人下降请求信号显示led_d:outstd_logic_vector(5downto0);--电梯内请求信号显示wahaha:outstd_logic;--看门狗报警信号ud,alarm:outstd_logic;--电梯运动方向显示,超载警告信号up,down:outstd_logic);--电机控制信号和电梯运动enddianti;architecturebehavofdiantiissignald11,d22,d33,d44,d55,d66:std_logic;--电梯内人请求信号寄存信号signalc_u11,c_u22,c_u33,c_u44,c_u55:std_logic;--电梯外人上升请求信号寄存信号signalc_d22,c_d33,c_d44,c_d55,c_d66:std_logic;--电梯外人下降请求信号寄存信号signalq:integerrange0to1;--分频信号signalq1:integerrange0to6;--关门延时计数器signalq2:integerrange0to9;--看门狗计数器signaldd,cc_u,cc_d,dd_cc:std_logic_vector(5downto0);--电梯内外请求信号寄存器signalopendoor:std_logic;--开门使能信号signalupdown:std_logic;--电梯运动方向信号寄存器signalen_up,en_dw:std_logic;--预备上升、预备下降预操作使能信号begincom:process(clk)beginifclk'eventandclk='1'thenifclr='1'thenq1=0;q2=0;wahaha='0';--清除故障报警elsiffull='1'thenalarm='1';q1=0;--超载报警ifq1=3thendoor=10;elsedoor=00;endif;elsifq=1thenq=0;alarm='0';ifq2=3thenwahaha='1';--故障报警elseifopendoor='1'thendoor=10;q1=0;q2=0;up='0';down='0';--开门操作elsifen_up='1'then--上升预操作ifdeng='1'thendoor=10;q1=0;q2=q2+1;--关门中断elsifquick='1'thenq1=3;--提前关门elsifq1=6thendoor=00;updown='1';up='1';--关门完毕,电梯进入上升状态elsifq1=3thendoor=01;q1=q1+1;--电梯进入关门状态elseq1=q1+1;door=00;--电梯进入等待状态endif;elsifen_dw='1'then--下降预操作ifdeng='1'thendoor=10;q1=0;q2=q2+1;elsifquick='1'thenq1=3;elsifq1=6thendoor=00;updown='0';down='1';elsifq1=3thendoor=01;q1=q1+1;elseq1=q1+1;door=00;endif;endif;ifg1='1'thenled=1001111;--电梯到达1楼,数码管显示1ifd11='1'orc_u11='1'thend11='0';c_u11='0';opendoor='1';--有当前层的请求,则电梯进入开门状态elsifdd_cc000001thenen_up='1';opendoor='0';--有上升请求,则电梯进入预备上升状态elsifdd_cc=000000thenopendoor='0';--无请求时,电梯停在1楼待机endif;elsifg2='1'thenled=0010010;--电梯到达2楼,数码管显示2ifupdown='1'then--电梯前一运动状态位上升ifd22='1'orc_u22='1'thend22='0';c_u22='0';opendoor='1';--有当前层的请求,则电梯进入开门状态elsifdd_cc000011thenen_up='1';opendoor='0';--有上升请求,则电梯进入预备上升状态elsifdd_cc000010thenen_dw='1';opendoor='0';--有下降请求,则电梯进入预备下降状态endif;--电梯前一运动状态为下降elsifd22='1'orc_d22='1'thend22='0';c_d22='0';opendoor='1';--有当前层的请求,则电梯进入开门状态elsifdd_cc000010thenen_dw='1';opendoor='0';--有下降请求,则电梯进入预备下降状态elsifdd_cc000011thenen_up='1';opendoor='0';--有上升请求,则电梯进入预备上升状态endif;elsifg3='1'thenled=0000110;--电梯到达3楼,数码管显示3ifupdown='1'thenifd33='1'orc_u33='1'thend33='0';c_u33='0';opendoor='1';elsifdd_cc000111thenen_up='1';opendoor='0';elsifdd_cc000100thenen_dw='1';opendoor='0';endif;elsifd33='1'orc_d33='1'thend33='0';c_d33='0';opendoor='1';elsifdd_cc000100thenen_dw='1';opendoor='0';elsifdd_cc000111thenen_up='1';opendoor='0';endif;elsifg4='1'thenled=1001100;--电梯到达4楼,数码管显示4ifupdown='1'thenifd44='1'orc_u44='1'thend44='0';c_u44='0';opendoor='1';elsifdd_cc001111thenen_up='1';opendoor='0';elsifdd_cc001000thenen_dw='1';opendoor='0';endif;elsifd44='1'orc_d44='1'thend44='0';c_d44='0';opendoor='1';elsifdd_cc001000thenen_dw='1';opendoor='0';elsifdd_cc001111thenen_up='1';opendoor='0';endif;elsifg5='1'thenled=0100100;--电梯到达5楼,数码管显示5ifupdown='1'thenifd55='1'orc_u55='1'thend55='0';c_u55='0';opendoor='1';elsifdd_cc011111thenen_up='1';opendoor='0';elsifdd_cc010000thenen_dw='1';opendoor='0';endif;elsifd55='1'orc_d55='1'thend55='0';c_d55='0';opendoor='1';elsifdd_cc010000thenen_dw='1';opendoor='0';elsifdd_cc011111thenen_up='1';opendoor='0';endif;elsifg6='1'thenled=0100000;--电梯到达6楼,数码管显示6ifd66='1'orc_d66='1'thend66='0';c_d66='0';opendoor='1';elsifdd_cc100000thenen_dw='1';opendoor='0';endif;elseen_up='0';en_dw='0';--电梯进入上升或下降状态endif;endif;elseq=1;alarm='0';--清除超载报警ifd1='1'thend11=d1;--对电梯内人请求信号进行检测和寄存elsifd2='1'thend22=d2;elsifd3='1'thend33=d3;elsifd4='1'thend44=d4;elsifd5='1'thend55=d5;elsifd6='1'thend66=d6;endif;ifc_u1='1'thenc_u11=c_u1;--对电梯外人上升请求信号进行检测和寄存elsifc_u2='1'thenc_u22=c_u2;elsifc_u3='1'thenc_u33=c_u3;elsifc_u4='1'thenc_u44=c_u4;elsifc_u5='1'thenc_u55=c_u5;endif;ifc_d2='1'thenc_d22=c_d2;--对电梯外人下降请求信号进行检测和寄存elsifc_d3='1'thenc_d33=c_d3;elsifc_d4='1'thenc_d44=c_d4;elsifc_d5='1'thenc_d55=c_d5;elsifc_d6='1'thenc_d66=c_d6;endif;dd=d66&d55&d44&d33&d22&d11;--电梯内人请求信号并置cc_u='0'&c_u55&c_u44&c_u33&c_u22&c_u11;--电梯外人上升请求信号并置cc_d=c_d66&c_d55&c_d44&c_d33&c_d22&'0';--电梯外人下降请求信号并置dd_cc=ddorcc_uorcc_d;--电梯内、外人请求信号进行综合endif;ud=updown;--电梯运动状态显示led_d=dd;--电梯内人请求信号显示led_c_u=cc_u;--电梯外人上升请求信号显示led_c_d=cc_d;--电梯外人下降请求信号显示endif;endprocess;endbehav;电梯程序仿真注:由于以上输入信号在下面仿真中没用到,所以在下面仿真图中将不再出现。电梯控制程序仿真全图-1电梯控制程序仿真全图-2注:1.电
本文标题:VHDL电梯控制器程序设计与仿真
链接地址:https://www.777doc.com/doc-6053541 .html