目前測試測量儀器不僅在終端本身上可顯示數(shù)值波形等功能,通常已經(jīng)被集成到控制系統(tǒng)中,如新能源、電動汽車、開關電源、變壓器等多個領域中,系統(tǒng)集成時一般都使用SCPI遠程與儀器進行交互。本文就來聊聊常用測量儀器和SCPI協(xié)議通信相關的那些事。
SCPI(Standard Commands for Programmable Instruments)是一種標準命令集,于1990與IEEE 488.2協(xié)議一起面世,定義了一套用于控制可編程測試測量儀器的標準語法和命令。一種建立在現(xiàn)有標準IEEE488.1和IEEE488.2基礎上的標準化儀器編程語言。通過使用標準化的編程信息、儀器響應和數(shù)據(jù)格式來保證編程環(huán)境的兼容性。
使用SCPI可以遠程與儀器交互,如配置儀器參數(shù)、獲取儀器數(shù)據(jù)等。SCPI中所有命令都以ASCII碼字符串形式存在,用戶發(fā)送字符串給儀器后,儀器返回的數(shù)據(jù)也是字符串,然后用戶需要自己解析返回字符串的含義。兼容各種通信方式如以太網(wǎng)、GPIB和串口等,同時無論用戶使用C++、Java,Python等哪種編程語言,用戶發(fā)送的SCPI命令字符串也都是相同的。
每個SCPI命令都需要一個結束字符,支持“\0”、“\n”兩者中任意一個作為結束字符,建議使用“\n”作為命令結束符,這樣每次發(fā)送命令時,字符串結尾都要附加一個“n”
同一個命令,一般都有設置和查詢兩種類型。比如:RATE? ,這是查詢更新率的命令,其中?表示該命令為查詢命令,:RATE 1,這是設置更新率的命令,其中1表示要設置更新率為1s
SCPI命令字符串不區(qū)分大小寫
SCPI命令集小寫可省略、大寫不能省略當命令
帶有參數(shù)時,用一個英文空格將命令和參數(shù)分隔。
命令中間不允許用空格分隔。
命令帶有多參數(shù)時,用逗號將不同參數(shù)分隔。
一般都有設置和查詢兩種類型,改變儀器運行狀態(tài)的set操作(打開/關閉電壓自動量程),或者查詢儀器狀態(tài)的query操作(例如讀取輸出電壓值)。
查詢指令:*IDN?,可以用來獲取設備的基本信息。
設置指令::INPUT:CURRENT:AUTO:ALL ON,設置所有電流輸入單元的自動量程功能。
舉例:獲取常規(guī)數(shù)值項目
綁定常規(guī)測量項
//分別是:電壓、電流、有功功率、功率因數(shù)、電壓中諧波失真、電流總諧波失真
:num:norm:number 6
:num:norm:item1 U,1
:num:norm:item2 I,1
:num:norm:item3 P,1
:num:norm:item4 LAMB,1
:num:norm:item5 UTHD,1
:num:norm:item6 ITHD,1
:num:norm?
查詢常規(guī)綁定的測量項
查詢方式1:這種查詢方式返回6個值,依次上上面設置好的綁定測量項
:num:norm:value?
查詢方式2:這種查詢方式每次只返回一個數(shù)值,1~6分別對應上面綁定的測量項。
:num:norm:value? 1
:num:norm:value? 2
:num:norm:value? 3
:num:norm:value? 4
:num:norm:value? 5
:num:norm:value? 6
5.使用SCPI從致遠PA300系列功率計獲取數(shù)據(jù)流程
操作步驟:硬件連接、儀器設置、獲取數(shù)據(jù)、使用預設方式、自定義獲取數(shù)據(jù)(自定義讀取、設置讀取的個數(shù)、設置獲取的測量項、讀取數(shù)據(jù))。
此外,SCPI通用命令與儀器的測量無關,主要用來控制重設、自我測試以及狀態(tài)操作,并且該組操作以*開始,沒有層次結構,SCPI儀器的特定控制命令用來從事測量、讀取數(shù)據(jù)以及控制儀器設置等工作,特定控制命令,每個廠家具有自己特色,具體可查閱各廠家對外公開的通信命令手冊。