(高清版)GBT 33863.11-2021 OPC统一架构 第11部分:历史访问_第1页
(高清版)GBT 33863.11-2021 OPC统一架构 第11部分:历史访问_第2页
(高清版)GBT 33863.11-2021 OPC统一架构 第11部分:历史访问_第3页
(高清版)GBT 33863.11-2021 OPC统一架构 第11部分:历史访问_第4页
(高清版)GBT 33863.11-2021 OPC统一架构 第11部分:历史访问_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

GB/T33863.11—2021/IEC62541-11:OPC统一架构第11部分:历史访问(IEC62541-11:2015,IDT)国家市场监督管理总局国家标准化管理委员会GB/T33863.11—2021/IEC6254 I 1 1 1 13.2缩略语 3 3 34.2数据构架 34.3时间戳 4 4 7 7 7 5.3HistoricalEventNodes 5.4公开支持的功能与能力 5.5注释数据类型 5.6历史审计事件 6历史访问特定服务的使用 6.3连续点 216.5HistoryData参数返回 296.7PerformUpdateType枚举 附录A(资料性附录)客户端约定 I 第1部分:概述和概念: 第7部分:行规:——GB/T33863.1—2017OPC统一架构第1部分:概述和概念(IEC/TR62541-1:2010,——GB/T33863.3—2017OPC统一架构第3部分:地址空间模型(IEC62541-3:2010,IDT);OPC统一架构第4部分:服务(IEC62541-4:2011,IDT);OPC统一架构第5部分:信息模型(IEC62541-5:2011,IDT);OPC统一架构第8部分:数据访问(IEC62541-8:2011,IDT);——GB/T33863.13—2021OPC统一架构第13部分:聚合(IEC62541-13:2015,IDT)。1下列文件对于本文件的应用是必不可少的。凡是注日期的引IEC/TR62541-1OPC统一架构第1部分:概述和概念(OPCunifiedArchitecture—Part1:IEC62541-3OPC统一架构第3部分:地址空间模型(OPCunifiedarchitecture—Part3:IEC62541-4OPC统一架构第4部分:服务(OPCunifiedarchitecture—Part4:Services)IEC62541-5OPC统一架构第5部分:信息模型(OPCunifiedarchitecure—Part5:InformationIEC62541-8OPC统一架构第8部分:数据访问(OPCunifiedarchitecture—Part8:Dataaccess)IEC62541-13OPC统一架构第13部分:聚合(OPCunifiedarchitecture—Part13:Aggregates)2GB/T33863.11—2021/IEC62541-11:2015历史节点HistoricalNode在客户端可访问历史数据或事件的地址空间中的对象、变量、特性或视图。历史数据节点HistoricalDataNode在客户端可访问历史数据的地址空间中的变量或特性。历史事件节点HistoricalEventNode在客户端可访问历史事件的地址空间中的对象或视图。在HistoricalDataNode存储在历史数据库中后,被改变(手动插入或删除)的HistoricalDataNode的值。原始数据rawdata存储在历史数据库中的HistoricalDataNode的数据。开始时间/结束时间StartTime/EndTime定义了时间域的历史请求的边界。3GB/T33863.11—2021/IEC62541-11:2HA:历史访问(HistoricalAccess)HDA:历史数据访问(HistoricUA:统一架构(UnifiedArchitecture)历史数据或事件可能位于一个专有的数据集、数据库或内存中的短期图1说明了一个UA服务器的地址空间如何包含范围广泛的不同的历史数据和/或历史事件源。4服务器一服务器一(DA或A&E)其他数据来源客户端ToReturnInvalid拒绝(见IEC62541SOURCE_0返回SourceTimestamp。SERVER_1返回ServerTimestBOTH_2返回SourceTimestamp和ServerTime于HistoryRead服务请求中的类型。某些服务器可能不能同时支持历史化SourceTimestamp和如果一个请求同时要请求ServerTimestamp和SourceTimestamp,服务器只收集Source当通过HistoryRead服务访问HistoricalDataNode,请求可设置一个标志位returnBounds,表明5开始时间结束时间000000000FIRST,5:00,5:02,5:0000333333333336表1(续)开始时间结束时间333666633666600112001l0011个返回的时间戳加1s。个返回的时间戳减1s。7GB/T33863.11—2021/IEC6HistoricalNode的历史仍然是需要的,但HistoricalNode已经不再历史化,那么具有适当的AccessLevel属性和Historizing属性设置的对象宜在地址空间中被维护(见IEC62541-3中名称使用数据类型O型的定义见5.58HistoricalDataConfigurationType的所有实例使用表6中定义的BrowseName。值HistoricalDataConfiguration引用数据类型建模规则AggregateConfiguratAggregateConfigurat值为True,表示SteppedInterpolation模式;值为False,表示SlopedInterpolated模式。默认值是ExceptionDeviation变量规定HistoricalDataNode数据变化的最小量,以将变化报告给历史数9值PERCENT_OF_VALUE_1ExceptionDeviation是InstrumentRange的百分比(见IEC62541-8)ExceptionDeviation是EURange的百分比(见IEC62541-8)ExceptionDeviation类型是未这个引用类型是一个具体的可以直接使用的引用类型。它是聚合引用类类型的位置。其在地址空间中的表示法见表5。ReferencesReferencesHierarchicalReferencesNonHierarchicalReferencesHasChildHasHistoricalConfguration(值HasHistoricalConfiguraHistoricalConfigurati引用这个对象是作为HistoricalDataNode的配置信息的浏览入口点。该对象的内容已经在表3中的类型定义中定义了。它在表6中正式定义。如果HistoricalDataNode定义了配置,那么其实例应有一个“HAConfiguration”的BrowseName。额外的配置可以用不同的BrowseName定义。所有的历史配置对象应使用HasHistoricalConfiguration引用类型来引用。强烈建议选择的显示名称应能清楚地描述表6历史访问配置定义值引用建模规则HistoricalDataNode总是地址空间中其他节点的一部分。它们从不被自己定义。HistoricalData图3说明了一个包括历史的数据变量的基本地址空间模型。AggregateConfigurationType类型定义Historicall)ataConfigurationType每个有历史的HistoricalDataNode应有定义的Historizing属性(见IEC62541-3),并引用HistoricalAccessConfiguration对象。在HistoricalDataNode本身是一个特性的情况下,HistoricalGB/T33863.11—2021/IEC6在地址空间中不是每个变量都可能包含历史数据。为了查看历史数据是图3只示出了属性和特性的一个子集。在IEC62541-3中为变量定义的其他属性也可能是可使用MHistoricalEventNode字段可用。它还可以where段,指示可以通过HistoricalEventNode可事件类型或事件的限制HistoricalEventFilter特性可以用作历史数据HistoricalEventNodes是地址空间中用于公开历史事件的对象或者视图。这些节点通过EventGB/T33863.11—2021/IEC62541-11:2每一个HistoricalEventNode表示为一个具有特定属性集的对象或视图,HistoricalEventFilter特资格作为HistoricalEventNode。为了查看历史数据是否可用,客户端将在EventNotifier属性中查找图4说明了一个具有历史的事件的基本地址空间模型。—HasNotifierEventNotifier->subscribToEEventNotifier->HistoryEventNotifier->HistoryWrite=1EventNotifier->subscribToEEventNotifier->HistoryEventNotifier->HistoryWEventNotifier->subscribToEEventNotifier->HistoryEventNotifier->HistoryWHasCondifionBaseEventType类型定义本条列出了对历史事件特别重要的对象或视图的属性。它们在IEC62541-3中详细规定。下面的该EventNotifier属性用于指示该节点是否可以用来读取和/或更新历史事件。OPCUA服务器可支持多种不同的功能和能力。如下的标准对象以一种常见的方式公开这些功GB/T33863.11—2021/IEC62541-11:2AccessHistoryDataCapabi任何支持历史访问的OPCUA服务器的ServerCapabilitiesType对象都应包含一个到History该基本对象类型的内容已经在IEC62541-5类型定义中定义。对象扩展在表8中正式定义。务器将返回能力不适用情形下的适当StatusCode。值HistoryServerCapabilities引用数据类型建模规则AccessHistoryDataCapabil表8(续)引用建模规则GB/T33863.11—2021/IEC62541-11:2UpdateEventCapability变量表示对更新能力的支持。值为True表示服务器具备支持将历史中不DeleteEventCapability变量表示对删除事件的支持。值为True表示服务器具备支持在历史中删除事件的能力。默认值是False。InsertAnnotationCapability变量表示对注释的支持。值为True表示服务器具备支持插入注释的能力。某些支持插入注释的服务器也支持编辑和删除注释的能力。默认值是False。AggregateFunction是浏览服务器为历史访问而支持的所有聚合功能的一个入口点。所有服务器支持的HistoryAggregate宜能从这个对象开始被浏览。聚合在IEC62541-13中定义。如果服务器不此数据类型为历史数据项描述了注释信息。其元素定义见表表9注释结构注释添加的时间,该时间很可能与SourceTimAuditEvents是因服务器的客户端在该服务器上的操作而生成。例如,为响应客户端发出至一个变量的写入,服务器会生成一个AuditEvents,用来描述该变量作为源方,用户和客户端会话作为事件的发起方。并不是所有的服务器都支持审计,但若一个服务器支持审计,则它应支持在5.6中所描述的审计事件。行规(见IEC62541-7)可用于判定一个服务器是否支持审计。对于在任何HistoricalNode上的所有HistoryUpdate或该类型的子类型的事件。有关AuditHistoryUpdateEventType模型的细节,见IEC62541-3和Type事件应包括所插入事件的EventId和表明该事件插入的描述。在调用HistoryUpdate服务以删除记录的场合下,应生成AuditHistoryDeleteEventType或其子类型。有关更新历史数据或事件的细特别是使用删除原始或删除修改后功能,应生成一个AuditHistoryRawModifyDeleteEventType事件或其一个子类型。使用按时间删除功能,应生成一个子类型。所有其他的更新均应遵循在AuditHistoryUpdateEventType模型中所提供的指南。5.6.2AuditHistoryEventUpda这是一个AuditHistoryUpdateEventType的子类型,并用于历史事件更新相关事件的分类。该类型继承其父类的所有行为。表10正式定义了它在地址空间中的表示。值AuditHistoryEventUpdateEventT否引用数据类型建模规则在IEC62541-3中定义的AuditHistoryEventUpdateEventType的子类型,即它有针对于同一节点的HasProperty引用该EventType继承了AuditHistoryUpdateEventType的所有特性。在IEC62541-5中定义了它们UpdateNode标识了写在SourceNode上的属性。5.6.3AuditHistoryValueUpda这是一个AuditHistoryUpdateEventType的子类型,用于对历史值更新相关事件进行分类。这种类型继承了其父类的所有行为。表11正式定义了它在地址空间中的表示。值AuditHistoryValueUpdateEvnetT引用数据类型建模规则在IEC62541-3中加以定义的AuditHistoryUpdateEventType的子类,即其有针对于同一节点的HasProperty引用GB/T33863.11—2021/IEC62541-11:2该EventType继承了AuditHistoryUpdateEventType的所有特性。其语义在IEC62541-5中定义。UpdatedNode标识了写在SourceNewValues识别了写入事件的数值。OldValues标识了写入前事件所包含的值。对于不具有此信息的服务器,可以接受其报告空值。5.6.4AuditHistoryDe这是一个AuditHistoryUpdateEventType的子类,并用于历史删除相关事件的分类。这种类型继承其父类的所有行为。表12正式定义了它在地址空间中的表示。值AuditHistoryDeleteEventT引用数据类型建模规则在IEC62541-3中定义的AuditHistoryDeleteEventType的子类,即其具有同一节点的HasProperty引用AuditHistoryAtTimeDeleteEventTAuditHistoryEventDeleteEventT此EventType继承了AuditUpdateEventType的所有特性。其语义是在IEC62541-5中定义。该NodeId标识了用于删除操作的NodeId。这是一个AuditHistoryDeleteEventType的子类型,用于对历史删除相关事件进行分类。这种类型继承其父类的所有行为。其在地址空间中的表现形式见表13。值AuditHistoryRawModifyDeleteEventT引用建模规则在表12中定义的AuditHistoryDeleteEventType的子类,即其具有针对于同一节点的HasProperty引用GB/T33863.11—2021/IEC62541-11:2此EventType继承了AuditHistoryDeleteEventType的所有特性。它们的语义是在5.6.4定义。OldValues标识了在删除之前的历史包含值。一个服务器宜报告所有已删除的值。对于不具有此信息的服务器,可以接受其报告一个空值。OldValues包含DataType中的值和用于写入值的5.6.6AuditHistoryAtTimeDel这是一个AuditHistoryDeleteEventType的子类型,用于对历史删除相关事件进行分类。这种类型继承其父类的所有行为。表14正式定义了它在地址空间中的表示。值AuditHistoryAtTimeDeleteEventT引用数据类型建模规则在表12中定义的AuditHistoryDeleteEventType的子类,即具有针对于同一节点的HasProperty引用Utc时间[]该EventType继承了AuditHistoryDeleteEventType的所有特性。其语义在5.6.7中定义。5.6.7AuditHistoryEventDele这是一个AuditHistoryDeleteEventType的子类型,用于对历史删除相关事件进行分类。这种类型继承了其父类的所有行为。表15正式定义了它在地址空间中的表示。值AuditHistoryEventDeleteEventT引用数据类型建模规则在表12中定义的AuditHistoryDeleteEventType的子类,即其具有针对于同一节点的HasProperty引用HistoryEventFieldLi该EventType继承了AuditHistoryDeleteEventType的所有特性。它们的语义在5.6.4中定义。EventIds反映了调用的EventIds参数。没有找到提供上限或下限值的数据边界值不适用或服务器已达到其搜索限制,因收集启动、停止、丢失而导致的数据丢失的时间范围内获取不到因为匹配项存在,所以未能成功插入数据或事件因为没有匹配项存在,所以数据或事件没有成功更新Bad_TimestampNotSuppo客户端使用TimestampsToReturn请求历史,服务器不支持(即,当服务器只支持SourceTimestamp时,请求服务器时间戳)Bad_AggregateListMism聚合列表与操作列表没有相同的长度表16(续)服务器不支持规定的节点的AggregateConfBad_AggregateNotSuppo见IEC62541-4:2015的表6Bad_TypeDefinitionInv见IEC62541-4:2015的表16Bad_SourceNodeIdInv见IEC62541-4:2015的表16见IEC62541-4:2015的表16见IEC62541-4:2015的表16见IEC62541-4:2015的表16见IEC62541-4:2015的表16表17Good操作等级结果代码数据或事件成功地插入到历史数据库中事件字段被忽略,且没有被插入到历史数据库中-—在startTime=endTime场合下ReadEvents;——请求数据场合下ReadRaw且不存在。 -—数据不存在场合下的任何删除请求。上述使用案例是说明性的示例。有关每个状态代码何时返回的详细说明见6.4和6.7。实现OPCUA历史访问的UA服务器不宜设置此位,而宜传播已存储在数据存储库中的Status可能返回含有连续点的零结果,以使在下一次客户端读取调用时允许服务器恢复该计算。有关若客户端规定了一个ContinuationPoint,则忽略HistoryReadDetails参数和Timestamps能。简化起见,列出了每个结构的功能。举例来说,如“使用阅读修改功能”文本指的是在该结构通过规定一个过滤器和一个时间域,从历史数据库中选择出一个或多个目标或视图的事件集,见6.4.2.1。Event结构(见6.5.4)或多个变量的值的集合,见6.4.3.1。Data结构(见6.5.2)表18(续)或多个变量修改后的值的集合,见6.4.3.1。当该参数被规定时,服务器为每一个操作返回一个HistoryModifiedData结构(见6.5.3)或多个变量的聚合值的集合,见6.4.4.1。当该参数被规定时,服务器为每一个操作返回一个HistoryData结构(见6.5.2)该结构通过规定一个时间戳系列,从历史数据库中选择出一个或多个变量的原始值或插值的集合,见6.4.5.1。当该参数被规定时,服务器为每一个操作返回一个HistoryData结构(见6.5.2)6.4.2.1ReadRawModifiedDetails结构细节表19定义了ReadEventDetails结构。该参数仅对EventNotifier属性设置为TRUE的对象有效默认值0表示没有最大值读区间的起点。DateTime.MinValue定startTime读区间的终点。DateTime.MinValue定endTime服务器用于确定宜包含哪个HistoricalEve器。该参数应被给出,并且至少需要一个EventField。EventFilter的参数类型是一个可扩展的参数义和使用的方式与IEC62541-4中所规定的受监视数据项的方式相同。该过滤器也规定了作为部分请求而返回的EventFields相反的顺序首先返回最近/最新提供的数据,就好像时间逆向流动一样。如果这三个部分都被规存在多于numValuesPerNode个事件,那么只有每个节点的numValuesPerNode个事件会和如果节点不支持所请求的TimestampsToReturn,那么操作应返回的StatusCode为Bad表20定义了ReadRawModifiedDetails结构。这三个参数numValuesPerNode、startTime、规定了用于执行一次“原始”或者“修改的”历史值读取的TRUE用于读取修改值功能,FALSE用于读区间起点。若没有规定开始时间,则设置DateTime.表20(续)读区间终点。若没有规定结束时间,则设置DateTime.认值0表示没有最大值。于startTime和endTime的相对值。如果numValuesPerNode是0,那么范围内的所有数值将会被返回。DateTime.MinValue的默认值(IEC62541-6)是在startTime或endTime没有规定的情况下startTime和endTime允许设置为相同。这样就允许客户端只请求单一值。当startTime和存在多于numValuesPerNode个值 相关的StatusCode内设置ExtraData比特。如果服务器包含与一个数值相关的额外信息,那么如果节点不支持请求的TimestampsToReturn,那么操作应返回的StatusCode为Bad_如果对于一个给定节点的时间范围内存在多于numValuesPerNode个值,那么只有每个节点的一批numValuesPerNode个值的客户端宜再次调用带有continuationPoint集的ReadRaw。如果如果节点不支持请求的TimestampsToReturn,那么操作应返回的StatusCode为Bad_表21定义了ReadProcessedDetails结构。表21ReadProcessedDeta返回聚合值的时间间隔。0值表示没有定义PHistoryAggregate对象的NodeId,表示当检历史时所用的聚合列表。见IC62541-13聚合配置结构有关HistoryAggregateType参数的可能NodeId值的更多细节见IEC62541-13。该结构用来计算历史数据库中一个或多个HistoricalDataNodes的规定时间域的聚合值、质量和数据时间戳。时间域被分为持续ProcessingInterval的多个时间间隔。通过利用在下一个请求域由startTime、endTime和ProcessingInterval定义。三个参数均应规定。如果endTime小aggregateType[]参数允许一个客户端向每个被请求NodeId请例如,为请求NodeIdFIC101、FIC102最小聚合,及NodeIdFIC103最小和最大聚合,会要求NodeIdFIC103在NodesToRead数组请求参数中出现2次,如:NodesToRead[]如果聚合数组不匹配NodesToReaAggregateConfiguration参数允许客户端超驰由AggregateConfiguration对象所提供的在每一调置设定的能力,则应返回的StatusCode为Bad_AggregateConfigurationRejected。如果聚合对节点无端的超时时间提示的时间来计算一个聚合结果。那么服务器可能返回一个带有连续点的0结果,并允聚合特定案例的处理见IEC62541-13。表22定义了ReadAtTimeDetails结构。ReadAtTimeDetails结构从历史数据库中读取一个或多个HistoricalDataNodes的特定时间戳的插值遵循与IEC62541-13所概括的标准插值聚合相同的规则。如果useSimpleBounds标志位是True,同时又需要插值,那么将使用SimpleBounds来计算数如果节点不支持请求的TimestampsToReturnis,则操作应返回的StatusCode为Bad_TimestampNotSupported。HistoryRead服务根据是否要一个节点的属性值或历史事件的请求而返回不同的数据类型。表24定义了用于当IsReadModified=True时,在HistoryRead中返回的有定义,则应返回Null有定义,则应返回Null数据项的修改类型表26定义了HistoryUpdate枚举。INSERT_1表27定义了PerformUpdateType枚举。INSERT_1数是一种可扩展参数,它规定了执行的功能以及特定于该功能的细节。可扩展参数定义见本功能为一个或多个HistoricalDataNodes,在规定的替换数据本功能为一个或多个HistoricalDataNodes,在规定的表28(续)本功能为一个或多个HistoricalDataNodes,在规定的到历史数据库中。本功能为一个或多个HistoricalDataNodes,在规定的化历史数据或注释到历史数据库中。变量的值是由DataValue数据类型替换数据本功能为一个或多个HistoricalDataNodes,在规定的变量的值是由DataValue数据类型本功能为一个或多个HistoricalDataNodes,在规定的变量的值是由DataValue数据类型本功能为一个或多个HistoricalDataNodes,在规定的变量的值是由DataValue数据类型本功能为一个或多个HistoricalEventNodes插入新的事件到历史数据库中替换事件本功能为一个或多个HistoricalEventNodes替换在原有事件中某些字段的值到历史数据库中本功能为一个或多个HistoricalEventNodes插入新事件或替换原有事件到历史数据库中本功能为一个或多个HistoricalDataNodes从历史数据库中删除在规定的时间域内所有的值某些历史数据库可能在同一时间戳上存储了多个值多个HistoricalDataNodes,删除规定时间戳上规定的值和质量本功能为一个或多个HistoricalDataNodes,从历史数据库中删除规定时间本功能为一个或多个HistoricalEventNodes,从历史布请求,而服务器处理请求,并具有支持更新条目的能力。对于支持历史更新的属性的描述表29定义了UpdateDataDetails结构。表29UpdateDataDetails该值确定执行哪一个动作:插入、替换或更新。值INSERT_1设置performInsertReplace=INSERT_1,则为一个或多个HistoricalDataNodes在规定的时间戳StatusCode应显示为Bad_EntryExists。设置performInsertReplace=REPLACE_2,则为一个或多个HistoricalDataNodes替换历史数据库中规定时间戳的条目。如果在规定的时间戳不存在条目,则新的条应显示为Bad_NoEntryExists。设置performInsertReplace=UPDATE_3,则为一个或多个HistoricalDataNodes插入或替换历当服务器不能表明在某时间戳是否已经有数值时,允许用Good作为单个条目的StatusCode。如果服务器能确定新的条目是否替换了之前已存在的条目,则返回信息宜用Good_EntryInserted或6.8.3UpdateStructureDataDetail表30定义了UpdateStructureDataDetails结构。UpdateStructureDataDet值结构化历史数据提供了描述历史数据库中条目的元在客户端希望替换惟一性准则中的部分参数情况下,结果StatusCode将为Bad_NoEntryExists。设置performInsertReplace=INSERT_1,则为一个或多个HistoricalDataNodes的特性在规定的设置performInsertReplace=REPLACE_2,则为一个或多个HistoricalDataNodes的特性在规定设置performInsertReplace=UPDATE_3,则为一个或多个HistoricalDataNodes的特性,在规定如果在规定的参数下结构化历史数据条目已经存在,则删除原条目为Good。StatusCode应为Bad_NoEntryExists。表31定义了UpdateEventDetails结构。值执行插入事件(见6.8.4.2)执行替换事件(见6.8.4.3)执行更新事件(见6.8.4.4)待插入或更新的事件通知列表(HistoryEventFieldList的定义见6.5.4)历史数据库中。EventFilter的whereClause参数应为空。SelectClause应至少提供下列事件字段:EventType和Time。也推荐提供SourceNode和SourceName字段。如果要求的字段之一没有提供,则statusCode应为Bad_ArgumentsMissing。如果历史数据库不支持规定EventType的归档,则statusCode应为Bad_TypeDefinitionInvalid。如果SourceNode不是事件的有效源,则相关的operationResults条目应为Bad_SourceNodeIdInvalid。如果时间并不处于能被存储的范围之内,则个被忽略的字段的索引包含在symbolicId中,并由一个空格隔开,localizedTExt包含被忽略字段的符号名称。设置performInsertReplace=REPLA包含EventId,该EventId用于找到将被替换的事件。如果没有与所规定的EventId相匹配的条目存在,则不会执行任何替换操作;对于eventData条目的operationResults条目应指示与

温馨提示

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

评论

0/150

提交评论