APP下载

基于FPGA的电梯控制器

2019-10-08吴雪颜

软件 2019年4期
关键词:状态机

摘  要: 本文介绍了基于FPGA设计的一种四层电梯控制器,使用有限状态机实现,采用VHDL语言对其进行描述,通过Quartus II 13.0软件及ModelSim软件进行电路的综合与仿真,验证了此电梯控制器设计的正确性。

关键词: FPGA;电梯控制器;VHDL;状态机

中图分类号: TP342+.3    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.04.041

本文著录格式:吴雪颜. 基于FPGA的电梯控制器[J]. 软件,2019,40(4):190195

【Abstract】: The paper introduces a four-layer elevator controller design based on FPGA, which is implemented by finite state machine and described by VHDL language. Carrying on synthesis and simulation of the circuit with Quartus II 13.0 and ModelSim software, verifies correctness of the elevator controller design.

【Key words】: FPGA; Elevator controller; VHDL; State machine

0  引言

随着我国城市化的发展,高层建筑不断增多,电梯已经进入了人们的日常生产生活之中,作为具有足够安全性的动力驱动升降装置,电梯成为高层建筑中必不可少的垂直运输交通工具[1]。可编程逻辑器件(如FPGA、CPLD)的广泛应用,使得电子系统的设计更加方便灵活,改变了传统数字系统设计的方法,推动了EDA技术的发展[2]。本文中的电梯控制器利用现场可编程门阵列(FPGA)进行设计,并进行了仿真。

1  EDA技术

在计算机技术的推动下,20世纪末,电子技术获得了飞速的发展,EDA(Electronics Design Automation)技術就是现代电子设计技术的核心。EDA技术依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动的完成逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试等功能,直至实现既定性能的电子线路系统功能[3]。

可编程逻辑器件是通过EDA技术将电子应用系统的既定功能和技术指标具体实现的硬件载体,FPGA作为实现这一途径的主流器件之一,具有直接面向用户,灵活性和通用性极大,使用方便,硬件测试和实现快捷等特点[4]。

硬件描述语言(HDL)是一种用来设计数字逻辑系统和描述数字电路的语言[5],常用的主要有VHDL、Verilog HDL、System Verilog和Symtem C。作为一种全方位的硬件描述语言,VHDL具有与具体硬件电路无关、与设计平台无关的特性,具有宽范围描述能力、不依赖于特定的器件、可将复杂控制逻辑的设计用严谨简洁的代码进行描述等优点,得到众多EDA公司的支持,在电子设计领域得到了广泛应用[6]。

有限状态机(Finite-state machine, FSM),简称状态机,是表示有限个状态以及在这些状态之间进行转移和动作等行为的数学模型[7]。在许多方面,有限状态机都有其难以超越的优越性,主要表现在它作为高效的顺序控制模型,容易利用现成的EDA工具进行优化设计,系统性能稳定,具有高速性能和高可靠性能。有限状态机广泛应用于数字系统、工业自动化、计算机系统等领域[8]。

2  系统设计及仿真

2.1  硬件原理

四层电梯的硬件原理如图1所示,包括两台电机,一台用于吊升电梯轿厢,一台用于控制电梯门的开关。轿厢和对重分别连接在曳引绳两端,轿厢作为运载乘客或货物及其他载荷的箱体部件,对重则具有平衡轿厢载荷和减小电机功率的作用。

2.2  输入输出端口信号

根据图1可以总结出电梯控制器的输入输出端口信息如表1所示,其中电梯轿厢位置信号(in_ cage_pos)和电梯门开闭位置信号(in_door_pos)实际中由传感器采集得到(对电梯控制器来说是输入信号)。但在本设计中为了简化仿真激励文件,这两个信号由轿厢电机和门控电机的控制信号(out_cage_dir, out_cage_en, out_door_dir, out_ door_en)的生效时间直接生成(比如可以用100个clk时间电梯上行或下行1层的距离,用100个clk时间电梯门可从全开状态关闭成全闭状态)[9]。因此这两个信号可作为内部信号,不体现在端口上。但为了仿真观测方便,把生成的这两个信号作为输出,并将这两个信号的名字改为了out_cage_pos和out_door_pos。

2.3  内部信号设置

首先,12个按键的请求状态端口信号,以及 out_door_pos、out_cage_pos、out_cage_dir、out_ cage_en、out_door_dir、out_door_en 端口信号,这18个端口的方向是输出的,由于程序内部需要对这些信号进行读取,因此为他们设置内部信号;其次开门状态持续一定的时间后需要自动关门,这需要一个定时计数器信号。内部信号设置如表2所示。

2.4  进程分类

(1)号进程为分频时钟产生进程,当检测到由外部提供的时钟信号时,则产生由FPGA内部的PLL锁相环进行分频处理,从而产生分频时钟信号[10]。

(2)号進程为door_pos,cage_pos产生进程,用来产生轿厢的位置信息和电梯门开关的位置信息。如果复位信号rst有效,则电梯门复位至全关闭状态,轿厢初始在一层。

如果电梯门在运动且门在关闭中,若门原本是全关闭状态则继续全关闭状态,否则门关闭;若门原本是全开状态则继续保持全开状态,否则门慢慢打开。

如果轿厢在运动且轿厢下行,若轿厢原本在一层则继续保持在一层,否则轿厢向下运动,若轿厢原本在四层则继续保持在四层,否则轿厢向上运动。

(3)号进程为doortimer定时进程,用于计算电梯门的等待时间。如果复位信号rst有效,则电梯门等待时间清零重新计数。

如果门不处于全开状态,则电梯门等待时间清零重新计数。

如果门处于全开状态,若轿厢内按了开门按键,则电梯门等待时间清零重新计数;若电梯门等待时间没到限制的时间,那么继续等待,计数累加;否则给等待计时器到达时间的标志。

(4)号进程为12个按钮请求生效和失效处理进程,用于楼层的上下楼按键、轿厢内的开关门按键、轿厢内的楼层按键的生效和失效处理。如果复位信号rst有效,则12个按键请求初始不作用,为失效状态。

楼层的上下楼按键:

若一层按上行,则一层上行请求生效,直到电梯在一层门全开状态,一层上行请求失效;

若二层按上行,则二层上行请求生效,直到电梯在二层门全开状态,二层上行请求失效;

若二层按下行,则二层下行请求生效,直到电梯在二层门全开状态,二层下行请求失效;

若三层按上行,则三层上行请求生效,直到电梯在三层门全开状态,三层上行请求失效;

若三层按下行,则三层下行请求生效,直到电梯在三层门全开状态,三层下行请求失效;

若四层按下行,则四层下行请求生效,直到电梯在四层门全开状态,四层下行请求失效。

轿厢内的开关门按键:

如果电梯停在任意一层按轿厢内的开门按键,则开门请求生效,否则电梯门处于全打开状态,开门请求失效;

如果电梯停在任意一层按轿厢内的关门按键或电梯门等待时间到达,则关门请求生效,否则门全关或开门请求生效,关门请求失效。

轿厢内的楼层按键:

若轿厢内按一层,轿厢内一层指示按键生效,当电梯停在一层门全开,轿厢内一层指示按键失效;

若轿厢内按二层,轿厢内二层指示按键生效,当电梯停在二层门全开,轿厢内二层指示按键失效;

若轿厢内按三层,轿厢内三层指示按键生效,当电梯停在三层门全开,轿厢内三层指示按键失效;

若轿厢内按四层,轿厢内四层指示按键生效,当电梯停在四层门全开,轿厢内四层指示按键失效。

(5)号进程为楼层显示进程,用于楼层的显  示器的显示控制。如果复位信号rst有效,则楼层显示‘1。

若轿厢位置在一层,楼层显示‘1;

若轿厢位置在二层,楼层显示‘2;

若轿厢位置在三层,楼层显示‘3;

若轿厢位置在四层,楼层显示‘4。

(其中用7位段选码控制显示数码管数字“gfedcba”)

(6)号进程为运动控制进程,用于产生cage_dir, cage_on,door_dir,door_en等运动控制的信号,确定电梯门和轿厢的运动状态。如果复位信号rst有效,则运动状态初始化。

如果轿厢不运动:

若轿厢在一层、电梯门不运动且门全关闭,当一层按上行或轿厢内按开门或轿厢内按一层时门打开,当二层按上行或下行、三层按上行或下行、四层按下行或轿厢内按二、三、四层时轿厢上行;若门为全开状态,当轿厢内按关时门关闭。

若轿厢在二层、电梯门不运动且门全关闭,当二层按上行或下行、轿厢内按开门或轿厢内按二层时门打开,当三层按上行或下行、四层按下行、轿厢内按三层或四层时轿厢上行,当一层按上行或轿厢内按一层时轿厢下行;若门为全开状态,当轿厢内按关时门关闭。

若轿厢在三层、电梯门不运动且门全关闭,当三层按上行或下行、轿厢内按开门或轿厢内按三层时门打开,当四层按下行或轿厢内按四层时,轿厢上行,当一层按上行、二层按上行或下行、轿厢内按一层或二层时,轿厢下行;若门为全开状态,当轿厢内按关时门关闭。

若轿厢在四层、电梯门不运动且门全关闭,当四层按下行、轿厢内按开门或按四层时门打开,当一层按上行、二层按上行或下行、三层按上行或下行、轿厢内按一层或二层或三层时轿厢下行;若门为全开状态,当轿厢内按关时门关闭。

当轿厢在任意一层且电梯门运动,如果门打开中,当门的位置全开后门停止运动;如果门关闭中,当轿厢内按开门时门打开,当门的位置到全关闭状态后停止。

如果轿厢上行时:

若轿厢上行到一层,当一层按上行或轿厢内按一层时,轿厢停止运动。

若轿厢上行到二层,当二层按上行或轿厢内按二层时,轿厢停止运动;当二层按下行并且轿厢内没有按三层或四层、三层没有按上行或下行、四层没有按下行时,轿厢也停止运动。

若轿厢上行到三层,当三层按上行或轿厢内按三层时,轿厢停止运动;当三层按下行并且四层没有按下行、轿厢内没有按四层时,轿厢也停止运动。

若轿厢上行到四层,轿厢停止运动。

如果轿厢下行时:

若轿厢下行到一层,轿厢停止运动。

若轿厢下行到二层,当二层按下行或轿厢内按二层时,轿厢停止运动;当二层按上行并且一层没有按上行、轿厢内没有按一层时,轿厢也停止运动。

若轿厢下行到三层,当三层按下行或轿厢内按三层时,轿厢停止运动;当三层按上行并且一层没有按上行、二層没有按上行或下行、轿厢内没有按一层或二层时,轿厢也停止运动。

若轿厢下行到四层,轿厢停止运动;当四层按下行、轿厢内按四层时,轿厢也停止运动。

2.5  仿真结果

在Quartus II 13.0软件开发环境下,运用ModelSim软件进行如下过程仿真:电梯开始时在1层处于停止状态,一段时间后有人A在1层按下上升请求按钮,电梯门打开,人A进入后按下去4层的按钮,门延时自动关闭后开始上行,上行过程中有人B在3层按下上升请求按钮,电梯到达3层后停止,自动开门,人B进入后按下手动关门按钮,但门还没关上时发现人C从远处跑来要乘电梯,于是按住手动开门按钮等待人C,人C进来后人B松开手动开门按钮,电梯自动关门,上行至4层,电梯自动开门,延时一段时间后自动关门并停在4层。得到仿真波形如图2所示。

3  结论

本文基于FPGA设计了一种四层电梯控制器,使用有限状态机实现,详细介绍了电梯控制器系统的信号设置及进程分类,由仿真波形可以看出本设计实现了四层电梯控制器的功能。同时此电梯控制器采用FPGA进行设计,性能稳定,具有高可靠性。

参考文献

[1] 任晓峰. 大样本检验数据对电梯风险评估的应用[J]. 电子元器件与信息技术, 2018(07): 22-24+28.

[2] 郭霞, 杨拴科, 张安莉, 等. 《模拟电子技术实用教程》教材建设与实践[J]. 电子测试, 2018(24): 107-108+123.

[3] 李文. 基于蚁群算法的电梯群控系统控制器设计[J]. 西昌学院学报(自然科学版), 2017, 31(04): 43-46.

[4] 罗建, 姜玲. 智能电梯控制系统优化设计[J]. 科学咨询(科技·管理), 2018(01): 45+47.

[5] 冯建文. 有限状态机在FPGA硬件实验中的应用[J]. 实验室研究与探索, 2017, 36(06): 138-141.

[6] 蔡景新. 电梯管理对电梯运行质量积极影响研究[J]. 新型工业化, 2018, 8(03): 47-51.

[7] 李鹏, 杨保亮, 胡勤国, 等. 基于可编程控制器的群控电梯模型设计与实现[J]. 重庆文理学院学报, 2015, 34(05): 76-80.

[8] 孙宏旭, 邢薇, 陶林. 基于有限状态机的模型转换方法的研究[J]. 计算机技术与发展, 2012, 22(02): 10-13+17.

[9] 兰夏燕, 万舟, 许有才, 等. 基于SVD优化EMD的电梯导靴振动信号故障 特征提取[J]. 软件, 2017, 38(08): 25-31.

[10] 罗杰, 康华光. 两种硬件描述语言VHDL/Verilog的发展及其应用[J]. 电气电子教学学报, 2002(04): 1-5.

猜你喜欢

状态机
基于有限状态机的交会对接飞行任务规划方法
基于状态机比对的状态机推断方案
双口RAM读写正确性自动测试的有限状态机控制器设计方法
FPGA设计中状态机安全性研究
基于反熔丝FPGA的有限状态机加固设计
基于VHDL的一个简单Mealy状态机