SCADA系统中的规约库技术

时间:2022-08-03 03:44:33

SCADA系统中的规约库技术

[摘要]scada即数据采集与监控系统,是以计算机、通信网络为基础的生产过程控制与调度自动化系统,通过对现场的运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节及各类信号报警等功能。该文论述SCADA系统中的规约技术,常用规约(如CDT、1801、IEC870-5-101、IEC870-5-104、 4F 、MODBUS等),可内置规约库供直接调用;也可以根据用户要求开发新的规约,新规约调试可以在线完成,不影响系统正常运行。

[关键词]SCADA规约库通信SW-2000模块

近年来,计算机应用技术飞速发展,SCADA(Supervisory Control And Data Acquisition)系统在工业领域得到了广泛的应用,尤其在电力系统中,发展更为迅速。电力系统中,现场数据不但包括功率、电压、电流等测量数据,还包括分合闸、过流、速断等操作及事故所产生的事件数据。当发生事故而导致跳闸时,还要记录现场的故障录波数据,需要通信的数据量是一般工业控制中所无法比拟的。由于电力系统现场数据的变化非常快,一次故障可能只维持十几毫秒,数据稍纵即逝,所以对数据的实时性、通信速度的要求是非常高的。可见,系统通信是SCADA系统成功的关键,而规约库技术又是SCADA系统通信成功的关键。

1通信规约的基本概念

电力自动化系统大多采用数字式通信技术,远动装置将信息转换成二进制码,进行运算处理并按照某种通信规则(规约)进行包装后,通过模拟信道或数字信道进行传输;接受端遵循同一种规则(规约)对收到的数据进行校验和解包,然后进行处理。这里的规则就是通信规约(protocol)。通信规约的基本单位是数据帧,不同的通信规约,数据帧也各不相同,但一般包括起始标志、地址字、控制字、信息体(远动数据)、监督字以及结束标志组成。

经过多年的发展,电力系统已经制定和颁布了一系列远动通信规约标准,如CDT、Polling、IEC870-5系列等,这些规约在自动化系统应用中对装置和装置之间互通互连,以及对保证自动化装置和主站系统具有良好的开放性和兼容性起到了关键性的作用。铁路电力自动化系统完全可以借鉴电力系统成熟的通信规约。

2SCADA规约选择

SW-2000铁路电力调度自动化系统(电力远动系统)是成都四为电子信息有限公司针对铁路系统的发展特点和用户实际需求,在总结多年实际工程经验的基础上,结合铁路行业快速发展的需求和当今最先进的计算机技术,率先在国内推出的具有跨平台运行能力的新一代铁路电力综合调度自动化系统。SW-2000基本上就是一个SCADA系统,该系统中,前置机(又称通信处理机)负责主站系统的数据采集、规约转换和数据预处理,如图1。前置机通过交换机与多串口服务器连接构成数采子网,由多串口服务器经通信网络与远方的变配电所自动化系统、RTU以及STU、FTU等连接,负责采集、处理来自被控站的数据。SW-2000系统采用先进的规约库技术,根据下挂单元的规约类型来选择相应的规约,形成一个规约库。本文以IEC6080-5-101规约为例,介绍SCADA系统中的规约库技术。

前置机软件的主要功能就是完成来自站端系统和设备的数据预处理功能,同时将来自后台的命令打包后下发,这个过程通常称为“解规约”。由于站端设备类型比较多,不同的设备类型有不同的规约;再加上供货厂商也比较多,不同的厂家对同一个规约的理解不尽相同。因此,要求规约库中应该有如下规约:CDT、1801、IEC 870-5-101/102/103/104、ModBus等。另外,规约库还可以根据用户要求增加新的规约或修改旧的规约。增加或修改某一种规约时,可以在线完成,不影响前置系统的正常运行。

3规约的加载

SCADA系统所有的通信协议都封装在comm类中,通过Protocol::ReadComm,Protocol::WriteComm读写通信数据,并存入系统缓冲区buffer中。系统对不同规约类型、同一类型但不同厂家的规约配置相应的ID号,进行动态加载下挂单元的所有规约。ProtocolLoader::Start启动规约,并创建可执行函数(相同的规约只能加载一次)。

IProtocolExecutor* __stdcall ProtocolLoader::CreateExecutor()

{

ACE_TCHAR path[255];

ACE_OS::sprintf( path, "./%s%s%s", ACE_DLL_PREFIX, protocol_module_name_.c_str(), ACE_DLL_SUFFIX );

swInt32 r = dll_.open( path );

if( r != 0 )

{

return 0;

}

executor_creator_=(ExecutorCreator)dll_.symbol("GetProtocolExecutor");

if( executor_creator_ == 0 )

{

return 0;

}

return executor_creator_( protocol_type_no_ );

}

以上程序可知,对于下挂的单元设备,首先定义相应的规约ID(如#define P_IEC104_JC33),打开定义好的规约dll_.open( path )如-m 101.dlln33,生成规约执行函数dll_.symbol("GetProtocolExecutor"),该输出函数定义的类为IProtocolExecutor*,定义如下:

class IProtocolExecutor

{

public:

virtual swInt32__stdcall Start()=0;

virtual ACE_THR_FUNC_RETURN Execute()=0;

virtual ACE_TCHAR* __stdcall GetTitle(ACE_TCHAR* name)=0;

virtual swInt32 __stdcall GetProtocolType()=0;

virtual void__stdcall Stop()=0;

};

这样,就可以对选择的规约进行相应的动作,如start等。对规约的加载及解规约之后,前置机将数据存入内存,封装为Unit,分别存储为遥信、遥控、遥测及遥调数据,通过网络下发到后台,进行相应的显示或存盘。

4系统通信模块设计

4.1 远动通信模块

IEC6080-5-101规约是一种问答式的规约,由主站问,子站来回答。主站的请求由监控子系统发出,这里的通信模块只需完成子站针对主站请求帧的分析和应答。

远动通信模块流程如图2所示。

IEC60870-5-101采用的帧格式为FT1.2异步式字节传输帧格式,长度为5个字符的是定长帧,长度超过5字符的是可变帧。

4.2 子站内部通信模块

子站内部通信在这里是指子站内的上位机与下挂单元之间的通信。模块流程如图3所示,与子站对主站的通信不同的是,上位机对下挂单元发送数据是主动的。

5界面显示

首先,打开protocolconfig.exe进行规约的配置及选择,如图4所示。

图4规约选择

规约库中包含多种规约,可根据下挂单元来选择与之相应的规约进行通信及数据传输。

运行前置机软件,可以方便工作人员了解到系统信息、厂站信息、通道数据、遥测数据、遥信数据、电度数据相关信息,如图5所示。

图5厂站信息显示图

6小结

本文介绍了基于IEC-60870-5-101/104的规约库及通信模块设计,并以成都四为公司生产的SW-2000系统为例实现了部分规约库配置、加载,以及通信子系统的要求。

显示部分通过友好的界面,实现了通信规约的配置,实时显示出遥测数据、遥信数据、电度数据。该规约库技术已应用于成都供电段达成电力远动系统。

参考文献:

[1] 翟纯玉,唐志勇,张本川. 铁路电力自动化技术[M].北京:中国铁道出版社,2006.

[2] 田国政.变电站自动化系统的通信网络及传输规约选择[J].电网技术,2003,27(9):66-68.

[3] 谭文恕,李泽.IEC870《远动设备及系统第五部分:传输规约》系列标准介绍[J].电力标准化计量,1999,28(2):1-6.

[4] 方炯.IEC60870-5-101通信协议的实现与应用[J].计算机应用与软件,2005,22(9):65-66.

[5] 廖泽友,蔡运清.IEC60870-5-103协议和IEC60870-5-104协议应用经验[J].电力系统自动化,2003,27(4):66-68.

[6] 韩锋,王仲东,皮鲲.基于IEC870-5-101规约的RTU软件实现[J].仪表技术与传感器,2003,(11):19-21.

[7] 刘玉春,刘志清,林莘.通信规约在变电站自动化系统中的应用[J].东北电力技术,2004,25(12):25-28.

[8] 严华.电力系统调度监控系统(SCADA)的研制[Z].2003.

[9] 郭小鹏,李存斌.VisualC++高级编程及其项目应用开发[M].北京:中国水利水电出版社,2003.

上一篇:关于综合型超市项目竣工环保验收监测的实践与... 下一篇:关于杭深线(福建段)牵引供电接触网防雷能力的...