论坛
博客
播客TV
相册
设为首页
加入收藏夹
联系我们
变频器旗下
PLC
DCS
PAC
PC-BASED
CPCI-PXI
嵌入式系统
SCADA
工业以太网
机器视觉
自动化软件
人机界面
低压变频器
高压变频器
运动控制
机械传动
传感器
现场仪表
显示控制仪表
分析测试仪表
执行机构
工业安全
低压电器
电源
纺织机械
包装机械
塑料机械
橡胶机械
轨道交通
印刷机械
烟草机械
起重机械
电梯
机床
水处理
冶金
石化
电力
汽车
建材
电子
造纸
矿业
首页
厂商
产品中心
技术
有奖互动
商务采购
新闻
市场研究
展会
人才交流
网上书店
下载中心
在线教程
您所在的位置: 工控首页 > 自助资料 > 正文
利用Winscok控件实现VB与PLC的以太网通信
发布日期:2008-1-14 10:26:13 访问次数:187 [南京宁控系统工程有限公司 ]
1、引言
在网络的各个层上,随着自动化和控制工程师需要与网络打交道的机会越来越多,联网的愿望和需要也正在逐渐高涨。而且,在监控和数据采集应用中,大多数工程师已将以太网协议应用于数据采集与监视控制系统(SCADA)和工厂的诊断、测试及维护。如何简便地实现与PLC的交互已经成为众多厂商新的竞争战场。由此产生了人机界面及各种组态软件产品,这些产品的出现简化了对PLC的控制、操作,使PLC的应用更加方便。但也有其共同的缺点,价格普遍偏高和可二次开发性较差。VB作为“原始”的编程语言,兼具了上述两方面的优势。本文结合一个简单的案例来粗略讨论如何通过VB实现PC机与PLC的以太网通信问题。
2、以太网通信的基本概念
2.1以太网的标准
以太网是一种局域网。早期标准为IEEE 802.3,数据链路层使用CSMA/CD,10Mb/s速度物理层有:
(1)10 Base 5粗同轴电缆,RG-8,一段最长为500m。
(2)10 Base 2细同轴电缆,RG-58,一段最长为185m。
(3)10 Base T双绞线,UTP或STP,一段最长为100m。
2.2工业以太网与商用以太网的区别
什么是工业以太网?技术上,它与IEEE802.3兼容,故从逻辑上可把商用网和工业网看成是一个以太网,而用户可根据现场情况,灵活装配自己的网络部件。但从工业环境的恶劣和抗干扰的要求,设计者希望采用市场上可找到的以太网芯片和媒介,兼顾考虑下述工业现场的特殊要求:首先要考虑高温、潮湿、振动。二是对工业抗电磁干扰和抗辐射有一定要求,如满足EN50081-2、EN50082-2标准,而办公室级别的产品未经这些工业标准测试,表1列出了一些常用工业标准。为改善抗干扰性和降低辐射,工业以太网产品多使用多层线路板或双面电路板,且外壳采用金属如铸铝屏蔽干扰。三是电源要求,因集线器、交换机、收发器多为有源部件,而现场电源的品质又较差,故常采用双路直流电或交流电为其供电,另外考虑方便安装,工业以太网产品多数使用DIN导轨或面板安装。四是通信介质选择,在办公室环境下多数配线使用UTP,而在工业环境下推荐用户使用STP(带屏蔽双绞线)和光纤。
2.3 使用TCP/IP协议的原因及其概述
最主要的一个原因在于它能使用在多种物理网络技术上,包括局域网和广域网技术。TCP/IP协议的成功,很大程度上取决于它能适应几乎所有底层通信技术。20世纪80年代初,先在X.25上运行TCP/IP协议;而后又在一个拨号语音网络(如电话系统)上使用TCP/IP协议,又有TCP/IP在令牌环网上运行成功;最后又实现了TCP/IP远程分组无线网点与其他Internet网点间TCP/IP通信。所以TCP/IP协议极其灵活,具备连接不同网络的能力。另外,使用TCP/IP也简化了OSI模型,因为它省略了表示层和会话层。如果现在把以太网的物理层和数据链路层加到OSI模型,就构成了基于以太网的TCP/IP网,如图1所示。用以太网实现TCP/IP也是经济的一种方式。
IP是Internet最基本的协议。IP是面向报文的协议,它独立处理每个报文包,每个报文包必须含有完整的寻址信息。IP报文包的格式如图2所示。
IP地址的类型共有4种(如图3所示):A类用于处理超大型网络,最多16387064个主机(1~126);B类网络最多可有64516个主机(网络地址的第一段为128~191);C类用于小型网络,最多可有254个主机(网络地址的第一段为192~223);D类用于多点播送,用于多目的信息的传输。全零(“0.0.0.0”)地址对应于当前主机,全1地址(“255.255.255.255”)是当前子网的广播地址。
TCP是基于传输层的协议,协议文件可从RFC793得到,使用广泛,面向连接的可靠协议。它能把报文分解为数段,在目的站再重新装配这些段,支持重新发送未被收到的段,提供两台设备间的全双工连接,允许它们高效地交换大量数据。TCP使用滑动窗口协议来高效使用网络。由于TCP很少干预底层投递系统的工作,它适应各种投递系统,且提供流量控制,能使各种不同速率的系统进行通信。报文段是TCP所使用的基本传输单元,用于传输数据或控制信息。
3、MODBUS数据帧格式
在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式。图3所示,Modbus TCP数据帧包含报文头、功能代码和数据3部分。
4、MODBUS功能代码
4.1 3种类型
(1)公共功能代码(如表2所示):已定义好的功能码,保证其唯一性,由Modbus.org认可。
(2)用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用的唯一性。如变为公共代码,需交RFC认可。
(3)保留的功能代码,由某些公司使用在某些传统设备的代码,不可作为公共用途。
表2 Modbus常用公共代码功能
4.2功能代码划分:按应用深浅,可分为3个类别。
(1)类别0,对于客户机/服务器最小的可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)。
(2)类别1,可实现基本互易操作的常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。
(3)类别2,用于人机界面、监控系统的例行操作和数据传送功能:
(4)强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)。
5、VB的基本概念
VB(Visual Basic)是面向对象的程序设计语言,用它来开发Windows操作系统下的应用程序,它提供了很多接口成员,对象、属性、事件、方法就是4个重要的接口,VB提供了许多常用的控件。
5.1卷标控件
卷标控件如图4(a)所示,该控件专用于显示文字、数字用,显示如图4(b)所示。
5.2 按钮控件
按钮控件如图5(a)所示,该控件使用率很高,提供一个供系统用户操作用的按钮,如图5(b)所示。
6、基于Winsock控件的TCP/IP以太网通信
要完成VB与PLC等设备的以太网通信要用到Winsock控件,在此有必要对该控件作较详细的说明。Winsock是一个ActiveX控件,需要要手动添加许多项目,其步骤如下:
(1)选择菜单的【工程】。
(2)选择【部件】。
(3)在弹出的对话框中做如图6的选择。
图6 对话框界面
(4)如图7所示,在部件选项卡就会出现Winsock控件。
图7 Winsock控件
7、Winsock控件的基本属性
此控件对于用户在运行时不可见,提供了一个简单的途径访问TCP及UDP网络服务而无需了解底层细节,使用时你只需设置属性、在恰当的时候调用它提供的方法即可。
主要属性有:
BytesReceived:返回当前缓冲区中的字节数量,我们可以使用 GetData 方法以接收数据。只读且设计时不可用。
LocalHostName:返回本机名字符串,设计时不可用。
LocalIP:返回以(xxx.xxx.xxx.xxx)格式表达的IP地址串。设计时不可用,运行时只读。
LocalPort :本机使用接收端口可读写,设计时可用,Long型。对于客户,如果无需指定端口,则用端口0发送数据。在此情况下,控件将随机选择一个端口。在一个连接确定后,为TCP的端口。对于服务器,指用于监听的端口。如设置为0,则用随机数。在调用Listen 方法后,该属性自动包含用到的端口。端口0总是用于在两计算机间建立动态连接。客户希望通过端口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所示
图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界面的方式直接对设备进行调试。完善的兼容性,可靠的稳定性,对恶劣环境的适应性,强大的冗余能力和方便的可管理性,是人们越来越多地在网络设计过程中采用工业以太网的原因,而这也势必成为工业以太网在越来越多的网络环境里大显身手的重要契机。借台达即将推出以太网模块之际撰写此文,希望能够为其以太网模块的推广提供一些帮助。由于本人水平有限本文编写难免会有错漏之处,也请读者给予批评指正。
(工控在线
www.online-ipc.com
)
相关新闻
在线联系该厂商
关于[利用Winscok控件实现VB与PLC的以太网通信],我有如下需求或意向
还没有注册?
点击立即注册
用户名:
密码:
评论
匿名 查看评论
商家有关信息
编号:
地址:
邮编:
电话:
传真:
MSN:
推荐信息
·[专题报道]北京安盟华御物理隔离网闸保证石化生产网的信息安全,提高生产效率
·[专业论文]变频器过载的原因分析
·[典型应用]变频器在纺织业的应用
·[业界动态]情系地震灾区捐款5000万日元--三菱电机
·[业界动态]日立集团捐献800万元物资 支援地震救灾工作
·[专业论文]变频技术的发展趋势及其应用
·[行业动态]ABB节能大道:百年荣耀与节能梦想
·[业界动态]富士康为四川地震灾区捐款6000万元
·[业界动态]恩智浦半导体捐赠100万人民币
·[业界动态]森纳士公司员工紧急为汶川地震同胞捐款
热点信息
·[人才动态]就业服务与就业管理规定 2008年1月1日起施行
·[人物专访]研布新局 龙腾中华
·[业界动态]后台新闻发布
·[研讨会]2007 第三届NI测控前沿技术论坛
·[业界动态]研华 IPC-619原装整机 + 研华17寸液晶显示器 价格大优惠中!
·[业界动态]富士康为四川地震灾区捐款6000万元
·[业界动态]博世力士乐召开新闻发布会 宣布收购深圳康沃和西安春日
·[研讨会]创新HMI4理念,深耕中国市场
·[研讨会]2008年1月16日来自Digi的数据中心控制台管理解决方案在线研讨会(高级)--火热报名中!
·[研讨会]贝加莱08年1月份技术培训课程安排
最新信息
·[展会新闻]2009年德国汉诺威工业展
·[解决方案]正维科技工业以太网交换机在地铁配电监控系统中应用方案
·[解决方案]正维科技工业以太网交换机在铁路综合监控通信系统解决方案
·[典型应用]正维科技工业以太网交换机在北京地铁2号线PIS系统的应用
·[典型应用]正维科技WISE2000在地铁屏蔽门系统的应用
·[典型应用]正维科技工业以太网交换机在煤炭矿井综合自动化控制系统的应用
·[解决方案]正维科技WISE6800在高速公路收费系统的应用
·[解决方案]正维科技WISE工业以太网交换机应用于风电场
·[典型应用]正维科技工业以太网交换机在上海松江污水处理厂的应用
·[典型应用]正维科技工业以太网交换机应用于黄岛集中供热工程
工控在线旗下网站
工控论坛
|
工控博客
|
工控TV
联系我们
|
广告联系
|
市场研究
|
人才服务
|
用户注册
|
用户反馈
|
本站介绍
|
有奖报错
|
版权声明
|
工控联盟
Copyright(c) 2007 - 2008 工控在线(www.online-ipc.com) All Rights Reserved
浙ICP备07029062号