61009106立体式停车场控制系统

发布者:系统管理员发布时间:2013-10-10浏览次数:12

立体式停车场控制系统
61009106
张益成
1、申请题目:
n      题目
立体式停车场控制系统
n      命题描述
设计功能齐全、操作简便、人机友好的立体式停车场控制系统,实现停车、取车等基本功能,自动和手动两种模式。
2、课题背景:
n      存在问题、应用背景
随着人口增加土地面积紧缺等问题,立体式停车场由于占地面积小,驾驶者停放方便的优势,正得到越来越大的重视和推广。
考虑设计能耗尽量少,等待时间尽量短的控制系统。并且尽量简化操作者的工作,实现自动化控制。
3、项目规划:
n      功能、指标、规模
该系统针对目前最流行的升降横移式的立体停车库,能够实现存车(包括输入车位坐标,移位,停车,复位)和取车(包括输入车位坐标,移位,开车,复位)的功能。
设置人工操控和自动控制两种操作模式,无人操作时,检测到有车辆驶入时自动安排最近车位。人工操作时,手动选择车位,系统自动运行最短路径移动车位。
对n层m列的车库实现兼容式的管理。即用同一套系统,只需在程序中改变相应参数,即可实现对不同车位的车库的管理。
n      面板(显示)、操作、规则
面板显示:
点阵显示停车场框架、车位、车辆
数码管显示输入坐标、停车数量、停车计时
操作规则:(键盘输入)
手动停车
等待模式下(开关在手动挡)按A键进入,键盘输入1~5键选择停车位层数,A~E键选择列数,F键确认
自动停车
等待模式下(开关在手动挡)按A键进入,自动选择最近车位停车
手动取车
等待模式下按B键进入,键盘输入1~5键选择取车位层数,A~E键选择列数,F键确认
 
n      输入、输出接口
时钟信号(clk_1k)
键盘行输出(row[3..0])
键盘列输入(col[3..0])
复位脉冲(reset)
自动模式电平(auto)
层坐标数码管(level[2..0])
列坐标数码管(rank[2..0])
车辆数数码管高位(totalnoh[1..0])
车辆数数码管低位(totalnol[3..0])
点阵列选(column[15..0])
点阵行选红(row_red[15..0])
点阵行选绿(row_green[15..0])
4、实现方案:
n      核心问题
移位算法、编号系统、时间系统
n      解决方案
移位算法中,需要实现对最短路径的计算,由于采用升降平移的方法,需先将对应下方的车位清空,留下空位,将待移车位向下移动至底层,停车后再上移至原位。另外考虑到展示效果,在移动过程中需要有短暂的停顿已看清整个过程。
解决方案是采用局部状态机,将每次移位设为一个小状态,控制状态机跳转的时间就控制了移位等待的时间。并且需要根据每次所选位置的不同,自动搜索下面层数的空位,将空位移至待移位正下方,并且由于每次下移和左右移动的距离都跟具体车位有关,因此在状态的跳转过程中,需要精确的计算和反复的调试。
编号系统和时间系统的共同问题都是算法庞大,设计逻辑单元非常多,导致芯片无法满足系统要求。虽然这部分代码都已经编写完成并且仿真符合要求,但是无法落实到实物。
5、系统结构:
n      系统框图
注:具体设计时,由于各模块所用时钟都是1kHz,因此时钟模块省去,另外将操作模块与数据模块合在一起实现
n      模块功能描述
状态机:接受数据/操作模块的信号控制整个系统的运行状态。
输入模块:包括键盘扫描和输入信息处理两部分,其中输入信息处理部分还包含内部状态机,以便按次序提取合理数据。
数据/操作模块:最核心算法部分,由状态机调用,由内部移位状态机控制,具体实现移位状态的跳转,移位的具体算法,(另外编号系统和时间系统也包含在其中),将各个车位的车架及车辆信息传递给显示模块处理显示。
显示模块:主要处理数据/操作模块的信息处理后,转化为点阵信息输出。
n      模块接口标注(参数、协议)
输入输出名称
芯片引脚号
实验箱标注
钉子线连接
clk_1k
PIN_73
P1
函数发生器
col[0]
PIN_72
P2
ROW4
col[1]
PIN_71
P3
ROW3
col[2]
PIN_70
P4
ROW2
col[3]
PIN_69
P5
ROW1
column[0]
PIN_68
P6
R1
column[1]
PIN_67
P7
R2
column[2]
PIN_62
P8
R3
column[3]
PIN_61
P9
R4
column[4]
PIN_60
P10
R5
column[5]
PIN_59
P11
R6
column[6]
PIN_58
P12
R7
column[7]
PIN_57
P13
R8
column[8]
PIN_56
P14
R9
column[9]
PIN_55
P15
R10
column[10]
PIN_54
P16
R11
column[11]
PIN_53
P17
R12
column[12]
PIN_52
P18
R13
column[13]
PIN_51
P19
R14
column[14]
PIN_50
P20
R15
column[15]
PIN_49
P21
R16
level[0]
PIN_48
P22
A1
level[1]
PIN_47
P23
B1
level[2]
PIN_42
P24
C1
rank[0]
PIN_41
P25
A2
rank[1]
PIN_40
P26
B2
rank[2]
PIN_39
P27
C2
reset
PIN_38
P28
PS1
row[0]
PIN_37
P29
COL4
row[1]
PIN_36
P30
COL3
row[2]
PIN_35
P31
COL2
row[3]
PIN_34
P32
COL1
row_green[0]
PIN_33
P33
GL1
row_green[1]
PIN_32
P34
GL2
row_green[2]
PIN_31
P35
GL3
row_green[3]
PIN_5
P36
GL4
row_green[4]
PIN_4
P37
GL5
row_green[5]
PIN_3
P38
GL6
row_green[6]
PIN_2
P39
GL7
row_green[7]
PIN_144
P40
GL8
row_green[8]
PIN_143
P41
GL9
row_green[9]
PIN_142
P42
GL10
row_green[10]
PIN_141
P43
GL11
row_green[11]
PIN_140
P44
GL12
row_green[12]
PIN_139
P45
GL13
row_green[13]
PIN_134
P46
GL14
row_green[14]
PIN_133
P47
GL15
row_green[15]
PIN_132
P48
GL16
auto
PIN_131
P49
K1
row_red[1]
PIN_130
P50
RL2
row_red[2]
PIN_129
P51
RL3
row_red[3]
PIN_128
P52
RL4
row_red[4]
PIN_127
P53
RL5
row_red[5]
PIN_126
P54
RL6
row_red[6]
PIN_125
P55
RL7
row_red[7]
PIN_124
P56
RL8
row_red[8]
PIN_123
P57
RL9
row_red[9]
PIN_122
P58
RL10
row_red[10]
PIN_121
P59
RL11
row_red[11]
PIN_120
P60
RL12
row_red[12]
PIN_119
P61
RL13
row_red[13]
PIN_114
P62
RL14
row_red[14]
PIN_113
P63
RL15
row_red[15]
PIN_82
IO/CLK1
RL16
totalnoh[0]
PIN_79
IO/CLK2
A3
totalnoh[1]
PIN_78
IO/CLK3
B3
totalnol[0]
PIN_77
IO/GSR1
A4
totalnol[1]
PIN_76
IO/GSR2
B4
totalnol[2]
PIN_75
IO/GTS1
C4
totalnol[3]
PIN_74
IO/GTS2
D4
 
6、状态流程图:
n      系统工作状态流程
主程序流程图:
                    
 
 
 
 
 
移位、停取车、复位子程序流程:
7、各主要模块仿真结果波形

n     

复位、初始化信号
各模块的仿真波形,详细注释输入输出功能端口

键盘输入信号
手动停车
自动停车
取车
 

 
 
 

时钟信号
Auto=0手动模式
Auto=1自动模式

车架及车辆信息
输入行列信息(数码管)
车辆总数信息(数码管)
 

 
 
8、课程设计总结
n      预期的目标与当前实现功能的差异详细注释
除去由于芯片的逻辑单元限制而导致编号系统未实现外,其余部分都与预期的一致。另外在具体设计的过程中考虑增加计时部分,记录车场中每辆车停放的时间,以用于在取车时结算收费。这部分的功能也已经编程实现,但是和编号系统一样,也是由于芯片限制,没有经过最后的实物部分的测试。
n      可以进一步发挥提高的部分
有待提高的部分也还有很多。其中比较具有实际意义的,比如将系统的兼容性更好的利用现有的点阵展示出来,可以在程序最初设置一个初始化的过程,输入行列然后生成具体的显示方式,由于程序本身已经考虑了对于不同行列停车场的算法的兼容,只需在状态切换和输出显示模块做一定调整修改即可实现。
此外,停车场移位算法也是可以继续优化的一部分。进一步考虑移位的时间和空间复杂度,尽可能的将能耗和时间消耗降到最小,可以增加系统的实用性。
当然,另外还可以考虑简化便利搜索逐个赋值等算法,减少整个系统占用的逻辑单元,以实现已经设计好的编号系统和计时系统的。
n      课程设计体会
首先说说程序设计中的具体体会。状态机,还是硬件电路中最核心的模块,在经过这样较大规模的程序设计之后,对这一点的体会更加深刻。状态机的把握直接体现了对整个程序流程的把握。这里的状态机已经不仅仅是指程序框架中的一个模块,而可能是对应某一个模块中的很小一部分,只要它的功能是控制其中的具体工作流程,它就是状态机。很多让人苦思不得其解的问题,引入逻辑清晰的状态机之后可以很快很流畅的得以解决。
越是简单的语句,所占用的资源越少,但是代价是其可读性、编程难度会随之上升。当然对于初学者,如果对某一门语言的比较高级复杂的语句还没有完全掌握,使用简单语句是很好的选择,但是必须在编写之前在纸上或者在脑中有对整个程序流程一个很好的框架把握。
再谈谈整个数字系统课程设计中的收获。在知识方面,当然最直接的是收获了一门语言,当然与此同时是对硬件电路和硬件语言的理解上的深入。
个人认为,更大的收获在于能力方面的培养。从对一个系统的构想,设计到最后的实现,其中包含了很多元素,而这些东西靠对书本知识的学习是永远无法掌握的。也就是所谓的在实践中学习。在构思选题上,必须考虑各种因素比如硬件限制,规模限制和个人能力限制,当然在这个过程中是不可能将之后的所有困难都设想到位的,因此就带来了后续编程实现过程中的调整,也就培养了针对非常具体的问题的细微调整。很多时候都是盯着程序很久毫无进展,这就需要我们跳出之前的思维模式进行新的思考。在设计过程中,考验和锻炼的使我们统筹全局,定性分析的能力。将某一个功能划分给某一个模块,将某一个功能划分成几个具体步骤等等。总之,这些能力的培养在以后的各个方面都会有很大的实用性。
在整个实验过程遇到的困难也是相当可观的。卡在一个问题上很久没有进展的时候锻炼的已经不仅仅是一个人的能力,更重要的是在困难面前的心态和素养。这个方面的锻炼更加抽象,当然也更可贵。
9、参考文献