基于DataSocket的欧姆龙PLC以太网通信接口研究
(1.武汉船用电力推进装置研究所,武汉 430064;2.武汉长海高新技术有限公司,武汉 430064) 摘要 针对工业控制中控制站和上位机工控机高速通信的需要,本文对欧姆龙PLC的以太网模块的通信接口做了研究,首先介绍了欧姆龙PLC的网络结构和socket通信服务,然后提出了socket在TCP/IP协议下的通信流程。以欧姆龙CS1W型PLC为例,对其以太网模块进行设置,利用设计的通信协议,上位机作为服务器,PLC作为客户机,使用Visual C++6.0编写通信软件,完成了二者之间的数据通信。欧姆龙PLC和工控机之间的以太网通信速度快,通信软件性能稳定,已在工业现场中得到应用。
关键字 欧姆龙PLC SOCKET 以太网通信 TCP/IP 通信协议 中图分类号: 文献标识码: 文章编号:
梅映新1 祝广场2
The Study on OMRON PLC Ethernet Interface Based on
DataSocket
Mei Yingxin1 Zhu Guangchang2
(1. Wuhan Marine Electric Propulsion Research Institute, Wuhan 430064. 2. Wuhan Greatsea High-tech Co., Ltd., Wuhan 430064.)
Abstract: To fulfill the need of high speed communication between the control station and Industrial Personal Computer, the communication interface of OMRON PLC’s Ethernet module is studied in this paper. So, OMRON PLC’s network construction and socket communication service are presented firstly, and then, the communication flow chart based on TCP/IP protocol is completed. Using CS1W PLC as an example, setting up the Ethernet module, designing the communication protocol and communication software in Visual C++6.0, taking PC as server, CS1W PLC as client, data communication between them is completed. The communication speed between OMRON PLC and Industrial Personal Computer is quite high, and the communication software which has been used in the industrial is also steady.
Key words: OMRON PLC;SOCKET;Ethernet communication;TCP/IP;Communication protocol
0 引言
目前,PLC作为智能控制站广泛应用于各种工业控制现场。由于PLC具有可靠性高、适应性强、编程简单及模块化结构扩展方便等优点,在控制领域得到了广泛的应用。但PLC在数据处理、分析和报表打印等方面有很大的局限性,和工控机结合可以克服这一缺陷。在与工控机的通信中,一般采用串口通信的方式,但这种通信方式无法适应大数据量、远距离和实时性要求较高的场合[1]。以TCP/IP协议为基础的以太网在工业控制中逐渐获得了广泛的应用,并可以很方便的进行网络互联。本文以欧姆龙CS1W型PLC为例,探讨了网络通信的方式,用Visual C++6.0编写了上位机通信程序,完成了PC和欧姆龙PLC 的通信。
备层网络处于三层网络的底层,控制层网络处于中间层,管理层网络处于最上层。从上至下,各层都是开放的,且三层之间实现了无缝对接。
Ethernet网络即通常所说的以太网,是FA(工厂自动化)领域用于信息管理层上的网络,它的通信速率高,可以达到100Mbit/s,以太网模块使PLC可以作为工厂局域网的一个节点,在网络上的任何一台计算机多可以实现对它的控制[2]。 1.2欧姆龙PLC的Socket通信服务
1 欧姆龙PLC的网络结构和Socket服务
1.1欧姆龙PLC的网络结构
欧姆龙PLC开发了三层网络体系,包括设备层网络、控制层网络和管理层网络,如图1所示,设
管理iMac层InternetiMac网络EthernetWeb浏览器控制层 网络 控制器 网络CISCOSYSTEMSCISCOSYSTEMSController LinkDevice Net设备层网络传感器终端模拟量输出终端模拟量输入终端图1 欧姆龙PLC的网络结构
欧姆龙PLC的以太网模块支持两种通信方式:Socket通信和FINS通信。通过TCP或者UDP协议,Socket服务允许以太网上的设备发送和接收各种数据。Socket服务提供了两种实现的方法。
(1)操作特定的控制开关[3]
首先设置DM区中的请求参数,然后打开内存中特定的控制开关来请求TCP或者UDP Socket服务。当请求的过程完成之后,以太网单元就把请求开关关掉。数据的发送和接收,都是自动进行的。
使用这种方法不需要执行CMND(490)指令,也不需要监视完成的时序和指令的执行过程,于是可以大大简化梯形图的编制。
总共8个TCP或者UDP端口可以被用作Socket服务。
(2)执行CMND(490)命令
使用Socket服务的另一种方法是从CPU单元向以太网单元发送FINS命令,当以太网单元接收到Socket服务请求时,向CPU单元返回响应以确认请求,然后对请求的服务进行处理。当处理过程结束之后,结果放在CPU单元的结果存储区。
同样可以使用8个TCP端口和8个UDP端口。 1.3 Socket通信流程
Socket建立在传输层协议(TCP和UDP)之上,由于TCP面向连接,UDP是无连接的,因此,利用Socket进行通信,有两种方式:面向连接的和无连接的。在第一种方式下,两个通信的应用程序之间必须先建立一种虚拟的连接,然后再传输数据。第二种方式也称数据报文方式,在此种方式下,传输过程中,数据有可能丢失,先发送的数据也可能后到,各个报文的路径也不定相同[4,5]。本文采用面向连接的通信方式,流程如图2所示。
上位机以太网单元(服务器)(客户机)被动打开连接请求主动打开建立连接建立连接传送数据发送数据接收数据应答发送下一个数据发送数据传送数据应答接收数据发送下一个数据关闭关闭图2 面向连接的Socket通信流程
2 欧姆龙PLC的以太网设置
欧姆龙PLC要在网络中进行通信,必须要对其单元号、节点号和IP地址进行设置。 2.1设置单元号
当多个CPU单元安装在同一台PCL上时,就必须为以太网单元设置单元号,以识别特定的CPU单元。OMRON CS1W型PLC的单元号可以在0~F(十进制:0~15)之间对以太网单元进行设置,在设备出厂时,单元号被设为0。
值得注意的是,如果是第一次为PLC设置单元号或者是改变原来的单元号,那么就必须为PLC创建I/O表[3]。 2.2设置节点号
当多个以太网单元连在同一个以太网上时,要用节点号对其进行识别。欧姆龙CS1W型PLC的节点号由高位和低位组成,分别由高位节点号设置开关和低位节点号设置开关进行设置,其值为1到126之间设置,不同的以太网单元不能拥有相同的节点号[3]。
当使用自动产生方法进行地址转换时,节点号要与本地IP地址的最低两位相同(十六进制)。如果不一样,就不能使用自动转换方法。在本实例中,以太网单元的节点号设置为11(十六进制)。 2.3设置IP地址
以太网上的节点是用IP地址来识别的。每个IP地址被设为32个二进制数,通常用四段数以点分十进制形式来表示。在以太网单元中,每段数用两个
十六进制的数来表示[3]。
以太网单元的IP地址用安装在其后面的8个十六进制旋转开关来进行设置。对于CS1W型PLC,可将SW1和SW2,SW3和SW4,SW5和SW6,SW7和SW8组合在一起,就得到了单元的IP地址。在本设计中,IP地址设置为CA.72.6A.11,也即是202.114.106.17。
3 通信协议
通信协议是通信的双方互相遵守的约定,本文中的通信协议(以C表示)由7个字组成,见表1,现对各个字进行说明。 C0 C1 C2 C3 C4 C5 C6 指令发送/接收数发送/接收数据地址 类型 据字节数 表1 通信协议配置
C0:可取3个值:00、11、01。00表示让PLC发送数据,11表示向PLC发送数据,01表示让PLC关闭Socket连接。
C1、C2、C3、C4:发送或者接收数据的地址。此地址可以是PLC内存中的任何一个区域。PLC接受到之后,将其转换成十六进制数(两个字),送到Socket服务参数区的发送/接受地址单元(对于CS1W型PLC,为D30024和D30025),作为要发送和接收数据的起始地址。
C5、C6:发送或者接收数据的字节数。由于PLC的Socket服务参数中的此项范围为0000~07C0(十六进制),所以通信协议中用两个字来表示,PLC接收之后,先将其转换成十六进制数,再送到Socket服务参数区的发送/接收数据字节数(对于CS1W型PLC,为D30023)单元中。
通信协议存放在内存D中从D01000开始的7个连续单元中。
序代码如下:
m_sListenSocket.Create(m_nSPort); //创建端口 m_sListenSocket.Listen()//服务器监听
m_sListenSocket.Accept(m_sConnectSocket);//接受客户机连接请求
m_sConnectSocket.Receive(pBuf,nBufSize);//服务器接受数据
m_sConnectSocket.Send(m_strMsg,nLen); //服务器发送数据
m_sConnectSocket.Close();//关闭连接Socket m_sListenSocket.Close();//关闭监听Socket
5 下位机程序设计
Socket服务参数区在CPU单元的DM区,Socket服务请求开关在Socket服务参数区中设置。对于以太网单元号为0的情况,Socket(TCP/UDP)的服务参数在DM中的地址为D30018~D30027(以CS1W型PLC为例),共10个字单元。表2列出了1号Socket服务参数在内存D中的位置以及每个Socket服务参数区的配置。 偏移量 15 14 … 9 8 7 6 … 1 0 D30018 D30019 D30020 D30021 D30022 D30023 TCP/UDP Socket号(00010008,)(本文使用1号) 本地TCP/UDP端口号(0000~FFFF)(本文使用1000) 远程IP地址(00000000~FFFFFFFF,十六进制)(本文使用CA726A01) 远程TCP/UDP端口号(0000~FFFF,十六进制)(本文使用1000) 发送/接收数据字节数(0000~07C0,十六进制) 4 上位机程序设计
4.1上位机程序要实现的功能
上位机作为服务器主要实现以下功能:
监听:服务器启动后,处于监听状态,当有客户端申请连接时,便与之建立连接,以进行通信。
断开连接:服务器既可以单方面断开连接,也可以响应客户的断开而关闭连接;关闭连接之后若要进行再次通信,则要重新开始监听。
接收数据:客户有数据送来时,服务器将其接收,并放于Memo中。
发送数据:服务器调用Send()命令,将Memo中的数据发送给客户。
状态显示:能够显示服务器当前的状态。 4.2上位机程序的实现
上位机程序采用Visual C++6.0来实现,主要程
D30024 发送/接收数据地址 D30025 超时(0000~FFFF,十六进制)(本文设D30026 为0) D30027 返回代码 表2 欧姆龙PLC Socket服务参数区配置 程序流程图如图3所示,在此流程图中,省略了以TCP方式建立连接的细节过程,而主要是关于建立连接之后PLC与服务器之间的数据通信。
用CIO00000~CIO00003分别表示打开、关闭、发送和接收开关的请求位;用CIO00100~CIO00103分别表示打开、关闭、发送和接收的错误标志,以显示错误信息;用CIO00200~CIO00203分别用于控制打开、关闭、发送和接收指令的执行,以达到只执行一次的目的。
用CIO00300表示程序判断位,以确定程序下一步的走向;用CIO00400表示接收命令开关位,此命
令由服务器发送,用于控制PLC执行何种操作,命令长20个字节,存放在以D01000开始的10个连续字单元中。
服务器(PC)监听连接请求建立连接主动打开建立连接PLC发送命令接收命令ND01000=3030Y接收数据发送数据D01000=3131YN发送数据下一个命令接收数据关闭Socket关闭Socket图3 下位机通信流程 6 结束语
欧姆龙PLC具有很强的通信功能,其以太网模块采用应用广泛的TCP/IP协议,数据通信速度快,程序设计简单。Visual C++6.0编程方便,性能稳定,可靠性高。本文的通信方法已用在工业现场,数据可以实时传输至工业PC,方便保存、处理和分析。
参考文献
[1] 曹卫,史旺旺,陈虹.OMRON PLC在以太网中的通信及实现.测控技术,第23卷第12期,2004年
[2] 刘利.可编程序控制器通信与网络.北京:机械工业出版社,2006,172~174,189~190
[3] OMRON.OMRON PLC CS1W-ETN01 Ethernet Unit Operation Manual.February,1999,19~20,27~28,37~39 [4] 王德力,刘希宝.Socket编程技术.辽宁师专学报,第4卷第2期,2002年6月施光林,
[5] 高恩勇,谢德银.利用Delphi编写Socket通信程序.沧州师范专科学校学报,第20卷第4期,2004年12月
[6] Bao Weimin.Application of Windows Socket Technique to Communication Process of the Train Diagram Network System Based on Client/ Server Structure.Journal of Southwest Jiaotong University,Vol. 9,No. 2,Nov. 2001:115~121
收稿日期:
作者简介:
梅映新(1974—),男,湖南人,工程硕士,高级工程师,研究方向:电力电子与电气传动。
通讯作者:
祝广场(1984—),男,工学硕士,研究方向:检测技术,工业测量和控制。 E-mail:gczhu84@163.com