關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 一種多視覺傳感器控制系統的實現

        一種多視覺傳感器控制系統的實現

        作者: 時間:2011-09-07 來源:網絡 收藏
        5.2 CAN節點的軟件設計

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

          CAN總線智能節點的軟件設計主要包括三個部分:CAN節點初始化、報文發送和報文接收。CAN節點的通訊實質上就是對CAN控制器內部各寄存器進行讀寫,由于這些寄存器或發送、接收緩沖器均有確定的地址,CPU可通過外設訪問指令對它們進行讀寫操作。系統上電復位后,CPU對SJA1000的各個控制寄存器寫入相應控制字信息,以完成CAN控制器的初始化。本例中,系統軟件采用結構化程序設計方法,程序具有較好的模塊性和可移植性,對于不同的檢測系統和應用環境,可以方便地進行程序重組。編程語言采用單片機C語言Keil C51,它具有較高的效率,可讀性好,能夠有效減輕系統軟件編程的工作量。

          CAN總線通訊的成功與否重點是SJA1000的初始化設置,初始化程序通過將CAN控制器的寄存器寫入控制字,確定CAN的工作方式。用P89C668的P2.7作為片選信號與SJA1000的CS引腳相連,SJA1000的片內寄存器和P89C668單片機寄存器是重疊編址的,因此SJA1000寄存器尋址時要定義成片外RAM尋址。下面給出了CAN節點的初始化程序:

          Init_Can (void)

          { MODE = 0x09; file://進入復位模式,對SJA1000進行初始化;

          CDR = 0x88; file://選擇PeliCan;

          CMR = 0x0C; file://清除數據溢出和釋放接收緩沖器;

          IER = 0x03; file://開放接收中斷和發送中斷;

          ACR0 = 0x66;

          ACR1 = 0x66;

          ACR2 = 0x66;

          ACR3 = 0x66; file://根據具體的協議定義設置驗收碼寄存器;

          AMR0 = 0xFF;

          AMR1 = 0xFF;

          AMR2 = 0xFF;

          AMR3 = 0xFF; file://根據具體的協議定義設置驗收屏蔽寄存器;

          BTR0 = 0x41;

          BTR1 = 0x1B; file://12MHz晶振下,設置波特率為200kbps;

          OCR = 0XAA;

          EWLR =0x60;

          RBSA = 0x00; file://RX緩存器起始地址寄存器設置為0;

          TXERR= 0x00; file://發送錯誤接收器設置為0;

          ECC =0x00; ?

          MODE= 0x08; file://單向濾波方式,進入正常模式,初始化完畢;

          由于測控系統要進行檢測多為在線檢測,實時性要求較強,這里各節點采用中斷接收方式接收上位機的控制命令,節點初始化后,當一幀信息經過出錯檢測確認為正確信息后裝入接收緩沖器,SJA1000的INT腳會產生中斷信號,該信號連接到單片機P89C668的外邊中斷0引腳,在外部中斷0中斷處理程序中判別該信息的標志符如果是本節點地址,便讀出接收緩沖器的數據并保存在RAM中,中斷接收程序框圖如下:

          系統中發送報文采用查詢方式,節點在收到主控機的數據請求命令后發送數據,發送模塊首先進行狀態查詢,判定總線是否空閑,如空閑,則將目的節點地址寫入發送標志符寄存器,數據寫入發送緩沖器,完成一幀CAN信息發送。

          CAN信息格式分為信息和數據兩部分,頭兩個字節是信息部分,其前11位為標志符,標志符的前八位用作接收判斷,應包含本信息包的目的節點地址,然后是一位RTR位(0為數據幀,1為遠程幀,本例使用數據幀),最后是四位的DLC。其余八個字節為是數據部分,存有實際要發送的數據。本例中只用到前兩個數據,第一個表示傳感器地址,第二個字節表示選擇傳感器里的兩路攝像機中的哪一路采集圖像。

          CAN節點之間通訊成功的另一個關鍵是波特率的設置,不僅CAN總線上的各下位機節點要設置相同的波特率,總線與上位PC機相連的USBCAN接口卡也要有相同的波特率,這樣才能保證通訊暢通。由于USBCAN接口卡內的CAN控制器SJA1000用的是16M晶振,而各傳感器節點內的SJA1000與P89C668使用12M晶振,因此對于不同的通訊速率一定要計算出兩種晶振都相一致的BTR0、 BTR1來設置總線波特率。

          6 結束語

          本文主要著重于多傳感器的設計研究,目前系統軟硬件已初步調試完成,并能做到各個視覺傳感器的快速切換傳輸視頻圖像,且切換是圖像抖動較小,效果較好。本系統的精度主要由硬件決定,選用高精度、高分辨力的CCD攝像機和激光器,激光器投射出的線結構光越細光強分布越均勻,則測量精度越高。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 吴桥县| 北海市| 济宁市| 甘泉县| 白玉县| 武隆县| 汝州市| 定西市| 岳阳县| 平安县| 库伦旗| 建瓯市| 耒阳市| 色达县| 嵩明县| 扎囊县| 保山市| 万源市| 景东| 定西市| 富顺县| 婺源县| 青川县| 郑州市| 太谷县| 盈江县| 明溪县| 芷江| 巴青县| 抚松县| 得荣县| 东阳市| 普格县| 闻喜县| 鹿邑县| 靖边县| 翼城县| 泸定县| 江油市| 中江县| 龙陵县|