准备配方
在流程集成模式下启动 MERLIC 时,将自动准备已设置为默认配方的 MERLIC 配方。但是,如果要使用不同的配方文件来执行,或者没有将配方设置为默认值,您可以使用“RecipeManagement”对象中提供的方法来准备配方。“RecipeManagement”对象还可用于检查视觉系统上当前可用的配方,如获取配方列表主题中所述。
下面我们将介绍准备配方的不同方法以及如何检查配方是否可以使用。
成功执行准备配方的方法并不意味着配方现在可以使用。它只是表示指令已在 Communicator 中成功排队。因此,您应在准备配方后检查配方是否处于活动状态并可执行。
使用“PrepareRecipe”方法
- 在“Address Space”中右键单击“RecipeManagement”对象的“PrepareRecipe”节点,然后选择“Call...”。
- 在“ExternalId”或“InternalIdIn”输入参数中指定要准备的相应配方的 ID。由于 MERLIC 当前不区分外部 ID 和内部 ID,因此您可以选择任一参数。
- 单击“...”按钮打开“Edit Value”窗口。
- 在“Id”的文本字段中键入配方 ID。
- 单击“Write”按钮确认设置。
- 单击“Call”按钮准备指定的配方。如果输出参数“Error”返回 0,则表示调用成功。如果配方已准备好,则输出参数“IsCompleted”将被设置为“true”。
- 检查配方是否处于活动状态并可执行,如检查已准备的配方部分中所述。
使用配方对象的“Prepare”方法
使用 PLC 时推荐使用此方法。
“Recipes”文件夹中的每个配方对象均提供准备和取消准备相应配方的方法。下面我们将介绍如何使用配方对象的“Prepare”方法准备配方。
- 单击“RecipeManagement”对象的“Recipes”文件夹旁边的箭头以显示所有可用的配方对象。
- 单击待准备的相应配方对象旁边的箭头以显示其属性和方法。
- 右键单击“Prepare”节点,然后选择“Call...”。
- 单击“Call”按钮准备指定的配方。如果输出参数“Error”返回 0,则表示调用成功。如果配方已准备好,则输出参数“IsCompleted”将被设置为“true”。有关提供的输出参数的更多信息,请参阅下面的“Prepare”方法的输出参数部分。
- 检查配方是否处于活动状态并可执行,如检查已准备的配方部分中所述。
“Prepare”方法的输出参数
|
参数 |
数据类型 |
描述 |
|---|---|---|
|
IsCompleted |
Boolean |
此输出参数表示一个标记,用于指示在方法返回之前配方是否已完全准备好。 在 MERLIC 中,此标记仅在配方已提前准备好的情况下才为真。 |
|
Error |
Int32 |
此输出参数提供有关操作是否成功的信息。返回值 0 表示操作成功。返回 0 以外的值表示请求的操作不成功,并且不应接受此方法中的其他输出参数。 |
检查已准备的配方
准备好配方后,您可以检查相应配方是否处于活动状态并可启动执行,例如“StartSingleJob”。成功执行准备配方的方法并不意味着配方现在可以使用。它只是表示指令已在 Communicator 中成功排队。对于人类用户来说,这几乎是即时的,但是对于 PLC 来说,在方法调用和视觉系统的响应之间存在一定的延迟。因此,我们建议在启动执行之前检查相应配方是否处于活动状态。检查可有多种方法,如下一部分中所述。
除以下方法之外,您还可以在“Event View”上侦听具有相应配方 ID 的“RecipePrepared”事件,以监视配方是否处于活动状态。有关如何监视事件的更多信息,请参阅监视事件和当前状态主题。
使用“RecipeManagement”对象
您可以使用“GetRecipeListFiltered”方法或“Recipes”文件夹中的相应配方对象,来检查特定配方是否处于活动状态并可执行。
- 调用输入参数“IsPrepared”设置为“true”的“GetRecipeListFiltered”方法,然后检查是否返回了所需配方的 ID。
- 或者,单击相应配方对象的“IsPrepared”节点,然后在“Attributes”窗口中检查值是否为“true”。
使用“VisionCompanion”对象
如果您在 MERLIC RTE Setup 中启用了“VisionCompanion”,您可以在“SystemInfo”对象或相应“JobExecutor”对象的“IsActive”变量中检查哪个配方当前已准备。
- 单击“SystemInfo”对象的“PreparedRecipeIds”节点,然后在“Attributes”窗口中检查是否返回了所需配方的 ID。
- 或者,单击相应“JobExecutor”对象的“IsActive”节点,然后在“Attributes”窗口中检查值是否为“true”。






