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

基于C#的西門子PLC以太網通訊接口的實現

2019-04-26 08:26:48陳雪嬌繆文南
微型電腦應用 2019年4期

陳雪嬌,繆文南

(華南理工大學 廣州學院, 廣州 510800)

0 引言

西門子 S7-1200 定位于“低端的離散自動化系統和獨立自動化系統中使用的小型控制器模塊”,充分滿足于中小型自動化的系統需求。此系列產品的設計充分考慮了系統、控制器、人機界面和軟件的無縫整合和高效協調的需求[1-4]。特別是面向小規模裝置的可編程控制器,具有符合不同用途的通信功能,如:與控制柜內的顯示器及變頻器的連接、遠程監控等。

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

1 西門子PLC配置

在進行通訊前需要對西門子PLC進行配置,本次采用西門子公司生產的S7-1200系列PLC,CPU型號為1212C,集成以太網通訊模塊,在使用第三方程序對PLC進行讀寫之前,需要對PLC進行權限設置,允許遠程連接PLC,以TIA PORTAL V13為例,打開設備屬性——常規選項卡——web服務器——保護——勾選允許遠程連接,如圖1所示。

2 Socket通信流程

Socket建立在傳輸層協議(TCP和UDP)之上,由于TCP面向連接,UDP是無連接的,因此,利用Socket進行通信,有兩種方式:面向連接的和無連接的[8-9]。在第一種方式下,兩個通信的應用程序之間必須先建立一種虛擬的連接,然后再傳輸數據。第二種方式也稱數據報文方式,在此種方式下,傳輸過程中,數據有可能丟失,先發送的數據也可能后到,各個報文的路徑也不定相同[3]。本文采用面向連接的通信方式,讀數據的流程如圖2所示。寫數據的流程和讀數據的流程是一致的,把圖1中讀數據的模塊改為寫數據模塊即可。

圖1 PLC設備的屬性設置

圖2 讀數據流程

3 具體實現過程

通過安裝選裝Ethernet通信單元,加上SOCKET服務,可實現在以太網下的高速穩定的數據讀寫功能。而在C#中,System.Net.Sockets命名空間為需要嚴密控制網絡訪問的開發人員提供了Sockets接口的托管實現。System.Net命名空間中的所有其他網絡訪問類都建立在該套接字Socket實現之上,如TCPClient、TCPListener和UDPClient類封裝有關創建到Internet的TCP和UDP連接的詳細信息;NetworkStream類則提供用于網絡訪問的基礎數據流等.

3.1 TCP網絡連接

定義SOCKET連接及設置:

mSocket=newSocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

mSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);

mSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);

IPEndPoint server = newIPEndPoint(IPAddress.Parse(RemoteIP), RemotePort);

連接:

mSocket.Connect(server);

一般情況下,電腦IP和PLC IP設置正確后連接都沒有問題,但這一步只表明和PLC的TCP網絡連接成功,并不代表能對PLC進行數據讀寫.

3.2 PLC連接

在TCP連接正常后,需要對PLC發送特定的指令才能實現讀寫功能.

try

{

……

//S7-1200系列PLC以下內容和西門子其他類型不同

mSendArray [11]=193;

mSendArray [12]=2;

mSendArray [13]=1;

mSendArray [14]=0;

mSendArray [15]=194;

mSendArray [16]=2;

mSendArray [17]=3;

mSendArray [18]=(byte)(Rack*2*16+Slot); //rack--機架號,slot--槽號,根據PLC實際配置情況設置,單CPU時rack默認為0,slot默認為1

……

mSocket.Send(bSend1, 22, SocketFlags.None);

//收到PLC正確回復后,可以進行數據讀寫

if (mSocket.Receive(bReceive, 22, SocketFlags.None) !=22)

{

thrownewException(ErrorCode.WrongNumberReceivedBytes.ToString());

}

}

catch (Exception)

{

return -1;

}

3.3 讀PLC數據

讀數據也是采用SOCKET方式進行,直接使用PLC地址即可讀取該地址內容,地址格式如:M0.0;MB0;MD0;DB1.DBX0.0;DB20.DBD200;T45等.

針對不同的變量類型,需要轉換成不同的字節長度:

privateint VarTypeToByteLength(VarType varType, int varCount=1)

{

switch (varType)

{

caseVarType.Bit:

return varCount; //TODO

caseVarType.Byte:

return (varCount < 1) ? 1 : varCount;

caseVarType.String:

return varCount;

caseVarType.Word:

caseVarType.Timer:

caseVarType.Int:

caseVarType.Counter:

return varCount * 2;

caseVarType.DWord:

caseVarType.DInt:

caseVarType.Real:

return varCount * 4;

default:

return 0;

}

}

3.4 對PLC寫值

寫數據也是采用SOCKET方式進行,直接使用PLC地址即可讀取該地址內容,地址格式和讀數據時相同,需要注意的是寫值時寫的值類型和該地址的類型必須相同,例:M0.0只能寫入bit類型,MB0只能寫入byte類型。

4 總結

本文件介紹了在TCP協議下如何使用C#編程語言對西門子PLC進行數據讀寫操作,依靠C#編程語言的簡便性及socket服務的通用性,實現了對西門子PLC數據的讀寫操作,最后需要說明一點,C#編程語言自身帶有內存回收機制,在關閉軟件時,所有資源會自動釋放,但在程序未關閉時多次使用socket服務連接PLC時,在每次連接結束后需要手動釋放資源,否則可能導致無法連接。

主站蜘蛛池模板: 亚洲无码日韩一区| 久久久久青草大香线综合精品 | 波多野结衣一二三| 国产午夜一级毛片| 亚洲国产无码有码| 久久精品嫩草研究院| 亚洲无码91视频| 亚洲日韩高清无码| 国产精品黄色片| 国产在线高清一级毛片| 亚洲综合九九| 欧美激情成人网| 国产精品吹潮在线观看中文| 国产综合亚洲欧洲区精品无码| 亚洲区一区| 国产特级毛片| 亚洲最大福利视频网| 国产99在线| h视频在线观看网站| 日本影院一区| 亚洲无码视频一区二区三区| 成人在线观看不卡| 国产一级二级三级毛片| 国产欧美精品午夜在线播放| 国产人成在线视频| www.亚洲一区二区三区| 无码一区18禁| 日本一区二区三区精品AⅤ| 97成人在线观看| 色成人亚洲| 在线毛片网站| 色亚洲成人| 亚洲国产日韩一区| 国产三级精品三级在线观看| 免费又黄又爽又猛大片午夜| 91无码国产视频| 欧美综合一区二区三区| 天天综合网色中文字幕| 久热re国产手机在线观看| 欧洲高清无码在线| 久久免费视频6| 91精品人妻互换| 亚洲高清在线天堂精品| 欧美h在线观看| 国产永久无码观看在线| 欧美啪啪网| 无码AV高清毛片中国一级毛片| 少妇高潮惨叫久久久久久| 99在线视频免费| 性色一区| 天堂av高清一区二区三区| 国产无套粉嫩白浆| 最新国产在线| 亚洲国产精品一区二区高清无码久久| 欧美区一区| 91日本在线观看亚洲精品| 久久精品人人做人人爽电影蜜月| 婷婷丁香在线观看| 久久激情影院| 一级毛片免费播放视频| 国产第一页免费浮力影院| 亚洲国产综合自在线另类| 一本色道久久88| 91精品国产综合久久香蕉922| 九九这里只有精品视频| 婷婷久久综合九色综合88| 国产成人高清精品免费软件| 精品91自产拍在线| 91口爆吞精国产对白第三集| 青青草91视频| 国产精品欧美在线观看| a级毛片毛片免费观看久潮| 国内毛片视频| 国产性爱网站| 欧美日韩国产在线人| 国产三级a| 欧美成人日韩| 女人18毛片久久| 亚洲精品免费网站| 亚洲成aⅴ人在线观看| а∨天堂一区中文字幕| 免费Aⅴ片在线观看蜜芽Tⅴ|