午夜三级做爱黄片,午夜福利小视频,午夜国产成人精品,午夜黄色在线视频 - www.atkqc.com

由于操作過于頻繁,請點(diǎn)擊下方按鈕進(jìn)行驗(yàn)證!

利用Winscok控件實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信

南京寧控系統(tǒng)工程有限公司  熊金香
摘要:工業(yè)以太網(wǎng)以其特有的低成本,高實(shí)效,高擴(kuò)展性及高智能的魅力,吸引著越來越多的制造業(yè)的廠商亦弛。因此通過MODBUS/TCP協(xié)議實(shí)現(xiàn)諸如PLC的I/O模塊,以及連接其它簡單域總線或 I/O模塊的網(wǎng)關(guān)服務(wù)有重要的意義同衣。本文基于VB討論P(yáng)LC與監(jiān)控計(jì)算機(jī)的通信問題竟块。
關(guān)鍵詞:VB  MODBUS/TCP協(xié)議  可編程控制器  以太網(wǎng)
1、引言
在網(wǎng)絡(luò)的各個(gè)層上耐齐,隨著自動(dòng)化和控制工程師需要與網(wǎng)絡(luò)打交道的機(jī)會(huì)越來越多浪秘,聯(lián)網(wǎng)的愿望和需要也正在逐漸高漲。而且埠况,在監(jiān)控和數(shù)據(jù)采集應(yīng)用中耸携,大多數(shù)工程師已將以太網(wǎng)協(xié)議應(yīng)用于數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)(SCADA)和工廠的診斷、測試及維護(hù)辕翰。如何簡便地實(shí)現(xiàn)與PLC的交互已經(jīng)成為眾多廠商新的競爭戰(zhàn)場夺衍。由此產(chǎn)生了人機(jī)界面及各種組態(tài)軟件產(chǎn)品,這些產(chǎn)品的出現(xiàn)簡化了對PLC的控制喜命、操作沟沙,使PLC的應(yīng)用更加方便。但也有其共同的缺點(diǎn)壁榕,價(jià)格普遍偏高和可二次開發(fā)性較差矛紫。VB作為“原始”的編程語言,兼具了上述兩方面的優(yōu)勢燕紊。本文結(jié)合一個(gè)簡單的案例來粗略討論如何通過VB實(shí)現(xiàn)PC機(jī)與PLC的以太網(wǎng)通信問題塌或。
2、以太網(wǎng)通信的基本概念
2.1以太網(wǎng)的標(biāo)準(zhǔn)
以太網(wǎng)是一種局域網(wǎng)荔寞。早期標(biāo)準(zhǔn)為IEEE 802.3缚形,數(shù)據(jù)鏈路層使用CSMA/CD,10Mb/s速度物理層有:
(1)10 Base 5粗同軸電纜超瞧,RG-8排击,一段最長為500m。
(2)10 Base 2細(xì)同軸電纜碳携,RG-58,一段最長為185m墓且。
(3)10 Base T雙絞線临辰,UTP或STP,一段最長為100m。
2.2工業(yè)以太網(wǎng)與商用以太網(wǎng)的區(qū)別
什么是工業(yè)以太網(wǎng)亏乞?技術(shù)上焰究,它與IEEE802.3兼容,故從邏輯上可把商用網(wǎng)和工業(yè)網(wǎng)看成是一個(gè)以太網(wǎng)怒详,而用戶可根據(jù)現(xiàn)場情況炉媒,靈活裝配自己的網(wǎng)絡(luò)部件。但從工業(yè)環(huán)境的惡劣和抗干擾的要求昆烁,設(shè)計(jì)者希望采用市場上可找到的以太網(wǎng)芯片和媒介吊骤,兼顧考慮下述工業(yè)現(xiàn)場的特殊要求:首先要考慮高溫、潮濕静尼、振動(dòng)白粉。二是對工業(yè)抗電磁干擾和抗輻射有一定要求,如滿足EN50081-2鼠渺、EN50082-2標(biāo)準(zhǔn)鸭巴,而辦公室級(jí)別的產(chǎn)品未經(jīng)這些工業(yè)標(biāo)準(zhǔn)測試,表1列出了一些常用工業(yè)標(biāo)準(zhǔn)拦盹。為改善抗干擾性和降低輻射鹃祖,工業(yè)以太網(wǎng)產(chǎn)品多使用多層線路板或雙面電路板,且外殼采用金屬如鑄鋁屏蔽干擾普舆。三是電源要求恬口,因集線器、交換機(jī)犀刀、收發(fā)器多為有源部件葬籽,而現(xiàn)場電源的品質(zhì)又較差,故常采用雙路直流電或交流電為其供電饮茬,另外考慮方便安裝努示,工業(yè)以太網(wǎng)產(chǎn)品多數(shù)使用DIN導(dǎo)軌或面板安裝。四是通信介質(zhì)選擇拉狸,在辦公室環(huán)境下多數(shù)配線使用UTP盾峭,而在工業(yè)環(huán)境下推薦用戶使用STP(帶屏蔽雙絞線)和光纖。

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)語音網(wǎng)絡(luò)(如電話系統(tǒng))上使用TCP/IP協(xié)議齐秕,又有TCP/IP在令牌環(huán)網(wǎng)上運(yùn)行成功沈机;最后又實(shí)現(xiàn)了TCP/IP遠(yuǎn)程分組無線網(wǎng)點(diǎn)與其他Internet網(wǎng)點(diǎn)間TCP/IP通信仙蛉。所以TCP/IP協(xié)議極其靈活,具備連接不同網(wǎng)絡(luò)的能力碱蒙。另外荠瘪,使用TCP/IP也簡化了OSI模型,因?yàn)樗÷粤吮硎緦雍蜁?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ì)的一種方式篮绰。

IPInternet最基本的協(xié)議。IP是面向報(bào)文的協(xié)議褒搔,它獨(dú)立處理每個(gè)報(bào)文包阶牍,每個(gè)報(bào)文包必須含有完整的尋址信息。IP報(bào)文包的格式如圖2所示星瘾。

IP地址的類型共有4種(如圖3所示):A類用于處理超大型網(wǎng)絡(luò)走孽,最多16387064個(gè)主機(jī)(1~126);B類網(wǎng)絡(luò)最多可有64516個(gè)主機(jī)(網(wǎng)絡(luò)地址的第一段為128~191)琳状;C類用于小型網(wǎng)絡(luò)伶葵,最多可有254個(gè)主機(jī)(網(wǎng)絡(luò)地址的第一段為192~223);D類用于多點(diǎn)播送菜册,用于多目的信息的傳輸蕴续。全零(“0.0.0.0”)地址對應(yīng)于當(dāng)前主機(jī),全1地址(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址蓄棘。
TCP是基于傳輸層的協(xié)議贰宰,協(xié)議文件可從RFC793得到,使用廣泛褥欺,面向連接的可靠協(xié)議芍迫。它能把報(bào)文分解為數(shù)段,在目的站再重新裝配這些段盔鬼,支持重新發(fā)送未被收到的段哪趟,提供兩臺(tái)設(shè)備間的全雙工連接,允許它們高效地交換大量數(shù)據(jù)女饺。TCP使用滑動(dòng)窗口協(xié)議來高效使用網(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)上傳輸,支持Ethernet II和802.3兩種幀格式比勉。圖3所示,Modbus TCP數(shù)據(jù)幀包含報(bào)文頭驹止、功能代碼和數(shù)據(jù)3部分浩聋。

4、MODBUS功能代碼
4.1  3種類型
(1)公共功能代碼(如表2所示):已定義好的功能碼臊恋,保證其唯一性衣洁,由[暫不可見]認(rèn)可。
(2)用戶自定義功能代碼有兩組抖仅,分別為65~72和100~110坊夫,無需認(rèn)可,但不保證代碼使用的唯一性撤卢。如變?yōu)楣泊a蛾藐,需交RFC認(rèn)可。
(3)保留的功能代碼昂贷,由某些公司使用在某些傳統(tǒng)設(shè)備的代碼保懈,不可作為公共用途。
4.2功能代碼劃分:按應(yīng)用深淺拆翘,可分為3個(gè)類別锉辫。
(1)類別0,對于客戶機(jī)/服務(wù)器最小的可用子集:讀多個(gè)保持寄存器(fc.3)囊脉;寫多個(gè)保持寄存器(fc.16)瑰兄。
(2)類別1,可實(shí)現(xiàn)基本互易操作的常用代碼:讀線圈(fc.1)屉争;讀開關(guān)量輸入(fc.2)锤距;讀輸入寄存器(fc.4);寫線圈(fc.5)朴轰;寫單一寄存器(fc.6)武填。
(3)類別2,用于人機(jī)界面唆阿、監(jiān)控系統(tǒng)的例行操作和數(shù)據(jù)傳送功能:
(4)強(qiáng)制多個(gè)線圈(fc.15)益涧;讀通用寄存器(fc.20);寫通用寄存器(fc.21)驯鳖;屏蔽寫寄存器(fc.22)闲询;讀寫寄存器(fc.23)。
5浅辙、VB的基本概念
VB(Visual Basic)是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言扭弧,用它來開發(fā)Windows操作系統(tǒng)下的應(yīng)用程序阎姥,它提供了很多接口成員,對象鸽捻、屬性呼巴、事件、方法就是4個(gè)重要的接口御蒲,VB提供了許多常用的控件衣赶。
5.1卷標(biāo)控件
卷標(biāo)控件如圖4(a)所示,該控件專用于顯示文字厚满、數(shù)字用府瞄,顯示如圖4(b)

5.2 按鈕控件
按鈕控件如圖5(a)所示,該控件使用率很高斤卒,提供一個(gè)供系統(tǒng)用戶操作用的按鈕蹂孽,如圖5(b)所示。

6囚誓、基于Winsock控件的TCP/IP以太網(wǎng)通信
要完成VB與PLC等設(shè)備的以太網(wǎng)通信要用到Winsock控件酸穗,在此有必要對該控件作較詳細(xì)的說明。Winsock是一個(gè)ActiveX控件醋皂,需要要手動(dòng)添加許多項(xiàng)目亭结,其步驟如下:
(1)選擇菜單的【工程】。
(2)選擇【部件】辖芍。
(3)在彈出的對話框中做如圖6的選擇臀嘱。
(4)如圖7所示,在部件選項(xiàng)卡就會(huì)出現(xiàn)Winsock控件所硅。
圖7 Winsock控件
 
7嘴父、Winsock控件的基本屬性
此控件對于用戶在運(yùn)行時(shí)不可見,提供了一個(gè)簡單的途徑訪問TCP及UDP網(wǎng)絡(luò)服務(wù)而無需了解底層細(xì)節(jié)营稼,使用時(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ī)使用接收端口可讀寫,設(shè)計(jì)時(shí)可用扳埂,Long型业簿。對于客戶瘤礁,如果無需指定端口,則用端口0發(fā)送數(shù)據(jù)梅尤。在此情況下柜思,控件將隨機(jī)選擇一個(gè)端口。在一個(gè)連接確定后巷燥,為TCP的端口那辰。對于服務(wù)器,指用于監(jiān)聽的端口玲侧。如設(shè)置為0,則用隨機(jī)數(shù)乍之。在調(diào)用Listen 方法后符破,該屬性自動(dòng)包含用到的端口。端口0總是用于在兩計(jì)算機(jī)間建立動(dòng)態(tài)連接促奇〔t阔?蛻粝Mㄟ^端口0獲得一個(gè)隨機(jī)端口以”回調(diào)”連接服務(wù)器。
Protocol :套接字類型露龙,為TCP或UDP二者之一撵靴,缺省為TCP類型。設(shè)置為sckTCPProtocol表示TCP協(xié)議sckUDPProtocol表示UDP協(xié)議注辜。在此屬性被重置之前需用Close方法關(guān)閉之招砌。
RemoteHost:發(fā)送或接收數(shù)據(jù)的主機(jī),你可提供主機(jī)名如:FTP://(暫不可見)策洒,或一IP地址串粉私,例如“100.0.1.1”。
RemoteHostIP:遠(yuǎn)程主機(jī)的IP地址近零。對于客戶程序诺核,在連接確定后使用Connect方法,此屬性包含遠(yuǎn)程主機(jī)的IP名串久信。對于服務(wù)器程序窖杀,在引入連接需求后(Connection Request 事件),此屬性包含IP串裙士。當(dāng)使用UDP套接字入客,在Data Arrival事件發(fā)生后,此屬性為發(fā)送UDP數(shù)據(jù)的機(jī)器IP地址串潮售。
RemotePort:連接套接字端口值痊项。例如通常HTTP應(yīng)用使用80端口,F(xiàn)TP則使用21酥诽。
State:控件的狀態(tài)鞍泉, 只讀且設(shè)計(jì)時(shí)不可用皱埠。可為以下值:
常量描述
sckClosed 0 缺省值咖驮,關(guān)閉套接字
sckOpen 1 打開套接字
sckListening 2 正監(jiān)聽端口
sckConnectionPending 3 正在進(jìn)行未定的連接
sckResolvingHost 4 正解析主機(jī)地址
sckHostResolved 5 主機(jī)地址已解析
sckConnecting 6 正在連接
sckConnected 7 已連接
sckClosing 8 連接關(guān)閉
sckError 9 錯(cuò)誤
8番搅、VB與PLC基于MODBUS TCP的以太網(wǎng)通信的實(shí)現(xiàn)
以下舉例說明如何實(shí)現(xiàn)VB與PLC的以太網(wǎng)通信。
(1)控制要求:用交替型按鈕控制Y0市口,并用指示燈顯示Y0狀態(tài)(綠色為運(yùn)行瘸拳,紅色為停止);能夠?qū)100穗俩、D200兩個(gè)寄存器進(jìn)行數(shù)值寫入與讀出的操作眠乏。
(2)實(shí)現(xiàn)思路:同樣Y0的地址分別為H0500。寫入FF00為ON熏祝,0000為OFF羽傻,按功能碼05操作;D100们眶,D200地址分別為H1064法厢,H10C8,按功能碼03操作即可實(shí)現(xiàn)寄存器的讀功能嘶违,按功能碼10H操作即可實(shí)現(xiàn)寄存器的寫功能怎猜。
(3)VB接口的設(shè)計(jì)如圖8所示

圖8 監(jiān)控程序界面圖
在界面中用按鈕控制Y0的ON/OFF及D100、D200數(shù)據(jù)的寫與讀旭贬;用shape組件做指示燈怔接,指示Y0的ON/OFF狀態(tài);用Winsock控件實(shí)現(xiàn)PLC與VB的通信骑篙。
(1)實(shí)現(xiàn)功能的代碼構(gòu)成
(2)建立網(wǎng)絡(luò)連接
Private Sub Command1_Click()
Winsock1.Close
(暫不可見)nnect Text1蜕提, 502
Label2.Caption = "Version: 1.0 : " + Format(Now, "mmm dd yyyy Hh:Nn:Ss")
Command1.Enabled = False
Command1.Enabled = False
Text1.Enabled = False
End Sub
(2)靶端、Y0的ON/OFF控制
Private Sub Comd_send_Click()
On Error GoTo ErrProc
Dim sendstr(14) As Byte
sendstr(0) = &H0 '交換識(shí)別號(hào)高字節(jié)谎势,通常為0
sendstr(1) = &H0 '交換識(shí)別號(hào)低字節(jié),通常為0
sendstr(2) = &H0 '協(xié)議識(shí)別號(hào)高字節(jié)杨名,為 0
sendstr(3) = &H0 '協(xié)議識(shí)別號(hào)低字節(jié)脏榆,為 0
sendstr(4) = &H0 '字節(jié)長度高字節(jié)
sendstr(5) = &H9 '以下字節(jié)長度低字節(jié)
sendstr(6) = &HFF '單元識(shí)別號(hào),確省為 255
sendstr(7) = &H5 '寫一個(gè)線圈命令代碼
sendstr(8) = &H0  '寫線圈的起始地址高字節(jié)
sendstr(9) = &H1'寫線圈的起始地址低字節(jié)
sendstr(10) = a '=FF打開線圈台谍,=00關(guān)閉線圈
sendstr(11) = &H0 '
Dim aStr As String
Dim i须喂, j As Integer
For i = 0 To 11
aStr = aStr & Chr(sendstr(i))
Next
Winsock1.SendData aStr
Exit Sub
ErrProc:
MsgBox "傳輸數(shù)據(jù)失敗", vbCritical趁蕊, "網(wǎng)絡(luò)傳輸"
End Sub
(3)線圈狀態(tài)顯示及寄存器讀出數(shù)據(jù)顯示
Private Sub winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strdata() As Byte
Dim i坞生, j As Integer
Dim s As String
Dim s1 As String
Dim IO As Byte
i = Winsock1.BytesReceived
ReDim strdata(i)
Winsock1.GetData strdata, vbByte, i
For j = 0 To i - 1
s = s + Hex(strdata(j))
Next
If s Like "*5*" Then
s1 = Mid(s翁写, 12惠所, 2)
If s1 = "FF" Then
IO = 1
a = &H0
Else
IO = 0
a = &HFF
End If
If IO = 1 Then
Shape1.FillColor = RGB(0, 255汰检, 0) 'green
Labl3.Caption = "IO點(diǎn)接通"
Else
Shape1.FillColor = RGB(255更掺, 0, 0) 'red
Labl3.Caption = "IO點(diǎn)斷開"
End If
End If If s Like "*3*" Then
Text3.Text = Text3.Text + Mid(s何杈, 11) + ""
End If
(4)拴挫、讀多個(gè)寄存器數(shù)據(jù)
End Sub Private Sub Command4_Click()
On Error GoTo ErrProc
Dim str(12) As Byte
str(0) = &H0 '交換識(shí)別號(hào)高字節(jié),通常為 0
str(1) = &H0 '交換識(shí)別號(hào)低字節(jié)剿液,通常為 0
str(2) = &H0 '協(xié)議識(shí)別號(hào)高字節(jié)揩榴,為 0
str(3) = &H0 '協(xié)議識(shí)別號(hào)低字節(jié),為 0
str(4) = &H0 '字節(jié)長度高字節(jié)
str(5) = &H6 '以下字節(jié)長度低字節(jié)
str(6) = &HFF '單元識(shí)別號(hào)寨支,確省為 255
str(7) = &H3 '讀多個(gè)寄存器命令代碼
str(8) = &H10  '讀數(shù)據(jù)的起始地址高字節(jié)
str(9) = &HC8 '讀數(shù)據(jù)的起始地址低字節(jié)
str(10) = &H0 '數(shù)據(jù)長度高字節(jié)
str(11) = &H1 '數(shù)據(jù)長度低字節(jié)
Dim bStr As String
Dim i As Integer
For i = 0 To 11
bStr = bStr & Chr(str(i))
Next
Winsock1.SendData bStr
Exit Sub
ErrProc:
MsgBox "傳輸數(shù)據(jù)失敗"胧扇, vbCritical, "網(wǎng)絡(luò)傳輸"
End Sub
D100寄存器的寫入操作類似蜀悯,由于篇幅所限其他代碼在此就不再贅述。
9.結(jié)速語
    工業(yè)以太網(wǎng)是工業(yè)自動(dòng)化網(wǎng)絡(luò)發(fā)展的必然趨勢竹观,為了對工業(yè)設(shè)備進(jìn)行實(shí)時(shí)的管理與監(jiān)控镐捧,工業(yè)以太網(wǎng)設(shè)備大多都支持遠(yuǎn)程管理,而且各廠商業(yè)都有各自的網(wǎng)絡(luò)管理軟件以提供對網(wǎng)絡(luò)設(shè)備進(jìn)行友好的圖形化界面操作臭增。管理員還可以通過遠(yuǎn)程telnet或web界面的方式直接對設(shè)備進(jìn)行調(diào)試懂酱。完善的兼容性,可靠的穩(wěn)定性誊抛,對惡劣環(huán)境的適應(yīng)性列牺,強(qiáng)大的冗余能力和方便的可管理性,是人們越來越多地在網(wǎng)絡(luò)設(shè)計(jì)過程中采用工業(yè)以太網(wǎng)的原因拗窃,而這也勢必成為工業(yè)以太網(wǎng)在越來越多的網(wǎng)絡(luò)環(huán)境里大顯身手的重要契機(jī)瞎领。借臺(tái)達(dá)即將推出以太網(wǎng)模塊之際撰寫此文,希望能夠?yàn)槠湟蕴W(wǎng)模塊的推廣提供一些幫助随夸。由于本人水平有限本文編寫難免會(huì)有錯(cuò)漏之處九默,也請讀者給予批評指正。

聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng)宾毒,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享驼修,并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),也不構(gòu)成任何其他建議卸橘。本站部分作品是由網(wǎng)友自主投稿和發(fā)布敌夜、編輯整理上傳,對此類作品本站僅提供交流平臺(tái),不為其版權(quán)負(fù)責(zé)数凫。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻奖冻、圖片、文字如涉及作品版權(quán)問題医窖,請第一時(shí)間告知账阳,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容,以保證您的權(quán)益蔽树!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn狡氏。

網(wǎng)友評論 匿名: