图1 货梯控制系统整体结构
引言
随着单片机的功能和可靠性的不断提高,其在实际生活中的应用越来越广泛。作为汽车应用微处理器市场的最大半导体公司Freescale,其单片机的稳定性非常优秀,广泛应用于汽车及各种工业控制中[1]。在Freesclae公司众多的单片机中,MC9S12系列单片机以CPU12内核为核心,典型总线频率为25 MHz,包含丰富的I/O模块和工业控制专用通信模块——SCI、SPI、I2C、CAN、LIN等,其中CAN模块在工业控制中的应用最为广泛[2]。因此,本设计采用单片机MC9S12C128MAFE,实现一个基于CAN总线的四层货梯控制系统。
1 系统的功能需求及整体结构
1.1 系统的功能需求
该系统要能对运货电梯进行自动控制,按一定的电梯控制原则,结合每层的呼梯按钮及楼层选择按钮信号,采集安装在每层上的光电开关信息,控制电梯上下运行;在呼梯盒中显示当前楼层数,并通过总控制器中的控制信息配合安装在门上的霍尔传感器控制磁力门锁的开关。
1.2 货梯控制系统的整体结构
本货梯控制系统主要分为2个子系统——1个主控制器和4个呼梯盒控制子系统,2个系统之间以CAN总线为通信基础。其中主控制器接收4个呼梯盒子控制系统的输入信号,按一定的控制原则控制货梯的运行;而4个呼梯盒控制子系统则采集各种功能按钮、光电开关和霍尔传感器的信号,并实时地将各种信号发送给主控制器。具体货梯控制系统的整体结构如图1所示。控制系统的通信结构如图2所示。
图2 控制系统的通信结构
2 货梯控制系统的硬件设计
本货梯控制系统的硬件采用模块化设计,包括光电开关信号采集模块、继电器控制模块、霍尔传感器信号采集模块、开关按钮信号采集模块、CAN通信模块。
2.1 光电开关信号采集模块
光电开关(光电传感器)是光电接近开关的简称。它是利用被检测物对光束的遮挡或反射,由同步回路选通内部的开关电路来检测物体有无的。物体不限于金属,所有能反射光线的物体均可被检测。本系统采用NPN常开型光电开关,每个楼层有2个,以功能区分为上行传感器和下行传感器,用于电梯楼层定位,具体采集电路如图3所示。光电开关采用+12 V供电,在电源与输出信号线间串一个保护电阻。由于光电开关的输出信号并不是单片机所能接收的,因此要将光电开关的输出信号通过TLP5211光隔进行信号调理,转换为单片机引脚可接收的信号。
图3 光电开关信号采集电路
2.2 继电器控制模块
本货梯控制系统中带有控制电机正反转的开关电路,因此使用继电器控制模块直接控制正反转开关的开闭,具体电路如图4所示。光电耦合器TLP5211的副边电流作为三极管Q1的基极驱动电流,使Q1导通继电器K1吸合;R1为基极限流电阻,同时R1和R2组成分压电路,以避免基极过压;D1为瞬态稳压二极管,主要用于抑制Q1截止瞬间使继电器线圈上产生反向高压,从而保护Q1以免反向击穿。
图4 继电器控制电路
2.3 霍尔传感器信号采集模块
本货梯控制系统中,采用霍尔开关44E与小磁铁配合。霍尔开关接触到小磁铁即导通,门合好且单片机引脚接收为低电平;霍尔开关接触不到小磁铁即不导通,门没有合好且单片机引脚接收为高电平,具体电路如图5所示。
图5 霍尔传感器信号采集模块
2.4 开关按钮信号采集模块
开关按钮信号包括:呼叫货梯按钮信号、楼层选择按钮信号和电梯紧急停止按钮信号。这些按钮信号经光耦隔离后送入单片机进行处理。
2.5 CAN通信模块
本控制系统采用Philips公司的CAN总线驱动器82C250作CAN控制器与物理总线间的接口,构成CAN总线通信电路。其中斜率电阻选用0 Ω的电阻,使其工作于高速模式,具体电路如图6所示。
图6 CAN通信电路
3 货梯控制系统的CAN通信设计
3.1 CAN功能概述
CAN总线即控制器局域网络总线,是一种专门应用于工业自动化领域的网络。它能以多主方式工作,网络上任一节点均可在任何时刻主动向网络上其他节点发送信息,通信方式灵活,且不分主从,因此可以不改变所有节点的软件或硬件而增加新的节点。本货梯控制系统正是利用了CAN总线这一优点,将主控盒和4个呼梯控制子盒以CAN结点并入CAN总线中进行通信,使得硬件配置简单,软件实现简洁。
3.2 CAN通信的实现
Freescale公司的芯片MC9S12C128 MAFE微处理器有一个摩托罗拉可扩展控制器局域网络(msCAN12)模块[3],包含传输单元、接收单元和中断单元3个部分,经发送方/接收方组件RxCAN(接收信息)和TxCAN(发送信息)引脚与外界联系,且支持CAN2.0B协议。其基本结构框图如图7所示。
图7 msCAN12基本结构框图
本货梯控制系统由于传输的数据量不是很大,所以采用的帧数据类型为标准帧[4]。 在CAN2.0B协议中标准帧的结构如下:
为了实现标准帧数据类型的存储和发送,在软件设计中定义结构体can_msg。
struct can_msg {
unsigned int id;//11位标识符
bool RTR;//远程发送请求位
unsigned char data[8];//数据位
unsigned char len;//数据长度
unsigned char prty;//优先级
};
msCAN12有3个发送报文缓冲区和5个接收报文缓冲区,每个报文缓冲区由4个标识符寄存器(IDR)、8个数据段寄存器(DSR)、1个数据长度寄存器(DLR)、1个发送缓冲区优先级寄存器组成[5]。在本货梯控制系统中,根据标准帧的定义及msCAN12报文缓冲区的结构,定义了CAN总线通信协议,设置主控节点标识符为0,其他4个呼梯盒控制子系统标识符为1、2、3、4。另外,使用了3个数据段寄存器,具体数据段寄存器DSR0、DSR1、DSR2位的定义如表1所列。
4 货梯控制系统的软件实现
货梯控制系统软件由主控系统程序和呼梯盒子控制程序两个部分组成。
呼梯盒子控制程序负责采集各层的按钮、光电开关和霍尔传感器的信号,主要功能模块有:单片机引脚及时钟初始化模块,信号的分析和处理模块,CAN初始化、发送和接收模块。在该软件设计结构上,使用了一个延时程序,用来进行按钮信息的“去抖”和抗干扰处理[4],同时也使用了Freescale单片机中的COP看门狗监控程序。
主控系统程序主要负责货梯运行的逻辑控制,主要功能模块为:单片机引脚及时钟初始化功能模块,CAN初始化、发送和接收功能模块,Flash写入和擦除功能模块,逻辑控制功能模块。具体模块功能如下:
单片机引脚及时钟初始化功能模块和CAN初始化、发送和接收功能模块,主要用来实现货梯控制系统主控程序的基本运行功能及与各子控制器间的通信。
逻辑控制功能模块接收每个呼梯盒发送过来的信号并将这些信号保存在Flash中,结合给定的运行原则控制货梯的上行、下行和停止。货梯控制运行原则有:① 当货梯上行时,货梯只响应同向上行的呼梯信息;当到达指定的目的层后,首先检查有无下行招呼。有则响应,无则检查有无上行招呼。
② 电梯下行时,货梯只响应同向下行的呼梯信息,当到达指定的目的层后,首先检查有无上行招呼。有则响应,无则检查有无下行招呼。
③ 控制部分能记忆货梯呼梯盒中的所有请求信号,并按照电梯运行规则和响应顺序,每个请求信号保留至执行后消除。Flash写入和擦除功能模块存储有用的信号。在Freescale公司的芯片中,Flash的操作方法主要有两种:
① 当单片机中的Flash有多个Array时,可以在其中一个Array中执行Flash写入程序,来对其他Array的Flash进行操作。
表1 数据段寄存器位定义
② 当单片机中的Flash只有一个Array时,就将Flash写入程序先装载到RAM中,然后在RAM中执行写入操作程序。MC9S12C128V中的Flash只有一个Array,因此需要将Flash写入程序装载到RAM中。具体的实现方法为,定义一个RAM数组,将对应的程序存储到数组中:
static byte WaitInRAMcode[]={
0xC6,0x80,/*LDAB 0x80 */
0x7B,0x01,0x05,/*STAB _FSTAT */
0xA7,/*NOP */
0xA7,/*NOP */
0xA7,/*NOP */
0xA7,/*NOP */
0xC7,/*CLRB */
0x1E,0x01,0x05,0x20,0x05,
/*BRSET _FSTAT,#32,*+10*/
0x1F,0x01,0x05,0x10,0x03,
/*BRCLR _FSTAT,#16,*+8*/
0xC6,0x09,/*LDAB #9 */
0x3D,/*RTS */
0x1F,0x01,0x05,0x40,0xFB,
/*BRCLR _FSTAT,#64,*+0 */
0x87,/*CLRA */
0x3D/*RTS */
};
S12片上Flash 存储器的典型擦写次数为10 万次。在全温度范围内,最小值为1 万次。另外,可以采用数学办法来循环使用Flash存储器的一个页面,从而成倍扩展Flash的擦写次数。
结语
本货梯已经能实现运货功能,并能按照用户的要求,及时响应呼梯和楼层选择信号,将货物送到指定层。但是,本系统在货梯载货超重报警和货梯运行过程中的加速、减速等方面还需要进一步完善。