• 3.30 MB
  • 2022-04-22 13:32:03 发布

GBT16720.1-2005-4工业自动化系统制造报文规范第1部分服务定义.pdf

  • 40页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'GB/T16720.1-2005/ISO9506-1:200312.10.1.1Argument此参数包含Select服务请求的参数。12.10.1.1.1ControllingProgramInvocation此参数类型为标识符,它标明要被选的程序调用。这个程序调用的&control字段的值等于con-trolling。如果此参数不出现,它表明现有的控制程序调用要被否决,而无需选择程序调用。12.10.1.1.2ListOfProgramInvocations此参数类型为标识符,它标明在被引用的控制程序调用的控制之下的一些程序调用。只有当Con-trollingProgramInvocation参数出现时,此参数才出现。12.10.1.2Result(+)Result(+)参数标明服务请求成功。成功的结果不返回服务专用参数。12.10.1.3Result(一)Result(一)参数标明服务请求失败。ErrorType参数(在第24章中详细定义)提供失败原因。12.10."2服务过程12.10.2.1先决条件MMS服务器将执行下列检查:a)如果ControllingProgramInvocation参数存在,由ControllingProgramInvocation参数标明的程序调用的&control字段等于controlling;b)如果ControllingProgramInvocation参数存在,由ControllingProgramInvocation参数标明的程序调用应该处于idle状态;c)对于ListOfProgramInvocation参数的每一个元素,核实程序调用的衣control字段等于controlled,&.controlling-Program-Invocation字段的值为null,或等于VMD的&selected-Program-Invocation字段的值;d)如果VMD的&selected-Program-Invocation字段不为null,核实该程序调用置于idle状态;e)核实由ControllingProgramInvocation参数指明的程序调用的&Controlled-Program-Invo-cations字段为null.如果上述任何一个条件不满足,返回Result(一),并跳过这个过程的剩余步骤。12.10.2.2活动12.10.2.2.1活动步骤1如果VMD的乙selected-Program-Invocation字段不为null,对该字段所引用的程序调用执行下列步骤。a)对于ControllingProgramInvocation参数所引用的程序调用的&Controlled-Program-Invo-cations字段中的每个程序调用,设置它的&control字段为normal;b)将VMD的&selected-Program-Invocation字段所引用的程序调用的&Controlled-Program-Invocations字段设置为一个空表;c)将VMD的&selected-Program-Invocation字段设置为null;d)如果ControllingProgramInvocation参数不出现,返回Result(-i-),并跳过该过程的剩余步骤。12.10.2.2.2活动步骤2a)将VMD的&selected-Program-Invocation字段设置为引用ControllingProgramInvocation参数所标明的程序调用;b)如果ListOfProgramInvocation参数为空,将ControllingProgramInvocation参数所标明的程序调用的&Controlled-Program-Invocations字段设置为一个空表;c)如果ListOfProgramInvocation不为空,对于该表中的每个元素,将这个程序调用的 GB/T16720.1-2005/ISO9506-1:2003&controlling-Program-Invocation字段设置为引用ControllingProgramInvocation参数所标明的程序调用。将这个程序调用加到ControllingProgramInvocation参数所标明的程序调用的&Controlled-Program-Invocations字段中。d)返回Result(+)a12.11AlterProgramInvocationAttributes(变更程序调用属性)服务该服务供MMS客户用来变更MMS服务器上的一个程序调用的一些属性。12.11.1结构该服务原语的结构如表52所示。表52AlterProgramInvocationAttributes服务一一川12.11.1.1Argument此参数包含AlterProgramInvocationAttributes服务请求的参数。12.11.1.1.1ControllingProgramInvocation此参数类型为标识符,用于标识要变更其属性的程序调用。12.11.1。1.2Running-Mode此参数标明该程序调用对象的&running-Mode字段的值。根据&running-Mode字段所选定的值,存在下列参数之一。12.11.1.1.2.1NoLimit当&running-Mode字段被设置为free-run时,选此参数。12.11.1.1.2.2CycleCount此参数为整型,如果&running-Mode字段的值被设置为cyclelimited,则选该参数。&remaining-Cycle-Count字段的值被设置为此参数的值。12.11.1.1.2.3StepCount此参数为整型,如果&running-Mode字段的值被设置为steplimited,则选该参数。&remaining-Step-Count字段的值被设置为此参数的值。&-running-Mode字段的step-limited值的实现在CSI中定义(见GB/T16720.2-2005第25章)。如果不支持,则不选此参数。12.11.2服务过程12.11.2.1先决条件MMS服务器将核实:a)ControllingProgramInvocation参数所标识的程序调用存在;b)程序调用的&control字段的值为controlling,如果上述任一条件不满足,返回Result(一),并跳过该过程的剩余步骤。标准下载网(www.bzxzw.com) GB/T16720.1-2005/ISO9506-1:200312.11.2.2活动MMS服务器将:a)如果在服务请求中选择了Nolimit参数,则程序调用的&running-Mode字段将被设置为free-run;b)如果在服务请求中选择了CycleCount参数,则程序调用的&running-Mode字段将被设置为cycle-limited,同时,程序调用的&remaining-Cycle-Count字段将被设置为cyclecount参数的值;c)如果在服务请求中选择了StepCount参数,则程序调用的&running-Mode字段将被设置为step-limited,同时,程序调用的&remaining-Step-Count字段将被设置为stepcount参数的值。12.12ReconfigureProgramInvocation(重新配置程序调用)服务该服务供MMS客户用来从程序调用中取消域或向程序调用中添加域。12.12.1结构该服务原语的结构如表53所示。表53ReconfigureProgramInvocation服务卜一比、川12.12.1.1Argument此参数包含ReconfigureProgramInvocation服务请求的参数。12.12.1.1.1OldProgramInvocationName(程序调用旧名)此参数类型为标识符,它是要重新配置的程序调用的名称。12.12.1.1.2NewProgramInvocationName(程序调用新名)此参数类型为标识符,是可选参数,它提供在同一操作中重新命名程序调用的可能性。如果该名称已被使用,将返回Result(一)应答。12.12.1.1.3ListOfDomaintoAdd(要添加的域表)此参数类型为标识符表,它指明要加到该程序调用对象的&Domains字段中的零个或多个域。12.12.1.1.4ListOfDomaintoRemove(要取消的域表)此参数类型为标识符表,它指明要从该程序调用对象的&Domains字段中删除的零个或多个域。12.12.1.2Result(+)Result(+)参数标明服务请求成功。成功的结果不返回服务专用参数。12.12.1.3Result(一)Result(一)参数标明服务请求失败。ErrorType参数(在第24章中详细定义)提供失败的原因。12.12.2服务过程12.12.2.1先决条件MMS服务器将验证:标准下载网(www.bzxzw.com) GBJT16720.1-2005JISO9506-1:2003a)OldProgramInvocation参数所标识的程序调用存在;b)这个程序调用处于running状态;c)如果出现NewProgramInvocation参数,不存在一个程序调用,其&name字段等于NewPro-gramInvocation参数;d)ListOfDomaintoAdd参数列出的所有域已存在;e)ListOfDomaintoRemove参数列出的所有域存在;f)ListOfDomaintoAdd参数的每个域都能够组合进这个程序调用中(每个域或者处于ready或d7状态,或者处于in-use,d4,d5或d6,且乙sharable字段为“真”状态)。如果上述任一条件不满足,返回Result(一),并跳过本过程的剩余步骤。12.12.2.2活动MMS服务器将:a)对于ListOfDomaintoAdd参数的每一个域,执行下列步骤:1)如果域的&state字段等于d4,d5或d6,等待,直到域进入in-use状态;2)如果域的邑state字段等于d7,等待,直到该域进人:eady状态;3)将域的&state值修改为in-use;4)将这个程序调用添加到该域的&ProgramInvocations字段中;5)将这个域添加到程序调用的&Domains字段中。b)对于ListOfDomaintoRemove参数的每一个域,执行下列步骤:1)从域的&ProgramInvocations字段中取消这个程序调用;2)如果&ProgramInvocations字段为空,将域的&state字段的值修改为ready;3)从该程序调用的&Domains字段中取消这个域。c)如果出现NewProgramInvocationName参数,将程序调用的&.name字段修改为该参数。d)返回Result(+)oMMS服务器应保证该服务过程是原子的(不被指定这个程序调用或它的构成元素的其他MMS服务指示打断)。13单元控制服务13.1引言和模型本章为下列对象提供对象模型:UNIT-CONTROL(单元控制)本章规定下列服务:InitiateUnitControlLoad(启动单元控制装载)UnitControlLoadSegment(单元控制装载段)UnitControlUpLoad(单元控制上载)StartUnitControl(开始单元控制)StopUnitControl(停止单元控制)CreateUnitControl(建立单元控制)AddtoUnitControl(加人单元控制)RemoveFromUnitControl(退出单元控制)GetUnitControlAttributes(获取单元控制属性)LoadUnitControlFromFile(从文件装载单元控制)StoreUnitControlToFile(向文件存人单元控制)DeleteUnitControl(删除单元控制)标准下载网(www.bzxzw.com) GB/T16720.1-2005/ISO9506-1:2003单元控制对象表达MMS对象(域和程序调用)的一个群集。这些对象可以作为一个单元来装载和管理。通过单个操作序列,就可以对一个单元控制对象所表示的域执行下载和上载。注:单元控制对象的使用可以使得下载大量的域或创建大量的程序调用所需要的PDU的数量减少到最小。有关对象如何分组的规则是本地事务,不属于本部分的范围。13.1.1单元控制对象模型UNIT-CONTROL::=CLASS{&nameIdentifier,一ShallbeuniquewithintheVMD&accessControlIdentifier,邑DomainsIdentifier,乙ProgramInvocationsIdentifier}13.1‘1.1&name本字段应唯一标识VMD内的一个单元控制对象。单元控制对象的名称范围是VMD-specific,13.1.1.2&accessControl本字段表示一个访问控制表对象,该对象支配单元控制对象是否可以用DeleteUnitControl服务删除。13.1.1.3&Domains本字段标识组成单元控制对象的域对象,对单元控制对象的操作可能会影响到这些域对象。13.1.1.4&ProgramInvocations本字段标识组成单元控制对象的程序调用对象,对单元控制对象的操作可能会影响到这些程序调用对象。13.2ControlElement(控制元素)控制元素是一个复杂参数,在一些服务中被用来描述一个单元控制对象的单个元素。13.2.1结构ControlElement参数的结构如表54所示。表54ControlElement参数口一标准下载网(www.bzxzw.com) GBJT16720.1-20051ISO9506-1:200313.2.1.1BeginDomainDefinition(开始域定义)选用本参数表明要开始定义一个新的域。如果选用,则下列参数应出现。13.2.1.1.1DomainName(域名)本参数类型为标识符,它标识待处理的域。13.2.1.1.2ListofCapabilities(能力表)本参数的类型为字符串表,它标识与域相关联的&Capabilities,13.2.1.1.3Sharable(可共享的)本参数的类型为布尔型,它标识域中的乙sharable,13.2.1.1.4LoadDate(装载数据)本参数应为域的&content字段的起始部分或全部。13.2.1.2ContinueDomainDefinition(继续域定义)选用本参数表明在前面的控制元素中所标识的域还有更多的关联数据。如果选用,则下列参数应出现。13.2.1.2.1DomainName本参数的类型为标识符,它标识待处理的域。13.2.1。2.2LoadData本参数应为域的(或部分的)&content字段。13.2.1.3EndDomainDefinition(结束域定义)选用本参数表明在前面的控制元素中所标识的域定义结束。如果选用,则下列参数应出现。13.2.1.3.1DomainName本参数的类型为标识符,它标识待处理的域。13.2.1.4ProgramInvocationDefinition(程序调用定义)选用本参数表明随后将开始定义一个程序调用。如果选用,则下列参数应出现。13.2.1.4.1ProgramInvocationName(程序调用名)本参数的类型为标识符,它标识待定义的程序调用。13.2.1.4.2ListofDomain(域表)本参数的类型为标识符表,它指明在程序调用的&Domains字段中所标识的域。13.2.1.4.3Reusable(可复用的)本参数的类型为布尔型,它标识程序调用的&reusable字段。13.2.1.4.4Monitor(监控器)本参数的类型为布尔型,它标识程序调用的&monito:字段。13.2.1.4.4.1MonitorType(监控器类型)本参数的类型为布尔型,当且仅当Monitor参数的值为“真”时才出现。本参数的用法在12.2.1.1.5中定义。13.2.1.4.5ProgramInvocationState(程序调用状态)本参数的类型为整型。如出现,它指明程序调用的&programInvocationState字段的值。当用于UnitControlLoad服务时,它表明程序调用所处的状态。当用于UnitControlUpload服务时,它表明该程序调用的实际状态。13.3InitiateUnitControlLoad(启动单元控制装载)服务MMS客户使用InitiateUnitControlLoad服务向MMS服务器请求创建一个单元控制对象,并为装载作准备。装载处理使用两个MMS确认服务,这样,MMS服务器就要请求单元控制对象的内容元素。表55给出该服务原语序列。 GB/T16720.1-2005/ISO9506-1:2003表55单元控制的交互原语一一二一13.3.1结构InitiateUnitControlLoad服务的服务原语的结构如表56所示。表56InitiateUnitControlLoad服务口节一13.3.1.1Argument(自变f)本参数传递InitiateUnitControlLoad服务请求的参数。13.3.1.1.1UnitControlName(单元控制名)本参数的类型为标识符,它指明单元控制对象的名称。13.3.1‘2Result(+)Result(-I-)参数表明服务请求成功。服务成功不返回服务专用参数。13.3.1.3Result(一)result(一)参数表明服务请求失败。ErrorType参数(在第24章中详细定义)给出失败原因。当标明服务失败时,应返回下述参数之一。13.3.1.3.1DomainName(域名)本参数指明当检测到错误时正在创建的域。本参数或ProgramInvocationName参数只能二者选一。13.3.1.3.2ProgramInvocationName(程序调用名)本参数指明当检测到错误时正在创建的程序调用。本参数或DomainName参数只能二者选一。13.3.2服务过程13.3.2.1先决条件如果指定名称的单元控制对象已经存在,MMS服务器返回Result(一)。13.3.2.2活动MMS服务器应发出一个或多个UnitControlLoadSegment请求,直至它收到的一个应答,其MoreFollows参数为“假”。它应执行为该服务规定的服务过程。在处理对UnitControlLoadSegment服务请求的响应信息时,如果检测到创建一个域或一个程序调用中的错误,MMS服务器则暂停装载处理,并返回Result(一)参数,指明错误发生时正在进行装载的域或程序调用。 GB{T16720.1-2005/ISO9506-1:2003如果在处理UnitControlLoadSegment服务时没有出错,MMS服务器应返回Result(-f-)参数。13.4UnitControlLoadSegment(单元控制装载段)服务MMS服务器使用UnitControlLoadSegment服务从MMS客户获得装载数据元素。13.4.1结构该服务原语的结构如表57所示。表57UnitControlLoadSegment服务卜节一州13.4.1。1Argument本参数传递UnitControlLoadSegment服务请求的参数。13.4.1.1.1UnitControlName(单元控制名)本参数的类型为标识符,它标识VMD中要装载的单元控制对象的名称。13.4.1.2Result(+)Result(-I-)参数表明服务请求成功。服务成功应返回下列参数。13.4.1.2.1ListOfControlElements(控制元素表)本参数应包含构建这个单元控制对象的域和程序调用所需的信息。每个控制元素的ProgramIn-vocationState是否出现是用户可选的。13.4.1.2.2MoreFollows(未完待续)本参数为布尔类型,它指明为完成单元控制对象的创建,是否还需要更多的UnitControlLoadSeg-ment服务请求。13.4.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章中详细定义)给出失败原因。13.4.2服务过程MMS服务器应发出UnitControlLoadSegment请求,指定待装载的单元控制对象的名称。在收到响应后,MMS服务器执行下述活动。13.4.2.1先决条件对ListOfControlElements中的每个条目,MMS服务器要执行以下活动:a)如果控制元素指明是开始域定义,则MMS服务器应验证VMD中没有同名的域存在;b)如果控制元素指明是继续域定义,则MMS服务器应验证该域存在,并且正处于loading状态;c)如果控制元素指明是结束域定义,则MMS服务器应验证该域存在,并且正处于loading状态;d)如果控制元素指明是程序调用定义,则MMS服务器应验证该程序调用的&Domain字段中的所有域均存在,并都处于:eady状态,或者处于in-use状态,同时,它的&Sharable字段为“真”。13.4.2.2活动对ListOfControlElements中的每个条目,MMS服务器应执行以下活动:a)如果控制元素指明是开始域定义,则MMS服务器应利用所提供的ListofCapabilities参数创 GB/T16720.1-2005八SO9506-1:2003建域,并把它置于loading状态。如果提供了LoadData参数,则利用装载数据开始装载处理。b)如果控制元素指明是继续域定义,则MMS服务器应利用所提供的LoadData参数继续进行装载处理。c)如果控制元素指明是结束域定义,则MMS服务器将域置于ready状态。d)如果控制元素指明是程序调用定义,则MMS服务器应创建有名程序调用,并将它与指定的域相链接。同时,应将每个域都置于in-use状态。如果ProgramInvocationState参数存在,MMS服务器应将程序调用置于该参数所标明的状态,否则,应将程序调用置于idle状态。注:如果在UnitControll,oadSegment服务序列进程中关联丢失,使得域处于中间状态,则采用11.1.4.1款的规定。另请注意GB/T16720.2-2005中8.2对Conclude服务所加的限制。13.5UnitControlUpLoad(单元控制上载)服务MMS客户使用UnitControlUpLoad服务从MMS服务器获得装载数据元素。要获得单元控制对象的完整上载,可能需要多次调用本服务。13.5.1结构该服务原语的结构如表58所示。表58UnitControlUpLoad服务卜州13.5.1.1Argument本参数传递UnitControlUpLoad服务请求的参数。13.5.1.1.1UnitControlName本参数的类型为标识符,它标识VMD中待上载的单元控制对象的名称。13.5.1.1.2ContinueAfter(后续起始位置)本参数为可选参数,用于指明下一个控制元素是从单元控制对象的成员表的什么位置开始。如果本参数未出现,则上载应从单元控制对象的起始位置开始。如果出现本参数,则应选用下述参数之一。13.5.1.1.2.1DomainName(域名)本参数的类型为标识符,它标识待上载的下一个域。13.5.1。1.2.2UpLoadID(上载ID)本参数的类型为整型,它标识当前打开的可用于继续域上载的上载状态机。13.5.1.1.2.3ProgramInvocation(程序调用)本参数的类型为标识符,它标识正待上载的下一个程序调用的定义。 GBJT16720.1-20051ISO9506-1:200313.5.1.2Result(+)Result(-)参数表明服务请求成功。服务成功应返回下列参数。13.5.1.2.1ListofControlElement(控制元素表)本参数应包含构建这个单元控制对象的组成域和程序调用所需的信息。在控制元素内,每个程序调用定义中应包含ProgramInvocationState参数,该参数的值应设置为该程序调用的&.programInvocationState字段的值。13.5.1.2.2NextElement(下一元素)本参数为可选参数。如果出现,则标明控制元素表中的第一个元素不传输,在收到另一个Unit-ControlUpLoad服务请求时要传输的是下一个元素。如果本参数不存在,则指明收到这个服务应答后单元控制对象的上载已完成。如果本参数存在,应选下述参数之一。13.5.1.2.2.1DomainName(域名)本参数的类型为标识符,它标识待上载的下一个域。13.5.1.2.2.2UpLoadID(上载ID)本参数的类型为整型,它标识当前打开的可用于继续域上载的上载状态机。13.5.1.2.2.3ProgramInvocation(程序调用)本参数的类型为标识符,它标识正待上载的下一个程序调用的定义。13.5.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。13.5.2服务过程为了响应UnitControlUpLoad服务请求,MMS服务器应维护单元控制对象的一个有序的成员表。本部分建议但不一定要求域名的排列顺序采用基于如5.4.2所描述的排序,其后是类似排列顺序的程序调用。本部分只要求所采用的排序算法是明确清晰的,而且,任一程序调用应排在其所依赖的域之后。MMS客户可以发出UnitControlUpLoad服务请求,通过标识出下一个待上载的域来指定这一排列顺序中的一个位置,并指定已完成部分上载的域,或者下一个待上载的程序调用定义。如MMS客户没有指定这样的元素,则上载从表的起始位置开始。MMS服务器应验证单元控制对象的&.Domains字段和&Programlnvocations字段的一致性。如果这些字段所引用的任何对象不存在,则MMS服务器应对相应表进行修正。MMS服务器应按照它采用的排序算法所确定的顺序,提供单元控制对象的每个构成元素的定义。对于单元控制对象的&.Domains字段中的每一个域,MMS服务器应创建一个上载状态机(见11.1.4.2),并传输域的全部或部分内容。分段的必要性及段的尺寸的确定是本地事务。对单元控制对象的&ProgramInvocations字段中的每一个程序调用,MMS服务器都应传输一条程序调用记录。如果因某种原因,单元控制对象的全部内容不能包含在一个服务响应中,MMS服务器应提供一个标识,指明序列中尚未传输的下一个元素。a)如果下一个待传输的元素是域,则MMS服务器应标明该域的名称;b)如果域的内容已部分传输,而且剩余内容也需传输,则MMS服务器应标明当前处于活动状态的上载状态机;c)如果下一个待传输的元素是程序调用,则MMS服务器应标明该程序调用的名称;如果当前传输已经传送完整个单元控制对象,也就是说,在传输表中的最后一个元素,则MMS服务器应省略NextElement参数。13.6StartUnitControl(开始单元控制)服务MMS客户利用StartUnitControl服务来请求MMS服务器把单元控制对象的所有程序调用成员置于running状态。 GB/T16720.1-2005八SO9506-1:200313.6.1结构该服务原语的结构如表59所示。表59StartUnitControl服务}妻,名一ReaIInd{Rso{Cnf一CBB}.Argument}tvl}lvlt一)I}1..unitcontrolName}w1}lvlt=)1}{..r,xecutlonArgument}u{ul=夕.}1..rcesurtl」一l}}{口IJ1=1}..lcesuak一)!I.0I0、一l1I.r,rror1voellIlvlllvl、一JI.IMartunitcontrolr,rror}}I4}%-=l}IIrrograrninvocation1Vame}{Ilvl}toil=J}.IrrograminvocationJiate}}}1v1}ivl“尹}I13.6.1.1Argument本参数传递StartUnitControl服务请求的参数。13.6.1.1.1UnitControlName本参数的类型为标识符,它标识一个单元控制对象其程序调用成员将被开始。13.6.1.1.2ExecutionArgument本参数可用于把信息传递给待开始的程序调用。13.6.1,2Result(+)Result(+)参数表明服务请求成功。服务成功不返回服务专用参数。13.6.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。当服务被指明为失败时,应返回下述参数。13.6.1.3.1StartUnitControlError(开始单元控制错误)如果服务失败是因某一程序调用所导出的Start过程的失败所致,则在Result(一)中应包含本参数。如果包含本参数,则下列字段也应出现。13.6.1.3.1.1ProgramInvocationName(程序调用名)本参数指明Start过程失败的程序调用的名称。13.6.1.3.1.2ProgramInvocationState(程序调用状态)本参数标明Start过程失败的程序调用的最终状态。当Start服务不成功时,程序调用应尽可能返回其先前的状态,否则,它被置于为unrunnable状态。13.6.2服务过程MMS服务器应执行下列活动:a)对单元控制对象的&.Programlnvocations字段中的每一项,要确认程序调用存在。如果程序调用不存在,从&.Programlnvocations字段中取消对它的引用。b)对单元控制对象的&ProgramInvocations字段中的每一项,将程序调用置于running状态,步骤如下:1)如果程序调用已经处于running,Starting或resuming状态,则不作任何操作;2)如果程序调用处于idle或resetting状态,则执行Start服务过程(见12.4);3)如果程序调用处于stopping或stopred状态,执行Resume过程(见12.6);4)如果程序调用处于unrunning状态,则返回Result(一)参数,其中包含StartUnitControl GB/T16720.1-2005/ISO9506-1:2003Error参数,指明失败的程序调用及其状态;5)如果对一个程序调用成员的任何Start过程失败,则返回Result(一)参数,其中包含StartUnitControlErro:参数,指明失败的程序调用及其状态。c)返回Result(+)参数。13.7StopUnitControl(停止单元控制)服务MMS客户利用StopUnitControl服务请求MMS服务器把单元控制对象的所有程序调用成员都转为Stopped状态。13.7.,结构该服务原语的结构如表60所示。表60StopUnitControl服务}参数名R盯’.IndRspCnfCBBIArgumentMM(二)1UnitControlNameMM(=)1Result(+)SS(二)1Result(一)SS(=)IErrorTypeMM(二)IStopUnitControlErrorCC(=):1ProgramInvocationNameMM(=)鲁lProgramInvocation.State.M丫(万2鲁13.7.1.1Argument13.7.1.1.1UnitControlName本参数的类型为标识符,它标识其程序调用成员将被停止的单元控制对象。13.7.1.2Result(+)Result(+)参数表明服务请求成功。服务成功不返回任何服务专用参数。13.7.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。当服务被指明为失败时,应返回下述参数。13.7.1.3.1StopUnitControlElement(停止单元控制错误)如果服务失败是因某一程序调用所导出的Stop过程的失败所致,则在Result(一)中应包含本参数。如果包含本参数,则下列字段也应出现。13.7.1.3.1.1ProgramInvocationName(程序调用名)本参数指明Stop过程失败的程序调用的名称。13.7.1.3.1.2ProgramInvocationState(程序调用状态)本参数标明Stop过程失败的程序调用的最终状态。当Stop服务不成功时,程序调用应尽可能返回其先前的状态,否则它被置于Unrunning状态。13.7.2服务过程MMS服务器应执行下列活动:a)对单元控制对象的乙ProgramInvocations字段中的每一元素,要确认程序调用存在。如果该条件不满足,应从&ProgramInvocations字段中取消对该程序调用的引用。b)对单元控制对象的&ProgramInvocations字段中的每一_Tr}素,将每一个处于running状态的程序调用置于Stopped状态,步骤如下:1)如果程序调用已经处于stopped,stopping,idle,resetting或unrunnable状态,不作任何操作; GB/T16720.1-2005/ISO9506-1:20032)如果程序调用处于running或starting状态,执行Stop过程(见12.4);3)如果对一个程序调用成员的任何Stop过程失败,返回Result(一)参数,其中包含StopU-nitControlError参数,指明失败的程序调用及其状态。c)返回Result(+)参数。13.8CreateUnitControl(建立单元控制)服务MMS客户利用CreateUnitControl服务请求MMS服务器创建一个带有一批指定域和/或程序调用的新的单元控制对象。13.8.1结构该服务原语的结构如表61所示。表61CreateUnitControl服务一户一门13.8.1。1Argument本参数传递CreateUnitControl服务请求的参数。13.8.1.1.1UnitControlName本参数的类型为标识符,它是要赋予新创建的单元控制对象的名称。13.8.1。1.2ListOfDomain本参数类型为标识符列表,它指定被单元控制对象的&Domains字段所引用的零个或多个域。13.8.1.1.3ListOfProgramInvocation本参数类型为标识符表,它指定被单元控制对象的乙ProgramInvocations字段所引用的零个或多个程序调用。13.8.1.2Result(+)Result(+)参数表明服务请求成功。服务成功不返回任何服务专用参数。13.8.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。13.8.2服务过程MMS服务器应执行下列活动:a)创建一个单元控制对象,其名称为UnitControlName参数的值;b)对ListOfDomain参数中的每个元素(如有的话),在单元控制对象的&Domains字段中加人对这个域的引用;c)对ListOfProgramInvocation参数中的每个元素(如有的话),在单元控制对象的&ProgramInvocations字段中加人对这个程序调用的引用;d)返回Result(+)参数。 GB/T16720.1-20051ISO9506-1:200313.9AddToUnitControl(加入单元控制)服务MMS客户利用AddToUnitControl服务请求MMS服务器把域和/或程序调用加人到单元控制对象中。13.9.1结构该服务原语的结构如表62所示。表62AddToUnitControl服务13.9.1。1Argument本参数传递AddToUnitControl服务请求的参数。13.9.1.1.1UnitControlName本参数的类型为标识符,它标识VMD中的一个单元控制对象,该单元控制对象的成员表将被修改。13.9.1.1.2ListOfDomain本参数类型为标识符表,它指定要加人到单元控制对象的&Domains字段中的零个或多个域。13.9.1.1.3ListOfProgramInvocation本参数类型为标识符表,它指定要加人到单元控制对象的衣ProgramInvocations字段中的零个或多个程序调用。13.9.1.2Result(+)Result(十)参数表明服务请求成功。服务成功不返回任何服务专用参数。13.9.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章中详细定义)给出失败原因。13.9.2服务过程MMS服务器应执行下列活动:a)对ListOfDomain参数中的每个元素(如有的话),在单元控制对象的&Domains字段中加入对该域的引用;b)对ListOfProgramInvocation参数中的每个元素(如有的话),在单元控制对象的&.ProgramInvocations字段中加人对该程序调用的引用;c)返回Result(-)参数。13.10RemoveFromUnitControl(退出单元控制)服务MMS客户利用RemoveFromUnitControl服务请求MMS服务器从单元控制对象中取消Domain字段和/或程序调用。13.10.1结构该服务原语的结构如表63所示。 GB/T16720.1-2005/ISO9506-1:2003表63RemoveFromUnitControl服务口一曰川13.10.1.1Argument本参数传递RemoveFromUnitControl服务请求的参数。13.10.1.1.1UnitControlName本参数的类型为标识符,它标识其成员表将被修改的单元控制对象。13.10.1.1。2ListOfDomains本参数类型为标识符表,它指定要从单元控制对象的&Domains字段中取消的零个或多个域。13.10.1,1.3ListOfProgramInvocations本参数类型为标识符表,它指定要从单元控制对象的&ProgramInvocations字段中取消的零个或多个程序调用。13.10.1.2Result(+)Result(+)参数表明服务请求成功。服务成功不返回任何服务专用参数。13.10.1。3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。13.10.2服务过程MMS服务器应执行下列活动:a)对ListOfDomains参数中的每个元素(如有的话),从单元控制对象的&Domains字段中取消对该域的引用;b)对ListOfProgramInvocations参数中的每个元素(如有的话),从单元控制对象的&ProgramInvocations字段中取消对该程序调用的引用;c)返回Result(-)参数。13.11GetUnitControlAttributes(获取单元控制属性)服务MMS客户利用GetUnitControlAttributes服务请求MMS服务器提供单元控制对象的域成员表和程序调用成员表。13.11.1结构该表服务原语的结构如表64所示。表64GetUnitControlAttributes服务}参数名ReqIndRspCnfCBBIArgumentMM(二)1UnitControlNameMM(=)1Result(+)SS(二)1ListofDomainsMM(二)IListofProgramInvocationsMM(=)1Result(一)SS(=)IErrorType.叭.川二热厄烹.)⋯⋯ GB/T16720.1-2005JISO9506-1:200313.11.1.1Argument本参数传递GetUnitControlAttributes服务请求的参数。13.11.1.1.1UnitControlName本参数的类型为标识符,它标识要获得其属性的单元控制对象。13.11.1.2Result(+)Result(+)参数表明服务请求成功。服务成功时应返回下列参数。13.11。1.2.1ListOfDomains本参数类型为标识符表,它指定被单元控制对象的aDomains字段所引用的域的名称。13.11.1.2.2ListOfProgramInvocations本参数类型为标识符表,它指定被单元控制对象的&.ProgramInvocations字段所引用的程序调用的名称。13.11.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。13.11.2服务过程MMS服务器应执行下列活动:a)对单元控制对象的长ProgramInvocations字段中的每一项,要验证该程序调用存在。如该程序调用不存在,从单元控制对象的邑ProgramInvocations字段中取消对该程序调用的引用。b)对单元控制对象的&Domains字段中的每一项,要验证该域存在。如域不存在,从单元控制对象的乙Domains字段中取消对它的引用。c)返回Result(+)参数,以及ListOfDomains参数和ListOfProgramInvocations参数中,即单元控制对象的乙Domains字段和&ProgramInvocations字段中指定的内容。注:根据本部分中所给出的单元控制对象模型,单元控制对象的成员表有可能会变得与实际的域和程序调用集合不一致,例如,在显式删除一个域之后。本条中规定的服务过程的目的就是为了在服务完成之前重新建立单元控制对象的一致性。在实际实施中,可以通过对每个域和程序调用的反向引用集合来维护一致性。不过,这并不是必须的。另一种替换的实施技术是在单元控制对象内通过名称来实现引用,并只有在必要时才重新建立一致性。13.12LoadUnitControlFromFile(从文件装入单元控制)服务MMS客户利用LoadUnitControlFromFile服务请求MMS服务器创建一个单元控制对象,并使用本地可用的或第三方获得的信息来装载该单元控制对象。13.12.1结构该服务原语的结构如表“所示。表65LoadUnitControlFromFile服务}’参数名’诫q’Ind’Rsp’C盆.CBBJ!AreumentMM(=)IUnitControlNameMM(=)IFileNameMM(二)IThirdPartyUU(“)tpyIResult(+)SS(二)IResult(一)SS(二)IErrorTvueMM(=)}InitiateUnitControlErrorMM(=)IDomainNameSS(=)}ProgramInvocationNameSS(一) GB/T16720.1-2005/ISO9506-1:200313.12.1.1Argument本参数传递LoadUnitControlFromFile服务请求的参数。13.12.1。1.1UnitControlName本参数的类型为标识符,它指定待装载的单元控制对象的名称。13.12.1.1.2FileName(文件名)本参数类型为FileName,它指定包含待载入信息的文件的名称。12.12.1.1.3Thirdparty(第三方)本参数类型为ApplicationReference,它指定对应用过程(ApplicationProcess)的应用引用,通过这个应用引用可以访问指定名称的文件。具体实施时可选择是否支持对本参数的处理,如果声明支持tpy参数一致性构造块,则必须实现这一处理。如果实现了对本参数的处理,是否使用则由用户选择。当不出现本参数时,MMS服务器将尝试直接访问服务所请求的文件。13.12.1。2Result(+)Result(-f-)参数表明服务请求成功。服务成功不返回任何服务专用参数。13.12.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。当服务被标识为失败时,应返回下述参数。13.12.1.3.1DomainName(域名)本参数指明当检测到错误时正在被创建的域。可以出现本参数或ProgramInvocationName参数,但二者不能同时出现。13.12.1.3.2ProgramInvocationName(程序调用名)本参数指明当检测到错误时正在被创建的程序调用。可以出现本参数或DomainName参数,但二者不能同时出现。13.12.2服务过程13.12.2.1先决条件MMS服务器应验证指定名称的单元控制对象不存在。13.12.2.2活动当指定了第三方时,如果与该应用的关联不存在,则先建立关联。然后,通过适当的活动使得指定名称的单元控制对象被装载。如果未指定第三方,则执行必须的步骤通过本地方法获得文件,并将它装载到指定的单元控制对象中。如果装载成功,返回Result(+)参数;否则,返回Result一)参数,并在InitiateUnitControlError参数中指明失败的原因。13.13StoreUnitControlToFile(向文件存入单元控制)服务MMS客户利用StoreUnitControlToFile服务请求MMS服务器把单元控制对象的域或程序调用存储到第三方处或本地文件中。13.13.1结构该服务原语的结构如表“所示。表66StoreUnitControlToFile服务户一士一 GB/T16720.1-2005/ISO9506-1:200313.13.1.1Argument本参数传递StoreUnitControlToFile服务请求的参数。13.13.1.1.1UnitControlName本参数的类型为标识符,它指定其内容待存储的单元控制对象的名称。13.13.1.1.2FileName本参数类型为FileName,它指定将存人信息的文件的名称。13.13.1,1.3ThirdParty本可选参数类型为ApplicationReference,它指定对应用过程的应用引用,在该应用过程上驻留有文件库,用于接收单元控制对象的内容。具体实施时可选择是否支持对本参数的处理,如果声明支持tpy参数一致性构造块,则必须实现这一处理。如果实现了对本参数的处理,是否使用则由用户选择。如果未出现本参数,存储文件的方法则属于本地事务。13.13.1.2Result(+)Result(+)参数表明服务请求成功。服务成功不返回服务专用参数。13.13.1.3Result(一)Result一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。13.13.2服务过程13.13.2.1先决条件MMS服务器应验证指定名称的单元控制对象存在。如果该条件不满足,MMS服务器应返回Re-sult(一)参数。13.13.2.2活动当提供了ThirdParty参数时,如果与该应用的关联不存在,则MMS服务器应先建立这个关联。然后,采取适当的活动,使得指定名称的单元控制对象被存储到第三方处。若未指定第三方,MMS服务器则执行必要的步骤,将单元控制对象存储到用本地方式指定的文件中。如果处理成功,返回Result(+)参数;否则返回Result(一)参数。13.14DeleteUnitControl删除单元控制)服务MMS客户利用DeleteUnitControl服务请求MMS服务器删除单元控制对象及其所有构成元素。13.14.1结构该服务原语的结构如表67所示。表67DeleteUnitControl服务}参数名ReqIndRspCnfCBBArgumentMM(=)UnitControlNameMM(=)鲁Result(+)SS(=)Result(一)SS(二)二ErrorTypeMM(=)重Domain?NameSS(=)ProgramInvocationNameSS(=)13.14.1.1Argument本参数传递DeleteUnitControl服务请求的参数。13.14.1.1.1UnitControlName本参数的类型为标识符,它标识连同其构成元素一起将被删除的单元控制对象。 GB/T16720.1-2005/ISO9506-1:200313.14.1.2Result(+)Result(+)参数表明服务请求成功。服务成功不返回服务专用参数。13.14.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。当服务被指明为失败时,应返回下述参数。13.14.1.3.1DomainName本参数指明当检测到错误时正要被删除的域。本参数或者ProgramInvocationName参数只能二者选一。13.14.1.3.2ProgramInvocationName本参数指明当检测到错误时正要被删除的程序调用。本参数或DomainName参数只能二者选一。13.14.2服务过程MMS服务器应执行下列活动:a)对单元控制对象的&ProgramInvocations字段中的每一项,执行下列活动:1)验证该程序调用存在,如果不存在,从单元控制对象的&ProgramInvocations字段中取消对它的引用,并跳过针对该项的剩余步骤;2)验证该程序调用不处于running状态,如果本条件不满足,返回Result(一)参数,并跳过本过程的剩余步骤;3)按12.3中的说明,执行DeleteProgramInvocation服务过程,并从单元控制对象的乙ProgramInvocations字段中取消对该程序调用的引用;如果本步骤失败,返回Result(一)参数,并跳过本过程的剩余步骤。b)对单元控制对象的&Domains字段中的每一项,执行下列活动:1)验证域存在,如果不存在,从单元控制对象的乙ProgramInvocationsyu字段中取消对它的引用,并跳过针对该项的剩余步骤;2)验证域不处于in-use状态,如果本条件不满足,返回Result一)参数,并跳过本过程的剩余步骤;3)按11.12的说明,执行DeleteDomain服务过程,并将对该域的引用从单元控制对象的aDomains字段中取消;如果本过程失败,返回Result(一)参数,并跳过本过程的剩余步骤。c)从VMD中删除该单元控制对象。d)返回Result(+)参数。如果过程返回Result(一)参数,单元控制对象的一些域和程序调用有可能已经被删除。在这种情况下,DeleteUnitControlError参数将指明该过程停在哪个域或程序调用上,同时单元控制对象的当前内容应指明仍保留在该单元控制对象中的域和程序调用。注:根据本部分中所给出的单元控制对象模型,单元控制对象的成员表有可能会变得与实际的域和程序调用集合不一致,例如,在显式删除一个域之后。本条中规定的服务过程的目的就是为了在服务完成之前重新建立单元控制对象的一致性。在实际实现中,可以通过对每个域和程序调用的反向引用集合来维护所有时间内的一致性。不过,这并不是必须的。另一种替换的实现技术是在单元控制对象内通过名称来实现引用,并只有在必要求时才重新建立一致性。14变f访问服务本章为下列对象提供对象模型:UNNAMED-VARIABLE(无名变量)NAMED-VARIABLE(有名变量)NAMED-VARIABLE-LIST(有名变量表)NAMED-TYPE(有名类型) GB/T16720.1-2005/ISO9506-1:2003本章规定下列服务:Read(读)Write(写)InformationReport(信息报告)GetVariableAccessAttributes(获取变量访问属性)DefineNamedVariable(定义有名变量)DeleteVariableAccess(删除变量访问)DefineNamedVariableList(定义有名变量表)GetNamedVariableI_istAttributes(获取有名变量表属性)DeleteNamedVarlableI-ist(删除有名变量表)DefineNamedType(定义有名类型)GetNamedTypeAttributes(获取有名类型属性)DeleteNamedType(删除有名类型)变量访问服务提供一些工具,使得MMS客户可以访问VMD上定义的类型化的变量。这些工具由VMD模型中的4种对象,以及对这些对象进行操作的12种服务来提供。14.1描述用于变量访问的MMS模型,接着,14.2描述MMS类型,14.3描述MMS可定义的替代访问,在14.4中描述MMS数据值,在14.5中描述规定变量访问的参数。变量访问服务在14.6^-14.17中描述,最后,14.18描述适用于本章的静态一致性要求。说明:本章描述“虚”对象(即所谓MMS变量)与“实”对象(所谓“实”变量)之间的映射。MMS变量不是通常意义上的变量,而是对底层实对象的访问路径的表达。MMS变量没有真正的“值”属性,但通过V-Put和V-Get函数提供了对底层实变量值的访问方法。这些实对象可以是真正的系统变量,也可以是系统常量,即配置参数,或者它们可表达产生变量或其他对象的系统过程。实变量可以具有地址,并且,可以被描述为连续的或是不连续的。这些概念不适用于MMS变量。在本条的上下文中,“实”一词意味着“有实体存在”,而不是“浮点数”。14.1MMS变f访问模型“变量”是VMD的一个抽象元素,它能够提供(当读时)、或接收(当写时),或既提供又接收一个类型化的数据值。“类型描述”是数据类的抽象描述,这些数据可以通过变量值来传递。变量类型的描述确定了变量的抽象语法、可能的取值范围,以及在使用MMS进行通信时,对变量的表达。MMS变量访问服务的关键是对驻留在VMD中变量(或部分变量)值的读和写。以下各条将通过描述变量访问对象,以及描述用于建立、操作或删除对象的服务来说明MMS变量访问模型。利用MMS变量访问服务,MMS服务器允许访问它的一个或多个实变量,为此,它应提供被访问的实变量与一个或多个MMS变量访问对象之间的映射。注:在阅读本条剩余内容之前,先参阅14.19“实施者指南”可能有所帮助。14.1.1描述变f的对象MMS定义了两个对象,用于描述MMS变量和VMD中实变量之间的映射。这两个对象是无名变量对象和有名变量对象。这些对象是为两个不同的抽象层而提供的。无名变量对象表示的抽象非常接近于真实系统的物理结构,它模仿VMD寻址功能中与设备有关的方面。无名变量对象提供以地址表示的内部类型描述与对该类型描述的MMS表达之间的映射。无名变量对象的存在与VMD的存在相对应。无名变量对象仅当支持vadr参数一致性构造块时才可用。有名变量对象表示的抽象模仿VMD实变量的应用视图。有名变量对象的存在可以被指定为与一个域的生存期相对应,或者与一个应用关联或VMD的生存期相对应。有名变量对象仅当支持vnam参数一致性构造块时才可用。尽管有名变量对象和无名变量对象都可用来模仿VMD中的实变量,但在二者之间,以及它们为 GB/T16720.1-2005八SO9506-1:2003MMS客户所提供的工具之间存在着明显的区别:a)有名变量对象通过一个确定了名称的应用过程来描述对实变量的访问;而无名变量对象通过设备专用地址来描述对实变量的访问。b)有名变量对象可以用于描述其地址不可知的变量(运算变量)或其地址不公开的变量;而无名变量对象则要求变量有可知的、固定的地址。c)有名变量对象可以用于描述用单一名称、单一操作来访问的一个或多个应用相关数据元素的集合(见14.1.1.1),或描述一个或多个无名变量对象的集合的更明确的类型说明,或二者都描述;而与此相反,无名变量对象只能模仿VMD寻址功能中内部的、与实现相关的访问。本部分提供一些服务,允许MMS客户可以按照无名变量对象来定义有名变量对象。这些服务主要用来为不能直接支持vnam-only环境的设备弥合两个环境之间的差距,而不管差距是由于设备陈旧、设备过于简陋或者二者兼具而引起。14.1.1.1访问MMS变盆的要求从有名变量对象或无名变量对象到实变量的映射将决定访问(利用该对象访问实变量)是成功还是失败,部分成功将不报告。注:当写失败(例如因实际系统的硬件故障)时,写操作的部分结果对随后的远程或本地访问可以是可见的。此外,如有可能,VMD应保证对一个MMS变量的访问是不可中断的。换言之,读访问应返回一个值,该值表示VMD状态的单个逻辑瞬间值,而写访问则应修改在单个逻辑瞬间的VMD状态。由于这样的保证未必是可能的,或者,仅对部分变量可能,而对所有变量不可能。因此,对MMS服务器的静态一致性说明必须包括是否支持不中断访问,如支持,则应说明在什么约束下才能保证。14.1.1.2MMS变f与实系统之间的关系实变量与用来访问它的MMS对象之间的关系通过一对抽象函数来规定,这些函数说明如下。14.1.1.2.1V-Get函数V-Get函数从VMD状态获取MMS变量的值(此处,状态包括将MMS变量映射到实系统的VMD操作所涉及的所有方面)。V-Get函数的参数是VMD状态、变量访问方法(如果访问方法是Public,则还应包括其地址)、变量的类型说明和可用于该访问的替代访问。在访问控制表对象中对服务类=READ所规定的条件不成立则要求对MMS变量的访问也失败。如果访问成功,返回结果是一个值,该值包含被访问的实变量的数据元素,它的抽象类型描述由类型说明(14.2)和替代访问(14.3)规定。如果访问失败,返回结果为失败的原因(见14.4中的数据访问错误)。14.1.1.2.2V-Put函数V-Put函数用MMS变量的值更新VMD状态(此处,状态包括将MMS变量映射到实系统的VMD操作所涉及的所有方面)。V-Put函数的参数是变量的值、访问方法、类型说明和替代访问(如可用的话)。如果访问成功,MMS变量的类型说明和替代访问(如可用的话)将用于MMS值,以计算出该变量的实际值,并用该结果更新VMD状态。如果更新失败,VMD的结果状态将不指定,并且访问将失败,给出失败的原因。在访问控制表对象中对服务类=WRITE所规定的条件不成立则要求对MMS变量的访问也失败。14.1.1.3变f访问特权的执行对MMS变量的保护要求(如有的话)继承自底层实变量。这些要求由MMS服务器根据本地准则建立,本部分不作规定。这些保护要求与访问控制表对象中对服务类=READ或服务类=WRITE的显式保护要求相结合。数据访问错误的OBJECT-ACCESS-DENIED值用于表示因权限不够而导致变量访问请求被拒绝。14.1.2无名变且对象无名变量对象描述一个未命名的MMS变量与存在于VMD内已知的固定地址中的实变量之间的 GB/T16720.1-2005/ISO9506-1:2003映射。该映射应满足14.1.1.1中的要求。无名变量对象决不能创建,也不能删除。它的存在是VMD结构中所固有的。当支持vadr时,每个公共地址(远程可见的)的内容都被建模成一个无名变量对象。例:通用的、字节寻址设备可以给每个公共地址赋予类型octet,而具有较小地址号的专用设备则可根据特定地址中内容的已知用途,赋予一个特定类型。无名变量对象的属性规定如下,其后是操作该对象的服务的简要描述。UNNAMED-VARIABLE::=CLASS{乙addressAddress,&accessControlIdentifier,&typeDescriptionTypeDescription,乙valueData,乙accessMethodENUMERATED{public}一Thefield衣accessMethodshallhaveavalueequaltopublic.}14.1.2.1&address(地址)&address字段应提供实变量在支持VMD的系统内的位置。Address::=CHOICE{numericAddress[0]IMPLICITUnsigned32,symbolicAddress仁1]MMSString,unconstrainedAddress仁2]IMPLICITOCTETSTRING}14.1.2.2&accessControl(访问控制)&accessControl字段给定一个访问控制表对象,该对象提供读或写该无名变量的条件。14.1.2.3&typeDescription(类型描述)无名变量的&typeDescription字段指明选择TypeDescription类型中的一个选项。TypeDescrip-tion类型在14.2.2节说明。14.1.2.4&value(值)无名变量的&value字段指明与该变量相关联的值。在使用时,Data类型的选择应与&.typeDescription字段所选的类型相同。14.1.2.5&accessMethod(访问方法)无名变量的&.accessMethod字段应指定是public访问。14.1.2.6对无名变f对象的操作操作无名变量的服务如下所示:a)read(读)—该服务使用V-Get函数获取由无名变量对象描述的实变量的当前&value字段;b)write(写)—该服务使用V-Put函数去更新由无名变量对象描述的实变量的当前&value字段;c)InformationReport(信息报告)—该服务使用V-Get函数获取由无名变量对象描述的实变量的当前&value字段;d)GetVariableAccessAttibutes(获取变量访问属性)—该服务返回无名变量对象的属性。14.1.3有名变f对象有名变量对象描述MMs变量与VMD内由应用定义的实变量之间的映射。该映射应满足14.1.1.1中的要求。 GB/T16720.1-2005八SO9506-1:2003注:建议:一个实变量到一个有名变量对象有且.仅有一个映射,但是本部分并无此要求。有名变量对象的属性规定如下,其后是操作该对象的服务的简要描述。NAMED-VARIABLE::=CLASS(衣nameObjectName,-shallbeuniquewithinitsrangeofspecification(VMD,Domain,AA)乙accessControlIdentifier,&typeDescriptionTypeDescription,邑valueData,Data,&accessMethodENUMERATED{public,anythingElse,}IF(vadr),&addressAddressOPTIONAL-Thepresenceofthisfieldshallcorrespondtothe-field&accessMethodhavingavalueequaltopublic.-Theabsenceofthisfieldshallcorrespondtothe一field&accessMethodhavingavalueequaltoanythingexceptpublic.ENDIF-Thefollowingfieldshalloccur-ifandonlyifthesemCBBhasbeennegotiated.IF(sem),&meaningObjectNameOPTIONALENDIF}14.1.3.1&name(名称)&name字段唯一标识一个有名变量对象。&name是一个MMS对象名,其定义范围可以为VMD-Specific,Domain-Specific或ApplicationAssociation-Specific,14.1.3.2&accessControl&accessControl字段指定一个访问控制表对象,该对象提供这个有名变量对象被读、写、删除或改变其访问控制的条件。14.1.3.3&typeDescription有名变量的邑typeDescription字段指明选用TypeDescription类型中的一个选项。TypeDescrip-tion类型在14.2.2中说明。14.1.3.4&value有名变量的&value字段指明与该变量相关联的值。在使用时,Data类型的选择应与&typeDescription字段所选的类型相同。14.1.3.5&accessMethod有名变量的&accessMethod字段指定访问的模式。如果Address属性是使用mms服务可以声明的(并可获得的),则&accessMethod字段的值应等于public,同时,Address属性应被定义,并且,对于请求该有名变量对象的属性的mms客户来说是可用的。否则,该字段的值应为本地定义的。只有支持vadr时,Publi。访问方法才是可用的。mms服务器可以声明一个mms变量仅在访问的瞬间存在。这种变量本质上没有地址,它应由 GB/T16720.1-2005八S09506-1:2003MMS服务器采用本地方法定义,并且它的&accessMethod不是public,MMS服务器也可以声明一个MMS变量具有地址,但选择不将该地址显露给MMS客户。这种变量也应由本地定义,其&.accessMethod不是public,如果&accessMethod为public,则下列字段应出现。如果&accessMethod字段不为public,则下列字段不出现。14.1.3.6&address&address字段应提供实变量在支持VMD的系统内的位置。当且仅当乙accessMethod字段的值为public时,该字段才存在。乙typeDescri如on字段所描述的变量的数据元素位于连续的地址内,从位于本字段所指定的地址中的第一个数据元素开始。数据元素的类型应与这些连续地址所包含的无名变量对象的数据元素的类型兼容。确定类型的“兼容性”是本地事务。注1:这样做的意图是允许MMS服务器可以拒绝接收含有类型冲突的定义,例如,请求将一个已知的布尔型定义为浮点型。使定义开放是为了允许MMS服务器接收要求类型说明严格的定义,例如声明一个“WORD"位串)包含一个整数。注2:本部分不为VMD中的实变量分配空间。MMS服务可用于描述实变量如何分配和分配于何处。然而.这种用法需要详细了解特定VMD的实现,以及声明该实变量的特定VMD应用。注3:只有其&accessMethod是Public的变量才要求地址的连续性。14.1.3.7&meaning(含义)本字段用于保存有名类型对象的名称,该对象的名称可以传递有名变量对象的语义。如果sem参数CBB已被协商确定,则该字段的值由DefineNamedVariable服务设定,并可用GetVariableAccessAt-tributes服务报告。本字段也是预定义有名变量的一部分。14.1.3.8对有名变f对象的操作操作有名变量的服务如下所列:a)read(读)—该服务使用V-Get函数获取有名变量对象描述的一个实变量的&-value字段;b)write(写)—该服务使用V-Put函数去置换有名变量对象描述的一个实变量的&value字段;c)InformationReport(信息报告)一一该服务使用V-Get函数获取有名变量对象描述的一个实变量的&value字段;d)DefineNamedVariable(定义有名变量)—该服务创建一个有名变量对象。e)GetVariableAccessAttibutes(获取变量访问属性)一一该服务返回一个有名变量对象的属性。f)DeleteVariableAccess(删除变量访问)—该服务删除一个有名变量对象。14.1.4有名变f表对象有名变量表对象用一个名称描述对多个MMS变量的访问。有名变量表对象规定单个MMS名称到独立MMS变量表之间的映射。有名变量表对象设计用来保持客户对底层诸实变量独立性的关注。该对象提供了一种机制,用于避免重复传送频繁使用的变量访问表。使用有名变量表的访问其成功或失败是在表的成员级上,因此,可能会报告部分成功。有名变量表中的每个元素或者是有名变量对象,或者是无名变量对象。对表中单个元素的访问受14.1.1.1所述要求的限制,但作为一个整体来访问一个表不受此要求的限制。因此,使用有名变量表对象的访问应对该表所引用的每个对象报告访问是成功还是失败。使用有名变量表对象的访问类似于利用表所引用的变量访问对象进行独立访问。有名变量表对象的属性规定如下,其后是操作该对象的服务的简要描述。NAMED-VARIABLE-LIST::=CLASS{长nameObjectName, GB/T16720.1-2005/ISO9506-1:2003一shallbeuniquewithinitsrangeofspecification(VMD,Domain,AA)乙accessControlIdentifier,&listOfVariablesVARIABLE-LIST-ITEM}14.1.4.1&name&-name字段唯一标识一个有名变量表对象。乙name是一个MMS对象名,其定义范围可以为VMD一specific,Domain-specific或ApplicationAssociation-specific,14.1。4.2&accessControl&accessControl字段指定一个访问控制表对象,该对象提供读、写、删除这个有名变量表或改变它的访问控制的条件。14.1.4.3&listOfVariables(变f表)&listOfVariables字段标识一个或多个VARIABLE-LIST-ITEM(变量表项)对象,每一项标识一个变量(有名或无名变量)和一个可选的替代访问说明。VARIABLE-LIST-ITEM::=CLASS{一oneandonlyoneofthefollowingtwolinesshallappearIF(vadr)乙unnamedltemAddressOPTIONALIF(vnam)ENDIFENDIFIF(vnam)&.namedltemObjectNameOPTIONALENDIFIF(valt)一thefollowingspecificationmaybeincluded邑alternateAccessAlternateAccessOPTIONALENDIF}14.1.4.3.1&unnamedltem(无名项)&unnamedItem字段为访问无名变量对象所标识的变量提供说明。仅当vadr参数CBB经协商后,本字段才出现。14.1.4.3.2&namedltem(有名项)&namedltem字段为访问有名变量对象所标识的变量提供说明,仅当vnam参数CBB经协商后,本字段才出现。14.1.4.3.3&AlternateAccess(替代访问)&AlternateAccess字段提供对(有名或无名)变量对象的替代访问说明。仅当valt参数CBB经协商后,本字段才出现。14.1.4.4对有名变A表对象的操作操作有名变量表的服务如下所列:a)read(读)—该服务使用&listOfVariables属性来确定要读的对象,并对这些对象执行read服务;b)write(写)-一该服务使用&listOfVariables属性来确定要写的对象,并对这些对象执行write服务; GB/T16720.1-2005JISO9506-1:2003c)InformationReport(信息报告)—该服务使用&list0fVariables属性来确定要报告的对象,并对这些对象执行InformationReport服务;d)DefineNamedVariableList(定义有名变量表)一一该服务创建一个有名变量表对象;e)GetNamedVariableListAttributes(获取有名变量表属性)—该服务返回有名变量表对象的属性;f)DeleteNamedVariableI,ist(删除有名变量表)—该服务删除一个有名变量表对象。14.1.5有名类型对象有名类型对象为MMS类型说明赋名。该对象仅当同时支持vadr和vnam参数一致性构造块时才可用。有名类型对象的属性规定如下,其后是操作这些对象的服务的简要描述。NAMED-TYPE::二CLASS{&-nameObjectName,一shallbeuniquewithinitsrangeofspecification(VMD,Domain,AA)&accessControlIdentifier,衣typeDescriptionTypeDescription一Thefollowingfieldshalloccur-ifandonlyifthesemCBBhasbeennegotiated.IF(sem),&meaningObjectNameOPTIONALENDIF}14.1.5.1&name&name字段唯一标识一个有名类型对象。&name是一个MMS对象名,其范围定义可以为VMD-Specific,Domain-Specific或ApplicationAssociation-Specific,14.1.5.2&accessControl&accessControl字段规定一个访问控制表对象,该对象提供删除这个有名类型或改变其访问控制的条件。14.1.5.3&typeDescription(类型描述)有名类型的&typeDescription字段指明选择TypeDescription抽象类型的一个选项。TypeDe-scription类型在14.2.2中说明。14.1.5.4&meaning本字段用于存贮另一个有名类型对象的名称,这个对象的名称可以传递该有名类型对象的语义。如果sem参数CBB已被商定,则该字段的值可被DefineNamedType服务设定,并可用GetNamed-TypeAttributes服务来报告。本字段也可是预定义有名类型的一部分。14.1.5.5对有名类型对象的操作操作有名类型对象的服务如下所列:a)DefineNamedType(定义有名类型)一一该服务创建一个有名类型对象。b)GetNamedTypeAttibutes(获取有名类型属性)一一该服务返回有名类型对象的属性。c)DeleteNamedType(删除有名类型)—该服务删除一个有名类型对象。d)Read(读),Write(写)、DefineNamdeVariable(定义有名变量)、DefineNamedVariableList(定义有名变量表),DefineNamedType(定义有名类型)—这些服务使用&.typeDescription字段以分析服务请求中可能包含的TypeName参数。 GB/T16720.1-2005/ISO9506-1:200314.2有关类型的说明所有MMS变量都是有类型的。变量的类型描述或者包含在有名变量对象或无名变量对象的乙typeDescription字段中,或者在访问时由VariableDescription参数的TypeSpecification参数规定,变量类型描述应提供变量的抽象语法及变量的可能取值范围的说明,同时,还要提供可以指定对此变量的替代访问的依据。变量的类型描述可以是简单的,只规定对单个数据元素的访问,即也可以是复合的,规定一组相关类型的访问。对每一个复合变量(数组或结构),根据从变量的访问方法(和地址,如可用的话)所获得的有效信息及其类型描述,MMS服务器可以确定实变量的每个简单数据元素的位置。14.2.1TypeDescription类型无名变量对象、有名变量对象和有名类型对象的&typeDescription字段应指明选用TypeDescrip-tion类型的一个选项。TypeDescription::”CHOICE{IF(strl)array[1]IMPLICITSEQUENCE{packed[0]IMPLICITBOOLEANDEFAULTFALSE,numberOfElements〕IMPLICITUnsigned32,elementType[2]TypeSpecification}ENDIFIF(str2),structure[2]IMPLICITSEQUENCE{packed[0]IMPLICITBOOLEANDEFAULTFALSE,components[I〕IMPLICITSEQUENCEOFSEQUENCE{componentName[0]IMPLICITIdentifierOPTIONAL,componentType[1]TypeSpecification}}ENDIF一SimpleSizeClass,boolean[3]IMPLICITNULL.,-BOOLEANbit-string仁4]IMPLICITInteger32,-BIT-STRINGinteger[5]IMPLICITUnsigned8,-INTEGERunsigned[6]IMPLICITUnsigned8,-UNSIGNEDfloating-point[7]IMPLICITSEQUENCE{format-widthUnsigned8,-numberofbitsof-floatingpointvalue-includingsign,exponent,-andfractionexponent-widthUnsigned8-sizeofexponentinbits},一〔8]isreservedoctet-string[9]IMPLICITInteger32,-OCTET-STRINGvisible-string[10]IMPLICITInteger32,-VISIBLE-STRINGgeneralized-time[11]IMPLICITNULL,---GENERALIZED-TIMEbinary-time[12]IMPLICITBOOLEAN,-BINARY-TIMEbcd[13]IMPLICITUnsigned8,-BCD GB/T16720.1-2005/ISO9506-1:2003objId[15]IMPLICITNULL,mMSString[16]Integer32}14.2.2TypeDescription参数TypeDescription参数的结构如表68所示。表68TypeDescription参数类型由一个递归的特定参数TypeSpecification来描述。TypeDescription参数描述一棵分叉树,称为类型树。该树的叶子是该类型所描述的变量的简单数据元素。如果一个类型描述一个复合变量(数组或结构),则类型树应有一个或多个非叶子结点,每个这种结点代表一个复合类型,该复合类型由其下级节点所表示的类型(也可能是复合类型)组成。TypeDescription参数的参数如下。14.2.2.1KindOfType(类型的种类)该参数指明被选用来描述类型树上这个结点的一种选择。该参数的值如下:ARRAY—表明选择Array参数;STRUCTURE—表明选择Structure参数;SIMPLE—表明选择Simple参数。14.2.2.2Array(数组)TypeDescription参数的这个选择表示被描述的结点是一个复合类型,这种复合类型由单一类型的有序元素序列组成,这些元素从0(第一个元素)编号,按升序递增。注:从建模的观点看,数组通过NumberOfElements参数指定的子树数目来描述,每个元素的类型由TypeSpecifi-cation参数规定,并按照Packed参数的规定进行压缩,并直接从属于指定该数组类型的类型树的结点。一个给定数组的元素用其子树在该数组的类型树下的位置来标识。第一个数组元素标识为。,第二个为1,依此类推,最后一个元素标识为(NumberOfElements-1).14.2.2.2.1Packed(压缩)此参数指明,在为这个数组(及其从属类型)的数据元素定位时,存储优化规则是否有效。如果该参数为“假”,除非定义它从属于一个类型,而且该类型的这一属性为“真”,否则存储优化规则无效。当该参数值为“真”时,存储优化规则对由此数组类型描述的整个子树都有效。当TypeDescription参数规定有名变量对象的类型的访问方法等于public,或规定该类型与一个无名变量对象相关时,这个参数可为“真”或“假”,如应用于变量一样。否则,只能为“假”。注:用于存储优化数组的数据元素定位的专用规则由本地确定。这些规则应保证在允许部分访问的情况下,其周 GB/T16720.1-2005/ISO9506-1:2003围数据元素的完整性。14.2.2.2.2NumberOfElements(元索个数)此参数指明数组元素的个数。14.2.2.2.3TypeSpecification(类型说明)此参数通过递归引用TypeSpecification参数来给出数组元素的类型描述。14.2.2.3Structure(结构)对TypeDescription参数的这个选择表明类型树的该结点描述一个复合类型,这种复合类型由一个或多个分量组成的有序表组成,表中的各分量可以有各自的类型。14.2.2.3.1Packed(压缩)此参数说明存储优化规则对这个结构(及其从属类型)的数据元素的定位是否有效。如果该参数为“假”,除非定义它从属于一个类型,而且该类型的这一参数为“真”,否则存储优化规则无效。当此参数为“真”时,存储优化规则对由此结构类型说明的整个子树都有效。当TypeDescription参数规定对有名变量对象的类型的访问方法等于PUBLIC,或规定该类型与一个无名变量对象相关时,同应用于变量一样,Packed参数可为“真”或“假”。否则只能为“假”。注:用于存储优化结构的数据元素定位的专用规则由本地确定。这些规则应保证在允许替代访问的情况下,其周围数据元素的完整性。14.2.2.3.2ListOfComponents(分,表)该参数描述此结构的分量,至少应描述一个分量。14.2.2.3.2.1ComponentName(分f名称)该参数类型为标识符,它在分量所直接归属的那个结构(结点)的范围内唯一地标识该分量。如果该结点被一个替代访问说明引用,则该参数是必需的,否则,该参数可以省略。14.2.2.3.2.2TypeDescription(类型描述)此参数通过递归引用TypeSpecification参数来给出结构分量的类型描述。14.2.2.4Simple(简单型)对TypeDescription参数的这一选择表明要描述的是类型树的一个叶结点。这类结点包含该结点所表达的数据元素类别,以及(适当时)与该类别的特定实例相关的尺寸(或精度)。类别和尺寸一起用于规定该变量的可能取值范围。14.2.2.4.1Class(类别)Simple选择的Class参数指定叶结点所表达的数据元素的类别。该参数的值应选下列值之一:a)BOOLEN(布尔)—这个类型定义与ISO/IEC8824-1中的布尔类型规定一样,Size参数应省略。b)BITSTRING(位串)—这个类型定义与ISO/IEC8824-1中的位串类型规定一样,Size参数应指明此位串中的位数,并带一个标志,指明它是绝对位数(指明定长位串)还是最大位数(指明变长位串)。c)INTEGER(整型)—这个类型定义与ISO/IEC8824-1中的整数类型规定一样,Size参数应给定为表达所有可能值而需要的位数(设定用二进制码表示)。d)UNSIGNED(无符号整型)—这个MMS类型定义与ISO/IEC8824-1中的非负整数类型规定一样,Size参数应包含为表达所有可能值而需要的位数(设定用二进制码表示)。e)FLOATINGPOINT(浮点型)-一一该类型定义具有不同值的简单类型,其值可位正、负实数值,包括0,正、负无穷及NaN(非数)。Size参数应给定格式宽度的位数F和指数宽度的位数E。格式宽度用于表示该浮收值(包括符号、指数和尾数)的位数。注1:术语“正无穷”、“负无穷”、“非数”、“格式宽度”、“指数宽度”在二进制浮点运算标准IEEE(ANSI/IEEE标准754;1985)中定义。MMS允许格式宽度和指数宽度取任意值,它包括但不限于该标准中定义的两个基本格 GB/T16720.1-2005/ISO9506-1:2003式。其他信息可参见GB/T16720.2ef)保留。注2:ISO/IEC9506的版本1还定义了一个补充选择,如ISO/IEC8824-1中所定义的REAL表示。但这种选择已不再使用。g)OCTETSTRING(8位位组串)—这个类型定义与ISO/IEC8824-1中的8位位串类型规定一样,Size参数应包含串中8位位组的个数,并带一个标志,指出它是绝对个数(指明一个定长串),还是最大个数(表明一个变长串)。h)VISIBLESTRING(可见串)—这个类型定义与ISO/IEC8824-1的VisibleString类型规定一样,Size参数应包含串中字符的个数,并带一个标志,指出它是绝对个数(表明一个定长串),还是最大个数(表明一个变长串)。i)GENERALIZEDTIME(广义时间)—这个类型定义与ISO/IEC8824-1中的GeneralizedTime类型规定一样,Size参数应省略。j)BINARYTIME(二进制时间)—这个类型定义与ISO/IEC8824-1中的TimeOfDay规定一样,Size参数指明在该类型的值中是否包含日期。k)BCD-—此类型由字符集中一个或多个十进制数字(0,1,...,9)的有序集合组成,Size参数指明该类型值中数字的绝对个数。1)OBJECTIDENTIFIER(对象标识符)—这个类型定义与ISO/IEC.8824-1中的对象标识符类型规定一样,Size参数应省略。m)MMSSTRING(MMS字符串)—此类型允许选用英语字符集(GB/T1988)或UNICODE字符集(ISO/IEC10646-1).Size参数应包含串中字符的个数和一个标志,它指出尺寸是绝对个数(表明定长串),还是最大个数(表明一个变长串)。14.2.2.4.2Size(尺寸)正如其含义那样,Size参数的出现与否取决于上述Class参数的值。如果Class参数指定一个变长串类型,Size参数应为一个负整数,其大小等于零减去该串的最大长度。14.2.3TypeSpecification参数TypeSpecification参数的结构如表69所示。表69TypeSpecification参数KTiynpdeoDNfeaTsmcyerpipetic一一ReqM/SRsp粉粉州在各种变量访问服务中,变量的类型说明或者有名类型的定义都由TypeSpecification参数规定。此参数本身描述用于生成&typeDescription字段的过程。这个生成过程总是在产生MMS变量对象时执行,这样作的效果是所有对有名类型对象的引用都在定义时解决,而且,TypeDescriptions参数决不显式地依赖于有名类型对象。注:由于这一即时估值规则,按照AA-specifi。有名类型来定义VMD-specifi。变量是可能的。例如,即使因应用关联丢失使得所引用的AA-specific有名类型对象被删除,一个变量仍然可以包含一个正确的TypeDescription属性。TypeSpecification参数的参数如下。14.2.3.1KindOfTypeKindOfType参数指明选择用来描述类型树上这一结点的一种选择,该参数的值如下:TYPE-NAME—它指明选择了TypeName参数。该值在响应服务原语、确认服务原语和infor-mationRepont.indication原语中不应出现。 GB/T16720.1-2005八SO9506-1:2003TYPE-DESCRIPTION—它指明选择了TypeDescription参数。14.2.3.2TypeName(类型名称)TypeSpecification参数的TypeName参数选择指明类型树的这一结点的定义是从一个有名类型对象的&typeDescription继承下来的,这个有名类型对象的&name字段等于这个参数(TypeName被有名类型对象的&typeDescription属性取代)。14.2.3.3TypeDescription(类型描述)TypeSpecification参数的TypeDescription选择指明类型树的这一结点将使用所标识的显式Ty-peDescription属性。14.3替代访问的说明如14.2所述,所有MMS变量都是有类型的。变量的类型描述VMD中实变量的抽象语法和可能的取值范围。替代访问描述规定这个类型的替代视图。它可用来改变已观察到的变量的抽象语法(如使用MMS服务时所见到的)或/和限制对变量可能取值范围内某个子集的访问(部分访问)。对变量的替代访问(由有名变量表对象的&accessMethod参数提供,或由一个特定访问请求的Al-ternateAccess参数提供)提供被引用的MMS对象所提供的视图与该访问所要求的视图之间的双向映射,其结果是到该实变量的间接映射。在各种变量访问服务中,替代访问由出现AlternateAccess参数来表示。它描述了将替代访问应用于一个类型(不管是导出的,还是由TypeSpecification显式定义的)时产生的导出类型。当用于传递与替代访问相关联的数值时,该导出类型决定了Data参数(见14.4)的抽象语法。AlternateAccess参数的描述基于它与MMS变量类型的关系。14.3.1AlternateAccess(替代访问)参数AlternateAccess参数的结构如表70所示。表70AlternateAccess参数一一14.3.1.1ListOfAlternateAccessSpecification(替代访问说明表)该参数指定包含一个或多个AlternateAccessSelection参数的表。每个AlternateAccessSelec-tion参数选择类型树的次高嵌套层上的一个结点,或者(在数组情况下)选一个结点范围。这个选择可 GB/T16720.1-2005/ISO9506-1:2003以用于补充的替代访问说明,或者,用于规定对所选结点表达的数据元素的访问。如果ListOfAlternateAccessSelection参数包含的元素多于一个,则由此参数产生的导出类型是一个结构。该导出类型的分量所具有的分量名称和类型由表中所指定的选择确定。如果ListOfAlternateAccessSelection参数恰好只包含一个元素,则由此参数产生的导出类型由它所指定的选择决定,而ComponentName参数无须指定。14.3.1.1.1ComponentName(分f名称)如果ListOfAlternateAccessSelection参数只规定了一个选择,则本参数不出现。否则,它是可选的。如果出现它规定了该替代访问的这个分量的名称,此名称用于指定对应用此AlternateAccess参数所导出的类型的替代访问。14.3.1.1.2KindOfSelection(选择种类)本参数指明在替代访问说明中规定的是访问还是递归,其可能的取值为:SELECT-ALTERNATE-ACCESS(选择替代访问)—表明在替代访问说明中规定的是递归,并且SelectAlternateAccess参数出现。SELECT-ACCESS(选择访问)—表明规定的是访问(读或写),并且出现SelectAccess参数。14.3.1.1.3SelectAlternateAccess(选择替代访问)如果选择类型树的次高嵌套层上的一个或多个子树作为递归的替代访问说明,则AlternateAccessSelection选择本参数。如果当前结点是一个数组,则可以选取单个数组元素、数组元素的子集,或者全部数组元素作为递归的替代访问说明。如果当前结点是一个结构,应选取该结构的一个分量作为递归的替代访问说明。SelectAlternateAccess的参数如下。14.3.1.1.3.1AccessSelection(访问选择)本参数指明用于规定替代访问的选择,其可能的取值如下:COMPONENT(分量)—为替代访问选择由Component参数所指定的结构中的一个分量。INDEX(索引)—为替代访问选择由Index参数所指定的一个数组元素。INDEX-RANGE(索引范围)—为替代访问选择由Index-Range参数所指定的元素所组成的数组。14.3.1.1。3.2Component(分f)Component参数的类型为标识符。如果类型树的当前结点指定为一个结构,并且AccessSelection参数表明为COMPONENT,则选本参数。对于递归替代访问说明,本参数选择一个特定的结构分量,该分量的ComponentName等于本参数的值。被选分量应是一个数组或结构。选定的类型树结点表达被选结构的分量的类型描述,并将AlternateAccess参数应用于该结点。由于使用Component选择而获得的导出类型由AlternateAccess参数应用于所选类型树结点来决定。14.3.1.1.3.3Index(索引)Index参数的类型为整型。如果类型树的当前结点指定为数组,并且AccessSelection指明为IN-DEX,则选本参数,否则,不选本参数。它为递归替代访问说明选择一个特定的数组元素。选定的分量可以是一个数组或结构。选定的类型树结点表达了被选数组元素的类型描述,并将AlternateAccess参数应用于该节点。由于使用Index选择而获得的导出类型由替代访问参数对所选结点的应用来决定。14.3.1.1.3.4IndexRange(索引范围)如果类型树的当前结点指定为一个数组,并且,AccessSelection参数指明INDEXRANGE,则选本参数。它为递归替代访问说明选择某一范围内的数组元素(具有数组或结构类型)。对选定范围内的每一元素(按升序索引的顺序),选定的类型树结点表达那个元素的类型描述,并将AlternateAccess参数应用于此结点。由于应用IndexRamge选择获得的导出类型是一个数组,其元素的类型由AlternateAccess参数应用于每个选定的结点的作用来决定(与其他数组一样,这些元素也从0开始编号)。 GB/T16720.1-2005/ISO9506-1:200314.3.1.1.3.4.1LowIndex(低索引)本参数为整型,它指明索引范围的起始点。它应是一个有效的数组索引。它所指定的元素应为获得的导出数组类型的第一个元素,并且在此类型中编号为。。14.3.1.1.3.4.2NumberOfElements(元素个数)本参数为整型,它指明索引范围中所包含的元素的个数(包括LowIndex参数所选定的那个元素)如果本参数值为0,则数组中其索引大于或等于LowIndex,并且小于或等于数组的最大索引的所有元素都被选中。如果本参数值大于。,则数组中其索引在LowIndex与(LowIndex-}-NumberOfEle-ments-1)之间(含)的所有元素都被选中。每个被选元素都应是己定义的。14.3.1.1.3.5AlternateAccess(替代访问)AlternateAccess参数应规定对选定结点的附加替代访问。14.3.1.1.4SelectAccess(选择访问)若需要访问(读或写)类型树的次高嵌套层上的一个或多个子树,AlternateAccessSelection则选用本参数。如果当前结点是数组,则访问应选单个数组元素或数组元素的子集。如果当前结点是结构,则应选择访问结构中的一个分量。由选定结点(或多个结点)所指定的整个子树(包括它的所有数据元素)都被访问。SelectAccess的参数如下。14.3.1.1.4.1AccessSelection(访问选择)本参数指明用于规定访问的选择,其可能的取值如下:COMPONENT—选择访问由Component参数所指定的结构中的一个分量。INDEX—选择访问由Index参数所指定的一个数组元素。INDEX-RANGE—选择访问由IndexRange参数所指定的一些数组元素。14.3.1.1.4.2Component(分t)如果类型树的当前结点指定为一个结构,并且AccessSelection参数指明为COMPONENT,则选本参数。否则,不选本参数。它选择访问一个特定的结构分量。由该选择所获得的导出类型即为所选结构分量的类型。14.3.1.1.4.3Index(索引)如果类型树的当前结点指定一个数组,并且,AccessSelection参数指定为INDEX,则应选本参数,否则,不选本参数。本参数选择一个特定的数组元素用于访问。选择所获得的导出类型即为所选数组元素的类型。14.3.1.1.4.4IndexRange(索引范围)如果类型树的当前结点指定一个数组,并且,AccessSelection参数指定为INDEX-RANGE,则应选本参数,否则,不选本参数。本参数选择访问某一范围内的数组元素。由IndexRange选择所获得的导出类型是一个包含被选元素的数组,每个元素的类型即为数组元素的类型(与其他数组一样,这些元素也从。开始编号)。14.3.1.1.4.4.1LowIndex(低索引)本参数为整型,它标明索引范围的起始点。它应是一个有效的数组索引。它所指定的元素应为获得的导出数组类型的第一个元素,并且,在此类型中编号为0.14.3.1.1.4.4.2NumberOfElements(元素个数)本参数为整型,它指明索引范围中所包含的元素的个数(包括由LowIndex参数所选定的那个元素)。如果本参数值为0,其索引大于或等于LowIndex,并且,小于等于数组最大索引的所有数组元素都被选中。如果,本参数值大于0,其索引在LowIndex与(LowIndex+NumberOfElements-1)之间(含)的所有元素都被选中。每个被选元素都应是已定义的。 GB/T16720.1-2005/ISO9506-1:200314.4数据值的说明MMSRead,Write和InformationReport服务用来传递希望获得的(Write)或当前的(Read和In-formationReport)一个MMS变量值或由有名变量表对象引用的一组MMS变量值。对于Read和InformationReport服务,MMS变量的当前值用V-Get函数(见14.1.1.2)获得,结果用AccessResult参数表示。对于Write服务,希望获得的变量值由Data参数表示。对于一个MMS变量,通过应用V-Put函数(见14.1.1.2)该值更新VMD的当前状态。如果成功,更新结果用一个简单的确认表示。如果更新失败,结果由DataAccessError参数表示。AccessResult,Data和DataAccessError参数规定如下。14.4.1AccessResult(访问结果)参数AccessResult参数被Read和InformationReport服务用来向客户报告读取一个MMS变量对象的结果。该参数的结构如表71所示。表71AccessResult参数后一一廿一IMnSd((/==(一州14.4.1.1Success(成功)本参数表明访问是否成功,并规定选用下列参数之一。14.4.1.2DataAccessError(数据访1.7错误)如果Success参数表明访问失败,本参数则应包含失败的原因。本参数的描述见14.4.3.14.4.1.3Data(数据)如果Success参数表明访问成功,本参数则应包含该变量(或结构变量)的值。一个Data值的抽象语法由替代访问所指定的导出类型或由变量的定义类型(有名或无名变量对象)决定。Data参数的参数在14.4.2中描述。14.4.2Data(数据)参数Read,Write和InformationReport服务使用Data参数传递一个变量的值。Data参数的结构如表72所示。表72Data参数卜布一)本参数以递归方式定义。它将规定一个分叉树,该树的每个结点与变量的类型树的一个结点相对应,或者,与应用替代访问之后的导出类型树的一个结点相对应(见14.2和14.3)o GB/T16720.1-2005/ISO9506-1:200314.4.2.1KindOfData(数据种类)根据类型树的当前结点的值是一个数组、或结构,或是一个简单型数据元素,KindOfData的值应分别为ARRAY,STRUCTURE或SIMPLE,14.4.2.2Array(数组)如果KindOfData指明为数组,则应选择ARRAY参数。此参数规定Data参数的一个有序表,表中每个元素提供数组中对应数组元素的值。表元素从0号数组元素顺序排至最后一个数组元素。14.4.2.3Structure(结构)此参数指定Data参数的一个有序表,表中每个元素规定对应结构分量的值。表中元素从结构的第一个分量顺序排至最后一个分量。14.4.2.4Simple(简单型)当KindOfData指明为简单类型数据元素时,选择Simple参数。它规定该变量的一个简单型数据元素的类别和值。14.4.2.4.1Class(类别)本参数指明当前值所传递的数据的类别。其可能的取值为:BOOLEAN,BITSTRING,INTE-GER,UNSIGNED,FLOATINGPOINT,OCTETSTRING,VISIBLESTRING、GENERALIZEDTIME,BINARYTIME,BCD,OBJECTIDENTIFIER和MMSSTRING(与14.2.2.4.1中所规定的TypeDescription参数的Simple类型一样)。14.4.2.4.2Value(值)本参数包含简单类型数据元素的实际值。14.4.3DataAccessError(数据访问错误)参数该参数在试图访问变量失败时指明失败的原因,其可能的取值为:OBJECT-INVALIDATED(对象无效)—该访问引用的已定义对象具有一个未定义的引用属性。这表示对该对象的访问企图出现永久性错误。HARDWARE-FAULT(硬件故障)—访问该变量的企图因硬件故障而失败。TEMPORARILY-UNAVAILABLE(暂不可用)—所要求的变量暂时不能用于所请求的访问。例:VMD可以拒绝对已处于手动模式的控制环路的设定点写人。OBJECT-ACCESS-DENIED(对象访问被拒绝)一一MMS客户没有足够的权限来请求该操作。OBJECT-UNDEFINED(对象未定义)—具有给定名称的对象不存在。INVALID-ADDRESS(地址无效)—由于给定格式不正确或越界,对无名变量对象的给定地址的引用无效。TYPE-UNSUPPORTED(类型不支持)—为变量指定了不合适或不被支持的类型。TYPE-INCONSISTENT(类型不一致)—指定的类型与服务或所引用的对象不一致。OBJECT-ATTRIBUTE-INCONSISTENT(对象属性不一致)—为对象指定了不一致的属性。OBJECT-ACCESS-UNSUPPORTED(对象访问不被支持)—该变量未对所要求的访问加以定义。OBJECT-NON-EXISTENT(对象不存在)—变量不存在。OBJECT-VALUE-INVALID(对象值无效)-一提供的值与该对象的允许值的集合不一致。注:DataAccessError参数并不表明服务请求失败,而是表明所希望的有效访问请求失败。OBJECT-INVALI-DATED错误表明由包含在一个已定义的有名变量表中的一个引用所表达的映射不再有效。所有其他错误值则表明V-Get或V-Put函数失败。14.5有关变f访问的说明本条描述规定变量访问的参数,包括变量VariableAccessSpecification(变量访问说明)参数、Var-iableSpecification(变量说明)参数和Address(地址)参数。 GBJT16720.1-200511SO9506-1:200314.5.1VariableAccessSpecification参数VariableAccessSpecification参数的结构如表73所示。表73VariableAccessSpecification参数布一寸一亡州14.5.1.1KindOfAccess(访问种类)此参数表明访问是通过变量说明枚举表和(任选的)替代访问参数来规定,还是由单个的VariableListName参数来规定(该参数给定有名变量表对象的&name字段的值)。14.5.1.2ListOfVariable(变f表)如果KindOfAccess参数指定一个枚举表,则应指定此参数,否则,不指定。如果指定,本参数应列出每个待访问的变量(一个或多个),以及所使用的替代访问。表中每个元素应包含如下参数。14.5.1.2.1VariableSpecification(变,说明)VariableSpecification参数标识VMD上的一个变量,该变量的值:a)要被读出(读请求和指示服务原语);b)要被写人(写请求和指示服务原语);或c)已被读出(读应答及确认服务原语以及InformationReport服务)。VariableSpecification参数的参数在14.5.2中规定。14.5.1.2.2AlternateAccess(替代访f17)本参数指定用于此服务实例的替代访问。如果未包括本参数,则要使用由该变量定义所规定的整体访问。如果变量的KindOfType参数为SIMPLE,本参数应省略。14.5.1.3VariableListName(变f表名称)如果KindOfAccess参数指定为一个有名表,则应规定本参数(类型为ObjectName),否则不应规定。如规定,本参数应提供在VMD中一个有名变量表对象的VariableListName属性的值,这个对象应指定一个包含一个或多个变量的表,这些变量:a)要被读出(读请求和指示服务原语);b)要被写人(写请求和指示服务原语);或c)已被读出(读应答和确认服务原语,以及InformationReport服务)。14.5.2VariableSpecification参数VariableSpecification参数指定对单个MMS变量的访问,该参数的结构如表74所示。表74VariableSpecification参数口寸十曰 GB/T16720.1-2005八SO9506-1;200314.5.2.1KindOfVariable(变f种类)本参数表明要执行(或已执行)的变量访问的种类,其值应从下述值中选取:NAMED(有名)—表明使用有名变量对象的访问。若选此值,则Name参数应出现。UNNAMED(无名)—表明使用无名变量对象的访问。若选此值,则Address参数应出现。SINGLE(单一)—表明访问使用临时建立的有名变量对象,该对象的定义在访问请求中给出。若选此值,则VariableDescription参数应出现。INVALIDATED(无效)—表明试图访问一个无效的变量。此值只能在响应或确认原语中出现。若选此值,则Name,Address及VariableDescription参数都不应出现。14.5.2.2Name(名称)Name参数(类f为ObjectName)指定有名变量对象的&name字段。14.5.2.3Address(地址)Address参数规定访问使用一个无名变量对象所指定的内部类型(thebuilt-intype)oAddress参数的参数在14.5.3中规定。14.5.2.4VariableDescription(变f描述)该参数对利用临时建立的有名变量对象的访问指定Address和TypeSpecification。访问后应删除该对象。14.5.2.4.1Address(地址)Address参数规定要被描述的变量的地址。它表示变量的基地址与TypeDescniption参数所描述的一样。Address参数在14.5.3中描述。14.5.2.4.2TypeSpecification(类型说明)该参数规定变量的抽象类型。所规定的类型应与包含在这个变量中的所有无名变量对象的TypeDescription属性兼容,“兼容”的定义是本地事务(见14.1.3中Address属性的描述)。TypeSpecification参数已在14.2中描述。14.5.3Address参数Address参数用于指定一个无名变量对象。本部分提供3种实施定义的地址形式。Address参数的结构如表75所示。表75Address参数防-!Cit:vadr一}针分州14.5.3.1KindOfAddress(地址种类)本参数指明该参数中所包含的地址的种类,其值应指明这个地址是数字地址、符号地址还是无约束地址。注:本部分没有规定kindofAddress与实际系统特性之间的关系。就本部分而言,各种地址种类之间的区别是纯粹语法上的。具体实施可以支持这些地址类型中的零种或多种。14.5.3.2NumericAddress(数字地址)本参数类型为无符号整型,如果kindofAddress参数指定一个数字地址,则选此参数。此参数适用于在规定线性地址空间的系统中,或在地址可用非负整数值表示的系统中对变量寻址。14.5.3.3SymbolicAddress(符号地址)本参数类型为字符串,若kindofaddress参数指定一个符号地址,则选此参数。本参数适合于有名内部(buil-in)变量的符号寻址。 GBJT16720.1-2005/1SO9506-1:2003注:与其他两种类型一样,这个地址类型规定无名变量的&.address字段。它语法和语义均不同于MMS变量名。14.5.3.4UnconstrainedAddress(无约束地址)本参数类型为8位位组串,若kindofaddress参数指定一个无约束地址,则选此参数。本参数适用于在具有实施专用地址格式的系统中的变量寻址,在这种系统中,变量不能被表示为一个相对地址,或一个符号地址。14.6Read(读)服务MMS客户使用读服务来请求MMS服务器返回VMD上定义的一个或多个变量的值。14.6.1结构该服务原语的结构如表76所示。表76Read服务14.6.1.1Argument本参数传递Read服务请求的服务专用参数。14.6.1.1.1SpecificationWithResult(与结果一起出现的说明)本参数为布尔型,它表明在应答原语的Result(+)参数中是否要求VariableAccessSpecification参数。若此参数为“真”,而且应答原语指明成功,则指示服务原语的VariableAccessSpecification参数的值将在应答服务原语的Result(+)参数中返回。若为“假”,则Result(+)中不包括VariableAccessSpecification参数的值。14.6.1.1.2VariableAccessSpecification(变f访问说明)本参数指定待访问的变量。此参数已在14.5.1中描述。14.6.1.2Result(+)Result(十)参数表明服务请求成功。服务成功将返回如下参数。注:对于读服务,成功意味着服务请求对MMS服务器是可接收的,并且MMS服务器设法确定服务所请求的每个变量的值。14.6.1.2.1VariableAccessSpecification(变f访问说明)如果在指示服务原语中有要求,则给出此参数,否则,可省略。如出现此参数,它应包含取自指示原语的VariableAccessSpecification参数。14.6.1.2.2ListOfAccessResult(访A结果表)本参数包含指定变量的值,并按VariableAccessSpecification参数所指定的顺序排列。表中每个元素都是一个AccessResult,它们或者在应用变量的类型描述和替代访问(如采用的话)之后,指明访问时刻的实变量的值,或者指明访问出错的原因。AccessResult参数已在14.4.1中说明。14.6.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章中详细定义)给出失败原因。 GB/T16720.1-2005/ISO9506-1:200314.6.2服务过程14.6.2.1先决条件MMS服务器应验证VMD的&accessControl字段所引用的访问控制表对象中的所有条件对于服务类=READ都满足。如果VariableAccessSpecification参数指定一个有名变量表对象,则MMS服务器应验证有名变量表对象的&accessControl字段所指定的访问控制表对象中的所有条件对于服务类=READ都满足(见9.1.3)。如果这些条件不满足,服务请求失败,并返回Result(一)。14.6.2.2活动对于VariableSpecification中的每一项(不管是包含在有名变量表对象中,还是分别指定),MMS服务器将:a)验证该项的衣accessControl字段所指定的访问控制表中的所有条件对于服务类=READ都满足,否则,对该分量的读操作失败,并将数据访问错误OBJECT-ACCESS-DENIED作为Ac-cessResult参数中的对应分量返回;b)尝试读取(见14.1.1.2.1中V-Get函数)指定项的值,并返回该项的值,或返回一个DataAc-cessError描述所发生的问题。将Result(十)连同读操作的结果一起返回。14.7Write(写)服务MMS客户使用Write服务来请求MMS服务器用服务请求中提供的值替换一个或多个变量的内容。14.7.1结构该服务原语的结构如表77所示。表77Write服务14.7.1.1Argument本参数传递Write服务请求的特定参数。14.7.1.1.1VariableAccessSpecification(变f访问说明)本参数规定待写入的变量。该参数已在14.5.1中详细说明。14.7.1.1.2ListOfData(数据表)本参数规定要写人到VariableAccessSpecification参数所指定的变量中的值。这些值应按Varia-bleAccessSpecification参数所规定的顺序出现在这个表中。Data参数应由变量的类型描述和替代访问描述(当采用时)决定。Data参数已在14.4.2中说明。14.7.1.2Result(+)Result(+)参数表明服务请求成功。服务成功应返回如下参数。注:对于写服务,成功意味着服务请求对MMs服务器是可接受的,并且,MMs服务器试图用请求中提供的值替换 GBJT16720.1-2005八SO9506-1:2003每个指定变量的值。14.7.1.2.1ListOfWriteResult(写结果表)该参数按请求中所指明的变量的顺序返回一个表。对每个变量,该表或者标明对成功写入该变量的确认,或者标明对该变量写人失败的原因。14.7.1.2.1.1Success(成功)此布尔型参数表明对给定变量的写入是否成功。14.7.1.2.1.2DataAccessError(数据访i7错误)如果标明失败(Success参数等于“假”),本参数提供失败的原因。DataAccessError参数的描述见14.4.3。14.7.1.3Result(一)Result(一)参数表明服务请求失败。ErrorType参数(在第24章详细定义)给出失败原因。14.7.2服务过程14.7.2.1先决条件MMS服务器应通过检查所有VariableAccessSpecification参数和ListofData参数来验证服务请求的有效性。如果ListofData中元素的类型和个数与VariableAccessSpecification不符,应返回Result(一)。MMS服务器应验证VMD的&accessControl字段所引用的访问控制表对象中的所有条件对于服务类=WRITE都满足。如果VariableAccessSpecification参数指定一个有名变量表对象,则MMS服务器应验证该有名变量表对象的&accessControl字段所指定的访问控制表中的所有条件对于服务类=WRITE都满足(见9.1.3)。如果条件不能满足,则服务请求失败,并返回Result(一)。14.7.2.2活动对于VariableSpecification中的每一项(不管是包含在有名变量表对象中还是分别给定),MMS服务器将:a)验证在这个项的&accessControl字段所引用的访问控制表中的所有条件都满足。如果条件不满足,将数据访问错误OBJECT-ACCESS-DENIED作为DataAccessError参数的对应分量返回;b)尝试写人(见14.1.1.2.2中V-Put函数)给定变量的值。按照VariableAccessSpecification参数规定的顺序,MMS服务器对每一项返回对成功写人的确认,或返回一个写人为何失败的指示。14.8InformationReport(信息报告)服务MMS用户使用InformationReport服务将一个或多个指定变量的值通知其他MMS用户(对发送请求的MMS用户来说是读入)。14.8.1结构该服务原语的结构如表78所示。表78InformationReport服务位essssRASespuelRctifica-}gtion一RMeqMh(二州14.8.1.1Argument本参数传递InformationRepont服务请求的服务专用参数。14.8.1.1.1VariableAccessSpecification本参数标识其值待报告的变量。该参数已在14.5.1中说明。'