(电力系统及其自动化专业论文)面向分布式应用的scada平台的研究.pdf_第1页
(电力系统及其自动化专业论文)面向分布式应用的scada平台的研究.pdf_第2页
(电力系统及其自动化专业论文)面向分布式应用的scada平台的研究.pdf_第3页
(电力系统及其自动化专业论文)面向分布式应用的scada平台的研究.pdf_第4页
(电力系统及其自动化专业论文)面向分布式应用的scada平台的研究.pdf_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

声明 本人郑重声明:此处所提交的硕士学位沦文基于p c 机d t s 数据管理的研究, 是本人在华北电力大学攻读硕士学位期问,在导师指导下进行的研究工作和取得的研究 成果。据本人所知,除了文中特别加以标注和致谢之处外,论文巾不包含其他人已经发 表或撰写过的研究成果,也不包含为获得华北电力大学或其他教育机构的学位或证书而 使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示了谢意。 学位论文作者签名:经碰壁 日 期: 关于学位论文使用授权的说明 本人完全了解华北电力大学有关保留、使用学位论文的规定,即:学校有权保管。 并向有关部门送交学位论文的原件与复印件;学校可以采用影印、缩印或其它复制手 段复制并保存学位论文;学校可允许学位论文被查阅或借阅;学校可以学术交流为 目的,复制赠送和交换学位论文:同意学校可以用不同方式在不同媒体上发表、传播学 位论文的全部或部分内容。 ( 涉密的学位论文在解密后遵守此规定) 作者签名: 日 导师签名: 期:区! :丛 日期:碰:! :! ? 华北电力大学硕十学位论文 1 1s c a d a 系统的发展概况 第一章引言 s c a d a 系统是调度自动化的重要组成部分,它通过对现场的运行殴备进行监 视和控制,实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功 能,它对提高电网运行的可靠性、安全性与经济效益,减轻调度员的负担,实现电 力调度自动化与现代化,提高调度的效率和水平方面有着不可替代的作用。s c a d a 系统发展到今天已经经历了四代。 第一代与第二代s c a d a 系统的共同特点是基于集中式计算机系统,并且系统 不具有开放性,因而系统维护,升级以及与其它系统联网构成很大困难。 基于分布式计算机网络以及关系数据库技术的能够实现大范围联网的s c a d a 系统称为第三代。这代s c a d a 系统普遍采用了客户机朋& 务器体系结构。 第四代s c a d a 系统具有w e b 功能,它集成了i n t e r n e t 技术、面向对象技术、 分布式计算等技术内核,使采集和监控的数据得以丌放,能被更多的管理系统、控 制系统和使用者所访问。但这代s c a d a 系统数据丌放性是基于数掘库的,即 s c a d a 将采集的现场数据存入数据库,其它如能量管理系统( e m s ) 等分向式应 用系统可以从s c a d a 数据库中取得所用数据。虽然这种方式在技术上可行,但实 际做不到。因为由s c a d a 系统、e m s 系统、其它高级应用软件所组成的调度自动 化系统本身具有分布式应用系统的特点,同时它们往往由不同厂商分别丌发完成。 由于各厂商基于各自的标准定义数据库,另外也考虑到安全因素,基于数掘库的 s c a d a 系统的数据开放性有很大的局限。调度自动化发展到今天对s c a d a 系统提 出更高的要求: l 、传统的低速点对点通信方式已经不能满足调度中心与r t u 信息交换的要求, 目前许多市级供电局正在建设覆盖全局各级变电站的光纤、数字微波等高速网络, 基于t c p i p 的传输协议标准化工作也取得了很大的进展,s c a d a 系统网络化成为 必然趋势。 2 、由于对电力系统的描述形式和讨算机实现方法不同,不同厂家设计的系统 的数据模式是不同的,这造成系统的访问接口缺乏统一的标准,致使不同系统异构 和互联非常困难,制定统一的访问接口标准提到议事r 程; 3 、s c a d a 系统负责为调度自动化其它高级应用软件提供实时数据,在分夼式 应用的环境下,s c a d a 系统应及时地、方便地将采集的现场数据向其它高级应用 软件分发。 华北i u 力大学硕k 学位论文 针对以上要求,本文采用消息中问件系统实现客户端和服务器的交互,双方通 过发布订阅模式进行信息交互,使s c a d a 系统能将采集的数据及时地向其它调度 高级应用软件分发;根据s c a d a 数据库不同的功用划分了不同的组件模块,利用 组件连接数据库与s c a d a 前台应用;选用i e c 6 0 8 7 0 5 一1 0 4 规约,可满足s c a d a 系统网络化的要求。 1 2 电力系统远动通信规约 1 ,2 1 概述 在远动系统中,数据的传送必须按照约定的格式进行,收发双方应对传送速率、 同步方式、数据结构等相互约定,共同遵守。这些约定称为通信规约。按通信传输 模式的不同,远动规约分为以下几种: l 、循环式远动规约,其特点是以r t u 为主动方,循环不断地向调度端发送遥 测、遥信等远动数据。由于采用循环式舰约的子站自发不断循环上报现场数据,因 此通道必须采用全双工通道,且只能采用点对点的方式连接;此外,山于采用现场 数掘不断循环上报的策略,主机对一般遥测量的响应速度较慢。 2 、问答式远动规约,其特点是调度端掌握通信的主动权,r t u 按照调度端的 要求进行发送,调度端可以按需要指定r t u 发送某一帧或某种类型的远动数据。由 于不允许主动上报,应答式规约对事故的l 响应速度慢,尤其是当通道的传输速率较 低的情况下,这个问题会比较突出: 3 、d n p 3 0 规约,它是美国i e e e 电力工程协会在i e c 的基础上制定的美国图 家标准,由物理层、数据链路层、传输层和应用层组成。以i e c 8 7 0 5 标准为基础, 其特点是采用网络通信方式,支持问答式和自动上报数据传输方式。 随着s c a d a 系统对数据传输效率和安全性的要求越来越高,由于传统的远动 规约存在上述问题,急需制定一套高效、可靠和标准化的远动规约。 1 2 2ie 0 6 0 8 7 0 - 5 1 0 4 规约的发展及现状 i e c 6 0 8 7 0 5 系列是由总部设在瑞士日内瓦、由多个成员固组成的国际性组织国 际电工委员会( i e c ) 制定的“遥控设备和系统第五部分通信规约”系列。传统的 远动通信规约不分层,而i e c 6 0 8 7 0 5 系列远动通信规约则分为物理层、链路层和应 用层,网络层、传输层、会话层、表示层都为空,应用层直接映射到链路层,且应 用层采用无连接方式。其中的1 e c 6 0 8 7 0 5 1 0 1 用于常规远动( 己被我国确定为非等 同采用的电力行业标准) ,是一种典型的问答式远动舰约,i e c 6 0 8 7 0 5 1 0 4 则将 i e c 6 0 8 7 0 5 1 0 1 用在t c p i p 网络协议之上。 华北电力人学硕七学位论文 欧美些国家调度主站与变电站r t u 的通信逐步采用以太数据网。为此,囡际 电工委员会( i e c ) 第5 7 技术委员会( t c 5 7 ) 的第三工作组( w g 0 3 ) 于1 9 9 8 年8 月制定了i e c 6 0 8 7 0 - 5 一1 0 4 标准。i e c 6 0 8 7 0 5 1 0 4 规约的名称为“用标准传送文件集 的i e c 6 0 8 7 0 5 1 0 1 网络访问”( n e t w o r ka c c e s sf o ri e c 6 0 8 7 0 5 1 0 1u s i n gs t a n d a r d t r a n s p o r tp r o f i l e s ) 。1 e c l0 4 规约本身是国际电工委员会( i e c ) 为了满足 i e c 6 0 8 7 0 5 1 0 1 远动通信规约( 简称i e c 】0 1 舰约) 用于以太网而制定的,其网络 层协议为t c p i p 涛议,应用层协议采用i e c l 0 i 规约的a s d u 。为了保证应用层 a s d u 的通信可靠性,包装了a p c i 传输接口,规定了应答和重发机制( 引用 i t u t x 2 5 标准) 。 2 0 0 1 年中国电力科学研究院著名的远动专家谭文恕老师,在电力系统自动化 杂志上发表了一篇题为远动信息的网络访问的文章。首次在国内提出了利用 i e c 6 0 8 7 0 5 1 0 4 传输规约进行远动信息的访问的可行性研究,从而揭,1 :了这利,以 i n t e r n e t 为基础的新型远动规约的研究与应用。2 0 0 3 年9 月1 6 日,国家经贸委正式 发布远动设备与系统第5 - 1 0 4 部分:传输规约采用标准传输文件集的 i e c 6 0 8 7 0 5 1 0 1 的网络访问。 1 2 3f e e l 0 4 规约的应用前景 目前电力通信技术发展迅速,基于光纤环网的高速通道已逐步成为地区电力通 信和自动化系统中语音、图像及数据传输的主要通道。同时,随着计算机网络技术 及电力自动化技术的快速发展,许多地区调度自动化系统的功能已很强大,其信息 传输控制一般支持多种协议。i e c l 0 4 协议作为种固际标准协议,具有实时性好、 可靠性高、数据流量大、便于信息量扩充、支持网络传输等优点,其内容和功能涵 盖了保护方面的定义,与其它协议( 如部颁c d t 、i e c l 0 】协议等) 相比,i e c l 0 4 规约替代了传统的串口通信方式,采用网络传输方式,它的优势在于网络传输而不 在于规约本身,由于网络技术的发展,配网自动化采用网络通信成为必然趋势。因 此,研究地区调度与自动化变电站基于i e c l 0 4 肋- 议在实现刚络通信上,不仅可有效 利用光纤通道的传输能力,有利于远动胁议的标准化推广,而且对实现地区自动化 系统的组网和电力系统自动化数据的共享以及设备方便、迅速的维护检修提供了技 术支持,同时,网络通信方式的实现可改变现有自动化系统的服务模式,具有长远、 潜在的意义。因此,电网调度远动技术的网络化在咆网调度自动化领域将成为一种 新的趋势,而作为目前网络传输的最佳选择i e c l 0 4 规约必然有着广阔的市场i j u 景 和应用价值。 1 3 应用消息中间件的背景和意义 1 3 1s c a d a 系统面临的挑战 华北电力大学硕十学位论文 s c a d a 系统负责为调度自动化其它高级应用软件提供实时数据,由于s c a d a 系统、e m s 系统、其它高级应用软件所组成的调度自动化系统本身具有分斫j 式应用 系统的特点,同时它们往往由不同厂商分别开发完成,各厂商基于各自的标准定义 数据库,另外也考虑到安全因素,基于数据库的s c a d a 系统的数据开放性有很大 的局限,因此如何及r 寸地、方便地将采集的现场数据分发给其它高级应用软件是 s c a d a 系统急需解决的个问题。 1 3 2 消息队列中间件的应用 应用消息队列中间件( m e s s a g e o r i e n t e dm i d d l e w a r e ) 技术,就能够很好的解决 以上问题。总的来讲,消息队列中间件的作用体现在两个方面:是集成大型的分 布式应用;二是确保分布式应用之间的异步通信。m o m 提供可靠的异步的和松散 耦合的通信服务。m o m 在其它传统的通信方法不能奏效时能够成功,因为它满足 三个重要的条件: 发送者和接收者无须同时连接; 即使发送者和接收者之间的通信不是同时发生的,也会有极强的请求和回答传 送保障: 请求和回答可阱通过发送方和接收方之间的路由器进行翻译和重新格式化。 利用m o m ,应用程序通过一系列消息在彼此间进行通信。当消息在发送方和 接收方之间进行传送时,m o m 提供方将消息限定在队列内。队列防止消息在传输 过程中被丢失,并在消息准备好时为接收方提供一个寻找消息的地方。应用程序通 过向预定接收方相关的队列发送消息来产生请求。m o m 的作用主要体现在以下几 点: 1 、存储和转发通信:m o m 能使应用程序向其他应用程序发送请求,而那些应 用程序不必正在运行或是可到达; 2 、防御通信:m o m 软件使用强大的技术来保证消息在传送中不会丢失,打乱 顺序或重复传送; 3 、并行执行:使用m o m ,应用程序可以向许多不同的接受方发送请求而不必 等待响应,等待接受方可以平行地处理请求;当所有的响应消息都到达时,应用程 序就处理结果; 4 、日志通信:m o m 产品可以产生同志,以利于记录,核查和错误:陕复。 1 3 3 本文消息中间件的设计目标 本文从分布式体系结构的角度,将消息中间件应用于电力系统调度自动化系统 的设计。浚中间件系统的基本设计目标是: 华北电力火学硕七! 学位论文 提供一种在本端电力调度主站系统的子系统之间进行异步消息传递的机制; 将消息中间件实现为独立的c o m 模块,并为应用子系统提供简单的接口,实现 “即插即用”; 1 4 本文所完成的工作以及论文的结构 针对目前对s c a d a 系统应用集成、信息集成和企业模式转变的要求,需要一 种新的具有更好的扩展性、灵活性,可以对不同平台的应用系统进行集成的软件构 架。在这种情况下,采用传统的c s 结构显然已经不是很适合了,必须采用新的基 于消息驱动的发布订阅结构才能满足这种要求。本论文主要做了以下几个方面的工 作: 分析了i e c l 0 4 规约的实现方法以及应注意的要点,提出了拓展i e c l 0 4 规约使 用范畴的一些设想,分析了后台通信程序的设计与编写; 介绍了一种基于组件对象模型( c o m ) 的s c a d a 数据库系统设计方案: 从软件体系结构的高度,将复用技术应用于电力系统应用软件领域,提出了一 种电力系统调度软件体系结构; 论述了消息中问件系统在电力调度通信软件上的应用,讨论了电力调度系统消 息中问件的系统设计和系统实现,对发枷订阅模型进行了分析和设计。 华北电力人学硕十学位论文 第二章 ie 0 6 0 8 7 0 5 1 0 4 远动规约调度端的实现 本章详细介绍了i e c l 0 4 的网络参考模型、帧格式结构和t c p 连接建立过程, 并根据工程实践,分析了i e c l 0 4 的实现方法以及应注意的要点,提出了拓展 i e c l 0 4 使用范畴的一些设想,最后分析了后台通信程序的设计与编写。 2 1 规约程序的分析及实现 2 1 1 规约的体系结构分析 i e c l 0 4 规约采用i s o o s i 参考模型中的5 层,其中传输层、网络层、链路层的 工作都能由w i n d o w s 的s o c k e t 套接字自动完成:用户进程层封装的是用户界面数据 及相应的操作,可以通过a s p 或d d e 等方式和高级应用层相连。遵照组件化的发 计原则,可得到一个结构化为两个层次的应用层:其高层在一个假设的不可靠的面 向连接服务上提供可靠的端到端传输,其低层提供无错序、无重复、可用肩停进行 传输控制的功能,这种两层的体系结构的优点是低层很容易被删去,将高层直接运 行在另一种规约上,如i e c 6 0 8 7 0 5 一1 0 l 舰约的应用层。 层和面 i e c l 0 4 规约体系结构山四个层和四个面组成。如图2 1 所示。 信息体 a d u a p c i 用户数据缓7 1 l 区( u d b ) 图2 。1i e c l 0 4 规约体系结构 每一个层次可认为是一个主动列象,有用户进程、应用服务层、应用控制层、 网络传输层对象。其中事件控制块( e c b ) 的缓冲区对象用于存储相邻两层对象所 一园一园一园 u a a 华北l u 力火! 乎:f i 6 一螨能论文 交换的原语类型,此外,当相邻两层功能山彳i 同进程实现时, 【le c b 缓冲区剥象负 责数据的完整性及收发的同步;原语相关的用户数据存放在独立的用户数据缓冲区 ( u d b ) 中,u d b 对象中含有各个高层数据的累积。 每一层包括四个面,即管理面、组装面、访问面和传输面,与之对应的服务对 象是管理器、组装器、访问点和数掘流源t e 。管理器主要负责相关的超时功能:组 装器提供配置独特的通信服务的能力,这些能力是由防问点、数据流源l i e 提供的; 访问点使得应用能建立具有事先定义的通信能力的通信;数据流源汇用于传输数 据。 服务和协议对象 模块中的网络传输层的通信功能是通过s o c k e t 套接字实现的,利用服务端和客 户端的套接字就可以进行数据的收发。 应用控制层实际上是一个提供可靠的连接的应用层协议,它可被分解为一组协 议对象,使得能把这些协议对象组装起来形成服务对象:如应用控制层组装器、应 用控制层服务访问点、应用控制层数据流源汇。为了提供服务,在服务访问点之间 定义一个服务控制协议,负责建立和释放连接,包括建立和释放所有与之相关的数 据流;在数据流源汇之问定义一个数据流控制协议。卧议功能类简要说明如下:组 装对象用于配置服务访问点、数据流源r e x , j 象;拼接刘+ 缘把a p c i 放入u d b 合成 一个a p d u 帧;服务控制对象提供连接建立和释放的功能;传输控制对象完成流量 控制和差错控制。 应用服务层是由从i e c 6 0 8 7 0 5 3 中选取的应用服务数据单元和从l e c 6 0 8 7 0 5 4 中选取的应用信息元素构成,可分为遥测对象、遥信对象、电镀刘象、s o e 对象、 遥信变位及遥控返校对象等。同应用控制层类似,它也被分解为一组协议对象。 用户进程应完成的功能主要包括:向其它应用模块输入和获取所需数据;向应 用服务层输入和获取系统数据;完成人机交互等。作为i e c 6 0 8 7 0 5 5 和 i e c 6 0 8 7 0 5 1 0 l 中的应用功能选集,可以以两种模式运行:同步或异步。当一个服 务对象创建时它处于同步模式,模式能在任何时候进行改变。在同步模式下,一个 对象操作的调用者被阻塞直到该操作完成,或者出现了失败强迫它返回;在异步模 式下,为了避免任何阻塞情况,操作立即返回。 模块问通信 经验表明,在接口处进行数据拷贝是一种费时的操作,通过引入诸如消息传递 的概念可以避免它。消息传递的操作如下:把服务数据作为消息通过接口发送给提 供者,当函数调用返回h q ,该消息不能再蔓用户使用。 综上所述得到该系统应用层组件化的参考构架并构成整个类图,如图2 2 所示: 华北电力火学硕:。k 学位论文 剀2 - 2 麻f l f 层类剀 2 1 2 应用控制类的分析及实现 应用控制层实际上是一个提供可靠的连接的应用层协泌。它接收:执行和控制 高层所需的传输服务功能,向高层报告传输彬成功或失败,并跏察网络和站的工作 状态。图2 5 为应用控制层有限状态机以及各状态之间的变迁关系。有限状态机规 定了应用控制层在响应一个输入或用户命令时,如何在各个宏观状态之间互相变 迁。 采用过程驱动方案,为每个输入状态启动一个过程,当某一事件发生时,应用 控制层利用当f | 百状念来选取一个适当的过程,浚过程处理输入事件并更新当前状态 变量值。定义应用控制层状态机有六个状态,分别对应t c pc o n n e c t i o n 、 s t a r t d t a c t 、s t a r t d t _ c o n 、s t o p d t a c t 、u n c o n f i r m e d i f r a m e 以 及s t o p d tc o n 。 在具体的实现中,每个状态对应个过程,如图2 3 所示,在一个输入报文到 达时,应用控制层调用当前状态对应的过程。 控制站利用s t a r t d t ( 启动数据传输) 和s t o p d t ( 停止数据传输) 来控制 被控站的数据传输。 s t a r t d t s t o p d t 是一利,控制站激活解除激活监视方向的机制。控制站即使 没有收到激活确认,也可以发送命令或者改定值。发送和接收计数器继续运行,它 们并不依赖s t a r t d t s t o p d t 的使用。 华北【u 力火学顾一l 学位论文 被控站接收: 丽 控制站接收 u - f r a m e o ri - f r a m e 【】忙o n ( e r r o r ) 9 rs - f r a m e j c o n ( e r r o r ) t c p 连接建立 s t a r t d _ i 二a c t u f r a m e 】, o r1 - f r a m e o rs - f r a m e u f r a m e 1 s t a r t e d 连接 s t o p d c a c t j u 。- f r a m e 。吲。篇 o “r s 惑f r 戮a m e 1 c o n ( e r r o r i - f r a m :- e s l 斧 - ) o 一一广2 f 一 来确认j u f r a m e o ri - f r a m e 1 c o n ( e r r o r ) o rs - f l a m e 1 c o n ( e r r o r ) u - f r a m e j o r 卜f l a m e o rs - f r a m e uf i a m e o rl f r a m e 1 o ls - f r a m e ,厂习藕_ 九术确认1 - f r a m e s l u f r a l l l e l 卜u n c o n f i r m e d _ u f r a m e i o r1 - f r a m e s t o p p e dh o r1 - f f m n e 1 0 r 孓口枷。a n d s t o p r r a m d te c ”o n 8 。 1 仔:兰l u f r a m e 。j i 广j 1 u - l 纠s t o p p e dj o ri f r a m e 1 c o n ( e r r o r ) u - f r a m e i 口连接r 一“孓什 c o “( e r r o r ) o 。r s - ri - f f r r a 酬n c e 1 】c o c o n n ( f e e r r r r 0 0 ,) r ) 。 一o rs - f r e f ) c o n f e r r 0 ,) j 幽2 - 3 应_ = l 控制层有限状态机 在某种情况下,例如,从一个有效连接切换到另一个连接,控制站首先在有效 连接上传送一个s t o p a c t ,被控站停止这个连接上的用户数据传输并返回一个 s t o p d t c o n 确认。挂起的a c k 可以在被控站收到s t o p d t a c t 生效指令和返回 s t o p d t c o n 确认的时刻之间发送。t k k 至- 0s t o p d t c o n 确认后,控制站可以关闭这 个连接。 状态机仅描述了本层的宏观状态,由状态机规定的宏观状态之间的变迁并不能 控制输出或重发动作,所咀这一类事件必须另行处理,所以这类的事件必须另行 处理。主要包括以下几个问题: 怒 黧w 匪一 蚤而 华北电力火学硕士学位论文 防止报文丢失与重复传送 发送方增加发送序列号而接收方增加接收序列号。接收站认可连续正确接收的 一个a p d u 或者多个a p d u ,将最后一个f 确接收的a p d u 的发送序列号作为接收 序列号返回。发送站把一个或几个a p d u 保存在缓冲区里,直到它收到接收序列号, 这个接收序列号是对所有发送序列号小于或等于该号的a p d u 的有效确认,这时就 可以删除缓冲区里己正确传送过的a p d u 。如只在个方向进行较长的数掘传输, 就得在另一个方向发送s 格式对这些a p d u 进行确认。这种方法应该在两个方向上 采用。在创建一个t c p 连接后,发送和接收序列号都被清零。 数据窗口 在主站端和子站r t u 端进行通信时,接收方可以使用s 格式报文( 当有应用 服务单元需要发送给对方时,可使用i 格式报文) 对已接收到的i 格式报文进行确 认,以免发送方超时收不到确认信息而重新建立t c p 连接。这就存在个接收方收 到多少个i 格式报文进行一次确认的问题,以及发送方应在多少个i 格式报文未得 到确认时停止发送数据。1 e c l 0 4 规定了两个参数k 和w ,其取值范围为l 到3 2 7 6 7 , 其中k 表示发送方在有k 个i 格式报文未得到对方的确认时,将停止数据传送,w 表示接收方最迟在接收了w 个i 格式报文后应发出认可;i e c l 0 4 规定k 和w 的默 认值分别为1 2 个a p d u 和8 个a p d u 。在实际中,k 和w 的具体取值可以根据t c p 连接双方的数据通信量来加以确定,对于子站r f u 端来说,每收到一个调度端的i 格式报文都应立即进行u 向应,其w 的耿值实际上为1 ,由于r t u 端可以循环向调度 端发送遥信、遥测等信息,因此k 的取值与其循环发送的定时周期有关,通常1 2 到2 0 个a p d u 就足够了:对于主站端,由于不停接收到r t u 的数据,因此应及时 地给以确认,通常w 取小于8 个a p d u 的值。 对于数据窗口中的每个数据帧,都有一个定时器,如果确认超时,需要关闭 套接字进行重新连接;t c p 连接重建后发送数据窗口未被确认的数据帧应当重发。 建立缓冲区 建立发送缓冲区、接收缓冲区和处理缓冲区,在程序中用循环链表的方式实现。 方法包括:判断缓冲区是否满、向缓冲区中添加发送报文、从缓冲区中删除已确 认报文、报文校验等。 定时器 为了能对t c p 连接进行检查和维护,i e c l 0 4 规定了几个超时时问,即t o 、t l 、 t 2 、t 3 ,它们的取值范围为】2 5 5 s ,准确度为1 s ,其缺省定义如表2 4 所示。 华北电力火学砸十学位论文 参数默认值注释 t o3 0 s t c p 连接建立的超时时间 t 1】5 s 庶用圳约数据尊元n 0 发送或者测试的超时时间 乜1 0 s 无数据报文t 2 实时传输功能。传输功能和i e c l 0 1 规约所实现的类似,不过在i e c l 0 4 中不召 唤1 级、2 级数据,子站主要通过定势发送全数据; 测试功能。利用u 格式报文建立主站和子站的测试握手信号; 启停功能。利用u 格式报文建立启停传输控制机制: 故障续传功能。链路故障后采用的新的链路实现断点续传,搜寻链路故障时段 内发电生产的历史信息c 多线程功能。多线程技术实现对每个子站端口并行实时采访。 其实施过程为: t c p 连接的建立过程。站端r t u 作为服务器,在建立t c p 连接前,应一直处 于侦听状态并等待调度端的连接清求,当t c p 连接已经建立,则应持续地监测 t c p 连接的状态,以便t c p 连接被关闭后能重新进入侦听状态并初始化一些与 t c p 连接状态有关的程序变量;调度端作为客户机,在建立t c p 连接前,应不 断地向站端r t u 发出连接请求,一旦连接请求被接收,则应监测t c p 连接的状 态,以便t c p 连接被关闭后重新发出连接淆求。需要注意的是,每次连接被建 立后,调度端和站端r t u 应将发送和接收序号清零,并且子站只有在收到了调 度系统的s t a r t d t 后,才能响应数据召唤以及循环上送数据,但在收到 s t a r t d t 之前,子站对于遥控、设点等命令仍然应进行响应。 循环遥测数据传送。对于遥测量,可以使用类型标识为9 ( 归一化值) 、i i ( 标 度化值) 和1 3 ( 短浮点数) 的a s d u 定时循环向调度端发送。 总召唤过程。调度主站向子站发送总召唤命令帧( 类型标识为1 0 0 ,传输原因为 6 ) ,子站向主站发送总召唤命令确认帧( 类型标识为l0 0 ,传输原因为7 ) , 然后子站向主站发送单点遥信帧( 类型标识为1 ) 和双点遥信帧( 类型标识为3 ) , 最后向主站发送总召唤命令结束帧( 类型标识为1 0 0 ,传输原因为1 0 ) 。 校时过程。调度主站向予站发送时间同步帧( 类型标识为1 0 4 ,传输原因6 ) , 1 4 华北电力火学硕二l 学位论文 子站收到后立即更新系统时钟并向主站发送时间同步确认帧( 类型标识为1 0 4 , 传输原因7 ) 。 子站事件主动上传。以太网剥于调度端和子站端都是一个全双工高速网络,因 此i e c l 0 4 必然使用平衡式传输。当子站发生了突发事件,子站将根据具体情况 主动向主站发送下述报文:遥信变位帧( 单点遥信类型标识为1 ,双点遥信类型 标识为3 ,传输原因为3 ) 、遥信s o e 帧( 单点遥信类型标识为3 0 ,双点遥信 类型标识为3 1 ,传输原因为3 ) 、调压变分接头状态变化帧( 类型标识为3 2 , 传输原因为3 ) 、继电保护装置事件( 类型标识为3 8 ) 、继电保护装置成组启 动事件( 类型标识为3 9 ) 、继电保护装置成组输出电路信息( 类型标识为4 0 ) 。 遥控遥调过程。主站发送遥控遥调选择命令( 类型标识为4 5 5 1 ,传输原因为 6 ,s e = 1 ) ,子站返回遥控遥凋返校( 类型标识为4 5 5 1 ,传输原因为7 ,s e = i ) , 主站下发遥控遥调执行命令( 类型标识为4 5 5 l ,传输原因为6 ,s e = 0 ) ,子站 返回遥控遥调执行确认( 类型标识为4 5 5 1 ,传输原因为7 ,s e = 0 ) ,当遥控 遥调操作执行完毕后,子站返回遥控遥调操作结束命令( 类型标识为4 5 5 1 , 传输原因为1 0 ,s e = 0 ) 。 召唤电度过程。主站发送电度量冻结命令( 类型标识为1 0 1 ,传输原因为6 ) , 子站返回电度量冻结确认( 类型标识为1 0 1 ,传输原因为7 ) ,然后子站发送电 度量数据( 类型标识为15 ,传输原因为3 7 ) ,最后子站发送电度量召唤结束命 令( 类型标识为1 0 l ,传输原因为1 0 ) 。 2 2 后台网络通信的实现 2 2 1 利用w in d o w ss o c k e t 网络套接宇实现通信 套接字( s o c k e t ) 是种网络编程按1 2 1 ,它是对通信端点的一种抽象,提供了一种 发送和接收数据的机制。套接字是通信的基石,一个套接字是通信的一端。在通信 的任何一端上,用户可以找到套接字及与其对应的一个套接字名字。一个正在被使 用的套接字都有它的类型和与其相关的进程。套接字存在于通信域中。通信域是为 了处理一般的线程通过套接字通信而引进的一利一抽缘概念。套接字通常和同一个域 中的套接字交换数据。 用户目前可以使用两种套接字,它们是数据报套接字( d a t a g r a ms o c k e t s ) 干n 流式 套接字( s t r e a ms o c k e t s ) ,这两种套接字传输的数据类型是不同的,因而其使用的方 法和相应的程序设计模式也是不同的。数据报套接字( d a t a g r a ms o c k e t s ) 提供了一种 不可靠的、非连接的数据包( p a c k e t ) 通信方式:流式套接字可以将数据按顺序无重复 地发送到目的地,它提供的是一种可靠的面向连接的数据传输方式。 华北电力人学硕j k 学位论文 为了保证可靠地传输远动数据,i e c l 0 4 规定传输层使用的是t c p 协议,本文 采用流式套接字( s t r e a ms o c k e t s ) ,即面向连接的s o c k e t s ,图2 - 9 即面向连接的 s o c k e t s 工作原理。 服务器模式和客户机模式的区别是,在建立t c p 连接时,服务器从不主动发 起连接请求,它一直处于侦听状态,当侦听到来自客户机的连接请求后,则接受此 请求,由此建立一个t c p 连接,服务器利客户机就可以通过这个虚拟的通信链路 进行数据的收发。1 e c 6 0 8 7 0 5 1 0 4 规定控制站( 即调度系统) 作为客户机,而被控 站( 即站端r t u ) 作为服务器:使用的端口号为2 4 0 4 ,并且此端口号已经得到i a n a ( 互联网地址分配机构,i n t e r n e t a s s i g n e d n u m b e r s a u t h o r i t y ) 的确认。 玉 厂;五瓦可门 b i n d = ( s ,) i i s t e n ( s ,) r e c v ( s ,) s e n d “ c 】o s e s o c k e t ( n s ) c l o s e s o c k e t f s l e n d s e n d ( s ,) r e c v ( s 1 c i o s e s o c k 。t ( s ) + e n d 图2 - 9 面向连接的s o c k e t s2 1 :作原理 2 2 2 利用多线程实现网络通信 2 2 2 1 设计程序中的线程 多线程机制是现代操作系统突出的优点。在通信程序设计时,后台计算机发出 命令信号后,如果一直监测网络的状念以等待下位机的响应,那就什么事也做不成, 白白浪费c p u 的时间:如果每隔一段时间监测一次网络状态,则有可能过早或过晚, 有没有更好的解决方法呢,那就是事件驱动通信方式。事件驱动通信是在通信过程 中有事件发生时( 如收到一个字符、奇偶校验错误等) ,向应用程序发送一定的消 息以给予通知。这样,在我们的网络通信程序中,当后台计算机发出命令信号后, 可以去做其他事,仪表的响应信号到来时,w i n d o w s 操作系统将发送消息通知我们, 6 华北电力火学顶十学位论文 通信程序这时再处理相应的通信进程;因此,这是一利,有效的工作方式,可以大大 提高系统运行的效率。 基于w i n 3 2 a p i 的多线程通信利用了w i n 3 2 提供的两利,线程。一种是用户界面 线程u i ( u s e r i n t e r f a c e t h r e a d ) ,它包含消息循环,用来处理用户输入,响应由用 户产生的事件和消息,可用于显示接收到的数据和接受通过用户界面指定的数掘; 另外一种是工作线程( w o r k t h r e a d ) ,它没有消息循环,不处理窗e l 消息,用于完 成后台计算、打印和其它一些没有必要强迫用户来等待的任务。在本程序中,用户 界面线程就是程序的主线程。另外再添加两个工作线程:通信线程和延时( 定时) 线程。它们的功能主要如下所示: 入u 建立1 p 连接叫创建通信线程 触发数据传送事件卜 叫 写数据 创建延时线程 7 定时时问、 芝! 少 土: 通知主线程 线程结束 主 线 程 魁古收士l j 正确应答 n 触发延时线 程结束事件 触发通l - g 成功事仲 触发通信失败事件 毪会穹隳l 眄酾蕊 待一卜- 一个事什1i 二:! := :兰:兰 幽2 - 1 0 网络通信程序流程幽 址番- b i 翌 剑数制h y 读山数据 , 通知主线秤处 理接收数据 主线程:初始化套结字;建立t c p 连接;处理通信线程接收到的数据( 包括报 文的校验、解释、用户程序调用、接收数据保存和显示等) ;通知通信线程向端口 写数据等。 1 7 华北电力大学硕士学位论文 通信线程:在t c p 连接建立后被创建。设置创建的线程函数r e c v t h r e a d 进入 死循环。线程将一直监视接收事件,当接收到数据时,读取接收到的数据,并向主 线程发自定义消息o n r e c v d a t a ,通知主线程处理数据;当收到主线程的写命令时, 发送缓存中的数据。 延时线程:在主线程写数据之后被创建,通常用s e t t i m e r 函数来实现。如采主 线程收到了正确的响应,则用k i l l t i m e r 函数来结束丌启的延时线程。当延时时间 到了之后,则触发s e t t i m e r 函数中第4 个参数指定的程序通知主线程重发刚才发送 的命令,然后线程函数返回,结束延时线程。 程序流程图如图2 1 0 所示。 2 2 2 2 线程间的通信 ( 1 ) 通过全局变量 主线程可以采用多种方式与工作线程进行通信,最简单的办法是通过全局变 量。因为进程中的所有线程都可以访问所有的全局变量。如:定义全局变量 b r e c e i v e s u c c e s s ,它表示是否收到了正确的响应。在主线程发送数据之后它被置为 f a l s e ,然后延时线程启动。当系统收到正确的响应后,b r e c e i v e s u c c e s s 被主线程 改为t r u e 。延时线程根据b r e c e i v e s u c c e s s 的值来决定是结束该线程还是给主线程 发自定义消息。 ( 2 ) i 过参数 主线程可以向工作线程传递一个4 字节的参数,一种使用该参数的常见方式是 传递一个指针。如: u i n tc m a i n f r a m e :r e c v p r o c ( l p v 0 1 dp p a r a m ) c m y s o c k e ts o c k = ( ( r e c v p a r a m8 ) l p p a r a m e t e r ) - m c l i e n t s o c k e t ; h w n d h w n d = ( ( r e c v p a r a m + ) l p p a r a m e t e r ) - h w n d ; 线程处理代码 ) 其中r e c v p a r a m 包含处理接收数据的窗口旬柄和创建的套接字,其定义如 下: s t r u c tr e c v p a r a m c m y s o c k e ti t i c l i e n t s o c k e t ; h 、7 dh w n d ; ) ; 】8 华北电力大学硕士学位论文 ( 3 ) 通过消息 工作线程获得主线程的窗口句柄,则可以给主线程发送消息。如通信线程通知 主线程接收了数据的程序可以这样实现: :p o s t m e s s a g e ( h w n d ,w m r e c v d a t a ,0 ( l p a r a m ) p b u f f e r ) ; 在本次设计中是采用方法( 2 ) 和方法( 3 ) 来实现的。 2 2 2 3 线程的同步 多线程的优点之一是所有线程都可以访问相同的全局对象和共享资源,它提供 了程序设计的简捷性和便利性,提高了对信息处理的并发度。但如果不妥善处理好 线程的并发问题,也会带来数据的错误或是资源的死锁。为了避免这些问题发生, 线程在使用共享资源或对象前必须获得一个约束访问同步对象的权力,也就是通过 同步的机制来控制这种权力的使用。在多个线程之删建立同步,可以采用事件 ( e v e n t ) 、互斥体( m u t e x ) 军 1 信号( s e m a p h o r e ) 等同步对象,线程问的同步有以下几种方 法: ( 1 ) 临界区 临界区是通过对多个线程的串行化来访问公共资源或一段代码。常用的实现方 法如下: i n i t i a l i z e c r i t i c a l s e c t i o n ( & ( p o r t 一 m c s c o m m u n i c a i t o n s y n t ) ) ;p 初始化临界 区对象t e n t e r c r i t i c a l s e c t i o n ( & ( p o r t 一 m c s c o m m u n i c a i t o n s y n c ) ) ;,幸使调用线程等 待获得临界区对象并在获得拥有权时返回+ d 0 - i f ( f b r e c e i v e s u c c e s s ) 全局变量 l e a v e c r i t i c a l s e c t i o n ( & ( p o r t 一 mc s c o m m u n i c a i t o n s y n c ) ) :p 释放对临界 区对象的拥有权+ 其它处理代码 ) ( 2 ) 事件( e v e n t ) 事件用来通知线程有一些事件已经发生,比较适合于信号控制。事件有手动复 位和自动复位两利,:手动复位事件是在应用程序或系统后台控制下改变它的信号状 , 1 9 华北电力人学硕士学位论文 态。当手动复位事件处于有信号状态时,所有等待该事件的线程都被激活,事件保 留有信号状态直到被一个应用程序复位为止。当一个自动复位事件处于有信号状态 时,只有一个等待线程会被激活,并且事件将复位成无信号,其它所有等待着的线 程仍将保持挂起状态。 本通信程序就是采用事件来实现线程同步的。在实现时,定义了3 个事件: m h e v e n t a r r a y 0 = mh s h u t d o w n e v e n t ; 结束通信线程事件 m h e v e n t a r r a y 1 _ mo v h e v e n t ;, 读事件 m h e v e n t a r r a y 【2 _ mh w r i t e e v e n t ; 写事件 在通信线程的线程函数r e c v t h r e a d 中等待3 个事件的发生,程序代码实现如一 下: e v e n t = w a i t f o r m u l t i p l e o b j e c t s ( 3 ,s o c k ,m h e v e n t a r r a y ,f a l s e ,i n f i n i t e ) ; s w i t c h ( e v e n t ) c a s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论