APP下载

基于CIP协议的液压型风力发电机组上位监控系统通信方法研究

2022-11-30张彦刘微容刘沛栋刘睿郭宏林刘婕

机床与液压 2022年22期
关键词:发电机组IP地址上位

张彦,刘微容,刘沛栋,刘睿,郭宏林,刘婕

(1.兰州理工大学电气工程与信息工程学院,甘肃兰州 730050;2.大型电气传动系统与装备技术国家重点实验室,甘肃天水 741000)

0 前言

风能是一种资源丰富、利用率高、潜力很大的新能源,且清洁环保、可再生[1]。我国西部地区的风能资源储量巨大,风能发电已逐步成为我国新能源的支柱产业之一[2]。近年来,液压型风力发电机组由于其电能质量高、低电压穿越能力强、负载转矩低、机舱质量轻等优点[3],逐渐成为风力发电机组一个新的发展方向。液压型风力发电机组的上位监控系统是液压型风力发电机组进行工业控制不可或缺的部分,上位监控系统提供人机交互界面,实现液压型风力发电机组数据的监视和远程控制等功能。作者所在团队已设计了液压型风力发电机组试验机型的工控系统[4],该试验机型主控器为罗克韦尔的1769CompactLogix控制器,为保证监控系统及存储数据,所以选用罗克韦尔系列产品FactoryTalk View Studio和数据库Microsoft SQL Server 2008作为上位监控系统。该上位监控系统通信效率低,资源占用多,成本高且针对性弱,因此,亟需自主开发一个拥有自主产权、适用于特殊行业、高效专业的上位监控软件,此监控软件重点是解决上位监控系统的通信问题。

为实现对液压型风力发电机组自动化过程信号的采集与监控,国内外研究人员开展了许多研究。针对液压型风力发电机组上位监控系统的通信问题,国内外相关学者从通信协议及通信方法展开研究,采用基于OPC(OLE(Object Linking and Embeding)for Process Control)的通信方法[5-6]可实现上位机与下位机之间的通信,但需要应用OPC服务器,如KepServer等,导致通信成本较高,资源占用多;采用基于串行的通信方法[7-9]实现简单且能够远距离通信,在现代工业控制中应用广泛,但它传输速度慢,并不适合于对实时性要求高的环境;采用控制器单一支持的公开协议的通信方法[10]可实现上位监控系统与下位机的通信,但它仅针对某一类型的PLC实现通信,并不具备普适性和可移植性。通用工业协议(Common Industry Protocol,CIP)是一种应用在工业自动化并且独立于任何介质与平台的通信协定[11]。该协议与其他设备通信时不需要额外安装软件,更为灵活高效,具有更快的速度和更少的资源占用,有助于使工程和现场安装的开销最小化[12]。

因此,针对实际液压型风力发电机组上位监控系统通信效率低、资源占用多、成本高、针对性弱的问题[13],本文作者提出一种基于CIP协议的液压型风力发电机组上位监控系统通信方法,通过Microsoft Visual Studio开发环境,结合CIP通信协议,采用C#语言实现上位监控系统与下位机的通信。它拥有自主产权,适用于特殊行业并且通信高效专业,为后续开发完整的液压型风力发电机组上位监控软件提供通信基础。

1 通信方案设计

文中围绕液压型风力发电机组上位监控系统通信问题,依据“机制研究-实现设计-应用测试”的研究思路,采用如图1所示的通信方法研究方案,展开具体研究:首先,依据EtherNet/IP网络模型,结合液压型风力发电机组的需求,建立对应的通信机制,并通过对液压型风力发电机组传输数据进行正确分类,建立对应的传输通道,合理封装报文;其次,通过建立通信、组织报文、发送命令的思路,设计基于CIP协议的液压型风力发电机组上位监控系统通信应用程序;最后,通过应用测试,验证此上位监控系统通信应用程序的正确性、有效性。

图1 通信方法研究

1.1 网络模型

为构建液压型风力发电机组上位监控系统通信架构,结合液压型风力发电机组的需求,探究EtherNet/IP网络模型并确定网络模型每层的通信协议。EtherNet/IP是一种针对工业控制环境的网络。与传统的现场总线相比,EtherNet/IP具有更快的通信速率和更强的资源共享能力,因此液压型风力发电机组上位监控系统采用EtherNet/IP网络构建通信架构。EtherNet/IP网络的通信速率快可保证液压型风力发电机组在大量数据传输时的高效性,而共享机制强能够满足随液压型风力发电机台数的增加实现快速组网,增强可扩充性。

EtherNet/IP网络模型遵循国际标准化组织(ISO)制定的通信系统间标准体系OSI七层参考模型,它与ISO/OSI参考模型中各个层的对应关系如图2所示。EtherNet/IP的物理层和数据链路层均使用标准的IEEE802.3 EtherNet技术,为物理介质定义数据传输的帧格式并提供规范;网络层遵循IP协议,通过路由实现网络的互连功能;传输层遵循TCP(传输控制协议)协议和UDP(连接设备协议)协议,为应用程序提供通信;会话层、表示层和应用层均采用通用工业协议CIP。

图2 EtherNet/IP网络模型

CIP协议是由ODVA(Open DeviceNet Vendor Association)和CI(ControlNet International)联合制定的应用层标准协议。该协议与设备可直接通信,不需借助其他通信软件,具有速度快、资源占用少、高效灵活的特点,并且CIP协议最重要的一个特性就是与介质无关性,可移植到不同的网络环境和不同的操作系统平台中。由于液压型风力发电机组采用OPC等通信方法、使用FactoryTalk View Studio等专用软件、并借助其他中间通信软件,往往导致通信效率低、成本高、资源占用多,因此文中拟采用EtherNet/IP应用层的CIP协议作为液压型风力发电机组上位监控系统的通信协议。对液压型风力发电机组上位监控系统传输实时性要求高的如I/O数据等,通过UDP通道进行传输;对准确性要求高的如组态信息等,通过TCP通道进行传输。

1.2 通信机制

为划分液压型风力发电机组上位监控系统数据传输通道的传输类型,对液压型风力发电机组的传输数据合理分类,探究通信机制并提出通信方法。EtherNet/IP应用层CIP协议报文通信有2种方式:基于非连接的通信和基于连接的通信。基于非连接的通信是一种最基本的通信方式,不需要建立设备间的连接,适合于网络配置简单、设备很少的场景。基于连接的通信首先需要通过基于非连接的通信方式建立设备间的连接,并保持连接激活状态,适用于网络配置复杂、设备较多的场景,可用来传送I/O数据和显式报文。

由于液压型风力发电机组上位监控系统需要监控对实时性要求高的I/O数据以及对准确性要求高的组态信息、设备配置等非实时性数据,因此液压型风力发电机组的上位监控系统选择基于连接的通信方式来传输I/O数据和显式报文。其中I/O连接主要用于应用程序之间的信号传输,通过UDP协议传输实时的I/O数据和控制信息,它无确认机制,具有单播、多播和广播的功能。而显式消息的连接主要针对组态信息、设备配置等非实时性信息的传输,通过TCP协议传输报文信息,其面向连接并具有确认机制,数据包经3次握手可确认建立连接。

1.3 报文封装

为实现液压型风力发电机组上位监控系统与下位机的数据传输,根据EtherNet/IP网络模型的传输通道,分析报文形式并合理封装报文。根据液压型风力发电机组上位监控系统采用传输层协议(TCP/UDP)建立连接的不同,CIP协议对传输报文具有不同的封装形式。EtherNet/IP应用层的CIP协议有2种封装形式的报文:显式报文和隐式报文。显示报文是将通用数据包格式用封装层封装之后,依次逐层封装上TCP、IP、EtherNet报头。其中CIP报文封装结构如表1所示,由一个24字节的固定长度的封装头部和通用数据包组成。隐式报文不经过封装层,直接将通用数据包依次逐层封装上UDP、IP、EtherNet报头。对于液压型风力发电机组上位监控系统传输的I/O数据等实时性要求高的数据用隐式报文的封装结构,而传输的组态信息、诊断数据、设备配置数据等准确性要求高的数据用显式报文的封装结构。

表1 CIP报文封装结构

2 基于CIP协议的液压型风力发电机组上位监控系统通信实现设计

依据上述针对液压型风力发电机组上位监控系统确定的通信协议、通信机制以及报文封装形式,为实现液压型风力发电机组上位监控系统与下位机的通信,文中基于CIP协议,利用一款功能强大、实用便捷、可视化的集成开发环境Microsoft Visual Studio,采用简单、高效的C#语言,按照建立通信、组织报文、发送命令的思路设计液压型风力发电机组上位监控系统。

2.1 建立连接

依据第1.2节针对液压型风力发电机组上位监控系统提出的基于连接的通信方式,引入Socket应用编程接口,建立液压型风力发电机组上位监控系统与下位机的通信连接。为标识网络的进程,利用TCP/IP协议族的IP地址、协议和端口这个三元组来标识网络的进程,使得网络中的进程通信利用这个标志与其他进程进行交互;为实现网络进程之间的通信,引入应用层与TCP/IP协议族通信的中间软件抽象层Socket应用编程接口,通过Socket组织数据实现网络进程之间的通信。

液压型风力发电机组上位监控系统通信建立连接步骤如下:

首先,创建一个负责通信的Socket客户端,一个网络终结点(IP地址和端口号)以及一个IP地址对象,具体代码如下:

private Socket clientSocket;//创建负责通信的Socket客户端对象

pivate IPEndPoint ipport;//创建网络终结点

private IPAddress ip;//创建IP地址对象

其次,在窗体加载时对Socket进行初始化,将端口号和IP地址赋值并初始化。具体代码如下:

Private void Form1_Load(object sender,EventArg e)

{

int port = int.Parse(textBox2.Text);//将端口号赋值

ip = IPAddress.Parse(textBox1.Text);//将IP地址赋值

ipport = new IPEndPoint(ip,port);//初始化

}

最后,将传输层协议(以TCP协议为例)作为Socket客户端的通信协议,通过网络终结点(IP地址和端口号)Socket客户端即可建立连接。代码如下所示:

clientSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

clientSocket.Connect(ipport);

2.2 CIP报文组织

依据第1.3节CIP协议的报文封装形式,结合液压型风力发电机组上位监控系统传输的数据类型,合理组织报文。液压型风力发电机组上位监控系统根据对传输数据实时性、准确性要求的不同,采用CIP协议报文不同的封装形式。对于液压型风力发电机组的I/O数据,如模拟量、开关量等对实时性要求高的数据,其上位监控系统采用CIP协议隐式报文的组织形式;对于液压型风力发电机组的故障诊断信息、组态信息等准确性要求高的数据,其上位监控系统采用CIP协议的显式报文的组织形式。此外,为保证数据传输的正确性和完整性,需要对故障诊断信息、组态信息等准确性要求高的数据进行CRC校验(循环冗余校验码)。

文中以显式报文为例,读数据服务请求报文组织如下,报文由Header、CommandSpecificData字节、以及CIP消息3部分组成。

public byte[] Header = new byte[24] // 头部 Header 24个字节

{

0x6F,0x00,//命令 2byte

0x28,0x00,//长度 2byte(总长度-Header的长度)=40

0x00,0x00,0x00,0x00,//会话句柄 4byte预留

0x00,0x00,0x00,0x00,//状态默认0 4byte

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//发送方描述默认0 8byte

0x00,0x00,0x00,0x00,//选项默认0 4byte

};

Public byte[] CommandSpecificData = new byte[16] // 16个字节

{

0x00,0x00,0x00,0x00,//接口句柄 CIP默认为0x00000000 4byte

0x01,0x00,//超时默认0x0001 4byte

0x02,0x00,//项数默认0x0002 4byte

0x00,0x00,//空地址项默认0x0000 2byte

0x00,0x00,//长度默认0x0000 2byte

0xb2,0x00,//未连接数据项默认为 0x00b2

0x18,0x00,//后面数据包的长度

};

public byte[] CipMessage = new byte[10] //CIP消息(由读取的标签生成)

{

0x52,0x02,//服务默认0x52 请求路径大小0x20,0x06,0x24,0x01,//请求路径

0x0A,0xF0,//超时默认0xF00A 4byte

0x0A,0x00,//CIP指令长度

0x4C,//读取服务标识固定为0x4C 1byte

0x03,// 节点长度 2byte 规律为 (标签名的长度+2)/2

0x91,//扩展符号 默认为 0x91

0x04,//标签名的长度0x54,0x41,0x47,0x31,//标签名

};

public byte[] Common = new byte[6]

{

0x01,0x00,//服务命令指定数据,默认为0x0001

0x01,0x00,0x01,0x00//最后一位是PLC的槽号

};

public byte[] WrCommon = new byte[4]

{

0x01,0x00,0x01,0x00//最后一位是PLC的槽号

};

2.3 发送命令

在第2.1节已建立通信连接的基础上,为使液压型风力发电机组上位监控系统与下位机进行数据传输,利用第2.2节已组织完成的CIP数据报文,发送读写命令,实现液压型风力发电机组上下位通信。具体过程为:首先,通过Socket客户端发送注册会话请求报文,并接收注册应答会话报文;然后,根据接收到的注册应答会话报文提取其中的会话句柄,并将它嵌入请求数据包的会话报文中,通过Socket客户端发送读写命令的请求数据包报文并接收返回报文;最后,进行报文解析并显示接收到的数据。文中以读取操作命令为例,部分代码如下:

private void button2_Click(object sender,EventArgs e)

{

clientSocket.Send(cip.Registercmd);//Socket客户端发送CIP的注册会话ID

textBox7.AppendText(GetCurrentTime() + " " + BitConverter.ToString(cip.Registercmd) + " ");//文本框显示当前时间,注册会话ID

Thread.Sleep(2);

byte[] read_data = new byte[100];

int number = clientSocket.Receive(read_data,read_data.Length,0);

byte[] x = new byte[number];

Array.Copy(read_data,0,x,0,number);

textBox7.AppendText(GetCurrentTime() + " " + BitConverter.ToString(x) + " ");

byte[] Tagname = class1.Read(textBox3.Text);

Tagname[4] = read_data[4];Tagname[5] = read_data[5];Tagname[6] = read_data[6];Tagname[7] = read_data[7];

clientSocket.Send(Tagname);//Socket客户端发送标签名称

textBox7.AppendText(GetCurrentTime() + " " + BitConverter.ToString(Tagname) + " ");

Thread.Sleep(2);

number = clientSocket.Receive(read_data,read_data.Length,0);

byte[] rec = new byte[number];

Array.Copy(read_data,0,rec,0,number);

textBox7.AppendText(GetCurrentTime() + " " + BitConverter.ToString(rec) + " ");

textBox4.Text = class1.Value(rec);

}

3 测试结果

3.1 实验设置

为验证基于CIP协议的液压型风力发电机组上位监控系统与下位机的通信效果,根据第2节中建立通信连接、组织CIP报文、发送命令的思路,利用Microsoft Visual Studio开发软件采用C#语言设计基于CIP协议的上位监控系统。此设计开发硬件环境为Intel(R) Core(TM) i5-3210 CPU、4 GB内存、64位操作系统,软件环境为Microsoft Visual Studio Community 2017、Windows10 系统。

3.2 测试参数设置及结果

依据第2节设计的液压型风力发电机组上位监控系统,文中针对600 kW液压型风力发电试验机组项目具体控制设备AB PLC的1769CompactLogix控制器,以第2.2节中的显式报文为例进行通信测试。具体测试过程为:首先,通过IP地址和端口号建立通信连接,将上位机的通信IP地址与PLC的IP地址设置在同一网段,文中测试的上位机IP地址设置为192.168.1.140,PLC的IP地址为192.168.1.15,端口号为44818;其次,通过分别输入标签名称star和TAG1读取和写入相应的标签值并显示发送和接收的报文信息。

文中通信测试结果如图3所示,其中图3(a)为读取测试结果,图3(b)为写入测试结果。此外,文中方法与其他通信方法的对比如表2所示。实验测试与对比分析结果表明:采用基于CIP协议的通信方法能够实现与下位机的通信,与使用OPC及串行的通信方法相比,提高了通信效率,并且不需要使用专用的通信软件以及不借助任何中间通信软件,减少了资源占用、降低了成本、增强了针对性。

图3 通信测试结果

表2 不同通信方法对比

4 结论

针对600 kW液压型风力发电试验机组所采用的FactoryTalk View Studio上位监控软件通信效率低、资源占用多、成本高、针对性弱的问题,文中提出基于CIP协议的液压型风力发电机组上位监控系统通信方法。利用Microsoft Visual Studio开发环境实现了上下位的通信,提高了通信效率,节约了资源,降低了成本,增强了针对性;同时,为下一步进行600 kW液压型风力发电机组上位监控系统的完整开发提供通信基础。

猜你喜欢

发电机组IP地址上位
大型核电汽轮发电机组自主化成果介绍
内燃机发电机组应急冷却系统优化
660MW发电机组氢气泄漏原因与处理
特斯拉 风云之老阿姨上位
公安网络中IP地址智能管理的研究与思考
基于Bladed与Matlab的风力发电机组控制器设计
基于ZigBee和VC上位机的教室智能监测管理系统
《IP地址及其管理》教学设计
计算机的网络身份IP地址
基于VC的PLC数据采集管理系统