新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 1553B總線控制器設計與調試

        1553B總線控制器設計與調試

        作者: 時間:2009-06-25 來源:網絡 收藏

        (2)的重試與消息重復:當消息中出現狀態地址錯,字計數錯,同步類型錯,校驗錯時會進行標記,所以程序時應當打開錯誤檢測位。同時由于是多余度總線,當某一個總線出現差錯時,系統會根據設定在另外一個BUS上重試,也可以在本條總線重試,所以在程序時要靈活運用。然而對總線上的廣播消息,由于這類消息沒有狀態返回,因此總線重試的意義在這里就沒有了。
        (3)避免沖突:總線必須考慮到各個終端的響應及處理,在安排通訊時應該避免對同一終端地址連續發送總線消息(針對同一子地址的連續消息發送除外),由于大多數終端的通訊處理是在中斷情況下進行的,如果連續發送則有可能使終端丟失消息或者處理沖突,所以總線要給同一終端留下足夠的處理時間。
        下面是筆者編寫的總線程序中的部分代碼:
        ////////////中斷函數////////////////////
        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 總線系統連接與
        總線采用雙鉸屏蔽線傳輸,當終端離總線很近時(0.3米)可以直接通過隔離變壓器與總線連接,當終端離總線較遠(最遠不應超過6.1米)時要在變壓器與總線之間插入耦合器。這兩種方式比較變壓器耦合具有更好的抗干擾能力,能用在長距離的通訊上,而直接耦合不利于RT故障的隔離,會因為某一個RT故障造成系統網絡的通訊不正常。圖1就是一個簡單的系統連接圖,當然設計者可以根據系統需求在總線上連接更多的終端,也可以掛總線監視器用以監視總線信息。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大名县| 陕西省| 东阳市| 三门峡市| 柳江县| 吴江市| 乌兰浩特市| 江阴市| 铜梁县| 林周县| 和林格尔县| 丰城市| 绥阳县| 日喀则市| 丰原市| 石景山区| 镇宁| 奉贤区| 西乌珠穆沁旗| 台州市| 大城县| 永清县| 武威市| 南雄市| 仙桃市| 白山市| 湘西| 新兴县| 呼伦贝尔市| 敦化市| 靖边县| 郎溪县| 湘西| 安图县| 扶绥县| 迭部县| 邳州市| 漯河市| 噶尔县| 莎车县| 五台县|