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

GB/T 18759.5-2016 机械电气设备 开放式数控系统 第5部分:软件平台

  • 名  称:GB/T 18759.5-2016 机械电气设备 开放式数控系统 第5部分:软件平台 - 下载地址2
  • 下载地址:[[下载地址1]][[下载地址2]]
  • 提 取 码
  • 浏览次数:3
下载帮助: 发表评论 加入收藏夹 错误报告目录
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
新闻评论(共有 0 条评论)

资料介绍

  ICS 29. 020 J 07

  中 华 人 民 共 和 国 国 家 标 准

  GB/T 18759.5—2016

  机械电气设备 开放式数控系统

  第 5 部分 :软件平台

  Electricalequipmentofmachines—Open numericalcontrol

  system—Part5 : Softwareplatform

  2016-04-25发布 2016-11-01实施

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

  发

  布

  GB/T 18759.5—2016

  前 言

  GB/T 18759《机械电气设备 开放式数控系统》分为如下几个部分 :

  — 第 1部分 :总则 ;

  — 第 2部分 :体系结构 ;

  — 第 3部分 :总线接口与通信协议 ;

  — 第 4部分 :硬件平台 ;

  — 第 5部分 :软件平台 ;

  — 第 6部分 : 网络接口与通信协议 ;

  — 第 7部分 :通用技术条件 ;

  — 第 8部分 :试验与验收 。

  本部分为 GB/T 18759的第 5部分 。

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

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

  本部分由全国工业机械电气系统标准化技术委员会(SAC/TC231)归 口 。

  本部分负责起草单位 :沈阳高精数控技术有限公司 、国家机床质量监督检验中心 。

  本部分参加起草单位 : 中国科学院沈阳计算技术研究所有限公司 、广州数控设备有限公司 、北京凯恩帝数控技术有限责任公司 、北京航天数控系统有限公司 、大连光洋科技工程有限公司 、武汉华中数控股份有限公司 、上海交通大学 、北京航空航天大学 、山东大学 、浙江大学 、沈阳机床(集团)有限责任公司 、浙江凯达机床股份有限公司 、北京易能立方科技有限公司 。

  本部分主要起草人 :于东 、黄 祖 广 、尹 震 宇 、胡 毅 、胡 天 亮 、杨 洪 丽 、王 健 、杨 堂 勇 、冯 冬 芹 、薛 瑞 娟 、宋宝 、王芹 。

  机械电气设备 开放式数控系统

  第 5 部分 :软件平台

  1 范围

  本部分规定了机械电气设备开放式数控系统软件平台的构造方式及基本结构 , 为开放式数控系统软件平台的分析 、设计及实现提供参考框架 ,满足机械电气设备数控系统开放及互操作要求 。

  本部分适用于金属加工机械 、纺织机械 、印刷机械 、缝制机械 、塑料和橡胶机械 、木工机械等电气设备用的开放式数控系统 。其他工业机械设备用的开放式数控系统亦可参照执行 。

  2 规范性引用文件

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

  MOD)

  3 术语和定义、符号及缩略语

  3. 1 术语和定义

  下列术语和定义适用于本部分 。

  3. 1. 1

  开放式数控系统 open numericalcontrol(ONC)system

  应用软件构筑于遵循公开性 、可扩展性 、兼容性原则的系统平台之上的数控系统 ,使应用软件具备可移植性 、可操作性和人机界面的一致性 。

  [GB/T 18759. 1—2002,3. 1] 3. 1.2

  系统平台 system platform

  由硬件平台和软件平台组成的用于运行数控应用软件对运动部件实施控制的基础部件 , 与数控系统其他部件一起 ,实现对机械的操作控制 。

  [GB/T 18759. 1—2002,3. 3] 3. 1.3

  硬件平台 hardwareplatform

  软件平台和应用软件运行的基础部件 ,处于基本体系结构的最底层 。

  GB/T 18759.5—2016

  [GB/T 18759. 1—2002,3. 4] 3. 1.4

  软件平台 softwareplatform

  应用软件运行的基础部件 ,处于基本体系结构的硬件平台和应用软件之间 。

  [GB/T 18759. 1—2002,3. 5] 3. 1.5

  应用 application

  用来具体解决一种数控加工过程中问题的软件功能单元 。

  注 : 一个应用可以驻留在一个或多个装置之间 ,而且可以与其他应用进行通信 。

  [GB/T 19769. 1—2005,1. 3. 6] 3. 1.6

  应用软件 application software

  为解决专门领域内的 ,非计算机本身问题的软件 。

  [GB/T 18759. 1—2002,3. 6] 3. 1.7

  装置 device

  在一个特定活动环境和由其接口界定的范围内 ,具有执行一个或多个指定功能能力的独立物理实体 。一个开放式数控系统(ONC)是一组装置的集合 ,装置中包含功能组件 。

  3. 1. 8

  功能组件 function component

  对其运行具有独立控制性的功能单元 ,作为包含在一个装置的功能单元来考虑 ,而且对于应用提供各种服务包括算法调度与执行 。

  3. 1.9

  功能块(功能块实例) function block(function block instance)

  软件组成的不可分割的功能单元 ,其名字是由相应功能块类型指定的数据结构和相关操作名字的拷贝 。

  3. 1. 10

  基本功能块类型 basic function block type

  功能块类型中不可再分解成其他功能块 ,并且可利用执行控制图(ECC) 来控制其算法执行的功能块类型 。

  3. 1. 11

  组合功能块 composite function block

  用在组合功能块类型算法技术规范中的功能块实例 。

  3. 1. 12

  组合功能块类型 composite function block type

  功能块类型的一种 ,其算法和算法执行的控制是以组件功能块 、事件和变量的互连来表达的功能块类型 。

  3. 1. 13

  服务接口功能块 service interface function block

  功能块中的一种 ,为应用(application)提供一种或多种基于原语映射的服务 ,包括 : 映射到事件输入 、事件输出 、数据输入 、数据输出等 。

  3. 1. 14

  执行控制图 execution controlchart;ECC

  用来对功能块的多个事件的输入 、输出之间的因果关系的图形或文字的表达方式 ,这些表达方式包括 :功能块算法的执行控制状态 、执行控制转换 、执行控制动作等 。

  3. 1. 15

  通信功能块 communication function block

  服务接口功能块的一种 ,它代表在应用和功能组件的 “通信映射功能 ”之间的接 口 。

  3. 1. 16

  管理功能块 managementfunction block

  功能块的一种 ,其首要功能是对在一个功能组件范围内的应用进行管理 。

  3. 1. 17

  中间件 middleware

  一种独立的系统软件或服务程序 ,实现数控系统基本功能并提供一组应用编程接口给上层应用软件调用 。

  3. 1. 18

  实时操作系统 real-timeoperatingsystem

  保证在一定时间限制内完成特定功能的操作系统 。

  3. 1. 19

  应用编程接口 application program interface

  预先定义的一些函数接 口 ,应用软件可以通过调用该接口实现对系统平台功能与资源的利用 。

  3.2 符号及缩略语

  下列符号和缩略语适用于本文件 。

  4 基本要求

  4. 1 概述

  开放式数控系统(ONC)的软件平台 ,处于开放式数控系统应用软件和开放式数控系统硬件平台之间 ,主要由应用编程接口 、中间件 ,实时操作系统等部分构成 ,为开放式数控系统应用软件提供实时性 、可靠性 、安全性的系统服务及编程接 口 ,满足开放式数控系统应用软件的互操作及开放性要求 。

  本部分在开放式数控系统基本结构的基础上(见 GB/T 18759. 1—2002及 GB/T 18759. 2—2006) ,对软件平台基本体系结构 , 以及所包含的应用编程接口 、中间件 、实时操作系统功能特征 、配置管理及通信要求加以规范 ,并在附录中给出应用相关设计示例 ,但并不对最终用户软件开发加以具体限制 , 以满

  足现有国际 、国内标准及数控系统的开放性设计要求 。

  本部分只规定开放式数控系统的控制器(数控装置)软件平台规范 ;对控制器外部的驱动器 、I/O设备和最终用户开发的软件不做限制 ;此外 ,本部分不对操作系统和通信系统作具体规定 ,凡是采用符合国际标准 、国家标准和事实标准的操作系统和通信系统都被视为符合本部分的要求 。

  4.2 基本结构

  开放式数控系统软件平台由应用编程接口 、中间件和实时操作系统组成(如图 1 所示) 。应用编程接口(API)为开放式数控系统应用软件提供独立于硬件平台的系统调用接口及运行环境支撑 , 实现数控系统应用软件对系统平台功能调用及资源访问 ; 中间件通过功能组件及功能模块的方式实现运动控制 、总线驱动 、数学库等功能模块及组件 ,为软件平台提供数控控制功能应用编程接口的功能的具体实现 ;实时操作系统通过为上层提供 POSIX等调用 ,实现对操作系统资源及硬件平台资源的管理及访问 ,满足开放式数控系统应用软件的互操作及开放性要求 。

  图 1 ONC 系统基本体系结构

  4.3 平台模型

  针对开放式数控系统应用软件对软件平台的开放性及互操作要求 ,本部分规定的软件平台模型参考 GB/T 19769. 1—2005给出的用于分布式工业过程测量与控制系统功能块模型以及 GB/T 9387. 1— 1998给出的信息技术可移植操作系统接口模型为基础 ,采用三层结构 ,包括 :应用编程接口 、中间件 、实时操作系统三部分(如图 2所示) 。

  图 2 软件平台体系结构

  开放式数控系统软件平台应用编程接口应包括 :用于运动控制功能调用的插补计算 、运动学变换 、轴控制算法 、数控总线驱动等应用编程接 口 ;用于人机界面开发 、坐标系转换 、路径及速度规划等所需的图形库 、数学库调用接 口 ;用于对实时操作系统中实时内核资源的调用接 口 ;用于对实时操作系统中通用内核的通信 、标准库函数 、存储管理 、进程控制等系统资源的调用接 口 。

  应用软件应能通过调用应用编程接口实现对软件平台功能的使用及资源的访问 , 而无需访问源码或理解内部工作机制细节 。

  中间件应为应用软件资源的共享提供支撑 ,并为其运行与开发提供环境 ,包括 : 为应用软件进程提供运动控制功能调用的插补计算 、运动学变换 、轴控制算法 、数控总线驱动等服务 ; 为人机界面开发 、坐标系转换 、路径及速度规划等所需的图形库 、数学库服务 ;实时及非实时操作系统的通信 、计算 、实时资源调度 、设备驱动等服务 。

  实时操作系统由通用内核和实时内核组成 。 通用内核完成通用核心功能 , 如进程调度 、进程间通信 、内存管理 、设备管理 、文件管理 、网络管理等 ; 实时内核完成实时任务调度 , 支持抢占式优先级调度策略 。

  4.4 数据类型和数据结构

  开放式数控系统软件平台应支持图 3所示的基本数据类型与派生数据类型 。数据类型示例参见附录 D。

  ìï ìï数值类型

  ï ï字符类型

  ï

  ï ìï数组

  ï ï结构体

  ï ï枚举类型

  ï ï 自定义类型

  ïî ïî指针类型

  图 3 数据类型层次结构的示例

  5 操作系统

  5. 1 概述

  操作系统位于软件平台底层 , 由通用内核和实时内核组成(如图 4所示) ,应至少提供以下通用内核编程接口及实时内核编程接 口 :

  — 非实时任务(进程)调度 ;

  — 非实时任务(进程)间通信 ;

  — 非实时任务(进程)内存管理 ;

  — 实时任务(进程)调度 ;

  — 实时任务(进程)间通信 ;

  — 实时任务(进程)内存管理 ;

  — 高精度实时时钟 ;

  — 实时操作系统中断管理 ;

  — 设备管理 ;

  — 文件管理 ;

  — 网络管理 ;

  — 其他接 口 。

  满足开放式数控系统应用软件对系统实时时钟 、存储器 、网络接口 、总线接口等硬件平台资源的调用及管理 。

  图 4 实时操作系统基本结构

  5.2 任务调度管理

  任务(进程)调度管理应满足以下要求 :

  — 保证优先调度实时任务 ;

  — 高优先级任务可以中断低优先级任务的执行 ;

  — 实时任务(进程)宜采用先到先服务的实时调度策略 ;

  — 非实时任务(进程)宜采用的是时间片轮转的调度策略 。

  5.3 高精度实时时钟

  实时操作系统应提供具有高精度计时功能的实时时钟 ,满足对特定设备或处理任务的精确 、实时控制或执行 。

  5.4 实时操作系统中断管理

  实时操作系统应支持多级中断嵌套处理机制 , 以满足对实时事件的及时响应和处理 。

  5.5 实时任务(进程)/线程间通信

  实时操作系统应支持以下一种或多种实时任务(进程)间通信机制 :

  —FIFO 队列 ;

  — 共享内存 ;

  — 消息盒 ;

  — 信号量 ;

  — 互斥器 。

  共享资源应允许不同实时任务(进程)/线程之间可以共享访问而不应引起访问冲突 。

  实时系统任务(进程)间通信调用函数接口示例参见附录 A。

  5.6 实时任务(进程)管理

  实时操作系统应提供管理函数 , 以支持对实时任务(进程)的创建 、执行 、清除等管理操作 。

  实时任务(进程)管理函数接口示例参见附录 A。

  5.7 设备管理

  实时操作系统应提供对 I/O、存 储 等 设 备 访 问 的 同 步 、互 斥 等 管 理 机 制 , 确 保 数 据 的 完 整 性 和 有效性 。

  5. 8 网络管理

  实时操作系统应提供对 ISO/IEC 8802. 3 以及实时以太网标准的支持 ,满足数控系统对实时以太网功能的需求 。

  6 中间件

  6. 1 概述

  开放式数控系统软件平台中间件为上层应用软件提供数控功能相关的资源及服务(如图 5 所示) ,中间件可分为功能块与功能组件两种 。 中间件提供的应用编程接口定义了一个相对稳定的高层应用环境 ,不管底层的计算机硬件和系统软件怎样更新换代 , 只要将中间件升级更新 ,并保持中间件对外的接口定义不变 ,可以实现应用软件在不同系统平台间的移植 。

  图 5 中间件与应用软件互操作关系

  开放式数控系统软件平台中间件应提供包括 :

  — 通信模块 ;

  — 图形库 ;

  — 数学库 ;

  — 实时操作系统模块 ;

  — 运动学模块 ;

  — 总线驱动模块 ;

  — 其他模块 。

  6.2 通信模块

  通信模块应提供通信中间件编程接口(API) , 为上层应用软件提供通信服务 。通信模块应提供数控系统间网络互联以及数控系统内部非实时空间内各进程间通信 。 网络互联通信应支持面向局域(广域)等网络协议的通信服务 ;非实时空间内进程间通信应支持包括 :信号 、管道 、共享内存 、消息队列等通信方式 。

  6.3 图形库

  图形库中间件通过提供图形库编程接口为人机界面开发提供服务 ,人机界面开发时 ,通过调用图形库接口使用系统资源 。

  6.4 数学库

  数学库中间件应提供数学库编程接 口 ,为运动控制组件 、任务控制器组件等提供服务 。数学库包含实时数学库与非实时数学库两部分 。 通过调用数学库接 口 , 满足系统所要求的矢量求解 、样条曲线拟合 、插补计算 、速度控制等功能 。

  6.5 实时操作系统模块

  实时操作系统模块应能够提供实时操作系统接 口 ,为上层应用软件提供实时时钟 、实时线程扩展 、实时通信 、中断调度等服务 。

  实时操作系统模块应提供基于以下方式的实时线程调度与管理机制 :

  — 实时时钟 ;

  — 实时线程扩展 ;

  — 中断调度 。

  实时应用编程接口模块应对 5. 5所描述的通信方式提供接 口 。

  6.6 运动学模块

  运动学模块应提供运动学接口实现对运动控制组件提供服务 。运动学中间件应能够实现不同运动坐标系之间的转换 。

  6.7 总线驱动模块

  总线驱动模块应提供总线驱动接 口 ,实现为相关功能提供的服务 ,通过调用总线驱动接口控制硬件设备的运行以及获取硬件设备的运行状态 。

  7 应用编程接口

  7. 1 概述

  应用编程接口包括 :通用操作系统接口 、通信接口 、图形接口 、数学库调用接口 、实时操作系统接 口 、运动学变换接口 、总线驱动接口等 。

  7.2 通用操作系统接口

  通用操作系统接口应提供有关通用操作系统的系统资源的访问接 口 。通用操作系统接口应包含用于实现进程管理 、内存管理 、设备管理 、文件系统管理 、局域(广域)网络功能等系统调用 ,及实现对图形用户界面等标准函数库的访问 。

  7.3 通信接口

  通信接口包括数控系统间网络互联的通信接口与数控系统内部非实时空间内各进程间的通信接 口两种 ,其中对于网络互联的通信接口包括面向局域/广域等网络协议的通信接 口 ;对于非实时空间内进程间的通信接 口 ,包括信号 、管道 、共享内存 、消息队列等通信接 口 。

  7.4 图形接口

  通过调用图形接 口 ,使用图形库中的系统资源 ,满足数控系统人机界面的开发 。

  7.5 数学库接口

  由实时数学库接口与非实时数学库接口两部分组成 。应用软件通过调用数学库接 口 ,使用数学库中的算法资源 ,满足数控系统开发所要求的矢量计算 、样条曲线拟合 、插补计算 、速度控制等功能 。

  7.6 实时操作系统接口

  实时操作系统接口包括实时时钟 、实时线程扩展 、实时通信 、中断调度等调用接 口 。其中实时时钟 、实时线程扩展 、中断调度等调用接口实现数控系统的实时线程调度与管理功能 ;实时通信调用接口用于非实时空间内进程与实时线程间通信以及实时空间内各线程间的通信 ,其通信方式包括共享内存 、信号量 、FIFO 队列 、消息盒 、互斥器等 。

  7.7 运动学接口

  应用软件通过调用运动学接 口 ,实现不同运动学坐标系之间的变换 。

  7. 8 总线驱动接口

  应用软件通过调用总线驱动接口实现控制硬件设备的运行以及获取硬件设备的运行状态 。

  7.9 应用编程接口示例

  应用编程接口示例参见附录 C。

  8 系统、装置、功能组件的配置

  8. 1 概述

  本部分规定了机械电气设备开放式数控系统软件平台系统 、装置 、功能组件 、功能块的配置与管理要求 。 附录 E 给出了功能块及组件的示例 。

  8.2 系统模型

  系统模型中的装置通过一种或多种通信网络实现互连(如图 6 所示) ,连接模型中各装置的通信网络可以采用层次方式结构 。不同的应用可根据实际控制需要分布在一个或若干装置上 。

  图 6 系统模型

  8.3 装置模型

  开放式数控系统装置模型如图 7所示 。

  图 7 装置模型

  过程接 口 :为开放式数控系统硬件平台设备与软件平台功能组件之间控制管理及数据交互提供接口及映射 。

  通信接 口 :为开放式数控系统软件平台功能组件与应用软件之间控制管理及数据交互提供接口及映射 。

  通信接口提供服务可包括 :

  — 功能组件的数据交互信息 ,如数据 、事件等 ;

  — 附加的服务支持功能 ,如编辑 、配置和诊断等 。

  8.4 功能组件模型

  功能组件如图 8所示 ,可包含以下数据及服务 :

  — 局部应用服务 。在这一部分处理的变量和事件 ,是功能组件的输入和输出变量和其上的事件 ,由功能块执行该应用所需的操作 。

  — 过程映射服务 。实现应 用 和 过 程 接 口 之 间 的 数 据 和 事 件 的 映 射 , 该 映 射 由 服 务 接 口 功 能 块实现 。

  — 通信映射服务 。实现应 用 和 通 信 接 口 之 间 的 数 据 和 事 件 的 映 射 , 该 映 射 由 服 务 接 口 功 能 块实现 。

  — 调度功能服务 。实现应用中各功能块的执行控制以及功能块之间的数据传输处理 ,调度功能服务可根据以下条件确定执行顺序 :

  • 事件的出现时刻 ;

  • 功能块互连 ;

  • 调度信息 ,如周期和优先级 。

  图 8 功能组件模型

  8.5 功能块模型

  8.5. 1 一般要求

  功能块是一个软件组成的不可分割的功能单元 , 由完成相应执行功能的数据结构和相关执行服务组成 。功能块的典型操作包括对其相关数据结构的数据进行更改 。

  功能块类型包括 :

  — 基本功能块 ;

  — 组合功能块 ;

  — 服务接口功能块 ;

  — 其他类型的功能块 。

  功能块实例具有如下特征 ,如图 9所示 :

  — 其类型名和实例名 ;

  — 一组事件输入 ,其中每一个从一个事件连接中接收可以影响执行一个或更多算法的事件 ;

  — 一组事件输出 ,其中每一个向一个事件连接发出一个事件 ,该事件连接依赖于算法的执行或该功能块所在功能组件的一些其他功能 ;

  — 一组数据输入 ,其可以映射到相应的输入变量 ;

  — 一组数据输出 ,其可以映射到相应的输出变量 ;

  — 内部数据 ,可以被映射到一组内部变量 ;

  — 功能特征 ,其由下列因素组合确定 :

  • 内部数据和(或)状态信息 ,连同相关功能组件的一组算法和(或)功能 ;

  • 这些功能特征是在功能块类型说明中作了定义 。

  功能块允许对内部算法进行封装 ,并以黑盒的方式提供给使用者 。

  功能块应提供对其内部变量或状态信息的保存及保护机制 ,保证从功能块算法的一次执行到下 一次执行期间内部变量及状态信息可以继续使用 。功能块的内部变量或状态信息应不允许由该功能块外边的数据流连接进行访问 。

  一个功能块类型是一种软件成分 ,它规定本类型所有实例的特征 ,包括 :

  — 它的类型名 ;

  — 其号码 、名字 、类型名以及事件输入和事件输出的次序 ;

  — 其号码 、名字 、数据类型以及数据输入 、数据输出和内部变量的次序 。

  图 9 功能块模型

  8.5.2 服务功能块

  服务功能块给应用提供一个或多个服务 ,其服务是基于服务原语到该功能块的事件输入 、事件输出 、数据输入和数据输出的映射 ,服务功能块可包括 :通信功能块 、管理功能块等 。

  服务功能块可实现 :

  — 服务功能块给应用提供了一个或多个服务 ,其服务是基于服务原语到该功能块的事件输入 、事件输出 、数据输入和数据输出的映射 ;

  — 服务功能块类型的外部接口有与基本功能块类型同样的通用定义形式 ,然而服务接口功能块类型的输入和输出有其特定的语义 ,这些类型的实例的行为可通过对服务原语的顺序特定的图形说明表定义 。

  服务功能块标准事件输入 、事件输出 、数据输入和数据输出可参见表 B. 1。

  通信功能块是服务接口功能块的一种 ,实现应用和功能组件的 “通信映射 ”功能 ,一个通信功能块可以是基本类型或者组合类型 ,其操作能表示成为由服务原语到该功能块的事件输入 、事件输出 、数据输入和数据输出的映射 。

  管理功能块是服务接口功能块的一种 ,实现在一个功能组件范围内管理各个应用 。本部分附录 B给出了应用管理要求和功能块类型示例 ,并定义了管理功能块控制的功能块的行为 。

  8.6 应用模型

  8.6. 1 概述

  一个应用由功能块网络组成 ,其网络节点为功能块或子应用及相关参数(如图 10所示) , 网络分支为数据连接和事件连接 。一个应用可以分布在同一个或不同装置的若干个功能组件之间 。功能组件可以响应通信和过程接口接收到的事件 ,或响应本功能组件内部事件 。

  事件响应可包括 :

  — 算法的调度和执行 ;

  — 变量的修改 ;

  — 附加事件的生成 ;

  — 与通信接口和过程接口互操作 。

  图 10 应用模型

  8.6.2 应用管理要求

  应用管理的功能主要包含开放式数控系统的功能组件管理和应用管理服务 。

  a) 针对功能组件属性进行创建 、初始化 、启动 、停止 、删除和询问 ,并对其提供可用性和状态进行管理 :

  — 数据类型 ;

  — 功能块类型和实例 ;

  — 功能块实例之间的连接 。

  b) 对装置所属各个功能组件属性进行创建 、初始化 、启动 、停止 、删除和询问 ,并对其提供可用性和状态变化进行管理 。状态机的变化图参见附录 B。

  8.7 系统、装置、功能组件的配置

  8.7. 1 概述

  ONC系统 、装置 、功能组件和应用配置的规则如下 :

  — ONC系统由互连的一些装置组成 ;

  — 装置是相应装置类型的一个实例 ;

  — 装置类型的功能能力是以与其相关的功能组件的术语来描述的 ;

  — 功能组件是相应的功能组件类型的一个实例 ;

  — 功能组件类型的功能能力是以该功能块类型的术语来描述的 , 而这种功能块类型是可以被实例化的而且已经存在特定功能块实例 。

  ONC系统的配置应考虑与其相关的装置和应用配置 ,包括在每一个应用及与之相关装置的功能组件中的各个功能块实例 ,进一步要求见 GB/T 15969. 3—2005 中第 5 章的规定 。

  8.7.2 系统配置

  系统配置包括 :

  — 该系统名 ;

  — 在该系统中每一个应用的技术规范 ;

  — 每一个装置可与它相关的功能组件的配置 。

  8.7.3 装置配置

  装置的配置由下列部分组成 :

  — 该装置的实例名和类型名 ;

  — 对该装置参数的指定的配置值 ;

  — 由该装置实例支持的功能组件类型 ,这里的装置实例是指除了为该装置类型指定的那些之外的装置实例 ;

  — 每一个功能块实例的实例名和类型名 ,这里指除了该装置定义之外的实例的功能块实例的实例名和类型名 ;

  — 每一个数据连接和事件连接 ,这里指的是除了为该装置类型定义的那些之外的装置实例中出现的 ;

  — 对该装置中的每一个功能组件的配置 ,这些功能组件包括在该装置类型技术规范中定义的每一个功能组件实例加上与指定的装置实例相关的任一附加的功能组件 。

  装置类型应包括 :

  — 装置类型名 ;

  — 实例名 、数据类型和装置每一个参数的初始化 ;

  — 实例名 、类型名和每一个功能块实例的初始化 ,指在该装置类型的每一个实例中应该具有的 ;

  — 每一个数据连接和事件连接 ,指在该装置类型的每一个实例中总是出现的 ;

  — 功能组件实例的公告 ,这里的功能组件实例是指在该装置类型的每一个实例中出现的 。

  8.7.4 功能组件配置

  功能组件的配置由下列部分组成 :

  — 其实例名和类型名 ;

  — 由该功能组件实例支持的数据类型和功能块类型 ;

  — 每一个功能块实例的实例名 、类型名和初始化 ,指在该功能组成实例中出现的 ;

  — 每一个数据连接 、事件连接和适配器连接 ,指在该功能组件实例中出现的 ;

  — 每一个访问路径 ,指在该功能组件实例中出现的 。

  功能组件类型应包括 :

  — 功能组件类型名 ;

  — 实例名 、数据类型和功能组件每一个参数的初始化 ;

  — 数据类型和功能块类型的公告 ,这里的功能块类型是指能实现实例化的功能块类型 ;

  — 数据连接和事件连接的最大数目 ,指能存在于该功能组件类型实例中的最大数目 ;

  — 每一个功能块实例的实例名 、类型和初值 ,这是该功能组件类型的每一个实例应该具有的 ;

  — 每一个数据连接和事件连接 ,指在该功能组件类型的每一个实例中总是出现的 ;

  — 每一个访问路径 ,指在该功能组件类型的每一个实例中总是出现的 。

  附 录 A

  (资料性附录)

  操作系统函数接口示例

  A. 1 任务(进程)间通信调用函数接口示例

  表 A. 1 给出实时操作系统任务(进程)间通信调用函数接口示例 。

  表 A. 1 任务(进程)间通信调用函数接口(示例)

  A.2 实时任务(进程)间管理函数接口示例

  表 A. 2 给出实时操作系统任务(进程)间管理函数接口示例 。

  表 A.2 实时任务(进程)间管理函数接口(示例)

  表 A.2 (续)

  附 录 B

  (资料性附录)中 间 件

  B. 1 中间件的定义

  中间件处于应用软件之下 ,实时操作系统之上的 “中间 ”,是承上启下的应用支撑平台 , 为应用软件共享资源提供支撑 ,提供其运行与开发环境 。具体包括 :为运行在一台或多台机器上的多个应用进程提供通信 、计算 、实时资源调度 、设备驱动等服务 。 中间件提供的应用编程接口定义了一个相对稳定的高层应用环境 ,不管底层的计算机硬件和系统软件怎样更新换代 , 只要将中间件升级更新 ,并保持中间件对外的接口定义不变 ,可以实现应用软件在不同系统平台间的移植 。

  B.2 中间件的组成

  数控系统中间件由通信模块 、图形库 、数学库 、实时应用编程接口模块 、插补模块 、机床运动学模块 、轴控制模块 、数控总线驱动模块等构成 ,其中通信模块可以实现数控系统间的网络互联 、系统非实时空间进程间通信 ;实时应用编程接口模块 、插补模块 、机床运动学模块 、轴控制模块 、数学库 、图形库 、数控总线驱动模块等为上层应用软件提供数控功能相关的资源及服务 。

  — 通信模块

  通信模块通过通信中间件编程接口(API)为上层应用软件提供通信服务 。具体包括数控系统间的网络互联与数控系统内部非实时空间内各进程间的通信两种 ,其中对于网络互联的通信包括面向局域(广域)等网络协议的通信 ;对于非实时空间内进程间通信 ,包括信号、管道、共享内存、消息队列等通信方式 。

  — 图形库

  图形库中间件通过图形库编程接口为人机界面的开发提供服务 。 系统开发人员在进行人机界面开发时 ,通过调用图形库接 口 ,使用图形库中的系统资源 。

  — 数学库

  数学库中间件通过数学库编程接口为运动控制组件 、任务控制器组件等提供服务 。其由实时数学库与非实时数学库两部分组成 。 系统开发人员通过调用数学库接 口 ,使用数学库中的算法资源 ,满足系统所要求的矢量求解 、样条曲线拟合 、插补计算 、速度控制等 。

  — 实时应用编程接口模块

  实时应用编程接口模块通过实时操作系统应用编程接口为上层应用软件提供实时时钟 、实时线程扩展 、实时通信 、中断调度等服务 。其中通过实时时钟 、实时线程扩展 、中断调度等调用实现数控系统的实时线程调度与管理 ;通过实时通信调用实现非实时空间内进程与实时线程间通信以及实时空间内各线程间的通信 ,其通信方式包括共享内存 、信号量 、FIFO 队列 、消息盒 、互斥器等 。此外 ,采用实时应用编程接口模块 ,软件平台可以兼容多种实时操作系统 ,使用户不必关心实时操作系统的具体类型 。

  — 插补模块

  插补模块通过插补计算接口对运动控制组件提供插补服务 。通过对插补计算接 口 的调用 ,可以实现对运动段的初始化 、插补及插补计算的启停控制等 。此外 ,还可以设置运动段的加工模式 ,包括精准停模式 、混联模式 、小线段连接模式等 。

  — 机床运动学模块

  机床运动学模块通过机床运动学接口对运动控制组件提供服务 。机床运动学中间件用于实现各机

  床轴位置坐标与用户空间内轨迹点的位置坐标间的转换 。

  — 轴控制模块

  轴控制模块通过轴控制接口对轴运动控制功能组件提供服务 。轴控制功能组件通过调用轴控制接口实现对各轴运动参数初始化 、控制量计算 、控制结果输出等 。

  — 数控总线驱动模块

  数控总线驱动模块通过总线驱动接口为运动控制功能组件提供服务 。运动控制模块通过调用总线驱动接口控制硬件设备的运行以及获取硬件设备的运行状态 。

  注 : 这里的模块指的是功能单元(功能组件 、功能块或应用) 。

  B.3 中间件的描述

  中间件实现数据系统基本功能并提供一组应用编程接口给上层应用软件调用 。本部分规定中间件可分为两种 :功能块与功能组件 。各中间件定义都包含中间件名称 、接口定义组等基本要素 。应用软件根据功能需要 ,调用指定的接 口 ,然后 , 由实现该接口功能的中间件完成相应的处理 ,最后将处理结果提供给应用软件 。本部分以机床运动学中间件为例进行说明 。

  中间件名称 :trivkins

  接口组 :

  {

  intkinematicsForward (constdouble * joint,

  EmcPose * world,

  constKINEMATICS_FORWARD_FLAGS * fflags,

  KINEMATICS_INVERSE_FLAGS * iflags)

  intkinematicsInverse(constEmcPose * world,

  double * joint,

  constKINEMATICS_INVERSE_FLAGS * iflags,

  KINEMATICS_FORWARD_FLAGS * fflags)

  }

  B.4 服务接口功能块标准事件输入、输出示例

  服务功能块可使用表 B. 1列出的标准事件输入 、事件输出 、数据输入和数据输出 。

  表 B. 1 服务接口功能块的标准输入和输出

  表 B. 1 (续)

  B.5 管理功能块的行为-运行状态机

  管理功能块的行为-运行状态机如图 B. 1所示 ,状态表如表 B. 2所示 ,转换条件表如 B. 3所示 。

  图 B. 1 管理功能块状态和转换条件图

  表 B.2 管理功能块状态表

  表 B.3 管理功能块转换条件表

  B.6 管理功能块实例

  图 B. 2 给出管理功能块类型的通用形式 ,其实例满足应用管理要求 。

  图 B.2 管理功能块类型通用形式

  要执行的管理操作将用管理功能块的 CMD输入的值来表示 ,其值对应在表 B. 4 中给出 。

  表 B.4 CMD输入值和语义

  管理功能块 STATUS输出的值及其语义 ,将在表 B. 5 中描述 ,表示完成指定命令(CMD)的结果 。

  表 B.5 STATUS输出值和语义

  表 B.5 (续)

  管理功能块 CMD语法 ,在表 B. 6 中描述 。

  表 B.6 命令语法

  附 录 C

  (资料性附录)

  应用编程接口(API)

  C. 1 应用编程接口的定义

  应用编程接口是预先定义的一些函数接 口 ,应用软件可以通过调用该接口实现对系统平台功能与资源的利用 ,又无需访问源码或理解内部工作机制的细节 。具体系统平台功能与资源包括 :用于运动控制功能调用的插补计算 、机床运动学变换 、轴控制算法 、数控总线驱动等 ;用于人机界面开发 、坐标系转换 、路径及速度规划等所需的图形库 、数学库函数调用 ;用于对实时操作系统中实时内核资源的调用 ;用于对实时操作系统中通用内核的通信 、标准库函数 、存储管理 、进程控制等系统资源的调用 。

  C.2 应用编程接口的描述

  根据被访问对象的模块类型 ,应用编程接口访问方式可分为三种 : 面向对象的方法 、基于功能单元的函数调用方法 、常规函数调用的方法 。本部分采用基于功能单元的函数调用方法实现接口访问 , 由系统的功能单元(功能组件 、功能块和应用)或者由操作系统直接提供应用编程接 口 ,各接口定义都包含接口名称 、形式参数 、返回值(输出参数)等基本要素 。应用软件根据功能需要 ,调用指定的接 口 ,并输入相应的参数值 ,经功能单元(功能组件 、功能块和应用)处理后 ,处理结果以返回值(输出参数) 的形式提供给应用软件 。本部分仅举实例进行说明如下 :

  编程接口名 :tp_Init(TP_STRUCT * tp)

  参数 : tp指针变量

  功能 :初始化 tp变量所指向的运动段队列

  返回值 :返回值为 0 时初始化成功 ,否则不成功

  编程接口名 :tp_RunCycle(TP_STRUCT * tp, long period)

  参数 : tp指针变量 period插补周期

  功能 :运动段插补计算 ,根据 tp结构体当前状态 ,包括运动段类型 , 当前段规划的进给速度等以及

  period所指定的插补周期确定下一周期插补点命令位置返回值 :返回值为 0 时初始化成功 ,否则不成功

  编程接口名 :tp_AddLine(TP_STRUCT * tp, Pose end, double vel, double ini_ maxvel, double acc)

  参数 : tp指针变量 ,end终点位置 ,vel编程速度 ,ini_maxvel允许最大速度 ,acc加速度

  功能 : 向 tp所指向的运动段队列中添加直线运动段 , end 为直线终点坐标 , type, vel, ini_ maxvel, acc, enables为相关的初始化参数

  返回值 :返回值为 0 时初始化成功 ,否则不成功

  C.3 应用编程接口示例

  C.3. 1 实时任务应用编程接口

  函数功能 : 创建一个实时任务 ,但是并不启动该任务

  函数定义 : intrtapi_task_new(void ( * taskcode) (void * ) , void * arg, intprio, intowner, unsigned long intstacksize, intuses_fp)

  参数说明 : taskcode,任务代码

  arg,taskcode 的参数指针

  prio,任务的优先级

  owner,任务的所有者

  stacksize,任务的栈大小

  uses_fp, 当前任务是否使用浮点的标志位

  返回值说明 : 成功则返回一个正的任务编号 ;失败则返回错误代码

  函数功能 : 删除任务

  函数定义 : intrtapi_task_delete(inttask_id)

  参数说明 : task_id,任务的标号

  返回值说明 : 返回状态码

  函数功能 : 将任务以周期运行的方式启动

  函数定义 : intrtapi_task_start(inttask_id, unsigned long intperiod_nsec)

  参数说明 : task_id,待启动的任务编号

  period_nsec,任务周期

  返回值说明 : 如果任务不处于 “paused”状态 ,则返回 “-EINVAL”,否则返回 0

  函数功能 : 挂起当前执行的任务 ,等待下一个执行周期

  函数定义 : void rtapi_wait(void)

  参数说明 : 无

  返回值说明 : 无

  函数功能 : 启动一个任务

  函数定义 : intrtapi_task_resume(inttask_id)

  参数说明 : task_id,任务编号

  返回值说明 : 待启动任务不状态不为 “paused”时 ,返回 – EINVAL;执行成功返回 0

  函数功能 : 停止当前任务的执行 ,并转入 “paused”状态

  函数定义 : intrtapi_task_pause(inttask_id)

  参数说明 : task_id,任务编号

  返回值说明 : 无

  C.3.2 共享内存应用编程接口

  函数功能 : 申请共享内存

  函数定义 : intrtapi_shmem_new(intkey, intmodule_id,unsigned long intsize)

  参数说明 : key,标识信号量 ;moudule_id,模块号;size共享内存的大小

  返回值说明 : 成功 ,返回一个正数标识共享内存 ID;失败则返回一个错误代码

  函数功能 : 删除共享内存

  函数定义 : intrtapi_shmem_delete(intshmem_id, intmodule_id)

  参数说明 : shmem_id共享内存号 ; module_id模块号

  返回值说明 : 返回状态号

  函数功能 : 绑定共享内存

  函数定义 : intrtapi_shmem_getptr(intshmem_id, void**ptr)

  参数说明 : shmem_id,共享内存编号 ; ptr,指向共享内存编号的指针

  返回值说明 : 返回状态号

  C.3.3 信号量应用编程接口

  函数功能 : 创建实时信号量

  函数定义 : intrtapi_sem_new(intkey, intmodule_id)

  参数说明 : key,信号量标识 ;module_id,模块号

  返回值说明 : 成功 ,返回信号量 ID;失败 ,返回错误代码

  函数功能 : 删除实时信号量

  函数定义 : intrtapi_sem_delete(intsem_id, intmodule_id)

  参数说明 : key,信号量标识 ;module_id,模块号

  返回值说明 : 返回状态号

  函数功能 : 获取信号量

  函数定义 : intrtapi_sem_take(intsem_id)

  参数说明 : sem_id,信号量标识

  返回值说明 : 如果该信号量为非锁定状态 ,返回 0

  函数功能 : 释放信号量

  函数定义 : intrtapi_sem_give(intsem_id)

  参数说明 : sem_id,信号量标识

  返回值说明 : 返回状态码

  函数功能 : 非阻塞方式获取信号量

  函数定义 : intrtapi_sem_try(intsem_id)

  参数说明 : sem_id,信号量标识

  返回值说明 : 获取成功 ,返回 0;信号量为锁定状态 ,返回-EBUSY;其他情况返回-EINVAL

  C.3.4 中断应用编程接口

  函数功能 : 注册一个中断 ,为硬件中断指定一个句柄

  函数定义 : intrtapi_irq_new(unsigned intirq_num , intowner,

  void ( * handler) (void))

  参数说明 : irq_num , 中断号 ;owner, 中断的所有者;handler, 中断的响应句柄

  返回值说明 : 返回状态码

  函数功能 : 使能一个中断

  函数定义 : intrtapi_enable_interrupt(unsigned intirq)

  参数说明 : irq_num , 中断号

  返回值说明 : 返回状态值

  函数功能 : 禁用一个中断

  函数定义 : intrtapi_disable_interrupt(unsigned intirq)

  参数说明 : irq_num , 中断号

  返回值说明 : 返回状态值

  函数功能 : 删除一个中断

  函数定义 : intrtapi_irq_delete(unsigned intirq_num)

  参数说明 : irq_num , 中断号

  返回值说明 : 成功返回 0;否则返回-EINVAL

  附 录 D

  (资料性附录)

  数据类型和数据结构

  D. 1 开放式数控系统数据类型定义

  由于数控系统软件结构复杂 ,它不仅涉及以多进程和多线程等方式实现的多任务软件 ,而且还涉及实时线程 、非实时线程及用户空间应用程序间的相互协调运行和信息交互 。 因此 ,对应于数控系统的数据类型多种多样 ,几乎涵盖了所有高级语言所涉及的与现场设备中的控制及通信有关的数据类型 。

  本部分将数控系统所采用的数据类型分为两类 :基本数据类型与派生数据类型 。基本数据类型中包含的每个具体的数据类型及其子类型为最小的类型 ,它不能被分割为更多元素 ,并且具有固定的内存编码格式 。此外 ,根据不同的使用要求 ,基本数据类型可分为数值类型 、字符类型 、位串类型 、逻辑类型等四类 , 以上类型还可以分为其他子类型 ,如数值类型可以分为有符号整型 、无符号整型和实数类型等 。派生数据类型是通过对相同或不同基本数据类型进行组合而成 ,或者为满足某种需求 , 由基本数据类型演变而成的数据类型 ,包括数组 、结构体 、枚举类型 、指针类型等 。

  D. 1. 1 基本数据类型概述

  本部分定义了基本数据类型中包含的各子类型的关键字 、所表示数据类型及比特数如表 D. 1所示 。

  表 D. 1 各基本数据类型的属性

  D. 1.2 基本数据类型的编码

  D. 1.2. 1 BOOL

  BOOL类型的数据用一个字节来存储 ,其取值范围是 True或 False。 在进行逻辑运算时 ,操作数可以为数值类型 ,且非零即为真 ,但在操作前需要进行类型转换 ,转换成 BOOL类型 。

  取值为 True时 ,字节的位取值如表 D. 2所示(B7表示最高位 、B0表示最低位) :

  表 D.2 BOOL 类型数据取值为 True时的编码

  取值为 False时 ,字节的位取值如表 D. 3所示(B7表示最高位 、B0表示最低位) :

  表 D.3 BOOL 类型数据取值为 False时的编码

  D. 1.2.2 SINT

  SINT类型的数据用两个字节来存储 ,其取值范围是 -215 ~ 215 - 1, SN 位表示数的 正 负 , 其 取 值如下 :

  ::和;零 ;

  表 D.4 SINT类型数据的存储示例

  D. 1.2.3 INT

  INT类型的数据用四个 字 节 来 存 储 , 其 取 值 范 围 是 -231 ~ 231 - 1, SN 位 表 示 数 的 正 负 , 其 取 值如下 :

  ::和;零 ;

  表 D.5 INT类型数据的存储示例

  D. 1.2.4 LINT

  LINT类型的数据用八个字节 来 存 储 , 其 取 值 范 围 是 -263 ~ 263 - 1, SN 位 表 示 数 的 正 负 , 其 取 值如下 :

  ::和;零 ;

  表 D.6 LINT类型数据的存储示例

  D. 1.2.5 USINT

  USINT类型的数据用两个字节来存储 ,其取值范围是 0~ 216 -1, 以十进制 10,216 -1为例 ,其在内存中的实际存在形式如表 D. 7所示 。

  表 D.7 USINT类型数据的存储示例

  D. 1.2.6 UINT

  UINT类型的数据用四个字节来存储 ,其取值范围是 0~ 232 -1, 以十进制 10,232 - 1 为例 ,其在内存中的实际存在形式如表 D. 8所示 。

  表 D. 8 UINT类型数据的存储示例

  D. 1.2.7 ULINT

  ULINT类型的数据用八个字节来存储 ,其取值范围是 0~ 264 -1, 以十进制 10, 264 - 1 为例 ,其在内存中的实际存在形式如表 D. 9所示 。

  表 D.9 ULINT类型数据的存储示例

  D. 1.2. 8 REAL

  REAL类型的数据用四个字节来存储 ,SN位表示数的正负 ,其取值如下 :

  :.;10所 示 。 以 十 进 制 123. 456、0. 045 6 为 例 , 其 在 内 存 中 的 实 际 存 在 形 式 如 表

  D. 11所示 。

  表 D. 10 REAL及 LREAL 类型数据的存储格式

  表 D. 11 REAL 类型数据的存储示例

  D. 1.2.9 LREAL

  LREAL类型的数据用八个字节来存储 ,该类型为 REAL类型的扩展 ,其存储格式见表 D. 10所示 。小数部分占的位数愈多 ,数的有效数字愈多 ,精度愈高 。指数部分占的位数愈多 ,则能表示的数值范围愈大 。

  D. 1.2. 10 BYTE、WORD、DWORD、LWORD

  BYTE、WORD、DWORD、LWORD分别表示 1,2,4,8字节长度的位串 ,不需要设定该数据类型的范围 ,该数据类型主要用来满足数控系统对左移位 、右移位 、按位与 、按位或 、按位异或等各种位操作的需求 。

  D. 1.2. 11 CHAR、UCHAR

  CHAR、UCHAR类型的数据用一个字节来存储 ,该类型在内存中以 ASCⅡ码的形式存储字符类型数据 ,编码分别如表 D. 11及表 D. 12所示 。其 SN位表示数的正负 ,其取值如下 :

  SN = 0:表示正数和零 ;

  表 D. 12 CHAR 类型数据的存储示例

  D. 1.3 派生数据类型概述

  D. 1.3. 1 数组数据类型

  数组是由一个同类元素的有序集合组成 。本部分对数组元素的数据类型没有约束 ,但是每个元素需要来自同一个类型 。数组一旦被定义了 ,数组中元素的数量不能改变 ,参见表 D. 13序号 1所示 。

  表 D. 13 各派生数据类型举例

  D. 1.3.2 字符串类型

  字符串是由一个具有有序编号的 、字符类元素的集合组成 。字符串数据在内存中存储时 ,其最后一个字符固定为“/0”,参见表 D. 13序号 2所示 。

  D. 1.3.3 结构体类型

  结构体类型是由一组相同或者不同数据类型元素构成 。本部分不限制字段的数据类型 ,结构中的字段没有必要是一个相同的类型 ,并且可以包含基本数据类型 ,结构体类型或其他派生数据类型 。参见表 D. 13序号 3所示 。

  D. 1.3.4 共用体

  在系统开发中 ,可使几种不同类型的成员变量存放到同一段内存单元中 ,例如 ,可把一个整型变量 、一个字符型变量 、一个实型变量放在同一个地址开始的内存单元中 ,其变量内存模型如图 D. 1所示 。 以上 3个变量在内存中占的字节数不同 ,但都从同一地址开始存放 。这种使几个不同的变量共占同一段

  内存的结构 ,称为共用体类型 。共用体变量所占内存长度等于最长的成员的长度 。此外 ,采用分时引用方式对共用体变量中各成员变量进行引用 , 即在每一瞬时只能存放其中一种 ,而不是同时存放几种 。本部分不限制字段的数据类型 ,参见表 D. 13序号 4所示 。

  图 D. 1 共用体变量内存模型示例

  D. 1.3.5 枚举类型

  如果一个变量只有几种可能的值 ,可以定义为枚举类型 。所谓 “枚举 ”是将变量的值一一列举出来 ,变量的值只限于列举出来的值的范围内 。参见表 D. 13序号 5所示 。

  D. 1.3.6 自定义数据类型

  用户可能认为有必要为他们自己的应用定义客户数据类型 。本部分支持用户定义的数据类型具有具体含义的类型名字 ,可以使人一目了然地知道变量的含义 ,增强程序的可读性 ,便于程序代码的维护及编程效率的提高 。另外 ,使用自定义数据类型有利于实现程序的可移植性 ,参见表 D. 13序号 6所示 。

  D. 1.3.7 指针类型

  指针类型为表示指向变量内存地址或函数入口地址的数据类型 ,通过该类型变量可以找到以它为地址的内存单元 。正确而灵活地运用指针数据类型 , 可以有效地表示复杂的数据结构 ; 能动态分配内存 ;能方便的使用 字 符 串 ; 能 有 效 而 方 便 的 使 用 数 组 ; 能 直 接 处 理 内 存 地 址 等 。 参 见 表 D. 13序 号 7所示 。

  D. 1.4 派生数据类型的嵌套与组合

  为满足数控系统内数据处理的需要 ,有时进行派生数据类型的嵌套定义产生新的数据类型 ,例如 ,定义多维数组 、指向指针类型的指针等 。本部分允许派生数据类型的嵌套 ,但是 , 为便于数控系统程序的调试 , 以保证系统的可靠性 ,允许嵌套级的数量不易过多 ,关于允许嵌套级的数量 ,本部分规定嵌套级数原则上不超过 3 级 。

  为满足数控系统的多种控制需求 ,需要进行派生数据类型的组合定义产生更为复杂的数据类型 ,例如 ,定义指针数组 、结构体数组等复杂的数据结构 。本部分允许派生数据类型的组合定义 ,并且不限制进行组合定义的具体数据类型 。 由于该部分内容不在本部分规定的范围内 ,在此不再详述 。

  D.2 开放式数控系统的典型数据类型举例

  D.2. 1 时间结构体类型

  structtm{

  INT tm_sec; /* 秒 : 0-59 * /

  INT tm_min; /* 分钟 : 0-59 * /

  INT tm_hour; /* 小时 : 0-23 * /

  D.2.2 坐标点(位置矢量)结构体类型D.2.2. 1 笛卡尔坐标

  typedef struct {

  } PmCartesian; typedefPmCartesian VECTOR;

  D.2.2.2 位姿变换矩阵结构体类型

  typedef struct {

  LREAL x,

  LREAL y,

  LREAL z;

  } PmCartesian; typedef struct {

  PmCartesian x, y, z;

  } PmRotationMatrix; typedefPmRotationMatrix MATRIX;

  D.2.2.3 直线结构体类型

  typedef struct {

  PmPose start;

  PmPose end;

  PmCartesian uVec;

  PmQuaternion qVec;

  LREAL tmag;

  LREAL rmag;

  INT tmag_is_greater_than_rmag; INT tmag_zero;

  INT rmag_zero;

  } PmLine;

  D.2.2.4 圆弧结构体类型

  typedef struct {

  PmCartesian center; PmCartesian normal; PmCartesian rTan;

  PmCartesian rPerp; PmCartesian rHelix; LREAL radius;

  LREAL angle;

  LREAL spiral; } PmCircle;

  附 录 E

  (资料性附录)

  ONC软件结构示例

  E. 1 ONC软件插补模块示例

  图 E. 1 和图 E. 2是根据本部分规定的开放式数控系统模型设计的插补模块示例 ,该模块包括直线插补 、圆弧插补及用户指定的插补功能 。

  图 E. 1 插补模块(示例)

  图 E.2 插补模块内部结构(示例)

  E.2 PLC模块示例

  图 E. 3是根据本部分规定的开放式数控系统模型设计的 PLC模块示例 。

  图 E.3 PLC模块结构(示例)

  E.3 现场总线模块示例

  图 E. 4是根据本部分规定的开放式数控系统模型设计的现场总线驱动模块示例 , 总线模块互联关系可参见 GB/T 18759. 3—2009中第 4章 。

  图 E.4 现场总线驱动模块结构(示例)

  参 考 文 献

  GB/T 18759. 3—2009 机械电气设备 开放式数控系统 第 3 部分 : 总线接口与通信协议

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