田彬,陆会明,周金龙
(1.国能智深控制技术有限公司,北京,102211;2.华北电力大学控制与计算机工程学院,北京,102206)
EDPF-NT+平台是国产DCS 系统之一,是由国能智深控制技术有限公司研发并推出应用的先进DCS 控制系统。系统内的硬件设备如操作员站、工程师站等通过高速局域网进行连接,方便各设备之间的数据传递与共享。其中系统网络连接MMI 站形成的人机界面和现场控制单元等节点,从而进行数据的高效双向传输;控制网络用于连接控制机柜内部的各个I/O 模块与DPU,属于控制站内部网络,通信速率为2Mb/s。I/O 与现场信号线缆连接,可以对现场数据进行采集,过程中对数据进行处理,还可以对现场设备进行驱动。各个I/O 模块可以通过控制网与DPU 进行连接,实现分布式控制。由国能智深控制技术有限公司研发的EDPF-NT+DCS 分散控制系统已在工业各领域中得到广泛应用,尤其是火电行业。随着系统应用范围的扩大和电站的智能化发展,带来越来越多与第三方研发、仿真系统通讯的需求 。为了方便在Matlab 上开发电站过程系统控制算法,需要建立Matlab 与DCS 系统之间的联系,实现两者的实时通讯。本文以EDPF-NT+平台为例,通过UDP 通讯接收DCS 中的数据并解析,从而获取电站过程系统各项测点的数据与状态信息,为开发智能控制算法奠基。
(1)UDP 是无连接的传输层协议,数据传输是单向的,在进行数据传输前不需要与接收方建立通讯连接,通讯结束时也没有连接可释放,因此减少了开销和发送数据之前的延时时间。虽然可靠性有所降低,但是实时性却大大提高。不同于TCP/IP 通信需进行多次握手,UDP 协议不保证可靠交付,基于UDP 协议的通讯主机不需要维护复杂的连接状态。
(2)UDP 协议是面向报文的。应用程序须选择合适长度的报文。如果报文长度太长,UDP 协议在把它交给 IP 层后,IP 层会在传送数据时进行分片处理,从而导致IP 层的效率降低;如果报文长度太短,UDP 把它交付给 IP 层后,也会产生 IP 层数据报的首部相对于整个数据报的长度太大的问题,这也会降低 IP 层的工作效率。
(3)UDP 不会建立复杂的交互连接,也没有阻塞、数据丢失等情况的应对机制。因此网络出现拥塞、数据在传输过程中发生丢失等情况并不会使数据发送方的发送速率降低。这对某些实时应用场景是很重要的。很多的实时应用例如语音电话、视频会议等,要求发送方主机以恒定的速率发送数据,并且允许在数据传输出现问题时丢失一部分数据,但却不允许数据有太大的时延。UDP 协议丢失一部分数据并不影响其他数据发送的特点,正好符合这种实时通讯的要求。
(4)由于UDP 通讯协议无须建立连接,只需监视特定的端口即可,因此可以实现一对一、多对一、一对多和多对多的交互通信、多方通讯。
Matlab 支持多种与外部设备的数据通信方法,以便收集和反馈数据。Matlab 中包含的仪表控制工具箱提供了一系列的可用于实现与外部设备的UDP 数据通信的函数以及Simulink 模块。其中包括了创建UDP 接口对象的udp 函数。Matlab 具有强大的扩展性,为了实现数据的接收与发送,需要利用串口对象和UDP 对象来编写Matlab 环境下的通信接口程序 。
为了安全地实现Matlab 软件与EDPF-NT+DCS 系统之间的实时数据通信,在Matlab 软件与DCS 之间使用的通信协议必须遵循外部系统与DCS 系统的数据通信要求。UDP 通信协议可以用于从DCS 到Matlab 的单方向数据通信传输。由于是单向通讯,不会操作组态软件内部文件,因此在通信过程中不会影响到DCS 系统运行的独立性和可靠性。
EDPF-NT +系统的数据通信基于网络技术,通过交换机完成各控制器与人机交互计算机之间的通讯,属于星形网络结构。该通讯方案还通过EDPF-NT+系统的局域网实现了仿真优化计算机与DCS 系统之间的数据通讯。在DCS 系统中,工程师站内建立了虚拟分散控制器及卡件,负责从Matlab 中接收数据。该通信方式成本较低,且通信测点数不会受到硬件的影响。
EDPF-NT+分散控制系统吸收了众多DCS 产品的先进思想,各部分功能相对独立,分为多个工作站。其中数据通讯是工程师站的功能之一。DCS 的基本信息是通过数据点测得的,数据点也是DCS 的基本数据单元,数据点的信息包括描述、名字等静态信息和状态、数值等实时信息,包含了模拟点,开关点,GP 点三种类型。而数据包是数据传输的基本单元,数据是以数据包的形式进行发送的,数据包中存放了每个点的点编号、数值和状态等信息。为了数据通讯的安全、高效进行,EDPF-NT+DCS 系统有一套自己的数据通讯规范。
接口站根据预先定义的点列表文件,根据点列表文件中规定的周期定期读取DCS 系统中各点的实时信息并打包发送给数据接收端,点的实时信息包括点的数值和状态。接口站与数据接收方之间的通信方式为单方向的通讯,数据接收方和DCS 之间还设有安全隔离装置用来保证DCS 系统的安全。这样就实现了接口站定期地向预先指定的端口发送数据包,而数据接收方只用负责接收数据包即可,不必向接口站返回任何应答信息。
接口程序工作时的输入数据包含点列表文件和配置文件,其中接口程序是依据点列表文件对外发送数据的,配置文件则用于规定数据接收方的端口、IP 等信息。
2.2.1 点列表文件
接口站程序是基于点列表文件来进行数据的接收的,点列表文件会给出对应发送端的点的名称、编号、规定的接收周期、类型等信息。点列表文件的内容分为点的基本信息和注释信息,用于说明点的数据类型、要求。
点列表文件是CSV 格式,一般数据量较为庞大,通常每一条点的信息包括点名、编号、发送周期、点类型四部分。点列表文件的格式如表1 所示。
表1 点列表文件格式
■2.2.2 配置文件
配置文件规定了数据接收方的设备要求,包括每个设备的超时时间、本地IP、端口号等。
配置文件格式如图1 所示。
图1 配置文件格式
[general]表示数据接收设备的个数,Devcnt 为客户端个数,默认值为1;[device1]为设备1 的配置信息,Timeout 为点接收数据的超时时间,单位s,超过该时间未收到发送端数据,点品质会自动置坏。
IP 地址是本地接收数据的IP 地址,端口号port 需与数据发送方端口号一致。
EDPF-NT+DCS 系统与Matlab 之间的数据是通过数据包的方式发送的。每个数据包最多有100 个点,每个点长度为12 字节。数据包的内容包含头部和数据区。其中数据包头部长度为16 字节,字段顺序依次为:域号、站号、字节序、数据包的类型、数据包时间、该数据包中点的个数、点名列表文件的版本号。这些字段的顺序和长度在每个数据包中都是严格规定的。而数据区最大可达1200 个字节。每个数据包里的点都具有相同的周期,允许各种类型的点混合存放。
数据包格式说明如表2 所示。
表2 数据包格式
站点的集合称为域,一个电站系统有无数的测点,包含多个域,每个域都会有一个唯一确定的域号,且域内包含了许多个站,每个站也都有一个域内唯一确定的站号,但不同域内可能存在编号相同的站。因此通过域号和站号可以在庞大的数据测点中唯一定位到某一特定站。
数据包时间的秒是时间戳,表示的是从1970 年01 月01 日到数据发送时刻为止整个过程经历的时间;不同的点名列表文件版本有不同的规范,故点名列表文件版本号可用于判断点名列表是否改变。
数据包的数据区包含点的编号和实时信息,每个点的信息长度为12 字节,最多包含100 个数据点,因此最大长度为1200 字节,每个点的信息按顺序存放,依次为长度4 字节的点编号、长度2 字节的状态字1、长度2 字节的状态字2、长度4 字节的数值。数据包中存放的点的类型包括模拟点、开关点、打包点三种,其中不同类型的数据点的数据的类型、存放方式、含义也各不相同,接收方在解析数据时,需要先解析出数据包中该点的点编号,利用点编号从点列表文件中查找出该点的类型,再根据不同点的类型采用与之对应的数据解析方式 。不同类型的点数值定义规则如下:
模拟点(AP):数值是4 个字节的浮点数,代表该模拟点的数值信息。
开关点(DP):数值是4 个字节的整型数据,代表该开关点的数值信息。
打包点(GP):总共4 个字节,包括2 个无符号短整型,包含数值和强制标志。
由于数据包中的数据都是以二进制的形式存放,且正负数首位的差异在转换过程中容易引起混淆,因此需要编写一个数据转换函数,作用是将任意截取二进制数据片段转换为十进制数值进而输出,以使输出数据更加直观。
根据EDPF-NT+平台数据包规范,分别从数据包截取域号、站号、时间(秒)、时间(毫秒)、数据包点个数、版本号和数据包,并将其转换为十进制形式的数据信息。
根据EDPF-NT+平台数据包规范,分别从数据包截取点编号、状态字1、状态字2,并根据点编号在点列表中查找点的类型,根据点的类型选择不同的数值解析方式来将其转换为十进制形式的数值信息。
根据EDPF-NT+平台数据包规范,状态字1 的8,9 号位代表了点品质的好坏。8,9 位为00 代表品质Good,01代表品质Fair,10 代表品质Poor,11 代表品质Bad,因此该部分则通过判断状态字1 的8,9 号位的数据来设置每个点的品质。
接口站程序运行时涉及点列表文件、配置文件、日志文件和接口站接收程序。日志文件是用来记录接口站程序运行过程中的基本信息状态以及接口站程序在执行过程中出现的错误信息,以便工作人员寻找问题和解决问题。每条日志记录信息包括日志发生时间和具体信息两部分,能够很好地定位运行中出现的错误并解释原因。运行接口站程序,程序启动后会自动读取配置文件及点列表文件,进行程序初始化。程序初始化成功后,会监视指定的端口从而接收来自发送端的数据。程序会把收到的数值和状态分别更新到MMI上对应的点上。接口站程序会基于点名列表文件的内容对这些数据进行解析,并根据点名列表文件所规定的每个点的发送周期,周期性地读取 DCS 系统中点的实时信息,然后打包通过网络以数据包的形式发送给Matlab 端。
运行Matlab 端接口程序,创建UDP 对象并实时接收来自接口站的信息。测试结果如图2 所示。
图2 测试结果
成功接收到EDPF-NT+发送过来的数据包并解析。
分散控制系统(DCS)广泛运用于国内外各大电厂,它采用分散控制、集中管理的基本设计思想,采用多层分级、合作自治的组织架构,目前在冶金、化工、造纸尤其是电力等工业领域都获得了极其广泛的实践,为实现工业的无人化、自动化控制作出了巨大贡献。Matlab 软件是工程领域的著名计算与仿真软件,在数值分析、控制算法、控制系统设计与仿真、数据显示等方面有着强大的功能和广泛的应用。UDP 协议的简单方便和实时性,使其广泛运用于自动控制、仪器仪表、传感检测、实时通讯等领域。通过UDP通讯将Matlab 与DCS 系统相结合,为研究者进行硬件控制、数据分析及算法优化提供了新的方法,消除了软件切换带来的困难,提高了开发和仿真效率,促进了电站的智能化发展。
本文以EDPF-NT+平台为例详细介绍了Matlab 与DCS系统UDP 实时通讯的实现方法并成功应用。测试结果表明:Matlab 运用UDP 通讯可以很好地接收到EDPF-NT+平台的实时信息并解析,为电站生产过程系统的控制算法开发与测试仿真提供了便利。