• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Prodave的西門子PLC與PC以太網(wǎng)通信研究

      2017-11-01 05:19:34祝廣場(chǎng)余小敏
      化工自動(dòng)化及儀表 2017年4期
      關(guān)鍵詞:西門子調(diào)用以太網(wǎng)

      祝廣場(chǎng) 余小敏

      (華電電力科學(xué)研究院中南分院)

      基于Prodave的西門子PLC與PC以太網(wǎng)通信研究

      祝廣場(chǎng) 余小敏

      (華電電力科學(xué)研究院中南分院)

      提出了基于Prodave工具包的西門子PLC與PC的通信方法,該方法不需要在PLC側(cè)進(jìn)行編程,只需要在PC側(cè)采用高級(jí)語(yǔ)言調(diào)用若干函數(shù)即可,成本較低且通信可靠。

      以太網(wǎng)通信 西門子PLC Prodave

      S7-300 PLC擁有高性能的處理器、豐富的IO和通信模塊,在工業(yè)控制中應(yīng)用廣泛,但它的人機(jī)接口功能較弱。如果將PLC與PC通過(guò)通信連接起來(lái),用PC作為上位機(jī),通過(guò)對(duì)PLC的數(shù)據(jù)存儲(chǔ)器中各區(qū)域進(jìn)行讀取與寫入,實(shí)現(xiàn)系統(tǒng)的監(jiān)控、人機(jī)接口通信等功能,就能夠組成功能強(qiáng)、可靠性高、成本低的控制系統(tǒng)[1]。

      目前,由于西門子公司沒有公開通信協(xié)議,上位機(jī)程序設(shè)計(jì)主要有兩種方式:采用專門的組態(tài)軟件(如WinCC、組態(tài)王等)開發(fā)或是通過(guò)編程語(yǔ)言自行開發(fā)。第1種方法操作簡(jiǎn)單、效率高,對(duì)開發(fā)人員的要求相對(duì)較低,但成本較高;第2種方法相對(duì)復(fù)雜,要求開發(fā)者具有較高的編程水平,開發(fā)周期長(zhǎng),但與第1種方法相比具有靈活、成本低的優(yōu)點(diǎn)[2]。

      Prodave(Proces Data Traffic)是西門子公司開發(fā)的S7系列PLC和PC通信的工具包,它為PLC和PC通信提供了一種橋梁,既避免了組態(tài)軟件的高昂成本,又不要求開發(fā)人員有很高的編程水平。筆者通過(guò)對(duì)Prodave進(jìn)行研究,以S7315-2PN/DP PLC為下位機(jī),采用VS2008編程工具,開發(fā)了一種PLC與PC機(jī)之間的以太網(wǎng)通信軟件。

      1 Prodave簡(jiǎn)介

      Prodave是用于PC與S7系列PLC間數(shù)據(jù)通信的工具軟件包[3]。Prodave提供了大量基于Windows操作系統(tǒng)的DLL函數(shù),以解決PLC與PC之間數(shù)據(jù)交換和處理的問題,可以在高級(jí)語(yǔ)言編程環(huán)境中調(diào)用這些函數(shù)來(lái)建立或斷開通信連接、讀寫CPU的系統(tǒng)存儲(chǔ)器。它具有以下特點(diǎn):

      a. 支持PC上的標(biāo)準(zhǔn)以太網(wǎng)卡和Simatic S7的以太網(wǎng)口(CPU31XX-PN、CP31X-PN、CP343和CP443);

      b. 能讀寫PLC中DB塊和內(nèi)存的數(shù)據(jù);

      c. 支持S7-200 PLC、S7-300 PLC和S7-400 PLC;

      d. PLC側(cè)無(wú)需編程,只需在PC中編寫程序,調(diào)用Prodave的DLL即可,支持VB、VC及DEPHI等高級(jí)語(yǔ)言。

      2 Prodave函數(shù)

      連接PLC函數(shù)LoadConnection_ex6()用于初始化適配器,檢查是否裝載了驅(qū)動(dòng),并將選擇的通信接口激活。可以用來(lái)通過(guò)MPI或IP地址建立對(duì)PLC的連接。函數(shù)原型為L(zhǎng)oadConnection_ex6(int ConNr, char* pAccessPoint, int ConTableLen, CON_TABLE_TYPE * pConTable)。ConNr是連接PLC的序號(hào)(0~63),最多可以連接64個(gè);pAccessPoint為訪問點(diǎn),“S7ONLINE”表示MPI方式,“1”表示TCP/IP方式,“2”表示MAC方式;ConTableLen為地址表的長(zhǎng)度;pConTable為地址表,用于存放PLC的地址。

      激活PLC函數(shù)SetActiveConnection_ex6()用于激活PLC和PC之間建立的連接。函數(shù)原型為int SetActiveConnection_ex6(int ConNr),ConNr是連接序號(hào)。

      讀取PLC數(shù)據(jù)函數(shù)。函數(shù)db_read_ex6()和field_read_ex6()分別用來(lái)讀取PLC中的任意存儲(chǔ)區(qū)數(shù)據(jù)和DB數(shù)據(jù),可采用字、雙字的方式,讀取的數(shù)據(jù)放在PC的數(shù)據(jù)緩沖區(qū)。field_read_ex6()的函數(shù)原型為int field_read_ex6 (char FieldType, unsigned short BlkNr, unsigned short StartNr, unsigned long Amount, unsigned long BufLen, unsigned char * pBuffer, unsigned long * pDatLen),其參數(shù)見表1,db_read_ex6()與它類似。

      表1 讀取PLC數(shù)據(jù)函數(shù)參數(shù)

      寫數(shù)據(jù)至PLC。函數(shù)field_write_ex6()和db_write_ex6()用于向PLC中寫入數(shù)據(jù),其參數(shù)和讀取PLC數(shù)據(jù)函數(shù)類似。

      位狀態(tài)讀取和寫入函數(shù)。函數(shù)mb_bittest_ex6()和mb_setbit_ex6()分別用來(lái)讀取和寫入PLC中的某個(gè)位變量,mb_bittest_ex6()的函數(shù)原型為int mb_bittest_ex6 (unsigned short MbNr, unsigned short BitNr, int * pValue),其中MbNr為字節(jié)號(hào),BitNr為位號(hào),pValue為狀態(tài)(“1”表示TRUE,“0”表示FALSE)。兩個(gè)函數(shù)的參數(shù)意義相同。

      3 PLC和PC通信實(shí)例

      3.1 動(dòng)態(tài)鏈接庫(kù)及其特點(diǎn)

      動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library, DLL)是微軟公司在微軟視窗操作系統(tǒng)中實(shí)現(xiàn)共享函數(shù)庫(kù)概念的一種方式。這些庫(kù)函數(shù)的擴(kuò)展名是.DLL、.OCX(包含ActiveX控制的庫(kù))或者.DRV(舊式的系統(tǒng)驅(qū)動(dòng)程序)。

      動(dòng)態(tài)鏈接庫(kù)是不能直接執(zhí)行的,也不能接收消息,它只是一個(gè)獨(dú)立的文件,它提供了一種方法使進(jìn)程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個(gè)DLL中,該DLL包含一個(gè)或多個(gè)已被編譯、鏈接并與使用它們的進(jìn)程分開存儲(chǔ)的函數(shù)。DLL還有助于共享數(shù)據(jù)和資源。多個(gè)應(yīng)用程序可同時(shí)訪問內(nèi)存中單個(gè)DLL副本的內(nèi)容。

      動(dòng)態(tài)鏈接庫(kù)在電腦中可以更容易地將更新應(yīng)用于各個(gè)模塊,而不會(huì)影響該程序的其他部分。例如,一個(gè)大型的軟件,如果把整個(gè)數(shù)百M(fèi)B甚至數(shù)GB的程序代碼都放在一個(gè)應(yīng)用程序里,日后的修改工作將會(huì)十分費(fèi)時(shí),而如果把不同功能的代碼分別放在數(shù)個(gè)動(dòng)態(tài)鏈接庫(kù)中,無(wú)需重新生成或安裝整個(gè)程序就可以應(yīng)用更新,更有利于軟件的模塊化設(shè)計(jì)。

      3.2 Visual Studio2008對(duì)Prodave6.0 DLL文件的引用

      在VS2008中調(diào)用DLL時(shí),需要添加如下代碼:

      using System.Runtime.InteropServices; //用于調(diào)用動(dòng)態(tài)庫(kù)的接口;

      在調(diào)用DLL中的某個(gè)函數(shù)時(shí),首先必須要有一個(gè)聲明,使用的是DllImport關(guān)鍵字:[DllImport("Prodave6.dll")],代碼中DllImport關(guān)鍵字的作用是告訴編譯器入口點(diǎn)在哪里,并將打包函數(shù)捆綁在類Prodave中。

      然后對(duì)函數(shù)進(jìn)行聲明:

      public extern static int LoadConnection_ex6(int ConNr, string pAccessPoint, int ConTableLen, ref CON_TABLE_TYPE pConTable);// 連接PLC操作;

      進(jìn)行以上操作之后,便可以在程序中使用DLL中的函數(shù)了。

      3.3 西門子STEP7對(duì)PLC的設(shè)置

      在進(jìn)行通信之前,需要對(duì)西門子的PG/PC接口進(jìn)行設(shè)置。在開始菜單中,打開“設(shè)置PG/PC接口”(圖1),在選項(xiàng)中選擇TCP/IP所對(duì)應(yīng)的網(wǎng)卡,確定即可。

      3.4 PLC和PC之間的通信流程

      在PLC和PC進(jìn)行通信之前,需要對(duì)通信參數(shù)進(jìn)行設(shè)置,筆者采用以太網(wǎng)通信方式,故在監(jiān)控界面中輸入PLC的IP地址,之后才能建立連接。建立連接之后,系統(tǒng)啟動(dòng)定時(shí)器和數(shù)據(jù)庫(kù),定時(shí)器以一定間隔執(zhí)行讀寫函數(shù)和數(shù)據(jù)處理函數(shù),并在畫面中實(shí)時(shí)顯示;數(shù)據(jù)庫(kù)對(duì)需要記錄的數(shù)據(jù)及時(shí)保存。定時(shí)器函數(shù)的執(zhí)行周期可以在畫面中設(shè)置。

      圖1 西門子STEP7中對(duì)PLC的設(shè)置

      在通信過(guò)程中,系統(tǒng)每執(zhí)行一次函數(shù),都會(huì)返回一個(gè)代碼,軟件通過(guò)對(duì)代碼進(jìn)行解析,判斷函數(shù)是否被正確執(zhí)行,如果錯(cuò)誤,則會(huì)觸發(fā)報(bào)警提示,并中斷此函數(shù)的執(zhí)行。

      4 PC和PLC的通信程序設(shè)計(jì)

      4.1 PC和PLC通信程序要實(shí)現(xiàn)的功能

      上位機(jī)程序框架如圖2所示。

      圖2 PC和PLC通信程序框架

      定時(shí)器周期執(zhí)行函數(shù)。本系統(tǒng)中,定時(shí)器更新周期設(shè)定為100ms和500ms,其中,數(shù)據(jù)讀寫函數(shù)周期為100ms,以適應(yīng)工業(yè)控制中快速變化的參數(shù);數(shù)據(jù)庫(kù)記錄函數(shù)和狀態(tài)信息顯示函數(shù)周期為500ms。

      畫面設(shè)置、操作和顯示。本部分主要實(shí)現(xiàn)人機(jī)接口功能。參數(shù)設(shè)置主要是通信方式和通信參數(shù)的選擇,分為TCP/IP、MPI和MAC共3種通信方式,筆者選用TCP/IP方式,則需把PLC的IP地址設(shè)置到畫面中,在設(shè)置過(guò)程中,必須使PLC和PC的IP地址在同一網(wǎng)段。實(shí)時(shí)趨勢(shì)顯示系統(tǒng)中主要設(shè)備參數(shù)的實(shí)時(shí)數(shù)據(jù),采TeeChart控件實(shí)現(xiàn),可以同時(shí)顯示8條實(shí)時(shí)曲線。報(bào)警光字牌顯示系統(tǒng)中重要的報(bào)警信息,當(dāng)報(bào)警觸發(fā)時(shí),以閃爍方式做出提醒。操作記錄顯示模塊記錄軟件運(yùn)行中,畫面中的主要操作,包括操作人、操作時(shí)間及操作事件等信息。模擬鍵盤為軟件的輸入提供了操作接口。

      PLC信息。主要包括PLC內(nèi)部的狀態(tài)信息、數(shù)據(jù)塊信息及診斷緩沖區(qū)信息等。

      輔助功能。主要包括程序?qū)rodave動(dòng)態(tài)鏈接庫(kù)的調(diào)用和數(shù)據(jù)處理函數(shù)。

      4.2 PC和PLC通信程序的實(shí)現(xiàn)

      采用Prodave進(jìn)行PC和PLC通信的流程如圖3所示。

      圖3 PC和PLC的通信流程

      由于通信過(guò)程中PLC側(cè)不需要編寫程序,因此只需在PC側(cè)進(jìn)行編程即可。建立并激活鏈接的程序代碼如下:

      short ConNr = 6;//定義鏈接號(hào),0~63可選;

      string AccessPoint = "S7ONLINE"; // 默認(rèn)訪問點(diǎn)為“S7ONLINE”;

      ConTable.AdrType = 2; //PC和PLC的通信方式,此處選擇為TCP/IP;

      ConTable.SlotNr = 2; //PLC的插槽號(hào);

      ConTable.RackNr = 0; //PLC的機(jī)架號(hào);

      RetValue_ConnectPlc=ProdaveTest.Prodave.LoadConnection_ex6(ConNr, AccessPoint, ConTableLen, ref ConTable);//連接PLC;

      以上為PC連接PLC的函數(shù)代碼,RetValue_ConnectPlc為函數(shù)的返回值,若為“0”表示執(zhí)行成功。連接成功之后,需要將此鏈接激活,代碼為:

      RetValue_ActivePLC=ProdaveTest.Prodave.SetActiveConnection_ex6(UConNr);//激活鏈接;

      若激活成功,則可繼續(xù)進(jìn)行數(shù)據(jù)傳輸。如果函數(shù)執(zhí)行不成功,可以通過(guò)GetErrorMsg()函數(shù)來(lái)確定返回值所表示的意思。

      設(shè)計(jì)中,PLC中的數(shù)據(jù)存放在DB1數(shù)據(jù)塊中,以下程序代碼讀取的是DB1中從地址0開始的8個(gè)浮點(diǎn)型數(shù)據(jù):

      UInt16 BlkNr = 1;//PLC中DB數(shù)據(jù)庫(kù)塊的序號(hào);

      Prodave.DatType DType = Prodave.DatType.BYTE;//以字節(jié)的形式讀取數(shù)據(jù);

      UInt16 StartNr = 0;//DB數(shù)據(jù)塊中要讀取數(shù)據(jù)的起始地址號(hào);

      UInt32 pAmount = 32;//讀取數(shù)據(jù)的數(shù)量;

      UInt32 BufLen = 32;//定義緩沖區(qū)長(zhǎng)度;

      byte[] pReadBuffer = new byte[32];//開辟存儲(chǔ)空間;

      UInt32 pDatLen = 0;//初始化緩沖區(qū);

      RetValue_ReadDB=ProdaveTest.Prodave.db_read_ex6(BlkNr, DType, StartNr, ref pAmount, BufLen, pReadBuffer, ref pDatLen);//讀取函數(shù);

      讀取PLC中M存儲(chǔ)區(qū)數(shù)據(jù)的代碼為:

      RetValue_ReadMzone=ProdaveTest.Prodave.field_read_ex6(FType, BlkNr, StartNr, pAmount, BufLen, pReadBuffer, ref pDatLen);//讀取M存儲(chǔ)區(qū)數(shù)據(jù);

      其參數(shù)和讀取DB數(shù)據(jù)的函數(shù)類似。值得注意的是,在PLC系統(tǒng)中,很多設(shè)備的狀態(tài)變量、報(bào)警變量等都是以BOOL型數(shù)據(jù)存在的,在Prodave工具包中,有專門讀寫PLC中某一位的函數(shù),但是,如果狀態(tài)變量較多,需要反復(fù)調(diào)用函數(shù),效率太低,使用field_read_ex6()函數(shù)可以解決這一難題。在PLC中定義變量的時(shí)候,可以定義一段連續(xù)的存儲(chǔ)空間用來(lái)存放系統(tǒng)中的狀態(tài)變量,再采用field_read_ex6()函數(shù)以字節(jié)的形式讀取,進(jìn)行簡(jiǎn)單的邏輯運(yùn)算之后即可得到一個(gè)字節(jié)中8個(gè)位變量的信息。

      5 結(jié)束語(yǔ)

      通過(guò)對(duì)西門子Prodave工具包的研究,提出了西門子PLC和PC的以太網(wǎng)通信方法。Visual Studio2008編程方便、性能穩(wěn)定、可靠性高,通過(guò)它對(duì)Prodave動(dòng)態(tài)鏈接庫(kù)的調(diào)用,實(shí)現(xiàn)了PC對(duì)PLC的讀寫操作。編寫的以太網(wǎng)通信程序界面友好、人機(jī)交互方便、數(shù)據(jù)庫(kù)功能較強(qiáng)。筆者提出的通信方法,對(duì)西門子S7-200 PLC、S7-300 PLC和S7-400 PLC具有通用性,可以推廣應(yīng)用。

      [1] 馬健,韓曉華,黃旭平,等.PC上位機(jī)與S7-300系列PLC進(jìn)行通訊的研究[J].制造技術(shù)與機(jī)床,2011,(3):169~172.

      [2] 趙軍,時(shí)良平,黃春陽(yáng).基于Prodave技術(shù)的西門子PLC監(jiān)控調(diào)試軟件開發(fā)[J].自動(dòng)化應(yīng)用,2011,(10):26~28.

      [3] 唐東明,聶詩(shī)良.PRODAVE在S7-300PLC監(jiān)控系統(tǒng)中的應(yīng)用[J].可編程控制器與工廠自動(dòng)化, 2007,(8):41~42.

      TheStudyonEthernetCommunicationbetweenSiemensPLCandPCBasedonProdave

      ZHU Guang-chang, YU Xiao-min
      (ZhongnanBranch,HuadianElectricPowerResearchInstitute)

      The Prodave toolkit-based communication between Siemens PLC and PC was proposed, which asks for no programming at PLC and only adopts high-level language to call some functions at PC. This communication method costs lower and has high reliability.

      Ethernet communication, Siemens PLC, Prodave

      TH862+.7

      B

      1000-3932(2017)04-0397-04

      2016-10-10,

      2016-10-31)

      祝廣場(chǎng)(1984-),工程師,從事火電廠熱工自動(dòng)化控制和保護(hù)工作,14815197@qq.com。

      猜你喜歡
      西門子調(diào)用以太網(wǎng)
      基于1500以太網(wǎng)養(yǎng)豬場(chǎng)的智能飼喂控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      西門子重型燃機(jī)出海
      能源(2017年7期)2018-01-19 05:05:05
      談實(shí)時(shí)以太網(wǎng)EtherCAT技術(shù)在變電站自動(dòng)化中的應(yīng)用
      電子制作(2017年24期)2017-02-02 07:14:44
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      一種90W高功率以太網(wǎng)供電系統(tǒng)的設(shè)計(jì)
      西門子亮相CIIF201
      淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應(yīng)用
      西門子 分布式I/O Simatic ET 200AL
      手机| 靖边县| 常熟市| 桐城市| 永善县| 廉江市| 陈巴尔虎旗| 香港 | 黎川县| 河间市| 乌苏市| 菏泽市| 鸡东县| 南和县| 古交市| 安泽县| 齐齐哈尔市| 五莲县| 原平市| 长海县| 安达市| 东丰县| 长兴县| 穆棱市| 阿拉善右旗| 柳州市| 定安县| 舒兰市| 塔城市| 华容县| 出国| 浠水县| 榕江县| 册亨县| 金门县| 乌兰县| 琼结县| 新巴尔虎左旗| 深泽县| 磴口县| 柘城县|