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

基于Prodave的西門子PLC與PC以太網通信研究

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

祝廣場 余小敏

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

基于Prodave的西門子PLC與PC以太網通信研究

祝廣場 余小敏

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

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

以太網通信 西門子PLC Prodave

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

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

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

1 Prodave簡介

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

a. 支持PC上的標準以太網卡和Simatic S7的以太網口(CPU31XX-PN、CP31X-PN、CP343和CP443);

b. 能讀寫PLC中DB塊和內存的數據;

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

d. PLC側無需編程,只需在PC中編寫程序,調用Prodave的DLL即可,支持VB、VC及DEPHI等高級語言。

2 Prodave函數

連接PLC函數LoadConnection_ex6()用于初始化適配器,檢查是否裝載了驅動,并將選擇的通信接口激活。可以用來通過MPI或IP地址建立對PLC的連接。函數原型為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函數SetActiveConnection_ex6()用于激活PLC和PC之間建立的連接。函數原型為int SetActiveConnection_ex6(int ConNr),ConNr是連接序號。

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

表1 讀取PLC數據函數參數

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

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

3 PLC和PC通信實例

3.1 動態鏈接庫及其特點

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

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

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

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

在VS2008中調用DLL時,需要添加如下代碼:

using System.Runtime.InteropServices; //用于調用動態庫的接口;

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

然后對函數進行聲明:

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

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

3.3 西門子STEP7對PLC的設置

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

3.4 PLC和PC之間的通信流程

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

圖1 西門子STEP7中對PLC的設置

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

4 PC和PLC的通信程序設計

4.1 PC和PLC通信程序要實現的功能

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

圖2 PC和PLC通信程序框架

定時器周期執行函數。本系統中,定時器更新周期設定為100ms和500ms,其中,數據讀寫函數周期為100ms,以適應工業控制中快速變化的參數;數據庫記錄函數和狀態信息顯示函數周期為500ms。

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

PLC信息。主要包括PLC內部的狀態信息、數據塊信息及診斷緩沖區信息等。

輔助功能。主要包括程序對Prodave動態鏈接庫的調用和數據處理函數。

4.2 PC和PLC通信程序的實現

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

圖3 PC和PLC的通信流程

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

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的函數代碼,RetValue_ConnectPlc為函數的返回值,若為“0”表示執行成功。連接成功之后,需要將此鏈接激活,代碼為:

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

若激活成功,則可繼續進行數據傳輸。如果函數執行不成功,可以通過GetErrorMsg()函數來確定返回值所表示的意思。

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

UInt16 BlkNr = 1;//PLC中DB數據庫塊的序號;

Prodave.DatType DType = Prodave.DatType.BYTE;//以字節的形式讀取數據;

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

UInt32 pAmount = 32;//讀取數據的數量;

UInt32 BufLen = 32;//定義緩沖區長度;

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

UInt32 pDatLen = 0;//初始化緩沖區;

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

讀取PLC中M存儲區數據的代碼為:

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

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

5 結束語

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

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

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

[3] 唐東明,聶詩良.PRODAVE在S7-300PLC監控系統中的應用[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。

猜你喜歡
設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結構及設置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫學專業與專科設置對比分析及啟示
特殊場景下列控等級轉換的設置方案
7招教你手動設置參數
動車段(所)股道有效長設置研究
我國中小學將設置人工智能相關課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 欧美成人国产| 国产亚洲精久久久久久无码AV| 国产在线一区二区视频| 一区二区三区四区精品视频| 日韩福利在线观看| 特级毛片8级毛片免费观看| 无码AV日韩一二三区| 国产精品一区在线麻豆| 亚洲国内精品自在自线官| 久草视频中文| 色吊丝av中文字幕| 国语少妇高潮| 青青操国产| 亚洲午夜片| 精品三级在线| 伊人丁香五月天久久综合| 日韩天堂在线观看| 久久夜色撩人精品国产| 亚洲黄色网站视频| 国产精品自在自线免费观看| 国产一区成人| 亚洲有码在线播放| 国产91麻豆免费观看| 国产微拍一区| 国产成年无码AⅤ片在线| 福利在线一区| 精品国产一区91在线| 国产内射一区亚洲| 热99精品视频| 成人夜夜嗨| 亚洲综合经典在线一区二区| 色久综合在线| 亚洲熟妇AV日韩熟妇在线| 69av在线| 91系列在线观看| 亚洲精品不卡午夜精品| 亚洲一级毛片在线播放| 91亚洲精品第一| 日韩欧美中文字幕在线韩免费| 一本视频精品中文字幕| 久草热视频在线| 日韩精品无码免费一区二区三区 | 国产哺乳奶水91在线播放| 69视频国产| 狠狠ⅴ日韩v欧美v天堂| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲第一黄片大全| 最新国产在线| 喷潮白浆直流在线播放| 亚洲国产成人久久精品软件| 国产精品久久久久久久伊一| 人妻少妇乱子伦精品无码专区毛片| 22sihu国产精品视频影视资讯| 国产91精品久久| 欧美日韩免费观看| 国产成人综合在线观看| 女人18毛片一级毛片在线 | 日本五区在线不卡精品| 91精品视频播放| 91免费国产在线观看尤物| 天堂va亚洲va欧美va国产| 99免费视频观看| 欧美日韩91| 欧美精品亚洲日韩a| 亚洲妓女综合网995久久| 亚洲另类第一页| 老熟妇喷水一区二区三区| 免费看美女毛片| AⅤ色综合久久天堂AV色综合| 国产欧美性爱网| a亚洲天堂| 国产精品冒白浆免费视频| 久久精品亚洲专区| 97久久人人超碰国产精品| 亚洲精品中文字幕无乱码| 欧美成a人片在线观看| 国产在线98福利播放视频免费| 福利在线不卡一区| 国产女人喷水视频| 亚洲精品综合一二三区在线| 久久天天躁狠狠躁夜夜2020一| 本亚洲精品网站|