1引言

随着经济全球化发展,分散控制系统(DCS)逐步形成融合信息技术(IT)、集成多种总线、采用功能安全技术集管控、仪控、电控一体化方向发展。同时对分散控制系统(DCS)应对复杂大型系统架构和超大容量的数据交互提出更高要求。

 
IP组播的技术和应用开始快速发展。对分散控制系统(DCS)的超大容量的数据交互提供了新的思路。本文通过采用视频会议常用到的IP 组播技术来提高分散控制系统(DCS)数据传输的实时性、准确性,优化系统网络结构, 以获得更好的经济效益.

 

2 IP组播

 

2.1组播传输的优点

在IP网络中TCP/IP 传送方式有3 种: 单播, 广播, 组播。

 

传统的单播和广播的通信方式均不能以最小的网络开销实现单点发送、多点接收的问题,IP 组播技术的出现及时解决了这个问题。

 

相比单播来说,组播的优势在于:由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。

 

相比广播来说,组播的优势在于:由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性;另外,广播只能在同一网段中进行,而组播可以实现跨网段的传输。

 

2.2组播通信

在组播中,用户按不同的应用分为不同的用户组,组成员要向组播服务器(一般为路由器)注册,用户主机发出请求报文,表明所要加入的组。每个组播群组有惟一 的D类地址。其地址范围从224.0.0.0到239.255.255.255。IP最多可提供多达228个同步组播群组的地址,因此,实际群组数受选路 由表大小而不是编址的约束。

 
转发IP组播需要特殊的组播路由器(multicast router)。通常是给常规路由器添加这种能力。组播路由器会周期性地对该组进行查询,检查组内的成员是否还参与其中,只要还有一个主机仍在参与,组播 路由器就继续接收数据。当所有的主机都离开了组后,组播路由器会收到一个Internet组管理协议(Internet Group Manage Protocol, IGMP)的“离开”消息报文,组播路由器就会马上查询组中是否还有活动的组成员。如果有活动的组成员,组播路由器就继续转发数据;如果没有,就不再转发 数据。

 

3 IP组播在分散控制系统(DCS)中的应用

 

3.1 系统总体设计

在分散控制系统(DCS)应用过程中,存在着大量的DPU上行数据,发送至多个人机界面(HMI)系统。正好可以利IP组播的优趋,实行单播/组播相结合 的混合传输方式,通过设计合理数据交换方案,不仅保证数据安全达到HMI工作站,而且减轻分散处理单元(DPU)和网络设备CPU 的网络负荷,提高系统效率,获得良好的性能和经济性。下图1为系统结构示意图。

 

 

图1:系统结构

 

系统主要有四部分组成:I/O采集卡件、分散处理单元(DPU)、系统IP网络、人机界面(HMI)。

 

如图1,分散处理单元(DPU)通过总线协议完成与I/O采集卡件的双向数据交换;在系统设计时,只要按系统具体的数据获取需求,合理划分不同的组播组, 将每一个DPU(就是一个组播源)按需求加入不同的组播组,可以加入多个组播组,将实时数据以组播形式在系统IP网络发布出去;每个人机界面(HMI)工 作站(组播数据的接收者),按数据获取要求,分别加入不同的组播组,也可以加入多个组播组,完成组播数据的接收。系统IP网络由备具组播功能的路由器、集 线器、交换机、防火墙等构成,共同完成组播数据的转发。组播主要完成分散处理单元(DPU)到人机界面(HMI)上行数据,其他如控制命令数据等,辅以单 播方式完成。

 

3.2 IP组播Winsock编程方法

在实际应用中,IP组播编程实现的方法随DPU嵌入式支撑系统和HMI运行系统平台的不同有所不同的;编程人员通常借助于操作系统中所提供的网络数据通信 编程接口实现网上的IP组播通信的功能。下面以在Microsoft Windows环境下的网络编程接口(Windows Socket,简称Winsock)介绍具体的IP组播编程实现的方法。

 

图2 Winsock实现IP组播过程流程图
 
3.2.1 IP组播数据发送流程(DPU)
 
  • 调用WSAStartup ( )函数,Winsock 服务的初始化。
  • 调用socket ( )函数,创建数据报套接口,它是组播组的初始化套接字,并且以后数据的发送在该套接字上进行。
  • 调用setsockopt( )函数,设置发送的数据报本地接口(IP_MULTICAST_IF)及设置多播地址(例:239.100.1.1)和端口号(例:20120)。
  • 使用sendto()函数,发送数据,目标地址为第二步所设置的多播地址。
  • 关闭套接字,释放Winsock资源。

 

3.2.2 IP组播数据接收流程(HMI)

  • 调用WSAStartup ( )函数,Winsock 服务的初始化。调用socket ( )函数,创建数据报套接口,它是组播组的初始化套接字,并且以后数据的接收在该套接字上进行。
  • 调用bind ( )函数,绑定本地地址(如:INADDR_ANY)和端口号(同发送端)。
  • 调用setsockopt( )函数,设置IP_ADD_MEMBERSHIP选项,加入多播组。
  • 调用recvfrom()函数,接收数据。
  • 关闭套接字,释放Winsock资源。
 

4 IP组播存在的问题

 

IP组播数据包典型使用用户数据报协议(UDP),而UDP是一种“尽力而为”(Best-effort)协议。因此,IP组播应用必定会遇到数据包丢失和乱序问题。

 

安全组播就是只有注册的发送者才可以向组发送数据;只有注册的接收者才可以接收组播数据。然而IP组播很难保证这一点。

 

Internet是一个异构网络,所以在设计IP组播网络时,必须充分考虑到网络的异构性。


5结束语

IP组播技术能够有效地解决单点发送到多点、多点发送到多点的问题,实现了 IP 网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载。在实际应用过程中,只要正视组播存在的问题,充分考虑到网络的异构性,通过设计合 理网络架构和数据交换协议,一样可以构造出安全可靠的系统。科远股份NT6000分散控制系统成功研制充分证明这一点;NT6000分散控制系统在应用推 广过程中,IP组播通信技术在NT6000分散控制系统的应用也充分得到客户的肯定。

 

 

参考文献:

[1] TCP/IP网络互联技术(1)原理,协议和体系结构(第3版)清华大学出版社,2001.

[2] IP组播与安全(第1版)                                 国防工业出版社,2006

[3]中国大型火电厂DCS应用现状       CONTROL ENGINEERING China,2009

[4] IP组播通信及其在VxWorks操作系统下的实现计算机与数字工程,2003