DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2208|回复: 1
打印 上一主题 下一主题

[待整理] 地铁列车乘客紧急报警系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2015-5-1 19:00:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
摘要: 在地铁列车乘客紧急报警系统的设计过程中,采用AT89C52实现主控制逻辑,报警主机和分机之间的通信使用基于MT8888的DTMF通信,并使用EPM1270实现CRC8算法,提高了通信的安全性和可靠性。该系统具有存储功能,利用自行设计的键盘可实现格式化存储器。
关键词: MT8888;DTMF通信;CRC8算法;EPM1270;格式化存储器
Passenger Emergency Alarm System for Metro Train
Zhao Xiaofeng(Hardware Sector, Shanghai Hairu Technology Co., Ltd., Shanghai 200331,China)
Abstract: When designing metro train's passenger emergency alarm system, AT89C52 is used to implement main control logic, communication between alarm master and alarm slave is developed as DTMF with MT8888, and EPM1270 is used to implement CRC8 algorithm to improve safety and reliability of the communication. The system has the storage function, and implements format memory unit using designed keyboard.
Key words: MT8888;DTMF communication; CRC8 algorithm; EPM1270; format memory unit
引言
  随着城市轨道交通的快速发展,乘客对列车的舒适度和安全性提出越来越高的要求。对于上海地铁1、2号线旧型直流驱动列车,当列车车厢内发生紧急情况(如火灾等)时,列车司机在封闭的驾驶室中无法得知灾难情况,而且乘客也没有任何通信手段可以将车厢内的灾情告知司机。基于这种防灾需求,地铁运营单位要求改造列车,加装地铁列车乘客紧急报警系统。
1  系统结构
  地铁列车一般为6节编组(A1B1C1B2C2A2),每节车厢长24.5 m,司机驾驶室设在A1和A2,乘客车厢为全部6节车厢。本系统在两端司机驾驶室各设1台报警主机,每节车厢安装2个报警分机(车门上方)。当乘客按下车厢内的报警按钮后,按钮上的指示灯会点亮,并伴有报警声音提示。报警分机在监测到按钮动作后,会将该信息通过列车线发送到驾驶室的报警主机。主机接收并处理信息后,点亮主机面板上对应位置的LED指示灯,并利用声音提示。此时,司机需要人工确认报警灯对应按钮,主机监测到确认动作后关闭报警灯和报警声音,并将该信息发送回对应的报警分机。分机接收并处理信息后,关闭报警灯和报警声音。
2  系统硬件设计
  报警主机的硬件设计按照模块化原则,可分为如下几个功能模块:主逻辑控制模块、基于MT8888的DTMF通信模块、LED数码管控制模块、LED灯控制模块、蜂鸣器控制模块、键盘扫描模块、时钟控制模块、存储控制模块、数据存储模块等。系统硬件结构框图如图1所示。
  报警分机相对简单,提供了乘客报警的人机界面。报警主机和分机之间使用基于MT8888芯片的DTMF通信技术,并附加软件CRC8校验机制,确保通信的高可靠性和安全性。


图1  系统硬件结构框图
3  系统软件设计
  报警主机和分机均使用Atmel公司的AT89C52作为主逻辑控制单元,与MCS51产品指令和引脚完全兼容。分机的设计和实现相对简单,主机用到了单片机提供的大部分资源,包括定时器中断、外部中断和串行中断,各个功能模块依靠各自中断入口和优先级依次运行。定时器和中断资源分配如表1所列。
表1  定时器和中断资源分配表


  对于中断优先级的考虑:
  ① 与人机接口有关的中断,其优先级为高;
  ② 为了保证串行通信的质量,其优先级为高;
  ③ 外部中断采用较低级的中断,其优先级为低(外部中断0,每秒2次;外部中断1,每秒1次)。
3.1  基于MT8888的DTMF通信
  由于涉及已运营线路的列车改造,系统的稳定性和安全性是至关重要的,所以该系统在设计时报警主机和分机之间采用了基于MT8888的DTMF通信,并在列车上使用低烟、无卤的线缆构架系统的通信网络,做到与列车原有广播系统的语音信号相互独立,互不干扰。网络拓扑结构是总线型结构,最远分机和主机的距离长达150 m。
   MT8888的初始化代码如下:
   ACALLDFSR;读状态寄存器
   MOVA,#00H
   ACALLDFCR;将数据00H写入控制寄存器
   MOVA,#00H
   ACALLDFCR;将数据00H写入控制寄存器
   MOVA,#08H
   ACALLDFCR;将数据08H写入控制寄存器
   MOVA,#00H
   ACALLDFCR;将数据00H写入控制寄存器
   ACALLDFSR;读状态寄存器
   MOVA,#05H;DTMF允许中断,允许发送
   ACALLDFCR;将数据05H写入控制寄存器
   MT8888读状态寄存器:
DFSR: CLREA
   CLRP3.5;将CS置0,开始DTMF控制
   SETBP3.4;将A0置1
   MOVXA,@R0;将数据接收到A的低4位
   SETBP3.5;将CS置1,结束DTMF控制
   SETBEA
   RET
  MT8888写控制寄存器:
DFCR:CLREA
   CLRP3.5;将CS置0,开始DTMF控制
   SETBP3.4;将A0置1
   
[email=MOVX@R0,A]MOVX@R0,A[/email];将A的低4位发送出去
   SETBP3.5;将CS置1,结束DTMF控制
   SETBEA
   RET
  MT8888发送一次数据:
DFFD:CLREA
   CLRP3.5;将CS置0,开始DTMF控制
   CLRP3.4;将A0置0
   
[email=MOVX@R0,A]MOVX@R0,A[/email];将A的低4位发送出去
   SETBP3.5;将CS置1,结束DTMF控制
   SETBEA
   RET
  MT8888接收一次数据:
DFJD:CLREA
   CLRP3.5;将CS置0,开始DTMF控制
   CLRP3.4;将A0置0
   MOVXA,@R0;将数据接收到A的低4位
   SETBP3.5;将CS置1,结束DTMF控制
   SETBEA
   RET
  DTMF通信每次收发只能处理4位数据,但是对于实际通信数据,就需要设置较大的缓冲区,循环发送多字节数据。下面详细描述主机和分机的通信协议。
3.2  基于CRC8的安全通信协议
  根据系统的功能,报警主机和分机的消息类型包括:系统上电自检、分机报警、主机报警回复。系统上电自检是指在系统全部上电后,列车车厢内的分机会自动向主机发送健康信息,主机收到该信息后会在界面上点亮对应分机的指示灯;分机报警是指乘客按下报警按钮后,分机向主机发送的报警信息;主机报警回复是指司机确认报警后,主机向分机发送的报警确认信息。为了保证通信的安全性,采用CRC8标准进行数据校验,多项式为x8+x5+x4+1,简记为0x31。
  通信协议的详细定义如下:
  ① 上电自检信息格式(3字节)
  报头(1字节):FB
  报文:车厢号(半字节)+分机号(半字节)
  CRC(1字节):CRC8
  ② 报警信息格式(3字节)
  报头(1字节):EA
  报文:车厢号(半字节)+分机号(半字节)
  CRC(1字节):CRC8
  ③ 报警回复信息格式(3字节)
  报头(1字节):EC
  报文:车厢号(半字节)+分机号(半字节)
  CRC(1字节):CRC8
  在报警主机和报警分机的DTMF编解码结束后,使用Altera公司的EPM1270芯片进行CRC8的生成和校验,基于以下VHDL代码实现了8位CRC码生成电路。代码中,InputData为输入数据,ResultCRC为输出CRC码,midCRC为当前CRC码。
Library IEEE;
Use IEEE.STD_LOGIC_1164.ALL;
Entity CalculateCRC is
  port(clk, InputData, reset : in STD_LOGIC;
  ResultCRC : out STD_LOGIC_VECTOR(7 downto 0));
End CalculateCRC;
Architecture CRCalculate of CalculateCRC is
  signal a1,a2,a3 : std_logic;
  signal midCRC : std_logic_vector(7 downto 0);
Begin
  a1 <= midCRC(0)xor InputData;
  a2 <= midCRC(4)xor '1';
  a3 <= midCRC(3)xor '1';
  process (clk, reset)
  begin
    if clk' event and clk = '1' then
      if reset = '1' then
          midCRC <= x"0"; --复位时CRC码置零
      elsif a1 = '1' then
          midCRC <= a1&midCRC(7 downto 5)&a2&a3&midCRC(2 downto 1);
        --a1为1时的新CRC码
      elsif a1 = '0' then
        midCRC <= a1&midCRC(7 downto 1);
        --a1为0时的新CRC码
      end if;
    end if;
  end process;
  ResultCRC <= midCRC; --输出CRC码
End CRCalculate;
  CRC8校验算法的使用,从软件上为报警主机和分机的通信提供了一定的安全保障;CPLD硬件的实现方式,减轻了单片机的运算负担,使其专注于主控制逻辑的调度。
3.3  基于X25045的存储管理
  存储芯片使用的是X25045,这个芯片具有看门狗和EEPROM两种功能。使用时,看门狗的复位在定时器T0中实现。EEPROM的容量为512字节,分上下两个半区,每半区地址为00H~0FFH。记录的格式如表2所列。
表2  记录的格式


  基于以上提供的记录格式,存储空间做如下划分:
  ◆ 000H,存储待写入记录的上下半区地址;
  ◆ 001H,存储待写入记录的半区内地址;
  ◆ 002H~007H,预留;
  ◆ 008H~1FFH,存储报警信息记录。
  所以,存储器能够存储的报警信息的总数为(512-8)/7=72条。当存储器存满之后,系统会自动覆盖最早的一条记录,从而循环利用存储器空间。之所以会这样考虑,主要是因为地铁紧急报警系统是在极个别情况下才会使用的,所以真正使用的频率可能会比较低。
  存储器的使用保证了系统在断电之后,报警信息仍然可以保存下来。但是,这使得在系统初始化时,存在一个问题;系统断电后,所有的其他信息都会丢失(包括存储器的使用情况),当系统再次上电复位后,系统就无法知道从存储器的哪个字节开始存储信息。所以,需要把存储器的使用情况存储在存储器上(000H,001H)。这样,当系统上电复位的时候就可以读取这个信息,从而正确使用存储器。但是,在这种情况下,需要在使用系统前对存储器进行格式化,就好像安装PC机的操作系统需要格式化硬盘一样。本设计方案是利用已有的小键盘,通过输入简单的密码来格式化存储器。
  格式化命令:
  ① 按下第一行左数最后一个键,A21;
  ② 按下第二行左数第一个键,A12;
  ③ 按“回车”键。
  这时,LED会显示“FFF”,这表示报警主机正在对X25045进行格式化。当格式化结束后,LED屏会自动跳回到时间显示状态。
结语
  地铁列车乘客紧急报警系统是上海地铁列车安防系统国产化改造的重要成果,解决了既有线路维护工作中的实际问题,是国内企业参与城市轨道交通建设的良好实践。
  地铁项目的实施需要以高安全、高可靠的技术为基础,本文描述的项目从硬件和软件两方面着重考虑安全因素,并在几十列列车上实际安装使用,司机和乘客均反映良好。
参考文献
[1] 蔡美琴,张为民,等.MCS51系列单片机系统及其应用[M].北京:高等教育出版社,1992.
[2] 杨季文,等.80X86汇编语言程序设计教程[M].北京:清华大学出版社,1999.
[3] 魏晓东.城市轨道交通自动化系统与技术[M].北京:电子工业出版社,2003.
[4] 李刚,林凌.与8051兼容的高性能、高速度单片机——C8051Fxxx[M].北京:北京航空航天大学出版社,2002:155169.
[5] ITUT G.704—1998 Synchronous Frame Structures Used at 1544, 6312, 2048, 8488 and 44736 kbit/s Hierarchical Levels[S]: 2932.
赵晓峰(工程师),主要研究领域为城市轨道交通通信与信号。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-25 13:40 , 耗时 0.097964 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表