利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第1頁(yè)
利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第2頁(yè)
利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第3頁(yè)
利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第4頁(yè)
利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信分析研究 計(jì)算機(jī)專(zhuān)業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信摘要:工業(yè)以太網(wǎng)以其特有的低成本,高實(shí)效,高擴(kuò)展性及高智能的魅力,吸引著越來(lái)越多的制造業(yè)的廠(chǎng)商。因此通過(guò)MODBUS/TCP協(xié)議實(shí)現(xiàn)諸如\o"PLC"PLC的I/O模塊,以及連接其它簡(jiǎn)單域總線(xiàn)或I/O模塊的網(wǎng)關(guān)服務(wù)有重要的意義。本文基于\o"VB"VB討論P(yáng)LC與監(jiān)控計(jì)算機(jī)的通信問(wèn)題。關(guān)鍵詞:VBMODBUS/TCP協(xié)議可編程控制器以太網(wǎng)1、引言在網(wǎng)絡(luò)的各個(gè)層上,隨著自動(dòng)化和控制工程師需要與網(wǎng)絡(luò)打交道的機(jī)會(huì)越來(lái)越多,聯(lián)網(wǎng)的愿望和需要也正在逐漸高漲。而且,在監(jiān)控和數(shù)據(jù)采集應(yīng)用中,大多數(shù)工程師已將以太網(wǎng)協(xié)議應(yīng)用于數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)(SCADA)和工廠(chǎng)的診斷、測(cè)試及維護(hù)。如何簡(jiǎn)便地實(shí)現(xiàn)與PLC的交互已經(jīng)成為眾多廠(chǎng)商新的競(jìng)爭(zhēng)戰(zhàn)場(chǎng)。由此產(chǎn)生了人機(jī)界面及各種組態(tài)軟件產(chǎn)品,這些產(chǎn)品的出現(xiàn)簡(jiǎn)化了對(duì)PLC的控制、操作,使PLC的應(yīng)用更加方便。但也有其共同的缺點(diǎn)CONTROLENGINEERINGChina版權(quán)所有,價(jià)格普遍偏高和可二次開(kāi)發(fā)性較差。VB作為"原始"的編程語(yǔ)言,兼具了上述兩方面的優(yōu)勢(shì)。本文結(jié)合一個(gè)簡(jiǎn)單的案例來(lái)粗略討論如何通過(guò)VB實(shí)現(xiàn)PC機(jī)與PLC的以太網(wǎng)通信問(wèn)題。2、以太網(wǎng)通信的基本概念2.1以太網(wǎng)的標(biāo)準(zhǔn)以太網(wǎng)是一種局域網(wǎng)。早期標(biāo)準(zhǔn)為IEEE802.3,數(shù)據(jù)鏈路層使用CSMA/CD,10Mb/s速度物理層有:(1)10Base5粗同軸電纜,RG-8,一段最長(zhǎng)為500m。(2)10Base2細(xì)同軸電纜,RG-58,一段最長(zhǎng)為185m。(3)10BaseT雙絞線(xiàn),UTP或STP,一段最長(zhǎng)為100m。2.2工業(yè)以太網(wǎng)與商用以太網(wǎng)的區(qū)別什么是工業(yè)以太網(wǎng)?技術(shù)上,它與IEEE802.3兼容,故從邏輯上可把商用網(wǎng)和工業(yè)網(wǎng)看成是一個(gè)以太網(wǎng),而用戶(hù)可根據(jù)現(xiàn)場(chǎng)情況,靈活裝配自己的網(wǎng)絡(luò)部件。但從工業(yè)環(huán)境的惡劣和抗干擾的要求,設(shè)計(jì)者希望采用市場(chǎng)上可找到的以太網(wǎng)芯片和媒介,兼顧考慮下述工業(yè)現(xiàn)場(chǎng)的特殊要求:首先要考慮高溫、潮濕、振動(dòng)。二是對(duì)工業(yè)抗電磁干擾和抗輻射有一定要求,如滿(mǎn)足EN50081-2、EN50082-2標(biāo)準(zhǔn),而辦公室級(jí)別的產(chǎn)品未經(jīng)這些工業(yè)標(biāo)準(zhǔn)測(cè)試,表1列出了一些常用工業(yè)標(biāo)準(zhǔn)。為改善抗干擾性和降低輻射,工業(yè)以太網(wǎng)產(chǎn)品多使用多層線(xiàn)路板或雙面電路板,且外殼采用金屬如鑄鋁屏蔽干擾。三是電源要求,因集線(xiàn)器、交換機(jī)、收發(fā)器多為有源部件,而現(xiàn)場(chǎng)電源的品質(zhì)又較差,故常采用雙路直流電或交流電為其供電,另外考慮方便安裝,工業(yè)以太網(wǎng)產(chǎn)品多數(shù)使用DIN導(dǎo)軌或面板安裝。四是通信介質(zhì)選擇,在辦公室環(huán)境下多數(shù)配線(xiàn)使用UTP控制工程網(wǎng)版權(quán)所有,而在工業(yè)環(huán)境下推薦用戶(hù)使用STP(帶屏蔽雙絞線(xiàn))和光纖。2.3使用TCP/IP協(xié)議的原因及其概述最主要的一個(gè)原因在于它能使用在多種物理網(wǎng)絡(luò)技術(shù)上,包括局域網(wǎng)和廣域網(wǎng)技術(shù)。TCP/IP協(xié)議的成功,很大程度上取決于它能適應(yīng)幾乎所有底層通信技術(shù)。20世紀(jì)80年代初,先在X.25上運(yùn)行TCP/IP協(xié)議;而后又在一個(gè)撥號(hào)語(yǔ)音網(wǎng)絡(luò)(如電話(huà)系統(tǒng))上使用TCP/IP協(xié)議,又有TCP/IP在令牌環(huán)網(wǎng)上運(yùn)行成功;最后又實(shí)現(xiàn)了TCP/IP遠(yuǎn)程分組無(wú)線(xiàn)網(wǎng)點(diǎn)與其他Internet網(wǎng)點(diǎn)間TCP/IP通信。所以TCP/IP協(xié)議極其靈活,具備連接不同網(wǎng)絡(luò)的能力。另外控制工程網(wǎng)版權(quán)所有,使用TCP/IP也簡(jiǎn)化了OSI模型,因?yàn)樗÷粤吮硎緦雍蜁?huì)話(huà)層。如果現(xiàn)在把以太網(wǎng)的物理層和數(shù)據(jù)鏈路層加到OSI模型,就構(gòu)成了基于以太網(wǎng)的TCP/IP網(wǎng),如圖1所示。用以太網(wǎng)實(shí)現(xiàn)TCP/IP也是經(jīng)濟(jì)的一種方式。IP是Internet最基本的協(xié)議。IP是面向報(bào)文的協(xié)議,它獨(dú)立處理每個(gè)報(bào)文包,每個(gè)報(bào)文包必須含有完整的尋址信息。IP報(bào)文包的格式如圖2所示。IP地址的類(lèi)型共有4種(如圖3所示):A類(lèi)用于處理超大型網(wǎng)絡(luò),最多16387064個(gè)主機(jī)(1~126);B類(lèi)網(wǎng)絡(luò)最多可有64516個(gè)主機(jī)(網(wǎng)絡(luò)地址的第一段為128~191);C類(lèi)用于小型網(wǎng)絡(luò),最多可有254個(gè)主機(jī)(網(wǎng)絡(luò)地址的第一段為192~223);D類(lèi)用于多點(diǎn)播送,用于多目的信息的傳輸。全零("")地址對(duì)應(yīng)于當(dāng)前主機(jī),全1地址("55")是當(dāng)前子網(wǎng)的廣播地址。TCP是基于傳輸層的協(xié)議,協(xié)議文件可從RFC793得到,使用廣泛,面向連接的可靠協(xié)議。它能把報(bào)文分解為數(shù)段,在目的站再重新裝配這些段,支持重新發(fā)送未被收到的段,提供兩臺(tái)設(shè)備間的全雙工連接控制工程網(wǎng)版權(quán)所有,允許它們高效地交換大量數(shù)據(jù)。TCP使用滑動(dòng)窗口協(xié)議來(lái)高效使用網(wǎng)絡(luò)。由于TCP很少干預(yù)底層投遞系統(tǒng)的工作,它適應(yīng)各種投遞系統(tǒng),且提供流量控制,能使各種不同速率的系統(tǒng)進(jìn)行通信。報(bào)文段是TCP所使用的基本傳輸單元,用于傳輸數(shù)據(jù)或控制信息。3、MODBUS數(shù)據(jù)幀格式在TCP/IP以太網(wǎng)上傳輸,支持EthernetII和802.3兩種幀格式。圖3所示CONTROLENGINEERINGChina版權(quán)所有,ModbusTCP數(shù)據(jù)幀包含報(bào)文頭、功能代碼和數(shù)據(jù)3部分。圖3MODBUSTCP數(shù)據(jù)幀格式4、MODBUS功能代碼4.13種類(lèi)型(1)公共功能代碼(如表2所示):已定義好的功能碼,保證其唯一性,由M認(rèn)可。(2)用戶(hù)自定義功能代碼有兩組,分別為65~72和100~110,無(wú)需認(rèn)可CONTROLENGINEERINGChina版權(quán)所有,但不保證代碼使用的唯一性。如變?yōu)楣泊a,需交RFC認(rèn)可。(3)保留的功能代碼CONTROLENGINEERINGChina版權(quán)所有,由某些公司使用在某些傳統(tǒng)設(shè)備的代碼,不可作為公共用途。表2Modbus常用公共代碼功能4.2功能代碼劃分:按應(yīng)用深淺,可分為3個(gè)類(lèi)別。(1)類(lèi)別0,對(duì)于客戶(hù)機(jī)/服務(wù)器最小的可用子集:讀多個(gè)保持寄存器(fc.3);寫(xiě)多個(gè)保持寄存器(fc.16)。(2)類(lèi)別1,可實(shí)現(xiàn)基本互易操作的常用代碼:讀線(xiàn)圈(fc.1);讀開(kāi)關(guān)量輸入(fc.2);讀輸入寄存器(fc.4);寫(xiě)線(xiàn)圈(fc.5);寫(xiě)單一寄存器(fc.6)。(3)類(lèi)別2,用于人機(jī)界面、監(jiān)控系統(tǒng)的例行操作和數(shù)據(jù)傳送功能:(4)強(qiáng)制多個(gè)線(xiàn)圈(fc.15);讀通用寄存器(fc.20);寫(xiě)通用寄存器(fc.21);屏蔽寫(xiě)寄存器(fc.22);讀寫(xiě)寄存器(fc.23)。5、\o"VB"VB的基本概念VB(VisualBasic)是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言控制工程網(wǎng)版權(quán)所有,用它來(lái)開(kāi)發(fā)Windows操作系統(tǒng)下的應(yīng)用程序,它提供了很多接口成員,對(duì)象、屬性、事件、方法就是4個(gè)重要的接口,VB提供了許多常用的控件。5.1卷標(biāo)控件卷標(biāo)控件如圖4(a)所示,該控件專(zhuān)用于顯示文字、數(shù)字用,顯示如圖4(b)所示。5.2按鈕控件按鈕控件如圖5(a)所示,該控件使用率很高,提供一個(gè)供系統(tǒng)用戶(hù)操作用的按鈕,如圖5(b)所示。6、基于Winsock控件的TCP/IP以太網(wǎng)通信要完成VB與\o"PLC"PLC等設(shè)備的以太網(wǎng)通信要用到Winsock控件,在此有必要對(duì)該控件作較詳細(xì)的說(shuō)明。Winsock是一個(gè)ActiveX控件,需要要手動(dòng)添加許多項(xiàng)目,其步驟如下:(1)選擇菜單的【工程】。(2)選擇【部件】。(3)在彈出的對(duì)話(huà)框中做如圖6的選擇。圖6對(duì)話(huà)框界面(4)如圖7所示,在部件選項(xiàng)卡就會(huì)出現(xiàn)Winsock控件。圖7Winsock控件7、Winsock控件的基本屬性此控件對(duì)于用戶(hù)在運(yùn)行時(shí)不可見(jiàn),提供了一個(gè)簡(jiǎn)單的途徑訪(fǎng)問(wèn)TCP及UDP網(wǎng)絡(luò)服務(wù)而無(wú)需了解底層細(xì)節(jié)控制工程網(wǎng)版權(quán)所有,使用時(shí)你只需設(shè)置屬性、在恰當(dāng)?shù)臅r(shí)候調(diào)用它提供的方法即可。主要屬性有:BytesReceived:返回當(dāng)前緩沖區(qū)中的字節(jié)數(shù)量,我們可以使用GetData方法以接收數(shù)據(jù)。只讀且設(shè)計(jì)時(shí)不可用。LocalHostName:返回本機(jī)名字符串,設(shè)計(jì)時(shí)不可用。LocalIP:返回以(xxx.xxx.xxx.xxx)格式表達(dá)的IP地址串。設(shè)計(jì)時(shí)不可用,運(yùn)行時(shí)只讀。LocalPort:本機(jī)使用接收端口可讀寫(xiě),設(shè)計(jì)時(shí)可用,Long型。對(duì)于客戶(hù),如果無(wú)需指定端口,則用端口0發(fā)送數(shù)據(jù)。在此情況下,控件將隨機(jī)選擇一個(gè)端口。在一個(gè)連接確定后,為T(mén)CP的端口。對(duì)于服務(wù)器,指用于監(jiān)聽(tīng)的端口。如設(shè)置為0,則用隨機(jī)數(shù)。在調(diào)用Listen方法后,該屬性自動(dòng)包含用到的端口。端口0總是用于在兩計(jì)算機(jī)間建立動(dòng)態(tài)連接??蛻?hù)希望通過(guò)端口0獲得一個(gè)隨機(jī)端口以"回調(diào)"連接服務(wù)器。Protocol:套接字類(lèi)型,為T(mén)CP或UDP二者之一,缺省為T(mén)CP類(lèi)型。設(shè)置為sckTCPProtocol表示TCP協(xié)議sckUDPProtocol表示UDP協(xié)議。在此屬性被重置之前需用Close方法關(guān)閉之。RemoteHost:發(fā)送或接收數(shù)據(jù)的主機(jī),你可提供主機(jī)名如:FTP://,或一IP地址串,例如""。RemoteHostIP:遠(yuǎn)程主機(jī)的IP地址。對(duì)于客戶(hù)程序,在連接確定后使用Connect方法,此屬性包含遠(yuǎn)程主機(jī)的IP名串。對(duì)于服務(wù)器程序,在引入連接需求后(ConnectionRequest事件),此屬性包含IP串。當(dāng)使用UDP套接字,在DataArrival事件發(fā)生后,此屬性為發(fā)送UDP數(shù)據(jù)的機(jī)器IP地址串。RemotePort:連接套接字端口值。例如通常HTTP應(yīng)用使用80端口,F(xiàn)TP則使用21。State:控件的狀態(tài),只讀且設(shè)計(jì)時(shí)不可用。可為以下值:常量描述sckClosed0缺省值,關(guān)閉套接字sckOpen1打開(kāi)套接字sckListening2正監(jiān)聽(tīng)端口sckConnectionPending3正在進(jìn)行未定的連接sckResolvingHost4正解析主機(jī)地址sckHostResolved5主機(jī)地址已解析sckConnecting6正在連接sckConnected7已連接sckClosing8連接關(guān)閉sckError9錯(cuò)誤8、\o"VB"VB與\o"PLC"PLC基于MODBUSTCP的以太網(wǎng)通信的實(shí)現(xiàn)以下舉例說(shuō)明如何實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信。(1)控制要求:用交替型按鈕控制Y0,并用指示燈顯示Y0狀態(tài)(綠色為運(yùn)行,紅色為停止);能夠?qū)100、D200兩個(gè)寄存器進(jìn)行數(shù)值寫(xiě)入與讀出的操作。(2)實(shí)現(xiàn)思路:同樣Y0的地址分別為H0500。寫(xiě)入FF00為ON控制工程網(wǎng)版權(quán)所有,0000為OFF,按功能碼05操作;D100,D200地址分別為H1064,H10C8,按功能碼03操作即可實(shí)現(xiàn)寄存器的讀功能,按功能碼10H操作即可實(shí)現(xiàn)寄存器的寫(xiě)功能。(3)VB接口的設(shè)計(jì)如圖8所示圖8監(jiān)控程序界面圖在界面中用按鈕控制Y0的ON/OFF及D100、D200數(shù)據(jù)的寫(xiě)與讀;用shape組件做指示燈,指示Y0的ON/OFF狀態(tài);用Winsock控件實(shí)現(xiàn)PLC與VB的通信。(1)實(shí)現(xiàn)功能的代碼構(gòu)成(2)建立網(wǎng)絡(luò)連接PrivateSubCommand1_Click()Winsock1.CloseWinsock1.ConnectText1,502Label2.Caption="Version:1.0:"+Format(Now,"mmmddyyyyHh:Nn:Ss")Command1.Enabled=FalseCommand1.Enabled=FalseText1.Enabled=FalseEndSub(2)、Y0的ON/OFF控制PrivateSubComd_send_Click()OnErrorGoToErrProcDimsendstr(14)AsBytesendstr(0)=&H0'交換識(shí)別號(hào)高字節(jié),通常為0sendstr(1)=&H0'交換識(shí)別號(hào)低字節(jié),通常為0sendstr(2)=&H0'協(xié)議識(shí)別號(hào)高字節(jié),為0sendstr(3)=&H0'協(xié)議識(shí)別號(hào)低字節(jié)控制工程網(wǎng)版權(quán)所有,為0sendstr(4)=&H0'字節(jié)長(zhǎng)度高字節(jié)sendstr(5)=&H9'以下字節(jié)長(zhǎng)度低字節(jié)sendstr(6)=&HFF'單元識(shí)別號(hào)控制工程網(wǎng)版權(quán)所有,確省為255sendstr(7)=&H5'寫(xiě)一個(gè)線(xiàn)圈命令代碼sendstr(8)=&H0'寫(xiě)線(xiàn)圈的起始地址高字節(jié)sendstr(9)=&H1'寫(xiě)線(xiàn)圈的起始地址低字節(jié)sendstr(10)=a'=FF打開(kāi)線(xiàn)圈,=00關(guān)閉線(xiàn)圈sendstr(11)=&H0'DimaStrAsStringDimi,jAsIntegerFori=0To11aStr=aStr&Chr(sendstr(i))NextWinsock1.SendDataaStrExitSubErrProc:MsgBox"傳輸數(shù)據(jù)失敗",vbCritical,"網(wǎng)絡(luò)傳輸"EndSub(3)線(xiàn)圈狀態(tài)顯示及寄存器讀出數(shù)據(jù)顯示PrivateSubwinsock1_DataArrival(ByValbytesTotalAsLong)Dimstrdata()AsByteDimi,jAsIntegerDimsAsStringDims1AsStringDimIOAsBytei=Winsock1.BytesReceivedReDimstrdata(i)Winsock1.GetDatastrdata,vbByte,iForj=0Toi-1s=s+Hex(strdata(j))NextIfsLike"*5*"Thens1=Mid(s,12,2)Ifs1="FF"ThenIO=1a=&H0ElseIO=0a=&HFFEndIfIfIO=1ThenShape1.FillColor=RGB(0,255,0)'greenLabl3.Caption="IO點(diǎn)接通"ElseShape1.FillColor=RGB(255,0,0)'redLabl3.Caption="IO點(diǎn)斷開(kāi)"EndIfEndIfIfsLike"*3*"ThenText3.Text=Text3.Text+Mid(s,11)+""EndIf(4)、讀多個(gè)寄存器數(shù)據(jù)EndSubPrivateSubCommand4_Click()OnErrorGoToErrProcDimstr(12)AsBytestr(0)=&H0'交換識(shí)別號(hào)高字節(jié),通常為0str(1)=&H0'交換識(shí)別號(hào)低字節(jié),通常為0str(2)=&H0'協(xié)議識(shí)別號(hào)高字節(jié),為0str(3)=&H0'協(xié)議識(shí)別號(hào)低字節(jié),為0str(4)=&H0'字節(jié)長(zhǎng)度高字節(jié)str(5)=&H6'以下字節(jié)長(zhǎng)度低字節(jié)str(6)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論