网站地图 | Tags | 热门标准 | 最新标准 | 订阅

GB/T 33905.2-2017 智能传感器 第2部分:物联网应用行规

  • 名  称:GB/T 33905.2-2017 智能传感器 第2部分:物联网应用行规 - 下载地址2
  • 下载地址:[下载地址2]
  • 提 取 码
  • 浏览次数:3
下载帮助: 发表评论 加入收藏夹 错误报告目录
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
新闻评论(共有 0 条评论)

资料介绍

  ICS 29 . 020 L 10

  中 华 人 民 共 和 国 国 家 标 准

  GB/T 33905. 2—2017

  智能传感器 第 2 部分:物联网应用行规

  Intelligentsensor—part2:Applicationprofileforinternetofthings

  2017-07-31 发布 2018-02-01 实施

  中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会

  发

  布

  GB/T 33905 . 2—20 17

  GB/T 33905 . 2—20 17

  GB/T 33905 . 2—20 17

  前 言

  GB/T 33905《智能传感器》分为 5 部分:

  — 第 1 部分:总则;

  — 第 2 部分:物联网应用行规;

  — 第 3 部分:术语;

  — 第 4 部分:性能评定方法;

  — 第 5 部分:检查和例行试验导则。

  本部分是 GB/T 33905 的第 2 部分。

  本部分按照 GB/T 1 . 1—2009 给出的规则起草。

  本部分由中国机械工业联合会提出。

  本部分由全国工业过程测量控制和自动化标准化技术委员会(SAC/TC 124)归口 。

  本部分起草单位:福建上润精密仪器有限公司、机械工业仪器仪表综合技术经济研究所、北京国电智深控制技术有限公司、山东省计算中心(国家超级计算济南中心)、济南市长清计算机应用公司、重庆市伟岸测器制造股份有限公司、施耐徳电气(中国)有限公司。

  本部分主要起草人:林仁祥、梅恪、田雨聪、李刚、岳宗龙、唐田、杜佳琳、戈剑、柳晓菁、王成城、周鸣乐、欧文辉、汪付强。

  GB/T 33905 . 2—20 17

  智能传感器 第 2 部分:物联网应用行规

  1 范围

  GB/T 33905 的本部分规定了物联网应用使用的智能传感器、执行器、二进制设备以及其他装置用于操作、调试、维护和诊断的基本设备参数集。 本部分还规定了抽象语法规范、应用程序传输语法和数据类型报告。

  本部分适用于物联网中应用的智能传感器。 本部分也适用于其他类型的传感器(前提是预先对其差异进行考虑)。

  2 规范性引用文件

  下列文件对于本文件的应用是必不可少的。 凡是注 日期的引用文件,仅注 日期的版本适用于本文件 。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

  ISO/IEC 10646 信息技术 通用多重八位组编码字符集[Information techonlogy—Universal co-

  ded character set( UCS)]

  3 术语和定义

  下列术语和定义适用于本文件。

  3.1

  兼容性 compatibility

  当设备按照本部分的规定而设计时,无需加以改动即可与其他设备相互连接和使用的程度(例如:机械、电气、功能)。

  3.2

  接口 interface

  系统与另一系统(或系统的某些部分)之间的公共边界,信息通过该公共边界传递。

  3.3

  接口系统 interfacesystem

  实现设备之间通信的一组机械、电气和功能元件。

  3.4

  本地控制 localcontrol

  设备接受指令的一种方式,即通过其本地(面板或背板)控制来接受以使设备能执行各种任务。

  3.5

  远程控制 remotecontrol

  设备接受的一种方式,即通过其电气接口连接来接受以使设备能执行不同的任务。

  3.6

  可编程 programmable

  设备的一种特性,即能接收指令来改变其内部程序以执行一个或多个特定任务。

  GB/T 33905 . 2—20 17

  3.7

  系统 system

  由相互作用、相互依赖的若干组成部分结合而成的,具有特定功能的有机整体。 而且这个有机整体又是其从属的更大系统的组成部分。

  3.8

  信号 signal

  信息的物理表现。

  注:在本部分中,这是指通常在一般意义下称之为“信号”的一种狭义的定义,并在下文中都是指数字式电信号而言。

  4 物联网应用规范

  4 . 1 概述

  本部分主要面向由测量、激励以及与控制器互连的传感器组成的物联网系统,也可直接用于中小规模的物联网系统。 本部分规定了一套形式化描述方法,以便于智能传感器在物联网中进行信息交换,描述方法涉及:语法结构、公共数据结构、状态信息、组态方式等。 本部分以典型智能传感器的功能描述为基础,可标准化同一系统中不同制造商设备的行为。

  本部分除定义了各种与智能传感器相关的信息外,还对传感接口功能进行了扩展和进一步解释,但同时保持了标准的兼容性。

  应用本部分并不能百分之百地覆盖用户在应用层次上对系统兼容性的要求。

  注:本部分规定之外的传感器类型,可参照近似类型进行自定义。

  4 . 2 对象模型

  对象模型体现智能传感器的虚拟构架。 智能传感器被模型化为对象的集合。 每一个对象是相关的服务、属性和行为的集合。 服务是对象执行的程序。 属性是由数据体现的、量化的对象的特征。 对象的行为是指示对象如何响应特殊事件。

  4 . 3 标识对象(类代码 =0x01 )

  标识对象应当提供关于设备的标志和一般信息。 标识对象应出现于所有的设备中。 标识对象应支持如表 1 规定的实例属性。

  表 1 标识对象实例属性

  GB/T 33905 . 2—20 17

  表 1(续)

  设备类型见表 2 。

  GB/T 33905 . 2—20 17

  表 2 设备类型

  4 . 4 寄存器对象(类代码=0x02)

  寄存器对象被赋地址范围从 1 bit 到 64 kbit。 它可以做为一个生产者(输入)寄存器或者用户(输出)寄存器。

  寄存器对象支持表 3 规定的实例属性。

  GB/T 33905 . 2—20 17

  表 3 寄存器对象实例属性

  4 . 5 离散的输入点对象(类代码=0x03)

  离散的输入点(DIP)对象模拟了产品中的离散输入。 在应用中,对象可以被用于简单的 toggle 开关的设备或者复杂的离散的 I/O 控制设备。 离散的输入点对象应生产数据到网络上。 离散的输入点接口是实际的输入点,比如开关或者 screw终端。 输入应当被采样并且数据被存储在对象的值属性中。离散的输入值的采样应通过外部命令被触发。

  离散的输入点对象支持表 4 规定的实例属性。

  表 4 离散的输入点对象实例属性

  GB/T 33905 . 2—20 17

  4 . 6 离散的输出点对象(类代码=0x04)

  离散的输出点 (DOP)对象是产品中的离散输出的模型化。 输出可被外界设备使用。

  离散的输出点接口是实际的输出点,例如继电器或者 LED。 输出能够从这个对象的值属性中读出并且被应用到输出端子(比如螺丝端子)。

  离散的输出点对象支持表 5 规定的实例属性。

  表 5 离散的输出点对象实例属性

  GB/T 33905 . 2—20 17

  4 . 7 模拟输入点对象(类代码=0x05)

  模拟输入点(AIP)对象是产品中模拟输入的模型化。 它可以用于如:单个模拟点那样简单的应用,也可以用于如:模拟 I/O控制设备那样复杂的应用。 术语“输入”是从网络的角度定义的。 一个输入应向网络生产数据。

  模拟输入点接口是接到实际的输入点,比如热电偶或者压力传感器。 采样输入并且将数据储存在对象的 VALUE(值)属性中。 模拟输入值的取样是由外部命令(输入状态改变,循环数据触发器等)触发的。模拟输入对象应支持表 6 规定的类属性。

  表 6 模拟输入点对象实例属性

  GB/T 33905 . 2—20 17

  4 . 8 模拟输出点对象(类代码=0x06)

  模拟输出点(AOP)对象是产品中模拟输出的点级属性和服务的模型化。 它可以被用于模型化电压输出或者模拟 I/O 控制设备的部件。 术语“输出”是从网络的角度定义的。 一个输出将被来 自 网络的数据使用。

  模拟输出点接口是实际的输出点,比如电机驱动的阀(MOV)或者线性定位器。 它从这个对象的值属性读取输出,并且施加到输出端子(比如螺丝端子)。

  模拟输出点对象应支持表 7 规定的类属性。

  表 7 模拟输出点对象实例属性

  GB/T 33905 . 2—20 17

  表 7(续)

  4 . 9 物体感知对象(类代码=0x07)

  该对象感知现实世界目标的存在或不存在。

  物体感知对象支持的实例属性见表 8 。

  表 8 物体感知对象实例属性

  GB/T 33905 . 2—20 17

  表 8(续)

  4 . 10 参数对象(类代码 =0x08)

  参数对象提供为设备配置数据用的已知公用接口 。该对象也提供对设备每个单独配置的参数进行定义及描述所必需的所有信息。

  该对象提供参数的全部描述使设备能充分标识可配置的参数,它包括最小及最大值,以及可供人读出描述参数的文本信息串。

  对每个可配置参数都有一个该对象类的实例,它需要或期望有一个公用配置的接 口 。 每个实例都被链接到可配置参数中的一个,它可能是设备内其他对象之一的一个属性。 变更参数对象的参数值属性(实例参数 1),将通过链接路径属性(属性值由参数对象实例指出)示出属性值内产生相应的变化。

  参数对象只支持示于表 9 中的实例属性。

  表 9 参数对象实例属性

  GB/T 33905 . 2—20 17

  表 9(续)

  GB/T 33905 . 2—20 17

  表 9(续)

  4 . 1 1 参数组对象(类代码 =0x09)

  参数组对象将在设备内对参数组进行标识并提供访问,参数组对象也将对有关参数集[设置(Set)]提供方便的访问。

  参数组对象支持如表 10 所规定的实例属性。

  表 10 参数组对象实例属性

  GB/T 33905 . 2—20 17

  4 . 12 组对象(类代码 =0X0A)

  组对象与其他对象绑定在一起,具有代表性的有离散与模拟,含有 AIP、AOP、AIG、AOG、DIP、 DOP、DOG或 DIG。 对象绑定成组将支持同一属性与服务,它们在产品中应用于所有绑定的对象(输入与输出二者,离散与模拟二者)。

  在上电时,建立组的一览表以及/或将点捆绑成组,作为绑定的一览表是静态的而且是组的 Get-

  only属性 。

  组对象可应用于:

  — 在有多个模拟及/或离散输入及输出点以及/或组之间的时候,可共享多个属性。

  — 用可影响所有组内成员的支持服务进行更有效地访问数据。

  组对象支持的实例属性规定于表 11 。

  表 1 1 组对象实例属性

  4 . 13 离散输入组对象(类代码=0X0B)

  离散输入组(DIG)对象应绑定在设备的一组离散输入点上。 绑定到组的所有点应共享包含在组里的所有属性。 如果一个属性被多个离散输入点(DIP) 共享(这些点有同样的属性和同样的属性值),那么这个属性可能包含在一个离散输入组里。 一个离散输入点可能被绑定到多个离散输入组。

  绑定到组的离散输入点列表应在上电时建立,因为绑定列表是静态的,并且是组的 Get-only属性。离散输入组对象可能被使用:

  — 当在许多输入点共享一个单独属性时;

  — 为了更有效地访问数据。

  离散输入组对象应支持表 12 中规定的实例属性。

  GB/T 33905 . 2—20 17

  表 12 离散输入组对象实例属性

  4 . 14 离散输出组对象( 类代码 =0x0c)

  对象应绑定在设备的一组离散输入点上。 绑定到组的所有点应共享包含在组里的所有属性。 如果一个属性被多个离散输出点(DOP)共享,那么这个属性可能包含在一个离散输出组里。 一个离散输出点可能被绑定到多个离散输出组。

  绑定到组的离散输入点列表应在上电时建立,因为绑定列表是静态的,并且是组的 Get-only属性。离散输出组对象可能被使用:

  — 当在许多输出点共享一个单独属性时;

  — 为了更有效地访问数据。

  离散输出组对象应支持表 13 中规定的实例属性。

  GB/T 33905 . 2—20 17

  表 13 离散输出组对象实例属性

  4 . 15 离散组对象(类代码=0X0D)

  离散组(DG)对象应绑定其他的离散对象,包括 DIP、DOP、DIG或 DOG。 绑定到 DG 的对象(输入和输出)应支持同样的属性和服务。

  你可以在上电时建立绑定到 DG 的离散组和/或点的列表,因为绑定列表是静态的,且是 DG 的

  Get-only属性。

  DG对象可被用于:

  — 当一个单独的属性在许多离散输入和输出点和/或组内共享时;

  — 为了更有效地访问数据。

  DG对象应支持表 14 中规定的实例属性。

  GB/T 33905 . 2—20 17

  表 14 离散组对象实例属性

  4 . 16 模拟输入组对象(类代码=0X0E)

  模拟输入组(AIG)对象应绑定在设备的一组模拟输入点上。 绑定到组的所有点应共享包含在组里的所有属性。 如果一个属性被多个模拟输入点(AIP) 共享(这些点有同样的属性和同样的属性值),那么这个属性可能包含在一个模拟输入组里。 一个模拟输入点可能被绑定到多个模拟输入组。

  绑定到组的模拟输入点列表应在上电时建立,因为绑定列表是静态的,并且是组的 Get-only属性。模拟输入组对象可能被使用:

  — 当在许多输入点共享一个单独属性时;

  — 为了更有效地访问数据。

  模拟输入组对象应支持表 15 中规定的实例属性。

  表 15 模拟输入组对象实例属性

  GB/T 33905 . 2—20 17

  表 15(续)

  4 . 17 模拟输出组对象(类代码=0X0F)

  模拟输出组(AOG)对象应绑定在设备的一组模拟输出点上。 绑定到组的所有点应共享包含在组里的所有属性。 如果一个属性被多个模拟输出点(AOP)共享(这些点有同样的属性和同样的属性值),那么这个属性可能包含在一个模拟输出组里。 一个模拟输出点可能被绑定到多个模拟输出组。

  绑定到组的模拟输出点列表应在上电时建立,因为绑定列表是静态的,并且是组的 Get-only属性。模拟输出组对象可能被使用:

  — 当在许多输出点共享一个单独属性时;

  — 为了更有效地访问数据。

  模拟输出组对象应支持表 16 中规定的实例属性。

  GB/T 33905 . 2—20 17

  表 16 模拟输出组对象实例属性

  GB/T 33905 . 2—20 17

  4 . 18 模拟组对象(类代码 =0x10)

  模拟组(AG)对象应绑定其他的模拟对象,包括 AIP、AOP、AIG 或 AOG。 绑定到 AG 的对象(输入和输出)应支持同样的属性和服务。

  绑定到 AG 的模拟组和/或点列表应称为绑定列表。 绑定列表应在上电时建立。 绑定列表是静态

  的,且是 AG对象的 Get-only属性。

  AG对象可被用于:

  — 当一个单独的属性在许多模拟输入和输出点和/或组内共享时;

  — 为了更有效地访问数据。

  AG对象应支持表 17 中规定的实例属性。

  表 17 模拟组对象实例属性

  GB/T 33905 . 2—20 17

  4 . 19 位置传感器对象(类代码 = 0x1 1)

  位置传感器对象(Position Sensor Object)将产品中的绝对位置传感器进行模型化。 对象的行为应扩展基本位置传感器性能,以包括零偏移和位置边界检查(凸轮开关)。

  位置传感器对象接口是为了实现实际传感器硬件,如绝对数字编码器、模拟旋转变压器或其他绝对位置输入设备。

  位置传感器对象应支持表 18 中规定的实例属性。

  表 18 位置传感器对象实例属性

  GB/T 33905 . 2—20 17

  4 . 20 位置控制器的监控对象(类代码=0x12)

  4.20. 1 监视(supervisor)属性

  位置控制器对象应支持表 19 中规定的实例属性。

  表 19 位置控制器的监控对象实例属性

  GB/T 33905 . 2—20 17

  4 . 20 . 2 原点(Home)和指针(Index)属性

  位置控制器对象应支持表 20 中规定的原点(Home)和指针(Index)属性。

  表 20 位置控制器的监控对象原点(Home)和指针(Index)属性

  GB/T 33905 . 2—20 17

  4.20.3 寄存器(Registration)属性

  位置控制器的监控对象应支持表 21 中规定的寄存器(Registration)属性。

  表 2 1 位置控制器的监控对象(Registration)属性

  4.20.4 轴跟随(AxisFollowing)属性

  位置控制器的监控对象应支持表 22 中的轴跟随(Axis Following)属性。

  GB/T 33905 . 2—20 17

  表 22 位置控制器的监控对象轴跟随(AxisFollowing)属性

  4 . 2 1 位置控制器对象(类代码=0x13)

  位置控制器对象应执行控制器输出速度配置的控制,并处理向电动机驱动器单元、限位开关等的输出和从电动机驱动器单元、限位开关的输入。

  位置控制器对象应支持表 23 中规定的 Profile属性。

  表 23 位置控制器对象 profile属性

  GB/T 33905 . 2—20 17

  表 23(续)

  GB/T 33905 . 2—20 17

  表 23(续)

  GB/T 33905 . 2—20 17

  4 . 22 电机数据对象(类代码=0x20)

  本对象提供电机参数数据库的服务。

  电机数据属性应支持表 24 中规定的类属性。

  电机数据实例属性将随着对象所表示的电机类型不同而变化。 因此实例属性 3“电机类型”是必需的 。它的值将决定适用于该电机类型的电机专用属性。 对所有的电机类型,属性 1~5 是相同的。

  表 24 电机数据对象实例属性

  4 . 23 控制监视器对象(类代码=0x14)

  本对象是将电机控制设备系列中各种设备的管理功能模型化。 电机控制设备的行为在表 25 中被描述。 控制监视器对象应支持表 25 所规定的实例属性。

  表 25 控制监督对象实例属性

  GB/T 33905 . 2—20 17

  表 25(续)

  GB/T 33905 . 2—20 17

  表 25(续)

  4 . 24 交流/直流驱动器对象(类代码=0x15)

  交流/直流驱动器对象应对交流或直流驱动器特定的功能(如速度斜率,力矩控制等)模型化。交流/直流驱动器对象应支持表 26 所规定的实例属性。

  GB/T 33905 . 2—20 17

  表 26 交流/直流驱动对象实例属性

  GB/T 33905 . 2—20 17

  表 26(续)

  GB/T 33905 . 2—20 17

  表 26(续)

  GB/T 33905 . 2—20 17

  表 27 交流/直流驱动器对象基本量的名称和单位符号

  5 抽象语法规范

  5 . 1 传输格式规范

  开放系统架构中位于底部的各层,与分散的各功能单元之间用户数据的传输密切相关。 在这些层中,用户数据被简单地看作为八位字节的序列。 然而,应用层实体要求操作的是具有相当复杂程度的数据类型的值。 为了实现应用层和底部各层之间相互独立,数据类型需要以抽象语法符号的形式加以规范。

  运用一个或更多的算法(被称为编码规则)对抽象语法的补充,可以决定承载应用层数据值的底层八位字节的值。 抽象语法与一组传输规则的结合将产生一个具体的传输语法。

  注:本部分的用户需要阅读并理解 GB/T 16262—2006、GB/T 16263—2006、GB/T 15969 . 3 和本部分第 5 章 。 阅读本部分时,请参照这些文档。

  5 . 2 抽象语法符号

  本部分中的数据类型定义应按照 GB/T 16262—2006 抽象语法符号 1(ASN . 1) 的格式书写。 这些类型定义可作为 ASN . 1 中模块“网络数据类型”的一部分。 所以,为了指示这些定义包含于此模块中, ASN . 1 声明的开始部分应写为:

  IOT network DataTypes DEFINITIONS ∷ = BEGIN

  ASN . 1 声明的结束是关键字“END”。

  随后的抽象定义将由控制网络数据类型的集合组成。 此外,为了基于已有的类型扩展或派生新的数据类型,需作出相应的定义规定,并包含在“类型词典”中。

  5 . 3 控制网络数据规范

  符号[typeId]用于直接派生、枚举、子范围和结构化位串数据类型,它意味着标记应从 VariableDic- tionaryEntry条目下的“type”域中取得。

  Network Data ∷ =CHOICE{ElementaryData, DerivedData}

  ElementaryData∷= CHOICE{

  BOOL,

  FixedLengthInteger,

  FixedLengthReal,

  GB/T 33905 . 2—20 17

  AnyTime,

  AnyDate,

  AnyString,

  FixedLengthBitString}

  DerivedData∷= CHOICE {

  DirectlyDerivedData,

  EnumeratedData ,

  SubrangeData,

  StructuredBitStringData,

  ARRAY,

  STRUCT,

  FunctionBlockData }

  DirectlyDerivedData ∷ = [typeId] NetworkData

  EnumeratedData ∷ = [typeId] USINT

  SubrangeData ∷ = [typeId] FixedLengthInteger

  StructuredBitStringData ∷ = [typeId] FixedLengthBitString

  FixedLengthInteger ∷ = CHOICE {SignedInteger, UnsignedInteger} SignedInteger ∷ = CHOICE {SINT, INT, DINT, LINT}

  UnsignedInteger ∷ = CHOICE { USINT, UINT, UDINT, ULINT} FixedLengthReal ∷ = CHOICE { REAL, LREAL}

  AnyTime ∷ = CHOICE { ITIME, TIME, FTIME, LTIME}

  AnyDate ∷ = CHOICE {DATE, TIME_OF_DAY, DATE_AND_TIME} AnyString ∷ = CHOICE {STRING, STRING2}

  FixedLengthBitString∷= CHOICE {BYTE, WORD, DWORD, LWORD} BOOL ∷ = [PRIVATE 1] IMPLICIT BOOLEAN

  SINT ∷ = [PRIVATE 2] IMPLICIT OCTET STRING--1 octet INT ∷ = [PRIVATE 3] IMPLICIT OCTET STRING--2 octets DINT ∷ = [PRIVATE 4] IMPLICIT OCTET STRING--4 octets LINT ∷ = [PRIVATE 5] IMPLICIT OCTET STRING--8 octets USINT ∷ = [PRIVATE 6] IMPLICIT OCTET STRING--1 octet

  UINT ∷ = [PRIVATE 7] IMPLICIT OCTET STRING--2 octets

  UDINT ∷ = [PRIVATE 8] IMPLICIT OCTET STRING--4 octets

  ULINT ∷ = [PRIVATE 9] IMPLICIT OCTET STRING--8 octets REAL ∷ = [PRIVATE 10] IMPLICIT OCTET STRING--4 octets LREAL ∷ = [PRIVATE 11] IMPLICIT OCTET STRING--8 octets STIME ∷ = [PRIVATE 12] IMPLICIT DINT

  DATE ∷ = [PRIVATE 13] IMPLICIT UINT

  TIME_OF_DAY ∷ = [PRIVATE 14] IMPLICIT UDINT

  DATE_AND_TIME ∷ = [PRIVATE 15] IMPLICIT SEQUENCE { time_of_day UDINT,

  date UINT }

  GB/T 33905 . 2—20 17

  STRING ∷ = [PRIVATE 16] IMPLICIT SEQUENCE {

  charcount UINT ,

  stringcontents OCTET STRING} -one octet per character

  BYTE ∷ = [PRIVATE 17] IMPLICIT OCTET STRING--1 octet

  WORD ∷ = [PRIVATE 18] IMPLICIT OCTET STRING--2 octets DWORD ∷ = [PRIVATE 19] IMPLICIT OCTET STRING--4 octets LWORD ∷ = [PRIVATE 20] IMPLICIT OCTET STRING--8 octets STRING2 ∷ = [PRIVATE 21] IMPLICIT SEQUENCE {

  charcount UINT ,

  string2contents OCTET STRING} --2 octets/ character FTIME ∷ = [PRIVATE 22] IMPLICIT DINT

  LTIME ∷ = [PRIVATE 23] IMPLICIT LINT

  ITIME ∷ = [PRIVATE 24] IMPLICIT INT

  STRINGN ∷ = [PRIVATE 25] IMPLICIT SEQUENCE {

  charsize UINT ,

  charcount UINT ,

  stringNcontents OCTET STRING} --N octets/ character SHORT_STRING ∷ = [PRIVATE 26] IMPLICIT SEQUENCE {

  charcount USINT ,

  stringcontents OCTET STRING} -one octet per character

  ARRAY ∷ = SEQUENCE OF NetworkData --All of same base type STRUCT ∷ = SEQUENCE OF NetworkData --May be different types FunctionBlockData ∷ = SET{

  inputs [0] IMPLICIT STRUCT OPTIONAL,

  outputs [1] IMPLICIT STRUCT OPTIONAL,

  controlInputs [2] IMPLICIT STRUCT OPTIONAL,

  controlOutputs [3] IMPLICIT STRUCT OPTIONAL}

  5 . 4 数据类型规范/词典

  对象的定义可以包括定义属性的文字。 属性都应具有对象规范中的数据类型。 属性的数据类型可能是包含于本部分中定义的数据类型,或可能是对于本部分的对象特定的扩展。 下面的定义为数据提供了类型规范,同时也提供了基于已有类型的扩展或派生一个新的数据类型结构。

  Dictionary ∷ = CHOICE {VariableDictionary, TypeDictionary}

  VariableDictionary ∷ = SEQUENCE OF VariableDictionaryEntry VariableDictionaryEntry ∷ = SEQUENCE{

  name AnyString,

  id FixedLengthInteger,

  type TypeID,

  ranges SEQUENCE OF Subrange,--for arrays

  accessPrivilege BOOL {READ_ONLY(0) , READ_WRITE(1)}

  GB/T 33905 . 2—20 17

  TypeID ∷ = OCTET STRING --ASN.1 encoded tag value of the

  --DataTypeSpecification module

  Subrange ∷ = SEQUENCE {

  minValue FixedLengthInteger,

  maxValue FixedLengthInteger}

  TypeDictionary ∷ = SEQUENCE OF TypeDictionaryEntry

  TypeDictionaryEntry ∷ = SEQUENCE {

  name AnyString,

  type TypeID,

  spec DataTypeSpecification}

  DataTypeSpecification ∷ = CHOICE {

  GB/T 33905 . 2—20 17

  constructedData CHOICE {

  }

  AbbreviatedStrucTypeSpec ∷ = UINT

  AbbreviatedArrayTypeSpec ∷ = DataTypeSpecification

  FormalStrucTypeSpec ∷ = SEQUENCE OF DataTypeSpecification

  FormalArrayTypeSpec ∷ = SEQUENCE {

  lowBound [0] IMPLICIT FixedLengthInteger, --rray Lower Bound highBound [1] IMPLICIT FixedLengthInteger, --Array Upper Bound

  dataType DataTypeSpecification }

  ExpandedFixedLenBitStrTypeSpec ∷ = SEQUENCE {

  bitStrType DataTypeSpecification --BYTE, WORD, DWORD, or LWORD

  bitFields [7] IMPLICIT BitFieldDef}

  BitFieldDef ∷ = SEQUENCE OF {

  bitDef [2] IMPLICIT OCTET STRING} --Length is always 2 octets.

  --First octet contains starting

  --Bit Position. Trailing octet

  --contains the number of bits .

  ExpandedStringTypeSpec ∷ = UINT --String Length In Octets

  ExpandedString2TypeSpec ∷ = UINT --String Length In Octets

  AlternateTypeSpec ∷ = CHOICE {

  SubrangeTypeSpec ∷ = SEQUENCE{

  baseType TypeID, --NOTE: minValue and maxValue

  minValue FixedLengthInteger, --shall be within the range

  maxValue FixedLengthInteger} --of baseType values

  GB/T 33905 . 2—20 17

  EnumeratedTypeSpec ∷ = SEQUENCE OF AnyString

  BitNameDefintion ∷ = SEQUENCE {

  bitName AnyString,

  bitNumber USINT}

  FBTypeSpec ∷ = SET{

  FbtElementTypeSpec ∷ = SEQUENCE OF ElementSpec

  ElementSpec ∷ = SEQUENCE {

  name AnyString,

  ypespec ElementTypeSpec} ElementTypeSpec ∷ = CHOICE {

  [0] IMPLICIT TypeID,

  [1] IMPLICIT SubrangeTypeSpec,

  [2] IMPLICIT EnumeratedTypeSpec,

  [3] IMPLICIT FormalArrayTypeSpec,

  [4] IMPLICIT ExpandedStringTypeSpec,

  [5] IMPLICIT ExpandedString2TypeSpec}

  下面的 END声明将结束 ASN . 1 模块的定义。

  END

  6 应用程序传输语法:紧凑型编码

  6 . 1 紧凑型编码

  本章讲述了第 5 章数据类型值中定义的数据类型,在控制网络上被编码/传输时可采用的方法。 传输语法由抽象的语法定义和一组特定的编码规则组成。 对于应用程序用户数据,应单独定义一组编码规则(紧凑型编码),这就是紧凑型传输语法。

  紧凑型编码规则应首先遵从 ASN . 1 8825 中定义的编码规则。 然后它可以采用最优化规则,从最外部的服务数据单元(SDU)开始对每一个连续打包服务数据单元(SDU) 进行处理。 紧凑型编码规则应定义一个更高效的编码机制以减少在设备间传输的信息量。

  紧凑型编码值与 ASN . 1 编码值产生的差异在于删除了描述信息类型和长度的域。 ASN . 1 编码值中的标签(TAG)和长度(LENGTH)元素不应在控制网络上被传送。 而且,紧凑型编码规则指出其八位字节排序规则和 ASN . 1 中所见是相反的。

  根据下节列出的条件,可以运用通用规则将 ASN . 1 编码值转化成紧凑型编码值。 通用规则如下:

  — 去除标识符八位字节;

  GB/T 33905 . 2—20 17

  — 去除 ASN . 1 规定的“标签”八位字节;

  — 去除长度八位字节;

  — 去除 ASN . 1 规定的“长度”八位字节;

  — 倒转多八位字节的字节顺序。

  6 . 2 紧凑型编码的约束条件

  使用紧凑型编码的变量值的表示可能会有以下限制:

  — 变量类型应为定长并且没有条件域或选择域;

  — 已知变量的编码应用从该变量类型规范中给出的一个恒定八位字节码表示。

  6 . 3 举例

  6 . 3 . 1 布尔编码

  布尔编码用单个八位字节来表示,见表 28 。

  表 28 BOOLEAN(布尔)编码

  一个 FALSE布尔值可由表 29 表示。

  表 29 BOOL(布尔)值紧凑型编码的例子

  6 . 3 . 2 符号整型编码

  符号整型编码的表示见表 30 。

  表 30 signedInteger(符号整型)值的编码

  表 31 举例说明了一个其值为 0x12345678 的双整型变量的编码。

  表 3 1 signedInteger(符号整型)值的紧凑型编码举例

  GB/T 33905 . 2—20 17

  6 . 3 . 3 无符号整型编码

  无符号整型编码的表示见表 32 。

  表 32 unsignedInteger(无符号整型)值的编码

  表 33 举例说明了一个其值为 0xAABBCCDD 的无符号双整型变量的编码。

  表 33 unsignedInteger(无符号整型)的紧凑型编码举例

  6 . 3 . 4 定长实数型编码

  定长实数型编码的表示见表 34 。

  表 34 FixedLengthReal(定长实数)值的编码

  表 35 举例说明了一个其值为 Float1= 10 . 0 的实数变量的编码[此值采用了 GB/T 15969 . 3 中的符号。在 ASN.1 中此值 ={ ′41200000 H} ,在 IEEE 中此值 =(1.25 × 23 , 指数是 130(以 127 为基),小数

  是 25)] 。

  表 35 REAL(实数)值的紧凑型编码举例

  表 36 举 例 说 明 了 一 个 其 值 为 Float2 = - 10 . 0 的 长 实 数 变 量 的 编 码[在 ASN. 1 中 此 值 = { C059000000000000′H} , 在 IEEE 中此值=(1.562 5×26 , 指数是 1 029(以 1 023 为基),小数是 5 625)]。

  表 36 LREAL(长实数)值的紧凑型编码举例

  GB/T 33905 . 2—20 17

  6 . 3 . 5 时间编码

  时间编码的表示见表 37 。

  表 37 时间值的编码

  6 . 3 . 6 字符串编码

  STRING、STRING2、STRINGN 和 SHORT_STRING 的紧凑型编码的例子如下。注:根据国际通常的字符串要求,对用户提供的字符串数据,其首选字符串类型是 String2。

  表 38 给出了一个 STRING值的编码的通用例子。

  表 38 STRING值

  表 39 给出了一个 STRING2 值的编码的通用例子。

  表 39 STRING2 值

  表 40 给出了一个 STRINGN值的编码的通用例子。

  表 40 STRINGN值

  表 41 给出了一个 SHORT_STRING值的编码的通用例子。

  表 4 1 SHORT_STRING值

  GB/T 33905 . 2—20 17

  表 42 举例说明了一个其内容为“Mill”的字符串变量的编码。 所有字符串变量的编码例子都有介绍 。字符编码在 ISO/IEC 10646 中有规定。 用十六进制表示 8 位编码相当于{′4D696C6C′H} 。

  表 42 STRING值的紧凑型编码举例

  表 43 将“Mill”作为 STRING2 类型编码。

  表 43 STRING2 值的紧凑型编码举例

  表 44 将“Mill”作为 SHORT_STRING类型编码。

  表 44 SHORT_STRING类型

  6 . 3 . 7 定长位串编码

  下面给出了 BYTE、WORD、DWORD、LWORD数据值的紧凑型编码的例子。 图 1 举例说明了有关定长位串紧凑型编码的比特排列规则。

  图 1 定长位串紧凑型编码的比特排列规则

  图 2~图 5 举例说明了 BYTE、WORD、DWORD、LWORD 的编码。

  存储器中的比特 7 . . . . . . 0

  00001111

  紧凑型编码 BYTE 00001111 或 0x0F

  图 2 BYTE定长字符串紧凑型编码的例子

  GB/T 33905 . 2—20 17

  存储器中的比特 15 ..............0

  00001111 11001111

  紧凑型编码 WORD 11001111 00001111 或 0xCF0F

  图 3 WORD定长字符串紧凑型编码的例子

  存储器中的比特 31 ................................0

  00001111 11001111 10110110 00111110

  紧凑型编码 DWORD 00111110 10110110 11001111 00001111 或 0x3EB6CF0F

  图 4 DWORD定长字符串紧凑型编码的例子

  6 . 3 . 8 数组编码

  6 . 3 . 8 . 1 一维数组编码

  数组编码应采用对每个元素的数据类型的编码规则,并且连接组成数组的元素。 数组元素的编码值应按照相应 ASN . 1 类型或变量规范规定的相同顺序来编码。 这些元素可以是任何数据类型。

  对控制网络中一维数组的定义,ASN . 1 的样式是:

  ARRAY ∷ = SEQUENCE OF { array_dimension_low_bound,

  array_dimension_high_bound, NetworkData

  }

  假定如下数组定义∷

  ARRAY1 ∷ = SEQUENCE OF {array_dimension_low_bound : = 0 ,

  array_dimension_high_bound : = 1 , UINT}

  在这个数组定义中插入 UINT值{1,2} ,就产生表 45 所示的编码。

  表 45 一维 ARRAY(数组)紧凑型编码的例子

  6 . 3 . 8 . 2 二维数组编码

  ARRAY ∷ = SEQUENCE OF { array_dimension_low_bound, array_dimension_high_bound,

  GB/T 33905 . 2—20 17

  SEQUENCE OF { array_dimension_low_bound,

  array_dimension_high_bound, NetworkData } }

  6 . 3 . 8 . 3 三维数组编码

  ARRAY ∷ = SEQUENCE OF { array_dimension_low_bound,

  array_dimension_high_bound,

  SEQUENCE OF { array_dimension_low_bound,

  array_dimension_high_bound,

  SEQUENCE OF { array_dimension_low_bound,

  array_dimension_high_bound, NetworkData } } }

  由于控制网络数据会包含基本数据或派生数据,所以在传送数组的值之前需要定义一种新的类型或变量规范。

  多维数组在传输时应被视为一维数组。 数组元素的次序通过端节点遵循的打包/拆包顺序予以保持 。遵循该次序应可以访问数组第 N维,也可以访问其他维的所有值。

  这可以通过以下方法完成,首先将所有维度设定到它们的起始索引值来访问数组。 此后第 N 维沿着其所有的索引值递增。 当第 N 维度的索引值到达终点时,递增第(N-1) 维度,同时第 N 维设定到起始索引值。 这一过程不断重复,直到所有数组维度达到索引范围的终点。 这样数组的结果就被打包成一维数组放到报文缓冲器中。 采用同样的步骤可以将一维数组拆包成多维数组。

  下面所示的数据流为二维数组按照紧凑型编码规则打包成一维数组时情形,产生表 46 所示的编码。

  ARRAY1 [0 . . 1 , 0 . . 2] of UINT : = { { 1 , 2 , 3 } ,

  { 4 , 5 , 6 } }

  表 46 多维 ARRAY(数组)紧凑型编码的例子

  6 . 3 . 9 结构编码

  结构编码应对每个元素采用数据类型的编码规则,连接这些元素以组成结构。

  结构元素的编码值应按照相应 ASN . 1 类型或变量规则规定的相同顺序来编码。 这些元素可以是任何数据类型。

  STRUCT ∷ = SEQUENCE OF NetworkData -可能是不同类型数据。

  由于控制网络数据会包含基本数据或派升数据,所以在传送结构的值之前需要定义一种新的类型或变量规范。

  假设如下结构定义:

  newStruct ∷ = SEQUENCE { BOOL, UINT, DINT}

  在这个结构中插入值 {TRUE, ′1234 H ,′56789ABC′H} ,就产生表 47 所示的编码。

  表 47 STRUCTURE( 结构)紧凑型编码的例子

  GB/T 33905 . 2—20 17

  6 . 3 . 10 复杂编码数据格式

  6 . 3 . 10 . 1 举例

  下面的例子说明了更复杂的数据格式应怎样来打包。 例 1 显示结构数组的打包。 例 2 说明了带有数组元素的结构怎样来打包。

  6 . 3 . 10 . 2 例 1 :结构中数组的编码

  STRUCT1 ∷ = SEQUENCE OF {

  UINT ele1 ;

  USINT ele2 ;

  USINT ele3 ;

  USINT ele4 ;

  UINT ele5

  }

  ARRAY1 [ 0 . . 1 , 0 . . 2 ] of STRUCT1 : = {

  { { 1 , 2 , 3 , 4 , 5 } , { 6 , 7 , 8 , 9 , 10 } ,

  { 11 , 12 , 13 , 14 , 15 } } ,

  { { 15 , 14 , 13 , 12 , 11 } , { 10 , 9 , 8 , 7 , 6 } , { 5 , 4 , 3 , 2 , 1 } } }

  得出如下数据流:

  [01][00][02][03][04][05][00] [06][00][07][08][09][0A][00]

  [0B][00][0C][0D][0E][0F][00] [0F][00][0E][0D][0C][0B][00]

  [0A][00][09][08][07][06][00] [05][00][04][03][02][01][00]

  6 . 3 . 10 . 3 例 2:带有数组元素的结构的编码

  STRUCT2 ∷ = SEQUENCE OF {

  UINT ele1 ;

  ARRAY [ 0..2 ] of USINT array2 ;

  UINT ele5 ;

  }

  STRUCT2 : = { 1 , { 2 , 3 , 4 } , 5 }

  得出如下数据流:

  [01][00] [02][03][04] [05][00]

  7 数据类型报告

  7 . 1 对象数据描述

  为了报告一种特定属性的数据类型,或将实际数据和类型信息一起传送,对象可以选择执行一种机制 。本章定义了传送数据类型信息的方法。

  数据类型信息的规范按控制网络定义的优选法,利用 GB/T 16262—2006 和 GB/T 16263—2006

  中规定的 ASN.1 的方法论,编码在本部分 5.4 —数据类型规范/词典中规定的 DataTypeSpecification

  GB/T 33905 . 2—20 17

29141439429
下载排行 | 下载帮助 | 下载声明 | 信息反馈 | 网站地图  360book | 联系我们谢谢