1553B總線(xiàn)控制器設計與調試
(2)總線(xiàn)的重試與消息重復:當消息中出現狀態(tài)地址錯,字計數錯,同步類(lèi)型錯,校驗錯時(shí)總線(xiàn)會(huì )進(jìn)行標記,所以設計程序時(shí)應當打開(kāi)錯誤檢測位。同時(shí)由于1553B總線(xiàn)是多余度總線(xiàn),當某一個(gè)總線(xiàn)出現差錯時(shí),系統會(huì )根據設定在另外一個(gè)BUS上重試,也可以在本條總線(xiàn)重試,所以在程序設計時(shí)要靈活運用。然而對總線(xiàn)上的廣播消息,由于這類(lèi)消息沒(méi)有狀態(tài)返回,因此總線(xiàn)重試的意義在這里就沒(méi)有了。
(3)避免沖突:總線(xiàn)設計必須考慮到各個(gè)終端的響應及處理,在安排通訊時(shí)應該避免對同一終端地址連續發(fā)送總線(xiàn)消息(針對同一子地址的連續消息發(fā)送除外),由于大多數終端的通訊處理是在中斷情況下進(jìn)行的,如果連續發(fā)送則有可能使終端丟失消息或者處理沖突,所以總線(xiàn)要給同一終端留下足夠的處理時(shí)間。
下面是筆者編寫(xiě)的總線(xiàn)控制器程序中的部分代碼:
////////////中斷函數////////////////////
ViInt32 _stdcall demo_rt_watch_function(ViUInt32 cardnum,ViUInt16 chnum,struct api_int_fifo *sIntFIFO)
{ ViUInt32 tail; // FIFO Tail index
ViUInt32 messno,wordcount,i=0,j=0; // Message number to be updated
ViStatus hr;
API_BC_MBUF api_message;
ViUInt16 rtaddr,subaddr,transrec;
API_RT_MBUF_READ mbuf;
/***********************************************
* Loop on all entries in the FIFO. Get the tail pointer and extract
* the FIFO entry it points to. When head == tail FIFO is empty
******************************************/
tail = sIntFIFO->tail_index;
while (tail != sIntFIFO->head_index )
{
// Extract the buffer ID from the FIFO and read the message from the board
messno = sIntFIFO->fifo[tail].bufferID;
if (sIntFIFO->fifo[tail].event_type==EVENT_BC_MESSAGE)
{
hr=Eph6273_BC_MessageRead(
cardnum,
// (i)card number (0 - based)
chnum,
// (i)channel number (0 - based)
messno,
// (i)index of BC message to read
api_message);
// (o)user's buffer to write message into
tail++;
// Next entry
tail = sIntFIFO->mask_index;
// Wrap the index
sIntFIFO->tail_index = tail;
// Save the index
}
return API_SUCCESS;
}
4 1553B總線(xiàn)系統連接與調試
1553B總線(xiàn)采用雙鉸屏蔽線(xiàn)傳輸,當終端離總線(xiàn)很近時(shí)(0.3米)可以直接通過(guò)隔離變壓器與總線(xiàn)連接,當終端離總線(xiàn)較遠(最遠不應超過(guò)6.1米)時(shí)要在變壓器與總線(xiàn)之間插入耦合器。這兩種方式比較變壓器耦合具有更好的抗干擾能力,能用在長(cháng)距離的通訊上,而直接耦合不利于RT故障的隔離,會(huì )因為某一個(gè)RT故障造成系統網(wǎng)絡(luò )的通訊不正常。圖1就是一個(gè)簡(jiǎn)單的系統連接圖,當然設計者可以根據系統需求在總線(xiàn)上連接更多的終端,也可以?huà)炜偩€(xiàn)監視器用以監視總線(xiàn)信息。
評論