利用Winscok控件实现VB与PLC的以太网通信_第1页
利用Winscok控件实现VB与PLC的以太网通信_第2页
利用Winscok控件实现VB与PLC的以太网通信_第3页
利用Winscok控件实现VB与PLC的以太网通信_第4页
利用Winscok控件实现VB与PLC的以太网通信_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用Winscok控件实现VB与PLC的以太网通信关键词:VBMODBUS/TC初议可编程控制器以太网1、 引言在网络的各个层上,随着自动化和控制工程师需要与网络打交道的机会越来越多,联网的愿望和需要也正在逐渐高涨。而且,在监控和数据采集应用中,大多数工程师已将以太网协议应用于数据采集与监视控制系统(SCADA和工厂的诊断、测试及维护。如何简便地实现与PLC的交互已经成为众多厂商新的竞争战场。由此产生了人机界面及各种组态软件产品,这些产品的出现简化了对PLC的控制、操作,使PLC的应用更加方便。但也有其共同的缺点,价格普遍偏高和可二次开发性较差。VB作为“原始”的编程语言,兼具了上述两方面的优

2、势。本文结合一个简单的案例来粗略讨论如何通过VB实现PC机与PLC的以太网通信问题。2、以太网通信的基本概念1.1 以太网的标准以太网是一种局域网。早期标准为IEEE802.3,数据链路层使用CSMA/CD10Mb/s速度物理层有:(1)10Base5粗同轴电缆,RG-8,一段最长为500m。(2)10Base2细同轴电缆,RG-58,一段最长为185ml(3)10BaseT双绞线,UTP或STP,一段最长为100mo1.2 工业以太网与商用以太网的区别什么是工业以太网?技术上,它与IEEE802.3兼容,故从逻辑上可把商用网和工业网看成是一个以太网,而用户可根据现场情况,灵活装配自己的网络部

3、件。但从工业环境的恶劣和抗干扰的要求,设计者希望采用市场上可找到的以太网芯片和媒介,兼顾考虑下述工业现场的特殊要求:首先要考虑高温、潮湿、振动。二是对工业抗电磁干扰和抗辐射有一定要求,如满足EN50081-2、EN50082-2标准,而办公室级别的产品未经这些工业标准测试,表1列出了一些常用工业标准。为改善抗干扰性和降低辐射,工业以太网产品多使用多层线路板或双面电路板,且外壳采用金属如铸铝屏蔽干扰。三是电源要求,因集线器、交换机、收发器多为有源部件,而现场电源的品质又较差,故常采用双路直流电或交流电为其供电,另外考虑方便安装,工业以太网产品多数使用DIN导轨或面板安装。四是通信介质选择,在办公

4、室环境下多数配线使用UTP而在工业环境下推荐用户使用STP(带屏蔽双绞线)和光纤。表1常用工业标准标准1测试方法描述EN55024EN610004-2静电放电EN55024EN61000-4-3抗辐射午扰EN55024EN61000-4快速瞬态脉冲EN55024EN61000-4-5浪涌电压EN55024EN61000-4-6传导干扰EN55024EN61000-4-11瞬降瞬断电压EN55022CISPR22罪射放射EN55022PCISPR22传导辐射1.3 使用TCP/IP协议的原因及其概述最主要的一个原因在于它能使用在多种物理网络技术上,包括局域网和广域网技术。TCP/IP协议的成功,

5、很大程度上取决于它能适应几乎所有底层通信技术。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也是经济的一种方式。应用层.表示层会话层传输层网络层数据链路层物

6、理层应用层ranarisscnC(r3olProtocolEnternetProtocolCSMACD电理层T,FL.IIP信息。图1ISO/OSI与以太网TCP/IP通信协议模型是Internet最基本的协议。IP是面向报文的协议,它独立处理每个报文包,每个报文包必须含有完整的寻址IP报文包的格式如图2所示。图2IP报文包的格式IP地址的类型共有4种(如图3所示):A类用于处理超大型网络,最多16387064个主机(1126);B类网络最多可有64516个主机(网络地址的第一段为128191);C类用于小型网络,最多可有254个主机(网络地址的第一段为192223);D类用于多点播送,用于多

7、目的信息的传输。全零(“”)地址对应于当前主机,全1地址(“55”)是当前子网的广播地址。TCP是基于传输层的协议,协议文件可从RFC793得到,使用广泛,面向连接的可靠协议。它能把报文分解为数段,在目的站再重新装配这些段,支持重新发送未被收到的段,提供两台设备间的全双工连接,允许它们高效地交换大量数据。TCP使用滑动窗口协议来高效使用网络。由于TCM艮少干预底层投递系统的工作,它适应各种投递系统,且提供流量控制,能使各种不同速率的系统进行通信。报文段是TCP所使用的基本传输单元,用于传输数据或控制信息。3、MODBUS据帧格式在TCP/IP以太网上传输

8、,支持EthernetII和802.3两种帧格式。图3所示,ModbusTCP数据帧包含报文头、功能代码和数据3部分。ModbusTCP/PPDU数据PDU图3HODBUSTCP数据帧格式下MODBU动能代码3种类型公共功能代码(如表2所示):已定义好的功能码,保证其唯一性,由M认可。用户自定义功能代码有两组,分别为6572和100110,无需认可,但不保证代码使用的唯一性。如变为公共代码,需交RFC认可。保留的功能代码,由某些公司使用在某些传统设备的代码,不可作为公共用途。:常用公共功能代码功就码十进码子码十六迸制位操作开关量弑入读整人点0202内或升美量输出读线图01写单

9、个线现05写多个线固1516位操作模抵量输入读输入寄存券0404内部寄存器或输出寄存器(梗拟量输人)读多个寄存器0303写单个寄存器0606写多个寄存器1610谟,写多个寄存器231济前写寄存盖221&文件记录读文件记录20614写文件记费615封饕接口读设备标识4厂142B表2Modbus常用公共代码功能功能代码划分:按应用深浅,可分为3个类别。(1)类别0,对于客户机/服务器最小的可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)。(2)类别1,可实现基本互易操作的常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5

10、);写单一寄存器(fc.6)。(3)类别2,用于人机界面、监控系统的例行操作和数据传送功能:(4)强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)。5、VB的基本概念VB(VisualBasic)是面向对象的程序设计语言,用它来开发Windows操作系统下的应用程序,它提供了很多接口成员,对象、属性、事件、方法就是4个重要的接口,VB提供了许多常用的控件。卷标控件卷标控件如图4(a)所示,该控件专用于显示文字、数字用,显示如图4(b)所示。按钮控件按钮控件如图5(a)所示,该控件使用率很高,提供一个供系统用

11、户操作用的按钮,如图5(b)所示。6、基于Winsock控件的TCP/IP以太网通信要完成VB与PLC等设备的以太网通信要用到Winsock控件,在此有必要对该控件作较详细的说明。Winsock是个ActiveX控件,需要要手动添加许多项目,其步骤如下:(1)选择菜单的【工程】。(2)选择【部件】。(3)在弹出的对话框中做如图6的选择。图6对话框界面(4)如图7所示,在部件选项卡就会出现Winsock控件。'General-A-0_|p6留邱由用学6口口圜呼、圆震2i=!EBZwTl;皿.担j图7Winsock控件界7、Winsock控件的基本属性此控件对于用户在运行时不可见,提供了一

12、个简单的途径访问TCP及UDP网络服务而无需了解底层细节,使用时你只需设置属性、在恰当的时候调用它提供的方法即可。主要属性有:GetData方法以接收数据。只读且设计时不可用。BytesReceived:返回当前缓冲区中的字节数量,我们可以使用LocalHostName:返回本机名字符串,设计时不可用。LocallP:返回以(xxx.xxx.xxx.xxx)格式表达的IP地址串。设计时不可用,运行时只读。LocalPort:本机使用接收端口可读写,设计时可用,Long型。对于客户,如果无需指定端口,则用端口0发送数据。在此情况下,控件将随机选择一个端口。在一个连接确定后,为TCP的端口。对于服

13、务器,指用于监听的端口。如设置为0,则用随机数。在调用Listen方法后,该属性自动包含用到的端口。端口0总是用于在两计算机间建立动态连接。客户希望通过端口0获得一个随机端口以“回调"连接服务器。Protocol:套接字类型,为TCP或UDPT者之一,缺省为TCP类型。设置为sckTCPProtocol表示TCP协议sckUDPProtocol表示UD的议。在此属性被重置之前需用Close方法关闭之。RemoteHost:发送或接收数据的主机,你可提供主机名如:FTP:即,或一IP地址串,例如“”。RemoteHostIP:远程主机的IP地址。对于客户程序,在连接确

14、定后使用Connect方法,此属性包含远程主机的IP名串。对于服务器程序,在引入连接需求后(ConnectionRequest事件),此属性包含IP串。当使用UDPg接字,在DataArrival事件发生后,此属性为发送UD啖据的机器IP地址串。RemotePort:连接套接字端口值。例如通常HTTP应用使用80端口,FTP则使用21。State:控件的状态,只读且设计时不可用。可为以下值:常量描述sckClosed0缺省值,关闭套接字sckOpen1打开套接字sckListening2正监听端口sckConnectionPending3正在进行未定的连接sckResolvingHost4正解

15、析主机地址sckHostResolved5主机地址已解析sckConnecting6正在连接sckConnected7已连接sckClosing8连接关闭sckError9错误8、VB与PLC基于MODBUSTC的以太网通信的实现以下举例说明如何实现VB与PLC的以太网通信。(1)控制要求:用交替型按钮控制Y0,并用指示灯显示Y0状态(绿色为运行,红色为停止);能够对D100、D200两个寄存器进行数值写入与读出的操作。(2)实现思路:同样Y0的地址分别为H0500O写入FF00为ON0000为OFF按功能码05操作;D100,D200地址分别为H1064,H10C8按功能码03操作即可实现寄

16、存器的t功能,按功能码10H操作即可实现寄存器的写功能。(3)VB接口的设计如图8所示在界面中用按钮控制Y0的ON/OFF及D100、D200数据的写与读;用shape组件做指示灯,指示Y0的ON/OFF状态;用Winsock控件实现PLC与VB的通信。(1)实现功能的代码构成(2)建立网络连接PrivateSubCommand1_Click()Winsock1.CloseWinsock1.ConnectText1,502mmmddyyyyHh:Nn:Ss")Label2.Caption="Version:1.0:"+Format(NowCommand1.Enab

17、led=FalseCommand1.Enabled=FalseText1.Enabled=FalseEndSub(2)、Y0的ON/OF曲制PrivateSubComd_send_Click()OnErrorGoToErrProcDimsendstr(14)AsBytesendstr(0)=&H0'sendstp)=&H0'sendstr(2)=&H0'sendstr(3)=&H0'sendstr(4)=&H0'sendstr(5)=&H9'交换识别号高字节,通常为交换识别号低字节,通常为协议识别号

18、高字节,为0协议识别号低字节,为0字节长度高字节以下字节长度低字节单元识别号,确省为255写一个线圈命令代码写线圈的起始地址高字节写线圈的起始地址低字节打开线圈,=00关闭线圈sendstr(6)=&HFF'sendstr(7)=&H5'sendstr(8)=&H0'sendstr(9)=&H1'sendstr(10)=a'=FFsendstr(11)=&H0'DimaStrAsStringDimi,jAsIntegerFori=0To11aStr=aStr&Chr(sendstr(i)NextWi

19、nsock1.SendDataaStrExitSubErrProc:MsgBox"传输数据失败",vbCritical,"网络传输”EndSub(3)线圈状态显示及寄存器读出数据显示PrivateSubwinsock1_DataArrival(ByValbytesTotalAsLong)Dimstrdata()AsByteDimi,jAsIntegerDimsAsStringDims1AsStringDimIOAsBytei=Winsock1.BytesReceivedReDimstrdata(i)Winsock1.GetDatastrdata,vbByte,iF

20、orj=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点接通"ElseShape1.FillColor=RGB(255,0,0)'redLabl3.Caption="IO点断开"EndIfEndIfIfsLike"*3*"ThenText3.Text=Text3.Text+Mid(s,11)+""EndIf(4)、读多个寄存器数据EndSubPrivateSubCommand4_Click()OnErrorGoToErrProcDimstr(12)AsBytestr(0)=&H0'交换识别号高字节,通常为0str(1)=&H0'交换识别号低字节,通常为0str(2)=&H0协议识别号高字节,为0str(3)=&H0'协议识别号低字节,为0str(4)=&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论