你现在位置:首页>技术论文>数据通讯>正文
基于Winsock控件实现PLC网络通信控制
日期:2009-9-9 19:12:44 点击:
来源:中国自动化网
作者:
点击【】放大字体.
摘 要:介绍了一个使用Visual Basic的Socket控件与OMRON PLC之间的通信程序,并成功地应用在自动控制系统中,主要实现上位机与OMRON PLC之间的以太网通信,并对它们之间的通信协议作了描述,本文所介绍的通信程序的设计方法具有一定参考价值。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_PLCJS_COM-PLC-技.术_网

关键词:可编程逻辑控制器;以太网;FINS;Winsock控件
——可——编——程——控-制-器-技——术——门——户

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  在工业控制中,用PLC控制的工程在上/下位机通讯上一般采用RS-232/RS-485串口通讯,这种方法对于数据量较大,通讯距离较远,实时性要求高的控制系统,很难满足通讯需要。
WWW_PLCJS_COM-PLC-技.术_网

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  近年来随着计算机网络技术的飞速发展,网络化数控已经成为现代制造业发展的必然趋势, 控制系统正向虚拟化、网络化、集成化、分布化和节点智能化的方向发展。[1]许多大型PLC厂商生产的PLC都配备了相应的以太网通信模块,本文讨论了OMRON PLC的以太网通信体系结构,并以CP1H PLC的ENT2l以太网模块为例实现与计算机的通信。
WW.W_PLCJS_COM-PLC-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

1. Winsock网络通信控件
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

  Winsock控件是不可视控件,它提供了访问TCP和UDP网络服务非常简便的途径,使编程人员开发客户/服务器应用程序时,不必了解TCP的细节或调用低级的Winsock API函数,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。
WWW_PL※CJS_COM-PLC-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

  WinSock主要支持两种类型的套接字:①流式套接字(Stream Socket)也称面向连接方式,该方式对应的是TCP协议,其传输特点是通信可靠性高,可以保证数据流的传输是可靠的、有序的、无重复的,可提供双向的数据流,数据被看作字节流,无长度限制。②数据报套接字(Datagram Socket)又称无连接方式,对应的是UDP协议,这种方式不提供数据传输的正确性、有序性和无重复性,因为它支持面向记录的数据流。因此,传输的数据可能丢失和重复,并且接收顺序混乱,报文长度是有限的。考虑到本系统对通信可靠性和正确性的要求很高,选用流式套接字方式。基于Client/Server模式的流式套接字通讯过程如图1所示。
WWW_PLC※JS_COM-PmLC-技.术_网

WWW_P※LCJS_COM-PLC-)技.术_网

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

图1 流式套接字进程通讯过程时序图
W1WW_P4LCJS_COM-PLC-技.术_网

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

WWW_PLCJS@_COM%-PLC-技.术_网

2.Ethernet网络通信单元的设置
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

——可——编——程——控-制-器-技——术——门——户

  在组建网络时,根据网络类型的不同,网络中的每个节点需要安装相应的通信单元,PLC上需安装Ethernet网络通信模块,例如0MR0N公司的CJ1W—ETN21以太网模块。应用之前必需对网络进行必要的设置,分为开关设置和CPU总线单元系统设置。
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

  开关设置主要包括以下几项内容:确定分配给CJ1W—ETN21单元的内存工作区(CIO区、DM区),该地址在CPU总线区,由UNIT No.开关确定ETN单元的单元号范围为0~F;NODE No.旋转开关设定两组l6进制数作为ETN单元在网络中的节点号,范围为O1~7E;IP地址设置网络号和主机节点号,由32位二进制数组成,分4段以十进制数表示。
WWW_PLCJS_COM-PLC-技.术_网

plcjs.技.术_网

  CPU总线单元设置主要通过编程设备如CX—Programmer软件或编程器对网络单元进行模式、本地IP地址、子网掩码、FINS端口号、FTP登录名及口令和IP路由器表等项进行设定。若使用FINS/TCP协议,则还需在以太网单元设置中修改FINS/TCP项的部分参数,如:自动分配的FINS节点号、是否保持激活等项。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

W1WW_P4LCJS_COM-PLC-技.术_网

3.面向上位计算机的通信协议
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WWW_PLC※JS_COM-PmLC-技.术_网

  如图2所示,以太网的分层模型分为物理层(Physical Layer)、网际层(Internet Layer)、传输层(Transpot Layer)和应用层(Application Layer)。其中:传输层可使用无连接的UDP或需建立连接的TCP协议;应用层为FINS(Factory Interface Network Service)协议,FINS协议是由OMRON公司开发的用于工厂自动化控制网络的指令响应系统。主要规定对PLC存储空间的数据读写等操作方法。应用层使用FINS协议,传输层使用TCP协议的通信实现方法称为FINS/TCP方法。
W1WW_P4LCJS_COM-PLC-技.术_网

WWW_PL※CJS_COM-PLC-技.术_网

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

图2 网络的分层结构
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

P.L.C.技.术.网——可编程控制器技术门户

WWW_PL※CJS_COM-PLC-技.术_网

  FINS协议包含指令系统和响应系统,其命令帧格是由FINS报头、指令代码、响应代码和正文等几部分组成。从上位计算机发出的指令和响应必须符合下面帧的格式要求,并提供合适的FINS报头信息。[3-4]FINS通信服务是通过FINS命令帧和它们对应的响应帧交换实现的。
WWW_PL※CJS_COM-PLC-技.术_网

WWW_P※LCJS_COM-PLC-)技.术_网

  FINS命令/响应帧格式如图3所示。FINS/TCP header中规定了五种命令,用于客户机(host computer)与服务器(PLC)之间通信:发送客户机节点地址(node address);(2)发送服务器节点地址(node address);(3)发送Fins frame;(4)Fins frame发送出错通知;(5)客户机与服务器联机确认。
WWW_P※LCJS_CO※M-PLC-技-.术_网

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WW.W_PLCJS_COM-PLC-技.术_网

图3 FINS命令/响应帧格式
WWW_PLCJS@_COM%-PLC-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WW.W_PLC※JS_C,OM-PL,C-技.术_网

4.通信程序的具体实现
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_PLCJS@_COM%-PLC-技.术_网

  在新建VB工程后,需要执行VB工具栏“工程/部件” 命令,将Winsock控件添加到工程中, 并命名为“WskClient”。程序采用TCP/IP协议进行通信,其主要属性设定如下:
WWW_PLC※JS_COM-PmLC-技.术_网

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  With WskClient
——可——编——程——控-制-器-技——术——门——户

——可——编——程——控-制-器-技——术——门——户

  .Protocol = sckTCPProtocol ‘采用TCP/IP协议
plcjs.技.术_网

WWW.PLCJS.COM——可编程控制器技术门户

  .LocalPort = 9600 ‘本地计算机端口号
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_P※LCJS_CO※M-PLC-技-.术_网

  .RemoteHost = txtIP.Text ‘取得远程PLC的IP地址
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

W1WW_P4LCJS_COM-PLC-技.术_网

  .RemotePort = txtPort.Text ‘远程PLC端口号
WWW_PLCJS_COM-PLC-技.术_网

WWW_PLCJS_COM-PLC-技.术_网

  .Bind 9600 ‘指定使用的本地端口
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

——可——编——程——控-制-器-技——术——门——户

  End With
WWW.PLCJS.COM——可编程控制器技术门户

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  初始化工作完成后向PLC提出连接请求,待PLC接受请求并发送应答信息后,客户端程序依照各种帧格式建立好要发送的信息帧,就可以与PLC进行双向的数据交流了。在这一过程中,可建立发送失败后的重发机制,以增强通信的可靠性。
W1WW_P4LCJS_COM-PLC-技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

  首先,建立并发送“握手信息”指令(20字节),指明客户机节点号;当计算机接收到PLC返回帧(24字节)后,检查PLC是否收到命令,并取得服务器和客户机节点号。当计算机接收到PLC返回的数据时,会产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在DataArrival事件中,可以调用GetData方法接收数据。如果接收到Close事件,则用Close方法关闭连接。另外,可用Winsock的State属性来反映当前TCP/IP的连接状态。这里仅列举主要程序如下:
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_PLC※JS_COM-PmLC-技.术_网

  ‘向服务器请求连接
P.L.C.技.术.网——可编程控制器技术门户

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

  WskClient.Connect
WWcW_PLCJS_COM-PLC-技.术_网

P.L.C.技.术.网——可编程控制器技术门户

  TimeDelay 100
plcjs.技.术_网

WWW_PLC※JS_COM-PmLC-技.术_网

  Do
WWW_PLCJS@_COM%-PLC-技.术_网

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  DoEvents
WWW.PLCJS.COM——可编程控制器技术门户

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  Loop Until WskClient.state=sckConnected
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WWW.PLCJS.COM——可编程控制器技术门户

  ‘建立并发送FINS命令帧
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

  Private Sub SendData_Click()
——可——编——程——控-制-器-技——术——门——户

WWW_P※LCJS_CO※M-PLC-技-.术_网

  ReDim SendData (19) As Byte
——可——编——程——控-制-器-技——术——门——户

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

  SendData (0) = &H46‘FINS命令帧报头的第1个字节
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWcW_PLCJS_COM-PLC-技.术_网

  ……
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW.PLCJS.COM——可编程控制器技术门户

  WskClient.SendData SendData() ‘发送FINS命令帧

本新闻共2页,当前在第11 2  
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行