尹冀波
(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)
在自動化測試系統(tǒng)中,可編程設(shè)備與控制器之間的通信是必需的。隨著用戶的測試程序不同,測試過程也不同。因此,設(shè)備控制器或者計算機(jī)可以通過多種模式的接口對可編程設(shè)備實行遠(yuǎn)程操作。
目前可編程設(shè)備的主要廠商(如:安捷倫、泰克、固緯)廣泛支持SCPI命令標(biāo)準(zhǔn)。接口包括串口、GPIB和計算機(jī)網(wǎng)絡(luò)等多種方式。廠商提供控制軟件的同時也提供軟件函數(shù)調(diào)用,以供用戶進(jìn)行自定義開發(fā)??刂破骺梢赃x用標(biāo)準(zhǔn)PC機(jī),也可以根據(jù)實際情況選用嵌入式控制機(jī)??删幊淘O(shè)備、命令標(biāo)準(zhǔn)、接口、軟件和控制器構(gòu)成了可編程測試系統(tǒng)。
SCPI(StandardCommandsforProgrammable Instruments,可編程設(shè)備標(biāo)準(zhǔn)命令)是一項標(biāo)準(zhǔn),由主要測試及測量設(shè)備制造商的國際協(xié)會創(chuàng)建。SCPI是標(biāo)準(zhǔn)的儀器編程語言,建立在現(xiàn)有標(biāo)準(zhǔn)IEEE-488.1和 IEEE-488.2的基礎(chǔ)上,并且遵循了IEEE754的浮點運(yùn)算規(guī)則,用于為不同的可編程設(shè)備的同樣功能提供通用命令。SCPI采用一整套樹狀分層結(jié)構(gòu)的命令集,建立了具有普遍性的通用儀器模型。
使用SCPI傳送命令到某一測量設(shè)備,需要包含三個基本元素:命令頭、參數(shù)(備選)、消息結(jié)束符或者消息分隔符。
命令頭是一個分等級的結(jié)構(gòu),該結(jié)構(gòu)由一個命令樹來表示。樹的頂層是根層。根節(jié)點位于根層。一個根節(jié)點和其它較低層次的節(jié)點,構(gòu)成了到最終節(jié)點的總路徑,最終節(jié)點稱為葉節(jié)點。
總路徑和葉節(jié)點配置成命令頭。例如::SYSTem為根節(jié)點,:SYSTem:AUTO為總路徑,:STATe為葉節(jié)點,:SYSTem:AUTO:STATe構(gòu)成了命令頭。
如果命令需要參數(shù),則包括參數(shù)值,<>符號用于包括參數(shù)類型。表1定義了用于可編程電源的Boolean和其它參數(shù)類型。
消息結(jié)束符或者消息分隔符包括兩種:
(1)GPIB消息結(jié)束符
根據(jù)IEEE488.2標(biāo)準(zhǔn),可以接受下列消息結(jié)束符:
·LF^END換行符(十六進(jìn)制0A)帶有END消息
·LF換行符·<dab>^END最后的數(shù)據(jù)字節(jié)帶有END消息這些結(jié)束符與絕大多數(shù)的應(yīng)用程序兼容。使用分號來分隔處于同一行的多個命令。
表1 語法描述的參數(shù)類型
(2)RS232消息結(jié)束符
因為RS232沒有停止消息信號,因此使用LF換行符作為消息結(jié)束符。當(dāng)一系列命令發(fā)送到編程設(shè)備時,必須添加LF換行符作為消息結(jié)束符的判斷。對于查詢命令,查詢返回消息也被添加LF換行符,使得控制機(jī)器能夠判斷出消息結(jié)束符。
SCPI對于大小寫字符不敏感,可以輸入大寫字符或者小寫字符。參數(shù)和命令頭之間至少要有一個空格。絕大多數(shù)命令都有長格式和短格式,例如:輸入查詢:CHANnel1:VOLTage 1.23可以簡寫為:CHAN1:VOLT 1.23。
可以使用分號(;)進(jìn)行命令組合。例如::CHAN1:VOLT?CURR?如果后面有分號(;)的命令,而且來自于不同根層次的總路徑,必須使用冒號(:)來強(qiáng)制返回這個根層次。例如::CHAN1:VOLT 1.23;:OUTP:COUP:TRAC 1。但是在不同編程設(shè)備的實際應(yīng)用開發(fā)中需要注意:過長連續(xù)的查詢命令有可能會導(dǎo)致丟失消息。
如果后面有分號(;)的命令來自于相同根層次的總路徑,可以忽略冒號(:)和路徑,而僅僅聲明新的葉節(jié)點。例如::CHAN1:VOLT 12.34;CHAN1:CURR 1.55等同于:CHAN1:VOLT 12.34;CURR 1.55。
可以將命令和查詢結(jié)合到同一個消息。例如::CHAN1:VOLT 12.34;VOLT?
本實例以標(biāo)準(zhǔn)PC為控制機(jī),可編程設(shè)備為固緯公司出品的 PST-3202可編程電源,接口為RS232和GPIB,自主研發(fā)控制軟件。采取的設(shè)置命令如表2所示,這些命令用于控制和查詢可編程電源的設(shè)置。
表2 控制和查詢可編程電源的命令
本編程設(shè)備實例使用的通信接口包括串口和GPIB。
可編程設(shè)備的GPIB接口符合 IEEE488.1-1987、IEEE488.2-1992以及SCPI-1994標(biāo)準(zhǔn)。使用可編程設(shè)備建立一個GPIB系統(tǒng),需要下列條件:
(1)在一條GPIB總線上,最多連接15個設(shè)備。將設(shè)備連接到GPIB總線的電纜,不能超過20米。在總線上每隔2米電纜,連接一個GPIB設(shè)備。
(2)每個位于GPIB總線的設(shè)備,都有唯一的地址。兩個設(shè)備不可以使用同一個GPIB地址。當(dāng)使用GPIB系統(tǒng)的時候,至少要啟動GPIB總線上三分之二的設(shè)備。
(3)GPIB系統(tǒng)的拓?fù)浣Y(jié)構(gòu),不能使用環(huán)形結(jié)構(gòu)或者并行結(jié)構(gòu)。
可編程設(shè)備屬于DTE設(shè)備,建立串行接口與控制機(jī)連接:
(1)確定將DTE設(shè)備的輸出線連接到另一個DTE設(shè)備的輸入線,而且需要在一個或者多個輸入引腳保持一個恒定的高電平信號。RS232通信的兩端共地,并且確保可編程設(shè)備接地。連接設(shè)備和PC機(jī)的電纜,不能超過15米。
(2)確保RS232通信的可編程設(shè)備和控制機(jī)使用同樣的波特率、奇偶校驗位、數(shù)據(jù)位、停止位和數(shù)據(jù)流控制。
該設(shè)計已經(jīng)在作者現(xiàn)在所用的項目中得到應(yīng)用,滿足了實際系統(tǒng)需求,其中命令解析和控制在硬件平臺上驗證時工作正常。在下一步改進(jìn)中,在現(xiàn)有的設(shè)計模式下,考慮使用嵌入式單板計算機(jī)作為控制機(jī),使用帶有通道標(biāo)識的可編程電源作為主控電源。
[1] PST-PSS-PSH Programmer Manual[M].GoodWill Company,2005.
[2] Erich Gamma.Design Patterns:Elements of Reusable Object-Oriented software[M].Publishing House of Addison Wesley/Pearson,2003.
[3] 李偉,朱偉.SCPI命令解析器模塊設(shè)計與實現(xiàn)[J].科技信息,2011(11):21-23.