CN1424649A - 开放式结构机器人控制器 - Google Patents

开放式结构机器人控制器 Download PDF

Info

Publication number
CN1424649A
CN1424649A CN 03100077 CN03100077A CN1424649A CN 1424649 A CN1424649 A CN 1424649A CN 03100077 CN03100077 CN 03100077 CN 03100077 A CN03100077 A CN 03100077A CN 1424649 A CN1424649 A CN 1424649A
Authority
CN
China
Prior art keywords
module
controller
layer
variable
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 03100077
Other languages
English (en)
Other versions
CN1225689C (zh
Inventor
徐华
杨泽红
贾培发
赵雁南
王家廞
曹亦明
李明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN 03100077 priority Critical patent/CN1225689C/zh
Publication of CN1424649A publication Critical patent/CN1424649A/zh
Application granted granted Critical
Publication of CN1225689C publication Critical patent/CN1225689C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Numerical Control (AREA)

Abstract

本发明属于计算机应用技术领域,涉及开放式结构机器人控制器。包括由工业控制计算机和开放式控制器系统的周边设备所组成的硬件部分,由开放源码的实时操作系统和开放式控制器应用软件系统组成的软件部分;所说的开放式控制器应用软件系统RTOC主要由三个运行层次组成;基础层是在各个特殊的设备驱动程序之上,抽象出设备无关的访问接口;中间层负责管理系统伺服周期的定义和运行;应用层为高层应用程序,通过简单的方式配置中间层,并监控系统状态;本发明可以用于对机器人的控制,也可以用于对其它运动控制系统的控制。具有可扩展性、可移植性、可定制性和互操作性四个方面的特征,并且大大降低了系统的成本。

Description

开放式结构机器人控制器
技术领域
本发明属于计算机应用技术领域,特别涉及基于实时Linux的开放式结构机器人控制器设计。
背景技术
机器人控制器是指能够完成机器人控制功能的软件与硬件的总和。随着机器人的广泛应用,不同应用领域需要机器人控制器能够集成不同的周边设备和多种软件功能模块,而且希望控制器可以在不同的软硬件平台间进行移植。随着应用的发展,开放式结构控制器的概念被提出了。
在提出开放式结构控制器概念的早期,许多硬件厂商推出了基于一定标准的可供第三方进行二次开发的控制器硬件产品。这些产品中比较有代表性的有基于视窗(Windows)实时扩展系统的RCS、CX3000、PMAC-NC、OAC500和MOS等控制器;有基于磁盘操作系统(DOS)的DX-32和Sinumerlk 8400控制器;还有基于实时Unix操作系统的开放式计算机数字控制器(Open CNC)。
应用的发展对于开放式控制器开放性的概念在不断地发生变化。虽然对于开放性的定义至今没有形成共识,近年来不同的观点普遍认为一个开放式机器人控制器应具有如下特征:可扩展性(Extensibility)、可移植性(Portability)、可定制性(Reconfigurability)和可交互性(Interoperability)。
可扩展性:任何一个满足一定标准的控制应用模块可以方便地扩充或替换开放式控制器中的应用模块,同时不影响已有的控制模块。如:当开放式控制器用于机器人控制时可以方便地增加关节数、外部设备、扩充机器人视觉模块和基于网络接口的扩展模块等。
可移植性:这种开放式控制器系统软件在不同层次上未经或经过最小的修改后,可以运行于不同的系统平台上。分层结构的系统中,最底层(伺服层)的伺服驱动程序模块在系统满足一定标准的情况下(如:基于Sercos设备总线),可以方便地移植到具有不同伺服级的系统中运行。中间层的管理调度模块、控制算法模块、轨迹规划模块等具有一定通用性,具有较小的平台相关性。与最终用户相交互接口的应用层,与平台的依赖性将更小。
可定制性:用户可以根据应用的需要定制控制器。可定制性就是针对应用的特点对于扩充后的控制器规模进行合理地裁减。例如:根据需求定制伺服电机的数目和外设;根据机构类型定制运动学解算方法;根据功能要求定制控制算法。
互操作性:开放式控制器系统支持一种实现控制器软件与控制器硬件无缝连接的规范接口。这种规范接口保证扩充进系统的软硬件模块可以在原有系统平台上很好地完成系统新的控制功能,而不会影响系统原有的性能。
近些年来,在开放式控制器研究与应用方面,由瑞典仑德(Lund)大学研究完成的开放式机器人控制器体系结构(ORC)就是其中典型的代表。ORC是一种能够集成工业机器人控制和编程的体系结构框架。这种开放式机器人控制器体系结构如图1所示。整个体系结构从上到下依次可以分成三个层次:终端用户层11、系统层12和伺伏层13。在终端用户层从上到下依次含有任务级编程接口模块、离线编程接口模块和在线编程接口模块。在系统层中从上到下依次是系统管理模块和应用控制模块。在伺服层中从上到下依次是运动控制模块、机械臂控制模块、电机控制模块和VME总线标准(VME是VersaModule Europa的简称。)控制对象。各个层次模块的功能和对应的终端用户如表1所示。
                 表1 ORC中不同软件层次的属性与相关用户对照表
    ORC模块     封装模块功能     典型的编程用户 执行类型
任务级编程接口模块 从设计的描述中自动生成执行程序 工件设计人员(工件的设计中隐含着程序的功能) 解释方式   宿主计算机
离线编程接口模块 对于不使用机器人控制的编程 具有计算机经验的机器人语言编程人员
在线编程接口模块 对于使用机器人控制的编程 生产工程师或者机器人操作员   嵌入式设计
系统管理模块 请求参数与控制系统接口 程序员或者经验丰富的应用师 编译方式
应用控制模块 特定应用的运动控制 经验丰富的应用工程师
运动控制模块 工作单元的通用控制 控制工程师
机械臂控制模块 特定的机械臂运动控制 机器人控制工程师
电机控制模块 在分布式硬件中完成相应的控制 伺服控制工程师
在ORC中,系统层12和伺服层13的功能模块在实现上都是采用编译方式实现的,而终端用户层的模块在实现上,首先由用户给出相应的机器人语言描述,而后在运行时采用解释方式来完成相应的功能。
上述体系结构中每一层的模块都具有两种类型的接口,首先是提供给相邻高层的模块调用接口,其次是提供给用户的设计、编程和操作接口。由于每一层中不同的模块对于系统的抽象程度不同,所以在使用时,不同的层次对应于不同工程背景的用户。
首先,ORC虽然在系统的体系结构上提出了分层面向不同用户的概念,但是由于不同层次不同类型模块的编程接口要求由不同应用背景的用户进行软件模块的扩充,而系统的高层缺乏统一的扩展接口,所以在系统的应用上就给系统可扩充性的实现带来了困难。另外底层的硬件由于是采用VME总线标准的控制设备和封闭的实时UNIX操作系统,从已有的软件上讲都不具备开放的控制接口,所以系统硬件标准接口的封闭性也影响了开放式控制器可扩充性。其次,由于ORC是在实时UNIX系统上开发完成的,从软件的实现上讲,缺乏可移植性的机制。再次,ORC系统允许不同应用背景的用户对于系统不同层次进行一定地扩充,但是缺乏对于扩充后系统的裁减和定制机制,所以系统的可定制功能有待于提高。最后,系统最底层所扩充的软件虽然可以与VME总线标准的驱动控制对象实现很好的交互性,但由于VME总线标准缺乏真正意义上的开放性,所以ORC与新扩充进来的系统驱动对象的交互能力有待于提高。
发明内容
本发明的主要目的是为克服已有技术的不足之处,提出一种新型开放式结构机器人控制器,该控制器基于开放式现场控制总线标准串行实时通讯控制系统标准(SERCOS)硬件和开放源码的实时操作系统,可以用于对机器人的控制,也可以用于对其它运动控制系统的控制。具有可扩展性、可移植性、可定制性和互操作性四个方面的特征,并且大大降低了系统的成本。
本发明提出的一种开放式结构机器人控制器,包括由工业控制计算机和与其相连的开放式控制器系统的周边设备所组成的硬件部分,对该硬件进行控制由开放源码的实时操作系统和在该操作系统平台上运行的开放式控制器应用软件系统组成的软件部分;其特征在于,所说的工业控制计算机采用基于工业控制环境标准的微型计算机;所说的周边设备采用国际标准的硬件设备,包括“硬”SERCOS系统硬件接口卡、数字信号采集卡、时钟设备和模拟信号/数字信号转换卡、以及基于SERCOS标准的电机驱动器和相应的电机;所说的开放源码的实时操作系统采用国际通用Linux操作系统的实时扩展系统RtLinux;所说的开放式控制器应用软件系统(RTOC)主要由相互独立的应用层、中间层和基础层三个运行层次组成;其中,基础层是在各个特殊的设备驱动程序之上,抽象出设备无关的访问接口;中间层负责管理系统伺服周期的定义和运行;应用层为高层应用程序,通过简单的方式配置中间层,并监控系统状态;三个层次能够各自独立运行,并且在不同的层次为二次开发人员提供了扩展功能模块的能力,在实现各自功能的基础上,每一层为其必要的用户层提供访问接口。
本发明的技术效果:
本发明与已有的控制器相比,是基于开放源码实时操作系统RtLinux实现的,支持对于标准化硬件、通用驱动软件模块和通用算法软件模块的可扩充性;使用标准C语言的编制策略,支持针对不同层次的不同类型模块的可移植性;支持用户以配置文件的形式,根据应用的需要,对系统功能所进行的定制;支持系统对新扩充进的软、硬件模块的无缝连接;系统软件不同层次间的接口保证了系统具有很好的可交互性。由于采用了现代标准开放源代码的实时操作系统RtLinux,所以提高了整个系统的开放性,并且大大降低了系统的成本。
在开放性的实现方面,本发明专利与国外已有的几种代表性控制器在开放性实现方面进行了对比。对比结果如表2所示。
                        表2  开放性实现情况对比表
    对比项目   可扩充性   可定制性   可移植性   可交互
    NGC     √     √     ×     ×
    LAAS     √     √     ×     √
    NEXUS     √     √     ×     √
    ORC     √     ×     ×     √
    本发明     √     √     √     √
表格中“√”代表支持相关的属性;“×”代表不支持相关的属性。
通过表1的分析比较结果中可以看出,与已有的相关领域的控制器相比,本发明专利在实现控制器的开放性方面具有一定的特点。
附图说明
图1为已有的ORC系统体系结构示意图。
图2为本发明的开放式结构机器人控制器总体结构示意图。
图3为本发明的开放式控制器应用软件系统结构图。
图4为本发明的开放式控制器应用软件系统的基础层和中间层接口示意图。
图5为本发明的开放式控制器应用软件系统的基础层和应用层接口示意图。
图6为本发明的开放式控制器应用软件系统的中间层和应用层接口示意图。
图7为本发明的开放式控制器应用软件系统的CCM总体流程图。
图8为本发明的开放式控制器应用软件系统的变量池结构示意图。
图9为本发明的开放式控制器应用软件系统的变量池管理器内部流程图。
图10为本发明的开放式控制器应用软件系统的伺服循环管理器结构图。
图11为本发明的开放式控制器应用软件系统的伺服循环管理器流程图。
图12为本发明的开放式控制器应用软件系统的异常处理器模块流程图。
图13为本发明的开放式控制器应用软件系统的数据采集器模块流程图。
图14为本发明的开放式控制器应用软件系统的数据回写器模块流程图。
具体实施方式
本发明提出的一种开放式结构机器人控制器结合附图及实施例详细说明如下:
本发明中的开放式结构机器人控制器组成结构如图2所示,包括系统的硬件部分22和系统的软件部分21;系统的硬件部分主要由工业控制计算机和开放式控制器系统的周边设备所组成;系统的软件部分主要包括开放源码的实时操作系统和开放式控制器应用软件系统。
本发明的基本工作原理如下:首先,整个系统加电运行后,开放源码的实时操作系统RtLinux加载实时系统内核。其次,开放式控制器应用软件系统启动,并进行初始化工作。开放式控制器应用软件系统将首先初始化开放式控制器系统的周边硬件设备,初始化用户事先设定的任务列表,构建整个开放式控制器应用软件系统的伺服循环,并在其中加载相应的软件功能模块。第三,在系统初始化工作完成后,系统将按照用户已经设定的控制循环周期,执行伺服循环中的功能模块。完成整个开放式控制系统的控制功能。另外,开放式控制器应用软件系统向用户提供了统一的接口,用户可以根据应用的需要通过修改开放式控制器系统的配置文件,实现扩充和定制系统的目的。另外,根据应用的需要,用户可以更改应用软件系统伺服循环中的控制模块配置。实现开放式控制器系统可以面向不同应用对象的目的。
本发明系统的硬件部分实施例中,工业控制计算机是采用基于工业控制环境标准的微型计算机;开放式控制器系统的周边设备包括“硬”SERCOS系统硬件接口卡(SERCOS卡)、数字信号采集卡(数字I/O卡)、时钟设备和模拟信号/数字信号转换卡(A/D卡)、以及与SERCOS硬件接口卡相连接的基于SERCOS标准的电机驱动器和相应的电机等外围周边设备。系统的软件部分实施例中,开放源码的实时操作系统主要是指使用基于开放源码的实时扩展内核的操作系统RtLinux作为本发明中的操作系统平台。在此操作系统平台上,开放式控制器应用软件系统主要是指用标准C语言开发完成的开放式机器人控制器应用软件系统(RTOC)。
由于本发明实施例中,硬件部分都是采用国际标准的硬件设备,而软件部分的开放源码的实时操作系统也是采用国际通用Linux操作系统的实时扩展系统RtLinux。软件部分的开放式机器人控制器应用软件系统(RTOC)为本发明的特征技术,这部分详细说明如下:
本实施例中RTOC的总体结构如图3所示。从总体上讲,RTOC主要由相互独立的三个运行层次组成:应用层31、中间层32和基础层33。基础层是在各个特殊的设备驱动程序之上,抽象出设备无关的访问接口。中间层是整个系统的核心,负责管理系统伺服周期的定义和运行。应用层是高层应用程序,通过简单的方式配置中间层,并监控系统状态。
三个层次能够各自独立运行,并且在不同的层次为二次开发人员提供了扩展功能模块的能力。在实现各自功能的基础上,每一层为其必要的用户层(如果A层使用到B层提供的功能,就称A层是B层的用户层)提供访问接口。图3中应用层31、中间层32中的用户定义函数模块和基础层33中的用户自定义设备驱动模块,是系统希望用户根据具体应用的需要进行功能扩充的模块。
本实施例的每个层次的组成结构、功能和对外界接口的方式分别说明如下:
1、基础层
基础层33位于控制器软件系统的最底层,由控制器的所有硬件设备的驱动程序和与其相连的向上层提供的硬件无关接口所组成。其中,所说的驱动程序包括I/O卡驱动周期采样程序、SERCOS卡驱动中断采样程序、提供精确的实时时钟控制程序及A/D卡驱动周期采样程序;基础层的接口包括与中间层的接口以及与应用层的接口。
基础层与中间层、应用层的接口方式如图4和图5所示。中间层和应用层通过基础层提供的硬件无关接口访问基础层的功能模块。针对中间层和应用层的不同实现特点,基础层分别以不同的形式提供设备无关接口。中间层的实现完全由C语言编写,因此基础层为其提供了一套硬件无关的C语言应用程序接口(API),如图4所示,在编写中间层的过程中可以方便地直接调用,同时能够获得很高的效率;相对而言,应用层的程序目标可能比较多样,实现方式也可能各个不同,因此基础层以Linux操作系统设备文件的形式为应用层提供设备无关接口,即基础层把每个设备映射到一个Linux文件系统中的节点(系统本身支持),应用层只需对这些文件进行标准的读写操作,就可以控制硬件行为或者获取硬件状态,如图5所示。这种接口方式的效率要比直接的函数调用方式低,但是其优点在于为应用层的实现提供了很大的自由度,使得应用层几乎可以用所有的高级语言来编写。
基础层的主要设计目的是在内部隐藏设备相关的代码(即各个设备的实际驱动程序),而为上层提供设备无关的接口,使得具体硬件细节对于上层来说是透明的。通过使用这种硬件无关接口,中间层和应用层能够完全由硬件无关的代码来实现,从而使系统的各个层次独立性更好,逻辑更清晰,扩展性更好。用户可以在这一层通过编写特定设备的驱动程序来进行系统的功能扩展。
2、中间层
中间层32是整个控制器软件系统的核心部分,主要负责系统状态的维护和控制周期的调度,并为上层(应用层)提供访问接口。
中间层为应用层提供了接口,其接口如图6所示。为了让应用层的实现具有更大的自由度,中间层提供接口的方式也参照了基础层为应用层提供的接口方式,采用了Linux设备文件。由于中间层实际上并不涉及到实际的硬件设备,因此具体实现方法是,中间层注册一个伪硬件设备,并为这个伪设备实现了一个设备驱动程序。中间层把这个伪设备映射到Linux设备文件,应用层通过读写设备文件来访问中间层功能,获取中间层状态。
本实施例中间层主要由中央控制模块及与其相连的变量池、伺服循环模块、数据采集器、数据回写器和异常处理器组成。中央控制模块内部又包括变量池管理器模块和伺服循环管理器模块两个子模块以及与应用层的接口。
中央控制模块(Central Control Module,CCM)是中间层的核心组成部分,负责维护系统运行中的各种状态变量,为应用层提供访问接口,以及控制系统周期性执行的伺服循环过程。
中央控制模块的执行流程如图7所示。其总体运行步骤如图7A所示,包括:
1、加载中央控制模块(CCM)。主要是为内部各种数据结构分配存储空间,并进行必要的数据初始化。
2、注册用来描述自身状态的状态变量。这些状态变量可能包括调度周期的时间长度等。
3、初始化中间层与应用层的接口。注册一个代表中间层信息的虚拟硬件设备,并把该设备映射到一个Linux设备文件,以便应用层通过读写这个文件来访问中间层的功能。
4、对用户编写的其它中间层模块(通用算法模块)进行功能的自注册。通用算法模块可以通过直接调用CCM提供的内部API来向系统注册自身能够提供的功能。
5、通用算法模块根据需要注册状态变量。通用算法模块可能需要一些用来描述自身状态信息的全局变量,模块可以通过直接调用CCM提供的内部API,在变量池中注册这些状态变量。
6、应用层的配置程序参与定义伺服循环。应用层的配置程序,可以通过调用中间层提供的面向应用层的接口(即读写Linux设备文件),指示中间层把系统中现有的控制算法,按照一定的要求串联成伺服循环,从而构建完成伺服循环模块。
7、中间层的准备工作结束,系统暂时挂起,等待应用层程序来通知其启动周期性调度。
8、应用层通知中间层启动伺服循环模块。当应用层通知中间层启动伺服循环模块后,中央控制模块根据既定的调度周期,等待启动伺服循环模块时刻的到来。
9、根据用户所构建的伺服循环模块,执行一个完整的伺服循环周期。
10、每个伺服循环周期结束后,检查是否收到了来自应用层的挂起或者终止的消息,如果没有收到通知,则继续执行下一个周期;如果收到了消息,则根据需要或者挂起伺服循环,或者终止中间层的运行并释放资源。
执行一个伺服周期的步骤如图7B所示,包括:
1、数据采集器对控制对象的相关参数进行采样。
2、顺序执行预先定义的伺服周期中的各个步骤。
3、数据回写器把新的控制参数输出到基础层。
变量池是内核中被管理的内存缓冲区,一般用来存储控制系统中全局的状态变量。变量池的结构如图8所示。变量池主要包括:变量标识符域、数据大小域、起始地址域、描述信息域,以及中间层内部访问接口和应用层访问接口。变量标识符域存放的是变量的标识符,即变量的名称。它唯一地指明了当前所存储的变量。数据大小域中指明了该变量在内存缓冲区中所占据的物理空间大小。起始地址域指明了该变量在内存缓冲区中的物理起始存储地址。描述信息域是对该变量的功能性描述,它指明了变量用途。中间层内部访问接口则是变量池提供给中间层CCM模块的访问接口。应用层访问接口是变量池提供给用户的访问接口。
变量池由中央控制模块中的变量池管理器来管理的。变量池可以用来存储任意类型的数据结构,其大小在理论上仅仅取决于系统中可用的物理内存大小。变量池管理器负责记录各个变量的标识符、变量数据所需的内存空间大小、变量在内存中的起始地址和描述信息,并且提供注册、注销变量,以及读取和修改变量值的功能。
变量池管理器包括两个典型的执行流程,即注册变量和读取变量。变量池管理器内部用链表来维护变量信息。注册变量的流程如图9A所示,包括:
1.首先在池中检查是否有相同标识符的变量存在。标识符是在变量池中代表一个变量的唯一标识,因此需要保证全局唯一。如果已经存在相同标识符的变量,则注册失败,返回错误代码;
2.否则继续执行,为新变量分配内存;根据新变量的大小,在系统中为其分配足够的内存,如果无法完成内存分配,则注册失败,返回错误代码;
3.否则继续执行,更新变量信息链表;在完成内存分配之后,系统已经得到了新变量在内存中的起始地址,进而可以把新变量的标识符、大小、起始地址和描述信息这些数据构成一个链表节点,添加到系统的变量信息链表中去。
读取变量的流程如图9B所示,包括:
1、首先遍历变量信息链表,检查是否存在指定名称(标识符)的变量,如果没有,则读取失败,返回错误代码;
2、如果找到了指定的变量,则根据变量信息链表中描述的该变量的起始地址和大小,返回变量的值。
伺服循环模块是系统中周期性执行的控制功能模块,包括库内置控制功能模块和用户定义控制功能模块等。伺服循环模块由CCM中的伺服循环管理器维护。库内置控制功能模块包括基础层已经提供的不同功能的模块,例如:I/O卡驱动周期采样模块、SERCOS卡驱动中断采样模块、A/D卡驱动周期采样模块。用户定义控制功能模块则主要包括用户根据应用的需要所扩充的一些软件功能模块,例如:根据机器人运动控制的需要,用户会扩充一些轨迹规划模块等。CCM中的伺服循环管理器将来自控制器周边硬件设备的相关参数经过各种控制、规划算法的顺序计算处理,最终返回给控制器的周边硬件设备,构成了一个完整的闭环反馈系统。
伺服循环管理器结构如图10所示。伺服循环管理器包括内部数据结构管理器、控制功能链表和伺服周期链表。控制功能链表中,主要存放了中间层中目前所有能够被调用的控制函数,以及这些函数的名称、入口地址和描述信息。伺服周期链表是由控制功能链表中被选定的元素按照一定执行的流程组成的一个函数链。伺服循环链表中的入口和出口分别对应了一个伺服循环周期的入口与出口。内部数据结构管理器负责管理和维护这两张链表。控制功能链表中的控制函数可能是系统中间层提供的,也可能是由用户后来开发的,对于新的功能函数信息,此时就需要数据结构管理器来进行维护了。
伺服循环管理器流程如图11所示,主要包括控制功能的注册和伺服周期的定义两部分。
控制功能注册流程如图11A所示,包括:
1、首先检查控制功能链表中是否存在重名的函数。函数名称是伺服循环模块中用来代表一个控制功能的唯一标识,因此必须保证全局唯一。如果该函数名称已经存在,则注册失败,返回错误代码;
2、否则继续执行,更新控制功能链表,根据注册者提供的函数名称、描述和入口地址,构成一个新的控制功能链表节点,并加入到控制功能链表中去。
伺服循环模块的定义流程如图11B所示,包括:
1、首先清空伺服周期链表;
2、准备在伺服周期中加入一个控制功能函数;
3、遍历控制功能链表,检查是否存在指定名称的控制功能;由于要求伺服周期中的控制功能元素集合是控制功能链表中所有元素集合的子集,因此只有在控制功能链表中存在的节点,才能被加入到伺服周期链表中;如果在控制功能链表中找不到指定名称的控制功能,则定义伺服周期失败,返回错误代码;
4、否则继续执行,更新伺服周期链表,根据需要加入的控制功能的函数名称、描述信息和入口地址,构成一个新的伺服周期链表节点,并加入到伺服周期链表中去;
5、如果还有其他控制功能需要被加入到伺服周期中,则转2准备加入一个新的控制功能函数,否则结束。
异常处理器负责处理系统运行中的异常情况。异常通常是由硬件中断或者来自应用层的消息来触发的。中央控制模块在捕获异常之后,直接把异常传递给异常处理器处理。异常处理器内部维护着一个异常处理过程链表,链表中包含着每一个异常处理过程能够处理的异常类型和过程的入口地址。异常处理器的处理流程如图12所示,包括:
1.中央控制模块捕获异常。由于异常由硬件中断或者来自应用层的异常消息,中央控制模块一般通过响应中断或者监听异常消息来捕获异常。在捕获异常之后,中间层首先保存当前的运行状态,然后把异常交给异常处理器处理;
2.异常处理器检查异常类型,并调用合适的异常处理过程。异常处理器在得知异常之后,首先检查当前异常处理过程链表中是否存在能够处理该异常类型的处理过程;
a)如果存在,则先保存中央控制模块当前运行的状态,然后调用合适的异常处理过程,由该异常处理过程决定系统是否继续运行;
b)如果不存在,则根据一定的策略,或者忽略异常,或者直接终止整个系统的运行。
异常处理器的抽象,有助于在系统设计中,把正常执行过程的代码和异常处理的代码很好地分割开,保证逻辑的尽量清晰。
数据采集器和数据回写器是在中间层中独立划分出来的、直接面向基础层的子模块。数据采集器运行流程如图13所示,包括:
1.启动数据采集器;
2.直接调用基础层的硬件无关接口,从基础层获得各种相关硬件设备的最新数据;
3.用从基础层获得的数据,更新变量池中相应的变量;中间层在初始化的过程中,一般会为基础层的各种硬件设备,在变量池中注册相应的状态变量,因此,基础层的一个设备,一般是与中间层变量池中的一组变量相对应的;
4.数据采集完毕,启动伺服周期的一次执行过程,依次执行各个控制过程。
数据回写器的运行流程如图14所示,包括:
1.启动数据回写器。
2.从变量池中获取最新的代表硬件设备数据的变量值。
3.把新获取的数据,通过基础层的硬件无关接口,输出到相应的基础层设备驱动
程序。结束一个伺服周期的执行过程,系统进入暂时挂起的状态。
3、应用层
应用层主要由中间层监控模块和基础层监控模块所组成。基础层监控模块主要为用户提供了一个硬件配置和监控程序的接口,它可以用Linux操作系统中Shell脚本的形式提供给用户。中间层监控模块主要包括系统状态监控程序、系统调式程序、中间层配置程序、远程监控程序。它们分别以QT图形界面、C/C++语言、Perl脚本和C/C++语言的形式给用户提供一个监控系统中间层的接口界面。
在基础层和应用层提供的灵活的接口基础上,应用层的功能是由用户用各种高级语言或者脚本语言来实现的,而不必局限于C语言程序。对于系统状态的监控用户可以采用QT图形库以图形化的方式刷新和显示系统的状态;对于系统的调试或者远程监控系统状态,用户可以使用C/C++语言程序来实现。而对于中间层的配置,系统可以用Perl脚本以图形化方式来实现配置程序模块,配置操作变量池和定义伺服周期的目的。面向硬件层,用户可以使用Shell脚本来配置硬件和监控程序。

Claims (7)

1、一种开放式结构机器人控制器,包括由工业控制计算机和与其相连的开放式控制器系统的周边设备所组成的硬件部分,对该硬件进行控制由开放源码的实时操作系统和在该操作系统平台上运行的开放式控制器应用软件系统组成的软件部分;其特征在于,所说的工业控制计算机采用基于工业控制环境标准的微型计算机;所说的周边设备采用国际标准的硬件设备,包括“硬”SERCOS系统硬件接口卡、数字信号采集卡、时钟设备和模拟信号/数字信号转换卡、以及基于SERCOS标准的电机驱动器和相应的电机;所说的开放源码的实时操作系统采用国际通用Linux操作系统的实时扩展系统RtLinux;所说的开放式控制器应用软件系统RTOC主要由相互独立的应用层、中间层和基础层三个运行层次组成;其中,基础层是在各个特殊的设备驱动程序之上,抽象出设备无关的访问接口;中间层负责管理系统伺服周期的定义和运行;应用层为高层应用程序,通过简单的方式配置中间层,并监控系统状态;三个层次能够各自独立运行,并且在不同的层次为二次开发人员提供了扩展功能模块的能力,在实现各自功能的基础上,每一层为其必要的用户层提供访问接口。
2、如权利要求1所述的开放式结构机器人控制器,其特征在于,所说的基础层由控制器的所有硬件设备的驱动程序和与其相连的向上层提供的硬件无关接口所组成;其中,所说的驱动程序包括I/O卡驱动周期采样程序、SERCOS卡驱动中断采样程序、提供精确的实时时钟控制程序及A/D卡驱动周期采样程序;基础层的接口包括与中间层的硬件无关的C语言应用程序接口以及与以Linux操作系统设备文件的形式为应用层提供设备无关接口。
3、如权利要求1所述的开放式结构机器人控制器,其特征在于,所说的中间层由中央控制模块(CCM),及与其相连的变量池、伺服循环模块、数据采集器、数据回写器和异常处理器组成,所说的中央控制模块内部又包括变量池管理器模块和伺服循环管理器模块两个子模块以及与应用层的采用Linux设备文件的接口;该中央控制模块负责维护系统运行中的各种状态变量,为应用层提供访问接口,以及控制系统周期性执行的伺服循环过程;该变量池是内核中被管理的内存缓冲区,用来存储控制系统中全局的状态变量;该伺服循环模块是系统中周期性执行的控制功能模块,由中央控制模块中的伺服循环管理器维护;该异常处理器负责处理系统运行中的异常情况。
4、如权利要求3所述的开放式结构机器人控制器,其特征在于,所说的变量池主要包括:变量标识符域、数据大小域、起始地址域、描述信息域,以及中间层内部访问接口和应用层访问接口;该变量标识符域存放的是变量的名称;数据大小域中指明了该变量在内存缓冲区中所占据的物理空间大小;起始地址域指明了该变量在内存缓冲区中的物理起始存储地址;描述信息域是对该变量的功能性描述,指明了变量用途;中间层内部访问接口则是变量池提供给中间层CCM模块的访问接口;应用层访问接口是变量池提供给用户的访问接口。
5、如权利要求3所述的开放式结构机器人控制器,其特征在于,所说的伺服循环模块包括库内置控制功能模块和用户定义控制功能模块;该库内置控制功能模块包括基础层已经提供的不同功能的模块;用户定义控制功能模块主要包括用户根据应用的需要所扩充的一些软件功能模块。CCM中的伺服循环管理器模块负责维护伺服循环模块的运行,它将来自控制器周边硬件设备的相关参数经过各种控制、规划算法的顺序计算处理,最终还会传送给控制器的周边硬件设备,构成了一个完整的闭环反馈系统。
6、如权利要求3所述的开放式结构机器人控制器,其特征在于,所说的伺服循环管理器包括内部数据结构管理器及其管理和维护的控制功能链表和伺服周期链表;该控制功能链表中,主要存放了中间层中目前所有能够被调用的控制函数,以及这些函数的名称、入口地址和描述信息;该伺服周期链表是由控制功能链表中被选定的元素按照一定的执行流程组成的一个函数链;伺服循环链表中的入口和出口分别对应了一个伺服循环周期的入口与出口。
7、如权利要求1所述的开放式结构机器人控制器,其特征在于,所说的应用层主要由中间层监控模块和基础层监控模块所组成;其中,基础层监控模块主要为用户提供了一个硬件配置和监控程序的接口;中间层监控模块主要包括系统状态监控程序、系统调式程序、中间层配置程序、远程监控程序,各程序分别以QT图形界面、C/C++语言、Perl脚本和C/C++语言的形式给用户提供一个监控系统中间层的接口界面。
CN 03100077 2003-01-09 2003-01-09 开放式结构机器人控制器 Expired - Fee Related CN1225689C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 03100077 CN1225689C (zh) 2003-01-09 2003-01-09 开放式结构机器人控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 03100077 CN1225689C (zh) 2003-01-09 2003-01-09 开放式结构机器人控制器

Publications (2)

Publication Number Publication Date
CN1424649A true CN1424649A (zh) 2003-06-18
CN1225689C CN1225689C (zh) 2005-11-02

Family

ID=4789773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 03100077 Expired - Fee Related CN1225689C (zh) 2003-01-09 2003-01-09 开放式结构机器人控制器

Country Status (1)

Country Link
CN (1) CN1225689C (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367253C (zh) * 2005-09-08 2008-02-06 中国工商银行股份有限公司 一种扩展外设的方法及系统
CN100452749C (zh) * 2005-03-23 2009-01-14 发那科株式会社 生产系统的网络地址设定方法
CN101404073B (zh) * 2008-10-21 2011-04-06 浙江大学 一种复杂产品模糊层次配置方法
CN102455969A (zh) * 2010-12-15 2012-05-16 中标软件有限公司 一种Linux串口通信日志记录的方法
CN102591306A (zh) * 2012-03-08 2012-07-18 南京埃斯顿机器人工程有限公司 双系统组件式的工业机器人控制器
CN102638575A (zh) * 2012-03-27 2012-08-15 许继集团有限公司 一种分层分布式充换电监控系统
CN103995478A (zh) * 2014-05-30 2014-08-20 山东建筑大学 基于现实虚拟互动的模块化液压机械臂实验平台及方法
CN107743309A (zh) * 2017-10-16 2018-02-27 深圳市汉普电子技术开发有限公司 无线密码数据的处理方法、终端设备及存储介质
CN107957719A (zh) * 2016-10-18 2018-04-24 珠海格力智能装备有限公司 机器人及其异常监控方法和装置
CN108255491A (zh) * 2017-12-11 2018-07-06 南京埃斯顿自动化股份有限公司 一种伺服驱动器数据的统一建模方法
CN105278940B (zh) * 2014-07-08 2018-09-25 北京航空航天大学 一种基于多核处理器架构的机器人混合系统应用框架
CN109313453A (zh) * 2016-06-14 2019-02-05 深圳市大疆创新科技有限公司 支持独立于协议的可移动物体应用开发
CN111309453A (zh) * 2020-02-13 2020-06-19 佛山智能装备技术研究院 分布式部署的智能机器人系统
CN111966055A (zh) * 2020-07-16 2020-11-20 珠海小工蜂科技有限公司 一种工业软件机器人系统
WO2022199000A1 (zh) * 2021-03-26 2022-09-29 深圳市优必选科技股份有限公司 一种控制方法、控制系统及智能设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630275B (zh) * 2009-07-31 2012-07-04 清华大学 一种实现生成循环任务配置信息的方法和装置

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100452749C (zh) * 2005-03-23 2009-01-14 发那科株式会社 生产系统的网络地址设定方法
CN100367253C (zh) * 2005-09-08 2008-02-06 中国工商银行股份有限公司 一种扩展外设的方法及系统
CN101404073B (zh) * 2008-10-21 2011-04-06 浙江大学 一种复杂产品模糊层次配置方法
CN102455969A (zh) * 2010-12-15 2012-05-16 中标软件有限公司 一种Linux串口通信日志记录的方法
CN102455969B (zh) * 2010-12-15 2014-07-16 中标软件有限公司 一种Linux串口通信日志记录的方法
CN102591306A (zh) * 2012-03-08 2012-07-18 南京埃斯顿机器人工程有限公司 双系统组件式的工业机器人控制器
US9114529B2 (en) 2012-03-08 2015-08-25 Nanjing Estun Robotics Co. Ltd Dual-system component-based industrial robot controller
CN102591306B (zh) * 2012-03-08 2013-07-10 南京埃斯顿机器人工程有限公司 双系统组件式的工业机器人控制器
WO2013131457A1 (zh) * 2012-03-08 2013-09-12 南京埃斯顿机器人工程有限公司 双系统组件式的工业机器人控制器
CN102638575B (zh) * 2012-03-27 2015-01-14 国网山东省电力公司 一种分层分布式充换电监控系统
CN102638575A (zh) * 2012-03-27 2012-08-15 许继集团有限公司 一种分层分布式充换电监控系统
CN103995478A (zh) * 2014-05-30 2014-08-20 山东建筑大学 基于现实虚拟互动的模块化液压机械臂实验平台及方法
CN103995478B (zh) * 2014-05-30 2016-05-18 山东建筑大学 基于现实虚拟互动的模块化液压机械臂实验平台及方法
CN105278940B (zh) * 2014-07-08 2018-09-25 北京航空航天大学 一种基于多核处理器架构的机器人混合系统应用框架
CN109313453A (zh) * 2016-06-14 2019-02-05 深圳市大疆创新科技有限公司 支持独立于协议的可移动物体应用开发
CN107957719A (zh) * 2016-10-18 2018-04-24 珠海格力智能装备有限公司 机器人及其异常监控方法和装置
CN107743309A (zh) * 2017-10-16 2018-02-27 深圳市汉普电子技术开发有限公司 无线密码数据的处理方法、终端设备及存储介质
CN108255491A (zh) * 2017-12-11 2018-07-06 南京埃斯顿自动化股份有限公司 一种伺服驱动器数据的统一建模方法
CN108255491B (zh) * 2017-12-11 2021-05-25 南京埃斯顿自动化股份有限公司 一种伺服驱动器数据的统一建模方法
CN111309453A (zh) * 2020-02-13 2020-06-19 佛山智能装备技术研究院 分布式部署的智能机器人系统
CN111966055A (zh) * 2020-07-16 2020-11-20 珠海小工蜂科技有限公司 一种工业软件机器人系统
WO2022199000A1 (zh) * 2021-03-26 2022-09-29 深圳市优必选科技股份有限公司 一种控制方法、控制系统及智能设备

Also Published As

Publication number Publication date
CN1225689C (zh) 2005-11-02

Similar Documents

Publication Publication Date Title
CN1225689C (zh) 开放式结构机器人控制器
EP2169547B1 (en) Compilation model for programmable logic controllers (PLC).
CN1278224C (zh) 在多处理器宿主系统上进行多处理器仿真的方法和系统
Reusing Comparison of operating systems tinyos and contiki
CN100561440C (zh) 提供部分隔离的执行环境的方法及其数字信息设备
US20110271268A1 (en) System and method for updating unified extensible firmware interface setting information
CN103207797A (zh) 基于通用可扩展固件接口固件系统的胶囊式定制更新方法
JP4836419B2 (ja) 産業オートメーション用のcilコード・プログラムのオンライン修正
CN1163006A (zh) 在一个计算机系统中配置多个媒体的方法和设备
CN1490722A (zh) 基于PowerPC处理器结构的分级任务切换方法
CN110471647A (zh) 基于微内核架构的嵌入式分区操作系统及其设计方法
CN113687913A (zh) 一种面向边缘计算异构环境的轻量级应用适配方法
CN117075930B (zh) 一种计算框架管理系统
CN104572161A (zh) 一种基于龙芯便携式计算机的uefi固件实现方法
Silvano et al. AutoTuning and Adaptivity appRoach for Energy efficient eXascale HPC systems: the ANTAREX Approach
CN114327628A (zh) 分层控制方法、系统、终端设备及存储介质
CN113534744A (zh) 用于构成数控系统的软件架构和硬件架构
CN106909345A (zh) 一种基于台式计算机的uefi固件实现方法
CN102141915A (zh) 一种基于RTLinux的设备实时控制方法
Yang et al. An open CNC controller based on LabVIEW software
JP5140652B2 (ja) ロボット用ソフトウェアコンポーネントのスレッド処理システム及び方法
CN100370381C (zh) 一种可重配置的开放式结构计算机数控系统
CN101075190A (zh) 资源管理平台中的数据引擎
Wahler et al. Quality attribute trade-offs in industrial software systems
CN1588324A (zh) 基于控制系统实现在线更新数据的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee