簡單程控keithly2400萬用表(MFC)
在做測試的過程中,無可避免要使用儀器,有些時候需要速度較快的讀數,此時就需要程控這些儀器來實現了。剛開始沒有接觸的時候覺得這個東西太難了,經過這次的試驗之後發現其實程控儀器是有規律可尋的。並不是想象中的那麼難。程控儀器主要使用的是SCPI標準語法。可程式設計儀器標準命令(英語:Standard Commands for Programmable Instruments,縮寫:SCPI)定義了一套用於控制可程式設計測試測量儀器的標準語法和命令。http://blog.sina.com.cn/s/blog_a8b07c9801014o5k.html這個部落格簡要的介紹SCPI語法,並且有提供例子,這是我找到的比較全面、易懂的的SCPI語法表了。同時,還要給電腦安裝儀器的驅動,用來識別儀器,以及和儀器之間的通訊。需要下載的可以到這個網站進行下載,絕對安全靠
程控儀器用到的另一個就是visa庫,這個庫提供函式來和儀器之間進行通訊。我寫的程控2400的程式比較簡單,其功能就是能夠當電流表使用,讀出電流值;另外,可以當電壓表,設定輸出的電壓。(2400功能比較全,既可以當萬用表,也可以當源表來使用)。程式的開發步驟大致是以下幾步:
step1:開啟預設的裝置資源,然後再開啟2400的裝置資源
ViSession m_VisSessionRM;//定義預設裝置資源
ViSession m_ViSessionKeithley;//定義2400裝置資源
viOpenDefaultRM(&m_VisSessionRM);//開啟預設資源
viOpen(m_VisSessionRM, "GPIB0::30::INSTR", VI_NULL, VI_NULL, &m_ViSessionKeithley)//開啟2400資源
“GPIB0::30::INSTR”中的30表示我使用的2400的GPIB的通道是30,所以不同的儀器可能是不同的。但是是可以通過2400的面板進行設定的。
step2:讀取電壓表(電流表)讀數
char *CurrentValue=new char[255];
viPrintf(dlg->m_ViSessionKeithley, "READ?\n");
viScanf(dlg->m_ViSessionKeithley, "%t", CurrentValue);
“READ?”就是在SCPI的語法表裡面讀到的。溫馨提示,每次傳送的命令都必須要以“\n”結尾,比如“READ?\n”,要不然儀器無法識別,我在2400上實驗過了。
step3:將2400設定成電壓源,並設定輸出的電壓
char *voltBuf = new char[255];
viPrintf(m_ViSessionKeithley, ":SOUR:VOLT:LEV %d\n",m_voltageValue);//將2400設定成電壓源,並設定輸出電壓
viPrintf(m_ViSessionKeithley, "OUTP ON\n");//輸出設定的電壓值
viPrintf(m_ViSessionKeithley, "READ?\n");//傳送讀數的命令
viScanf(m_ViSessionKeithley, "%t",voltBuf);//把2400讀數儲存到voltbuf中
“:SOUR:VOLT:LEV %d\n”這條命令中有空格要注意。這條命令並不是SCPI的標準的命令,這是我在2400的產品手冊上面看到的。所以如果需要開發其他的功能的話還需要檢視參考手冊上面提供的指令。
以上就是我開發所使用到的資源和資料了,有需要開發的可以參看參考。另外,如果有寫的不對的地方,歡迎批評指正。