微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 电梯控制系统的实现,附软硬件架构图

电梯控制系统的实现,附软硬件架构图

时间:09-20 来源:3721RD 点击:

电梯将不能继续运行。在选择产品时,我们需要综合考虑线性度好、外围电路简单、灵敏度高,价格不高等综合因素。C 直流电机

直流电机是本项目的核心部分,起到了控制电梯的运动,它的正转反转也将由电机来驱动,在没有具体电梯材料的情况下,观察电机的驱动运作情况可以直接定性的反映本项目的情况。

C 电机测速模块

一块长度为l,宽度为b,厚度为d的半导体薄片,当它被置于磁感应强度为B的磁场中,如果在其相对两边流通控制电流I,且磁场方向与电流方向正交,则在该半导体另外两边将产生一个与控制电流I和磁感应强度B乘积成正比的电势UH,即UH=KHIB,其中KH为霍尔元件的灵敏度,该电势称为霍尔电势,该半导体薄片就是霍尔元件,其大小和外磁场及电流成比例。霍尔开关传感器由于其体积小,无触点,动态特性好,使用寿命长等特点,广泛应用于测量转动物体旋转速度领域。这里选用SPRAGUE公司生产的霍尔转速传感器,它是一种硅单片集成电路,其内部含有稳压电路、霍尔电势发生器、放大器、史密特触发器和集电极开路输出电路,具有工作电压范围宽、可靠性高、外电路简单、输出电平可与各种数字电路兼容等特点。

霍尔传感器信号放大器将霍尔电势UH放大后再经整形、放大,输出幅值相等、频率变化的方波信号,该霍尔电势的幅值随磁场强度变化而变化。

转速的测量方法有很多种,根据脉冲计数实现转速测量的方法主要有M法(测频法)、T法(测周期法)和MPT法(频率周期法)。该系统采用M法(测频法),霍尔传感器的测速电路,如图所示。

3.3系统软件架构

电梯控制的软件框架由电梯的模式作为主体框架,以完成模式下的功能为驱动进行设计,各个模式的简介如下:

故障修理模式:由管理员手动切换,在故障模式下工程人员可以实现对于电梯的故障检修

一般运行模式:由管理员手动切换,一般运行模式是电梯的主要模式,完成电梯的主要功能

直接运行模式:由用户切换或者管理员切换,直接运行模式下,电梯可以从当前层面直接到达底层。当出现火宅或者有病人需要急救时可以避免电梯在中间层停靠,以此争取宝贵的时间

3.4 系统软件流程

软件的设计是根据状态机的方式实现的,具体的软件框图如下:

图3   程序运行流程图

图3 程序运行流程图

3.4 系统预计实现结果

一些头文件的申明

一些变量的申明

#define repairMode 00

#define generalrunMode 01

#define direcltyrunMode 10

int setModeR_G(int currentMode int premode); //负责状态之间的切换

int setModeG_R(int currentMode int premode); //mode为两位变量,由拨码开关在I/O口读入

int setModeG_D(int currentMode int premode);

int setModeD_G(int currentMode int premode);

//状态切换会返回置位bool量 modechange

int getmode() //读取mode的当前的值,并且刷新mode和premode

Void lcd_initialize(void) //负责显示屏的初始化

Void port_initalize(void) //负责端口的初始化

Void motor_initalize(void) //负责电机的初始化

Void lighting_initalize(void) //负责照明的初始化

Void elevatordoor_initalize(void) //负责电梯门的初始化

Void lcd_display(int temperature); //负责温度的显示

Void eledoor_allopen(); //电梯门在检修模式下常开

Void eledoor(); //电梯门在其他两个模式下的运行方式

Void motor_stop();

int motor_genrun();

int motor_dirrun(); //返回一个Int值dooropen为1,控制电梯门的开启

//电梯在三种模式下的运行方式

Void light_display(int pressure); //电灯的开关控制

Void communicate(); //通信方法

Void repair() //检修模式下的工作方式

{

While(modechange==0)

{

Communicate();

Eledoor_allopen();

Light_display();

Lcd_display(int temperature);

Int getmode();

If(premode==01&&mode==00)

setModeG_R();

}

}

Void generalrun() //一般运行模式下的工作方式

{

While(modechange==0)

{

Communicate();

Light_display();

Lcd_display(int temperature);

If(premode==01&&mode==00)

setModeG_R();

If(premode==01&&mode==10)

setModeG_D();

}

}

Void directlyrun() //直接运行下的工作方式

{

While(modechange==0)

{

Communicate();

Light_display();

Lcd_display(int temperature);

Int getmode();

If(premode==10&&mode==01)

setModeD_G();

}

}

Void initialize(void) /

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top