您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
win7拨号上网(如何通过VB实现PC机与PLC的以太网通信,解决方案分析)
以太网,字节,寄存器win7拨号上网(如何通过VB实现PC机与PLC的以太网通信,解决方案分析)
发布时间:2016-12-08加入收藏来源:互联网点击:
-
计算机间建立动态连接。客户希望通过端口0获得一个随机端口以”回调”连接服务器。
Protocol :套接字类型,为TCP或UDP二者之一,缺省为TCP类型。设置为sckTCPProtocol表示TCP协议sckUDPProtocol表示UDP协议。在此属性被重置之前需用Close方法关闭之。
RemoteHost:发送或接收数据的主机,你可提供主机名如:FTP://ftp.microsoft.com,或一IP地址串,例如“100.0.1.1”。
RemoteHostIP:远程主机的IP地址。对于客户程序,在连接确定后使用Connect方法,此属性包含远程主机的IP名串。对于服务器程序, 在引入连接需求后(Connection Request 事件),此属性包含IP串。当使用UDP套接字,在Data Arrival事件发生后,此属性为发送UDP数据的机器IP地址串。
RemotePort:连接套接字端口值。例如通常HTTP应用使用80端口,FTP则使用21。
State:控件的状态, 只读且设计时不可用。可为以下值:
常量描述
sckClosed 0 缺省值,关闭套接字
sckOpen 1 打开套接字
sckListening 2 正监听端口
sckConnectionPending 3 正在进行未定的连接
sckResolvingHost 4 正解析主机地址
sckHostResolved 5 主机地址已解析
sckConnecting 6 正在连接
sckConnected 7 已连接
sckClosing 8 连接关闭
sckError 9 错误
8、VB与PLC基于MODBUS TCP的以太网通信的实现
以下举例说明如何实现VB与PLC的以太网通信。
(1)控制要求:用交替型按钮控制Y0,并用指示灯显示Y0状态(绿色为运行,红色为停止);能够对D100、D200两个寄存器进行数值写入与读出的操作。
(2)实现思路:同样Y0的地址分别为H0500。写入FF00为ON,0000为OFF,按功能码05操作;D100,D200地址分别为H1064,H10C8,按功能码03操作即可实现寄存器的读功能,按功能码10H操作即可实现寄存器的写功能。
(3)VB接口的设计如图8所示
在界面中用按钮控制Y0的ON/OFF及D100、D200数据的写与读;用shape组件做指示灯,指示Y0的ON/OFF状态;用Winsock控件实现PLC与VB的通信。
(1)实现功能的代码构成
(2)建立网络连接
Private Sub Command1_Click()
Winsock1.Close
Winsock1.Connect 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 ‘交换识别号高字节,通常为0
sendstr(1) = &H0 ’交换识别号低字节,通常为0
sendstr(2) = &H0 ‘协议识别号高字节,为 0
sendstr(3) = &H0 ’协议识别号低字节,为 0
sendstr(4) = &H0 ‘字节长度高字节
sendstr(5) = &H9 ’以下字节长度低字节
sendstr(6) = &HFF ‘单元识别号,确省为 255
sendstr(7) = &H5 ’写一个线圈命令代码
sendstr(8) = &H0 ‘写线圈的起始地址高字节
sendstr(9) = &H1’写线圈的起始地址低字节
sendstr(10) = a ‘=FF打开线圈,=00关闭线圈
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 “传输数据失败”, vbCritical, “网络传输”
End Sub
(3)线圈状态显示及寄存器读出数据显示
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点接通”
Else
Shape1.FillColor = RGB(255, 0, 0) ’red
Labl3.Caption = “IO点断开”
End If
End If If s Like “*3*” Then
Text3.Text = Text3.Text Mid(s, 11) “”
End If
(4)、读多个寄存器数据
End Sub Private Sub Command4_Click()
On Error GoTo ErrProc
Dim str(12) As Byte
str(0) = &H0 ‘交换识别号高字节,通常为 0
str(1) = &H0 ’交换识别号低字节,通常为 0
str(2) = &H0 ‘协议识别号高字节,为 0
str(3) = &H0 ’协议识别号低字节,为 0
str(4) = &H0 ‘字节长度高字节
str(5) = &H6 ’以下字节长度低字节
str(6) = &HFF ‘单元识别号,确省为 255
str(7) = &H3 ’读多个寄存器命令代码
str(8) = &H10 ‘读数据的起始地址高字节
str(9) = &HC8 ’读数据的起始地址低字节
str(10) = &H0 ‘数据长度高字节
str(11) = &H1 ’数据长度低字节
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 “传输数据失败”, vbCritical, “网络传输”
End Sub
D100寄存器的写入操作类似,由于篇幅所限其他代码在此就不再赘述。
9.结速语
工业以太网是工业自动化网络发展的必然趋势,为了对工业设备进行实时的管理与监控,工业以太网设备大多都支持远程管理,而且各厂商业都有各自的网络管理软件以提供对网络设备进行友好的图形化界面操作。管理员还可以通过远程telnet或web界面的方式直接对设备进行调试。完善的兼容性,可靠的稳定性,对恶劣环境的适应性,强大的冗余能力和方便的可管理性,是人们越来越多地在网络设计过程中采用工业以太网的原因,而这也势必成为工业以太网在越来越多的网络环境里大显身手的重要契机。借台达即将推出以太网模块之际撰写此文,希望能够为其以太网模块的推广提供一些帮助。由于本人水平有限本文编写难免会有错漏之处,也请读者给予批评指正。
本文到此结束,希望对大家有所帮助呢。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |