数字系统课程设计报告中央空调.docx
《数字系统课程设计报告中央空调.docx》由会员分享,可在线阅读,更多相关《数字系统课程设计报告中央空调.docx(36页珍藏版)》请在冰点文库上搜索。
![数字系统课程设计报告中央空调.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/057ebd88-3810-450d-b7bd-293dbe400f0d/057ebd88-3810-450d-b7bd-293dbe400f0d1.gif)
数字系统课程设计报告中央空调
中央空调控制系统设计报告
组员:
040
040
1.设计要求
大楼分为1,2,3号楼,共用某型号中央空调,但是1,2,3号都有独立的2级控制器,大楼另有总控制器1级控制开关。
1,2,3号楼均有一定的房间(假设为3个,001-003)。
每个房间又有自己的控制面板3级控制。
如果总控1级打开,则2级可以使用,而且2级可以控制下一级的设置,意思是如果2级选择了制热模式,则3级所在的房间就只能选择制热,通风,除湿模式,不能设置为制冷方式,如果2级是制冷,3级就不能制热;如果2级是通风,3级就只能是通风或除湿,如果2级是除湿,3级也只能是通风或除湿。
但是2级又本身是每号楼的001号房间的3级控制器。
另外,二级控制器可以选择是否控制温度范围,根据政府的规定,夏天制冷不得低于26度,冬季制冷不得高于20度,可以通过2级控制器设置限制并且控制。
对于3级控制器,根据2级控制器的选择做出相应的动作并提供相应的指示。
2.设计思路
根据设计要求,系统有模式如下:
1:
以上框架从左到右分别表示一级,二级,三级开关,其中二级开关又是每号楼001号房间的开关,只有当上级开关打开时下级开关才有效,否则无效。
2:
根据实际情况,每个房间除了有开关以外还有一个模式调节信号,当这个信号出现一个上升沿,相应房间的模式便会改变到我们设定的循环的下一个状态各输入输出信号如下:
例:
一号楼
floor1_sel2:
001号房间模式选择开关
floor1_sel12:
002号房间模式选择开关
floor1_sel13:
003号房间模式选择开关
floor1_modeout_room1:
001号房间模式输出
floor1_modeout_room2:
002号房间模式输出
floor1_modeout_room3:
002号房间模式输出
floor1_mode2:
二级开关的模式(中间变量,用于控制2号三号房间的模式循环模式)
floor1_modein_room2:
002号房间循环模式
floor1_modein_room3:
003号房间循环模式
floor1_modeout2:
2级开关循环模式
二级开关的循环模式
关(000)制冷(001)制热(010)
除湿(100)
通风(011)
如果二级开关是制冷:
三级开关模式循环模式
关(000)
制冷(001)
通风(011)
除湿(100)
如果二级开关是制热:
三级开关模式循环模式
关(000)
制热(001)
通风(011)
除湿(100)
如果二级开关是通风:
三级开关模式循环模式
关(000)
通风(011)除湿(100)
如果二级开关是除湿:
三级开关模式循环模式
关(000)
除湿(100)通风(011)
各个房间的模式变换由下列进程完成
process(floor1_k2,floor1_sel2,key_all)
process(pr_mode1)
process(floor1_mode2)
process(floor1_k12,floor1_sel12,floor1_k2,key_all)
process(pr_moderoom312,nx_moderoom212,floor1_modein_room2)
process(floor1_k13,floor1_sel13,floor1_k2,key_all)
process(pr_moderoom313,pr_moderoom213,floor1_modein_room3)
另外,二号楼和三号楼变量和一号楼一样,且各自独立。
3:
除了以上,每个房间都有温度控制系统,二级开关有温度控制开关它决定是否对该楼进行温度控制,若选择对温度控制,则要输入制冷的最低温度(大于等于26摄氏度),制热的最低温度(小于等于20摄氏度);对于,三级开关,当模式为制冷或者制热的,要有温度输入,和开关的温度输出,输出受温度控制开关,温度限制和输入温度的共同控制,当为其他模式时,则没有,具体变量如下:
例:
一号楼温度控制系统
floor1_temp_control:
温度控制开关
floor1_top_temp:
制热最高温度输入
floor1_low_temp:
制冷最低温度输入
floor1_temp_setroom1:
001号房间的温度输入
floor1_temp_setroom2:
002号房间的温度输入
floor1_temp_setroom3:
003号房间的温度输入
floor1_temp_outroom1:
001号房间的温度输入
floor1_temp_outroom2:
002号房间的温度输出
floor1_temp_outroom3:
001号房间的温度输出
这些功能由下列进程完成:
process(floor1_temp_control,floor1_modeout2,floor1_temp_setroom1)
process(floor1_temp_control,floor1_modeout2,floor1_temp_setroom2)
process(floor1_temp_control,floor1_modeout2,floor1_temp_setroom3)
另外,二号楼和三号楼变量和一号楼一样,且各自独立。
3.源代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityairconditionis
port(
key_all:
instd_logic;
floor1_k2:
instd_logic;
floor1_k12:
instd_logic;
floor1_k13:
instd_logic;
floor1_sel2:
instd_logic;
floor1_sel12:
instd_logic;
floor1_sel13:
instd_logic;
floor2_k2:
instd_logic;
floor2_k22:
instd_logic;
floor2_k23:
instd_logic;
floor2_sel2:
instd_logic;
floor2_sel22:
instd_logic;
floor2_sel23:
instd_logic;
floor3_k2:
instd_logic;
floor3_k32:
instd_logic;
floor3_k33:
instd_logic;
floor3_sel2:
instd_logic;
floor3_sel32:
instd_logic;
floor3_sel33:
instd_logic;
floor1_modeout_room1:
outstd_logic_vector(2downto0);
floor1_modeout_room2:
outstd_logic_vector(2downto0);
floor1_modeout_room3:
outstd_logic_vector(2downto0);
floor2_modeout_room1:
outstd_logic_vector(2downto0);
floor2_modeout_room2:
outstd_logic_vector(2downto0);
floor2_modeout_room3:
outstd_logic_vector(2downto0);
floor3_modeout_room1:
outstd_logic_vector(2downto0);
floor3_modeout_room2:
outstd_logic_vector(2downto0);
floor3_modeout_room3:
outstd_logic_vector(2downto0);
floor1_mode2:
bufferstd_logic_vector(2downto0);
floor2_mode2:
bufferstd_logic_vector(2downto0);
floor3_mode2:
bufferstd_logic_vector(2downto0);
floor1_modein_room2:
bufferstd_logic_vector(2downto0);
floor1_modein_room3:
bufferstd_logic_vector(2downto0);
floor2_modein_room2:
bufferstd_logic_vector(2downto0);
floor2_modein_room3:
bufferstd_logic_vector(2downto0);
floor3_modein_room2:
bufferstd_logic_vector(2downto0);
floor3_modein_room3:
bufferstd_logic_vector(2downto0);
floor1_modeout2:
bufferstd_logic_vector(2downto0);
floor2_modeout2:
bufferstd_logic_vector(2downto0);
floor3_modeout2:
bufferstd_logic_vector(2downto0);
floor1_temp_control:
instd_logic;
floor2_temp_control:
instd_logic;
floor3_temp_control:
instd_logic;
floor1_top_temp:
instd_logic_vector(4downto0);
floor2_top_temp:
instd_logic_vector(4downto0);
floor3_top_temp:
instd_logic_vector(4downto0);
floor1_low_temp:
instd_logic_vector(4downto0);
floor2_low_temp:
instd_logic_vector(4downto0);
floor3_low_temp:
instd_logic_vector(4downto0);
floor1_temp_setroom1:
instd_logic_vector(4downto0);
floor1_temp_setroom2:
instd_logic_vector(4downto0);
floor1_temp_setroom3:
instd_logic_vector(4downto0);
floor1_temp_outroom1:
outstd_logic_vector(4downto0);
floor1_temp_outroom2:
outstd_logic_vector(4downto0);
floor1_temp_outroom3:
outstd_logic_vector(4downto0);
floor2_temp_setroom1:
instd_logic_vector(4downto0);
floor2_temp_setroom2:
instd_logic_vector(4downto0);
floor2_temp_setroom3:
instd_logic_vector(4downto0);
floor2_temp_outroom1:
outstd_logic_vector(4downto0);
floor2_temp_outroom2:
outstd_logic_vector(4downto0);
floor2_temp_outroom3:
outstd_logic_vector(4downto0);
floor3_temp_setroom1:
instd_logic_vector(4downto0);
floor3_temp_setroom2:
instd_logic_vector(4downto0);
floor3_temp_setroom3:
instd_logic_vector(4downto0);
floor3_temp_outroom1:
outstd_logic_vector(4downto0);
floor3_temp_outroom2:
outstd_logic_vector(4downto0);
floor3_temp_outroom3:
outstd_logic_vector(4downto0));
endaircondition;
architecturebehaveofairconditionis
typemodesis(one,two,three,four,five);
typemodes33is(one,two,three,four);
typemodes32is(one,two,three);
signalpr_mode1,nx_mode1:
modes;
signalpr_mode2,nx_mode2:
modes;
signalpr_mode3,nx_mode3:
modes;
signalpr_moderoom312,nx_moderoom312:
modes33;
signalpr_moderoom313,nx_moderoom313:
modes33;
signalpr_moderoom212,nx_moderoom212:
modes32;
signalpr_moderoom213,nx_moderoom213:
modes32;
signalpr_moderoom322,nx_moderoom322:
modes33;
signalpr_moderoom323,nx_moderoom323:
modes33;
signalpr_moderoom222,nx_moderoom222:
modes32;
signalpr_moderoom223,nx_moderoom223:
modes32;
signalpr_moderoom332,nx_moderoom332:
modes33;
signalpr_moderoom333,nx_moderoom333:
modes33;
signalpr_moderoom232,nx_moderoom232:
modes32;
signalpr_moderoom233,nx_moderoom233:
modes32;
begin
------------第一层楼代码-----------
process(floor1_k2,floor1_sel2,key_all)
begin
if(floor1_k2='0'orkey_all='0')thenpr_mode1<=five;
elsif(floor1_sel2'eventandfloor1_sel2='1')then
pr_mode1<=nx_mode1;
endif;
endprocess;
process(pr_mode1)
begin
casepr_mode1is
whenone=>floor1_mode2<="001";nx_mode1<=two;
whentwo=>floor1_mode2<="010";nx_mode1<=three;
whenthree=>floor1_mode2<="011";nx_mode1<=four;
whenfour=>floor1_mode2<="100";nx_mode1<=five;
whenfive=>floor1_mode2<="000";nx_mode1<=one;
endcase;
endprocess;
process(floor1_mode2)
begin
casefloor1_mode2is
when"000"=>floor1_modeout2<="000";floor1_modein_room2<="000";
floor1_modein_room3<="000";floor1_modeout_room1<="000";
when"001"=>floor1_modeout2<="001";floor1_modein_room2<="001";
floor1_modein_room3<="001";floor1_modeout_room1<="001";
when"010"=>floor1_modeout2<="010";floor1_modein_room2<="010";
floor1_modein_room3<="010";floor1_modeout_room1<="010";
when"011"=>floor1_modeout2<="011";floor1_modein_room2<="011";
floor1_modein_room3<="011";floor1_modeout_room1<="011";
when"100"=>floor1_modeout2<="100";floor1_modein_room2<="100";
floor1_modein_room3<="100";floor1_modeout_room1<="100";
whenothers=>null;
endcase;
endprocess;
process(floor1_k12,floor1_sel12,floor1_k2,key_all)
begin
if(floor1_k12='0'orfloor1_k2='0'orkey_all='0')thenpr_moderoom312<=four;pr_moderoom212<=three;
elsif(floor1_sel12'eventandfloor1_sel12='1')then
pr_moderoom312<=nx_moderoom312;
pr_moderoom212<=nx_moderoom212;
endif;
endprocess;
process(pr_moderoom312,nx_moderoom212,floor1_modein_room2)
begin
casefloor1_modein_room2is
when"000"=>floor1_modeout_room2<="000";
when"001"=>
casepr_moderoom312is
whenone=>floor1_modeout_room2<="001";nx_moderoom312<=two;
whentwo=>floor1_modeout_room2<="011";nx_moderoom312<=three;
whenthree=>floor1_modeout_room2<="100";nx_moderoom312<=four;
whenfour=>floor1_modeout_room2<="000";nx_moderoom312<=one;
endcase;
when"010"=>
casepr_moderoom312is
whenone=>floor1_modeout_room2<="010";nx_moderoom312<=two;
whentwo=>floor1_modeout_room2<="011";nx_moderoom312<=three;
whenthree=>floor1_modeout_room2<="100";nx_moderoom312<=four;
whenfour=>floor1_modeout_room2<="000";nx_moderoom312<=one;
endcase;
when"011"=>
casepr_moderoom212is
whenone=>floor1_modeout_room2<="011";nx_moderoom212<=two;
whentwo=>floor1_modeout_room2<="100";nx_moderoom212<=three;
whenthree=>floor1_modeout_room2<="000";nx_moderoom212<=one;
endcase;
when"100"=>
casepr_moderoom212is
whenone=>floor1_modeout_room2<="100";nx_moderoom212<=two;
whentwo=>floor1_modeout_room2<="011";nx_moderoom212<=three;
whenthree=>floor1_modeout_room2<="000";nx_moderoom212<=one;
endcase;
whenothers=>null;
endcase;
endprocess;
process(floor1_k13,floor1_sel13,floor1_k2,key_all)
begin
if(floor1_k13='0'orfloor1_k2='0'orkey_all='0')thenpr_moderoom313<=four;pr_moderoom213<=three;
elsif(floor1_sel13'eventandfloor1_sel13='1')then
pr_moderoom313<=nx_moderoom313;
pr_moderoom213<=nx_moderoom213;
endif;
endprocess;
process(pr_moderoom313,pr_moderoom213,floor1_modein_room3)
begin
casefloor1_modein_room3is
when"000"=>floor1_modeout_room3<="000";
when"001"=>
casepr_moderoom313is
whenone=>floor1_modeout_room3<="001";nx_moderoom313<=two;
whentwo=>floor1_modeout_room3<="011";nx_moderoom313<=three;
whenthree=>floor1_modeout_room3<="100";nx_moderoom313<=four;
whenfour=>floor1_modeout_room3<="000";nx_moder