999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C代碼的三相橋式全控整流的Simulink仿真應(yīng)用技術(shù)研究

2023-04-01 07:33:52王尊羅志斌荀慶來
電子制作 2023年5期
關(guān)鍵詞:設(shè)置

王尊,羅志斌,荀慶來

(中機國際工程技術(shù)研究院有限責(zé)任公司,湖南長沙,410000)

0 前言

隨著數(shù)字技術(shù)的飛速發(fā)展,基于微控制單元(MCU)的三相橋式全控整流技術(shù)已經(jīng)在工程實踐中取得了廣泛應(yīng)用[1]。市面上較為主流的MCU大多數(shù)均支持C語言為開發(fā)語言,在進行新算法的開發(fā)及程序驗證時為了降低試驗風(fēng)險,降低開發(fā)成本進行前期的數(shù)字仿真是十分有價值的。而在電力電子領(lǐng)域中Simulink是一款較為主流的數(shù)字仿真軟件,其功能強大,能夠在算法的原理性及程序邏輯合理性上的驗證起到重要作用,能夠很好地幫助工程人員較早地發(fā)現(xiàn)潛在問題。

但傳統(tǒng)的Simulink仿真乃是基于仿真模塊庫或Matlab的m腳本語言開展,僅進行原理性的驗證研究,與工程應(yīng)用存在一定的脫節(jié),對于工程應(yīng)用中前期的糾錯所提供的參考價值有限。針對上述的局限性,本文開展了基于C代碼的Simulink仿真技術(shù)應(yīng)用研究。借助Simulink仿真平臺,對工程實踐中應(yīng)用的C代碼開展數(shù)字仿真和驗證糾錯,避免問題進入工程應(yīng)用階段,為基于C語言的MCU應(yīng)用開發(fā)提供一種有力的驗證手段,縮短開發(fā)周期降低開發(fā)成本。

1 三相橋式全控整流

三相橋式全控整流技術(shù)已經(jīng)較為成熟,圖 1為其電路拓?fù)鋱D。圖中uga、ugb、ugc為電網(wǎng)三相電壓,ia、ib、ic為三相電流,L和C2分別為交流側(cè)濾波器的電感值與電容值,ua、ub、uc為變流器交流側(cè)三相電壓,C1為直流側(cè)電容,udc電容兩端電壓值。

圖1 三相橋式全控整流拓?fù)鋱D

下面以電網(wǎng)電壓矢量方向定向,根據(jù)基爾霍夫定律,得到其在兩相旋轉(zhuǎn)坐標(biāo)系上的數(shù)學(xué)模型如下[2,3]:

由于選擇以電網(wǎng)的電壓矢量為旋轉(zhuǎn)坐標(biāo)系的定向方向,因此其在交軸方向的分量為零ugd=0,同時控制無功電流id=0,可以建立以電流閉環(huán)為內(nèi)環(huán)直流側(cè)電壓閉環(huán)為外環(huán)的雙閉環(huán)全控整流系統(tǒng),其控制框圖如圖2所示。

圖中:the為電網(wǎng)電壓的鎖相角度,udc為直流側(cè)電壓值。

整個系統(tǒng)如圖 2所示,系統(tǒng)啟動時KM2閉合,經(jīng)過KM2及限流電阻對系統(tǒng)進行供電,借由功率單元里IGBT上的續(xù)流二極管進行整流并對直流測電容進行充電,完成系統(tǒng)的預(yù)充電過程。

圖2 控制框圖

充電一段時間,直流側(cè)電壓基本穩(wěn)定后,KM1合閘,KM2斷開切除預(yù)充限流電阻,系統(tǒng)由二極管開環(huán)預(yù)充電階段轉(zhuǎn)為雙閉環(huán)全控整流。系統(tǒng)通過數(shù)字鎖相環(huán)實現(xiàn)電網(wǎng)電壓的鎖相,并以網(wǎng)側(cè)電壓相位對輸入電流進行解耦,將電流解耦為id、iq電流,其中id對應(yīng)為系統(tǒng)有功電流,iq對應(yīng)為系統(tǒng)無功電流,通過PI控制器實現(xiàn)對輸入電流的閉環(huán)控制,并以解耦的電網(wǎng)電壓ugd、ugq為前饋量以提高系統(tǒng)的動態(tài)性能,最終得到的du、qu進行反派克變化得到功率單元需要輸出的電壓矢量,構(gòu)成完整的電流閉環(huán)。直流側(cè)的電壓閉環(huán)控制同樣通過PI控制器實現(xiàn),通過調(diào)節(jié)有功電流的輸入輸出來調(diào)節(jié)直流側(cè)電容的充放電以達(dá)到控制直流側(cè)電壓的目的,并實現(xiàn)能量的雙向流動。

2 Smulink基于C代碼的接口

Simulink中可調(diào)用C語言的模塊為S-Function Builer,其模塊的封裝圖示如圖 3 (a)圖所示。

圖3(b)圖為S-Function Builder的設(shè)置頁面,頁面主體為基于C語言的編輯器,語言類型可以選擇C和C++,打開模塊編輯器內(nèi)將自動生成“system_Start_wrapper”“system_Outputs_wrapper” 及“system_Terminate_wrapper”三個子函數(shù),為便于書寫下文中將寫為“Start子函數(shù)”“Outputs子函數(shù)”及“Teminate子函數(shù)”。其中Start和Teminate子函數(shù)僅在仿真運行的開始和結(jié)束時分別運行一次。Outputs子函數(shù)將在每一次S-Function Builder被調(diào)用時運行。紅框2為模塊輸入輸出變量的設(shè)置,第一欄設(shè)置變量名稱,第二欄設(shè)置變量類型,可以有輸入輸出參數(shù)三種類型,第三欄為數(shù)據(jù)類型可以設(shè)置為單個的整型和浮點型變量,也可以設(shè)置為數(shù)組,也可以設(shè)置為Bus類型,這里的Bus類型在C語言中將以結(jié)構(gòu)體的形式實現(xiàn)并支持多層結(jié)構(gòu)體嵌套。第四欄設(shè)置變量維度,第五欄可以設(shè)置實數(shù)、虛數(shù)。紅框3為模塊的一些設(shè)置如模塊的采樣模式等,可以根據(jù)需求設(shè)置,全部設(shè)置完成后點擊編譯按鈕將生成對應(yīng)的.C文件和中間文件。

圖3 S-Function Builder設(shè)置界面

單個或數(shù)組形式的變量的輸入、輸出只需要變量的類型和長度匹配就可以直接鏈接到模塊的輸入或輸出接口上。Bus類型的變量輸入、輸出分別需要通過Simulink中Bus Creator和Bus Selector來實現(xiàn)。

在定義Bus類型的輸入、輸出接口前需要打開總線編輯器,總線編輯界面如圖4所示,必須先在總線編輯器內(nèi)定義好對應(yīng)的總線類型變量及總線內(nèi)掛載的其他變量,支持多層總線變量嵌套。定義好變量后并將其以mat文件的形式保存到本地,模型運行前需要將mat文件中定義的變量讀取到matlab的工作空間內(nèi),否則將提示找不到對應(yīng)變量類型。

圖4 總線編輯器

將對應(yīng)總線變量導(dǎo)入到工作空間后,即可在圖 3的數(shù)據(jù)類型中找到對應(yīng)的Bus類型,并在Bus Creator和Bus Selector中設(shè)置為對應(yīng)的總線變量即可將其鏈接至模塊對應(yīng)的總線變量接口上,實現(xiàn)數(shù)據(jù)交互。完成總線編輯器的配置后,可以將設(shè)好的配置以.mat文件的形式保存至仿真目錄內(nèi)。在Matlab重啟后,或工作空間數(shù)據(jù)清除后,加載對應(yīng)的.mat文件后直接導(dǎo)入之前的配置,避免重復(fù)工作。

3 基于C代碼的仿真運行

3.1 Matlab編譯環(huán)境安裝

在進行C代碼的仿真前,需要配置好Matlab中的C代碼編譯環(huán)境,不同版本的Matlab所支持的對應(yīng)的編譯環(huán)境不盡相同,在Matlab的命令窗口內(nèi)輸入“mex -setup”指令,可以查詢當(dāng)前編譯器的情況,并查到對應(yīng)的支持表,文中的工程是基于MingW-64完成的。其安裝可以在Matlab的附加功能中根據(jù)提示步驟進行安裝,或根據(jù)支持表自行下載安裝包進行安裝配置。安裝并配置成功后同樣可以通過“mex -setup”指令查詢當(dāng)前所使用的編譯環(huán)境。

配置完成后,在進行仿真前需要通過“mex xxx.c xxx2.c”指令先對仿真用到的全部.C文件進行編譯,其中XXX為對應(yīng)文件名,包括Matlab生成的一些中間.C文件全部進行編譯,指令可添加多個.C文件同時進行編譯。如果.C文件沒有進行改動,在后續(xù)的仿真中不需要再次進行重復(fù)編譯,可以節(jié)省仿真時間,如果.C文件有修改,需要重新進行編譯才會生效,否則SimuLink將繼續(xù)使用之前的編譯文件繼續(xù)進行仿真。

3.2 頭文件及全局變量

C文件中用到的頭文件或全局變量可在生成的.C文件中如下圖的注釋區(qū)域內(nèi)進行申明和定義,但要注意的是Simulink的C代碼仿真暫不支持對實際的物理地址進行操作,但運行定義全局變量對全局變量的地址進行映射操作。

圖5 頭文件及全局變量定義

3.3 程序初始化及C文件調(diào)用

由于Start子函數(shù)的調(diào)用機制是僅在仿真開始時被調(diào)用一次,因此非常適合用于進行程序的初始化,只需在Start的子函數(shù)內(nèi),進行對應(yīng)的初始化操作即可。

由于Outputs子函數(shù)將在每次模塊被調(diào)用時運行一次,因此需要進行仿真驗證的C代碼的主函數(shù)需要在該子函數(shù)內(nèi)進行調(diào)用。但在調(diào)用前需要對輸入、輸出變量進行關(guān)聯(lián),如圖 6所示,我們定義接口變量將會以變量指針的形式作為Outputs子函數(shù)的輸入,在調(diào)用需驗證的C代碼之前,需要將定義的接口變量與對應(yīng)的函數(shù)變量進行關(guān)聯(lián),可以直接作為需要驗證的C代碼主函數(shù)的輸入變量,也可以賦值到全局變量上,再由主函數(shù)去讀取全局變量的對應(yīng)地址的變量值來實現(xiàn)變量的輸入。變量的輸出與輸入類似,在主函數(shù)運算完成后,可以直接將主函數(shù)的返回值賦值到輸出接口變量上,也可以借由對全局變量的指針操作來實現(xiàn)數(shù)據(jù)的關(guān)聯(lián),將反饋數(shù)據(jù)關(guān)聯(lián)至接口變量上,實現(xiàn)仿真數(shù)據(jù)的輸入輸出。

圖6 Outputs子函數(shù)輸入變量

在同一個Simunlink仿真中,支持調(diào)用多個S-Funtion Builder模塊,支持多個模塊在不同的仿真頻率下進行仿真,并調(diào)用不同的函數(shù),但是每一個模塊之間定義的內(nèi)部的全局變量在仿真中并不關(guān)聯(lián),如果需要關(guān)聯(lián),需要定義接口變量在模塊的外部對其進行賦值處理才能實現(xiàn)不同模塊之間的數(shù)據(jù)交互。抑或是采用外部觸發(fā)的形式,通過信號來觸發(fā)程序塊的運行,以模擬MCU中斷服務(wù)函數(shù)和外部觸發(fā)程序塊的運行邏輯。

3.4 程序的外部觸發(fā)

在上述的設(shè)置下模塊將以所設(shè)定的固定頻率或者以輸入變量的固定頻率來進行仿真,但在實際應(yīng)用中除了固定頻率運行的周期性的運算,還存在不少由外部條件或者由不固定時長的計時器來觸發(fā)運行的程序段,上述的設(shè)置將難以實現(xiàn)對這部分內(nèi)容的仿真驗證。

為實現(xiàn)外部觸發(fā)的操作,需要借助于Simulink中的Function -Call Subsystem來 實 現(xiàn),F(xiàn)unction-Call Subsystem只有在收到觸發(fā)信號時,才會調(diào)用其內(nèi)部封裝的子函數(shù)并運行一次,因此將S-Function Builder模塊封裝于Function-Call Subsystem內(nèi),并將其采樣模式設(shè)置為繼承即可實現(xiàn)C代碼的外部觸發(fā)調(diào)用機制。Function-Call Subsystem的觸發(fā)信號可以由Simulink的Stateflow進行給出,在Stateflow里選擇Chart并在其編輯頁面內(nèi)設(shè)置好觸發(fā)機制,再將觸發(fā)信號給到Function-Call Subsystem的觸發(fā)接口即可實現(xiàn)程序的外部觸發(fā)運行。

4 結(jié)論

以MCU為控制核心的自動化裝備和電力電子裝置的開發(fā)和應(yīng)用已經(jīng)愈發(fā)廣泛和成熟,而市面主流的MCU大多都支持以C語言為開發(fā)語言,在開發(fā)的初期階段直接以實物運行來調(diào)試無疑會帶來一定的設(shè)備和人身風(fēng)險,增加了調(diào)試難度,也提高了開發(fā)成本。因此在程序的開發(fā)初期和算法驗證的階段,直接在數(shù)字仿真平臺上對工程算法文件進行驗證和糾錯,將能夠在一定程度上規(guī)避掉一些風(fēng)險,且數(shù)字仿真平臺搭建難度低,過程數(shù)據(jù)更易捕捉,調(diào)試手段多,無形中也縮短了開發(fā)工作量。

本文以實際工程應(yīng)用遇到的三相橋式全控整流裝置的研發(fā)項目為例,開展了其基于C語言的Simulink的仿真技術(shù)研究,詳細(xì)分享了在該新型數(shù)字仿真平臺搭建過程中實現(xiàn)的包括模塊調(diào)用、變量鏈接、程序調(diào)用以及不同的觸發(fā)機制等操作,涵蓋了在工程應(yīng)用中可能會需要用到的情況和實現(xiàn)方法。并以實際的工程為例進行了應(yīng)用和測試,驗證了其方法的可行性。

猜你喜歡
設(shè)置
中隊崗位該如何設(shè)置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結(jié)構(gòu)及設(shè)置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫(yī)學(xué)專業(yè)與專科設(shè)置對比分析及啟示
特殊場景下列控等級轉(zhuǎn)換的設(shè)置方案
7招教你手動設(shè)置參數(shù)
動車段(所)股道有效長設(shè)置研究
我國中小學(xué)將設(shè)置人工智能相關(guān)課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設(shè)置說明
中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
主站蜘蛛池模板: 无码一区中文字幕| 亚洲一区二区三区中文字幕5566| 国产免费精彩视频| 亚洲精品国产乱码不卡| av在线人妻熟妇| 国产精品性| 在线网站18禁| 男人天堂伊人网| 狠狠五月天中文字幕| 亚洲全网成人资源在线观看| 亚洲成aⅴ人片在线影院八| 人人澡人人爽欧美一区| 美女被操91视频| 99久久国产自偷自偷免费一区| 国产精品手机在线观看你懂的 | 青青网在线国产| 久久黄色一级片| 亚洲国产av无码综合原创国产| 91久久青青草原精品国产| 国产精品亚洲va在线观看| 22sihu国产精品视频影视资讯| 亚洲精品无码人妻无码| 伊在人亞洲香蕉精品區| 亚洲精品国产成人7777| 国产第一页屁屁影院| 国产情侣一区| 国产主播喷水| 好吊妞欧美视频免费| 91网红精品在线观看| 国产亚洲精品91| 国产精品成| 国内精品九九久久久精品| 免费国产小视频在线观看| 欧美成人A视频| 这里只有精品在线播放| 一级毛片不卡片免费观看| 亚洲欧美日韩动漫| 国产高清无码麻豆精品| 亚洲视频四区| 狠狠综合久久| 国产亚洲欧美在线中文bt天堂 | 国产69囗曝护士吞精在线视频 | 亚洲69视频| 国产精品美人久久久久久AV| 免费av一区二区三区在线| 亚洲综合久久成人AV| 玖玖精品在线| 人与鲁专区| 色135综合网| 99er精品视频| 精品無碼一區在線觀看 | 天天综合网色中文字幕| 亚洲IV视频免费在线光看| 麻豆a级片| 久久亚洲美女精品国产精品| 亚洲中文字幕23页在线| 91美女视频在线| 欧美另类图片视频无弹跳第一页| 国产91特黄特色A级毛片| 亚洲高清在线播放| 日本高清有码人妻| 欧美成人手机在线观看网址| 国产成人精品男人的天堂| 欧美午夜视频在线| 四虎永久免费网站| h视频在线播放| 国产小视频a在线观看| 久久人体视频| 日韩精品成人网页视频在线 | jizz在线免费播放| 国产欧美视频在线观看| 萌白酱国产一区二区| 全部免费特黄特色大片视频| 欧美黑人欧美精品刺激| 亚洲欧美日韩中文字幕在线| 亚洲欧洲免费视频| 国产本道久久一区二区三区| 国产二级毛片| 国产一级在线播放| 日本三级欧美三级| 国产精品999在线| 97青草最新免费精品视频|