IP Library › Granted Patent US 11,789,421
Granted Patent B2
US 11,789,421 · App. 17/406,775 · Granted Oct 17, 2023

Efficient client updates using patience difference algorithm in a unidirectional data flow architecture for industrial automation design

Inventor: Jeffrey Vertosick (Brecksville, OH)
Assignee: Rockwell Automation Technologies, Inc.
G05B19/0426G05B19/0421G06F8/30G05B2219/23291G05B2219/23333
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,789,421
App. No.
17/406,775
Granted
Oct 17, 2023
Kind
B2
Abstract

An industrial integrated development environment (IDE) identifies modifications to an industrial control program using a combination of program hashing and text differencing. The system performs deep-level hashing of the control program's text model to obtain hash data comprising rung-level hash values that collectively represent the current state of the program. When edits to the program are received, the modified text model is hashed again to yield modified hash data, and differencing analysis is performed on the initial and modified hash data. Differences between the two sets of hash values are used to identify portions of the control program that have been modified so that the targeted updates to a logic view of the program can be implemented. This allows the logic view to be updated without redrawing the entire view, and without the need to store multiple copies of the program's object model for comparison purposes.

Claims (73)

1. A system, comprising:

a memory; and

a processor, operatively coupled to the memory that executes executable components stored on the memory, wherein the executable components comprise:

a user interface component configured to display a program development interface on a client device, the program development interface configured to render a logic view of an industrial control program;

a project generation component configured to generate a text model of the industrial control program in accordance with programming input submitted via the user interface component;

a hashing component configured to

generate initial hash data based on content of the text model, and

in response to receipt of one or more edits to the industrial control program, generate modified hash data based on updated content of the text model; and

a difference detection component configured to identify portions of the industrial control program that have been modified by the one or more edits based on comparative analysis of the initial hash data and the modified hash data,

wherein the user interface component is further configured to perform targeted updates to the logic view of the industrial control program, the targeted updates directed to the portions of the industrial control program identified by the difference detection component.

2. The system of claim 1 , wherein the hashing component is configured to, for a line of the industrial control program,

generate element-level hash values for respective program elements included in the line,

generate leg-level hash values for respective legs of the line, and

generate a rung-level hash value based on an aggregation of the element-level hash values and the leg-level hash values,

wherein the initial hash data and the modified hash data comprise at least one of the rung-level hash value, the leg-level hash values, or the element-level hash values.

3. The system of claim 2 , wherein the hashing component generates one of the element-level hash values for a program element based on a type of the program element and values of one or more parameters associated with the program element.

4. The system of claim 3 , wherein the program element is at least one of a normally open contact, a normally closed contact, an output coil, a timer, a counter, or an instruction block.

5. The system of claim 2 , wherein the leg-level hash values are based on aggregations of element-level hash value calculated for program elements contained on the respective legs.

6. The system of claim 1 , wherein the comparative analysis is a patience difference algorithm.

7. The system of claim 1 , wherein the comparative analysis

identifies correspondences between values of the modified hash data and corresponding values of the initial hash data,

identifies a value of the modified hash data that has changed relative to its corresponding value in the initial hash data, and

identifies, as one of the portions of the industrial control program that have been modified, a rung of the industrial control program corresponding to the value of the modified hash data.

8. The system of claim 1 , wherein the comparative analysis

identifies correspondences between values of the modified hash data and corresponding values of the initial hash data,

identifies a value of the modified hash data that does not have a corresponding value in the initial hash data, and

identifies, as one of the portions of the industrial control program that has changed, a newly added logic rung corresponding to the value of the modified hash data.

9. The system of claim 1 , wherein the comparative analysis

identifies correspondences between values of the modified hash data and corresponding values of the initial hash data,

identifies a value of the initial hash data that does not have a corresponding value in the modified hash data, and

identifies, as one of the portions of the industrial control program that has changed, a deleted logic rung corresponding to the value of the initial hash data.

10. The system of claim 1 , wherein the user interface component is configured to display the program development interface via a web browser.

11. A method, comprising:

generating, by a system comprising a processor, a text model of an industrial control program;

rendering, by the system, a logic view of the industrial control program on a client device via a program development interface;

generating, by the system, initial hash data based on content of the text model; and

in response to receipt of one or more edits to the industrial control program:

generating, by the system, modified hash data based on updated content of the text model;

identifying, by the system, portions of the industrial control program that have been modified by the one or more edits based on comparative analysis of the initial hash data and the modified hash data; and

performing, by the system, targeted updates to portions of the logic view corresponding to the portions of the industrial control program.

12. The method of claim 11 , wherein the generating of the initial hash data and the generating of the modified hash data respectively comprise:

generating, for a line of the industrial control program, element-level hash values for respective program elements included in the line,

generating leg-level hash values for respective legs of the line, and

generating a rung-level hash value based on an aggregation of the element-level hash values and the leg-level hash values, and

generating the initial hash data and the modified hash data to include at least one of the rung-level hash value, the leg-level hash values, or the element-level hash values.

13. The method of claim 12 , wherein the generating of the element-level hash values comprises generating one of the element-level hash values for a program element of the industrial control program based on a type of the program element and values of one or more parameters associated with the program element.

14. The method of claim 13 , wherein the program element is at least one of a normally open contact, a normally closed contact, an output coil, a timer, a counter, or an instruction block.

15. The method of claim 11 , wherein the comparative analysis is a patience difference algorithm.

16. The method of claim 11 , wherein the identifying of the portions of the industrial control program comprises:

identifying correspondences between values of the modified hash data and corresponding values of the initial hash data,

identifying a value of the modified hash data that has changed relative to its corresponding value in the initial hash data, and

identifying, as one of the portions of the industrial control program that have been modified, a rung of the industrial control program corresponding to the value of the modified hash data.

17. The method of claim 11 , wherein the identifying of the portions of the industrial control program comprises:

identifying correspondences between values of the modified hash data and corresponding values of the initial hash data,

identifying a value of the modified hash data that does not have a corresponding value in the initial hash data, and

identifying, as one of the portions of the industrial control program that has changed, a newly added logic rung corresponding to the value of the modified hash data.

18. The method of claim 11 , wherein the identifying of the portions of the industrial control program comprises:

identifying correspondences between values of the modified hash data and corresponding values of the initial hash data,

identifying a value of the initial hash data that does not have a corresponding value in the modified hash data, and

identifying, as one of the portions of the industrial control program that has changed, a deleted logic rung corresponding to the value of the initial hash data.

19. A non-transitory computer-readable medium having stored thereon instructions that, in response to execution, cause a system comprising a processor to perform operations, the operations comprising:

generating a text model of an industrial control program;

rendering a logic view of the industrial control program on a client device via a program development interface;

generating initial hash data based on content of the text model; and

in response to receipt of one or more edits to the industrial control program:

generating modified hash data based on updated content of the text model;

identifying portions of the industrial control program that have been modified by the one or more edits based on comparative analysis of the initial hash data and the modified hash data; and

performing targeted updates to portions of the logic view corresponding to the portions of the industrial control program.

20. The non-transitory computer-readable medium of claim 19 , wherein the generating of the initial hash data and the generating of the modified hash data respectively comprise:

generating, for a line of the industrial control program, element-level hash values for respective program elements included in the line,

generating leg-level hash values for respective legs of the line, and

generating a rung-level hash value based on an aggregation of the element-level hash values and the leg-level hash values, and

generating the initial hash data and the modified hash data to include at least one of the rung-level hash value, the leg-level hash values, or the element-level hash values.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2021
From: VERTOSICK, JEFFREY
To: ROCKWELL AUTOMATION TECHNOLOGIES, INC.
Reel/Frame 057233/0134 →
Continuity (1)
Related Publication 20230058554A1 · Feb 23, 2023