如何使用快速切换Profinet对接
同一设备可以在不同机器人上交替运行。必须使用额外的IOCTL 功能来进行解耦和耦合。如果设备仅在一台机器人上运行,也可以使用这些IOCTL 函数。其他IOCTL 函数只能出于兼容性原因而使用。
l 在具有换刀系统的应用中,总线用户不得永久耦合到工业以太网。
l 冷启动或配置输入输出时,将直接导致工业以太网故障。
l 关闭始终可用功能可防止这些设备在冷启动或重新配置输入/输出端子后逻辑耦合到工业以太网中。
l 这些停用的设备可以在程序运行后重新耦合,不会出现任何问题。
l但是,在项目设置过程中必须考虑将所有工具在物理上和逻辑上集成到工业以太网项目中。
解耦——解耦设备的属性:
l 如果解耦设备与工业以太网或电源分离,则不会触发故障。
l 对解耦设备进行的所有IO操作均无效。
l 解耦设备无法处理读/写故障。
l 解耦时器件的输入已复位为零。
耦合
IOCTL 函数是同步执行的。直到设备再次可用且可写时,此函数才会返回。当耦合的设备不可用时,例如因为它与总线或电源断开连接,则会在超时(默认10 秒)后显示一条消息。
菜单路径: 项目结构ProfiNet 鼠标双击设备设置
通过选中此框将设备设置为始终可用或取消此设置。
“始终可用”选项会影响机器人控制系统在冷启动期间或重新配置I/O 驱动程序时对解耦设备的反应。可以在WorkVisual 内的设备数据中设置“始终可用”。
如果设备未选中“始终可用”选项,则设备会在重新启动或重新配置I/O 驱动程序时自动解耦。为了与设备建立连接,必须使用IOCTL 功能重新耦合设备。
通过HMI 耦合和解耦现场总线用户
1. 选择菜单序列“显示单个变量”。
2.2.在名称字段中输入:
解耦时:
当在机器人上使用该设备时:
=IOCTL('PNIO-CTRL',60,[用户ID])
当在一台或多台机器人上使用该设备时:
=IOCTL('PNIO-CTRL',1060,[用户ID])
耦合时:
当在机器人上使用该设备时:
=IOCTL('PNIO-CTRL',50,[用户ID])
当在一台或多台机器人上使用该设备时:
=IOCTL('PNIO-CTRL',1050,[用户ID])
IOCTL : 用于耦合和解耦的系统变量
通过ProfiNet 驱动程序名称调用PNIO-CTRL :
50/1050=调用耦合
60/1060=调用解耦
用户ID 待耦合或解耦模块的设备号/用户ID
在单变量显示中,每个IOCTL 指令后的当前值窗口中都会以数字形式显示返回值。这个数字有以下不同的含义:
l0 :IOCTL 执行成功。
l1 : 超时- 设备未能在指定时间内耦合或解耦。
l2 :IOCTL 包含不正确的参数- 请检查您的输入!
l-1 : 故障— 无法执行命令。
IOCTL 函数是同步执行的。只有当设备再次可用且可写时,IOCTL 函数才能再次执行。
如果耦合的设备不可用,例如由于与总线或电源断开连接,则超时后将显示一条消息。
如果指定的耦合或解耦时间设计得太短,可以重新设置超时时间。标准设置为10秒,即10000毫秒
RET=IOCTL('PNIO-CTRL',1001,10000)
询问设备状态:
可以使用IOCTL 功能70 查询从设备的状态。
RET=IOCTL('PNIO-CTRL',70,[用户ID] )
RET的返回值:
l4 : 器件已解耦。
l5 : 设备已耦合,但出现错误。
l6 : 设备耦合无错误。
l7 : 设备已解耦,但在PROFINET 控制器内部它仍然处于活动状态。
通过激活或停用总线故障
总线故障默认激活。如果发生总线故障,则会导致活动命令停止和/或阻塞。可以使用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 命令,用于禁用总线故障IOCTL 命令1, 0,用于激活总线故障通过KRL 重新启动总线系统
总线故障后,总线系统可以在程序运行期间重新启动。为此,必须使用KRL 函数IOCTL 在程序中编写重启总线系统的命令。
RET=IOCTL('PNIO-CTRL',12,0)
12IOCTL命令用于重新启动总线系统
审稿人:刘庆