使用UKA.机器人8.7系统编程控制PROFINET软件的方法

工业控制

1202人已加入

描述

通过 KRL 解耦 PROFINET 设备

•  IOCTL 命令 1060:
为了可以在不同的机器人上交替地运行一个设备,需要 IOCTL 命
令 1060 进行解耦。如果该设备仅在一个机器人上运行,也可以使
用该命令。
设备输出端设置在解耦后立即归零。如果将设备短时间断开电源后
又重新接上,则不会恢复输出端设置。
IOCTL 命令 60:
只在该设备仅在一个机器人上运行时,才能使用该 IOCTL 命令。
只出于兼容性原因,该命令才仍可用。
在解耦时,设备上的输出端设置保持不变。如果将设备短时间断开
电源后又重新接上,则会恢复输出端设置。

 

机器人


 

 

始终可用 • 勾选:机器人控制器启动时期待设备已被激活。若设备未被激活,将输出故障信息。
• 未勾选:机器人控制器在启动时不检查设备是否已被激活。

已解耦设备的属性
• 若将解耦了的设备与总线或者电源分离开,这不会触发故障。
• 在已解耦的设备上进行的所有输入/输出操作都将保持无效。
• 已解耦的设备不能对读/写故障进行处理。
• 解耦时设备的输入端已被归零。

• 解耦时设备的输入端已被归零。
选项 始终可用
对于带工具更换系统的应用程序,并非所有设备都持续耦合。在冷启动或重新配置 I/O 驱动程序时,解耦的设备将直接触发总线故障。用选项 始终可用可以避免该情况:
• 勾选:错误信息
未勾选:无故障信息

句法
• 在一台机器人上使用该设备时:
RET = IOCTL("PNIO-CTRL",60,用户 ID)
• 在一台或多台机器人上使用该设备时:
RET = IOCTL("PNIO-CTRL",1060,用户 ID)

这里将根据所用的工具给 ID 为 3 的设备解耦:
...
IF (NEXT_TOOL == GRIPPER_1) THEN
RET = IOCTL("PNIO-CTRL",1060,3)
ENDIF
...

2.通过 KRL 耦合 PROFINET 设备

有 2 个具有不同应用和效果的 IOCTL 命令用于耦合:
• IOCTL 命令 1050:为了使设备可以在不同的机器人上交替运行,需要IOCTL 命令 1050 进行耦合。如果该设备仅在一个机器人上运行,也可以使用该命令。
• IOCTL 命令 50:只在该设备仅在一个机器人上运行时,才能使用该IOCTL 命令。只出于兼容性原因,该命令才仍可用。

句法
• 在一台机器人上使用该设备时:
RET= IOCTL("PNIO-CTRL",50,用户 ID)
• 在一台或多台机器人上使用该设备时:
RET= IOCTL("PNIO-CTRL",1050,用户 ID)

这里将根据所用的工具给 ID 为 5 的设备耦合:
...
IF (NEXT_TOOL == GRIPPER_2) THEN
RET = IOCTL("PNIO-CTRL",1050,5)
ENDIF
...

3、通过 KRL 更改耦合 PROFINET 设备的等待时间

有些设备的耦合时间长于其他设备。因此,在机器人控制系统输出错误信息之前,要等待规定的时间。默认情况下,规定的等待时间为 10 秒,可在运行时于程序之内更改。为此,必须在程序中借助 KRL 函数 IOCTL 编程一个更改等待时间的命令。

句法
RET = IOCTL("PNIO-CTRL",32776,等待时间)

 

说明
RET 用于保存 KRL 函数 IOCTL 返回值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-CTRL 总线驱动程序的名称
32776 用于更改等待时间的 IOCTL 命令
等待时间 在机器人控制器输出错误信息之前要等待的时间,单位:ms

 

返回值:RET

 

0 已成功更改等待时间。
-1 由于无法访问总线系统,所以未能更改等待时间。

 

示例
在该示例中,将该值设为 15 s (= 15000 ms):
RET = IOCTL("PNIO-CTRL",32776,15000)

4.通过 KRL 查询 PROFINET 设备的状态

说明
运行时,可在一个程序之内查询 PROFINET 设备的状态。为此,必须在程序中借助 KRL 函数 IOCTL 编程一个查询状态的命令。
句法

RET = IOCTL("PNIO-CTRL",70,用户 ID)

 

元素 说明
RET 用于保存 KRL 函数 IOCTL 返还值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-CTRL 总线驱动程序的名称
70 用于查询设备状态的 IOCTL 命令
用户识别号 要查询其状态的设备的用户 ID

 


返回值RET

 

说明
4 设备已解耦。
5 设备已耦合,但出现错误。
6 设备已耦合且工作正常。
7 设备已解耦,但内部仍在 PROFINET Controller 中激活。
提示:例如,当用 IOCTL 命令 60 将设备解耦时,会出现这种状态。在这种情况下,PROFINET Controller 会通过 DCP 搜索设备。

 

5.通过 KRL 激活或停用总线故障

在默认情况下激活总线故障。如果出现总线故障,这会导致停止和/或锁定激活命令。借助 KRL 函数 IOCTL 可停用并再次激活总线故障。激活或停用可以在运行时于程序内通过 KRL 执行。
可为一个或多个总线实例停用总线故障。如果总线故障被停用,会有如下表现:
• 总线故障:不停止和/或锁定激活命令
• 总线故障:smartHMI 信息窗口中没有故障信息
• smartHMI 信息窗口中会显示以下信息:
KRC IO 总线错误抑制针对下列总线实例激活:{总线实例}{总线实例}{总线实例}
• 如果总线实例中已出现故障,则无法再次激活总线故障。
该情况下可通过系统变量 $IOBUS_INFO 读取是否出现总线故障。

句法
• 为了停用总线故障:
RET = IOCTL("KRC->PNIO-CTRL", 1, 1)
• 为了激活总线故障:
RET = IOCTL("KRC->PNIO-CTRL", 1, 0)

 

元素 说明
RET 用于保存 KRL 函数 IOCTL 返还值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-CTRL 总线驱动程序的名称
1、1 用于停用总线故障的 IOCTL 命令
1、0 用于激活总线故障的 IOCTL 命令

 

返回值RET

 

说明
0 IOCTL 命令成功执行。
-1 未找到指定的总线驱动程序。
-3 KRL 函数 IOCTL 包含一个错误参数。
-4 由于出现总线故障,不允许激活。

 

6.通过 KRL 查询机器人控制器的节能模式

运行时,可在一个程序之内查询机器人控制器的节能模式。为此,必须在程序中借助 KRL 函数 IOCTL 编程一个查询节能模式的命令。

句法
RET = IOCTL("PNIO-DEV",1002,0)

 

元素 说明
RET 用于保存 KRL 函数 IOCTL 返回值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-DEV 总线驱动程序的名称
1002 用于查询机器人控制器节能模式的 IOCTL 命令

 

返回值RET

 

说明
-1 查询时出现了一个错误。
2 机器人控制器处于制动器已制动的状态下。
240 机器人控制器处于 Energy_Saving_Disabled 状态下。
255 机器人控制器处于 Ready_To_Operate 状态下。
256 PROFIenergy 未初始化。
257 机器人控制器处于过度状态下

 

通过 KRL 重启总线系统

总线故障后,可在运行时在程序之内重启总线系统。为此,必须在程序中借助KRL 函数 IOCTL 编程一个重启总线系统的命令。

句法
RET = IOCTL("PNIO-CTRL",12,0)

 

元素 说明
RET 用于保存 KRL 函数 IOCTL 返还值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-CTRL 总线驱动程序的名称
12 用于重启总线系统的 IOCTL 命令

 

返回值RET

 

说明
0 重启总线系统成功。
3 重启总线系统失败。

 

7.通过 KRL 查询有故障的 PROFINET 设备数量

运行时,可在一个程序之内查询总线系统上有故障的 PROFINET 设备数量。为此,必须在程序中借助 KRL 函数 IOCTL 编写一个查询故障设备的命令。
RET = IOCTL("PNIO-CTRL",32774,0)

 

元素 说明
RET 用于保存 KRL 函数 IOCTL 返回值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-CTRL 总线驱动程序的名称
32774 用于查询故障设备数量的 IOCTL 命令

 

返回值RET

 

说明
0 总线系统上的所有设备功能完好。
>0 故障设备的数量

 

8.通过 KRL 查询已配置的 PROFINET 设备数量

运行时,可在一个程序之内查询总线系统上已配置的 PROFINET 设备数量。为此,必须在程序中借助 KRL 函数 IOCTL 编写一个查询已配置设备的命令。

句法
RET = IOCTL("PNIO-CTRL",32775,0)

 

元素 说明
RET 用于保存 KRL 函数 IOCTL 返回值的变量。该变量的数据类型为 INT,在使用之前必须在程序中声明。
IOCTL 用于向总线驱动程序发送命令的 KRL 函数
PNIO-CTRL 总线驱动程序的名称
32775 用于查询已配置设备数量的 IOCTL 命令

 

返回值RET

 

说明
-1 执行 IOCTL 命令时出错。
>0 已配置设备的数量

 

审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分