標籤:
最近進行了示波器的資料擷取,MSO2014,openChoice軟體+Tekvisa驅動就可以了,採集的波形可以直接用matlab處理。
後面又發現可以直接將示波器跟matlab進行串連。
http://blog.sina.com.cn/s/blog_4eff3a0e0100zb8h.html
1.啟動matlab,輸入tmtool,彈出新視窗。 2.左邊,test&measurement視窗下,開啟hardware樹,選擇示波器與電腦的串連方式。比如我選擇的是visa下的usb串連。之前可能需要安裝usb驅動程式,買示波器的時候會有盤。據說有些情況下也可以不裝驅動,因為matlab有內建的! 3.中間主視窗,scan,進行搜尋,搜尋到示波器後,就可以按下“connect”進行串連了,
4.仔細閱讀示波器的說明pdf,瞭解示波器的命令。比如我的示波器,往示波器發送指令curve?,就會返回示波器測量資料,還可以發送一些指令來調正橫縱軸的單位,發送命令就是write,請求回複就是query。 5.在tmtool視窗的communicate標籤中,發送命令,讀取回複,在session log標籤下將看到對應的m代碼。 6.複製session log下的代碼,回到matlab,建立m檔案,粘貼代碼,在前面補上function,後面補上需要的後續處理,然後m檔案就完成了! 7.類似的步驟,可以在gui下編寫callback,也可以在simulink中編寫s函數。 注意點: 1.示波器對於matlab而言,是一個對象obj,啟用時要fopen,不用時要fclose。實踐中,若fopen後,程式運行報錯,則在下一次調試前,要先fclose一下,以防止下次fopen報錯。 2.往對象中寫入命令,命令格式是string,如果需要寫入xx1,xx2,xx3等眾多有規律的命令時,可以通過strcat和num2str兩個命令。前者將多個str組合為一個str,需要注意的是各str右側的空格會被自動忽略,例如strcat(‘xx ‘,‘1‘);出來的是xx1,而不是xx 1。那個讓我找了三天的錯誤,就是這樣產生的! 3.simulink的模組庫中,有instrument control toolbox庫,裡面有query instrument模組用於從示波器等對象讀取資料,設定時的id等資訊一定要寫成str格式,也就是帶上兩個‘,。個人不太喜歡用這個模組,還是s函數更加靈活。
貢獻部分代碼:obj1 = visa(‘NI‘, ‘USB0::0x0699::0x0413::C013300::0::INSTR‘);fopen(obj1);……fclose(obj1);%第一句是把示波器的串連方式、地址等資訊定義成對象obj1。最後一句別忘了要關閉哦~ fprintf(obj1, ‘DATa:SOUrce CH1‘);%告訴示波器,我要讀取的資料來源是通道1~ n=100;data=zeros(1,n*100);for i=1:n temp=str2num(query(obj1,‘curve?‘)); data((100*(i-1)+1):(100*i))=temp;……end%每次讀取100個資料,連續讀取n次,得到data,也就是一個100*n長度的向量,一定要先定義好向量長度哦,可以大大提高matlab的運行效率。由於query讀入資料是str格式,str2num命令可以轉成向量。 以上的一些是參考,但是發現並不是那樣的,對於以上的程式並不能運行通過,所以還是要針對自己的示波器進行編寫。
matlab與示波器串連及電腦串連