IP Library › Granted Patent US 11,599,081
Granted Patent B2
US 11,599,081 · App. 16/575,606 · Granted Mar 7, 2023

Method and apparatus for proxy execution and computation with an industrial controller

Inventors: David A. Johnston (Painesville, OH); Michael J. Viste (Milwaukee, WI); Ryan L. Schnell (Aurora, OH)
Assignee: Rockwell Automation Technologies, Inc.
G05B19/052G05B19/045G05B19/054G05B19/058G06F1/03G05B2219/1204G05B2219/13009G05B2219/13058G05B2219/13164
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,599,081
App. No.
16/575,606
Granted
Mar 7, 2023
Kind
B2
Abstract

An industrial controller that integrates execution of a control program on the industrial controller with execution of additional functions on an external processing device is disclosed. Integrating the external processing device provides an improved system for third party development of control functions which may be unique to specific applications. The system manages communication between the industrial controller and the external processing device, manages access to data stored in the industrial controller, and makes the details of the integration transparent to the programmer.

Claims (85)

1. An industrial controller configured to coordinate execution of an external processing device with the industrial controller, the industrial controller comprising:

a memory device operative to store a control program, metadata, a plurality of data fields, and a state machine, wherein:

the metadata defines the external processing device and communication between the external processing device and the industrial controller, and

the plurality of data fields includes at least one data structure utilized by the control program, the at least one data structure selected from a hardware table, a connection list, an association list, and an I/O table;

a processor operative to execute the control program, wherein:

the control program includes at least one proxy instruction to be executed on an external processing device,

the control program includes a plurality of additional instructions other than the at least one proxy instruction,

at least one of the plurality of additional instructions is configured to access data in the plurality of data fields during execution on the processor,

at least one of the plurality of additional instructions is configured to change a state of the state machine; and

an inter-processor interface operative to integrate execution of the at least one proxy instruction on the external processing device with execution of the plurality of additional instructions on the processor, wherein:

the at least one proxy instruction obtains the metadata defining the external processing device and communication between the external processing device and the industrial controller,

the at least one proxy instruction identifies the data from the plurality of data fields, wherein the data is required for execution of the corresponding proxy instruction,

the inter-processor interface reads the data and the state of the state machine from the memory device and transmits the data to the external processing device according to the communication defined in the metadata,

the processor continues execution of the plurality of additional instructions to change the state of the state machine in tandem with the external processing device processing the data,

the inter-processor interface receives a response from the external processing device indicating a status of processing the at least one proxy instruction, and

the at least one proxy instruction changes the state of the state as a function of the response received from the external processing device.

2. The industrial controller of claim 1 wherein:

the inter-processor interface establishes a connection between the processor and the external processing device as a function of the metadata to transmit the data to the external processing device when the control program executes the proxy instruction.

3. The industrial controller of claim 1 wherein the at least one proxy instruction includes an in-process status bit and a complete status bit.

4. The industrial controller of claim 3 wherein the inter-processor interface is operative to set and reset the in-process status bit and the complete status bit for each proxy instruction as a function of the response received from the external processing device.

5. The industrial controller of claim 1 wherein:

the external processing device is operative to change the data obtained from the plurality of data fields during execution of the at least one proxy instruction,

the inter-processor interface is further configured to receive the changed data from the external processing device, and

the inter-processor interface writes the changed data to the data in the plurality of data fields in the memory device of the industrial controller.

6. The industrial controller of claim 1 wherein the at least one proxy instruction includes at least one user definable field, wherein the at least one user definable field is configured when the control program is developed.

7. The industrial controller of claim 1 wherein the external processing device is selected from one of a processing device physically external to the industrial controller, a processing thread executing in parallel on the processor with a thread executing the control program, and a module insertable into a chassis of the industrial controller.

8. A method of coordinating execution of an external processing device with an industrial controller, the method comprising the steps of:

executing a plurality of control instructions on a processor of an industrial controller, wherein:

the plurality of control instructions access a state machine and data from a plurality of data fields stored in memory of the industrial controller,

the plurality of data fields includes at least one data structure utilized by the control program, the at least one data structure selected from a hardware table, a connection list, an association list, and an I/O table;

the plurality of control instructions includes at least one proxy instruction, and

the plurality of control instructions includes a plurality of additional instructions other than the at least one proxy instruction, wherein at least one of the plurality of additional instructions is configured to change a state of the state machine;

executing the at least one proxy instruction on the processor of the industrial controller, wherein:

the at least one proxy instruction obtains metadata defining the external processing device and communication between the external processing device and the industrial controller,

the at least one proxy instruction defines at least one function to be executed on an external processing device,

the at least one proxy instruction defines the data from the plurality of data fields,

the data obtained by the at least one proxy instruction is shared data,

at least one of the plurality of additional instructions is configured to access the shared data, and

the shared data is required for execution of the at least one proxy instruction;

reading the shared data and a state of the state machine with an inter-processor interface executing on the industrial controller responsive to executing the at least one proxy instruction;

reading metadata from the memory with the inter-processor interface responsive to executing the at least one proxy instruction, wherein the metadata defines the external processing device and communication between the external processing device and the industrial controller;

transmitting the shared data to the external processing device with the inter-processor interface according to the communication defined in the metadata;

executing at least one of the plurality of additional instructions configured to change a state of the state machine in tandem with the external processing device processing the shared data;

receiving at the inter-processor interface a response from the external processing device indicating a status of executing the at least one function defined by the at least one proxy instruction; and

changing the state of the state machine with the at least one proxy instruction as a function of the response received from the external processing device.

9. The method of claim 8 further comprising the step of:

establishing a connection between the processor and the external processing device as a function of the metadata to transmit the shared data to the external processing device when the control program executes the proxy instruction.

10. The method of claim 8 wherein the at least one proxy instruction includes an in-process status bit and a complete status bit.

11. The method of claim 10 further comprising the step of setting a value of the in-process status bit and a value of the complete status bit responsive to the response received from the external processing device.

12. The method of claim 8 wherein the inter-processor interface transmits an initial value of the shared data to the external processing device, the method further comprising the steps of:

receiving a changed value of the shared data from the external processing device at the inter-processor interface; and

writing the changed value of the shared data to the data in the plurality of data fields in the memory of the industrial controller with the inter-processor interface.

13. The method of claim 8 wherein the at least one proxy instruction includes at least one user definable field configured when the control program is developed.

14. The method of claim 8 wherein the external processing device is selected from one of a processing device physically external to the industrial controller, a processing thread executing in parallel on the processor of the industrial controller with a thread executing the plurality of control instructions, and a module insertable into a chassis of the industrial controller.

15. A processor module for an industrial controller configured to coordinate execution of an external processing device with the industrial controller, the processor module comprising:

a memory operative to store a control program, a plurality of data fields, and a state machine; and

a processor operative to execute the control program, wherein:

the control program includes at least one proxy instruction,

the control program includes a plurality of control instructions other than the at least one proxy instruction,

at least one of the plurality of control instructions changes a state of the state machine,

the plurality of data fields includes shared data changed by both the plurality of control instructions and the at least one proxy instruction,

the shared data includes the state of the state machine;

the at least one proxy instruction obtains shared data required for execution of the corresponding proxy instruction,

the at least one proxy instruction defines at least one function to be executed on an external processing device, and

the processor is further operative to execute the at least one proxy instruction by:

reading the shared data,

transmitting the shared data to the external processing device,

continuing execution of the plurality of control instructions to change the state of the state machine during execution of the at least one proxy instruction,

receiving a response from the external processing device indicating a status of processing the at least one proxy instruction, and

changing the state of the state machine responsive to receiving the response from the external processing device.

16. The processor module of claim 15 wherein:

the memory is further operative to store a table of external processing devices,

the table defines metadata corresponding to each of the external processing devices in the table,

each of the at least one proxy instructions identifies one of the external processing devices in the table on which the corresponding proxy instruction is to be executed, and

the processor is further operative to:

read the metadata corresponding to the at least one proxy instruction from the table when the control program executes the proxy instruction, and

establish a connection between the processor and the external processing device as a function of the metadata to transmit the data to the external processing device.

17. The processor module of claim 15 wherein:

the at least one proxy instruction includes an in-process status bit and a complete status bit, and

the processor is further operative to set and reset the in-process status bit and the complete status bit for each proxy instruction as a function of the response received from the external processing device.

18. The processor module of claim 15 wherein:

the external processing device is operative to change the shared data during execution of the at least one proxy instruction, and

the processor is further operative to:

receive changed data from the external processing device, and

write the changed data to the shared data in the plurality of data fields.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2019
From: JOHNSTON, DAVID A.; VISTE, MICHAEL J.; SCHNELL, RYAN L.
To: ROCKWELL AUTOMATION TECHNOLOGIES, INC.
Reel/Frame 050428/0716 →
Continuity (2)
Provisional Application 62760568 · Nov 13, 2018
Related Publication 20200150614A1 · May 14, 2020