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

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

2017-11-01 05:19:34祝廣場余小敏
化工自動化及儀表 2017年4期
關(guān)鍵詞:設(shè)置

祝廣場 余小敏

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

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

祝廣場 余小敏

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

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

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

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

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

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

1 Prodave簡介

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

a. 支持PC上的標準以太網(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è)無需編程,只需在PC中編寫程序,調(diào)用Prodave的DLL即可,支持VB、VC及DEPHI等高級語言。

2 Prodave函數(shù)

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

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

讀取PLC數(shù)據(jù)函數(shù)。函數(shù)db_read_ex6()和field_read_ex6()分別用來讀取PLC中的任意存儲區(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()分別用來讀取和寫入PLC中的某個位變量,mb_bittest_ex6()的函數(shù)原型為int mb_bittest_ex6 (unsigned short MbNr, unsigned short BitNr, int * pValue),其中MbNr為字節(jié)號,BitNr為位號,pValue為狀態(tài)(“1”表示TRUE,“0”表示FALSE)。兩個函數(shù)的參數(shù)意義相同。

3 PLC和PC通信實例

3.1 動態(tài)鏈接庫及其特點

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

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

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

3.2 Visual Studio2008對Prodave6.0 DLL文件的引用

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

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

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

然后對函數(shù)進行聲明:

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

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

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

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

3.4 PLC和PC之間的通信流程

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

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

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

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

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

上位機程序框架如圖2所示。

圖2 PC和PLC通信程序框架

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

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

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

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

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

采用Prodave進行PC和PLC通信的流程如圖3所示。

圖3 PC和PLC的通信流程

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

short ConNr = 6;//定義鏈接號,0~63可選;

string AccessPoint = "S7ONLINE"; // 默認訪問點為“S7ONLINE”;

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

ConTable.SlotNr = 2; //PLC的插槽號;

ConTable.RackNr = 0; //PLC的機架號;

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ù)進行數(shù)據(jù)傳輸。如果函數(shù)執(zhí)行不成功,可以通過GetErrorMsg()函數(shù)來確定返回值所表示的意思。

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

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

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

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

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

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

byte[] pReadBuffer = new byte[32];//開辟存儲空間;

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

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

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

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

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

5 結(jié)束語

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

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

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

[3] 唐東明,聶詩良.PRODAVE在S7-300PLC監(jiān)控系統(tǒng)中的應(yīng)用[J].可編程控制器與工廠自動化, 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)

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

猜你喜歡
設(shè)置
中隊崗位該如何設(shè)置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結(jié)構(gòu)及設(shè)置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫(yī)學專業(yè)與專科設(shè)置對比分析及啟示
特殊場景下列控等級轉(zhuǎn)換的設(shè)置方案
7招教你手動設(shè)置參數(shù)
動車段(所)股道有效長設(shè)置研究
我國中小學將設(shè)置人工智能相關(guān)課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設(shè)置說明
中俄臨床醫(yī)學專業(yè)課程設(shè)置的比較與思考
主站蜘蛛池模板: 777国产精品永久免费观看| 人妻无码中文字幕一区二区三区| a在线观看免费| 国产精品任我爽爆在线播放6080| 中文字幕人成人乱码亚洲电影| 亚洲国产精品久久久久秋霞影院| 国产成人精品18| 国产国拍精品视频免费看| 有专无码视频| 国产第一页屁屁影院| 999国内精品久久免费视频| 亚洲欧洲日韩国产综合在线二区| 亚洲日韩精品伊甸| 欧美一级99在线观看国产| 在线观看国产小视频| 国产微拍一区二区三区四区| 国产精品视频导航| 亚洲AⅤ无码国产精品| 麻豆精品在线播放| 国产麻豆精品在线观看| 欧美区一区二区三| 日韩久草视频| 亚洲欧美日韩中文字幕在线| 久久99精品久久久大学生| 91成人在线观看视频| 亚洲AⅤ综合在线欧美一区| 中文字幕人妻av一区二区| 伊人激情综合| 本亚洲精品网站| 伊人激情综合网| 女人av社区男人的天堂| 欧美午夜在线观看| 中文字幕 欧美日韩| 凹凸国产熟女精品视频| 国产永久免费视频m3u8| 狠狠色成人综合首页| 国模视频一区二区| 亚洲精品视频免费| 免费观看国产小粉嫩喷水| 在线国产资源| 一级毛片免费高清视频| 久久成人18免费| 亚洲男人的天堂久久香蕉网| 国产白浆在线观看| 久久精品无码中文字幕| 99ri国产在线| 欧美一级夜夜爽www| 欧美日韩成人| 一级爆乳无码av| 成人免费一级片| 成人在线观看一区| 经典三级久久| 亚洲精品国产日韩无码AV永久免费网| 欧美成人精品一区二区 | 天堂网国产| 亚洲三级a| 91精品专区国产盗摄| 欧美三級片黃色三級片黃色1| 国产人前露出系列视频| 国产玖玖玖精品视频| 国产午夜一级毛片| 一级全黄毛片| 亚洲精品视频免费看| 亚洲成年网站在线观看| 国产精品思思热在线| 91在线高清视频| 制服丝袜在线视频香蕉| 88av在线| 国产精品网址你懂的| 久久黄色免费电影| 国产v精品成人免费视频71pao| 爱做久久久久久| 99热这里只有免费国产精品 | 亚洲天堂网2014| 日韩精品无码不卡无码| 亚洲欧洲国产成人综合不卡| 亚洲三级影院| 欧美成人午夜影院| 国产激爽大片在线播放| 亚洲人成影院午夜网站| 色婷婷亚洲十月十月色天| 国产在线一区视频|