點擊學習>>《龍哥手把手教你學LabVIEW視覺設(shè)計》視頻教程
一、LabVIEW介紹
LabVIEW是一種程序開發(fā)環(huán)境,由美國國家儀器(NI)公司研制開發(fā),類似于C和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計算機語言的顯著區(qū)別是:其他計算機語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是框圖的形式。 LabVIEW軟件是NI設(shè)計平臺的核心,也是開發(fā)測量或控制系統(tǒng)的理想選擇。 LabVIEW開發(fā)環(huán)境集成了工程師和科學家快速構(gòu)建各種應(yīng)用所需的所有工具,旨在幫助工程師和科學家解決問題、提高生產(chǎn)力和不斷創(chuàng)新。
LabVIEW應(yīng)用領(lǐng)域
LABVIEW有很多優(yōu)點,尤其是在某些特殊領(lǐng)域其特點尤其突出。
測試測量:LABVIEW[5] 最初就是為測試測量而設(shè)計的,因而測試測量也就是現(xiàn)在LABVIEW最廣泛的應(yīng)用領(lǐng)域。經(jīng)過多年的發(fā)展,LABVIEW在測試測量領(lǐng)域獲得了廣泛的承認。至今,大多數(shù)主流的測試儀器、數(shù)據(jù)采集設(shè)備都擁有專門的LabVIEW驅(qū)動程序,使用LabVIEW可以非常便捷的控制這些硬件設(shè)備。同時,用戶也可以十分方便地找到各種適用于測試測量領(lǐng)域的LabVIEW工具包。這些工具包幾乎覆蓋了用戶所需的所有功能,用戶在這些工具包的基礎(chǔ)上再開發(fā)程序就容易多了。有時甚至于只需簡單地調(diào)用幾個工具包中的函數(shù),就可以組成一個完整的測試測量應(yīng)用程序。
控制:控制與測試是兩個相關(guān)度非常高的領(lǐng)域,從測試領(lǐng)域起家的LabVIEW自然而然地首先拓展至控制領(lǐng)域。LabVIEW擁有專門用于控制領(lǐng)域的模塊----LabVIEWDSC。除此之外,工業(yè)控制領(lǐng)域常用的設(shè)備、數(shù)據(jù)線等通常也都帶有相應(yīng)的LabVIEW驅(qū)動程序。使用LabVIEW可以非常方便的編制各種控制程序。
仿真:LabVIEW包含了多種多樣的數(shù)學運算函數(shù),特別適合進行模擬、仿真、原型設(shè)計等工作。在設(shè)計機電設(shè)備之前,可以先在計算機上用LabVIEW搭建仿真原型,驗證設(shè)計的合理性,找到潛在的問題。在高等教育領(lǐng)域,有時如果使用LabVIEW進行軟件模擬,就可以達到同樣的效果,使學生不致失去實踐的機會。
兒童教育:由于圖形外觀漂亮且容易吸引兒童的注意力,同時圖形比文本更容易被兒童接受和理解,所以LabVIEW非常受少年兒童的歡迎。對于沒有任何計算機知識的兒童而言,可以把LabVIEW理解成是一種特殊的“積木”:把不同的原件搭在一起,就可以實現(xiàn)自己所需的功能。著名的可編程玩具“樂高積木”使用的就是LabVIEW編程語言。兒童經(jīng)過短暫的指導就可以利用樂高積木提供的積木搭建成各種車輛模型、機器人等,再使用LabVIEW編寫控制其運動和行為的程序。除了應(yīng)用于玩具,LabVIEW還有專門用于中小學生教學使用的版本。
快速開發(fā):根據(jù)筆者參與的一些項目統(tǒng)計,完成一個功能類似的大型應(yīng)用軟件,熟練的LabVIEW程序員所需的開發(fā)時間,大概只是熟練的C程序員所需時間的1/5左右。所以,如果項目開發(fā)時間緊張,應(yīng)該優(yōu)先考慮使用LabVIEW,以縮短開發(fā)時間。
跨平臺:如果同一個程序需要運行于多個硬件設(shè)備之上,也可以優(yōu)先考慮使用LabVIEW。LabVIEW具有良好的平臺一致性。LabVIEW的代碼不需任何修改就可以運行在常見的三大臺式機操作系統(tǒng)上:Windows、Mac OS 及 Linux。除此之外,LabVIEW還支持各種實時操作系統(tǒng)和嵌入式設(shè)備,比如常見的PDA、FPGA以及運行VxWorks和PharLap系統(tǒng)的RT設(shè)備。
二、CAN總線簡介
CAN總線是德國BOSCH公司在80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議。它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導纖維,通信速率可達1MBPS。CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通信數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗、優(yōu)先級判別等各項工作。
由于其具有通信速度快、可靠性高和性能價格比好等突出優(yōu)點,它正越來越廣泛地應(yīng)用于汽車、機械工業(yè)、紡織機械、農(nóng)業(yè)用機械、機器人、數(shù)控機床、醫(yī)療器械、家用電器及傳感器等領(lǐng)域[2],并越來越受到工業(yè)界的重視,被公認為是最有前途的現(xiàn)場總線之一。
CAN總線優(yōu)勢
CAN屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。較之許多RS-485基于R線構(gòu)建的分布式控制系統(tǒng)而言,基于CAN總線的分布式控制系統(tǒng)在以下方面具有明顯的優(yōu)越性:
1、網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強
CAN控制器工作于多種方式,網(wǎng)絡(luò)中的各節(jié)點都可根據(jù)總線訪問優(yōu)先權(quán)(取決于報文標識符)采用無損結(jié)構(gòu)的逐位仲裁的方式競爭向總線發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對通信數(shù)據(jù)進行編碼,這可使不同的節(jié)點同時接收到相同的數(shù)據(jù),這些特點使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點之間的數(shù)據(jù)通信實時性強,并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng),通信方式也只能以主站輪詢的方式進行,系統(tǒng)的實時性、可靠性較差。
2、開發(fā)周期短
CAN總線通過CAN收發(fā)器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會在出現(xiàn)在RS-485網(wǎng)絡(luò)中的現(xiàn)象,即當系統(tǒng)有錯誤,出現(xiàn)多節(jié)點同時向總線發(fā)送數(shù)據(jù)時,導致總線呈現(xiàn)短路,從而損壞某些節(jié)點的現(xiàn)象。而且CAN節(jié)點在錯誤嚴重的情況下具有自動關(guān)閉輸出功能,以使總線上其他節(jié)點的操作不受影響,從而保證不會出現(xiàn)像在網(wǎng)絡(luò)中,因個別節(jié)點出現(xiàn)問題,使得總線處于“死鎖”狀態(tài)。而且,CAN具有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來實現(xiàn),從而大大降低系統(tǒng)開發(fā)難度,縮短了開發(fā)周期,這些是僅有電氣協(xié)議的RS-485所無法比擬的。
3、已形成國際標準的現(xiàn)場總線
另外,與其它現(xiàn)場總線比較而言,CAN總線是具有通信速率高、容易實現(xiàn)、且性價比高等諸多特點的一種已形成國際標準的現(xiàn)場總線。這些也是CAN總線應(yīng)用于眾多領(lǐng)域,具有強勁的市場競爭力的重要原因。
4、最有前途的現(xiàn)場總線之一
CAN 即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場總線的范疇。與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性。由于其良好的性能及獨特的設(shè)計,CAN總線越來越受到人們的重視。
三、CAN總線通信系統(tǒng)的原理和方案
1.系統(tǒng)原理
CAN總線和總線上的各個CAN節(jié)點在具備完整的通信協(xié)
議下,一起構(gòu)成了CAN網(wǎng)絡(luò)。本系統(tǒng)設(shè)計兩個CAN節(jié)點進行互相通信,其中采用瑞典Kvaser公司的KvaserLeafProfessional———CAN總線分析儀作為總線的一個節(jié)點,負責與上位機通信,同時檢測總線狀況,包括總線負載、信號幀的收發(fā)數(shù)量以及錯誤幀情況;另一個是基于52單片機自主開發(fā)的CAN節(jié)點,可以實現(xiàn)對模擬信號的采集并轉(zhuǎn)化為CAN信號。該CAN節(jié)點能夠處理CAN總線上的數(shù)據(jù),能夠?qū)AN2.0(A/B)協(xié)議進行解析,并由硬件完成一些CAN基本功能,比如為接收到的CAN報
文提供一定大小的接收緩沖區(qū)、按照一定規(guī)則對接收到的數(shù)據(jù)完成ID濾波以及執(zhí)行CRC校驗等等。每個CAN節(jié)點包括以下三個部分[3]:①微控制器負責完成CAN控制器的初始化,進行與CAN控制器的數(shù)據(jù)傳遞,并按照預(yù)定的程序進行處理;②CAN控制器主要負責將數(shù)據(jù)以CAN報文的形式傳遞,并進行系統(tǒng)的診斷、測試以及處理CAN總線上的錯誤等;③CAN收發(fā)器是CAN控制器和CAN總線之間的接口,完成物理電平的轉(zhuǎn)換。
2.總體方案
較常見的CAN節(jié)點組成框圖如圖1所示。
圖1中方案1的一種經(jīng)典配置就是“51系列微控制器+獨立的CAN控制器SJA1000+高速CAN收發(fā)器TJA1050”[4]。此方案的優(yōu)點在于靈活性,設(shè)計者可以選用性價比最高、最適合實際用途的51系列微控制器。缺點就是硬件電路相對復雜,同下面的方案2相比,需要設(shè)計微控制器和CAN控制器之間的連接電路。
方案2采用的是“內(nèi)嵌CAN控制器的微控制器+高速CAN收發(fā)器TJA1050”[4]。其中,STM8A是ST公司一款性能出眾的帶片內(nèi)CAN控制器的微控制器。此方案的優(yōu)點在于電路設(shè)計簡單,由于將CAN控制器集成在微控制器片內(nèi),這樣就減少了部分連接電路。此方案的缺點就是目前可供選擇的帶片內(nèi)CAN控制器的微控制器相對較少,用戶選擇余地不大。
由于STM8A芯片有128個引腳,其內(nèi)部的構(gòu)造比51系列單片機復雜,同時也需要專用的編譯器和調(diào)試工具,而且價格昂貴,給編程者的開發(fā)增加了難度,因此本系統(tǒng)的一個節(jié)點采用第一種方案。
另外一個節(jié)點采用瑞典Kvaser公司的KvaserLeafProfession-al,它是超高性能的USB接口單通道CAN總線分析儀,支持CAN協(xié)議,其MagiSync技術(shù)是Kvaser的國際核心專利技術(shù)之一。它能夠把多個CAN總線分析儀連接到同一臺PC機上,并通過Kva-serMagiSync技術(shù)同步各個CAN總線分析儀的時間標簽,其靈活性特別適合多通道的應(yīng)用項目。每個CAN消息均標有1μs精度的時間標簽(timestamp),每秒可以處理高達20000個幀。
系統(tǒng)軟件選擇了虛擬儀器軟件LabVIEW。通過設(shè)計,軟件實現(xiàn)的功能為:(1)能夠全程實時監(jiān)控每個節(jié)點在總線上的通信情況,并能完整記錄、歷史回放??稍O(shè)置總線波特率和發(fā)送各種數(shù)據(jù)幀,包括遠程幀、標準幀、擴展幀和錯誤幀。(2)具有判定、報警及統(tǒng)計功能,可根據(jù)檢測錯誤計數(shù)器來界定“錯誤激活”、“錯誤認可”和“總線關(guān)閉”等三種故障。
四、硬件設(shè)計
本系統(tǒng)自主設(shè)計的CAN節(jié)點,采用89C52作為節(jié)點的微控制器。在CAN總線通信接口中,CAN通信的控制器采用SJA1000,CAN的收發(fā)器采用TJA1050。
圖2 CAN節(jié)點電路原理圖
圖2為CAN節(jié)點的硬件電路原理圖。從圖中可以看出,電路主要由五個部分所構(gòu)成:微控制器89C52、獨立CAN通信控
制器SJA1000、CAN總線收發(fā)器TJA1050、顯示電路和控制電路。微控制器89C52負責SJA1000的初始化,通過控制SJA1000實現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。SJA1000的AD0~AD7連接到89C52的P0口,CS連接到89C52的P2.0。P2.0為0時,CPU片外存儲器地址可選中SJA1000,CPU通過這些地址可對SJA1000執(zhí)行相應(yīng)的讀/寫操作。SJA1000的RD、WR、分別與89C52的對應(yīng)引腳相連接,INT接89C52的INT0,89C52也可通過中斷方式訪問SJA1000。
TJA1050與CAN總線的接口部分采用了一定的安全和抗干擾措施。TJA1050的CAN-H和CAN-L引腳各自通過一個5Ψ的電阻與CAN總線相連,電阻可起到一定的限流作用,保護TJA1050免受過流的沖擊。CANH和CANL與地之間并聯(lián)了兩個30P的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力。
顯示電路通過使用四個七段管,并使用74LS138和74LS373進行控制??刂齐娐分饕伤膫€按鈕組成,分別對輸入信號、總線波特率、模式轉(zhuǎn)換和數(shù)據(jù)發(fā)送進行控制。
硬件電路設(shè)計的時候,需注意的地方有:
(1)SJA1000與AT89C52的復位電路是不同的,單片機的RST是高電平有效的,而SJA1000的RST是低電平有效的,而且不是用一個非門把單片機的RST反相就可以的[5]。有兩種解決方式:第一種是使用單片機的IO引腳來控制SJA的復位引腳,優(yōu)點是單片機完全控制SJA的復位過程;第二種是使用微處理器電源監(jiān)控芯片MAX708,它可以提供兩種復位信號,可以滿足需要。
?。?)SJA1000的CLKOUT引腳可以提供時鐘輸出信號,但是如果該信號作為AT89C52的時鐘信號,則容易出現(xiàn)問題,建議分別使用晶振。
?。?)CAN-H與CAN-L之間需接120歐姆電阻。
?。?)電路板中使用兩個9針串口,為的是方便于構(gòu)建一個CAN小網(wǎng)絡(luò),并方便于接不同串口的CAN檢測儀。
五、 軟件設(shè)計
1. CAN節(jié)點的軟件部分設(shè)計
本節(jié)點的軟件編程主要包括單片機初始化、CAN控制器的初始化、CAN總線數(shù)據(jù)的發(fā)送和接收等幾個部分。初始化設(shè)置主要包括通信的波特率的設(shè)置、報文濾波器的設(shè)置和輸出模式的設(shè)置。主程序的流程圖如圖3所示
圖3 主程序流程圖
?。?)數(shù)據(jù)發(fā)送 將待發(fā)送的數(shù)據(jù)打包成符合CAN協(xié)議的幀格式后,便可寫入SJA1000發(fā)送緩沖區(qū),并自動發(fā)送。圖4為發(fā)送子程序流程圖。在寫發(fā)送緩沖區(qū)前必須查詢其狀態(tài),數(shù)據(jù)只能寫入空閑的發(fā)送緩沖區(qū)。發(fā)送大量數(shù)據(jù)時,這一步顯得尤其重要,否則發(fā)送可靠性將不能保證啟動發(fā)送命令后,只能通過查詢或配置發(fā)送成功中斷判斷數(shù)據(jù)是否發(fā)送成功。發(fā)送程序分發(fā)送遠程幀和數(shù)據(jù)幀兩種,遠程幀無數(shù)據(jù)場。
圖4 發(fā)送子程序流程圖
(2)數(shù)據(jù)接收 接收數(shù)據(jù)可采用查詢方式或中斷方式。在某一段時間內(nèi),CAN總線并不是總是在活動,為了提高效率,可采用中斷方式在初始化程序中必須打開接收中斷。在中斷服務(wù)子程序中,判斷是否有接收中斷標志,有則讀取接收緩沖區(qū)數(shù)據(jù)。為了防止接收緩沖區(qū)數(shù)據(jù)溢出,可開辟一個循環(huán)接收數(shù)據(jù)隊列來暫時存儲數(shù)據(jù),主程序則通過查詢該隊列來獲得總線數(shù)據(jù)。
2. 上位機程序設(shè)計
本系統(tǒng)的PC機端的軟件采用美國NI公司的圖形化編程語言LabVIEW平臺,該平臺是測控領(lǐng)域優(yōu)秀軟件,被譽為工程師的語言,可以加快產(chǎn)品開發(fā)速度。在該套測試系統(tǒng)中,采用順序結(jié)構(gòu),并使用瑞典Kvaser公司提供的僅適用于Kvaser硬件的多個子VI,利用這些子VI建立控制模塊,并通過一定的邏輯關(guān)系聯(lián)系起來,完成對硬件的驅(qū)動、測量參數(shù)設(shè)定以及數(shù)據(jù)的采集和保存。
前面板一共有三部分:第一部分是CAN總線系統(tǒng)的相關(guān)參數(shù)配置,如圖5所示,其中包括連接在PC機上的通道選擇;總線通道的類型(單一、擴展和虛擬通道)還包括總線的波特率以及總線狀態(tài)。第二部分為數(shù)據(jù)發(fā)送窗口,主要用于對所要發(fā)送的數(shù)據(jù)進行定義以及顯示總線是否有錯誤,如圖6所示,其中包括CAN數(shù)據(jù)幀的ID、數(shù)據(jù)長度控制字DLC、八個字節(jié)的數(shù)據(jù)以及幀類型的選擇:遠程幀、標準幀、擴展幀和錯誤幀。另外還可以顯示總線錯誤和錯誤源。該窗口負責總線上數(shù)據(jù)的傳輸,是整個程序中的核心部分。最后一部分是數(shù)據(jù)接收窗口,主要負責接收整個總線上的數(shù)據(jù),當點擊“GoBuson”之后,就可以自動接收數(shù)據(jù),同時可以檢測接收錯誤。如圖7所示,其中包括了對數(shù)據(jù)的接收時間(以系統(tǒng)初始化為0時開始計時)、數(shù)據(jù)幀的ID、數(shù)據(jù)長度控制字以及8個字節(jié)的數(shù)據(jù),用戶可以通過此窗口檢測總線狀況。
圖5 總線參數(shù)配置窗口 圖6數(shù)據(jù)發(fā)送窗口
圖7 數(shù)據(jù)接收窗口
后面板的程序流程圖主要是由瑞典Kvaser公司提供的大約四十二個針對本公司產(chǎn)品的CAN子VI程序,其中包括四類:
(1)CAN總線參數(shù)設(shè)置子VI:這些VI主要用于對CAN通道進行參數(shù)設(shè)置,其中包括CAN總線的初始化、CAN協(xié)議版本的選擇、波特率以及總線的幀類型選擇等等,還包括了Kvaser分析儀在LabVIEW下運行的驅(qū)動程序。
?。?)CAN總線數(shù)據(jù)寫入子VI:這些VI主要用于將CAN通道需要送出的數(shù)據(jù)打包成符合CAN協(xié)議的信息并發(fā)送到SJA1000的輸入緩存器。
?。?)CAN總線數(shù)據(jù)讀出子VI:這些VI可以讀出CAN口緩存中的數(shù)據(jù)。其中還包括錯誤計數(shù)器、同步讀數(shù)據(jù)和定時器等。
?。?)CAN總線關(guān)閉子VI:這些VI用于將打開的CAN口關(guān)閉。調(diào)用CAN子程序并按照CAN2.0的通信標準,利用G語言,完成通過LabVIEW軟件平臺進行收發(fā)數(shù)據(jù),圖8為程序流程圖。
六、總結(jié)
本系統(tǒng)實現(xiàn)了將傳感器輸出的電壓信號轉(zhuǎn)化為CAN總線信號,并使用其中的一個字節(jié)表示其變化過程。將先進的現(xiàn)場總線技術(shù)(CANBUS)應(yīng)用于智能的測量與通信系統(tǒng),可以大大提高系統(tǒng)的可靠性。自主開發(fā)了符合國際標準的基于單片機的智能CAN節(jié)點,不僅大量節(jié)約了資金,而且可以根據(jù)不同的需要連接不同的傳感器,實現(xiàn)基于CAN總線的智能測量節(jié)點?;贚abVIEW的上位機提供了良好的人機界面,使操作更加方便、直觀。
評論