Patent ID: 8155769

Claim:
A computer-implemented method for performing industrial control, comprising: storing a vision engine on a vision system, wherein the vision engine is configured to execute vision functions to control a vision element in response to received asynchronous commands; storing an application programming interface (API) and an industrial control application in a programmable controller; wherein the API comprises a plurality of function blocks, including at least one vision function block, that are configured to be included in the industrial control application and provide access to the vision engine, wherein the plurality of function blocks include executable code and state information, and are executable to send the asynchronous commands to the vision engine via a bus, wherein the bus is non-deterministic or deterministic; inserting at least one vision function block of the API into the industrial control application, wherein the industrial control application comprises a graphical program comprising one or more function blocks; executing the industrial control application on the programmable controller based on a scanning architecture that receives inputs from the vision system via the bus, including executing the at least one vision function block to send a corresponding at least one asynchronous command to the vision engine; the vision engine performing at least one vision function corresponding to the at least one vision function block in response to the at least one asynchronous command, and sending resultant data to the industrial control application; and the industrial control application storing the resultant data; wherein the at least one vision function block, when executed multiple times, sends different commands to the vision system based on the state information maintained by the at least one vision function block; and wherein, in response to each respective command, the vision system performs one or more of: continuing performing the at least one vision function, monitoring the performing of the at least one vision function, providing a result of the performing the at least one vision function, or terminating the performing the at least one vision function.