新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實現自控飛艇舵控系統

        單片機實現自控飛艇舵控系統

        作者: 時間:2011-09-23 來源:網絡 收藏
        3.2 軟件設計中的關鍵問題

        本文引用地址:http://www.104case.com/article/172480.htm

          (1)數據幀的串口接收及識別技術

          在舵控中,數據以二進制信息幀的格式進行傳遞。每個信息幀從標題開始都有固定的幀頭、幀尾,且長度固定,其基本數據格式如表1所示。

          

          在該舵控的設計中,串行通訊占有很重要的地位,如艇載計算機與主1之間的通訊過程。下面以主1的串口接收程序為例,對串行通訊的過程加以說明。

          在串行通信中,接收程序的任務是數據接收、幀識別和信息提取。常規的設計方法是設置一個比較大的緩沖區。串行接收中斷服務程序負責把接收到的數據壓入緩沖區,當緩沖區的數據足夠多時,再由主程序調用一個幀識別和解碼子程序對緩沖區中的數據進行處理。這種方法的好處是中斷服務程序比較短,不足之處為從一幀數據接收完畢到解碼時間較長,另外對緩沖區進行管理需要占用大量的的CPU時間,因而實時性較差,此處不宜使用。

          本文采用了中斷服務程序就地幀識別技術,即省掉緩沖區,數據接收、幀識別均由中斷服務程序完成,之后在主程序的循環中完成數據的提取和處理。就地幀識別技術的機理如下:把中斷服務程序看作是一個處理機,串行數據逐字節到來,程序先從數據序列中等到第一個幀頭,寫入該幀的存儲數組,同時置標志位 flag1,接收狀態推進一步;再判斷下一次中斷時,來到的數據是否符合第二個幀頭的特征。如果符合則存入相應數組,并置相應的標志位flag2,接收狀態繼續推進;如果幀頭兩個字節均符合,則將后面來到的數據依次存入指定數組;根據已接收到的字節數判斷,當符合該幀的數據部分接收完畢后,判斷下一字節是否為幀尾的第一個字節,如果是則置標志位flag3;之后依據同樣的方法判斷幀尾第二個字節是否來到,如果已接收到,則置該幀數據已完整接收到標志 flag4,同時接收狀態歸零,重新開始等待幀頭字符。在幀頭幀尾判斷期間,一旦有一項不符合要求,則將接收狀態歸零,以重新開始等待幀頭。主程序每循環一次便對“幀完整接收到”標志進行一次判斷,若為真則調用相應的數據提取子程序,并清flag4。

          串行中斷服務程序流程如圖2所示。采用中斷服務程序就地幀識別技術的優點在于數據接收后立即進行幀識別,省去了對緩沖區的管理工作,減少了存取次數,因而節省了大量的時間,極大地提高了接收程序的實時性。同時錯幀和斷幀被自動丟棄,不再占用資源。

          

         串行中斷服務程序流程

          圖2中各標志位含義為:

          flag1——接收到幀頭Head1標志;

          flag2——接收到完整幀頭標志;

          flag3——接收到幀尾End1標志;

          flag4——接收到完整幀標志。

          (2)多機通訊

          在舵控設計中,各部分間的通訊是設計的重要內容,其中主要包括單片機與上位PC機間的通訊和單片機與單片機之間的通訊。在舵控系統中,主單片機1與上位PC機通訊是通過單片機自帶的一路異步串行通訊接口完成的;而主單片機1通過其P1口向主單片機2傳輸數據,這里不再贅述,重點介紹主單片機2如何通過其一路串口分別向下位的多個舵控單片機傳送指令。

          此系統中,主單片機2作為主機,m個舵控單片機作為從機,在主機與從機的通訊過程中,串口控制寄存器中SCON中的SM2位發揮了重要作用。當其中一個舵控單片機(89C2051)的SM2位為1時,該單片機只接收地址幀,對數據幀不理睬;而當SM2位為0時,該單片機接收所有發來的消息。具體通信過程如下:

          ①首先將主、從單片機工作方式選為模式3,所有從機的SM2位開始置1,處于只接收地址幀狀態。

          ②主機接收主單片機1發來的數據幀,從中提出數據部分(m個字節的指令對應m個舵控單片機),根據序號在控制指令字節前加上一個字節的地址信息。然后主機依次通過串口向下發送各舵控單片機的地址字節和數據字節。發送一幀地址信息,包含8位地址,第9位為1,表示發送的幀為地址幀。

          ③從機接收地址幀后,進入中斷,將發來的地址與自身比較;地址一致的從機就是被尋址的從機,它清除SM2位,接收主機發來的所有后續幀信息(數據信息)。未尋址的所有其他從機仍維持SM2=1,對主機發來的數據幀不理睬,直到發來新地址幀;之后在下一次中斷時被尋址的從機接收主機發來的數據信息(第9位為 0)。

          需要注意的是,如果對已經尋址的從機再發送地址幀,則該從機SM2=1,恢復初始狀態,和其他從機競爭。

          



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 县级市| 枞阳县| 衡阳市| 江都市| 泸西县| 荣成市| 浪卡子县| 德化县| 泸州市| 息烽县| 伊川县| 长垣县| 安陆市| 宁乡县| 修武县| 浦城县| 侯马市| 奈曼旗| 秦皇岛市| 黄大仙区| 台北县| 封开县| 顺昌县| 股票| 隆回县| 富锦市| 惠州市| 车险| 内黄县| 昂仁县| 右玉县| 洛阳市| 会宁县| 郯城县| 元阳县| 甘泉县| 长阳| 出国| 镇赉县| 南宫市| 阿荣旗|