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

基于.Net平臺的西門子S7_300PLC通訊的實現

2017-04-23 03:27:16尹大宇
電子技術與軟件工程 2017年5期
關鍵詞:定義語言

尹大宇

摘 要 介紹了PC與西門子S7-300PLC在.Net平臺下用TCP/IP協議實現通訊的方法。

【關鍵詞】S7-300 PLC TCP/IP套接字 .Net

隨著Internet/ Intranet的發展,以太網已滲透到各個角落,今天的控制系統和工廠自動化系統,以太網的應用幾乎已經和PLC一樣普及。以太網相對于其他通訊方式(如Profibus/Mpi)有許多優勢:

(1)速度更快。西門子CP 1543-1的通訊帶寬已經可達1000Mbps。

(2)診斷更加方便快捷。簡單的ping操作就可以診斷大部分通訊問題。

(3)成本低。不再需要使用特殊的適配器來連接到PLC,只需普通的網線。

因此,本文的研究將基于以太網的TCP/IP協議進行討論。

1 .NET平臺簡介

.NET Framework的核心是其運行庫的執行環境,稱為公共語言運行庫(CLR)或.NET運行庫。在CLR執行編寫好的源代碼之前,需要編譯它們(在C#中或其他語言中)。在.NET中,編譯分為兩個階段:

(1)把源代碼編譯為Microsoft中間語言(IL)。

(2)CLR把IL編譯為平臺專用的代碼。

這個兩階段的編譯過程非常重要,因為Microsoft中間語言(托管代碼)是提供.NET的許多優點的關鍵。

Microsoft中間語言與Java字節代碼共享一種理念:它們都是低級語言,語法很簡單(使用數字代碼,而不是文本代碼),可以快速地轉換為內部機器碼。對于代碼來說,這種精心設計的通用語法有很重要的優點:平臺無關性、提高性能和語言的互操作性。因此,基于.NET平臺開發的應用程序具有更好的移植性,也是跨平臺應用程序開發的很好選擇。

2 PLC與PC的TCP/IP通訊協議

基于以太網TCP/IP協議有兩種通訊方式:面向對象的通訊協議(TCP)和面向無連接的通訊協議(UDP)。TCP提供的是一種可靠的數據流服務,采用“帶重傳的肯定確認”技術來實現傳輸的可靠性。為了提高數據的有效性,本文使用該通訊方式。

西門子通訊協議是西門子PLC通訊的基礎,它按照確定的方式來進行定義,然后將定義完成的報文依賴于TCP協議來進行傳輸。每一條通訊報文都包含著一條指令(例如讀取、寫入)或者明確的回復。協議的封裝如圖1所示。

西門子通訊協議被封裝在S7 PDU中,一條標準的通訊報文由幾個基本的部分組成(本文以讀取DB存儲區(DB300.DBW29)變量的請求為例進行說明):

2.1 數據頭

聲明請求目的為讀?。?x32 0x01)。數據流(16進制)如表1所示。

2.2 參數定義

聲明請求為讀?。?x04),變量個數(0x01代表只讀取一個變量),標準頭(0x12 0x0a 0x10),變量的類型(0x02代表Byte),長度(“0x00 0x02”長度為2字節),對象(0x84代表DB存儲區),地址(“0x01 0x2c”代表DB300,“0x00 0x00 0xe8”代表地址偏移位29,在這里是DBW29)。數據流(16進制)如表2所示。

3 PC與PLC通訊方法的實現

3.1 本文的研究內容是基于下圖硬件基礎來實現的

它包括一個CPU317-2DP,一個CP343-1通訊模塊等,已組態CP343-1的IP地址為172.20.100.10,硬件組態如圖2所示。用于編程實現通訊的PC機為帶以太網口的普通筆記本電腦,IP地址為172.20.100.222,測試讀取的變量為DB300.DBW29。

3.2 通訊的主要過程

整個通訊程序在Visual Studio 2015開發平臺下用C#語言實現,通訊的主要過程包括如下幾個步驟。

(1)建立一個套接字連接到PLC。注意程序必須包含System.Net.Sockets名稱空間。部分代碼如下:

int result;/*定義返回值*/bool temp = false; //定義狀態變量

Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//創建一個套接字

(2)連接套接字:

if (sock.Connected==true)//連接前判斷是否為重復連接

{result = 1;//是則返回值1,已經建立連接 }else{try

{sock.Connect(host, port);//連接套接字

//這里host為CP的IP地址“172.20.100.10”,port為整數102(默認)

temp = true;/*代表已經連接上*/result = 1;}

catch (SocketException e)//連接錯誤則輸出報警信息{errorStr = e.Message + " . Error code:" + e.ErrorCode;result = 0;temp = false;}

(3)與PLC建立握手連接:

if (temp == true)//如果套接字連接正常,則進行握手連接

{try{isSize8 = FControlPDUDC.IniTSAP(rack, slot, ConnectionType);

IniPDU();/*連接請求PDU初始化*/ byte[] byteRecv = new byte[240];

byte[] PDUmsg = StructToBytes(FControlPDUDC);

/*初始化完成后,PDUmsg[]字節數組為:

[0x03 0x00 0x00 0x16 0x11 0xe0 0x00 0x00 0x00 0x01 0x00 0xc0 0x01 0x0a 0xc1 0x02 0x01 0x00 0xc2 0x02 0x01 0x02]*/

int bytesSent = sock.Send(PDUmsg);int bytesRec = sock.Receive(byteRecv);byte[] byteRecv = new byte[240];

……//初始化NegMsg

/*初始化完成后用于再次握手的NegMsg[]字節數組為:

[0x03 0x00 0x000x190x02 0xf0 0x80 0x32 0x01 0x00 0x00 0x03 0x00 0x00 0x08 0x00 0x00 0xF0 0x00 0x00 0x01 0x00 0x01 0x01 0xe0]*/

int NegSent = sock.Send(NegMsg);int NegbytesRec = sock.Receive(NegbyteRecv);result = 1;}catch (SocketException e)

{result = 0;errorStr = e.Message + ". Error code:" + e.ErrorCode;}}

(4)讀取DB存儲區變量測試:

int result = 0;if (sock.Connected==true)

{…… /準備讀取變量PDU,初始化 PDUSend

/*初始化完成后,PDUSend[]字節數組為:

[0x03 0x00 0x00 0x1f 0x02 0xf0 0x80 0x32 0x01 0x00 0x00 0x04 0x00 0x00 0xe0 0x00 0x00 0x04 0x01 0x12 0x0a 0x10 0x02 0x00 0x0a 0x01 0x2c 0x84 0x00 0x00 0xe8]*/

try{int i = sock.Send(PDUSend);sock.Receive(DataRecv);

receiveBuffer = new byte[totalNum];

……/*處理PLC返回的字節*/

result = 1;}catch (SocketException e)//異常處理

{errorStr = e.Message + ". Error code:" + e.ErrorCode;result = 0;}}

else{result = 0;}return result;

4 結論

隨著微軟宣布將全部.NET服務器端框架開源,將.NET運行平臺擴展至Linux和Mac OS,讓開發者能夠使用.NET在Windows、Mac和Linux三大平臺上開發應用?;?NET平臺的開發的通訊程序幾乎不需要修改任何代碼就可以很好的移植到任何支持.NET的平臺之上。因此,本文的研究對于跨平臺西門子S7_300PLC通訊的開發也具有指導意義。

參考文獻

[1]Nagel C,Evjen B,Glynn J,et al. Professional C# 4.0 and.NET 4[J]. Wiley John + Sons,2010.

[2]賈濤.西門子S7-200以太網通訊協議研究[J].電子技術與軟件工程,2014(24):30-32.

猜你喜歡
定義語言
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風格”
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態分析下的同聲傳譯語言壓縮
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
我有我語言
論語言的“得體”
語文知識(2014年10期)2014-02-28 22:00:56
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 久久美女精品| 3344在线观看无码| 男女猛烈无遮挡午夜视频| 国产在线视频二区| 久久一本精品久久久ー99| 亚洲成人一区在线| 狠狠色成人综合首页| 亚洲激情99| 91精品啪在线观看国产| 黄色网页在线播放| 久久semm亚洲国产| 青青草国产一区二区三区| 国产精品13页| 伊人天堂网| 91色综合综合热五月激情| 日韩小视频网站hq| 免费无码一区二区| 国产一在线| 激情综合图区| 国产91高清视频| 乱码国产乱码精品精在线播放| 国产福利免费在线观看 | 欧美激情网址| 亚洲第一成年免费网站| 精品国产Ⅴ无码大片在线观看81| 激情成人综合网| 亚洲午夜国产精品无卡| 日本高清视频在线www色| 免费精品一区二区h| 国产内射在线观看| av色爱 天堂网| 国产精品浪潮Av| 成人在线不卡视频| 欧美亚洲日韩不卡在线在线观看| 久久大香香蕉国产免费网站 | 欧美人人干| 亚洲精品第一页不卡| 亚洲AⅤ综合在线欧美一区| 欧美a在线视频| 22sihu国产精品视频影视资讯| 欧美视频在线播放观看免费福利资源| 国产香蕉在线视频| 2021国产乱人伦在线播放 | www.99精品视频在线播放| 亚洲首页在线观看| 国产黄色爱视频| 国产午夜在线观看视频| 国产第一色| 亚洲欧美成人综合| 少妇人妻无码首页| 熟妇丰满人妻| 高清乱码精品福利在线视频| 无码人妻免费| 欧美成一级| 欧美日韩一区二区在线播放| 欧洲在线免费视频| 国产福利免费视频| 丰满人妻久久中文字幕| 国产91色| 久久综合色视频| 黄色三级网站免费| 久久精品国产免费观看频道| 亚洲欧美日韩中文字幕在线| 国产亚洲欧美在线专区| 91久久天天躁狠狠躁夜夜| 亚洲第一视频区| 国产导航在线| 国产成人麻豆精品| 婷婷综合缴情亚洲五月伊| 亚洲美女一区二区三区| 国产主播福利在线观看| 国产区精品高清在线观看| 青青草原国产| 欧美不卡在线视频| 日韩高清一区 | 日韩国产黄色网站| 亚洲第一福利视频导航| 亚洲日韩第九十九页| 欧美日一级片| 国产成人h在线观看网站站| a级毛片一区二区免费视频| 色综合成人|