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