多視覺傳感器CAN總線檢測系統(tǒng)的設計
引 言
隨著計算機技術、人工智能、光電檢測、圖像處理以及模式識別等各學科的不斷完善和互相滲透,視覺檢測技術作為一種多領域、各學科交叉的技術已取得了突飛猛進的發(fā)展,它是以機器視覺為基礎的新型測試技術,具有測量時非接觸、速度快、信息量大、應用領域廣等特點。視覺檢測技術廣泛用于產品質量在線監(jiān)測,自動巡視商店、銀行或其他重要場所的安防監(jiān)視,產品的標簽文字標識檢查,紡織印染業(yè)中的自動分色、配色,大型物體三維結構尺寸的測量,各種復雜三維表面形狀的檢測、恢復重構以及逆向工程等很多領域。視覺檢測系統(tǒng)通常是由計算機、視覺傳感器與控制系統(tǒng)三大模塊組成。對于多視覺傳感器大型實時測量系統(tǒng),為了讓視覺檢測系統(tǒng)快速、精確地獲得理想的圖像信息,視覺傳感器的控制系統(tǒng)的作用尤為重要。視覺傳感器的控制系統(tǒng)根據其使用的串行控制總線標準不同,其控制與通訊的性能將不同。這里采用CAN (Controller Area Network) 總線作為系統(tǒng)的串行控制總線。
由于CAN 總線具有通訊速率高、實時性好、帶負載能力強、可靠性及抗干擾能力好、總線利用率高及硬件成本低等優(yōu)點,非常適于大型測試系統(tǒng)控制網絡的通訊。因此,本文將基于CAN 總線分布式網絡控制技術,介紹多視覺傳感器的實時控制方法與控制系統(tǒng)的設計。
視覺傳感器的檢測原理與系統(tǒng)組成
視覺檢測一般基于三角法,由攝像機、光源跟被測物體構成測量三角,CCD 相機把光源投射到被測物體表面的經過調制后的三維深度信息轉換成二維圖像傳給計算機再經由圖像處理、特征提取等恢復解調出被測物體的三維形貌信息。如圖1 所示,簡單的結構光視覺傳感器可由一個平面結構光投射器L 與一個CCD 攝像機A 組成,但當被測物體表面曲率變化較大時,有時會出現(xiàn)死區(qū)現(xiàn)象,即光平面與物體表面的交線被旁邊的曲面遮擋,使攝像機無法看到該交線,以致測量信號消失。為避免由測量復雜表面物體時產生的死區(qū)現(xiàn)象,可用兩個相機A 和B 對稱分布于光平面兩側,接收光條的漫反射光。本例使用波長為650nm 的紅色激光器作為光源,因其與環(huán)境光反差大,干擾小,較易進行圖像特征點的提取,雙目視覺傳感器組成的多視覺傳感器測量系統(tǒng)為研究對象,研究其CAN 總線分布式網絡控制技術。
圖2 給出了多視覺傳感器CAN 總線網絡控制檢測系統(tǒng)的基本組成原理。本系統(tǒng)采用主從式結構,上位機為PC 機,下位機為8051 單片機控制單元(MCU) ,上、下位機之間用CAN 總線進行通訊,由于PC 機中并不帶CAN 總線接口,因此需要一個CAN 接口卡,這里選用USBCAN 智能接口卡來通信,因其具有體積小、外置且即插即用等特點。這樣,PC 可通過USB 總線方便地連接至CAN 總線網絡,控制各個CAN 節(jié)點,進行數據采集和處理。
視覺傳感器的控制電路(MCU) 主要包括視頻切換、電源供給和CAN 通訊接口三個模塊。電源供給電路模塊提供CCD 攝像機、激光投射器與MCU的電源,并且由MCU 控制單元控制著它們的開啟與關閉。為了避免激光投射器使用時間過長導致激光器( 或普通照明光源) 發(fā)熱引起光能分布不穩(wěn)或視覺傳感器受熱變形從而影響測量精度,以及延長投射器的使用壽命,我們采用如下的控制方式: 當傳感器開始測量時,先上電初始化,再打開激光器,測量完畢后即關閉光源電源。由于每個傳感器里面含有一到兩個CCD 相機,而任一時刻傳感器只能輸出一路視頻信號,因此需要視頻切換開關對二路視頻信號進行自動分時切換。
為了滿足大尺寸物體的視覺檢測需要,充分利用CAN 總線的特點,使整個控制系統(tǒng)具有積木式的可擴充能力,本控制系統(tǒng)按最少能帶64 個傳感器的負載能力進行了設計。如果設每個視覺傳感器里面都有兩個攝像機,即最多共有128 路視頻輸入,而任一時刻系統(tǒng)只選取其中一路視頻圖像傳給計算機圖像采集卡進行圖像采集處理,因此在圖2 每個視覺傳感器的單路視頻輸出處,需再加上一個多路視頻切換器,如圖3 所示,每8 個視頻輸入1 路視頻輸出作為一個視頻信號切換單元,實現(xiàn)8 選1 方式的視頻切換。那么按圖3 中的積木式連接方式,9 個單元就可驅動64 路傳感器。每個視頻切換單元都有自己的CAN 總線接口,連接到整個控制系統(tǒng)的分布式網路上,與單個傳感器控制系統(tǒng)一起協(xié)同工作。我們采用8 選1 視頻切換為一個單元,采用積木式結構進行擴充,主要是考慮到在實際的多視覺傳感器測量系統(tǒng)中,對于具體不同的測量對象,使用的傳感器的數目可能不同。這種方式的最大優(yōu)點是可以根據使用的傳感器的多少進行自由組合。
在檢測系統(tǒng)中,我們分別采用了MAXIM 公司的視頻復用放大器max4313 和max4315 進行多路視頻信號的切換傳輸。在雙目視覺傳感器內部用單片機控制max4313 進行二選一視頻切換。max4313 和max4315 是低功耗高速多路視頻復用放大器,增益均為+ 2V/ V ,具有通道切換速度快、切換瞬變低、差分增益誤差低、相位誤差小等良好的視頻特性,本例中用±5V 的雙電源供電。由于視頻信號頻率較高,頻帶較寬,因此當兩路視頻信號相距較近時容易產生串擾,為了盡量減小串擾,要把數字模塊與視頻切換模塊在一個板子上分成二個區(qū)域,以及盡可能減少視頻引線的長度并注意使用75Ω 匹配電阻,視頻引線使用帶屏蔽層的優(yōu)質視頻同軸電纜。
傳感器節(jié)點硬件接口
傳感器節(jié)點控制電路的CAN 總線接口主要由微控制器、CAN 控制器和CAN 收發(fā)器構成。CAN控制器實現(xiàn)了CAN 通訊中物理層和數據鏈路層的功能,提供了與微控制器和總線的物理線路接口,這樣用戶只需編寫符合自己通訊和控制要求的應用層協(xié)議即可。本系統(tǒng)中微控制器使用Philips 公司的8 位增強型單片機P89C668 ,CAN 控制器和總線驅動器分別采用Philips 公司的SJA1000 、PCA82C250 來構成典型的CAN 通訊節(jié)點。其硬件電路原理如圖4 所示。
電路的核心部分是P89C668 單片機,它以80C51為內核,具有ISP (在系統(tǒng)編程) 和IAP (在應用編程) 功能的片內Flash 存儲器,片內Boot ROM 包含底層FLASH 編程子程序,可以實現(xiàn)通過串行口下載升級程序。數顯部分用兩片74HC164 驅動兩個共陰極數碼管以顯示選擇第幾個傳感器進行檢測任務。,這里不再贅述。需要注意的是,本例中SJA1000 的12MHz 的晶振由P89C668 的外部晶振產生電路同時提供; 總線傳輸介質( 這里采用雙絞線) CANH、CANL 之間要加上120Ω的終端匹配電阻才能保證總線的正常通訊。
傳感器節(jié)點的CAN總線軟件設計
傳感器節(jié)點的CAN 總線軟件設計主要包括三個部分: CAN 節(jié)點初始化、報文發(fā)送和報文接收。CAN 節(jié)點的通訊實質上就是對CAN 控制器內部各寄存器進行讀寫,由于這些寄存器或發(fā)送、接收緩沖器均有確定的地址,CPU 可通過外設訪問指令對它們進行讀寫操作。CAN 總線通訊的成功與否重點是SJA1000 的初始化設置,初始化程序通過將CAN 控制器的寄存器寫入控制字,確定CAN 的工作方式。用P89C668 的P217 作為片選信號與SJA1000 的CS引腳相連,SJA1000 的片內寄存器和P89C668 單片機寄存器是重疊編址的,因此SJA1000 寄存器尋址時要定義成片外RAM 尋址。
由于視覺傳感器檢測系統(tǒng)要進行的視覺檢測任務多為在線檢測,實時性要求較強,這里各傳感器節(jié)點采用中斷接收方式接收上位機的控制命令,節(jié)點初始化后,當收到上位機發(fā)出的一幀信息后,判斷其報文標志符是否符合自己的接收代碼寄存器和驗收屏蔽寄存器的設置,若不符則不接收,若通過則確認為本節(jié)點應收信息后裝入接收緩沖器,SJA1000 的INT 腳會產生中斷信號,該信號連接到單片機P89C668 的外部中斷0 引腳,在外部中斷0中斷處理程序執(zhí)行如圖5 所示的程序流程,讀出接收緩沖器的數據并保存在RAM 中,并啟動本視覺傳感器節(jié)點進行測量。
系統(tǒng)中發(fā)送報文采用查詢方式,傳感器節(jié)點在收到主控機的數據請求命令后發(fā)送數據,發(fā)送模塊首先進行狀態(tài)查詢,判定總線是否空閑,如空閑,則將目的節(jié)點地址寫入發(fā)送標志符寄存器,數據寫入發(fā)送緩沖器,完成一幀CAN 信息發(fā)送。若同時有多個節(jié)點都向總線發(fā)送報文,且都符合驗收濾波器的設置,則報文標識碼的二進值越低的報文優(yōu)先級越高,從而在總線仲裁過程中首先占據總線訪問的優(yōu)先權。系統(tǒng)軟件采用Keil C51 語言來編寫,具有模塊化功能強且簡潔易讀等特點。CAN 控制器的發(fā)送緩沖區(qū)被分為描述符區(qū)和數據區(qū)兩部分,描述符區(qū)的第一個字節(jié)是幀信息字節(jié),它說明了幀格式(標準幀或擴展幀) 、遠程幀或數據幀和數據的長度,擴展幀有四個字節(jié)的標志符,數據區(qū)最多長八個數據字節(jié),存有實際要發(fā)送的數據。本例中只用到前兩個數據,第一個表示傳感器地址,第二個字節(jié)表示選擇傳感器里的兩路攝像機中的哪一路采集圖像。
CAN 節(jié)點之間通訊成功的另一個關鍵是波特率的設置,不僅CAN 總線上的各下位機節(jié)點要設置相同的波特率,總線與上位PC 機相連的USBCAN 接口卡也要有相同的波特率,這樣才能保證通訊暢通。由于USBCAN 接口卡內的CAN 控制器SJA1000 用的是16MHz 的晶振,而各傳感器節(jié)點內的SJA1000與P89C668 使用12MHz 的晶振,因此對于不同的通訊速率一定要計算出兩種晶振都相一致的總線時序寄存器BTR0 、BTR1 來設置總線波特率。本例中使用400kbps 作為總線通訊的波特率,效果很好。
結束語
本文主要著重于多視覺傳感器控制系統(tǒng)的設計研究。鑒于CAN 網絡的優(yōu)良性能,能夠快速、可靠地交換信息,特別適合多通訊節(jié)點的互連,形成多主機控制器局部網,實驗表明控制系統(tǒng)能做到各個視覺傳感器的快速切換傳輸視頻圖像,且切換時圖像抖動小,效果好。該系統(tǒng)具有較好的網絡擴展能力,在系統(tǒng)工作過程中靈活地增減一些傳感器節(jié)點不會影響系統(tǒng)工作,只需對主控軟件進行少量修改即可。本控制系統(tǒng)的另一個特點是:傳感器的照明燈的電源功率大小可以由計算機通過CAN 總線由傳感器控制單元自動調節(jié),以適應現(xiàn)場環(huán)境光強的變化。本文所設計的多視覺傳感器測控系統(tǒng),可以廣泛用于各種工業(yè)現(xiàn)場實時在線視覺測量系統(tǒng)中。