1、ICS 35.240.50 J 7 包昌中华人民共和国国家标准GB/T 26221-2010 基于状态的维护系统体系结构Condition-based maintenance system architecture 2011-01-14发布2011-05-01实施秘辛虫防伪中华人民共和国国家质量监督检验检菇总局中国国家标准化管理委员会发布GB/T 26221-2010 目次前言.m 引言.N l 范围2 规范性引用文件3 术语和定义. 4 符号和缩略语.2 5 约定.2 5. 1 层次定义约定.2 5.2 数据类型定义约定.3 6 CBM系统结构36. 1 概述.3 6.2 CBM系统结构36
2、.3 CBM系统开发框架.4 7 CBM系统层次模型7.1 概述.7.2 数据采集层. 7.3 数据处理层7.4 状态监测层7.5 健康评估层.7.6 预诊断层87.7 决策支持层.8 7.8 表示层.9 8 CBM系统通信模型98.1 概述8.2 数据交换接口.10 8. 3 层次接口. 8.4 通信协议9 CBM系统数据规范9. 1 概述159.2 数据的类型.15 9.3 复合结构数据9.4 一般数据. 10 CBM系统与企业应用系统集成框架1810.1 概述四10.2 生产过程级集成.20 10.3 生产资源级集成.20 10.4 生产控制级集成.22 10.5 车间管理级集成.23
3、G/T 26221-2010 10.6 企业管理级集成.23 10. 7 企业协作级集成.24 附录A(资料性附录)OSA-CBM UML模型.25 A.1 概述25A.2 top模型25A.3 meavEv模型.26 A.4 propEv模型UA.5出模型nA. 6 dm模型mA.7 cm模型mA.8 ha模型31A.9归模型UA. 10 util模型33人口data模型M参考文献.35 图1CBM系统层次组成结构图2图2CBM系统通用概念视图4图3CBM系统开发流程框图4图4CBM系统框架及组成5图5DA模块层组成结构图5图6DM模块组成结构图.6 图7CM状态监测层7图8HA模块组成结构
4、图.7 图9PA模块组成结构图8图10DS模块组成结构图. 图11OSA-CBM系统集成10图12OSA-CBM各层及其API关系10图13通信中模块的角色关系.12 图14多个生产者和消费者通信模型的一个示例四图15方法调用的顺序.13图16CBM通信模型的示例.14 图17制造执行域.四图18过程集成模型用例图20图19资掠集成模型交互图.21 图20资源集成模型协作图.22 表1控制和维护应用中涉及的接口类型.22 E GB/T 26221-2010 剧昌本标准的附录A为资料性附录。本标准由中国机械工业联合会提出。本标准由全国工业自动化系统与集成标准化技术委员会(SAC/TC159)归口
5、。本标准负责起草单位:北京机械工业自动化研究所、中国科学院沈阳自动化研究所。本标准起草人:于海斌、徐皑冬、胡静涛、黎晓东、孙洁香、李延峰、郭前进、吴薇、张晓芬、毕静、张黎明。而且GB/T 26221-2010 引设备的监测和维护是保证设备正常运行、提高设备工作效率、延长设备使用寿命的主要手段。随着设备制造技术的发展和科学技术的进步,现代设备的结构越来越复杂,自动化程度越来越高,设备的日常维护和故障检修越来越困难,设备维护的费用越来越大。设备监测和维护的任务是及时地、准确地对各种异常状态或故障状态做出诊断,预防或消除故障,对设备的运行进行必要的指导,提高设备运行的可靠性、安全性和有效性,把故障损
6、失降低到最低水平。设备维护方式的发展经历了三个阶段:即事后维护方式CCorrective Maintenance)、定期预防维护方式CPreventiveMaintenance)、基于状态的维护方式(Condition-basedMaintenance,以下简称CBM)。CBM方式是通过对设备工作状态和工作环境的实时监测,借助人工智能等先进的计算方法,诊断和预测设备未来的有效工作周期,合理安排设备未来的维修调度时间。CBM方法根据设备的实际运行状态确定设备的最佳维护时间,降低设备全寿命周期费用,增加设备的稳定性。CBM的思想就是只有在设备需要维护时,才进行必要的维护。由于CBM方法涉及到众多学
7、科,如传感器技术、人工智能技术、计算机软件技术等,设备用户很难进行专业的诊断和维护,而目前专业的维护产品功能单一、彼此间互不兼容,并不能很好地解决设备维护问题。同时,封闭的系统模式限制了技术应用和发展,市场垄断给设备用户带来了巨大的经济负担,限制了设备维护技术的推广。开放系统应该是一种厂家中立的理想系统,它的应用发展不应受任何厂家的控制和限制。要实现对这样一个开放系统的有效配置、操作和部件替换,就要制定一套接口、服务、协议的规范标准。在开放系统的环境下,可以用不同厂家的产品作为组成部件来构成系统,也可以在不同广家生产的相同功能的产品间互换。这样就为用户采用多家产品集成系统以及系统的维护带来很大
8、的方便,也有利于CBM维护系统的组件化、专业化发展。同时有利于打破市场垄断,促进技术与产品的发展。GB/T 26221-2010(基于状态的维护系统体系结构是针对CBM方式网络化维护系统的建设所提出的框架标准。本标准定义了CBM系统的概念结构和开发框架,定义了系统的层次模型、通信模型和数据规范,并提出了CBM系统与企业应用系统的集成框架。N GB/T 26221-2010 基于状态的维护系统体系结构1 范围本标准规定了基于状态的维护(CBM)系统参考模型的体系框架。CBM系统用于在网络环境下对企业大型制造装备实施健康状态监测与预诊断,为有针对性地制定合理有效的装备维护计划提供支持。本标准适用于
9、支持企业装备CBM系统建模,进而指导CBM系统的开发与应用。2 规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。OSA-CBM UML Model Release 1. 0 3 术语和定义由OSA-CBMUML Model Release 1. 0确立的术语和定义及下列术语和定义适用于本标准。3. 1 请求请求协议request-to-r吨uestprotocol 描述通信双方
10、如何交换数据的一种协议,通信的一个周期的开始和结束都以一个数据的请求为标识。3.2 3.3 生产者producer 消费者consumer 在CBM模块间进行交换数据时,产生数据的模块称为生产者,使用数据的模块称为消费者。互操作性interoperability 两个或多个应用(或系统)交换信息或资源的能力,用来使用、转换、处理或管理被交换的资源或信息(应用可以在同一系统中或不同系统中)。3.4 接口interface 逻辑的或物理的访问点,用以传输或交换信息、物料、能量及其他制造成分。对对象行为的抽象,包括该对象和一纽约束条件的交互的子集,说明这些约束何时发生作用。3.5 控制应用contr
11、ol application 一类制造应用,直接控制制造过程的次序、调度和时序,以及对相关制造资源的使用。3.6 诊断应用diagnostic application 一类制造应用,对生产资源的持续完好性进行监控和检查,并将制约这种完好性的条件通知给其他制造应用。1 GB/T 26221-2010 3. 7 维护应用maintenance application 一类制造应用,对生产资源的重新配置、更换、取代或修理进行管理,并把此类活动通知给其他的制造应用。4 符号和缩略语联盟AIDL Abstract Interface Document Language 抽象接口描述语言API Appli
12、cation Programming Interface 应用编程接口CBM Condition-Based Maintenance 基于状态的维护CM Condition Monitoring 状态监测CORBA Common Object Request Broker Architecture 公用对象请求代理结构DA Data Acquisition 数据采集DCOM Distributed Component Object Model 分布式组件对象模型DM Data Manipulation 数据处理DS Decision Support决策支持HA Health Assessmen
13、t 健康评估IDL Interface Document Language 接口描述语言JMI J ava Metadata Interface J ava元数据接口MIDL Microsoft Interface Definition Language Microsoft 接口定义语言MIMOSA Machinery Information Management Open System Alliance 设备信息管理开放系统OSA Open System Architecture 开放系统体系结构PA Prognostics Assessment 预诊断PM Presentation Mod
14、ule 表示模块RUL Remaining Useful Life 设备未来的有效工作时间UML Unified Modeling Language 统一建模语言XML Extensible Markup Language 可扩展标记语言5 约定5. 1 层次定义约定CBM系统层次结构模型,用于反映CBM系统的功能以及数据流向,它可以用层次组成结构图表示。在层次组成结构图中,箭头表示数据流,箭头方向表示数据流方向,箭头旁边的文字为数据流的名称,中间方框内描述层次的功能。层次组成结构图描述见图1。数据流名称数据流名称2 数据流名称层次名称功能描述.功能描述。数据流名称圄1CBM系统层次组成结构图
15、数据流名称GB/T 26221-2010 5.2 数据类型定义约定本标准所定义的每一数据类型都是以相应的类表示,一个类由其属性来表明对象的特征和性质,类定义使用以下模板:描述:含义描述成员:名称成员名称说明:类型层成员数据类型层次名称(1)描述:对数据类型的具体含义进行描述。(2)成员:表示该数据类型中所具有的属性。成员列表的每一列所表示的意义如下:第一列z成员的名称;第二列z成员的具体数据类型;第三列:成员被使用的层次名称;第四列:成员具体实例化的数量;第五列:成员的特殊性质备注说明。6 CBM系统结构6. 1 概述数量数量标注数据备注说明设备的监测和维护是保证设备正常运行、提高设备工作效率
16、、延长设备使用寿命的主要手段。设备监测和维护的任务是及时地、准确地对各种异常状态或故障状态做出诊断,预防或消除故障,对设备的运行进行必要的指导,提高设备运行的可靠性、安全性和有效性,把故障损失降到最低水平。基于状态的维护(Condition-BasedMaintenance)方式是通过对设备工作状态和工作环境的实时监测,借助人工智能等先进的计算方法,诊断和预测设备未来的有效工作周期,合理安排设备未来的维修调度时间。CBM方法根据设备的实际运行状态确定设备的最佳维护时间,降低设备全寿命周期费用,提高设备的稳定性。6.2 CBM系统结构CBM系统用来监测复杂系统的运行,并为现场操作人员提供系统目前
17、健康状况的准确评估,CBM系统还能预测系统或子系统的剩余寿命。剩余寿命是从设备目前状况到期望失效点间的运行时间,失效标准要根据运行环境定义。一个完整的CBM系统通用结构应当包括从数据采集到具体维修建议等一系列功能。CBM的主要功能包括:传感和数据获取、数据处理和特征提取、产生警告、失效或故障诊断和状态评估、预诊断(预测未来健康概况和估计剩余寿命)、辅助决策(维修建议,或为特定运行环境中设备可用性的评价)、管理和控制数据流动和测试时序、对历史数据存储和存取管理、系统配置管理、人机系统界面(见图2)。3 GB/T 26221-2010 图2CBM系统通用概念视图6.3 CBM系统开发框架CBM系统
18、开发流程框图如图3所示,它们通过计算机网络技术、中间件技术松散结合在一起,构成开放式CBM系统。CBM系统使用UML语言定义了一个面向对象的系统模型,并使用抽象接口描述语言AIDL定义了界面规范。AIDL语言是文本式语言,可以转换为用户选择的中间件接口描述语言,如DCOMMIDL、Web-based/XML、CORBAIDL等。由于表示模块通常用于显示和存取底层模块的数据,而并不为其他模块提供任何信息,CBM没有定义它的数据接口,而决策支持模块针对不同的故障和设备硬件,提供不同处理机制和维护方法,其接口定义也没有规定。4 相关标准CBM功自描述表示层决策支持层预诊断层健康评估层状态监测层数据处
19、理层数据采集层CB如f数据模型适用数据流策略IDL抽象接口描述Web based/XML |叩AIDL|m|MIDL|图3CBM系统开发流程框图GB/T 26221-2010 7 CBM系统层次模型7. 1 概述模型分为7层结构,即数据采集层、数据处理层、状态监测层、健康评估层、预诊断层、决策支持层、表示层(如图4所示)。CBM系统的层次结构划分也反映了CBM系统数据流向,由传感器进行数据采集,通过各个不同功能的中间层模块处理,传送到决策支持模块,确定设备的故障原因和维护时间。基于状态的维护(CBM)系统表示模块(PresentationModule) 表示层决策支持模块(DecisionSu
20、pport Module) 决策支持层预诊断模块(PrognosticModule) 预诊断层健康评估模块(HealthAssessment Module) 健康评估层状态监测模块(ConditionMonitoring Module) 状态监测层数据处理模块(Da组ManipulationModule) 数据处理层数据采集模块(DataAcquisition Module) 数据采集层图4CBM系统框架及组成7.2 数据采集层7.2. 1 概述DA模块和底层物理设备通信,其组成结构如图5所示。DA数据DA配置DA控制矢量DA模块队历史数据数字输出提供信号状态 结合传感器协议标准(如IEEE1
21、451).可提供本地数据存储DA设置机构数据参数监测系统配置监测系统物理配置图5DA模块层组成结构图5 GB/T 26221-2010 7.2.2 输入输入主要包括历史数据、从底层设备采集的数据及相关配置参数等。7.2.3输出输出主要包括采集整理的数据、配置参数、控制命令等。7.2.4 功能用于采集现场设备上的实时数据,为其他模块提供现场的数据信息。7.3 数据处理层7.3. 1 概述DM模块组成结构如图6所示。DM数据DM配置DM控制矢量DM模块E历史数据LWIE二二二万I 从数据采集模块获取数据 对信号进行滤噪等处理 进行特征提取 可提供本地数据存储DA输入其他DM模块输入圄6DM模块组成
22、结构图7.3.2 输入DM配置设置信号处理算法参数监测系统配置监测系统物理配置输入数据有从DA模块和其他DM模块获取的数据、相关历史数据、控制命令及配置参数等。7.3.3 输出输出数据包括DM计算处理后的数据、相关配置参数、控制命令等。7.3.4 功能用于完成单/多信道数据处理任务,提供对DA模块的输出数据进行预处理功能,如特征向量抽取、软件滤波、均值计算等功能。7.4 状态监测层7.4. 1 概述CM模块组成结构如图7所示。6 G/T 26221-2010 CM数据CM配置CM控制矢量创历史数据CM模块队/肌历史数据 从DA模块和DM模块获取数据 计算监测指数 监测设备状态 存储从DM及DA
23、模块获取的历史数据CM配置设置CM算法参数监测系统配置监测系统物理配置DM输入其他CM模块输入图7CM状态监测层7.4.2 输入输入数据包括CM模块历史数据、DA及DM模块历史数据、DM模块输入数据、其他CM模块输入数据、控制命令及配置参数等。7.4.3输出输出数据包括CM模块处理后的数据、CM模块历史数据、模块相关配置参数、相关控制命令等。7.4.4 功能主要完成DA、DM模块的输出数据与系统工作限定值比较(如振动高限)功能,也可以完成简单的报警功能。7.5 健康评估层7.5. 1 概述HA模块组成结构如图8所示。HA配置性能评估HA解释HA控制矢量GB/T 26221-2010 7.5.2
24、 输入输入数据包括CM模块输入数据、其他HA模块输入数据、CM模块历史数据、HA模块历史数据、专家知识、维修记录、控制命令及相关配置参数等。7.5.3输出输出数据有性能评估结果、解释、相关配置参数及要保存的历史数据等。7.5.4 功能主要用于对监测系统、子系统、组成部件的性能衰退进行评估。如果系统的性能处于衰退期,模块则产生一些诊断记录,描述一些可能发生的故障和故障迹象。HA模块在进行系统评估时考虑了系统的历史趋势、操作状态、维护历史和系统运行负载等因素。7.6 预诊断层7.6.1 概述PA模块组成结构如图9所示。PA控制矢量PA解释预诊断PA配置加载/使用历史数据应用知识维修记录配置设置HA
25、算法参数监测系统配置监测系统物理配置PA模块从相关模块获取数据.建立预测模型根据相关记录预测.提供预测评估生成预测历史数据, 刨出历史数据阳历史数据其他PA模块输入DA!DM/CM输入HA输入PA模块组成结构图7.6.2 输入相应输入有HA模块输入数据、DA/DM/CM等模块输入数据、其他PA模块输入数据、CM/HA模块历史数据、PA模块历史数据、相关知识库、维修记录及相应配置参数等。7.6.3 输出相应输出有预诊断结果及相关解释、控制命令、相关配置参数及要保存的历史数据等。7.6.4 功能主要根据底层模块的数据信息,推断设备未来的有效工作时间RUL(RemainingUseful Life)
26、。7.7 决策支持层7.7. 1 概述DS模块组成结构如图10所示。图98 GB/T 26221-2010 警报解释相关建议将来任务资源及难点目标目前任务DS模块提出一系列维修建议.存储相关建议运行历史记录决策历史记录PA输入HA输入DS模块组成结构图7.7.2 输入相应的输人有HA模块输入数据、PA模块输入数据、运行历史记录、决策历史记录、将来任务及目标、所能提供资源及可能遇到的难题、目前任务等。7.7.3输出相应输出有相关建议及解释、产生警报、要保存的运行历史记录和决策历史记录等。7.7.4 功能主要用于提供推荐的系统维护动作和指令,其中包括维护调度、修改设备的配置操作等。决策支持模块的工
27、作需要考虑当前、历史及未来系统工作状态。7.8 表示层7.8. 1 概述PM主要作为和用户交互的接口,可以从其他各层模块提取数据。7.8.2 输入可从其他各层模块提取数据。7.8.3 输出将所提取信息以界面等形式展示给用户。7.8.4 功能主要用于CBM系统的描述,包括报警信息的显示、CBM系统用户对于系统信息的存取、人机接口的显示等。图10CBM系统通信模型8. 1 概述为了使基于状态的维护向专业化、网络化发展,将CBM系统按照功能划分为7个层次:数据采集、数据处理、状态监测、健康评估、预诊断、决策支持、系统描述。每层以编写成软件模块的形式分布在Internet上,这些模块在物理上是独立的,
28、但在逻辑上是统一的。为了将这些跨越不同平台、不同厂商、用不同编程语言实现的模块集成为一个整体以实现CBM的最终的设备维护与诊断的功能,需要制定一套通信标准以实现模块间的交互。此通信标准的体系结构可以划分为3个层次:数据交换接口、层次接口、通信协议。其中数据交换接口提供各模块的应用编程接口,奠定了模块间通信的基础;层次接口8 GB/T 26221-2010 提供了模块间通信的信息内容的描述,是模块间通信的重要条件;通信协议直接面向应用,是关于消息如何在系统中各执行者间进行交换的一种约定,是实现模块间通信的必要条件。图11描述了CBM模块间通过分布计算技术集成一个整体。图11OSA-CBM系统集成
29、8.2 数据交换接口通过A凹,各层可以调用其他层的程序或服务以实现本层的需求,构成一个大系镜。OSA-CBM各层及其API的关系如图12所示。|表示棋队山川叶L1|决策支持模块阶Cl叫时)_jJ二预诊断模块API接口|预诊断模块(Progn削C)气?健康评估模块API接口状态监测模块API接口数据处理模块API接口|数据处理模块(DataMani川tion)主L| 数据采集模块API接口|数据采集做(DataAcquisiti 图12OSA-CBM各层及其API关系10 GB/T 26221-2010 图12中箭头描述了各层间数据流的方向。通常情况下,每层模块都应该能直接从其需要的层获取所需的
30、数据,如图中右边的长箭头表示系统描述层能直接从其他任何层获得数据;但总体上数据的流动还是按照相邻的层顺序流动,如图中左边的短箭头表示各层计算后的数据可以由相邻的层使用。8.3 层次接口为了更方便灵活的使用其他层的数据,可以将层间交换的信息内容划分为3个层次接口:数据接口,配置接口和解释接口。数据接口用来描述要交换的真实的数据,配置接口描述各模块的配置信息,解释接口描述设备的具体的设置信息。这3个接口具体描述如下:8.3. 1 数据接口数据接口定义了所有与特定事件相关的数据。由于各层所实现的具体功能不同,各层的数据接口的结构以及所包含的信息的内容也不同。比如:对于数据采集层的数据接口描述了实际的
31、传感器数据,而健康评估层的数据接口则描述了健康状态的特征信息。因为数据接口表示的是各层所需要的实际的数据,这些数据是通过测量或计算得到的,并且随着时间的不同与设备的改变而改变,所以这层描述的信息内容是动态的。8.3.2 配置接口配置接口描述了某层模块的配置信息。每层模块只有一个配置接口,但各层模块的配置信息很接近。这层描述的信息是半动态的,只是随着设备改变而改变,只要设备不变了,配置信息就不变了。设备固定后配置接口所描述的信息就成为静态的。8.3.3 解释接口解释接口描述了设备本身的信息以及它的设置情况。所有层的解释接口都是相同的。因为这些信息是设备本身所固有的,不会随着其他情况的改变而改变,
32、所以这层所描述的信息是静态的。8.4 通信协议数据交换接口(见8.2)是2个模块间通信的基础,只要通信的2个模块中的一个能提供API接口,另一个能使用这个API接口,那么2个模块就可以通信。这节简述实现模块间通信时采取的具体的手段。如8.3所述,CBM定义了层间通信的3种数据:经计算的数据、配置信息和解释信息。经计算的数据是动态变化的,并且限制了数据有效的范围,这样的数据可以通过请求-请求的协议访问。配置信息和解释信息相对来说是静态的,这些数据不用通过请求-请求的协议而可以随时访问到。下面将介绍以请求-请求的协议为基础的一个客户/服务器通信模型的基本原理,首先介绍通信时所用的一些术语。8.4.
33、 1 生产者与消费者通常情况下,CBM各模块间交换数据时涉及到2个模块,产生数据的模块称为生产者,使用数据的模块称为消费者。由生产者测量或计算得到的数据以数据事件的形式传送,数据事件是OSA/CBM数据模型中定义的结构,在CBM的UML模型中用top:DataEvent类描述。消费者可以通过生产者定义的API接口来访问这些数据。生产者和消费者是模块间数据交换的两个基本的角色。一个模块既可以是消费者也可以是生产者。当作为消费者的模块为其他模块提供数据的时候它又成为了生产者。如图13所示描述了3个模块的关系:其中模块B既是模块A的生产者,也是模块C的消费者。11 G/T 26221-2010 生产
34、者模块B消费者生产者模块C图13通信中摸块的角色关系8.4.2 入口点与数据事件本节将描述通信中存在多个生产者和多个消费者时信息的表示。首先定义相关术语,见下表:名称英文定义数据事件DataEvent 描述经测量或计算得到的数据的信息数据事件集DataEventSet 多个数据事件的集合输出端口OutPort 描述数据的来源输出端口集OutPortSet 多个输出端口的集合人口点EntryPoint 一个模块为其他模块提供数据访问的接口一个数据的生产者可以有多个消费者,这些消费者通过生产者提供的多个人口点访问它的数据。一个人口点只能被一个消费者使用,而一个消费者可以同时使用多个人口点。对每个生
35、产者来说,它的一个人口点对应多个输出端口,这些输出端口构成一个输出端口集,每个输出端口产生一个数据事件,所有输出端口产生的数据事件构成一个数据事件集。通过同一个入口点访问到的所有数据是同步的(即使用同样的时钟测量得到),但由同一个输出端口产生的数据而经不同的入口点访问时却不能保证是同步的。图14是多个生产者与消费者间交换数据时各对象之间关系的一个例子。6 年;Y, 生产者x u 生产者Y圄14多个生产者和消费者通信模型的一个示例12 G/T 26221-2010 图中有4个模块:A、B、X和YO模块A和B是消费者,模块X和Y是生产者。生产者X包含3个人口点CXl, X2 , X3) ,生产者Y
36、包含一个人口点CYl)。每个人口点至少访问一个输出端口以获得数据:入口点X1访问输出端口xa、输出端口xb、输出端口xc;入口点X2访问输出端口xc;人口点X3访问输出端口xc;入口点Y1访问输出端口ya;而xd不被任何人口点访问,因此不提供给任何消费者数据。消费者A可以通过人口点X1和人口点X2访问生产者X的数据。人口点X1可以接收到来自xa、xb和xc的同步的数据,而输出端口xc的数据还可以通过入口点X2访问到,但与通过入口点X1访问到的数据不一定是同步的。消费者B从2个生产者获得数据。生产者X的输出端口xc产生的数据可以通过人口点X3访问到,但却不能通过入口点X2访问到。生产者Y的输出端
37、口ya产生的数据可以通过入口点Y1访问到。8.4.3 通信协议生产者和消费者使用一个简单的请求-请求的协议进行通信。这个协议定义了一个非阻塞的异步的信息拉取式的数据交换的方式。入口点CEntryPoint)和人口点接收器CEntry PointSink)是分别位于生产者和消费者中数据交换的接口(参考CBM的UML模型中top: lentryPoint和top:lentryPoin tSink的类的描述),这两个接口定义了在协议中生产者和消费者如何参与数据的交换。以下首先介绍这两个接口中主要的方法的功能。入口点是由生产者执行的数据交换的接口,其主要的方法如下zrequestOutPortSetO
38、:这个方法的功能是请求要被测量或计算的新数据。它有2个参数:一个参数是请求标识符,消费者每发出一个请求都要有不同的请求标识符,这样才能区分出哪个请求被完成;另一个参数是人口点接收器的指针,一旦生产者处理完数据,就要通过这个指针通知人口点接收器。这个方法的调用不应该受阻,应该立刻返回结果。getTaskStatusO:这个方法的功能是查询计算或测量的当前状态,并返回一个数字。正数表示预期的时间,负数表示不能估计当前的状态,零表示计算或测量已经完成。人口点接收器是由消费者执行的数据交换的接口,其主要的方法如下:notifyOutPortSetO :这个方法的功能是一旦生产者获得消费者所需要的数据就
39、要调用此方法以通知消费者它的数据准备完成。它有2个参数:一个是请求标识符,表示哪个请求被完成;另一个是输出端口集的指针,表示生产者经测量或计算后的数据的地址。以上这些方法在协议的实施中被调用。如下描述了通信的一个周期里方法调用的过程(见图15)。在图15中模块间通信时方法调用的正常顺序:requestOutPortSetO requestOutPortSetO 图15方法调用的顺序13 GB/T 26221-2010 a) 首先消费者调用生产者的requestOutPortSet()方法以请求数据,然后生产者开始测量或计算数据。如果生产者还需要向其他模块请求数据,则可以作为其他模块的消费者。通
40、常情况下,测量或计算数据的过程依照不同的应用会花费不同的时间。b) 在计算过程中,消费者可以通过不断地调用生产者的getTaskSta tus ()方法查询进程的状态。c) 一旦生产者完成了测量或计算,它就应该调用消费者的notifyOutPortSet( )方法以通知消费者它的数据已经准备好并且传递给消费者它测量或计算数据的地址。d) 消费者不断地使用通过notifyOutPortSet( )方法获得的新数据的地址以读取生产者产生的数据。e) 消费者通过调用生产者的requestOutPortSet()方法以开始一个新的请求。对requestOutPortSetO方法的调用意味着一个新的请求
41、-请求周期的开始,生产者内存中不再保存上一次产生的数据,而是开始保存最新产生的数据。以上描述了模块间通信时方法调用的正常顺序,以下描述了方法调用时的特殊情况。在图15中模块间调用的特殊情况:a) 在消费者还没接收到生产者对它的notifyOtPortSet()方法的调用时就又发起了一个新的requestOutPortSet( )请求。这种情况下,生产者应该立刻停止它处理数据的过程并放弃计算的中间数据而开始一个新的测量、计算数据的过程,测量或计算完数据再调用消费者的notifyOutPortSetO方法以通知消费者。b) 即使消费者的notifyOutPortSet()方法已经被生产者调用,生产者的getTaskStatus()方法仍可以被消费者在任何时间调用,这种情况下,getTaskStatus()方法返回值为0,表示测量或计算完成。c) 消费者通过notifyOutPortSet ()方法获得的数据的地址在它下一次请求时就会元效。如果消费者还使用这个地址,就会发生一些不可预料的错误。如上所述,模块间的通信协议可以看作由多个请求-请求的周期组成,每个周期的开始和结束都以一个数据请求为标志。根据notifyOutPortSet()方法被调用的时刻可以将每个周期分为2个过程。一个过程是生产者准备