资源描述
目录
基于EDA技术的电梯控制系统设计 2
1绪论 2
1.1本课题的来源、目的、意义 2
1.2国内外研究现状,发展趋势,存在的主要问题 2
1.3课题研究的指导思想与主要内容 4
2电梯控制系统方案论证 4
2.2 基于PLC技术的电梯控制设计方案 5
2.2 基于EDA技术的电梯控制设计方案 6
2.2.1 VHDL介绍 7
2.2.2MAX+PlusⅡ的流程介绍 8
2.3 方案选择 8
3 EDA电梯控制设计 9
3.1电梯控制器的系统设计原理 9
3.2 EDA电梯控制设计框图 9
3.3算法分析 14
3.3.1电梯运行规则 14
3.4 端口、寄存器设计说明 17
3.4.1模块设计说明 18
3.4.2 具体语句设计说明 21
3.4.4程序调试 25
4仿真与调试 29
4.1波形输入建立 29
4.2 电梯运行情况仿真 31
4.3电梯功能仿真 34
5总结与展望 35
5.1设计功能实现情况 35
5.2设计存在问题 36
5.3 进一步完善建议与总结 36
参考文献 38
致谢 39
附录 40
基于EDA技术的电梯控制系统设计
1绪论
1.1本课题的来源、目的、意义
本课题来源于社会实践。
课程设计目的: 生活在继续,科技在发展,电梯也在进步。通过对EDA技术的电梯系统的课程设计,更深的掌握EDA控制系统的设计方法,编程技巧以及电气常用元器件的选型;掌握控制系统主电路、控制程序的分析和设计方法;同时掌握电气线路原理图的绘制方法,培养个人综合运用专业知识、技能去分析和解决本专业范围内的一般工程技术问题的能力,培养自身建立正确的设计思想,掌握课程设计的一般程序、规范和方法。
随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
电梯广泛应用在大型的货运之中。其使用便捷,货运周期短,效率高,成本低,对货运事业具有相当的经济价值。时至今日,电梯技术经过多次革命性的改进和完善,主流产品大多采用微机控制、变频调速、永磁同步无齿轮主机曳引驱动的技术,使用安全和运行节能得到兼顾。由于中国电梯的高速发展阶段有幸与世界电梯技术飞跃发展阶段同期,故中国电梯产品在技术上与国际先进潮流基本同步。
1.2国内外研究现状,发展趋势,存在的主要问题
在经济不断发展,科学技术日新月异的今天,楼的高度已和经济发展同样的速度成长起来。行业数据表明,2014 年上半年我国整梯生产台数增长率超过了10%,下半年发货量与订单相比比例递减,但全年产销量增速保持在10%左右,相比上一年度增速有所放缓。但全年整梯总产量突破70 万台已成定局,全国电梯保有量将达到350万台 以上。
我国已经成为全球最大的电梯生产和消费市场,世界上主要的电梯品牌企业均在我国建立独资或合资企业,是电梯领域的世界工厂和制造中心。全球70%的电梯在中国制造,60%至65%的电梯销售在中国市场。
业内人士分析,我国电梯行业产业集中度不断提高,发展趋势向好。产业发展格局发生显着变化,表现出强者更强,弱者更弱,行业已进入洗牌期。一些品牌开始陆续在中西部地区投产,使产业布局更加合理。作为建筑的中枢神经,电梯起着不可或缺的作用,电梯作为建筑物内的主要运输工具,像其他的交通工具一样,已经成为我们日常生活的一个不可缺少的组成部分。一个国家的电梯需求总量,主要受其经济增长速度、城市化水平、人口密度及数量、国家产业结构等综合因素的影响。在全球经济持续低迷的情况下,我国国民经济仍然以较高的速度持续增长,城市化水平不断提高。这从客观上导致了我国电梯行业的空前繁荣景象,我国已经成为全球最大的电梯市场。上世纪80年代以来,随着经济建设的持续高速发展,我国电梯需求量越来越大。总趋势是上升的,目自口进入了“第三次浪潮”,2005年安装验收电梯124465台,截至05年底,我国的在用电梯总数已达651794台。如此庞大的市场需求为我国电梯行业的发展创造了广阔的舞台!
我国电梯行业已经具备了很强的生产能力。兴旺的电梯市场吸引了全世界所有的知名电梯公司,美国奥的斯、瑞士迅达、芬兰通力、德国蒂森、同本三菱、日立、东芝、富士达等13家大型外商投资公司在国内的市场份额达到了74%”。先进技术和先进管理的引进对国内电梯企业产生了强大的推动作用。目前国内市场需要的电梯产品,我国电梯行业几乎全部可以生产,不但大量替代了进口,而且有一定的出口。国产电梯的技术水平和产品质量正在稳步提高。自1985年我国参加了国际标准化组织ISO/TCl78以来,先后等同或等效采用了一批国际标准和先进国家的标准。标准的高起点使我国电梯行业在技术上居于有利地位。国产电梯以其高质量,低成本的优势赢得了越来越多的国内外客户,为逐步进入国际市场创造了有利条件。
中国电梯在亚洲市场占有越来越重要的位置,每年销售量己达l万台左右,约占亚洲市场的1/50,一些合资企业在出口创汇方面也做出了贡献。当今世界,电梯的生产情况与使用数量已经成为衡量一个国家工业现代化程度的标志之一。在一些发达的工业国家,电梯的使用相当普遍。
电梯行业内都知道,电梯的核心部件是电梯控制,该部件的好坏不仅影响电梯的运行质量,还会影响电梯的安全性和可靠性能。对于电梯控制系统来说,智能化的发展将是电梯行业未来发展的必经之路。将人工智能应用到电梯控制领域是从上世纪80年代开始的,那时人工智能蓬勃发展,专家系统、神经网络、模糊控制等许多最新的人工智能成果都被应用到电梯群控的派梯算法上,但这些具有智能化派梯策略的电梯在中国的使用却很晚,使用量并不是很大。这是由多种原因造成的。智能化电梯群控系统可以大大提高电梯群的派梯效率,减少乘客的候梯时间,降低电梯的能耗。
对电梯的原有机械电梯部分基本不作改动,包括提升部分、厅门控制部分等等,只是在原有电梯控制系统之上增加一层接口层,在接口层实现对电梯各种信号的采集和通过电梯的原有外部输入接口实现对电梯控制信号的输入,在接口层之上实现电梯群的智能化群控。
1.3课题研究的指导思想与主要内容
现代电子设计技术的核心是EDA技术。基于EDA技术开发的实现电梯自动控制与目前主流的利用可编程逻辑控制器实现电梯控制紧密相连。硬件描述语言是EDA技术的重要组成部分,通过对EDA技术的电梯系统的课程设计,更深的掌握EDA控制系统的设计方法,编程技巧以及电气常用元器件的选型;掌握控制系统主电路、控制程序的分析和设计方法;同时掌握电气线路原理图的绘制方法,培养个人综合运用专业知识、技能去分析和解决本专业范围内的一般工程技术问题的能力,培养自身建立正确的设计思想,掌握课程设计的一般程序、规范和方法。
具有采自易学易懂的梯形图语言、控制灵活方便、抗干扰能力强、运行稳定可靠等优点。随着电子技术的发展,EDA技术在工业控制系统中得到了广泛的应用,在电梯控制电路上采用EDA技术进行开发,越来越受到人们的重视。EDA技术开发手段多样,其中应用最为广泛的就是通过程序对硬件进行开发,而其中又数VHDL语言最受设计者的欢迎。
本课题所要达到的效果是:具体实现稳定,精确,可控制且操作方便的电梯控制系统能指示电梯的运行状态;电梯的门操作具有关门延时设置当电梯出现故障时,由看门狗信号报警,并且只有通过技术人员输入清除信号才能使电梯恢复正常的工作状态;电梯的超载报警程序能自动实现报警功能。
2电梯控制系统方案论证
2.2 基于PLC技术的电梯控制设计方案
可编程控制系统是一种专门为在工业环境下应用而设计的数字运算操作电子系统。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。
可编程控制器是计算机技术与自动化控制技术相结合而开发的一种适用工业环境的新型通用自动控制装置,是作为传统继电器的替换产品而出现的。随着微电子技术和计算机技术的迅猛发展,可编程控制器更多地具有了计算机的功能,不仅能实现逻辑控制,还具有了数据处理、通信、网络等功能。由于它可通过软件来改变控制过程,而且具有体积小、组装维护方便、编程简单、可靠性高、抗干扰能力强等特点,已广泛应用于工业控制的各个领域,大大推进了机电一体化的进程。PLC的特点可综述如下:
(1)高可靠性
(2)编程简单,使用方便(可采用梯形图编程方式,与实际继电器控制电路非常接近,一般电气工作者很容易接受)
(3)环境要求低(适用于恶劣的工业环境)
(4)体积小,重量轻
(5)扩充方便,组合灵活
PLC硬件框图如图1所示:
图1 PLC硬件框图
2.2 基于EDA技术的电梯控制设计方案
随着电子技术的发展,EDA技术在工业控制系统中得到了广泛的应用,在电梯控制电路上采用EDA技术进行开发,越来越受到人们的重视。EDA技术开发手段多样,其中应用最为广泛的就是通过程序对硬件进行开发,而其中又数VHDL语言最受设计者的欢迎。
VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。其行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。VHDL语言的设计单元包括实体(entity)、结构体(architecture)、程序包(package)以及配置(configration)。
初级设计单元――实体(entity),是设计的基本模块和设计的初级单元,在分层次设计中,顶层有顶级实体,含在顶级实体中的较低层次的描述为低级实体,靠配置把顶层实体和底层实体连接起来。实体说明中还可以说明数据类型、子程序和常量等数据信息,实体语句常用于描述设计常用到的判断和检查信息。
次级设计单元――结构体(architecture),实体的结构体具有描述实体的行为功能,一个实体可以有多个结构体,一种可能为行为描述,另一种可能为结构描述。结构体能以行为、数据流和结构等多种方式描述实体。
VHDL语言还包括程序包(package)和配置(configration)初级设计单元。
VHDL语言的基本术语往往能体现其严密的逻辑结构:
VHDL语言的基本术语包括进程(process)、类属(generic)、属性(attribute)以及驱动(drive)。
进程(process)是VHDL中的基本执行单元,仿真时把所有的操作划分为单个或多个进程。进程内部只含顺序执行的语句,即一串信号赋值中仅最后的赋值有效。进程内不能说明信号,而变量在进程内说明。
其具体的流程图如图2所示。
设计思想及模块化
设计输入
设计实现
设计仿真
器件编程
系统测试
图2 VHDL设计流程图
2.2.1 VHDL介绍
VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardw语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEE STD 1076-1987)[2]。1993年更进一步修订,变得更加完备,成为ANSI/IEEE的Aare Descriptiong Language.翻译成中文就是超高速集成电路硬件描述NSI/IEEE STD 1076-1993标准。目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。在Max+PlusⅡ软件平台上有很多种输入方式,特别介绍VHDL是因为用VHDL语言进行数字逻辑电路和数字系统的设计,是电子电路设计方法上的一次革命性变革。与传统设计方法相比,VHDL描述电路行为的算法有很多优点:
设计层次较高、用于较复杂的计算时,能早发现存在的问题,缩短设计周期。
独立实现,修改方便,系统硬件描述能力强。
可读性好,有利于交流,适合于文档保存。
VHDL语言标准、规范、移植性强。
VHDL类型多而且支持用户自定义类型,支持自顶而下的设计方法和多种电路的设计。
2.2.2MAX+PlusⅡ的流程介绍
(1) 设计准备在对可编程逻辑器件的芯片进行设计之前,首先要进行方案论证、系 统设计和器件选择等设计准备工作。设计者首先要根据任务要求,如系统所完成的功能及复杂程度,对工作速度和器件本身的资源、成本及连线的可布通性等方面进行权衡,选择合适的设计方案。
(2) 设计输入:设计者将所设计的系统或电路以开发软件要求的某种形式表现出来,并送入计算机的过程称为设计输入。设计输入通常有以下几种方式。
(a) 原理图输入方式
(b) 硬件描述语言输入方式
(c) 波形输入方式
(d) 层次化设计输入方式
(3) 项目编译(设计处理)这是器件设计中的核心环节。在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合和优化,并适当地用一片或多片器件自动进行适配,最后产生编程用的编程文件。
(4) 仿真和定时分析(项目校验):设计项目的校验包括设计项目的仿真(功能仿真)、定时分析两个部分。一个设计项目在编译完成后只能为项目创建一个编程文件,但并不能保证是否真正达到了用户的设计要求,如逻辑功能和内部时序要求等。所以在器件编程之前应进行全面模拟检测和仿真调试,以确保其设计项目在各种可能的情况下正确响应和正常工作,这就是项目校验(仿真调试)的必要性。MAX+plusⅡ提供的设计校验过程包括仿真和定时分析,项目编译后,为确保设计无误,再用专门软件进行仿真[6]。如果发现了错误,则对设计输入进行部分修改直至无误。
2.3 方案选择
PCL的体系结构是封闭的,各PCL厂家的硬件体系互不兼容,编程语言几指令系统也各异,当用户选择了一种PCL产品后,必须选择与其相应的控制规程,并且学习特定的编程语言。
EDA技术的快速发展,已广泛应用于电子设计与控制的各个方面,EDA电梯设计方便,适合各种编程语言,电梯房上下楼方便,只要按下楼层按纽,想到几层就可一会儿功夫,效率高,免去了爬楼梯的劳累与苦恼。
就上述比较而言,本设计采用EDA方案更恰当。
3 EDA电梯控制设计
3.1电梯控制器的系统设计原理
随着EDA技术的快速发展,CPLD/FPGA已广泛应用于电子设计与控制的各个方面。但是本设计屏弃以前老式的采用PLC设计电梯控制器,而是使用EDA技术来实现对电梯的控制的。
1电梯控制器的功能及设计要求
电梯控制器是控制电梯按照顾客要求自动上下的装置。电梯控制器的功能如下:
(1) 每层电梯入口处设上下请求开关,电梯内设顾客到达层次的停站请求开关。
(2) 设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。
(3) 电梯每秒上升(下降)一层楼。
(4) 电梯初始状态为一层开门状态。
采用状态机来实现电梯控制器,思路比较清晰,通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第二秒”、“开门等待第三秒”、“开门等待第四秒”、“上升”、“下降”和“停止”状态。各个状态之间的转换条件可由上面的设计要求所决定。
3.2 EDA电梯控制设计框图
1电梯控制器的设计思路
电梯控制器流程
外部按键设备
请求信号寄存器
状态寄存器
内部软件执行器构
外部硬件执行器构
图3 总流程图
当外部按键设备接受到上升、下降和停止请求时,由请求信号寄存器存储。数据选择器对按键请求进行选择,并将选择的结果发送到状态寄存器中。主控制器中的软件执行器响应按键请求并发送控制请求给外部硬件,要求其执行按键请求。
主控制器对当前电梯状态判断,显示当前所在楼层并清平层信号。当外部键发出上升或下降请求时,响应外部请求并显示上升或下降。到达请求楼层后消该层信号之后主控制器判断有无同相选层信号如果有则消除同相选层信号,之后扫描电梯位置判断目的层是否到达进行上行控制后下行控制。其过程如下图4所示。
初始化
有无平层信号
N
等待请求
Y
显示
清平层信号
目的层到否
N
Y
上/下运行
上下行判断
停车
消该层信号
有无同相选层信号
停车
有无同向选层信号
消同向选层信号
扫描电梯位置
N
目的层到否
Y
上行控制
下行控制
返回
图4 电梯运行流程图
扫描当前层
初始化
下降请求请求
一层开门等待
上升
上升请求
N
N
下降
Y
Y
Y
到最低层请求
Y
到最高层
N
上升模式
下降模式
N
到目的层请求
N
到目的层请求
Y
N
Y
停车
一层开门等待
图6 下降模式流程图
图5 上升模式流程图
图5和图6表示当分别接收到上升请求和下降请求时主控制器对外部的响应过程。
本论文设计的电梯控制系统的流程图主要有:总流程图[5],电梯运行流程图,上升模式流程图,下降模式流程图和停车门控制流程图,其中总流程图指出了整个电梯系统各个部分的联系,但是本设计的主要部分为电梯的控制系统,所以对这一部分不做过多介绍;电梯的运行流程图则明确的指出了控制系统根据电梯当前状态和外部请求信号做出相应的控制,例如:当电梯在二层楼的时候,接收到第四层楼的下降请求和第三层楼的上升请求,则电梯会先响应第三层楼的请求,当到达第三层楼后,在消除这一信号,接着响应第四层楼的请求;而电梯的上升和下降模式流程图则更加具体的指出了电梯在什么情况下上升,在什么情况下下降,上升过程中和下降过程中的一些具体情况;门制系统也是很重要的一部分,它形象的表达了电梯在到达所指定的楼层后所做出的反应及其所等待时间。总之,这五个流程图将电梯控制系统具体化,有利于后面的设计。
2电梯控制器的功能
(1) 主控制器的功能
(a) 完成4个楼层多用户的载客服务控制。
(b) 电梯运行时显示电梯的运行方向和所在的楼层。
(c) 当电梯到达选择的楼层时,电梯自动开门。
(d) 具有提前关电梯门和延时关电梯门的功能。
(e) 响应分控制器的有效请求,如果到达有请求的楼层,电梯自动开门。
(2) 分控制器的功能是显示电梯的运行状态和所在的楼层,和显示乘客的上升和下降请求。
(3) 分控制器的有效请求原则:
( a) 电梯处于等待状态时,上升和下降请求都响应。
(b) 电梯处于上升状态时,有上升请求的分控制器所在楼层数大于电梯所在的楼层数。
(c) 电梯处于下降状态时,有下降请求的分控制器所在楼层数小于电梯所在的楼层数。
3电梯系统的设计
控制器的功能模块如图7所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在的楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控的楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。
状态显示
分控制器
主控制器
译码器
楼层显示
楼层选择
图7 电梯控制器原理框图
3.3算法分析
3.3.1电梯运行规则
(1)请求信号分析:
电梯的请求信号可分为梯内请求和梯外请求,如果从这个角度就很难去进行对电梯运行可能情况的分析,因为电梯的运行是根据梯外和梯内的请求信号、行程信号进行控制,而梯外和梯内的请求是随机且不能以有限的规则去对其进行说明的。因此,很难对电梯的运行情况作出一个统一的分析。出于这方面的考虑,本设计把电梯的请求信号划分为上升请求和下降请求。
电梯接收到请求信号后,都必须作预操作。使电梯进入预上升状态的请求信号就是上升请求信号。具体来说,就是当电梯所在楼层低于发出梯外请求的楼层或者低于梯内请求所要到达的目的楼层时,电梯必须在下一操作中作出上升运行。这时的请求信号就是上升请求信号。反之,则是下降请求信号。
(2)电梯处于各楼层时的运行情况:
处于一楼时,不管是梯内梯外,电梯都只可能接收到上升的请求信号。此时,电梯就进入预上升状态,准备作上升运行。如果电梯没有接收到请求信号,电梯则在一楼待机。其分析图如图6所示。
处于二楼时,电梯则可能出现三种情况:
① 电梯并没有接收到梯内梯外的任何请求信号时,电梯返回一楼待机;
② 电梯接收到上升请求信号,进入预上升状态;
③ 电梯接收到下降请求信号,进入预下降状态。
其分析图如图7所示。
处于三楼时,不管是梯内梯外,电梯都只可能接收到下降的请求信号。此时,电梯就进入预下降状态,准备作下降运行。如果电梯没有接收到请求信号,电梯则返回一楼待机。其分析图如图8所示。
在电梯运行过程中,存在一个如何处理信号优先的问题。电梯实际上是一个人机交互式的控制系统,单纯用顺序优先或逻辑优先是不能满足控制要求的,因此,控制系统采用随机逻辑方式控制去解决信号优先的问题。即在以顺序逻辑控制实现电梯的基本控制要求的基础上,根据随机的输入信号,以及电梯的相应状态适时的控制电梯的运行。例如,当电梯在三楼时,二楼、一楼梯外均有上升请求信号:电梯以向下的方向接近二楼的减速位置,判别二楼具有同向的请求信号,在二楼减速停止载客,然后继续下降到一楼载客。又假如,当电梯在三楼时,梯内有到达一楼的下降请求信号,而二楼则有上升请求信号:当电梯以向下的方向接近二楼的减速位置时,判别二楼具有反向的请求信号,系统将把二楼的上升请求保存到上升请求寄存上,不在二楼作停泊继续下降到一楼去载客,然后读取上升请求寄存中先前二楼的上升请求,执行上升到二楼载客的操作。该动作完毕后,被保存的寄存器中的数据清除,以实现下一次随机逻辑控制。
(3)对电梯开门、关门、报警等内部信号处理的分析。其流程如图8所示:
图8 电梯内外信号处理
当电梯接收到请求信号后,将以随机逻辑控制的方式到达发出请求的楼层。开门使能信号促使电梯开门载客,同时驱动关门延时信号、超重检测以及故障检测。在电梯进行完关门倒数计时、超重排除以及故障排除后,关门使能信号将促使电梯关门进入预操作状态。如果此前出现提前关门信号而且电梯也已经进行完超重排除和故障排除,电梯同样关门进入预操作状态。
电梯在超重检测时发现超重,关门中断信号会促使电梯发出超重警报并且进行开门操作以减少乘客,重新进入载客操作;电梯在故障检测时,发现电梯某部分出现故障,关门中断信号会促使电梯发出故障报警并且进入开门操作的同时停止关门延时,作故障处理待机。
3.4 端口、寄存器设计说明
(1)由功能要求得到本程序设计的端口必须包括:
时钟信号(clk);
超载信号(full)、关门中断信号(deng)、提前关门信号(quick)、清除报警信号(clr);
一楼电梯外人的上升请求信号(c_u1)、二楼电梯外人的上升请求信号(c_u2);
二楼电梯外人的下降请求信号(c_d2)、三楼电梯外人的下降请求信号(c_d3);
电梯内人请求到达一楼信号(d1)、电梯内人请求到达二楼信号(d2)、电梯内人请求到达三楼信号(d3);
到达一楼信号(g1)、到达二楼信号(g2)、到达三楼信号(g3);
电梯门控制信号(door);
电梯所在楼层显示(led);
电梯外人上升请求信号显示(led_c_u)、电梯外人下降请求信号显示(led_c_d);
电梯内请求信号显示(led_d);看门狗报警信号(wahaha)、超载警告信号(alarm);
电梯运动方向显示(ud);
电机向上控制信号(up)、电机向下控制信号(down)。
其端口分布如图9所示:
图9 控制器的端口
(2)由相关端口得到程序要求的寄存器包括:
电梯内人请求到达一楼信号寄存(d11)、电梯内人请求到达二楼信号寄存(d22)、 电梯内人请求到达三楼信号寄存(d33);
一楼电梯外人上升请求信号寄存(c_u11)、二楼电梯外人上升请求信号寄存(c_u22);
二楼电梯外人下降请求信号寄存(c_d22)、三楼电梯外人下降请求信号寄存(c_d33);
分频信号(q);
关门延时计数器(q1)、看门狗计数器(q2);
电梯内请求信号寄存器(dd);
电梯外上升请求信号寄存器(cc_u)、电梯外下降请求信号寄存器(cc_d);
电梯请求信号寄存器(dd_cc);
开门使能信号(opendoor);
电梯运动方向信号寄存器(updown);
预备上升操作使能(en_up)、预备下降预操作使能(en_dw)。
3.4.1模块设计说明
本程序由三个基本模块组成,包括调用VHDL库模块、实体设计模块和结构体设计模块。而在结构体模块中又内嵌有进程执行单元。
(1)调用VHDL库
通过library语句,本程序应用了VHDL库中的“通用ieee库”和“标准std库”。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
(2)entity实体设计模块
entity dianti is
port ( clk : in std_logic;
full,deng,quick,clr : in std_logic;
c_u1,c_u2: in std_logic;
c_d2,c_d3: in std_logic;
d1,d2,d3: in std_logic;
g1,g2,g3: in std_logic;
door : out std_logic_vector(1 downto 0);
led : out std_logic_vector(3 downto 0);
led_c_u:out std_logic_vector(2 downto 0);
led_c_d:out std_logic_vector(2 downto 0);
led_d : out std_logic_vector(2 downto 0);
wahaha : out std_logic;
ud,alarm : out std_logic;
up,down : out std_logic );
end dianti;
实体语句用关键词entity开头,本程序以dianti(电梯的汉语拼音)作为所要描述的实体名,在结束实体语句的时候使用end dianti。在entity语句的实体说明部分,用port附语描述实体对外界连接的端口(数目、方向和数据类型),实体dianti有25个接口,
输入模式是clk/full/deng/quick/clr/c_u1/c_u2/c_d2/c_d3/d1/d2/d3/g1/g2/g3;其余的都是输出模式,其中door/led/led c_u/led c_d/led d是带数组模式的输出接口。
(3)architecture结构化设计模块和process进程执行单元
dianti符号下的线路图描述dianti网表,与线路图对应的VHDL architecture就是结构体,实体dianti以结构化与行为化描述的结构体如下:
architecture behav of dianti is
signal d11,d22,d33:std_logic;
signal c_u11,c_u22:std_logic;
signal c_d22,c_d33:std_logic;
signal q:integer range 0 to 1;
signal q1:integer range 0 to 6;
signal q2:integer range 0 to 9;
signal dd,cc_u,cc_d,dd_cc:std_logic_vector(2 downto 0);
signal opendoor:std_logic;
signal updown:std_logic;
signal en_up,en_dw:std_logic;
begin
com:process(clk)
···
end behav;
由于篇幅的关系,结构体部分并不能尽录。本模块以关键字architecture做结构体的开头,描述dianti实体的结构体behav。Architectecture和begin之间是结构体说明区,详细定义了各种信号端的模式和取值范围;begin和end之间是结构体语句区,在此将嵌入process进程语句去对实体行为作出说明。
com:process(clk)
begin
if clk'event and clk='1' then
if clr='1' then q1<=0;q2<=0;wahaha<='0';
elsif full='1' then alarm<='1'; q1<=0;
if q1>=3 then door<="10";
else door<="00";
end if;
···
dd<=d33&d22&d11;
cc_u<='0'&c_u22&c_u11;
cc_d<=c_d33&c_d22&'0';
dd_cc<=dd or cc_u or cc_d;
end if;
ud<=updown;
led_d<=dd;
led_c_u<=cc_u;
led_c_d<=cc_d;
end if;
end process;
关键字process后面括号中的信号为时钟信号,它列举可激活进程语句的信号,唯有这些信号上的事件能引起进程语句执行。
关键字begin把进程语句分为进程说明和进程语句两部分。进程说明在时钟信号和begin之间,说明局部变量或某些仅在进程内部用的内容。
进程语句部分在begin和end process之间,进程内的所有语句都是按顺序一个接一个执行的。
3.4.2 具体语句设计说明
上文已说明了构成VHDL程序的两大部分――实体和结构体的相关语句。在这些语句里,赋值语句占了相当一部分。在VHDL语言里,赋值符号一般都是“<=”符号,具体形式如下:
begin
if clk'event and clk='1' then
if clr='1' then q1<=0;q2<=0;wahaha<='0';
elsif full='1' then alarm<='1'; q1<=0;
if q1>=3 then door<="10";
else door<="00";
end if;
···
VHDL语言也具有与一般编程语言相同的一些语言逻辑结构,如上述中的“if···then···;elsif···then···;”等。这是VHDL中的顺序语句,与我们常见的C语言中if作为条件语句不同。本程序只使用到上述的语言结构,相对简易。
在实体模块中,对电梯的主要信号都一一作出了定义,具体说明给出如下:
port ( clk : in std_logic; --时钟信号
full,deng,quick,clr : in std_logic; --超载、关门中断、提前关门清除报警信号
c_u1,c_u2: in std_logic; --电梯外人的上升请求信号
c_d2,c_d3: in std_logic; --电梯外人的下降请求信号
d1,d2,d3 : in std_logic; --电梯内人的请求信号
g1,g2,g3 : in std_logic; --到达楼层信号
door : out std_logic_vector(1 downto 0); --电梯门控制信号
led : out std_logic_vector(6 downto 0); --电梯所在楼层显示
led_c_u:out std_logic_vector(2 downto 0); --电梯外人上升请求信号显示
led_c_d:out std_logic_vector(2 downto 0); --电梯外人下降请求信号显示
led_d : out std_logic_vector(2 downto 0); --电梯内请求信号显示
wahaha : out std_logic; --看门狗报警信号
ud,alarm : out std_logic; --电梯运动方向显示,超载警告信号
up,down : out std_logic ); --电机控制信号和电梯运动
在结构体中对电梯的运行行为作出描述,其中以电梯处于二楼的情况相对复杂,对此需作出具体说明,给出如下:
elsif g2='1' then
展开阅读全文