PF_Robot返回值
所有的回调函数都要求返回值。通常,返回值表示操作已正常完成。(常数PF_CALLBACK_SUCCESS)返回值用于更改系统的运作方法。PF_Robot返回值用于更改主要的进程流程,并根据“使用场景”提供不同的运作。根据不同的返回值,开发人员可在各种状况下控制Part Feeding的进程流程。
下面说明PF_Robot回调函数的各返回值。
PF_CALLBACK_SUCCESS:
PF_Robot回调函数结束并且“PF_Robot = PF_CALLBACK_SUCCESS”时,系统会确认下述有效部件(请求的部件)可否在其队列中使用。可使用有效部件时,系统会再次调用PF_Robot函数。交接给PF_Robot的PartID参数为该有效部件的部件编号。可使用有效部件时,由于请求的部件已位于队列中,因此无需获取新图像或使送料器振动。不能使用有效部件时,系统会获取通过PF_Start语句执行的所有部件的新图像。视觉结果被读入各部件队列中,系统判断是否需要使送料器振动。
PF_CALLBACK_RESTART:
PF_Robot回调函数结束并且“PF_Robot = PF_CALLBACK_RESTART”时,不论有效部件队列中是否有可使用的部件,系统都会获取通过PF_Start语句执行的所有部件的新图像。视觉结果被读入所有的部件队列中,系统判断是否需要使送料器振动。PF_CALLBACK_RESTART返回值的主要目的是,从主要Part Feeding进程循环的最初,强制进行新图像的获取、队列的重新读入、重新判断与重新投放等运作。要按拾取&放置的循环获取新图像时,该返回值非常实用。比如,拾取&放置期间错误地切断周边的部件时,如果获取新图像并更新队列,则非常便利。
PF_CALLBACK_RESTART_ACTIVEPART:
PF_Robot回调函数结束并且“PF_Robot = PF_CALLBACK_RESTART_ACTIVEPART”时,系统仅获取有效部件(并非PF_Start语句中记载的所有部件)的新图像。多台机器人要共享同一送料器时,该返回值非常有用。如果使用PF_CALLBACK_RESTART_ACTIVEPART,则可防止部件在多个队列中重复。根据该返回值,仅对有效部件强制获取新图像,并且仅读入有效部件的队列。PF_Start语句中记载的所有其他部件的部件队列会被删除。下面举例说明这方面的情况。
假设送料器平台上有1种物理部件,2台机器人正在从送料器中拾取部件。在该应用中,2种部件被添加至Part Feeding对话框中。不同的机器人编号被分配各部件。此外,各部件的视觉序列带有不同的视觉校准。(相机需要针对特定的机器人进行校准。)即使部件的物理类型仅为1种,也需要创建2个逻辑工具。(每台机器人1个。)PF_Start语句中包含有双方的部件编号。针对双方的逻辑部件获取视觉,然后读入双方的队列。任一视觉序列均用于查找平台上的相同物理部件,因此队列中就会发生坐标重复现象。即使机器人#1拾取部件并从队列中删除,该部件也残留在另一台机器人的队列中。结果,机器人#2就会尝试拾取已被机器人#1删除的部件。PF_CALLBACK_RESTART_ACTIVEPART用于确保仅将部件读入1个队列中。这样的话,就无需特别排序或特别的队列分布。有关使用场景的编程方法详细信息,请参阅以下内容。
2台机器人 - 1种部件