多視覺傳感器CAN總線檢測系統的設計
傳感器節點的CAN 總線軟件設計主要包括三個部分: CAN 節點初始化、報文發送和報文接收。CAN 節點的通訊實質上就是對CAN 控制器內部各寄存器進行讀寫,由于這些寄存器或發送、接收緩沖器均有確定的地址,CPU 可通過外設訪問指令對它們進行讀寫操作。CAN 總線通訊的成功與否重點是SJA1000 的初始化設置,初始化程序通過將CAN 控制器的寄存器寫入控制字,確定CAN 的工作方式。用P89C668 的P217 作為片選信號與SJA1000 的CS引腳相連,SJA1000 的片內寄存器和P89C668 單片機寄存器是重疊編址的,因此SJA1000 寄存器尋址時要定義成片外RAM 尋址。
由于視覺傳感器檢測系統要進行的視覺檢測任務多為在線檢測,實時性要求較強,這里各傳感器節點采用中斷接收方式接收上位機的控制命令,節點初始化后,當收到上位機發出的一幀信息后,判斷其報文標志符是否符合自己的接收代碼寄存器和驗收屏蔽寄存器的設置,若不符則不接收,若通過則確認為本節點應收信息后裝入接收緩沖器,SJA1000 的INT 腳會產生中斷信號,該信號連接到單片機P89C668 的外部中斷0 引腳,在外部中斷0中斷處理程序執行如圖5 所示的程序流程,讀出接收緩沖器的數據并保存在RAM 中,并啟動本視覺傳感器節點進行測量。
系統中發送報文采用查詢方式,傳感器節點在收到主控機的數據請求命令后發送數據,發送模塊首先進行狀態查詢,判定總線是否空閑,如空閑,則將目的節點地址寫入發送標志符寄存器,數據寫入發送緩沖器,完成一幀CAN 信息發送。若同時有多個節點都向總線發送報文,且都符合驗收濾波器的設置,則報文標識碼的二進值越低的報文優先級越高,從而在總線仲裁過程中首先占據總線訪問的優先權。系統軟件采用Keil C51 語言來編寫,具有模塊化功能強且簡潔易讀等特點。CAN 控制器的發送緩沖區被分為描述符區和數據區兩部分,描述符區的第一個字節是幀信息字節,它說明了幀格式(標準幀或擴展幀) 、遠程幀或數據幀和數據的長度,擴展幀有四個字節的標志符,數據區最多長八個數據字節,存有實際要發送的數據。本例中只用到前兩個數據,第一個表示傳感器地址,第二個字節表示選擇傳感器里的兩路攝像機中的哪一路采集圖像。
CAN 節點之間通訊成功的另一個關鍵是波特率的設置,不僅CAN 總線上的各下位機節點要設置相同的波特率,總線與上位PC 機相連的USBCAN 接口卡也要有相同的波特率,這樣才能保證通訊暢通。由于USBCAN 接口卡內的CAN 控制器SJA1000 用的是16MHz 的晶振,而各傳感器節點內的SJA1000與P89C668 使用12MHz 的晶振,因此對于不同的通訊速率一定要計算出兩種晶振都相一致的總線時序寄存器BTR0 、BTR1 來設置總線波特率。本例中使用400kbps 作為總線通訊的波特率,效果很好。
結束語
本文主要著重于多視覺傳感器控制系統的設計研究。鑒于CAN 網絡的優良性能,能夠快速、可靠地交換信息,特別適合多通訊節點的互連,形成多主機控制器局部網,實驗表明控制系統能做到各個視覺傳感器的快速切換傳輸視頻圖像,且切換時圖像抖動小,效果好。該系統具有較好的網絡擴展能力,在系統工作過程中靈活地增減一些傳感器節點不會影響系統工作,只需對主控軟件進行少量修改即可。本控制系統的另一個特點是:傳感器的照明燈的電源功率大小可以由計算機通過CAN 總線由傳感器控制單元自動調節,以適應現場環境光強的變化。本文所設計的多視覺傳感器測控系統,可以廣泛用于各種工業現場實時在線視覺測量系統中。












評論