GB/T 32197-2015 机器人控制器开放式通信接口规范
- 名 称:GB/T 32197-2015 机器人控制器开放式通信接口规范 - 下载地址1
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
发表评论
加入收藏夹
错误报告
目录| 新闻评论(共有 0 条评论) |
资料介绍
ICS 25. 040.30 J 28
中 华 人 民 共 和 国 国 家 标 准
GB/T 32197—2015
机器人控制器开放式通信接口规范
Robotcontrolleropen communication interfaceprofile
2015-12-10发布 2016-07-01实施
中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会
发
布
GB/T 32197—2015
前 言
本标准按照 GB/T 1. 1—2009给出的规则起草 。
本标准由中国机械工业联合会提出 。
本标准由全国 自动化系统与集成标准化技术委员会(SAC/TC159)归 口 。
本标准主要起草单位 : 中国科学院自动化研究所 、北京机械工业自动化研究所 、北京航空航天大学 、沈阳新松机器人自动化股份有限公司 、北京信息科技大学 。
本标准主要起草人 :景奉水 、谭民 、杨书评 、刘颖 、黎晓东 、王思斯 、黄民 、陈友东 、徐方 。
GB/T 32197—2015
引
言
建立机器人控制器开放式通信接口规范 ,具有如下两方面意义 :
a) 如果由两个不同机器人设备厂商提供的设备需要通信 ,那么需要对方提供设备通信接口文件 ,而这些文件在形式上或者采用的术语可以有很大不同 。通信接口规范就是要在功能和形式上标准化设备互联的接 口 。通过采用这种方法 ,所有机器人设备厂商在制订设备通信接口文件时采用相似形式 ,这样降低了系统集成的难度 。
b) 采用通信接口规范的设备另一个优势是指导厂商生产标准化机器人控制器 。标准化设备有众多优点 ,但是最重要的理念是在进行系统集成时不依赖于特定设备 。如果一个设备制造商不能提供满足特定的应用需求 ,系统设计者可以选用另外一家设备提供商的产品 。另一方面 ,设备制造商也无需为每个用户制订专门协议 。
机器人控制器开放式通信接口规范定义一类标准设备功能的通信接 口 。标准设备功能分为强制功能和可选功能两类 。每个支持本规范的设备都应支持强制功能 。例如 ,支持该标准的机器人控制器提供了 “快停 ”功能来停止机器人操作 。 由于这一功能是强制的 ,任何支持开放式机器人控制器接口规范的控制器接收到相同信息后都会马上停止机器人操作 。通过在接口规范中定义可选功能 ,对设备的标准化功能进行扩展 。这种可选功能不强制所有设备都实现 。然而 ,如果设备具有这种可选功能 ,那么它必须遵循本标准规定的方式 , 以确保所有设备制造商以同样的方式提供扩展功能 。
接口规范也为设备制造商预留了设备的特殊功能接 口 。这是因为不论本标准做得多么详尽 ,都无法预知设备需要具备的全部功能 。这一机制保证了本标准在短期内不会过时 。
总之 ,通过定义设备强制功能来保证基本的操作 ;通过定义设备可选功能 ,建立了一定程度的柔性 ;通过预留设备的功能接 口 ,制造商不会被过时的标准所束缚 。通过本标准的实施 ,可使机器人控制器用户 、机器人控制器集成商和机器人控制器生产商三者均受益 。
机器人控制器开放式通信接口规范
1 范围
本标准规定了机器人控制器的开放式通信接口模型和规范 。
本标准适用于通过基于对象字典的高速现场总线 ,例如以太网 POWERLINK, 与其他设备构成生产线的机器人控制器 。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的 。凡是注 日期的引用文件 ,仅注 日期的版本适用于本文件 。凡是不注日期的引用文件 ,其最新版本(包括所有的修改单)适用于本文件 。
GB/T 27960 以太网 POWERLINK通信行规规范
3 术语和定义
下列术语和定义适用于本文件 。
3. 1
通信接口 communication interface
按一组规范进行工作的电路 。经过通信接口可使一个设备与另一个设备进行数据交换 。 3.2
机器人控制器 robotcontroller
与机器人本体相连 ,接收用户指令 ,并控制机器人本体动作的装置 。
3.3
通信对象 communication object
网络传输的信息单元 。机器人控制器同外部的交换数据包含在通信对象中 。
3.4
过程数据对象 processdata object;PDO
一种不需确认的服务信息 ,用于快速传输控制器实时数据 。
3.5
服务数据对象 servicedata object;SDO
一种需要确认的服务信息 ,用于配置控制器行为 , 以适应不同应用 。
3.6
对象字典 objectdictionary
设备内的一个可通过网络访问的有序对象组 ,每个对象拥有一个 16位的索引 。
注 : 对象字典及其属性的定义参考 GB/T 27960 中的 9. 2。
4 机器人控制器通信接口模型
4. 1 机器人控制器模型
机器人控制器是与机器人本体相连 ,接收用户指令 ,并控制机器人本体动作的装置 。机器人控制器
上设有远程和本地工作模式选择开关 ,具备远程和本地两种工作模式 。如图 1 所示 ,在远程模式下 ,设备仅接收来自远程通信网络的命令信息并执行相应操作 ,但可通过远程网络或者本地通信网络发送状态信息 ;在本地工作模式下 ,设备仅接收来自本地网络的命令信息 ,但可通过远程网络或者本地通信网络发送状态信息 。在同一时间 ,两种工作模式只能选一 。
图 1 机器人控制器模型
远程通信网络与本地通信网络在物理上是分离的 。典型的远程通信网络如工业以太网 、CAN 等 。控制器通过远程 通 信 网 络 连 接 PLC、工 业 计 算 机 或 者 其 他 机 器 人 控 制 器 。 典 型 的 本 地 通 信 网 络 如RS-232、以太网等 。控制器通过本地网络连接手控盒等操控装置 。 不论是远程通信还是本地通信 ,都可与机器人控制器的应用对象相关联 ,来控制机器人本体和相关工具装置的动作 ,获取机器人及其所处环境的状态 。
4.2 机器人控制器开放式通信接口模型
一个采用现场总线的机器人控制器远程通信接口模型如图 2所示 。机器人控制器在设备状态机的控制下 ,外部主控设备的命令和数据通过总线通信接 口 ,进入机器人控制器 。如果每个机器人设备商采用不同机器人控制器通信规范 , 即使采用同一种总线 ,来自不同设备商的机器人远程通信接口也是互不兼容的 ,这为机器人系统集成带来了许多不便 ,增加了用户的培训和使用成本 。 为解决这个问题 ,机器人控制器就需要具有一种开放的标准化通信接 口 。
基于对象字典的通信接口规范 , 如 CANOPEN 和以太网 POWERLINK 等 , 由于其开放性优势获得了广泛应用 。基于对象字典的机器人控制器通信接 口 ,被称作机器人控制器开放式通信接 口 。本文件从设备互联角度规定了与机器人远程通信相关的对象 。基于对象字典的机器人控制器远程通信模型 ,也就是机器人控制器开放式通信接口模型 。外部主控设备按照机器人控制器的开放式通信接口规范向控制器发送运动命令或者输入/输出命令 ,接收控制器状态和输入信息 。
图 2 机器人控制器远程通信接口模型
5 复杂数据结构对象
为表示机器人位姿 ,对象 0080h定义了复杂数据结构 POSE。定义见表 1。
表 1 复杂数据结构 POSE
6 设备属性对象
与机器人控制器设备属性有关的字典对象如表 2所示 。
表 2 与设备属性有关的字典对象
6. 1 对象 1000h:设备类型
对象 1000h说明了设备的类型和功能 。在设备初始化期间 , 由设备固件设置该对象的值 。定义见
表 3。
表 3 对象 1000h
NMT_DeviceType_U32值的含义见表 4。
表 4 NMT_DeviceType_U32值的含义
NMT_DeviceType_U32包含两个 16 比特字段 ,一个字段用于说明设备行规 ,用机器人控制器(Ro- botControler)英文首字母“RC”对应的 ASCII码 5243h表示 ; 另外一个字段给出了关于设备可选功能的附加信息 ,用机器人控制器控制的轴数表示 。
6.2 对象 6402h:机器人类型
对象 6402h存有机器人类型 。定义见表 5。
表 5 对象 6402h
6.3 对象 6403h:机器人铭牌号
对象 6403h存有机器人的铭牌号 。定义见表 6。
表 6 对象 6403h
6.4 对象 6404h:机器人制造商名称
对象 6404h存有机器人的制造商名称 。定义见表 7。
表 7 对象 6404h
6.5 对象 6405h:机器人网址
对象 6405h存有机器人的网址 。定义见表 8。
表 8 对象 6405h
6.6 对象 6406h:机器人校正日期
对象 6406h存有机器人校正日期 。定义见表 9。
表 9 对象 6406h
6.7 对象 6407h:机器人服务周期
对象 6407h存有机器人正常服务周期 ,单位为小时 。超过这个周期 , 机器人即需要维护 。定义见
表 10。
表 10 对象 6407h
6. 8 对象 6410h:机器人数据
对象 6410h存有制造商提供的机器人信息 ,信息的结构由制造商手册给出 。定义见表 11。
表 11 对象 6410h
6.9 对象 6502h:控制器型号
对象 6502h存有控制器型号 。定义见表 12。
表 12 对象 6502h
6. 10 对象 6503h:控制器铭牌号
对象 6503h存有机器人控制器的铭牌号 。定义见表 13。
表 13 对象 6503h
6. 11 对象 6504h:控制器厂商
对象 6504h存有控制器厂商 。定义见表 14。
表 14 对象 6504h
6. 12 对象 6505h:控制器网址
对象 6505h存有控制器网址 。定义见表 15。
表 15 对象 6505h
6. 13 对象 6506h:控制器校正日期
对象 6506h存有机器人校正日期 。定义见表 16。
表 16 对象 6506h
6. 14 对象 6507h:控制器服务周期
对象 6507h存有 控 制 器 正 常 服 务 周 期 , 单 位 为 小 时 。 超 过 这 个 周 期 , 控 制 器 需 要 维 护 。 定 义 见
表 17。
表 17 对象 6507h
6. 15 对象 6510h:控制器数据
对象 6510h存有制造商提供的机器人控制器信息 ,信息的结构由制造商手册给出 。定义见表 18。
表 18 对象 6510h
7 运动功能对象
运动功能是机器人的基本功能 。机器人控制器开放式通信接口支持两类运动模式 :笛卡尔空间运动和关节空间运动模式 。两者之间的关系如图 3所示 。若设定运动模式对象 6060h为笛卡尔空间运动模式 ,则机器人控制器从字典对象 6078h读取机器人笛卡尔坐标系下的位姿 ,然后根据工作空间轨迹生成参数 ,生成基座坐标系的目标位置 6079h,再由关节空间转化器根据机器人运动学参数转化到关节空间 目标位置 607Ah,最后通过关节空间轨迹生成器 ,转化成伺服命令位置 60F2h,发送到伺服控制模块 。若设定运动模式 对 象 6060h 为 关 节 尔 空 间 运 动 模 式 , 则 机 器 人 控 制 器 将 直 接 从 关 节 空 间 目 标 位 置607Ah中读取数据 ,转化成伺服命令位置 60F2h。
图 3 机器人控制器运动模式
与本章有关的字典对象见表 19。
表 19 与运动相关的字典对象
7. 1 对象 6060h:运动模式
对象 6060h用于设定运动模式 。定义见表 20。
表 20 对象 6060h
运动模式的数据说明定义见表 21。
表 21 运动模式
7.2 对象 607Ah:关节空间目标位置
对象 607Ah存有机器人关节空间 目标位置 。定义见表 22。
表 22 对象 607Ah
子索引 00h:NumberOfEntries的详细含义见表 23。
表 23 子索引 00h
子索引 00h的数值对应机器人的轴数 , 由设备制造商设置 。子索引 01h~FEh:关节位移 ,定义见表 24。
表 24 子索引 01h~FEh
数组中的每个子索引都对应于一个关节轴位移 。对于旋转轴来说 ,位移单位为弧度或者度 , 由设备制造商规定 ;对于平移轴来说 ,位移单位为 mm。
7.3 对象 607Bh:关节空间实际位置
对象 607Bh存有机器人关节实际位置 。定义见表 25。
表 25 对象 607Bh
子索引 00h:NumberOfEntries的含义说明见表 26。
表 26 子索引 00h
子索引 00h的数值对应机器人的轴数 , 由设备制造商设置 。子索引 01h~FEh:关节位移 ,定义见表 27。
表 27 子索引 01h~FEh
数组中的每个子索引都对应于一个关节轴位移 。对于旋转轴来说 ,位移单位为弧度或者度 , 由设备制造商规定 ;对于平移轴来说 ,位移单位为 mm。
7.4 对象 6078h:用户坐标系下机器人目标位姿
对象 6078h存有由用户指定坐标系下机器人目标位姿 。用户坐标系由用户设置 。定义见表 28。
表 28 对象 6078h
7.5 对象 607Ch:用户坐标系下机器人实际位姿
对象 607Ch存有由用户指定坐标系下机器人实际位姿 。用户坐标系由用户设置 。定义见表 29。
表 29 对象 607Ch
7.6 对象 6079h:机座坐标系下机械接口目标位姿
对象 6079h存有机座坐标系下机械接口的目标位姿 。定义见表 30。
表 30 对象 6079h
7.7 对象 607Dh:机座坐标系下机械接口实际位姿
对象 607Dh存有机座坐标系下机械接口的实际位姿 。定义见表 31。
表 31 对象 607Dh
7. 8 对象 60F2h:伺服命令位置
对象 60F2h存有机器人关节命令位置 。定义见表 32。
表 32 对象 60F2h
子索引 00h:NumberOfEntries的定义见表 33。
表 33 子索引 00h
子索引 00h的数值对应机器人的轴数 , 由设备制造商设置 。子索引 01h~FEh:关节位移 ,定义见表 34。
表 34 索引 01h~FEh
数组中的每个子索引都对应于一个电机轴位移 ,单位为电机码盘计数单位 。
8 输入输出功能对象
与本章有关的字典对象见表 35。
表 35 与输入输出相关的字典对象
8. 1 数字量输入输出对象
8. 1. 1 对象 60FDh:数字量输入
对象 60FD指示控制器数字量输入 。定义见表 36。
表 36 对象 60FDh
子索引 00h:NumberOfEntries的定义见表 37。
表 37 子索引 00h
子索引 01h~FEh:DigitalInput的定义见表 38。
表 38 子索引 01h~FEh
数据说明见表 39。
表 39 数据说明
31 16 15 2 1 0
MSB LSB
8. 1.2 对象 60FEh:数字量输出对象
对象 60FE指示控制器数字量输出 。定义见表 40。
表 40 对象 60FEh
子索引 00h:NumberOfEntries的定义见表 41。
表 41子索引 00h
子索引 01h~FEh:DigitalOutput的定义见表 42。
表 42 子索引 01h~FEh
数据说明见表 43。
表 43 数据说明
31 16 15 1 0
MSB LSB
8.2 模拟量输入输出对象
8.2. 1 对象 6401h:模拟量输入
对象 6401h指示控制器模拟量输入 ,定义详见表 44。
表 44对象 6401h
子索引 00h的数值对应控制器的模拟量输入数目 , 由设备制造商设置 。定义见表 45。
表 45 子索引 00h
子索引 01h~FEh对应单个模拟量输入值 ,定义见表 46。
表 46 子索引 01h~FEh
数组中的每个子索引都对应于一个模拟量数 ,单位由设备制造商设置 。
8.2.2 对象 6411h:模拟量输出
对象 6411h指示控制器模拟量输出 。定义见表 47。
表 47 对象 6411h
子索引 00h:NumberOfEntries的定义见表 48。
表 48 子索引 00h
子索引 00h的数值对应控制器的模拟量输出数目 , 由设备制造商设置 。
子索引 01h~FEh:单个模拟量输出 ,定义见表 49。
表 49 子索引 01h~FEh
9 控制对象
9. 1 控制器状态机
控制器状态通过控制字来控制 ,其状态反映在状态字中 ;在远程模式下 ,机器人控制器通过网络接收 PDO 或者 SDO并得到控制 。状态机外部受控于控制字和外部信号 ; 内部受控于错误信号和操作模式 。状态机说明装备的状态 ,决定控制器可能的控制序列 。一个状态代表一个特定的内部或者外部行为 。控制器的状态还决定哪个命令被接收 。例如 ,点到点的运动只有处于操作使能状态才能执行 。状态可以通过控制字或者内部事件改变 ,状态机的状态可以通过状态字读出 。
9. 1. 1 控制器状态
如图 4所示 ,机器人控制器状态机由 3个高级状态或者 6个基本状态构成 :
— 关闭 :
控制器上电 ,完成内部初始化 、自检和主机通信 ;不允许高电压施加到伺服系统 ,控制器不执行任何运动或者 I/O命令 。如果存在电机抱闸 ,则抱闸关闭 ,动力装置处于锁定状态 ;控制参数可以改变 。
— 打开 :
高电压施加到伺服系统 ,控制器不向驱动器发送参考位置 。如果存在电机抱闸 ,则抱闸打开 ,动力装置处于静力平衡状态 ;控制参数可以改变 。
— 操作使能 :
未检测到故障 ,控制器执行运动命令和 I/O命令 。
— 快停 :
正在执行快停功能 ,控制器停止执行运动命令和 I/O命令 。
— 故障处理 :
控制器发生了故障 ,控制器进行故障处理 。
— 故障
一个故障已发生 ,控制器停止执行运动命令 ,控制器参数可被改变 。
图 4 机器人控制器状态机
9. 1.2 状态迁移
状态迁移来源于内部事件或者主机通过控制字发送的命令 。本标准规定了以下状态迁移动作 :
— 状态迁移 0:开始->关闭
事件 :重置 。
动作 :控制器自检或者初始化 ,开始通信 。
— 状态迁移 1:关闭->打开
事件 :从主机收到 “打开 ”指令 。
动作 :驱动器伺服加电 ,抱闸打开 。
— 状态迁移 2:打开->操作使能
事件 :从主机收到 “操作使能 ”指令 。
动作 :执行运动和 I/O命令 。
— 状态迁移 3:操作使能->打开
事件 :从主机收到 “中止操作 ”指令 。
动作 :停止执行运动和 I/O命令 。
— 状态迁移 4:操作使能->关闭
事件 :从主机收到 “关闭 ”指令 。
动作 :执行完当前运动和 I/O命令 ,关闭伺服和抱闸 。
— 状态迁移 5:打开->关闭
事件 :从主机收到 “关闭 ”指令 。
动作 :关闭伺服和抱闸 。
— 状态迁移 6:操作使能->快停
事件 :从主机收到 “快停 ”指令 。
动作 :执行 “快停 ”功能 。
— 状态迁移 7:快停->操作使能
事件 :“快停 ”功能执行完毕 。从主机收到 “操作使能 ”指令 。
动作 :执行运动和 I/O命令 。
— 状态迁移 8:快停->关闭
事件 :“快停 ”功能执行完毕 。从主机收到 “关闭 ”指令 。
动作 :关闭伺服和抱闸 。
— 状态迁移 9:所有状态->故障处理
事件 :控制器发生了内部错误 。
动作 :执行错误处理功能 。
— 状态迁移 10:故障处理->故障
事件 :执行错误处理功能完毕 ,可以关闭伺服和抱闸 。
动作 :控制器停止执行运动和 I/O命令 。
— 状态迁移 11:故障->关闭
事件 :从主机收到 “重置 ”指令 。
动作 :如果伺服和抱闸未被关闭 ,则关闭伺服和抱闸 。
9.2 与控制器状态相关的对象
与本章有关的字典对象见表 50。
表 50 与控制器状态相关的对象
9.2. 1 对象 6040h:控制字
对象 6040h存有控制字 ,定义见表 51。
表 51 对象 6040h
控制字由下列位构成 :
● 状态控制位 ;
● 操作模式控制位 ;
● 设备制造商定制位 。
● 数据说明见表 52。
表 52 数据说明
15 11 10 9 8 7 6 4 3 2 1 0
MSB LSB
—0,1,2,3 和 7位
这些位用于设备控制命令 。各位的定义见表 53。
表 53 控制字中用于设备控制命令的位
—4,5,6 和 8位
这些位用于操作模式 。各位的定义见表 54。
表 54 控制字中用于操作模式的位
— 9 和 10位
这些位保留将来使用 。这些位被设置为零 。如果没有特殊用途 ,它们应被设置为零 。
— 11,12,13,14和 15位
这些位由设备制造商定制 。
9.2.2 对象 6041h:状态字
对象 6041存有状态字 。定义见表 55。
表 55 对象 6041h
状态字由下列位构成 :
● 控制器状态 ;
● 操作模式状态 ;
● 设备制造商定制状态 。数据说明见表 56。
表 56 状态字的数据说明
— 1~ 6位
这 6位用于说明控制器状态 。各位的定义见表 57。
表 57 与设备状态相关的位
— 7位
此位被置 1,表明一个警告发生 。 引起警告的原因可以通过读取错误代码参数发现 。 — 8位
该位由设备制造商用于实现特定功能 。
— 9位
该位被置 1,表明控制器处于远程工作模式 。
— 10位
该位被置 1,表明设定点到达 。设定点的含义取决于操作模式 。
— 11位
该位被置 1,表明触发一个限位开关 。
— 12、13位
这两位专用于操作模式 。定义见表 58。
表 58 状态字中用于操作模式的位
— 14、15位
这两位由设备制造商用于实现特定功能 。
9.2.3 对象 605Ah:控制器快停选择代码
对象 605Ah存有控制器快停选择代码 ,用于决定控制器快停发生时的动作 。定义见表 59。
表 59 对象 605Ah
数据说明见表 60。
表 60 数据说明
9.2.4 对象 605Bh:控制器关闭选择代码
对象 605Bh存有控制器关闭选择代码 ,用于决定状态迁移的动作 。详细对象见表 61。
表 61 对象 605Bh
数据说明见表 62。
表 62 数据说明
9.2.5 对象 605Dh:控制器停机选择代码
对象 605Dh存有控制器停机选择代码 ,用于决定状态字第 8位置位时的动作 。定义见表 63。
表 63 对象 605Dh
数据说明见表 64。
表 64 数据说明
9.2.6 对象 605Eh:控制器故障反应选择代码
对象 605Eh存有故障反应选择代码 ,用于决定控制器出错时的动作 。定义见表 65。
表 65 对象 605Eh
数据说明见表 66。
表 66 数据说明
9.2.7 对象 6061h:操作模式显示
对象 6061h用于显示控制器操作模式 。定义见表 67。
表 67 对象 6061h
数据说明见表 68。
表 68 运动模式
10 PDO 映射
支持多种操作模式的 机 器 人 控 制 器 相 应 的 有 多 种 标 准 的 PDO, 因 此 , 本 标 准 预 定 义 了 两 种 接 收PDO 和两种发送 PDO。
设备制造商可根据需要增加新的 PDO 映射 。
10. 1 接收 PDO
接收 PDO 的详细说明见表 69。
表 69 接收 PDO
10. 1. 1 接收 PDO 第 1 种格式
接收 PDO第 1种格式的通信参数见表 70。
表 70 接收 PDO 第 1 种格式的通信参数
接收 PDO第 1种格式的映射参数见表 71。
表 71 接收 PDO 第 1 种格式的映射参数
10. 1.2 接收 PDO 第 2 种格式
接收 PDO第 2种格式的通信参数见表 72。
表 72 接收 PDO 第 2 种格式的通信参数
接收 PDO第 2种格式的通信参数见表 73。
表 73 接收 PDO 第 2 种格式的映射参数
10.2 发送 PDO
发送 PDO 用以实时反映控制器状态 。详细说明见表 74。
表 74 发送 PDO
10.2. 1 发送 PDO 第 1 种格式
发送 PDO第 1种格式的通信参数见表 75。
表 75 发送 PDO 第 1 种格式的通信参数
发送 PDO第 1种格式的映射参数见表 76。
表 76 发送 PDO 第 1 种格式的映射参数
10.2.2 发送 PDO 第 2 种格式
发送 PDO第 2 中格式的通信参数见表 77 。
表 77 发送 PDO 第 2 种格式的通信参数
发送 PDO第 2种格式的映射参数见表 78。
表 78 发送 PDO 第 2 种格式的映射参数
11 程序管理对象
本章规定了机器人程序管理的方法 。本标准不规定程序数据结构 , 由制造商定制 。
11. 1 对象 1F50h:保存程序
对象 1F50h保存着下载的程序 。它最多可支持对 254个程序的访问 。定义见表 79。
表 79 对象 1F50h
— 子索引 00h:NumberOfEntries的定义见表 80。
表 80 子索引 00h
— 子索引 01h~FEh:Program 的定义见表 81。
表 81 子索引 01h~FEh
程序 1 是设备的默认程序访问点 。使用无结构字节流 , 下载和上传的程序分别由写和读访 问 来实现 。
11.2 对象 1F51h:控制程序执行
对象 1F51h用于控制保存程序的执行 。定义见表 82。
表 82 对象 1F51h
如果设备支持 PDL_DownloadProgData_ADOM ,则应实现 PDL_ProgCtrl_AU8。
— 子索引 00h:NumberOfEntries的定义见表 83。
表 83 子索引 00h
— 子索引 01h~FEh:ProgCtrl的定义见表 84。
表 84 子索引 01h~FEh
ProgCtrl控制由 PDL_DownloadProgData_ADOM访问的默认程序 。
当写访问时 ,命令程序执行 ; 当读访问时 ,可查询程序的当前执行状态 。定义值见表 85。
表 85 PDL_ProgCtrl_AU8子索引取值说明
附 录 A
(资料性附录)
双机器人协调控制应用
多机器人协调是机器人一种高级应用 。通过机器人控制器互联接 口 ,可方便搭建起多机器人协调控制系统 。
图 A. 1所示为双机器人协调的一个示例 。在这个示例中 ,使用了本标准规定的笛卡尔空间运动模式和第 2种格式 PDO 接收(发送)数据 。
图 A. 1 双机器人协调
其中机器人 1 和机器人 2被设定为从站 ,从主站接收数据 。其字典索引 1400h的见表 A. 1。
表 A. 1 定义从站接收 PDO
机器人 1 和机器人 2 的字典索引 1600h,定义从主站接收数据映射关系 ,其定义见表 A. 2。
表 A.2 定义从站接收 PDO 的映射
机器人 1 和机器人 2 的字典索引 1800h的定义见表 A. 3,表示将向主站发送数据 。机器人 1 和机器人 2 的字典索引 1A00h,定义向主站发送数据映射关系 ,见表 A. 4。
表 A.3 定义从站发送 PDO
表 A.4
定义从站发送 PDO 的映射
相应的 ,基于 OPEN POWERLINK 的对象字典实现代码如下所示 。
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ODfora Robot Open Communicaiton Interface
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define EPL_OBD_DEFINE_MACRO
# include "EplObdMacro.h"
#undef EPL_OBD_DEFINE_MACRO
EPL_OBD_BEGIN ()
EPL_OBD_BEGIN_PART_GENERIC ()
# include "../Generic/objdict_1000-13ff.h"
//Object 1400h: PDO_RxCommParam_00 h_REC
EPL_OBD_BEGIN_INDEX_RAM(0x1400,0x03,EplPdouCbObdAccess)
EPL_OBD_ SUBINDEX_RAM_VAR(0x1400, 0x00,kEplObdTypUInt8,kEplObdAccConst,tE- plObdUnsigned8,NumberOfEntries,0x02)
EPL_OBD_SUBINDEX_RAM_VAR(0x1400,0x01,kEplObdTypUInt8,kEplObdAccRW,tEplOb- dUnsigned8,NodeID_U8,0x00)
EPL_OBD_SUBINDEX_RAM_VAR(0x1400,0x02,kEplObdTypUInt8,kEplObdAccRW,tEplOb- dUnsigned8,MappingVersion_U8,0x00)
EPL_OBD_END_INDEX(0x1400)
//Object 1600h: PDO_RxMappParam_00 h_AU64
EPL_OBD_BEGIN_INDEX_RAM(0x1600,0x1A,EplPdouCbObdAccess)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x00, kEp10bdTypUInt8, kEp10bdAccRW, tEp10bdUnsigned8,NumberOfEntries,0x02)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x01, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x0010000000006040LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x02, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00C0001000006078LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x03, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x04, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x05, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x06, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x07, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x08, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x09, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x0A, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x0B, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x0C, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x0D, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x0E, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x0F, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x10, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x11, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x12, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x13, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x14, kEp10bdTypUInt64, kEp10bdAccRW,
tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x15, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x16, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x17, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x18, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1600, 0x19, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_OBD_END_INDEX(0x1600)
//Object 1800h: PDO_TxCommParam_00 h_REC
EPL_OBD_BEGIN_INDEX_RAM(0x1800,0x03,EplPdouCbObdAccess)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1800, 0x00, kEp10bdTypUInt8, kEp10bdAccConst, tEp10bdUnsigned8,NumberOfEntries,0x02)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1800, 0x01, kEp10bdTypUInt8, kEp10bdAccRW, tEp10bdUnsigned8,NodeID_U8,0x00)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1800, 0x02, kEp10bdTypUInt8, kEp10bdAccRW, tEp10bdUnsigned8,MappingVersion_U8,0x00)
EPL_OBD_END_INDEX(0x1800)
//Object 1A00h: PDO_TxMappParam_00 h_AU64
EPL_OBD_BEGIN_INDEX_RAM(0x1A00,0x1B,EplPdouCbObdAccess)
EPL_ OBD_ SUBINDEX_ RAM_ VAR( 0x1A00, 0x00, kEp10bdTypUInt8, kEp10bdAccRW, tEp10bdUnsigned8,NumberOfEntries,0x02)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x01, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x0010000000006041LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x02, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00C000100000607CLL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x03, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x04, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x05, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x06, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x07, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x08, kEp10bdTypUInt64, kEp10bdAccRW,
tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x09, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x0A, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x0B, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x0C, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x0D, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x0E, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x0F, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x10, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x11, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x12, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x13, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x14, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x15, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x16, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x17, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x18, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x19, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_ OBD_ SUBINDEX_ RAM_ VAR(0x1A00, 0x1A, kEp10bdTypUInt64, kEp10bdAccRW, tEp10bdUnsigned64,ObjectMapping,0x00LL)
EPL_OBD_END_INDEX(0x1A00)
# include ". ./Generic/objdict_ 1b00-1fff.h"
EPL_OBD_END_PART ()
EPL_OBD_BEGIN_PART_MANUFACTURER ()
//.......................
EPL_OBD_END_PART ()
EPL_OBD_BEGIN_PART_DEVICE ()
//..............................................
EPL_OBD_END_PART ()
EPL_OBD_END ()
#define EPL_OBD_UNDEFINE_MACRO
# include "Ep10bdMacro.h"
#undef EPL_OBD_UNDEFINE_MACRO
在此例中 ,主控计算机作为主站通过集线器分别与作为从站的机器人 1 和机器人 2 的控制器 1 和2 连接 。将机器人控制器 1 和机器人控制器 2 设置为远程工作模式 ,设置其网络编号为从站 1 和从站2,进一步设置其运动工作模式为笛卡尔空间运动模式 。 主控计算机通过离线编程软件 ,完成双机器人末端位姿轨迹的规划 。在线工作时 ,通过互联接口协议发送(接收) 第 2 种格式接收(发送)PDO数据 ,实现机器人 1 和机器人 2 的协调运动 。
参 考 文 献
[1] CiA DS301,CANopen Application Layerand Communication Profile,Version4.02,February2002
[2] CiA DS401,CANopen Device Profile I/O Modules,Version2. 1,May2002
[3] CiA DS402,CANopen DeviceProfileDriversand Motion Control,Version2. 0,January2005
相关推荐
- GB/T 43143-2023 无损检测 声发射检测 混凝土结构活动裂缝分类的检测方法 正式版
- GB/T 10178-2006 工业通风机 现场性能试验
- GB/T 42355.2-2023 钢筋混凝土用锚固板钢筋 第2部分:试验方法
- GB/T 18570.5-2005 涂覆涂料前钢材表面处理 表面清洁度的评定试
- GB/T 18856.6-2008 水煤浆试验方法 第6部分:密度测定
- GB/T 42514-2023 铝及铝合金阳极氧化膜及有机聚合物膜的腐蚀评定 图表法
- GB/T 28778-2023 先导式安全阀 正式版
- GB/T 18838.2-2017 涂覆涂料前钢材表面处理 喷射清理用金属磨料的技术要求 第2部分:冷硬铸铁砂
- GB/T 20023-2005 无气喷涂用橡胶和/或塑料软管及软管组合件
- GB/T 44853-2024 城市轨道交通车辆 电空制动系统

