宋政達
摘 要: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.