第四章 系統架構
4.2 軟體架構
本論文的運算核心,是以 TI 公司所出產高效能之 DSP,所使用的編輯軟體為 TI 公司所開發之 Code Composer(CC)4.12 版。此套軟體從撰寫、編譯、組譯、執
的時間。因其為低階語言,比較接近機械語言,所以占用的記憶體空間會比較少;
但缺點是當程式的架構大時,撰寫程式所須的時間將大為增加,且在規劃與維護 上將會顯得較為吃力。另外其程式碼的移植性相當的低,也就是說若今設計者想 要將原本在 24xx 系列中的程式,移植到 54xx 系列,那麼設計者必需要重新學習 54xx 系列的組合語言指令,因為 24xx 系列與 54xx 系列的程式碼不相容。
C 語言優點是程式較易撰寫,因其為高階語言,較符合人類的思考邏輯。由其 是在程式的架構變大時,更顯得容易維護與理解。另外,C 語言所編寫的程式碼移 植性相當的高,若程式設計者想將 24xx 系列的程式碼運用到 54xx 系列上,只需 更改其中若干的暫存器的位址與一些該注意的相關設定,所以在程式開發的時間 上,可節省相當多。其缺點是程式碼執行效率比較差,也就是說若同樣作一件事 情,若用組合語言來撰寫程式,則程式碼占用的記憶體容量,會比用 C 語言來撰 寫程式的程式碼所占之記憶體容量來得小。以 C 語言撰寫的程式的另一缺點,設 計者難以從中得知,執行該程式所需花費的時間。
基於以上的考量本研究採用 C 作為系統發展的程式語言,系統操控程式依其 功能可區分為兩大類:
一、時域方面:包括信號取樣及擷取控制程式,以及下列電力參數計算與顯示程 式:
(1)視在功率 (2)有效功率 (3)虛功率 (4)功率因數 (5)電壓有效值 (6)電流有效值 (7)電壓波形圖 (8)電流波形圖
二、頻域方面:除了前述信號取樣及擷取程式之外,也包含下列信號,頻譜分析 及諧波與閃爍指標計算程式:
(1)電壓閃爍頻譜及? V 10
(2)電壓諧波頻譜、失真因數及總諧波失真因數 (3)電流諧波頻譜、失真因數及總諧波失真因數 4.2.1 信號擷取
DSP 之 A/D 通道有 16 個,本論文用只用 2 個通道,通道 0 作電壓信號的擷取,
通道 1 作電流信號的擷取。DSP 內部以 8 個通道為一組,以一個 8 對 1 的多工器,
把類比資料送入 A/D 內部轉換,最後將轉換完成之數位資料分送至其內部特定的 暫存器中,如附錄 5 所示[27]。本論文設定的每一週期取樣點為 128 點,所以取
樣時間間隔為 1
60 128× 秒。為了能夠使 2 個通道,均能以每週期 128 點的取樣,又 為了配合 A/D 內部的結構,所以我們必須設一旗標 FLAG,作為擷取通道 0 或通道 1 資料的判斷依據。當 FLAG=0 時將 ADCIN00 的資料送到 Result Reg0 中,再由 DSP 將資料存入儲存電壓信號的暫存器 v[k],k=0~127,共 128 點資料;當 FLAG=1 時 將 ADCIN01 的資料送到 Result Reg 1 中,再由 DSP 將資料存入儲存電流信號的暫 存器 i[k]中,當 FLAG=1 時,令 k=k+1,若 k=128 時即表示已經完成一個週期的取 樣。為使電壓與電流信號取樣間隔同時都能到達 1
60 128× 秒,A/D 取樣的時間間隔 必須變為 1
60 128 2× × 秒。在開始取樣前,必須先預設 FLAG=0 及 k=0。其詳細流程 如圖 4.10。
圖 4.10 一般電力參數量測之電壓及電流信號取樣與擷取 開始
Result Reg0 資料放入 v[k]
Result1 資料 放入 i[k]
設 FLAG=0 k=k+1 ADC 取樣時間間隔設為 1
60 128 2× × 秒
FLAG=0 ? 是
否
k=128 ?
是 否
結束取樣 ? 是 結束
否 k=0,FLAG=0
設 FLAG=1 ADC 轉換
4.2.2 電力參數計算
以電壓信號暫存器 v[N]、電流信號暫存器 i[N]的資料,可直接計算出電壓有 效值、電流有效值。圖 4.11 是以(3.1)式及(3.2)式理論為基礎的程式流程。圖中 v[k]為電壓信號的暫存器,i[k]為電流信號的暫存器,N=128。開始計算電壓有效 值Vrms及電流有效值Irms前,須預設 k=0、V =0 、x I =0。至於視在功率、實功率、x 虛功率、功率因數,可依(3.3)式至(3.6)式由 v[N]、i[N]、Vrms、Irms間接計算而 得。
開始
2
x x
V =V +v[k]
2
x x
I =I +i[k]
k=128 ? 否
x rms
V = V
N
x rms
I = I N 是 k=0,V =0 ,x I =0 x
k=k+1
4.2.3 諧波計算
以電壓信號暫存器 v[N]、電流信號暫存器 i[N]的資料,依(3.23)式至(3.26) 式可計算出電壓總諧波失真因數與電流總諧波失真因數。過程中 FFT 後,會把時 域資料 v[N]、i[N]轉變為頻域資料 V[N]、I[N],流程如圖 4.12,其中 k=0~127。
預設暫存器 Vh=0 及 Ih=0 ,此THD 及V THD 是用來儲存電壓、電流總諧波失真因I 數。另外,預設 n=2。
圖 4.12 電壓及電流總諧波失真因數計算流程
n 2 1
Vh=(V ) +Vh V
n 2 1
Ih=(I ) +Ih I 開始
將 v[k]及 i[k]
代入 FFT 演算
n=65 ?
THD = Vh V
THD = Ih I
結束
否 是
n=n+1
n=2, Vh=0 , Ih=0 , THD =0 ,V THD =0 I
4.2.4 閃爍計算
欲以(3.29)式及(3.30)式的方法求得 128 週期的電壓有效值,除引用電壓信 號暫存器 v[N]外,尚須再引入另外 2 個暫存器陣列。將單數週期的電壓資料存放 在 v[N],將雙數週期的電壓資料存放在 vp[N],將每一週期電壓有效值存放在 vc[N],其中 N=128,在程式執行前先預設 k=0,x=0,vk=0,Vave=0,圖 4.13 為 128 週期電壓有效值取樣與應用(3.27)計算? V 的詳細流程。 10
最後將整個系統的軟、硬體架構組織起來之後,其操作流程如圖 4.14。
設定 ADC 取樣時間為 1
60 128× 秒 開始
k=128 ?
vc[x]= 1 vc[x]
N 否
是
v[k]=Result Reg0
k=0,x=x+1
A
vc[x]=v[k] +vc[x] 2
k=k+1
k=0,x=0,vk=0,Vave=0
A/D 轉換
圖 4.13 電壓閃爍演算流程(續) A
x/2 取餘=0 ?
設定 ADC 取樣時間為 1
60 128× 秒
vp[x]=vp[k] -v[x]2
k=128 ?
設定 ADC 取樣時間為 1
60 128× 秒
v[x]=v[k]-vp[x]2
k=128 ?
否 否
B
是 是
是
否
C
A/D 轉換 A/D 轉換
vp[k]=Result Reg0 v[k]=Result Reg0
vc[x]=vp[k]+vc[x]
k=k+1
vc[x]=v[k]+vc[x]
k=k+1
B
vc[x]= 1 vc[x]+vc[0]
N
x=128 ? C
否
vk=vc[k]+vk 是
k=127 ? 否
Vave= vk N 是 k=0,x=x+1
k=0 k=k+1
vk=0
圖 4.13 電壓閃爍演算流程(續) D
vc[k]=vc[k]-Vave
k=128 ? 否
將 vc[N]作 FFT 演算 計算可得? V 10
結束 是 k=k+1
圖 4.14 系統運作流程 信號取樣與電力參 數、諧波、閃爍計算
LCD 輸出資訊
重新量測
結束量測 設定電流範圍
(鍵盤輸入)
是
否 選擇要觀看的電力參
數(鍵盤輸入) 開始量測