标题 | 识别抑制PCM设备E线长时间对地的程序设计 |
范文 | 宋政达 摘 要:PCM 设备是民航空管甚高频信号实现远距离传输的主要设备,PCM设备在日常运行过程中,由于外部原因会发生一种E线长时间对地的现象,会严重影响空中机组和地面管制的话音通信质量。本文在单片机平台上使用C语言设计了两种不同思路的程序,对E线长时间对地现象进行识别和抑制。通过实验平台进行测试,此两种程序都能够实现快速识别的抑制E线长时间对地的现象。 关键词:PCM设备;编程逻辑;单片机 中图分类号:TN91 文献标识码:A 一、导致PCM设备E线长时间对地的原因及当前的处理办法 在民航空管系统中,需要将远距离的外台站信号实时的传输回管制部门,这些信号有甚高频、电话、雷达、电报、视频监控等多种类型。PCM 设备是这些信号实现远距离传输的主要设备,这种设备将远端台站的的信号复用成一个32时隙的2M电信号,再接入运营商的光纤传输网络进行远距离传输。PCM设备在日常运行过程中,由于外部原因会发生一种E线长时间对地的现象,这会造成PCM设备所连接的电台一直以载波功率向外发射无线信号,使得此电台周围半径200km范围内的其他同频电台都会连续收到强烈的“滋滋”电流声,严重影响空中机组和地面管制的话音通信质量,这在空中交通管制的运行过程中会带来不可预料的严重后果。 造成E线长时间对地的原因主要有两个:(1)管制端PCM设备M线由于误接地或PCM设备自身故障等原因,导致对应的远端台站上PCM的E线长时间对地。(2)远端台站PCM设备掉电,会直接造成E线对地,直到PCM供电恢复为止。E线对地发生后,需尽快将E线切断,以免对其他同频电台造成影响。当前空管设备运行维护部门主要是通过人工切断E线的方式来解决此类故障。在有人值守的远端台站,由维护中心的人发现故障后,电话通知台上值班人员,由值班人员确认故障现象并找到对应E线然后切断。对于无人值守的台站,维护中心的人员可以通过本地监控确认E线长划现象,但当前没有能够远程切断E线的方法,只能通过遥控关闭对应电台的方法抑制电台发射。如果远程遥控不成功,只能由维护人员驱车赶往外台进行现场处理。以上两种方法,都至少需要3分钟以上的时间,这在某些管制繁忙的场合是不能接受的。因此,一种能够自动识别E线长时间接地并自动抑制的装置,在最多30秒的时间内识别出E线长时间对地,并在识别成功后自动切断E线,就显得非常必要。接下来讨论在单片机平台上用C语言编程来实现这个功能。 二、识别E线长时间对地的编程逻辑 在实际运行过程中,E线处于对地状态达到30秒钟,就可以认为E线处于长时间对地的状态。那么在单片机平台上用C语言编程时就可以采用以下两种思路。(1)将E线与单片机的外部中断引脚相连,编程对单片机的外部中断引脚状态进行监视,使用单片机上的定时器进行定时,设置一个处置为零的全局变量,每隔50ms检查一次外部中断引脚的状态,如果引脚状态为逻辑1状态,全局变量不做任何操作,如果引脚状态为逻辑0状态,则说明E线对地,此时全局变量进行加1操作。如果定时器连续600次都检测到外部中断引脚处于逻辑0状态,则全局变量数值等于600,此时说明E线已经连续对地时长达到了30秒,则发出控制指令,将接在E线上的继电器置于断开状态。(2)使用一个while()循环,判定条件设为while(!s),其中的s通过宏定义定义为外部中断引脚的状态。当外部引脚状态为逻辑0状态时,进入此循环,进入循环后启动一个30秒的定时器,如果30秒定时器定时结束时,程序仍在此循环中未跳出,则认为E线已经连续对地时长达到了30秒,则发出控制指令,将接在E线上的继电器置于断开状态。 三、两种编程逻辑的实现 对于第一种逻辑,可以由以下语句来实现(部分核心语句): #include sbit interrupt1=P3^2; int flag=0; void main() { EA=1; EX0=1; IT0=0; flag=0; while(1) { if(interrupt1==0)//接地 { relay=0; if(flag1==1) {flag++; flag1=0; } } else {relay=1; flag1=1; } display(flag); } 對于第二种逻辑,可以由以下语句来实现(部分核心语句): #include sbit S1=P3^2; sbit K1=P1^1; void init() { TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; TR0=1; ET1=1; TR1=1; } void main() { init(); while(1) { while(!S1) { if(sec_f1>=600) {K1=0;end1=1;TR0=0;}
} flag1=0;sec_f1=0; } } 上述程序中,第二段程序的while(!S1)语句实现的是一个监视功能,通过宏定义将变量S1与外部中断引脚联系起来,当外部中断引脚的状态为高电平时,S1的值为1,“!S1”的逻辑值为0,就是说while(!S1)的判决条件不成立,则while(!S1)所对应的所有程序都不被执行。一旦外部中断引脚被拉低为对地状态,也就是说PCM对应的E线由于某种原因由高阻状态变为了对地状态,则“!S1”的逻辑值为1,就是说while(!S1)的判决条件成立了,则while(!S1)所对应的所有程序开始被执行。只要PCM对应的E线对地状态不改变,则while(!S1)的判决条件一直成立,所以一旦定时器定时时间到达,则会使“sec_f1>=600”的条件成立,此时,执行切断继电器的操作,而且这个操作会一直执行下去,此时由于PCM的E线被拉低造成的电台长划就得到了控制。当PCM的E线由于某种原因恢复高阻状态时,“!S1”的逻辑值又变为0,while(!S1)的判决条件不成立,while(!S1)所对应的所有程序又都不被执行,继电器又恢复闭合状态,整个程序重新进入检测状态。 而第一种程序中,主要靠if(interrupt1==0)这个判断语句来记录外部中断引脚状态的变化,如果外部中断引脚为高阻状态,通过宏定义与外部中断引脚相联系的变量interrupt1为逻辑值1,则if判断不成立。如果外部中断引脚变为对地状态,通过宏定义与外部中断引脚相联系的变量interrupt1为逻辑值0,则if判断成立。在接下来的语句中会对计数值进行加1操作,这种操作会不断进行,直到定时器定时时间到来,检查flag的值,从而判定在定时器定时值这段时间范围内外部中断引脚一直处于接地状态。 結语 上述两种逻辑的完整程序在KEIL编译环境下编译通过后,下载到以STC89C52单片机为核心的控制平台上,通过实验平台的实地测试,都能够稳定运行,达到预期的需求。第一种逻辑程序简单,占用资源少,但是检验的精确性不如第二种逻辑,使用者可以根据自己的需求进行选择。 参考文献 [1]谭浩强.C程序设计第二版[M].北京:清华大学出版社,1999. [2]申凤琴.电子电工技术应用[M].北京:机械工业出版社,2005. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。