返回值=0;
/*表明經(jīng)防危核驗(yàn)證為正確命令*/
返回值=1;
/*命令經(jīng)防危核直接傳送到模擬設(shè)備而未經(jīng)過安全檢測(cè)模塊驗(yàn)證,模擬設(shè)備狀態(tài)根據(jù)此值改變*/
返回值=2;
/*當(dāng)前設(shè)備狀態(tài)驗(yàn)證失敗,失敗原因不明。
措施:模擬設(shè)備保持當(dāng)前狀態(tài)不變*/
返回值=3;
/*同一個(gè)方向有多個(gè)信號(hào)燈同時(shí)開啟。
措施:所有交通燈都關(guān)閉,然后在收到新的命令前設(shè)備執(zhí)行缺省命令序列,此處由模擬設(shè)備接到“3”時(shí)直接處理*/
返回值=4;
/*四個(gè)方向同時(shí)為黃燈或綠燈。
措施:系統(tǒng)恢復(fù)到初始狀態(tài)。在收到新的命令前設(shè)備執(zhí)行缺省狀態(tài)*/
反回值=5;
/*命令驗(yàn)證失敗,失敗原因不明,
措施:模擬設(shè)備保持當(dāng)前狀態(tài)不變*/
返回值=6;
/*信號(hào)燈保持當(dāng)前狀態(tài)的時(shí)間短于最短時(shí)間(<2s),
措施:模擬設(shè)備自動(dòng)延遲(Sleep(Time))顯示此命令*/
返回值=7;
/*使同一個(gè)方向有多個(gè)信號(hào)燈同時(shí)開啟的信號(hào)燈命令錯(cuò)誤。
措施:不執(zhí)行此命令,保持當(dāng)前信號(hào)燈狀態(tài)*/
返回值=8;
/*命令的執(zhí)行將會(huì)使信號(hào)燈變化的順序不正確。
措施:不執(zhí)行此命令,保持當(dāng)前信號(hào)燈狀態(tài)*/
返回值=9;
/*四個(gè)方面同時(shí)為黃燈或綠燈的命令。
措施:不執(zhí)行此命令,保持不前信號(hào)燈狀態(tài)*/
4.2 模擬設(shè)備模塊
防危核系統(tǒng)中以十字路口交通燈模擬外部設(shè)備。當(dāng)經(jīng)防危驗(yàn)證設(shè)備命令合法時(shí),此模擬接受防危核傳入的真實(shí)設(shè)備命令int RealCmd,并向防危核返回設(shè)備當(dāng)前最新狀態(tài)。用圖形方式形象、直觀地顯示設(shè)備本身的實(shí)時(shí)狀態(tài)(交通燈顏色的變化)、模擬設(shè)備當(dāng)前接收的命令和命令驗(yàn)證結(jié)果(合法或非法命令,對(duì)非法命令顯示出錯(cuò)原因)。
該進(jìn)程中設(shè)有三個(gè)線程,其中第一個(gè)線程專門用于讀管道FIFO6(實(shí)時(shí)管道)獲取防危核發(fā)送的控制命令,第二個(gè)線程讀管道m(xù)yfifo(非實(shí)時(shí)管道)獲取命令控制器發(fā)送的設(shè)備控制命令,第三個(gè)線程用TCL/TK腳本語言實(shí)現(xiàn)模擬設(shè)備形象、美觀的圖形顯示功能。當(dāng)模擬設(shè)備啟動(dòng)后,自動(dòng)進(jìn)行初始化并調(diào)用缺省的交通燈控制命令序列完成基本操作,直以有來自設(shè)備控制和防危核的設(shè)備控制命令為止。若交通燈的顯示時(shí)間超過一定時(shí)間,則強(qiáng)制設(shè)備執(zhí)行缺省的設(shè)備狀態(tài)。
4.3 設(shè)備控制器模塊
模擬設(shè)備控制器作為一個(gè)進(jìn)程獨(dú)立運(yùn)行,控制器先從命令文件中獲取命令參數(shù),然后根據(jù)命令的防危等級(jí)分別向模擬設(shè)備和防危核發(fā)送設(shè)備操作命令(包括正常的和不正常的操作命令)。命令中設(shè)置了時(shí)間控制參數(shù),控制器按此時(shí)間間隔值發(fā)送設(shè)備命令。
評(píng)論
查看更多