To illustrate the above remarks on recipe management, here is a possible life cycle of a recipe: Note that the method signatures are not necessarily exact here.

  1. A recipe for ProductId-m is created externally (often centrally).
  2. The recipe is pushed to the vision system with ExternalId-1, ProductId-m using AddRecipe
  • It is stored there with ExternalId-1, InternalId-11.
  • It is linked to ProductId-m on the vision system.
  • There are further possible actions on the recipe without any particular order.
  • The recipe may be edited locally later, keeping its ExternalId-1 and receiving InternalId-12.
  • A (binary) different version of the recipe with the same ExternalId-1 may be pushed to the vision system later, receiving InternalId-13.
  • The recipe may be linked later to ProductId-n on the vision system Note that the external recipe management does not concern itself with the InternalIds of the recipes on different vision systems. If there are, due to one of these operations, several recipes on the vision system with identical ExternalIds but different InternalIds, the vision system/server combination has no means of telling which of these was targeted by the environment. It may choose to link all of them, or the newest one, or the latest one pushed (ignoring internally edited ones). This is outside the scope of this specification.
  • The automation system is undergoing a change-over process to a specific product, namely ProductId-m. It will re-tool the vision system
  • by calling PrepareRecipe on ExternalId-1); the vision system then selects one of the existing recipes with ExternalId-1 based on its internal rules.
  • by calling PrepareRecipe on ProductId-m; the vision system then selects one of the existing recipes linked to ProductId-m based on its internal rules.
  • The vision system is commanded to process a specific product
  • by calling a Start… method with ExternalId-1 the vision system then starts processing with the recipe prepared for ExternalId-1.
  • by calling a Start… method with ProductId-m the vision system then starts processing with the recipe prepared for ProductId-m.
  • by calling a Start… method with ExternalId-2 the vision system then throws an error because no such recipe has been added or prepared.
  • by calling a Start… method with ProductId-p the vision system then throws an error because no such recipe has been added or prepared.
  • If there is no error, the vision system carries out its task, going through the Executing state to return tostate Ready waiting for further instructions.
  • There are many other possibilities of errors, e.g. trying to prepare a recipe which is actually a sub-recipe, i.e., not capable of being processed by itself.