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

        ?

        LIBNODAVE在PLC上位機監(jiān)控軟件中的運用

        2014-03-21 13:16:30魏立新王洪慶高江曼
        儀表技術與傳感器 2014年7期
        關鍵詞:函數庫西門子字節(jié)

        魏立新,馮 曦,王洪慶,高江曼

        (1.燕山大學工業(yè)計算機控制工程河北省重點實驗室,河北秦皇島 066004 2.天津電氣傳動設計研究所,天津 300180)

        0 引言

        在實際運用中,上位機與西門子系列PLC之間的通訊方式,主要有以下4種:(1)用WinCC、InTouch等組態(tài)軟件編程實現(xiàn)通信連接;(2)用OPC Server軟件實現(xiàn)通信連接;(3)用自由口實現(xiàn)通信連接;(4)用PRODAVE或LIBNODAVE函數庫實現(xiàn)通信連接。方式1雖然操作簡單、效率高,但是成本投入高[1],并且此類軟件運行時十分占據上位機內存資源,對于僅需簡單實用功能的操作顯得過于復雜。方式2雖然現(xiàn)在被廣泛采用,但OPC在處理實時數據方面具有劣勢,并且由于其基于DCOM的技術使得OPC只能在Windows操作系統(tǒng)下使用[2]。方式3雖然靈活性好,但只適于小規(guī)模控制系統(tǒng),并且PLC中也需要編寫通信程序[3]。方式4通過調用PRODAVE或LIBNODAVE函數庫,運用高級編程語言,可以直接靈活地對PLC進行數據操作,提升了實時性。而LIBNODAVE優(yōu)勢在于其開源免費,并且包含了更多的應用函數,為開發(fā)降低了成本、提供了便捷、完善了功能。因此,文中采用LIBNODAVE函數庫來進行上位機監(jiān)控軟件的設計開發(fā)。

        1 LIBNODAVE簡介

        LIBNODAVE是一款可與西門子系列PLC進行通信的開源、免費的函數庫,遵循GNU庫公用許可證版本2及以上,可運行在Windows、Linux 及Unix 操作系統(tǒng)上。LIBNODAVE可以訪問的存儲區(qū)域有:位存儲區(qū)、數據塊、輸入/輸出映像區(qū)、定時器和計數器等。另外,LIBNODAVE 還可以讀取PLC程序中的功能塊[4]。

        參考文獻[4]對LIBNODAVE的使用做了比較詳細的例程說明,文中將其作為重要參考,在Windows操作系統(tǒng)下使用Visual Basic語言進行監(jiān)控軟件的設計開發(fā),將LIBNODAVE的使用具體化、實際化。

        2 上位機監(jiān)控軟件的設計與開發(fā)

        LIBNODAVE提供了PROFIBUS、MPI、以太網等不同通信方式的接口函數,而由于以太網具有傳輸速率高、傳輸距離遠、可靠性高、開放性好、擴展靈活、方便等優(yōu)點[5],文中選擇使用CP443以太網模塊進行以太網通訊。下面將對程序中關鍵功能的實現(xiàn)函數進行重點講解。

        2.1連接建立

        上位機與PLC之間連接建立的主要程序如下所示。

        ph=openSocket(102,IP_address)’打開102端口

        If (ph>0) Then

        di=daveNewInterface(ph,ph,“IF1”,0,122,2)

        ’建立新接口

        res=daveInitAdapter(di) ’初始化適配器

        If res=0 Then

        dc=daveNewConnection(di,2,Rack,Slot)

        ’建立新連接

        res=daveConnectPLC(dc)’連接PLC

        End If

        End If

        openSocket(ByVal port As Long,ByVal peer As String)函數中,由于西門子以太網中的ISO on TCP協(xié)議所使用的數據傳輸端口為102[6],所以port被設置為102,而peer則為PLC的以太網地址。

        daveNewInterface(ByVal fd1 As Long,ByVal fd2 As Long,ByVal name As String,ByVal localMPI As Long,ByVal protocol As Long,ByVal speed As Long)函數中,fd1、fd2和name設為默認值;由于是以太網通訊,所以localMPI設置為0;protocol表示協(xié)議類型常數,以太網對應的為122;speed表示速度常數,以太網對應的為2。

        daveNewConnection(ByVal di As Long,ByVal mpi As Long,ByVal Rack As Long,ByVal Slot As Long)函數中,當連接單個PLC時,mpi固定為2,而Rack為PLC機架號,Slot為PLC的CPU槽位號。

        2.2連接斷開

        上位機與PLC之間連接斷開的主要程序如下所示。

        If dc<>0 Then

        res=daveDisconnetPLC(dc) ’斷開PLC

        Call daveFree(dc)’釋放內存

        dc=0

        End If

        If di<>0 Then

        res=daveDisconnetAdapter(di) ’斷開適配器

        Call daveFree(di)’釋放內存

        di=0

        End If

        If ph<>0 Then

        res=closeSocket(ph)’關閉端口

        ph=0

        End If

        daveFree(ByVal item As Long)過程中,調用相應變量,對其釋放內存。

        closeSocket(ByVal fh As Long)函數中,調用ph這一返回變量,關閉數據傳輸端口102。

        2.3數據讀取

        實際情況中,幾乎所有數據都是從PLC的數據塊(DB)、位存儲區(qū)(Markers)、輸入映像區(qū)(Inputs)和輸出映像區(qū)(Outputs)中讀取,因而針對上述4個區(qū)域,開發(fā)讀取功能,并可通過BOOL、BYTE、INT、WORD、DINT、DWORD以及REAL#7種形式讀取。

        以DB讀取為例,BOOL、BYTE、WORD、REAL讀取形式的主要程序,如下所示。

        Case “BOOL”

        If daveReadBits(dc,&H84,DB_read(i),(start _

        address_read(i)*8+bit_read(i)),1,0)=0 Then

        read_text(i).Text=daveGetS8(dc)

        End If

        Case “BYTE”

        If daveReadBytes(dc,&H84,DB_read(i),(start _

        address_read(i),1,0)=0 Then

        read_text(i).Text=daveGetS8(dc)

        End If

        Case “WORD”

        If daveReadBytes(dc,&H84,DB_read(i),(start _

        address_read(i),2,0)=0 Then

        read_text(i).Text=Hex(daveGetS16(dc))

        End If

        Case “REAL”

        If daveReadBytes(dc,&H84,DB_read(i),(start _

        address_read(i),4,0)=0 Then

        read_text(i).Text=daveGetFloat(dc)

        End If

        daveReadBits(ByVal dc As Long,ByVal area As Long,ByVal areaNumber As Long,ByVal start As Long,ByVal numBytes As Long,ByVal buffer As Long)函數中,area為區(qū)域常數,DB對應的為&H84(Inputs對應&H81,Outputs對應&H82,Markers對應&H83);areaNumber為DB塊號(若為Inputs、Outputs以及Markers時,設置為0);start為數據起始地址;numBytes為讀取Byte的數目;buffer為數據緩沖區(qū),設置為0。該函數用來進行位的讀取操作。

        daveReadBytes(ByVal dc As Long,ByVal area As Long,ByVal areaNumber As Long,ByVal start As Long,ByVal numBytes As Long,ByVal buffer As Long)函數與daveReadBits基本相同,只是該函數是用來進行字節(jié)的讀取操作。

        函數daveGetS8獲取一個字節(jié)(BYTE型),daveGetS16獲取2個字節(jié)(INT型與WORD型),daveGetS32獲取4個字節(jié)(DINT型與DWORD型),daveGetFloat獲取實型量(REAL型)。

        2.4數據寫入

        文中設計數據向DB、Markers、Inputs和Outputs中寫入的功能,并可通過BOOL、BYTE、INT、WORD、DINT、DWORD以及REAL 7種形式寫入。

        以Markers寫入為例,BOOL、BYTE、WORD、REAL寫入形式的主要程序,如下所示。

        Case “BOOL”

        a1=CByte(write_text(i).Text)

        res=daveWriteBits(dc,&H83,0,(startaddress_

        write(i)*8+bit_write(i)),1,a1)

        Case “BYTE”

        a=davePut8(writebuffer(1),write_text(i).

        Text)

        res=daveWriteBytes(dc,&H83,0,(startaddress_

        write(i),1,writebuffer(1))

        Case “WORD”

        a=davePut16(writebuffer(1),HEX_to_DEC(write_text(i).Text))

        res=daveWriteBytes(dc,&H83,0,(startaddress_

        write(i),2,writebuffer(1))

        Case “REAL”

        a=davePutFloat(writebuffer(1),write_text(i).Text)

        res=daveWriteBytes(dc,&H83,0,(startaddress_

        write(i),4,writebuffer(1))

        daveWriteBits(ByVal dc As Long,ByVal area As Long,ByVal areaNumber As Long,ByVal start As Long,ByVal numBytes As Long,ByRef buffer As Byte)函數中,area為區(qū)域常數;areaNumber為DB塊號;start為數據起始地址;numBytes為寫入Byte的數目;buffer為數據緩沖區(qū),設置為一個Byte。該函數用來進行位的寫入操作。

        daveWriteBytes(ByVal dc As Long,ByVal area As Long,ByVal areaNumber As Long,ByVal start As Long,ByVal numBytes As Long,ByRef buffer As Byte)函數與daveWriteBits基本相同,只是該函數是用來進行字節(jié)的寫入操作。

        函數davePutS8放置一個字節(jié)(BYTE型),davePutS16放置2個字節(jié)(INT型與WORD型),davePutS32放置4個字節(jié)(DINT型與DWORD型),davePutFloat放置實型量(REAL型)。

        2.5實時曲線監(jiān)控

        使用Steema Software公司開發(fā)的圖表圖形組件TeeChart 2010來實現(xiàn)曲線監(jiān)控功能。TeeChart提供上百種2D和3D圖形風格、40余種數學和統(tǒng)計功能,加上無限制的軸和多種調色板組件可以選擇,以及20余種用于圖表操作的工具,將圖表制作與操作功能發(fā)揮得淋漓盡致,為程序設計人員提供了一個高效、直觀、節(jié)省時間的編程接口[7]。以下為該功能的主要程序。

        TeeCommander1.Chart=TChart1

        ’啟用TeeCommander功能

        TeeListBox1.Chart=TChart1

        ’啟用TeeListBox功能

        TChart1.Axis.Bottom.SetMinMax Now,DateAdd

        (“s”,20,Now) ’設置X軸時間范圍

        With TChart1.Axis.Bottom

        .Labels.DateTimeFormat=”yy-mm-dd HH:MM:SS”

        ’X軸格式顯示為年月日 時分秒

        .Labels.MultiLine=True ’標簽分行顯示

        End With

        With TChart1.Series(Index)

        .AddXY Now,mainform.read_text(Index+1),””,

        clTeeColor’按X軸時間,Y軸數值繪制折線圖

        End With

        監(jiān)控系統(tǒng)對PLC中以30 ms為周期產生隨機數的地址進行讀取測試,如圖1所示。

        圖1 實時曲線界面

        通過放大曲線圖,可以更加直觀地觀察每s數據的變化情況,并可以將曲線圖存入相連的數據庫中,供日后查詢歷史曲線使用。

        3 運行效果

        如圖2所示,文中所設計開發(fā)的監(jiān)控系統(tǒng),已在某冷軋廠投入使用,目前運行穩(wěn)定。該系統(tǒng)投入使用之后,工程師在無需打開任何西門子相關軟件的情況下,通過以太網通訊,輸入PLC地址,建立好連接后,雙擊變量名稱進入數據讀取或數據寫入界面,輸入具體地址與變量類型,即可對PLC中指定地址的數據進行讀寫操作。由于系統(tǒng)是與數據庫相連,從而可將PLC設置、變量名稱、變量地址等保存在數據庫中,之后打開軟件時載入所保存的配置,方便直接使用。

        通過系統(tǒng)中的曲線監(jiān)控,工作人員還可以實時直觀地觀察數據動態(tài),并載入所保存的歷史數據曲線,進行分析比較,對生產管理起到一定的輔助作用。

        圖2 監(jiān)控系統(tǒng)界面

        4 結束語

        文中將LIBNODAVE以太網通訊技術與S7-400系列PLC兩者有機地結合在一起,開發(fā)了實時高速、擴展性強、操作方便的監(jiān)控系統(tǒng),并在實際中得到了很好地應用。鑒于LIBNODAVE的免費、開源、穩(wěn)定、靈活等特點,LIBNODAVE完全可以取代PRODAVE來開發(fā)基于西門子PLC的監(jiān)控系統(tǒng)軟件,從而降低成本,并擺脫西門子相關產品的局限性。文中選取了國內研究較少的LIBNODAVE作為研究對象,其研究成果可為鋼鐵行業(yè)其他企業(yè)生產現(xiàn)場的升級改造和建設提供有益合理的借鑒,而對其他領域實現(xiàn)監(jiān)控系統(tǒng)的構建也具有一定的參考價值。

        參考文獻:

        [1]趙軍,時良平,黃春陽.基于Prodave技術的西門子PLC監(jiān)控調試軟件開發(fā).自動化應用,2011(10):26-28.

        [2]任思成,王書鶴,亓克貴.新一代工業(yè)過程控制軟件接口標準—OPC技術.儀器儀表學報,2002,23(3):265-267.

        [3]沈世斌.基于PLC自由口通信的應用.儀表技術與傳感器,2004(12):26-28.

        [4]周廣穎,張金金,閆?。贚IBNODAVE的上位機與西門子PLC的通信.微計算機信息,2010,26(11-1):28-30.

        [5]張曉麗,馬俊,劉軼斐.煉鋼廠實時數據通信系統(tǒng)的研究與開發(fā).儀器儀表學報,2005,26(8):553-556.

        [6]MARSHALL T ROSE,DWIGHT E.Cass.ISO Transport Service on top of the TCP Version:3.May 1987.

        [7]羊昌燕,翟正軍,陸艷洪.總線數據采集系統(tǒng)事后分析處理軟件設計與實現(xiàn).測控技術,2012,31(11):84-87.

        猜你喜歡
        函數庫西門子字節(jié)
        No.8 字節(jié)跳動將推出獨立出口電商APP
        用于優(yōu)化雷達信號處理的VSIPL函數庫
        基于Python的開源GIS應用開發(fā)
        Scratch求最值和平均值
        電腦報(2020年34期)2020-09-12 14:03:42
        No.10 “字節(jié)跳動手機”要來了?
        基于BB60C的IQ數據采集與存儲系統(tǒng)設計
        西門子重型燃機出海
        能源(2017年7期)2018-01-19 05:05:05
        簡談MC7字節(jié)碼
        西門子亮相CIIF201
        西門子 分布式I/O Simatic ET 200AL
        国产精品 亚洲 无码 在线| 美女草逼视频免费播放| 亚洲免费在线视频播放| 十八禁无遮挡99精品国产| 午夜福利麻豆国产精品 | 伊人亚洲综合网色AV另类| 最近中文字幕一区二区三区| 久久久精品国产亚洲av网深田| 久久久精品国产sm调教网站 | 亚洲成色在线综合网站| 日日躁欧美老妇| 国产视频一区二区三区观看 | 中文人妻无码一区二区三区在线| 麻豆国产乱人伦精品一区二区| 日本精品啪啪一区二区| 午夜久久久久久禁播电影| 亚洲伊人成综合网| 久热香蕉精品视频在线播放| 亚洲精品久久麻豆蜜桃| 四虎影在永久在线观看| 欧美最猛黑人xxxx黑人表情 | 国产精品久久久久久人妻精品| 亚洲AV秘 片一区二区三区| 亚洲日本高清一区二区| 青青草国产精品一区二区| 射精情感曰妓女色视频| 日韩精品视频免费福利在线观看| 国产91色综合久久高清| 4hu四虎永久在线观看 | 男男性恋免费视频网站| 欧美三级超在线视频| 亚洲av熟女少妇一区二区三区 | 久草视频在线播放免费| 中文字幕 亚洲精品 第1页| 欧美日韩亚洲国产精品| 官网A级毛片| 91精品久久久老熟女91精品| 亚洲av无码久久精品狠狠爱浪潮 | 亚洲电影中文字幕| 亚洲精品一区二在线观看| 潮喷失禁大喷水aⅴ无码|