樊勇利,朱星元,张 洪,夏 辉,王 议,杨 斌
(1.宝鸡石油机械有限责任公司,陕西宝鸡 721004;2.中油国家油气钻井装备工程技术研究中心有限公司,陕西宝鸡 721004;3.中国石油川庆钻探工程有限公司,四川成都 610051)
近年来,随着网络通信技术和计算机技术的发展,网络化控制系统在钻机中日趋普及[1],同时为了满足钻机集成化控制需求,需要对绞车、转盘、泥浆泵、顶驱、动力猫道、铁钻工、二层台管柱处理系统、钻台机械手等多个设备进行集成化控制[2],而实现多设备集成控制的前提条件是各设备之间能实现数据的实时通信。通常由一台PLC 作为集成控制单元,负责与各控制设备之间的数据收集与传送,但是钻机各设备的控制器往往由多个厂家提供,而各厂家之间的通信协议往往存在差异,这对整个钻机的通信系统会产生一定障碍。如S7-1500 PLC 之间普遍采用西门子专用的Profibus 和Profinet 协议,而此类协议一般不会对外开放,因此需要采用一种开放式的通信协议,实现钻机各设备之间的数据交互。
TCP 是一种面向连接的、可靠的数据流传输服务,是以太网传输数据时普遍采用的一种开放式通信协议,钻机集成控制控制单元与其他第三方设备进行通信时,可采用TCP 方式进行数据传输。
钻机通信系统可划分为现场设备层、集成控制单元、上位显示操作层3 个层次,其中集成控制单元为整个钻机通信系统的核心,由一台S7-1500 PLC 统一负责系统内所有设备之间的数据接收、处理和转发功能,避免了系统内每一个通信设备与所有其他节点单独建立通信连接,钻机通信系统基本组成如图1 所示。
图1 钻机通信系统基本组成
现场设备层包括绞车、转盘、顶驱、铁钻工、动力猫道等钻机设备控制器,还包括一些智能仪表、智能传感器、视频监控单元等,如果这些现场设备控制器不支持S7 通信协议,则可以采用开放式的TCP 通信协议,包括集成控制单元与上位机软件之间,也可通过TCP 方式进行通信。
S7-1500 PLC 的组态及软件开发使用西门子PORTAL 博图平台进行开发。
打开PORTAL 软件,新建一个项目,完成PLC 常规组态,进入网络视图后添加一个新连接,建立TCP 连接如图2 所示。连接类型选择“TCP 连接”。TCP 通信的双方可分为客户端和服务器,建立连接时,由客户端主动向服务器发起连接请求,所以,如果需要由本机作为客户端主动建立TCP 连接时,则勾选“主动建立连接”选项。
建立连接后,需要对连接参数进行设置,TCP 连接参数设置如图3 所示,输入本地连接参数,此处的连接ID 输入建立TCP 连接时设定的ID 号,并设置对方通信设备的IP 地址,如果对方作为通信服务器,还需在地址详细信息中设置服务器端口号,TCP 通过服务器IP 地址和端口号即可具备建立TCP 连接的条件。
图3 TCP 连接参数设置
S7-1500 PLC 作为客户端与其他设备进行TCP 数据传输时,首先需要建立TCP 连接,其目的是确保IP 地址、端口、物理链路等正确无误,为数据的传输建立通道。TCP 建立连接时会传输三次数据,称为三次握手,数据报文结构由首部和数据部分组成,TCP 数据报文如图4 所示,首部中包含Client 和Service 端口号、序列号、确认号和标志位等信息,用于连接的确认,数据部分为实际需要传输的有效信息[3、4]。
图4 TCP 数据报文
建立连接时,Client 先产生一个初始序列号Seq,作为SYN并将该数据包发送给Server,Client 进入SENT 状态,等待Server确认。Server 收到数据包后也发送自己的SYN 报文作为响应,并初始化序列号Seq,为了确认Client 的Seq,Server 将Client 发送的Seq 加1,作为ACK 发送给Client,Server 进入RCVD 状态。为了再次确认Server 的SYN,Client 将Server 发送的Seq 加1,作为ACK 发送给Server。Client 和Server 进入ESTABLISHED 状态,完成三次握手,随后Client 与Server 之间可以开始传输数据了[3、4],TCP 建立连接机制如图5 所示。
图5 TCP 建立连接机制
在西门子TIA PORTAL 软件提供了TSEND_C 功能块函数用于处理TCP 数据发送功能(图6),完成通信组态后,在程序中调用TSEND_C 功能块,然后连接好通信参数,实现数据发送[5][6]。TSEND_C 功能块主要有以下3 个作用:
图6 TCP 数据发送功能块
设置并建立TCP 连接:在CONNECT 引脚参数中设置好要建立连接的通信参数,包括连接ID 号、连接类型、服务器IP 地址和端口号等参数,设置CONT=1 建立TCP 连接通道。
通过现有连接发送数据:当建立好通信连接后,在参数REQ中检测到上升沿时执行发送作业,如果需要循环发送数据,可在REQ 引脚处输入一个固定频率的脉冲信号,循环触发发送指令,引脚DATA 用于输入需要发送的数据,使用参数LEN 可指定通过一个发送作业发送的最大字节数。
断开和重置通信连接:设置参数CONT=0,将断开当前连接,可随时通过将参数COM_RST 设置为1 来重置连接,这会终止现有通信连接并建立新连接。
接收数据时,需要编写接收数据程序,在TIA PORTAL 软件中提供了相应的TRCV_C 功能块函数用于处理TCP 数据接收功能(图7),接收功能块的建立连接和断开连接的方法与发送功能块相同,不同点在于接收数据是通过将EN_R 引脚置1,当有数据发送过来时,将接收到的数据存入缓冲区内。
图7 TCP 数据接收功能块
通过TSEND_C 和TRCV_C 功能块输出的DONE、BUSY、ERROR、STATUS 等参数可对连接状态和数据接收发送状态进行判断。
TCP 通信技术在钻机通信系统中的应用越来越广泛,在近年来快速发展的自动化钻机中,集成控制单元与第三方厂家的嵌入式控制单元、智能传感器、各类上位机软件、视频监控系统、远程监控系统之间经常会采用TCP 通信方式。在实际应用中,各个厂家可以根据各自功能特点约定数据的特定格式,集成控制单元接收到数据后进行解析后使用。
近年来,国内石油钻机已基本实现由机械化钻机向自动化钻机的转化,钻机控制系统通常采用在司钻房内通过网络通信方式实现集成化控制,控制对象除了常规的绞车、顶驱、泥浆泵等设备,还配套动力猫道、铁钻工、钻台机械手、二层台排管机等管柱自动化设备及网络摄像头、智能仪表等网络组件[7-9],这些设备如果与集成控制PLC 不属于同一厂家,往往就需要采用一种开放式的通信方式进行数据交换,而TCP 是目前最常见的一种以太网通信方式[10],该通信方式在钻机控制系统中已广泛使用,满足不同厂家设备之间的数据通信需求。
石油钻机的功能要求越来越多样化,相应的配套的自动化设备也越来越多,而这些专业化的设备往往来自不同的配套厂家,要想实现不同厂家设备的集成化统一控制,必须解决所有设备间的数据通信问题。TCP 是一种完全开放的通信协议,通过对钻机通信系统的组成特点进行分析,以钻机目前普遍使用的西门S7-1500 PLC 为例,介绍在TIA PORTAL 平台下进行TCP 通信的组态方法、通信连接建立和断开程序的使用、数据读取和发送程序的设计等内容,实现钻机控制系统中不同厂家设备通信接口的统一化设计,为钻机的集成化、自动化控制提供一种数据通信解决方案。TCP 通信方式已在钻机控制系统中得到广泛的应用,使用效果稳定,随着钻机集成越来越多厂家的控制设备,TCP 通信方式将在钻机数据通信方面发挥更大的作用。