?

基于SCPI的可編程線性直流電源的程序設計與研究

2016-10-14 00:18邵娟王振華
科學與財富 2016年28期

邵娟+王振華

摘 要:本文是在基于SCPI之上對可編程線性直流電源進行了程序設計和研究。該線性直流電源以電壓和電流為核心,要求有4 位0.4”LED電壓顯示和3 位0.4”LED電流顯示,并且精確度做到電壓±(0.03%的讀數+10位)和電流±(0.3%的讀數+10位)的輸出。數字面板控制和數據保存調取功能,通過USB接口實現了SCPI命令的輸入和執行,提高了SCPI的數據采集的通用性、可移植性和可擴展性。

關鍵詞:線性直流電源;SCPI;二叉樹鏈式;三段分析法

一、引言

任何的科學實驗都離不開電源,在某些實驗中經常會對電壓高低、電流大小以及穩定度等都有著特殊的要求,但是目前實驗室所用的直流穩壓電源多數存在著電壓或電流的精度不夠,穩定度不高的問題。傳統的直流電源一般采用指針式來顯示電壓值或者電流值,使用電位器來調整電壓或電流的輸出值,而電位器的阻值特性一般都是非線性的,在調整和使用時是非常不方便的,并伴隨著漂移。所設定的電壓值或電流值和輸出值之前存在的誤差,而且輸出值精度不高,因此造成所接電路的損壞也經常性的發生。當長時間使用直流電源時,甚至會造成電源的死機。因此,針對以上的這些問題,專門作為一個課題進行研究,保證直流穩壓電源良好的性能,可視化的數碼管顯示,可以調取和存儲數據,精度達到小數點后3位,而且要求抗干擾能力強,力求實現智能化、多功能化和美觀化。

SCPI即程控儀器標準命令( standard command for program instrument),它是一種用來控制儀器的命令語言,規定了消息的構造和內容,帶有多種標準接口。它以ASCII字符組成的標準儀器命令語言,對于測量儀器的每一個功能,SCPI均定義了特定的命令字符。它最大的優點就是在對儀器編程時僅考慮所需要完成的功能,而不用考慮儀器本身具體的操作過程。以一種標準化的方式解決了軟件的兼容性問題,而且簡單和方便。

基于SCPI和可編程線性直流電源儀器的特點,將兩者有機的結合起來,通過軟硬件結合能夠實現直流電源的遠程控制,并且和其他測試儀器想兼容,保證直流電源的穩定性、智能性、多功能性、兼容性等。

二、基于SCPI的可編程線性直流電源的程序設計

2.1 可編程線性直流電源的總體結構

此電源含有數字面板輸入控制模塊,顯示模塊,AD轉換模塊,DA轉換模塊,電流電壓值輸出模塊,數據存儲模塊,遠程控制模塊和智能型溫控風扇等。

數字面板輸入控制模塊通過帶指示燈的硅膠按鍵和旋轉編碼開關進行數據的輸入,顯示模塊擁有十八個高亮度的LED屏顯示,DA轉換模塊將數字面板所輸入的數字值轉換為相應的模擬量信號,AD轉換模塊負責將模擬電路輸出的電壓或電流信號轉換為數字信號,一些狀態標志也相應顯示在面板上。

2.2可編程線性直流電源的關鍵流程圖

有圖1可以看出“電流電壓采樣值”是整個系統的關鍵變量:

(1)通過硅膠按鍵和旋轉編碼開關輸入電流電壓設定值,當打開output后經過AD、DA轉換得到采樣值。

(2)通過CPU輸出設定的電流電壓采樣值。

(3)通過LED顯示讀取電流電壓設定值和電流電壓的采樣值。

因此本論文將以電流電壓采樣值為中心進行展開,在Keil開發環境下采用C51語言設計數據語言進行軟件的編寫和調試。

2.3控制模塊

CPU采用Microchip公司的PIC18F85J10,其內部集成了程序存儲器和數據RAM,因此可以對程序存儲器空間進行尋址,寫閃存存儲器的程序,實現bootloader功能。Bootloader代碼是芯片復位后進入操作系統之前執行的一段代碼,主要是完成由硬件啟動到操作系統啟動的過渡,從而為操作系統提供基本的運行環境。

PIC18F85J10芯片還集成了5個CCP模塊和2個MSSP模塊,每個模塊都可以獨立的工作。在電路中17個數碼管的顯示和93C66外部存儲器的DIN和SCLK信號是共用RC4和RC3,RC5作為93C66的輸出信號,因此他們可以采用MSSP1模式進行同步發送和接收8位數據。達到數碼管的快速顯示功能,簡化了電子電路的設計。

因為編程和顯示的精度要求到達±(0.03%的讀數+10位),所以就必須采用高精度的AD和DA模塊變換,AD模塊采用了AD7792芯片,AD7792是將模擬信號轉變成16位的數字信號,刷新速率達到65dB。在電路中AD芯片、DA芯片的DIN和SCLK信號是共用同一個RD4和RD6,即MSSP2,在AD轉換中當SCKx出現外部時鐘脈沖時發送和接收數據,當最后一位數據被鎖存后,中斷標志位會置1。這樣就可以在中斷中進行達到快速轉換和數碼管顯示。

總體結構圖

從2圖可以看出CPU需要控制的資源有19組LED顯示器、12個LED燈、2片AD5545、2片AD7792、4*3鍵盤矩陣、2顆Ecode S/W、1個蜂鳴器、一片93C66、4個繼電器、2個CC/CV燈、一片FT232RL。

該線性直流電源基于SCPI命令標準,實現對輸入模擬信號的數據采集,以及輸出數字信號的傳輸、處理和顯示。本電源中通信接口采用EUSART串行通信接口,它是單片機系統中常用的串行接口標準,適用于計算機、儀器設備之間的近程連接,其傳輸距離不大于15米,最大傳輸速率是20KB/s,可以滿足本電源的設計需要。增強型通用同步/異步收發器(Enhanced Universal Synchronous Asychronous Receivers Transmitter,EUSATRT )是兩個串行I/O模塊之一,一般也將EUSART稱為串行通信接口或SCI。配置EUSART使得CPU與個人計算機之間實現全雙工異步系統,在設計中通過FT232RL芯片連接。

命令樹圖用于定義SCPI的命令集,它描述了命令、命令之間的層次關系、相關的參數以及必要的注釋

命令樹圖通常由三部分構成:關鍵字(KEYWORD)、參數形式(PARAMETER FORM)和注釋(NOTES)

根據SCPI的樹狀層次結構特點,本課題采用樹型結構來保存命令信息。語法分析過程可以分為創建樹和遍歷樹的過程。創建樹過程就是把特定儀器的命令集,按照一定的結構創建成供查詢使用的命令樹;遍歷樹過程就是根據得到的命令,通過遍歷命令樹,得到命令的相關信息。

命令樹的創建:樹中的每個節點不是保存關鍵字信息,而是采用編碼的方式,將該SCPI命令多叉樹中各個子系統分支視為一棵獨立的樹,通過先轉換各個子系統這樣的一棵獨立的樹為二叉樹的結構,再將所有的子系統二叉樹組合為一棵完整的二叉樹。

該程序采用鏈式存儲結構,鏈式存儲結構利用指針來表達邏輯關系。鏈式存儲結構又分為二叉鏈表和三叉鏈表,其特點是程序員不需要擔心存儲空間大小的問題,但是鏈式存儲的讀寫速度相對要慢些,并且所需要的存儲空間也較順序存儲大;邏輯位置相鄰的數據元素物理位置上不必相鄰;插入、刪除等操作靈活;每個結點都是由數據域和指針域組成的。鏈式存儲適用于任何二叉樹,是目前最常用的二叉樹存儲結構。二叉鏈表的每一個結點除了數據域(存放結點的數據信息)外,還需要有兩個指針域指向它的左、右孩子結點。通過左右兩個指針,二叉鏈表可以很方便的查找已知結點的孩子結點。

因此該程序中關鍵字節點結構如下:

typedef struct _node{

nodes parantPtr; 指向父節點

const nodes *SonPtr; 指向子節點

const char *MyName; 當前節點的名字

char Length; 節點的長度

int ID; 標記號

}node;

遍歷樹的過程是采用自上而下的方法,從根出發,自上而下的對輸入串中的關鍵字進行匹配直至樹的末端或沒有匹配為止。因為系統的輸入比較穩定,因此采用自上而下的分析法,其過程可以分為兩個步驟,一是根據輸入的命令得到每個關鍵字的編碼和參數等信息,然后根據編碼查找命令樹當前層(或根)與之匹配的信息,有匹配信息時記錄當前位置,無匹配信息時需要查詢其兄弟節點或回溯到父級繼續查詢,若符合條件的節點查詢完畢也沒有找到匹配的信息則給出出錯信息。最后得到一個儀器可以識別并能夠執行的命令碼和參數,同時提交命令碼供系統執行相應的功能。

三、總結

本論文對可編程線性直流電源進行了總體上的設計。首先對控制部分進行了設計,包括LED顯示部分和鍵盤輸入部分,進行了硬件和軟件上的實現,另外還對隔離電路進行了設計。將CPU周圍的SPI、AD轉換、DA轉換、ECCP、bootloader模塊和數據精確度的控制進行詳細的設計描述。最后對SCPI數據通信進行了設計說明,并有超級終端進行顯示并控制直流電源。

基于SCPI命令標準的研究和實現,可以提高SCPI的數據采集的通用性、可移植性和可擴展性,對于以后開發完整的標準化程控命令有一定的參考作用,能有效縮短其他具有SCPI命令的儀器開發時間。

參考文獻

[1] 李含光,鄭光勝.C語言程序設計教程,清華大學出版社,2011.

[2] 周芝田,靳越.單片機原理與應用,國防工業出版社,2010.

[3] SCPI Consortium.Standard Commands for Programmable Instruments(SCPI).1999,7-8.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合