亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC++和MATLAB的船舶電力系統(tǒng)動態(tài)仿真軟件開發(fā)

        2018-09-27 06:57:58高國章高志國楊雪帆
        造船技術 2018年4期
        關鍵詞:圖元繪圖端口

        高國章, 高志國 , 楊雪帆

        (武漢理工大學 a.能源與動力工程學院, b.理學院, 湖北 武漢 430073)

        0 引 言

        隨著船舶智能化的程度越來越高,船舶綜合電力系統(tǒng)的安全性和穩(wěn)定性要求也越來越高。仿真[1]成為了許多研究人員常用的研究手段之一。

        國內外電力系統(tǒng)仿真軟件有PSCAD(Power Systems Computer Aided Design)、VTB(Virtual Test Bed)、SABER等[2],但是這些軟件都是針對陸地電力系統(tǒng)仿真需求制作的,針對性不強。VTB是美國QSI集團開發(fā)的一款軟件,其中包含船舶綜合電力系統(tǒng)仿真的模型,因而對船舶電力系統(tǒng)的仿真針對性更強,但是VTB對外保密,沒有實現通用。哈爾濱工程大學在船舶電力系統(tǒng)仿真平臺的研究和開發(fā)方面已經有多年的積累,在理論、平臺搭建和仿真方面都取得了一定的成果,但由于各方面原因,仍未能實現通用。

        目前,大多數研究工作者使用MATLAB/SIMULINK仿真,但在不間斷正在進行的仿真的情況下,系統(tǒng)無法根據需要實現參數修改,有一定的局限性。Visual C++面向對象編程[3],在應用程序界面編制、圖元繪制和人機交互等方面具有較大的優(yōu)勢,MATLAB中有豐富的優(yōu)化、計算工具[4]。VC++與MATLAB相結合,將發(fā)揮VC++可視化編程和MATLAB數值計算的優(yōu)點,可提高軟件開發(fā)的效率,縮短開發(fā)周期[5]。本平臺針對船舶電力系統(tǒng)開發(fā),利用VC++和MATLAB混合編程不僅便于系統(tǒng)繪制實現可視化[6],且在不間斷正在運行的仿真的同時,根據實際情況改變設備參數或者網絡結構實現延續(xù)仿真,實現在不同工況下的比較分析。

        1 平臺的需求分析

        平臺的需求主要包括非功能性需求和功能性需求。非功能性需求主要包括:可擴展性、低耦合性、便捷性、易用性和高性能,其中高性能最為重要,它需要滿足復雜電力系統(tǒng)的快速構建與計算要求,并且進行延續(xù)仿真。仿真平臺的功能性需求按船舶電力系統(tǒng)構建流程可分為:(1)文件操作——新建、打開、保存、關閉;(2)設備圖元繪制——柴油機、發(fā)電機、匯流排母線、線路、變壓器、電動機、螺旋槳等;(3)設備圖元操作——復制粘貼、選中、移動、縮放、線寬、顏色、端點自動連接、刪除;(4)參數設定;(5)拓撲分析[7];(6)VC++調用MATLAB。

        2 仿真平臺的開發(fā)

        2.1 平臺組成介紹

        本平臺基于船舶電力系統(tǒng)開發(fā)使用。船舶綜合電力系統(tǒng)的主要組成包括:產生電能的原動機、發(fā)電機等,配電變電部分的匯流排、變壓器、整流器、逆變器等[8],用電負載部分的推進電機、螺旋槳等。每個設備都有自己的模型,本仿真平臺用編程語言描述這些設備的數學模型,再將數學模型的編程與圖元封裝,實現圖模一體化。圖1為簡單的船舶電力系統(tǒng)框圖。

        圖1 船舶電力系統(tǒng)簡化框圖

        2.2 圖元繪制與操作的實現

        船舶電力系統(tǒng)的設備眾多,為方便后期的封裝,平臺為船舶設備對應的每1個圖元定義1個類,可以利用類的繼承特性去實現每個圖元對共有屬性的繼承,而不必在每個圖元類中重復實現。本平臺采用面向對象編程,其定義類的基本流程為

        (1) 從基類CObject中派生出繪圖類CDraw-Object,設備圖元對應的類從CDrawObject類中派生。

        (2) 在CDrawObject類中添加圖元類的公共屬性,把CDrawObject類的各個子類的公共屬性放到父類中,并且將CDrawObject類中的成員函數設置為public,讓子類都可以使用父類的成員函數。

        (3) 利用類的另一個特性多態(tài)性,實現同一函數的不同操作。將父類的成員函數設置成虛函數,聲明其類型為virtual,具體的功能在各個子類中去完成,對于不同的對象,程序會自己調用對應類中的成員函數去實現。

        2.2.1 圖元繪制

        實現圖模一體化后,將每個設備的圖元都放在工具欄或者菜單欄中,在繪制時直接點擊相應的圖標或者選項,然后在窗口通過鼠標拖曳完成圖元繪制,可簡化繪圖操作,提高繪圖效率。整個工具欄如圖2所示。工具欄中,設備對應圖標是可以浮動的,避免工具欄按鈕太多導致使用不方便。通過調用CToolBar類的Create或CreateEx成員函數,設置其參數DWORD dwstyle的值就可實現工具欄浮動。給工具欄各圖元命名相應的專業(yè)ID,經過類向導添加響應函數,實現相應的功能。

        圖2 工具欄示例

        在微軟基礎類庫(Microsoft Foundation Classes, MFC)中與圖形相關的類有:CDC(Create Device Contert)類和GDI(Graphics Devices Interface)類。CDC類主要可以實現繪圖功能和繪圖環(huán)境的設置,利用CDC類可以實現形狀的繪制和圖形顏色、畫筆線條寬度等設置。GDI對象類包括位圖類、畫刷類、字體類、畫筆類、區(qū)域類等。當獲取當前CDC類對象或者指向對象的指針后,在繪圖時,使用函數SelectObject()將畫筆、畫刷、字體等對象引入到函數CreatDC()中,實現特定的繪圖屬性。繪制圖元時,必須先在圖元類中添加繪圖函數,之后在視類View中的函數OnLBottonDown()中經由各自圖元對象調用繪圖函數完成繪圖。

        按相對應關系將圖1所示簡單電力系統(tǒng)框圖繪制成圖元,界面如圖3所示。菜單欄中主要包括:文件、編輯、視圖、繪圖、分析等,工具欄呈現于菜單欄下方,使用者可在繪圖窗口區(qū)通過拖曳工具欄中的相應圖元實現系統(tǒng)繪制。

        圖3 仿真平臺繪制界面

        2.2.2 圖元操作

        在系統(tǒng)建立過程中,為使系統(tǒng)圖元整潔、規(guī)范且繪制便利,不可避免地要求圖元能夠移動、復制粘貼、旋轉和刪除等,且通過雙擊圖元實現對相應設備參數的設定?;静僮鞯膶崿F方法如下:

        (1) 移動。首先刪除原圖元,然后調用自定義函數MoveAt()實現圖元重新繪制,最后利用DeleteObject()釋放筆資源。

        (2) 復制粘貼。通過圖元類中的一個構造函數,給該類的變量賦初值,這些變量都存入類中,當進行復制時,這些參數存入到結構體中,在粘貼時,把結構體中這些參數重新賦值給新的位置重新繪制成新的設備圖元。

        (3)旋轉。利用一個for循環(huán)實現參數m_nSource的累加賦值,其不同賦值在繪圖函數選擇中執(zhí)行不同的繪制命令。對于只在水平和豎直方向繪制的圖元,則通過改變其狀態(tài)變量的取值來實現。參數m_bIsHor初始值為true,當旋轉操作時對變量m_bIsHor重新賦值為fasle。根據參數m_nSource、m_bIsHor的不同取值,繪圖函數執(zhí)行不同的操作,可實現圖元按順時針方向旋轉,每次旋轉90°。

        (4) 刪除。調用OnDelete()函數,先選中圖標,遍歷圖元數據列表,找到需要刪除的圖元,然后將圖元刪除。

        2.2.3 參數設定

        雙擊圖元彈出對話框,彈出后在對話框中填寫參數具體數值并在窗口顯示,點擊保存之后保存到圖元類。彈出電動機的參數設置對話框如圖4所示。

        圖4 電動機參數設置圖

        圖元建模在完成繪制圖元和雙擊圖元設置對應系統(tǒng)各設備的參數后,再經過圖元封裝,將設備的模型封裝到設備對應的類中,使設備圖元和模型成為一個整體,進而實現編程的模塊化。

        2.3 拓撲分析

        完成上述操作后,為了解系統(tǒng)的連接關系必須對所繪制的系統(tǒng)進行拓撲分析。電網拓撲結構分析的主要作用是依據開關和設備圖元的狀態(tài),確定每個圖元與其他圖元的連接關系,把電力系統(tǒng)網絡物理模型轉化為采用節(jié)點/支路描述的數學模型[9]。系統(tǒng)將設備與圖元對應,系統(tǒng)的接線圖可以理解為由圖元、線段組成的支路以及由這些支路組成的幾何圖形,通過確定節(jié)點-開關-節(jié)點和母線-支路的連接關系以及設備的數量,為后續(xù)計算提供依據。

        拓撲分析即是根據設備圖元的ID號和圖元端口位置坐標,通過比較端口坐標是否相同來判斷圖元之間的連接關系[10],確定與母線連接的設備圖元,從而將電力系統(tǒng)的接線圖轉換為計算機可識別的電路圖的過程。

        拓撲分析的本質是分析圖元的端口坐標或者比較節(jié)點的參數值。每個圖元在繪制或移動過程中端口的坐標會保存到圖元類中,當兩個圖元端口的坐標值相同時就將圖元的ID號存入到數組中。拓撲分析可分為以下幾個步驟。

        Step 1:判斷圖元是否與導線或者母線連接。這個通過端口到線的距離來判斷,當端口距離線的距離小于設定值時認為兩者相連。將每條線都當做是點集,端口與其中任一點相連都當做是相連接。端口與端口之間的坐標判斷是通過點到點的距離實現的,利用條件公式sqrt((x1-x)2+(y1-y)2)

        Step 2:節(jié)點融合。通過圖元自身的端口坐標是否相等或者接近,如果滿足條件則將兩圖元的ID號保存到數組中,并將兩節(jié)點合并為同一節(jié)點。

        Step 3:在系統(tǒng)中對開關的處理。當開關閉合時,當作導線對待,節(jié)點數減少1個;當開關斷開時,開關的節(jié)點數增加1個,節(jié)點數的變化對應開關的不同狀態(tài)。

        Step 4:支路的判斷。具有相同的節(jié)點,兩設備圖元的其他端點的位置坐標不同,則認為是不同的支路,并按照不同的支路方向繼續(xù)搜索,直到終點。

        經過上述幾個步驟,點擊菜單欄,系統(tǒng)能夠識別并存儲設備圖元的種類、節(jié)點和支路,從而確定各個圖元的連接關系,自動生成系統(tǒng)相應的拓撲關系。

        船舶電力系統(tǒng)中所有發(fā)電機接到匯流排,所有的負載從匯流排引出,然后通過開關的通斷決定發(fā)電機在網數目和負載大小[11],系統(tǒng)結構相對簡單,只需識別圖元設備和支路即可,拓撲分析的難度降低。

        在程序中約定,在匯流排左邊的開關對應著發(fā)電機組數目的增加,開關變量只有2種取值0和1,取值0代表開關斷開,取值1代表開關閉合。在匯流排右側的開關對應的是負載的增加,開關的取值仍為0和1。

        拓撲分析的流程如下:

        (1) 在繪制圖中,首先通過坐標比較實現節(jié)點融合,將相連通的節(jié)點等價為同一個節(jié)點;通過遍歷圖元,完成整個系統(tǒng)節(jié)點的融合,簡化連接關系。

        (2) 通過圖元端點坐標比較,若界面中有無效模塊,則系統(tǒng)自動將對應圖元的數目從該類圖元總數目中減去。在判斷連接關系時,首先找出與母線相連接的設備,通過設備的另一個端點坐標和所有圖元的端點比較,根據相連判據找到與該設備相連接的下一個設備,如此循環(huán),直到找不到下一個具有相同端點的設備,即可認為到達了支路的終點。每個圖元在繪制時端點坐標、圖元類型和端口數都已經保存,通過上述搜索,便可以找到設備的連接關系。

        (3) 在(2)中剔除沒有實際作用的圖元后,判斷開關的通斷狀態(tài)和位置,根據所得到的信息確定所繪制電力系統(tǒng)中的發(fā)電機數、電動機數等,進一步確定系統(tǒng)的設備類型、數目和在網設備。

        (4) 根據不同的分析結果調用模型完成計算。

        下面舉例說明拓撲分析的情況。繪制的船舶電力系統(tǒng)圖如圖5所示,相對應的拓撲分析結果如圖6所示。

        圖5 船舶電力系統(tǒng)模型圖示例

        圖6 拓撲分析結果圖

        3 調用MATLAB實現仿真

        在VC++程序中通過MATLAB引擎調用MATLAB, MATLAB引擎主要提供給用戶1組引擎函數,通過這些函數可以實現MATLAB與VC++之間的數據傳遞[12],其具體的過程和操作如下:

        (1) 打開一個MATLAB引擎。在VC++應用程序中通過調用engOpen()函數能夠方便地打開一個MATLAB進程。應用程序在使用引擎之前,須在應用程序中包含“engine.h”頭文件。

        (2) 將VC++應用程序中數組形式的數據轉換為MATLAB中的使用形式。通過調用函數庫中的函數mxCreateDoubleMatrix()來創(chuàng)建mxArray陣列;然后再通過拷貝函數memcpy()將一個自定義數據結構復制到mxArray中,但是需要注意到主句存儲形式不同。

        (3) 將設備需要設置的參數保存到mxArray陣列中,然后把mxArray陣列傳輸至MATLAB引擎的工作空間中,可通過調用函數engPutVariable()實現這一操作,數據傳輸到MATLAB工作空間后就在MATLAB計算中被相應的變量使用。

        (4) 在VC++應用程序中,使用函數向MATLAB引擎發(fā)送所要執(zhí)行的命令字符串,命令字符串的使用形式與在MATLAB命令窗口中直接使用的形式是相同的。在應用程序中執(zhí)行函數engEvalString()后,MATLAB命令窗口將自動被打開,MATLAB會話期窗口是否可見可自行設計。打開MATLAB后完成命令語句中的數值計算和分析等操作,并將命令字符串的處理結果顯示出來。

        (5) 由預先定義的輸出緩沖來獲取MATLAB引擎的輸出結果,此步操作是(4)的補充,能夠實現獲取任意想要的結果。

        (6) 調用engClose()函數關閉引擎,釋放內存空間并退出。

        整個工作流程是在VC++的圖形界面上繪制出電力系統(tǒng)的連接圖,并將每個圖元的變量名顯示在對應的位置,電網經過拓撲分析之后顯示節(jié)點,系統(tǒng)自動記錄輸入的設備類型和連接關系。在彈出的參數設置窗口中給定對應參數值或者使用程序中的默認值,保存后點擊運行,系統(tǒng)根據設備類型、數量和連接關系等信息,結合開關的狀態(tài),自動啟動MATLAB引擎執(zhí)行數學模型的計算,最后利用繪圖函數將結果顯示,計算結果返回到VC++中。

        4 結 語

        本文基于船舶電力系統(tǒng)模型,結合VC++和MATLAB兩者的優(yōu)勢,采用圖元的思想,實現船舶綜合電力系統(tǒng)的可視化界面繪制、拓撲分析和動態(tài)仿真等功能,充分利用拓撲分析實現系統(tǒng)拓撲結構的自動辨識,利用動態(tài)仿真實現MATLAB在執(zhí)行已經賦予參數的仿真的同時,又時刻訪問VC++端口傳入的參數。若系統(tǒng)檢測到其結構或設備參數被修改,本平臺將可以在不中止上一個仿真的條件下延續(xù)進行,達到參數變化或結構變化時不中斷仿真的目的。

        猜你喜歡
        圖元繪圖端口
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        學與玩(2022年10期)2022-11-23 08:31:08
        一種組態(tài)控件技術在電力監(jiān)控系統(tǒng)中的運用
        電視技術(2021年11期)2022-01-07 12:52:28
        一種端口故障的解決方案
        科學家(2021年24期)2021-04-25 13:25:34
        學術出版物插圖的編排要求(一):圖注
        聯(lián)鎖表自動生成軟件的設計與實現
        基于HTML5 Canvas繪圖技術應用
        電子測試(2018年4期)2018-05-09 07:28:32
        端口阻塞與優(yōu)先級
        基于Qt繪圖系統(tǒng)的圖形應用優(yōu)化研究與實現
        軟件(2016年12期)2016-02-13 05:58:14
        Surfer和ArcView結合在氣象繪圖中的應用
        河北遙感(2015年2期)2015-07-18 11:11:14
        国产亚洲精品久久情侣| 久久久无码一区二区三区| 人妻少妇久久中文字幕| 大肉大捧一进一出视频| 鲁鲁鲁爽爽爽在线视频观看| 国产精品久久久久久麻豆一区| 国产精品无码久久久久下载| 午夜亚洲精品一区二区| 91视色国内揄拍国内精品人妻| 久久婷婷五月国产色综合| 亚洲欧美在线观看| 中文字幕亚洲好看有码| 国产综合精品久久久久成人| 亚洲一区二区三区亚洲| 人妻少妇69久久中文字幕| 色婷婷亚洲一区二区三区| 四川丰满少妇被弄到高潮| 蜜臀av免费一区二区三区| 免費一级欧美精品| 亚洲综合久久精品少妇av| 国产av在线观看一区二区三区| 夜夜爽日日澡人人添| 中文字幕人妻熟女人妻洋洋| 亚洲av无码片一区二区三区| 国产一区二区三区免费精品| 91亚洲国产成人久久精品网站| 日本久久黄色高清视频| av免费在线免费观看| 亚洲国产成人片在线观看| 国产剧情av麻豆香蕉精品| 亚洲欧美日韩国产精品一区| 熟妇与小伙子露脸对白| 国内偷拍精品一区二区| 欧美白人战黑吊| 国产操逼视频| 亚洲毛片网| 熟女少妇丰满一区二区| 亚洲天堂一区二区偷拍| 亚洲开心婷婷中文字幕| 国产精品亚洲一区二区三区在线| 深夜国产成人福利在线观看女同|