作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | 利用Winscok控件实现VB与PLC的以太网通信 |
技术领域 | 工业以太网 |
行业 | |
简介 | 工业以太网以其特有的低成本,高实效,高扩展性及高智能的魅力,吸引着越来越多的制造业的厂商。因此通过MODBUS/TCP协议实现诸如PLC的I/O模块,以及连接其它简单域总线或 I/O模块的网关服务有重要的意义。本文基于VB讨论PLC与监控计算机的通信问题。 |
内容 |
4、 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)所示。
(4)如图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所示 在界面中用按钮控制Y0的ON/OFF及D100、D200数据的写与读;用shape组件做指示灯,指示Y0的ON/OFF状态;用Winsock控件实现PLC与VB的通信。 |