微计算机系统设计交通信号灯设计_第1页
微计算机系统设计交通信号灯设计_第2页
微计算机系统设计交通信号灯设计_第3页
微计算机系统设计交通信号灯设计_第4页
微计算机系统设计交通信号灯设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、远程交通信号控制系统摘 要:以MSP430单片机为控制单元,采用C语言进行编程,设计实现了一个远程交通信号控制系统。该系统实现了对交通灯的远程控制和本地的手动设置,远程控制采用GSM模块实现,具体阐述了GSM实现远程控制的方法。用信号机模拟交通灯测试该系统,测试结果表明,该系统集成度高、功能强、性能稳定,远程设置和本地操作在考虑到各种情况的输入下均无异常。关键词:交通灯;远程控制;GSM;测试引言随着城市化进程加快,智能交通信号控制系统已成为城市交通信号控制发展的必然趋势,国内信号机以单点定时控制系统为主,该类信号机控制功能简单、方案单一1,不能反映交通状态随机变化所产生的不同信号方案需求。为

2、研制符合国内城市交通的复杂要求,同时具备智能化、网络化特点的交通信号控制系统,本文提出一种基于MSP430单片机的自适应智能交通信号机系统结构及其工作原理,并给出具体的软硬件设计方案。该系统通过GSM模块以短信的形式对交通灯进行远程设置。短消息服务(SMS)作为GSM无线网络的一项基本业务,其应用日益广泛。这种方式不需要拨号建立连接,直接把要发的信息加上目标地址发送到短消息服务中心,由短消息服务中心再发给最终用户。具有通信成本低、系统容量大、业务种类多、保密性好、抗干扰能力强、能自动漫游等特点,是目前应用最广的无线方案。已广泛被应用于:气象监测、电力设备监测、水库水位监测、远程抄表及汽车远程防

3、盗监视等各个领域。本文详细阐述了对信号机的远程实时控制的设计与实现,对此功能及信号机的本地手动设置功能进行了全面的测试,给出了部分测试用例,并对测试结果进行了分析。系统硬件设计城市交通枢纽信号控制需要联网协调控制,信号机必须具有与区域服务器进行数据传输的通信功能。在系统设计过程中我主要负责的就是远程控制功能的实现。本系统采用了GSM模块实现区域服务器远程控制交通信号机的功能。由单片机与GSM通讯模块组成GSM应用系统,完成短消息的接收与发送等功能,以此实现远程交通信号控制系统的远程控制功能。目前国内使用的GSM模块有Wavecome的WMO2系列、西门子的TC35系列、Falcom的A2D系列

4、和爱立信的DM10/DM20系列等,这些模块的功能基本相同,其中西门子公司的TC35系列模块性价比最高,所以本设计选用西门子的TC35i模块。TC35i是西门子公司推出的最新无线模块,该模块设计紧凑,体积小重量轻,向用户提供标准的AT命令接口。为数据、语音和短消息提供快速可靠的传输,方便用户的应用开发设计。TC35i模块的主要技术指标频段为GSM900MHz和GSMl800MHz双频;支持数据、语音、短消息和传真;单一电源供电:电压3.34.8V;可选波特率4.8-115kbps;电源消耗:休眠状态为3.5mA,空闲状态为25mA,通话状态为300mA(平均);温度范围:正常工作-20+55,

5、存放-30+85;支持电压为3V/1.8V的SIM卡。TC35i模块的硬件接口TC35i的硬件接口共有40个引脚,通过ZIF连接器引出分别与外部电源电路、模块启动电路、数据通信电路、语音电路及SIM卡电路等连接。TC35i的数据接口是一个符合ITU-T RS232标准的异步串行接口。其波特率可在4.8kbps115kbps之间选择,接口电平为CMOS电平(2.70V),串口参数为:8位数据位、1位停止位、无校验位,支持标准的AT命令集。与短消息(SMS)相关的GSM AT指令介绍GSM AT指令集是由诺基亚、爱立信和摩托罗拉等厂商共同为GSM系统制定的,其中包含对短消息(SMS)的操作指令。T

6、C35i模块所提供的AT命令集符合GSM07.05和GSM07.07规范。GSM07.05标准对短消息的数据格式作了详细的规定,用户终端可以向GSM模块发送各种操作指令及数据来实现短消息的收发。系统软件设计系统软件采用C语言,基于MSP430单片机进行设计。软件设计中我主要负责利用GSM模块实现远程通讯,在PC机的控制台上向信号机以短信的形式发送控制命令,短信的内容为一些指令,信号机内的单片机接到短信后根据信息内的指令执行相应设置的命令,对信号机的方案进行设置。指令格式指令由26位组成,分为三个字段:起始字段、命令字段和数据字段。起始字段由6位字母组成:FFFEDD,表示一条指令的开始;命令字

7、段由2位数字组成,表示该条指令要执行的操作;数据字段由18位数字组成,表示执行该指令所需的数据。命令字段:命令字段的两位数字为0107,分别表示以下含义:01:表示设置时间02:表示选择方案03:表示设置方案104:表示设置方案205:表示设置方案306:表示设置方案407:表示设置方案5系统默认有7套预置方案,方案6为全闪黄灯,方案7为全部熄灯,不需要设置。数据字段数据字段的最后两位为保留位,其余16位根据命令字段的不同有不同的含义。当命令字段为01时,指令表示要设置时间,数据字段的01位表示要设置时间的小时部分,23位表示要设置时间的分钟部分,其余位置0。当命令字段为02时,指令表示要选择

8、一套方案执行,数据字段的01位表示要选择的方案号,其余位置0。当命令字段为0307时,指令表示要设置方案15,数据字段的前8位表示设置所选方案南北方向的交通灯时间,后8位表示设置东西方向的交通灯时间。将8位数字每两位分成一组,分别表示直行绿灯,直行黄灯,左转绿灯,左转黄灯的时间。给出两条指令为例:命令字段01表示设置时间,数据字段22是设置小时,10是设置分钟,即该指令将时间设置为22:10。FFFEDD020700000000000000000命令字段02表示选择方案,数据字段07是选择7号方案,即该指令执行后信号机选择执行7号方案,将所有灯全部熄灭。远程控制软件实现使用GSM模块实现远程控

9、制首先需要初始化GSM模块,之后通过单片机读取短信并对短信进行处理,解析指令。具体流程如下:接收指令初始化GSM,握手确定GSM设备的存在,设置短信中心的号码和短信的发送模。初始化串口,定义函数使串口以字节为单位发送数据,上一个串口数据发送完成后再发下一个,部分伪代码如下:void init_gsm(void)printStr(ATrn); /握手Delay_ms(100);printStr(ATE0rn); /关闭命令回显Delay_ms(100); /设置短信中心号码Delay_ms(100);printStr(AT+CMGF=1rn); /设置短信的发送模式为文本模式Delay_ms(1

10、00);void init_uart0(void) /初始化串口 void R_S_Byte(uchar R_Byte) /以字节为单位发送数据while(IFG1&UTXIFG0)=0); /是否上一个串口数据发送完成TXBUF0=R_Byte;向GSM写读短信的命令,读取短信:unsigned char printStr(unsigned char* string)unsigned char i=0;if(string=NULL)return PRINTNULL;while(1)R_S_Byte(stringi);Delay100Us();i+;if(stringi=0 x00)retur

11、n PRINTSUCCESS;if(i=255)return PRINTTOOLARGE;读短信,先握手确定GSM设备是否存在,判断返回值,如果两次握手均不成功,则重新初始化GSM模块。之后比对字符串,判断是否有未读短信,有未读信时指针p的值不为空,则继续处理短信。获取短信来源号码,只执行固定号码发来的短信指令,之后获取指令,将指令存在data_buf中。部分伪代码如下:unsigned char read_msg(void)/定义变量printStr(ATrn); /握手Delay_ms(100);buf_count=0;printStr(AT+CMGL=REC UNREADrn); /向G

12、SM写读短信命令,读短信Delay_ms(300);p=strstr(uart_Buf,ERROR); /读取消息错误,返回0if(p!=NULL) return 0;p=strstr(uart_Buf,+CMGR: 0,0);/无信息,返回1if(p!=NULL) return 1;p=strstr(uart_Buf,REC UNREAD); /有未读信息,返回3if(p!=NULL) /处理短信for(i=0;i11;i+)phone_numberi=uart_Bufi+29; /获取短信来源的号码phone_numberi=0;for(i=0;im);R_S_Byte(0 x1A);pr

13、intStr(rn);解析指令解析指令在主函数内实现。读到新消息后首先检查是否为控制中心发出,之后根据命令字段判断是哪种指令,根据前面对指令的介绍可知,分为设置时间、选择方案、设置方案等情况。设置时间先将指令中读取的时间写到time数组中,再用time设置数码管显示的时间。选择方案时先将flash中的数据读到数据缓冲区中,再将flash上的数据擦除,在修改了选择执行方案的字段之后,将缓冲区中的数据再写入到flash中。最后更新当前正在执行的方案,即根据所选方案设置新的信号灯时间。设置方案时首先将flash中的数据读到数据缓冲区中,然后修改直行绿灯、直行黄灯等各种时间设置,最后将缓冲区中的数据写

14、入到flash中。如果更改设置的是当前正在执行的方案,则需要更新当前信号灯的闪烁时间。共有5套方案可以被修改设置,以方案1为例给出伪代码。解析指令部分伪代码如下:while(1)if(read_msg()=3) /读到新消息if(strstr(char *)phone_number,center_num)!=NULL)/检查是否为控制中心发送的短信for(i=0;i6;i+) starti=data_bufi;if(strstr(char *)start,start_symbol)!=NULL)cmd=(data_buf6-48)*10+(data_buf7-48);switch(cmd)ca

15、se 0 x01: /设置时间time0=(unsigned char)(unsigned char)(data_buf8-48)4) +(data_buf9-48);time1=(unsigned char)(unsigned char)(data_buf10-48)4) +(data_buf11-48);time2=0;DS1302_Setting_Time(time);break;case 0 x02: /方案选择scenario_tmp=scenario;scenario=(data_buf8-48)*10+(data_buf9-48);if(scenario_tmp=(scenari

16、o_num+1)|scenario_tmp=(scenario_num+2) normal_scenario_rst(); /交通灯控制状态机复位FlashSeg_r_num(unsigned char *)FSEG_A,(unsigned char *) flash_data_buf,STRUCT_TIME_BYTE_NUM*2*scenario_num+3); /将flash中的数据读到数据缓冲区中flash_data_bufADDR_SCENARIO=scenario;Flash_clr(int *)FSEG_A); /段擦除FlashSeg_w_num(unsigned char *)

17、FSEG_A,(unsigned char *) flash_data_buf,STRUCT_TIME_BYTE_NUM*2*scenario_num+3); /将缓冲区中的数据写入到flash中Flash_secure(); /上锁time_SN_curr.time_line.time_green=flash_data_bufBASED_ADDR_SCENARIO+(scenario-1)*STRUCT_TIME_BYTE_NUM*2;/更新当前执行的方案break;case 0 x03: /设置方案1FlashSeg_r_num(unsigned char *)FSEG_A,(unsign

18、ed char *) flash_data_buf,STRUCT_TIME_BYTE_NUM*2*scenario_num+3); /将flash中的数据读到数据缓冲区中flash_data_bufBASED_ADDR_SCENARIO+0*STRUCT_TIME_BYTE_NUM*2=(data_buf8-48)*10+(data_buf9-48); /修改时间设置 Flash_clr(int *)FSEG_A); /段擦除FlashSeg_w_num(unsigned char *)FSEG_A,(unsigned char *) flash_data_buf,STRUCT_TIME_BY

19、TE_NUM*2*scenario_num+3); /将缓冲区中的数据写入到flash中 Flash_secure(); /上锁 if(scenario=1) /如果设置的是当前运行的方案,则更新正在运行的数据 time_SN_curr.time_line.time_green=flash_data_bufBASED_ADDR_SCENARIO+0*STRUCT_TIME_BYTE_NUM*2; /更新信号灯闪烁时间 break;/设置方案25default:; DelayNMs(300); 系统测试对系统的测试主要分为两部分:对远程控制功能的测试和对本地手动设置功能的测试,每次设置后观察信号

20、机一段时间,看各种信号灯的亮灭时间是否与设置的一样,信号机运行是否正常。对远程控制功能的测试主要通过PC终端向信号机发送短信,尝试各种符合规则和不符合规则的指令,测试信号机能否做出正确反应,有无异常。对本地手动设置功能的测试主要是通过信号机的控制面板上的各种按钮对信号机进行设置,测试各种按键输入是否都能得到正确的响应,符合规则的按键输入能否达到预期的设置目标。由于篇幅所限,对这两方面的测试只给出了少数有代表性的测试用例,并对其加以分析。测试远程控制功能PC终端控制界面如图1所示,通过下方的文本框可以输入命令,发送给信号机。图1PC终端控制界面设置时间为22:10,信号机接收到后向PC机返回已收

21、到短信的确认信息,执行指令,数码管显示时间变为22:10。信号灯不受影响,正常运行。发送短信FFFEDD020700000000000000000,选择方案7,信号机接收到后向PC机返回已收到短信的确认信息,执行方案7,所有信号灯全部熄灭。随意发送不符合格式要求的短信,如ABCD0123456789,信号机接收到后不能识别,返回错误指令。对各种情况反复测试后可以确定对信号机的远程控制功能正常,信号机启动后运行无异常,每次响应远程控制执行指令顺利,执行指令更改信号灯闪烁时间后信号机会严格按选择的方案或设置的时间运行,交通信号的远程控制功能实现。测试本地手动设置功能信号机上的按键分布如表1所示,通

22、过按键可以达到与发送指令一样的设置效果,对信号机本地控制面板的测试给出了四个测试用例,解释了各个按键的用法。对其他各种情况下的按键输入也都有测试,信号机都能做出正确反应,正常运行。表1信号机本地控制面板南北(10)东西(7)左转(4)(1)(11)(8)方案(5)设置(2)(12)(9)确定(6)运行(3)2 11 9 6该用例测试设置时间功能。在信号机正常运行情况下,按键2表示设置时间,按键11、12表示对小时的增加和减少,按键8、9表示对分钟的增加和减少,如当前是22:10,按一下11小时部分变成23,再按一下9分钟部分变成09,之后按6表示确定,返回上一级显示界面,当前显示的时间变为23:09。5 8 3该用例测试选择更换执行方案功能。在信号机正常运行情况下,按键5显示当前执行的方案,按键8、9控制方案的选择,如当前执行的是方案5,按一下8会变成方案6,按3表示运行,即执行方案6.5 9 2 11 9 4 12 8 6 6该用例测试设置方案功能。按5显示当前执行的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论