国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

邵娟+王振華

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

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

一、引言

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

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

基于SCPI和可編程線性直流電源儀器的特點,將兩者有機的結(jié)合起來,通過軟硬件結(jié)合能夠?qū)崿F(xiàn)直流電源的遠程控制,并且和其他測試儀器想兼容,保證直流電源的穩(wěn)定性、智能性、多功能性、兼容性等。

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

2.1 可編程線性直流電源的總體結(jié)構(gòu)

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

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

2.2可編程線性直流電源的關(guān)鍵流程圖

有圖1可以看出“電流電壓采樣值”是整個系統(tǒng)的關(guān)鍵變量:

(1)通過硅膠按鍵和旋轉(zhuǎn)編碼開關(guān)輸入電流電壓設(shè)定值,當打開output后經(jīng)過AD、DA轉(zhuǎn)換得到采樣值。

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

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

因此本論文將以電流電壓采樣值為中心進行展開,在Keil開發(fā)環(huán)境下采用C51語言設(shè)計數(shù)據(jù)語言進行軟件的編寫和調(diào)試。

2.3控制模塊

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

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

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

總體結(jié)構(gòu)圖

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

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

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

命令樹圖通常由三部分構(gòu)成:關(guān)鍵字(KEYWORD)、參數(shù)形式(PARAMETER FORM)和注釋(NOTES)

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

命令樹的創(chuàng)建:樹中的每個節(jié)點不是保存關(guān)鍵字信息,而是采用編碼的方式,將該SCPI命令多叉樹中各個子系統(tǒng)分支視為一棵獨立的樹,通過先轉(zhuǎn)換各個子系統(tǒng)這樣的一棵獨立的樹為二叉樹的結(jié)構(gòu),再將所有的子系統(tǒng)二叉樹組合為一棵完整的二叉樹。

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

因此該程序中關(guān)鍵字節(jié)點結(jié)構(gòu)如下:

typedef struct _node{

nodes parantPtr; 指向父節(jié)點

const nodes *SonPtr; 指向子節(jié)點

const char *MyName; 當前節(jié)點的名字

char Length; 節(jié)點的長度

int ID; 標記號

}node;

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

三、總結(jié)

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

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

參考文獻

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

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

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