《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 彈上通信系統的LabVIEW與單片機的通信技術
彈上通信系統的LabVIEW與單片機的通信技術
樊龍龍,常 遠,王明亮 海軍裝備部
摘要: 結合某型信息化彈藥彈上電子器件通信問題研究,以C8051F340單片機為例,介紹了單片機與LabVIEW進行USB通信的3種方法。針對LabVIEW,實現USB通信的方式有:利用CIN(代碼接口節點),調用DLL(動態鏈接庫),通過VISA(虛擬儀器軟件架構)。對這3種方式進行詳細的介紹和比較,并給出結論。
Abstract:
Key words :

引言
    某型信息化彈藥通過對目標的基準彈道與飛行中的攻擊彈道進行比較后,給出有限次不連續的修正量來修正攻擊彈道,以減少彈著點誤差,提高彈丸對付高速機動飛行目標的命中精度,或提高遠程打擊精度。該信息化彈藥的基本結構就是在常規炮彈上加裝彈道修正模塊,彈道修正模塊主要由微控制器根據基準彈道修正攻擊彈道參數來提高命中率。
    在傳感器及信號調理電路的基礎上,選用高速單片機、快速的數據傳輸總線以及LabVIEW應用程序,可快速開發一個簡單實用的信息化彈藥彈道控制通信系統模型。本通信系統模型用USB總線,在PC機與USB設備間實現上下位機之間的通信,在軟件方面通常要完成以下設計:USB設備固件編程、USB設備驅動編程和PC機應用程序設計。下位機彈道修正模塊用Silicon Labs公司的全速USB Flash微控制器C8051F340,上位機PC采用LabVIEW編寫應用程序。與C8051F340進行USB通信主要有3種方式:利用CIN調用開發USB設備的外部代碼;調用DLL對USB設備進行操作;通過VISA訪問USB設備。下面分別進行介紹和比較。

1 利用CIN調用開發USB設備外部代碼
    CIN(Code Interface Node,代碼接口節點)是LabVIEW中通過參數傳遞來調用C/C++代碼的節點,可以利用USB設備生產廠家提供的C/  C++代碼,將代碼集成并作為一個單獨的VI發布,實現數據的高效處理。這種實現方法相當于在LabVIEW下利用CIN對USB設備編寫驅動程序。以C8051F340端口1IN批量傳輸為例。規定使用端口1IN批量傳輸且最大包長度為128字節,假設端點1IN的緩沖區地址為0x7E00~0x7E8F。主機通過不斷發送IN令牌請求USB執行IN傳輸,C8051F340會通過將端點字節計數寄存器(N1CNT)加載,以示數據準備完畢,同時將一個IN數據包裝入端點的IN FIFO并將INPRDY位(EINCSR L.O)位置1。利用CIN調用USB設備的外部代碼的一般步驟如下:
    ①創建CIN節點。CIN節點位于“函數選板”一“互連接口”一“庫與可執行庫文件”子選板下。根據設備的參數需要增加外部代碼的輸入/輸出端口。
    ②創建C源文件。右擊CIN并選擇創建C8051F340UsbInl.c文件選項,對打開的程序修改如下:

a.jpg

b.jpg

 

    ③編譯C8051F340UsbInl.c文件,生成可被LabVIEW執行的C8051F340UsbInl.1sb。以VC++為例編譯CIN節點源文件。在VC++下創建C8051F340UsbInl.mak文件,內容如下:
c.jpg
    在VC++下點擊new\project\make file,輸入文件名C8051F340UsbInl后點擊為OK和Finish按鈕。將C8051F340UsbInl.c和C8051F340U-sbInl.mak一起復制到C8051F340UsbInl文件夾下,重新打開C8051F340UsbInl工作臺,按F7可生成C8051F340UsbInl.1sb文件。
    ④右擊選用的CIN圖標,選擇“加載代碼資源”并選擇C8051F340UsbInl.1sb文件。至此,一個基于CIN的讀USB端口1的VI創建完畢。
   上面是一個利用CIN創建開發USB驅動的VI的步驟,實際開發過程要麻煩很多,需要對設備及通信協議相當熟悉。因此,利用CIN實現USB通信受到一些限制。

2 調用DLL實現USB通信
    開發USB設備時,不僅要面向USB控制器編程還要面向Windows編程(如果上位機用Windows操作系統),對不熟悉USB協議的用戶而言是個難題。為了縮短用戶開發USB設備時間,生產廠家往往會把對USB設備進行操作的函數封裝成DLL(Dynamic Link Library,動態鏈接庫)提供給用戶。dll文件是一種可執行文件,允許程序共享執行特殊任務必需的代碼和其他資源,與語言無關,可以被任何支持DLL的語言編寫的應用程序訪問。
    Silicon Labs公司針對USB系列單片機為USB驅動程序開發提供了USBXpress開發套件,其中的SiUSBXp.dll包含了23個函數。一個簡單的USB通信程序,通常要用到SiUSBXp.dll中的SI_GetNumDevices、SI_SetTimeouts、SI_Open、SI_Read、SI_Write和SI_Close等幾個函數。在LabVIEW中調用dll文件有兩種方法,下面將分別介紹。
    首先是利用CLF(調用庫函數節點)節點調用SiUSBXp.dll,一般步驟如下:
    ①放置CLF節點并通過路徑加載dll文件。CLF節點位于“函數選板”一“互連接口”一“庫與可執行庫文件”子選板下。
    ②在加載的dll文件里選擇要用到的函數并進行參數配置。根據USBXpress開發手冊,對每一個被調用的函數配置合適的參數。
    ③配置參數完成之后,每一個函數就是一個VI,可在LabVIEW程序中調用。
    其次是通過導入共享庫的方法調用SiUSBXp.dll。
    導入共享庫的實質是將dll文件中的函數自動生成對應的VI。函數的每個參數可在頭文件包含以及預處理定義條件下在生成的VI中顯示出來,與利用CLF相比較,省去了手動配置參數的步驟。使用方法如下:新建一個VI,點擊“工具”一“導入共享庫”,選擇為用戶創建共享庫;點擊下一步,在“選擇共享庫及頭文件”頁面加載.dll文件和.h文件的路徑;點擊下一步,在預處理定義中添加預處理說明(如果需要添加);點擊下一步,等待解析頭文件并選擇待轉換函數;點擊下一步,進行項目庫設置配置,連續點擊下一步,直至所有選中的函數生成VI存放用戶庫里(默認狀態)。調用時,在“函數選板”一“用戶庫”一“SiUSBXp”,選擇在LabVIEW程序設計中用到的VI。
    以上兩種調用DLL實現USB通信的方法具體操作不一樣,但本質都是利用USB廠家提供的dll文件訪問USB設備。圖1為LabVIEW調用DLL實現一個簡單USB通信的流程。

d.jpg


    LabVIEW通過調用dll文件大大縮減了實現USB通信開發工作量,但最關鍵也是最難的一步在于給函數配置參數。通常來講,DLL主要用C/C++等文本語言開發,有些參數類型和LabVIEW不匹配,直接調用無法正常使用。為了解決這個問題,需要用戶對參數進行修改或者對原有的dll文件進行二次開發,加大了工作量。
    值得一提的是,USBXpress開發套件除了包含面向主機的dll文件,還包括面向USB器件的驅動文件和USBX_F34X LIB及USB_API.h文件,封裝了USB協議的細節,大大簡化了USB固件編程。一個典型的利用API函數實現USB通信的程序流程如圖2所示。程序是在SiliconLabs集成開發環境下編譯調試的。

e.jpg


    不管利用CIN,還是調用DLL,都可以實現LabVIEW訪問USB設備,但并不能很好地體現LabVIEW的優勢。因為通過CIN和DLL,不用LabVIEW也可以實現上位機編程。實際上,LabVIEW還有獨特的訪問USB設備的方法,即通過VISA訪問USB設備。

3 通過VISA訪問USB設備
    VISA(Virtual Instrument Software Architecture,虛擬儀器軟件架構)是一種用來與各種儀器總線進行通信的高級應用編程接口(API),包括GPIB、USB、串口、PXI/PCI、VXI、火線和以太網。它是計算機與儀器的軟件連接層,本身不具備編寫儀器驅動的能力,通過調用特定儀器驅動與儀器的通信。
    NI-VISA從3.0版開始支持USB通信,它有兩種VISA類函數(Resource Class),可以控制兩類USB設備:USB INSTR設備與USB RAW設備。U-SB INSTR設備是符合USBTMC協議的USB設備,可以通過使用USB INSTR類函數控制,通信時無需配置NI-VISA;而USB RAw設備是指除了明確符合USBTMC規格的儀器之外的任何USB設備,通信時要配置NI-VISA。C8051F340是USB RAW設備,故欲實現與LabVIEW進行USB通信,可通過NI公司提供的VISA Driver Wizard進行配置。步驟如下:
    ①按照“程序”一“National Instruments”一“VISA”一“Driver Wizard”選擇USB并點擊Next,進入USB-DeviceInformation界面。
    ②在USB Vendor ID欄和USB Product ID欄分別填寫USB設備的PID號和VID號。另外兩欄分別是Manufacturer Name和Mode Name欄,選填。每一個USB設備都有唯一的PID號和VID號,它們是主機識別不同USB設備的根據。
    ③生成并安裝inf文件,為USB設備創建PNF文檔。持續點擊Next,并為文件命名。高版本的VISA可發自動創建PNF文檔。
    ④連接USB設備。USB具有熱拔插功能,所以Windows能夠探測到USB設備,并立即會打開“添加新硬件向導”,很快完成USB設備驅動程序的安裝。
    至此,主機已將NI-VISA作為訪問USB設備的底層驅動,在LabVIEW程序中即可利用VISA選板的VI設計通信程序。
    圖3是一個基于NI-VISA編寫的LabVIEW與C8051F340進行USB通信的程序框圖。設備的PID和VID分別是0x10C4和0x0005,單片機使用端點2IN,采用中斷傳輸方式;LabVIEW程序中用VISA事件處理和獲取USB中斷等VI。

f.jpg


    通過NI-VISA實現LabVIEW與單片機進行USB通信,大大減小了工作量,同時很好地發揮了LabVIEW的特點。

結語
    對實現LabVIEW與C8051F340單片機USB通信的3種方式進行比較,結論如下:
    ①通過CIN節點訪問USB可以充分利用設備生產廠家提供的C語言編寫的驅動程序及源程序,發揮C語言的優勢;但要求用戶非常熟悉USB協議,這種實現方法相當于在LabVIEW下用CIN對USB設備編寫驅動程序,使用較為麻煩。
    ②通過調用DLL實現USB通信,可以利用生產廠家提供的dll文件,發揮dll文件的優勢;但由于dll文件的數據格式通常和LabVIEW不完全匹配,往往需要修改參數或者對dll文件進行二次開發,需要具備開發dll文件的能力,也比較麻煩。
    ③通過NI-VISA可以充分發揮LabVIEW的優勢,無需熟悉傳統文本語言編程,極大方便上位機的編程。
    ④就單片機在USB設備固件編程的工作量而言,通過NI-VISA方式與通過CIN方式相當,比通過USBXpress開發套件的工作量大。
    結合實現LabVIEW與C8051F340USB通信總體軟件編程任務,從工程應用角度進行比較,如表1所列。

g.jpg


    對于一般情況下基于LabVIEW的上下位機USB通信,建議通過調用DLL或者使用VISA實現USB通信,具體采用哪種方式,還要結合系統具體要求而定。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
9久草视频在线视频精品| 亚洲欧美日韩第一区| 国内精品伊人久久久久av影院 | 欧美国产日韩视频| 久久综合九色欧美综合狠狠| 久久av红桃一区二区小说| 亚洲欧美亚洲| 亚洲欧美激情一区| 亚洲综合成人婷婷小说| 亚洲天堂久久| 亚洲午夜一级| 亚洲女同在线| 亚洲欧美日韩网| 亚洲欧美一区二区三区极速播放 | 99国产精品私拍| 亚洲伦理在线免费看| 亚洲免费精彩视频| 日韩亚洲欧美一区| 亚洲最新视频在线| 亚洲视频免费观看| 亚洲夜间福利| 亚洲免费在线看| 性欧美xxxx大乳国产app| 欧美一区2区视频在线观看 | 欧美日韩在线不卡一区| 欧美日韩一区二区国产| 欧美日韩中文字幕日韩欧美| 欧美日韩亚洲一区| 国产精品久久久久aaaa| 国产乱码精品一区二区三区不卡| 国产精品亚洲人在线观看| 国产精品一区二区在线观看| 国产亚洲精品自拍| 在线观看日韩专区| 亚洲毛片在线免费观看| 亚洲一级在线| 欧美在线视频免费观看| 亚洲国产日韩美| 亚洲另类视频| 久久精品国产亚洲a| 亚洲欧洲中文日韩久久av乱码| 亚洲精品少妇30p| 亚洲桃花岛网站| 久久国产精品久久久久久久久久| 久久免费国产| 久久久精品国产一区二区三区| 裸体女人亚洲精品一区| 欧美精品首页| 国产精品一区三区| 亚洲第一精品久久忘忧草社区| 日韩亚洲欧美综合| 午夜精品一区二区三区四区| 亚洲黄色高清| 亚洲午夜久久久久久久久电影网| 欧美伊人精品成人久久综合97| 久久婷婷蜜乳一本欲蜜臀| 欧美激情片在线观看| 国产精品久久久久一区二区| 国模叶桐国产精品一区| 亚洲精品免费在线播放| 亚洲欧美日韩国产综合| 亚洲国产精品激情在线观看| 一本到高清视频免费精品| 欧美一区国产二区| 欧美激情视频免费观看| 国产精品无码永久免费888| 精品二区视频| 亚洲午夜av在线| 亚洲国产一区二区精品专区| 亚洲一区二区在线免费观看| 久久久久久久一区二区| 欧美日韩中文精品| 狠狠色综合色综合网络| 一本大道久久精品懂色aⅴ| 亚洲电影欧美电影有声小说| 中日韩美女免费视频网址在线观看 | 欧美一区二区三区在线观看视频| 欧美国产综合视频| 国产欧美成人| 99精品欧美一区二区三区综合在线| 欧美一区二区视频观看视频| 一本一本久久a久久精品综合妖精| 久久精品国产欧美激情| 欧美日韩国产综合视频在线观看中文 | 亚洲欧洲精品一区| 欧美专区在线| 午夜精品成人在线视频| 欧美日本高清| 在线免费日韩片| 欧美一级黄色网| 亚洲欧美日韩中文视频| 欧美国产欧美综合| 激情五月综合色婷婷一区二区| 亚洲伊人一本大道中文字幕| 一本久道久久综合婷婷鲸鱼| 免费成人你懂的| 国产一区深夜福利| 亚洲欧美日韩在线综合| 亚洲午夜性刺激影院| 欧美理论电影在线播放| 亚洲成人在线| 亚洲二区视频在线| 久久久久久成人| 国产精品揄拍500视频| 在线一区视频| 亚洲一区二区三区在线视频| 老鸭窝亚洲一区二区三区| 国产一区欧美| 欧美一区二区三区免费视频| 午夜天堂精品久久久久| 国产精品高清网站| av成人毛片| 一本色道久久| 欧美日韩视频在线一区二区| 亚洲欧洲日产国产综合网| 最新国产拍偷乱拍精品| 免费在线观看一区二区| 伊人狠狠色j香婷婷综合| 久久精品一级爱片| 蜜桃精品一区二区三区| 亚洲国产成人精品女人久久久 | 亚洲日本欧美日韩高观看| 欧美a一区二区| 亚洲国产导航| 日韩亚洲欧美成人| 欧美日韩国产小视频| 亚洲乱码国产乱码精品精| 在线视频精品一| 欧美午夜大胆人体| 亚洲一区二区三区四区在线观看| 亚洲自拍偷拍网址| 国产精品午夜在线观看| 午夜精品亚洲| 久久蜜桃精品| 亚洲国产精品久久久久| 日韩亚洲欧美精品| 欧美视频一区| 午夜精品久久久久久久男人的天堂| 久久电影一区| 激情亚洲成人| 99视频精品全部免费在线| 欧美三级午夜理伦三级中视频| 亚洲作爱视频| 欧美一区二区免费| 激情综合在线| 99精品国产高清一区二区 | 一本一本久久| 欧美一区在线视频| 国语自产精品视频在线看8查询8| 亚洲福利久久| 久久久久网址| 最新精品在线| 亚洲专区免费| 欧美精品一区二区蜜臀亚洲| 一区二区激情视频| 欧美一区二区三区久久精品| 国产一区二区三区精品久久久| 久久精品成人| 欧美日韩成人在线播放| av成人免费在线| 欧美一区二区三区免费观看视频 | 亚洲视频在线二区| 国产欧美日韩在线| 亚洲黄色高清| 国产精品电影观看| 久久国产主播| 欧美日韩免费观看一区=区三区| 亚洲一区在线看| 欧美a级大片| 在线综合欧美| 狂野欧美激情性xxxx欧美| 99pao成人国产永久免费视频| 久久精品91久久香蕉加勒比 | 亚洲欧美日韩在线| 欧美成人精品不卡视频在线观看| 一区二区欧美国产| 免费成人黄色| 亚洲免费一级电影| 欧美激情影院| 久久成人精品| 欧美午夜视频网站| 亚洲福利视频一区二区| 国产精品久久国产精麻豆99网站| 久久国产精品久久w女人spa| 欧美女人交a| 亚洲成人在线视频播放| 欧美精品一区二区久久婷婷| 午夜精品久久久久久久久久久久久 | 国产一区二区三区高清在线观看| 日韩亚洲不卡在线| 国产中文一区二区| 亚洲综合社区| 91久久极品少妇xxxxⅹ软件| 欧美亚洲视频在线看网址| 亚洲精品一区二区三区av| 久久在精品线影院精品国产| 在线视频日韩精品| 欧美日本三级| 亚洲精品国产日韩| 一区二区三区在线免费播放|