梁明亮,孙晶晶
(1.郑州铁路职业技术学院,河南 郑州 450052;2.中原铁道机务公司,河南 郑州 450052)
1.项目开发的目的
平调装置是确保调车作业安全的重要设备,是调车作业安全的重要保证。由于目前无此系统的测试装置,使得沿线调车机车平调故障时,难以确定是平调主机还是监控装置部分的故障,给维修带来许多麻烦,也延长了故障处理时间,这给调车安全埋下了隐患。我们设计并开发一套便携式调车监控系统车载设备的故障检测装置,当平调车载设备发生故障时,能在短时间内对调车机上的平调主机、平调接口控制器(也称接口盒或接线盒)、列车监控装置接口电路和相关设备进行有效检测、诊断和故障分析。
2.主要实现功能
(1)对平调接口控制器(接口盒)增设自检电路,用循环发码的方式实现平调接口盒功能输入信号(调车主机送来的)和输出信号(送给监控主机的控制信号)的自动检测,通过无线信号将检测结果发送到检测装置。
(2)输出“停车、推进、溜放、减速、紧急停车、解锁”等各种模拟信号。相关信息通过彩色液晶屏显示,并能通过按键和触摸屏触摸两种方式实现模拟信号输出,同时将相关信息语音播放。
(3)根据平调主机发送给平调接口控制器(接口盒)的信号格式、特点,实现本检测装置对平调主机输出的信号进行分析、检测,通过彩色液晶屏显示检测结果,同时进行语音播放检测信息。
1.硬件电路的设计与开发。采用32位ARM嵌入式芯片LPC2148为主控CPU,设计3.5英寸彩色液晶触摸屏,独立式键盘作为信息显示和输入控制。采用Protel软件设计原理图和PCB,电路设计中应充分考虑电源供给、抗电磁干扰等问题。
2.采用Keil C进行软件编程。关键技术有uC/OS-II操作系统的移植、调车信号的分析与处理、语音的存储播放编程等。分模块进行程序开发,实现对平调主机输出的数据进行接收、分析;同时输出平调控制模拟信号,实现检测机车运行监控装置接口电路的功能。
3.语音技术的开发,实现操作时附带语音提示。采用数字语音技术,便于音频的存储、回放等功能的实现。
数字语音技术的开发是调车车载设备检测装置设计的关键技术之一,采用WT588语音模块实现装置的各种语音播放。WT588具备独特的工业性能,在-40℃至+85℃的环境下均能长期正常工作,抗干扰能力强;外围电路非常简单,语音的存储、播放全由语音模块完成,大大节省了主控制器的软、硬件资源。工作时,检测装置的控制器只需通过I/O口发出控制命令给WT5880语音模块即可完成各种语音的任意播放。
语音模块硬件电路如图1所示。
图1 语音模块硬件电路原理
图中WT588D为语音单片机,系列语音芯片将存储器外挂,集中提升语音处理功能。语音芯片应用方便,音质高低可选择,价格比美国ISD系列芯片低得多。WT588D 的 P00、P01、P02、P03 连 接LPC2148主控器的I/O口,同时外接按键K0、K1、K2、K3用于样机调试时的按键试音,在SPI-FLASH存储器上烧写语音程序时,把触发口的按键定义为可触发播放的触发方式,就可进行工作。P17端为BUSY忙信号输出端,可设置为播放状态LED点亮和播放状态LED熄灭。25PXX为SPI-FLASH存储器,其电压范围在 2.8V ~3.5V,VDD - SIM 为WT588D语音芯片的串口电源管理输入端,将25PXX的VCC连接到此端,可自动平衡WT588D跟25PXX之间的串口电压。音频为DAC输出方式,通过Q1三极管放大后输出到扬声器。使用时注意PWM输出端禁止接电容到地或直接接地,PWM+/DAC和PWM-端谨防短路。
语音的存储采用语音单片机专用软件对已录制好的语音文件进行烧写。采用Keil3 C进行ARM7软件编程,装置的主控制器采用三线发码方式控制WT588D语音模块的播放。
1.主程序部分代码
#define DATA_1 IOSET0=IOSET0|(1〈〈28)
#define CS_1 IOSET0=IOSET0|(1〈〈29)
#define SCK_1 IOSET0=IOSET0|(1〈〈30)
#define RST_1 IOSET0=IOSET0|(1〈〈7)
#define DATA_0 IOCLR0=IOCLR0|(1〈〈28)
#define CS_0 IOCLR0=IOCLR0|(1〈〈29)
#define SCK_0 IOCLR0=IOCLR0|(1〈〈30)
#define RST_0 IOCLR0=IOCLR0|(1〈〈7)
void main(void)
{ IODIR1=IODIR1|0x00ff0000;//设置I/O口
IODIR0=IODIR0|0xfffffff0;
while(1)
{DrawString(45,25,"请选择工作状态",
RED,WHITE,NORMAL);//液 晶 屏 显 示
DrawString(80,80,"1.模拟输出",BLUE,
WHITE,NORMAL);
DrawString(80,125,"2.系统测试",BLUE,
WHITE,NORMAL);DrawString(120,175,"确定",RED,WHITE,NORMAL);
Send_threelines(30);//输出语音“选择工作状态”
}
}
2.三线发码子函数
上述主程序中,Send_threelines(uchar addr)为三线发码子函数,用于控制语音模块发出已录制语音的某一段,其源代码为:
void Send_threelines(ucha raddr)
{ unsigned cha ri;
if(addr>=210)return;//三线串口时,语音
段最多为210段
RST_0;
delay1ms(2);
RST_1;
delay1ms(18);//延时18mS
CS_0;
delay1ms(2);
for(i=0;i<8;i++)
{ SCK_0;
if(addr&1)DATA_1;
else DATA_0;
addr>>=1;
delay100us();//延时100uS
SCK_1;
delay100us();}
}
[1]PHILIPS.LPC2141/42/44/46/2148 Data Sheet[Z].2005:1-6.
[2]王俊峰,刘实秋.列控车载设备控制程序及参数远程实时更新方法[J].北京交通大学学报,2010,(2):71 -74.
[3]刘玉琼.基于WT588D语音提示系统设计[J].企业科技与发展,2010,(22):99 -102.