精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 1
    回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

4 “Simplified C block”在數字Buck變換器中的應用(PSIM教程)

前言

變換器的控制通常可以分為數字和模擬兩類,其中數字控制是用數字控制器,通過編程的方法實現變換器的控制;模擬控制是通過模擬電源管理芯片實現變換器的控制,兩種方法各有自身優點。在建模的過程中,可以通過運放搭PI調節器環路,也可以通過編程的方法實現。若控制環路簡單時用運放實現較為方便,若控制復雜時用編程的思想更容易實現。而PSIM中編程則使用“Simplified C block”實現,下面以Buck變換器為例講述“Simplified C block”的使用方法。

目錄

1、“Simplified C block”簡易C語言代碼塊

2、“Simplified C block”在數字Buck變換器中的應用

 

1 “Simplified C block”簡易C語言代碼塊

在PSIM中“Simplified C block”簡易C代碼塊怎么找到?

方法:Elements→Other→Function Blocks→Simplified C block。

Name:“Simplified C Block”簡化C代碼塊,可以直接輸入C代碼,無需編譯。

簡化C代碼塊允許用戶直接輸入C代碼,而無需編譯代碼。C解釋器引擎將在運行時解釋和執行C代碼。C代碼塊支持自定義和修改代碼塊的功能。

簡化C代碼塊使用方便,也可用于自動代碼生成。

功能注釋如下:

Number of Input/Output Ports:定義輸入端口或輸出端口的數量;

Color:定義C代碼塊圖像的顏色;

Edit Image:自定義C代碼塊的輪廓顏色;

Enable Fixed Point:選中此框,C代碼塊的輸入輸出均為定點,點擊“Fixed Point Settings”按鈕可定義定點數據類型。

Variables:該函數允許參數從主電路傳遞到C代碼塊。例如,要將常量k1、k2…、k5傳遞到C代碼中,在對話框窗口中定義以下內容:

Variable Description:k1

Variable name:k1

Variable Default Value:5

Insert GetPsimValue:檢索同一原理圖中C代碼塊之外的元素的參數值。此按鈕將打開一個對話框,其中列出了一側的所有元素,如果在另一側選擇了每個元素的參數。自動代碼生成不支持此函數。

Insert SetRunTimeValue:在仿真運行時計算元素的參數值。此按鈕將打開一個對話框,其中列出了一側的所有元素,如果在另一側選擇了每個元素的參數。自動代碼生成不支持此函數。

Check Code:檢查C代碼的語法。

除了用戶定義的變量外,以下變量也可以在代碼中使用:

t:時間t,從PSIM獲取;

delt:步長,從PSIM獲取;

x1,x2…xn:輸入x1,x2…xn,從PSIM獲取;

y1,y2…yn:輸出y1,y2…yn,從PSIM獲取;

所有輸入和輸出都是雙數據類型,除非選中了“啟用定點”框并且明確定義了輸入/輸出數據類型。

Note:輸入輸出順序從上到下為1,2,…,n,左側為輸入,右側為輸出,帶點的輸入引腳為第一個輸入,未使用的輸入節點必須接地。

變量函數:

該部分定義的變量名可以在代碼中使用。變量值可以是數字或公式。這些公式可以包含在參數文件中定義的變量或從命令行傳遞給原理圖的變量。公式在仿真開始前進行評估,不能包含t(時間)或輸入/輸出值。例如:

a=15.2

a=Freq/sqrt(2) Freq在“File”中定義。

這些變量與SimCoder兼容。請注意SimCoder生成的代碼將顯示計算值,而不是公式。

z域電路中的C代碼塊:

在z域電路中使用C塊時,PSIM將檢查在C代碼塊的輸入端是否立即連接任何ZOH塊。如果有,它將采用從第一個輸入開始遇到的第一個ZOH塊的采樣率,并對整個塊使用此采樣率。例如,如果有2個輸入,輸入1連接到一個10kHz的ZOH,輸入2連接到一個20kHz的ZOH,它將取10kHz而忽略20kHz。

目前,C代碼塊不支持多個采樣率的輸入。也就是說,C塊中的代碼將只以一個速率運行。

如果在C代碼塊的輸入端沒有立即連接ZOH,則在每個步長調用C代碼塊。

插入GetPsimValue函數:

使用該函數,C代碼塊可以訪問參數文件和其他電路參數。要檢索同一原理圖中參數文件中的變量值,請使用以下代碼片段:

#include "psim.h"; // Include the head file for the GetPsimValue function
int nStatus = -1;
double value = GetPsimValue(reserved_ThreadIndex, reserved_AppPtr, "", "alpha", &nStatus);
if(nStatus != 0)
{//optional error handling code
pintf("Error: alpha = %f, nStatus = %i \n", value, nStatus);
}

如果成功返回變量“alpha”的值,則將“nStatus”設置為零。錯誤處理是可選的。

此功能目前與SimCoder不兼容。

Remarks:每個C代碼塊作為一個獨立的單元。一個C代碼塊中的全局變量對其他C代碼塊是不可見的。將值從一個C代碼塊傳遞到另一個C代碼塊或電路的任何其他部分的唯一方法是通過C代碼塊的輸入/輸出端口。當一個C代碼塊的輸出直接連接到另一個C代碼塊的輸入時,PSIM仿真引擎首先運行第一個C代碼塊,然后是第二個C代碼塊。

注意,不像DLL塊,它是不可能調試和逐步通過C代碼塊代碼。調試C代碼塊的常用方法是在代碼中放置臨時的“printf”語句,以便在不同的執行點讀取變量值。下面的語句放置在SimulationStep中時,將在每個步長顯示變量omega的值。

printf("Time=%f,omega=%f \n",t,omega);

2 “Simplified C block”在數字Buck變換器中的應用

以PSIM中“Examples”的數字Buck變換器為例,談談“Simplified C Block”代碼塊的使用方法,變換器模型如圖1所示。

(a)功率模型

(b)C代碼塊

圖1 數字Buck變換器模型

仿真參數:輸入電壓48V,輸出電壓18V,工作頻率fs=100kHz

步長:1e-8s,時間:0.01s

ADC塊代碼

//Variables declaration
float data_in, Gadc;
static int sampled_data, counter;
static bool Flag =1, Fsamp_instant, ap_start_compensator;
int Bits; 
//Input assignation
Fsamp_instant = x1;
Bits = x2; 
data_in = x3;
//////////////////////////////ADC Gain///////////////////////////////
/* ADC gain is given by:
 Gadc = ((2^Bits)-1)/(Vmax-Vmin)
Where 
Vmax = maximun input voltage of the ADC.
Vmin =  minimum input voltage of the ADC.
Bits =	number of bits of the ADC*/
Gadc = (pow(2,Bits) -1)/3.3; 
/////////Sample and hold, saturation and truncation///////
/*As sample_data is an integer therefore 
a truncation of the decimal part occurs.*/
if (Fsamp_instant == 1 && Flag ==1){
	if (data_in > 3.3){ 
		sampled_data = (3.3*Gadc); //Saturation to Vmax
	}
	if (data_in < 0){ 
		sampled_data = (0*Gadc); //Saturation to Vmin
	}
	if (data_in <= 3.3 && data_in>=0){ //Store the data until the next sampling
		sampled_data = (data_in*Gadc); 
	}
Flag = 0;
}
if (Fsamp_instant == 0){
Flag = 1;
ap_start_compensator = 0;
counter = 0;
}
/*A small delay of 2 time steps is considered in order to 
guarantee that the data that the compensator will use to 
calculate the error is the sample [k]*/
if (Flag == 0){
	counter = counter +1;
}
if (counter > 2){
	ap_start_compensator = 1;
}
//Output assignation
y1 = sampled_data;
y2 = ap_start_compensator;

仿真結果

關鍵節點仿真波形如圖?2所示。

圖2 仿真結果

從仿真結果看,“Examples”例程中基于電流閉環的數學Buck變換器實現了閉環控制,通過ADC塊PI控制塊DPWM塊實現了控制,具體的控制思路和實現方法可以在例程中學習,這里主要講述“Simplified C Block”塊的功能和使用。

PSIM教程

[1]“File”參數文件在LLC變換器中的應用(PSIM教程)

[2]“Lookup Table”一維查表在LLC變換器中的應用(PSIM教程)

[3] “Voltage/Current”信號檢測在LLC變換器中的應用(PSIM教程)

聲明:上述內容為個人學習總結。由于水平有限,若有錯誤在所難免,請包涵。本帖內容僅限于學習交流,未經允許不得轉載。

全部回復(1)
正序查看
倒序查看
2023-09-03 15:55

PSIM是電力電子專業的常用仿真軟件之一,具有仿真速度快、收斂性好和精度高等優點,筆者使用軟件也有很長一段時間,對軟件了解也很有限,為了更好地使用該軟件,在這里將自己學習使用中的一些方法和心得進行梳理,希望對想學習的朋友有所幫助。在互聯網時代獲取知識的成本變得更低,但搜索知識的時間成本并不定,為了更好地傳播專業知識,筆者將以專題形式呈現。

0
回復
主站蜘蛛池模板: 人人狠狠综合久久亚洲 | 免费91麻豆精品国产自产在线观看 | 97国产影院 | 久久精品日产第一区二区 | 久久久久亚洲AV成人片无码 | 巅峰新说唱2022免费观看 | 国产香蕉视频在线播放 | 成全在线观看免费高清动漫 | 中文第一区| 欧美日韩精品人妻狠狠躁免费视频 | 男人把女人桶到爽爆的视频网站 | 国产成人av一区二区三区在线 | 狠狠色噜噜狠狠狠狠97首创麻豆 | 淫欲的代价2在线播放 | 亚洲婷婷六月 | 在线观看亚洲视频 | 制服丝袜中文字幕无码自拍 | 亚洲成人在线播放视频 | 福利视频在线看 | 樱桃视频首页在线观看 | 日韩av无码一区二区三区不卡毛片 | 国产老妇伦国产熟女老妇视频 | 黄色av视频| 婷婷六月国产精品久久不卡 | jizzjizzjizz中国免费 | 国产欧美日韩久久 | 国产视频精品网 | 国产在线一区二区三区视频 | 国产色情理论在线观看视频 | 成人夜间福利 | 久久久久成人免费看 | 丰满少妇猛烈进入A片99A | 亚洲欧美日韩国产中文字幕 | 四虎国产视频 | 久久国产免费 | 久久免费观看一级毛片 | 中文字幕乱码在线 | 国产精品亚洲欧美一级在线 | 91 免费看 | 成人免费看片粪便 | 大地资源在线观看免费高清观看 |