• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于PLC的船舶電力推進(jìn)仿真系統(tǒng)的網(wǎng)絡(luò)通信*

    2007-09-20 05:49:16尚前明
    船海工程 2007年4期
    關(guān)鍵詞:句柄服務(wù)端組態(tài)

    尚前明,劉 安

    (武漢理工大學(xué) 仿真中心,武漢430063)

    基于PLC的數(shù)據(jù)采集和控制在實(shí)際系統(tǒng)中應(yīng)用很廣泛,隨著計(jì)算機(jī)技術(shù)的發(fā)展,綜合全電力推進(jìn)系統(tǒng)(IPS)和船舶電力推進(jìn)已經(jīng)進(jìn)入了發(fā)展的新時(shí)期[1]。為研究需要,建造小比例實(shí)物電力推進(jìn)系統(tǒng)進(jìn)行混合仿真,該系統(tǒng)應(yīng)用了仿真技術(shù)、數(shù)據(jù)采集技術(shù)、控制技術(shù)以及網(wǎng)絡(luò)通信技術(shù)。

    1 研究對象描述

    船舶電力推進(jìn)仿真系統(tǒng)由配電室、推進(jìn)裝置、集中控制室等組成,該系統(tǒng)主要實(shí)現(xiàn)如下幾方面研究:采用與實(shí)船相似的電力推進(jìn)系統(tǒng)搭建了小比例實(shí)物電力推進(jìn)系統(tǒng);采用可編程控制器PLC和PC機(jī)組成數(shù)據(jù)采集系統(tǒng),變頻器、變壓器、推進(jìn)電機(jī)、負(fù)載電機(jī)、操作控制器等通過PROFIBUS總線組成電力推進(jìn)控制系統(tǒng);采用了TCP/IP協(xié)議的局域網(wǎng);建立了船舶綜合中央能量管理系統(tǒng)的數(shù)學(xué)模型并進(jìn)行實(shí)時(shí)仿真研究[2];將電力推進(jìn)系統(tǒng)分為不同的子模塊,編制每個(gè)子系統(tǒng)仿真模型的數(shù)學(xué)模型并用仿真軟件Saber對系統(tǒng)進(jìn)行仿真分析。

    2 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和協(xié)議

    2.1 網(wǎng)絡(luò)組成及拓?fù)浣Y(jié)構(gòu)

    電力推進(jìn)仿真系統(tǒng)網(wǎng)絡(luò)由4臺PC機(jī)和1套PLC構(gòu)成。PC機(jī)采用以太網(wǎng)的分布式結(jié)構(gòu),其中一臺計(jì)算機(jī)作服務(wù)器(Server),運(yùn)行電力推進(jìn)系統(tǒng)的能量管理數(shù)學(xué)模型程序,另外三臺計(jì)算機(jī)作為數(shù)據(jù)采集和監(jiān)控計(jì)算機(jī)的客戶端(Client)。型號為PLC314C-2DP的CPU一端通過插在集控臺計(jì)算機(jī)上的CP5611通訊板卡實(shí)現(xiàn)與監(jiān)控計(jì)算機(jī)的數(shù)據(jù)采集和通訊;另一端采用雙絞線連接集控臺、駕控臺、機(jī)旁和變頻柜,采用PROFIBUS_DP協(xié)議的PROFIBUS總線結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)通訊。船舶電力推進(jìn)系統(tǒng)的網(wǎng)絡(luò)組成如圖1所示,上位計(jì)算機(jī)網(wǎng)絡(luò)特點(diǎn):分布式結(jié)構(gòu)、TCP/IP協(xié)議和C/S模式;下位計(jì)算機(jī)網(wǎng)絡(luò)的特點(diǎn):Profibus總線和PROFIBUS-DP協(xié)議。

    圖1 船舶電力推進(jìn)系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)圖

    2.2 網(wǎng)絡(luò)的協(xié)議介紹

    PLC與四個(gè)變頻柜的通信采用了PROFIBUS-DP協(xié)議,Profibus/DP協(xié)議是一個(gè)復(fù)雜的通訊協(xié)議[3]。Profibus的重要電文結(jié)構(gòu)為:令牌信息、FDL狀態(tài)請求電文、數(shù)據(jù)電文[2]。

    TCP/IP協(xié)議的基本傳輸單位是數(shù)據(jù)包(datagram),TCP協(xié)議負(fù)責(zé)把數(shù)據(jù)分成若干個(gè)數(shù)據(jù)包,并給每個(gè)數(shù)據(jù)包加上相應(yīng)的編號的包頭(就像給一封信加上信封),以保證在數(shù)據(jù)接收端能將數(shù)據(jù)還原為原來的格式;IP協(xié)議在每個(gè)包頭上再加上接收端主機(jī)地址 (就像信封上要寫明地址一樣),如果傳輸過程中出現(xiàn)數(shù)據(jù)丟失、數(shù)據(jù)失真等情況,TCP協(xié)議會自動(dòng)要求數(shù)據(jù)重新傳輸,并重新組包??傊?,IP協(xié)議保證數(shù)據(jù)的傳輸,TCP協(xié)議保證數(shù)據(jù)傳輸?shù)馁|(zhì)量。

    3 數(shù)據(jù)采集和通信實(shí)現(xiàn)

    3.1 PLC的選型和組態(tài)編程

    選用SIMATIC S7-300型PLC。在軟件包STEP7中,設(shè)置通信端口,MPI地址設(shè)定,選擇數(shù)據(jù)傳輸速率等。通過MPI端口對S7-300的機(jī)架、電源、CPU、信號模件、通信處理器等的類型和物理地址進(jìn)行組態(tài),并將組態(tài)程序下載到PLC[3]。在STEP7中,可用梯形圖(Ladder)、語句表(STL)或流程圖(FlowChart)進(jìn)行編程,若選擇“線性程序設(shè)計(jì)”方法,則把所有程序放在PLC操作系統(tǒng)與用戶程序間的接口的OB1中,PLC周期性地調(diào)用此塊。若選擇“結(jié)構(gòu)式程序設(shè)計(jì)”方法,則通過組織塊OB1調(diào)用其它塊,如功能塊FB、數(shù)據(jù)塊DB等。

    3.2 PLC與WinCC之間的通信

    工控組態(tài)軟件 WinCC[4]提供PLC的通信驅(qū)動(dòng)程序和功能強(qiáng)大的工具(打印報(bào)表、趨勢圖、報(bào)警、系統(tǒng)安全等)使開發(fā)監(jiān)控應(yīng)用程序變得非常方便。PLC與WinCC之間通信的實(shí)現(xiàn)方法首先啟動(dòng)WinCC,建立一個(gè)新的WinCC項(xiàng)目,然后在標(biāo)簽管理中選擇添加PLC驅(qū)動(dòng)程序,建立WinCC與PLC之間的通信連接。然后在編程軟件STEP7下設(shè)置標(biāo)簽名、數(shù)據(jù)類型和地址,其中最重要的是標(biāo)簽地址,它定義了此標(biāo)簽與PLC中某一確定地址如某一輸入位、輸出位或標(biāo)志位等一一對應(yīng)的關(guān)系,實(shí)現(xiàn)PLC與WinCC之間需要通信的數(shù)據(jù)的一一定義標(biāo)簽,即可完成PLC與WinCC之間的數(shù)據(jù)通信。最后在圖形編輯器(GraphicsEditor)中,用基本元件或圖形庫中對象制作工藝流程監(jiān)控畫面,并將變量標(biāo)簽與每個(gè)對象連接,即相當(dāng)于畫面中各對象與現(xiàn)場設(shè)備相連,從而可在CRT畫面上監(jiān)視、控制現(xiàn)場設(shè)備。

    3.3 WinCC與Visual C++應(yīng)用程序的進(jìn)程間通信

    由于西門子S7-300系列PLC通訊協(xié)議不公開[5],要實(shí)現(xiàn)電力推進(jìn)能量管理必須將PLC采集的數(shù)據(jù)與仿真的數(shù)據(jù)集成于服務(wù)器。實(shí)現(xiàn)與PLC的數(shù)據(jù)交換實(shí)際上是實(shí)現(xiàn)Visual C++與WinCC之間的進(jìn)程通信。由于WinCC可以讀寫Excel數(shù)據(jù)庫和進(jìn)行文件操作,并且支持C語言腳本編程,但是WinCC在運(yùn)行時(shí)必須打開Excel數(shù)據(jù)表才能動(dòng)態(tài)刷新采集的數(shù)據(jù),而且Excel數(shù)據(jù)表并非真正的數(shù)據(jù)庫,應(yīng)該算是數(shù)據(jù)視圖。所以通過ODBC或DAO的數(shù)據(jù)庫記錄集類CRecordSet實(shí)現(xiàn)對Excel的讀,只有通過SQL查詢語句才能實(shí)現(xiàn)對Excel表的修改,而且同時(shí)實(shí)現(xiàn)對Excel讀寫,這種方式的數(shù)據(jù)刷新的實(shí)時(shí)性很差。因此在應(yīng)用程序中開辟了兩個(gè)線程:ReadExcelProc線程負(fù)責(zé)從Excel表讀取來自PLC的數(shù)據(jù),WriteFileProc線程負(fù)責(zé)將服務(wù)器下傳的數(shù)據(jù)寫進(jìn)文件里,WinCC通過long_main()函數(shù)去讀文件數(shù)據(jù),從而實(shí)現(xiàn)了進(jìn)程間數(shù)據(jù)通信。

    3.4 C/S模式下服務(wù)器與客戶端之間的命名管道通信

    3.4.1 命名管道程序?qū)崿F(xiàn)原理

    1)建立連接和通信。服務(wù)端使用CreateN-amedPipe函數(shù)創(chuàng)建一個(gè)命名管道的實(shí)例并返回相應(yīng)的句柄,或?yàn)橐汛嬖诘墓艿绖?chuàng)建新的實(shí)例。如果在已定義超時(shí)值變?yōu)榱阋郧?,?shí)例管道成功創(chuàng)建并返回管道句柄,可以用ConnectNamedPipe函數(shù)來偵聽客戶端的連接請求。客戶端通過函數(shù)WaitNamedPipe實(shí)現(xiàn)客戶進(jìn)程連接到一個(gè)命名管道,如果在超時(shí)值變?yōu)榱阋郧?,有一個(gè)管道可以為連接使用,則 WaitNamedPipe將返回True,調(diào)用CreateFile或CallNamedPipe函數(shù)來呼叫對服務(wù)端的連接。當(dāng)服務(wù)端與客戶端成功建立連接后,服務(wù)端ConnectNamedPipe返回True,客戶端CreateFile將返回一指向管道文件的句柄。以后客戶端與服務(wù)器端即可通過ReadFile和WriteFile,利用得到的管道文件句柄,進(jìn)行彼此間網(wǎng)絡(luò)通信。

    2)連接終止。當(dāng)客戶端與服務(wù)端的通信結(jié)束,或由于某種原因一方需要斷開時(shí),客戶端應(yīng)調(diào)用CloseFile,而服務(wù)端應(yīng)接著調(diào)用DisconnectN-amedPipe。當(dāng)然服務(wù)端亦可通過單方面調(diào)用DisconnectNamedPipe終止連接。最后應(yīng)調(diào)用函數(shù)CloseHandle來關(guān)閉該管道。

    3.4.2 通信代碼的實(shí)現(xiàn)

    1)客戶端代碼

    HANDLE ClientHandle;

    Char PipeNameStr[200];

    sprintf(PipeNameStr,″\\\\ServerName\\Pipe\\PipeName″);

    if(WaitNamedPipe(PipeNameStr,NMPWAIT _WAIT_FOREVER)==FALSE

    MessageBox(″建立管道失??!″);

    else

    CltHandle=CreateFile(ClientPipeStr,GENERIC_READ|GENERIC_WRITE,F(xiàn)ILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,F(xiàn)ILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_WRITE_THROUGH,NULL);

    If(ClientHandle==INVALID_HANDLE_VALUE)

    MessageBox(″管道連接失?。 澹?;

    else//連接成功,從管道讀寫信息

    ……。

    2)服務(wù)端代碼

    HANDLE ServerHandle;

    char PipeNameStr[200];

    sprintf(PipeNameStr,″\\\\ServerName\\Pipe\\PipeName″);

    ServerHandle=CreateNamedPipe(PipeNameStr,

    PIPE_ACCESS_DUPLEX|FILE_FLAG_WRITE_THROUGH,

    FILE_WAIT|PIPE_TYPE_BYTE,PIPE_UNLIMITED_INSTANCES,

    128,128,NULL,NULL);

    if(ServerHandle = =INVALID_HANDLE_VALUE)

    MessageBox(″建立管道失??!″);

    else

    If(ConnectNamedPipe(ServerHandle,NULL)==FALSE)

    MessageBox(″管道連接失??!″);

    else////連接成功,從管道讀寫信息

    ……

    }。

    4 結(jié)論

    SIMATIC S7-314C的PLC可編程控制器數(shù)據(jù)采集的精度和實(shí)時(shí)性很好,用WinCC作為數(shù)據(jù)采集和監(jiān)控的應(yīng)用軟件是可行的方案?;诿艿赖腃/S模式網(wǎng)絡(luò)通訊能夠保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和安全性,可以適用于與服務(wù)器與多個(gè)客戶端的連接與通信。船舶電力推進(jìn)系統(tǒng)作為“211”重點(diǎn)建設(shè)項(xiàng)目,已經(jīng)通過了省科技廳舉行的專家鑒定會,與會專家參加一致認(rèn)為該系統(tǒng)達(dá)到國際先進(jìn)水平。

    [1]楊曉麗.吊艙式電力推進(jìn)系統(tǒng)的動(dòng)態(tài)仿真的研究[D].上海:上海海事大學(xué),2004.

    [2]溫 洪.潛艇電力推進(jìn)系統(tǒng)負(fù)載特性的計(jì)算方法[J].機(jī)電設(shè)備,1999(4):16-22.

    [3]羅耀華,葉瑰昀,劉 勇.艦船全電力推進(jìn)系統(tǒng)模擬研究[J].船舶工程,2002(4):45-49.

    [4]展在宏.西門子S7-300及工控組態(tài)軟件 WinCC的應(yīng)用[J].包鋼科技,2002(2):32-37.

    [5]Adnanes AK.Maritime Electrical Installations and Diesel Electric Propulsion[R].Norway:ABB Marine AS,Oslo,2003.

    猜你喜歡
    句柄服務(wù)端組態(tài)
    基于PLC及組態(tài)技術(shù)的恒溫控制系統(tǒng)開發(fā)探討
    云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
    新時(shí)期《移動(dòng)Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
    高校圖書館持久標(biāo)識符應(yīng)用研究
    在Windows Server 2008上創(chuàng)建應(yīng)用
    基于PLC和組態(tài)的智能電動(dòng)擰緊系統(tǒng)
    編譯程序語法分析句柄問題分析與探討
    PLC組態(tài)控制在水箱控制系統(tǒng)的應(yīng)用
    鑄造行業(yè)三維組態(tài)軟件的應(yīng)用
    MFC應(yīng)用程序多線程混合顯示界面方法研究
    周宁县| 延川县| 会理县| 濮阳市| 外汇| 左权县| 布尔津县| 清苑县| 包头市| 建昌县| 通道| 襄汾县| 花莲市| 土默特右旗| 睢宁县| 德钦县| 晋州市| 宁阳县| 民丰县| 吉木乃县| 富民县| 呼图壁县| 平舆县| 项城市| 澎湖县| 岱山县| 怀化市| 临城县| 赤水市| 蒙阴县| 盘山县| 庆云县| 葫芦岛市| 炉霍县| 锡林郭勒盟| 大英县| 昭觉县| 沈丘县| 平利县| 成安县| 璧山县|