# US 10,503,617 B2 · Method for synchronizing redundant controllers without hardware support

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,617 B2
- Document ID: US10503617B2
- Status: Granted
- Kind: B2
- Application number: 15/435,215
- Filed: 2017-02-16
- Published: 2018-08-16
- Granted: 2019-12-10
- Earliest claimed: 2017-02-16
- Assignees: Honeywell International Inc.
- Applicants: Honeywell International Inc.
- Inventors: William Russell Massey, Jr.; Raj Bandekar
- Web page: https://patentgrep.com/patent/US10503617B2

## CPC

- G06F 11/2043: {where the redundant components share a common memory address space}
- G05B 19/0428: {Safety, monitoring (G05B19/0423 takes precedence)}
- G06F 11/2005: {using redundant communication controllers}
- G06F 11/2033: {switching over of hardware resources}
- G06F 11/2038: {with a single idle spare processing component}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G05B 2219/24186: Redundant processors are synchronised
- Y02P 90/02: Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G05B: CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS (systems for controlling or regulating non-electric variables G05D; systems for regulating electric or magnetic variables G05F; control devices or systems insofar as characterised by mechanical features only G05G)
- Y02P: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS

## Abstract

An industrial process control system comprises a primary controller coupled with a buffer and a primary memory. The primary controller is configured to create at least one redundant data type based on at least one base data type. The at least one redundant data type includes tracked operators that are different from corresponding operators of the at least one base data type. The tracked operators include an assignment function that is a same assignment function performed by the corresponding operators of the at least one base data type, and a transfer function. The primary controller is further configured to perform the assignment function on a piece of data to assign the piece of data to an address in the primary memory, perform the transfer function to transfer the piece of data to a buffer, and transfer contents of the buffer to a backup memory.

## Claims

### Claim 1

A system comprising:
a primary controller coupled with a buffer and a primary memory, the primary controller configured to:
create at least one redundant data type based on at least one base data type, the at least one redundant data type including tracked operators that are different from corresponding operators of the at least one base data type, the tracked operators of the at least one redundant data type including an assignment function that is a same assignment function performed by the corresponding operators of the at least one base data type, the tracked operators of the at least one redundant data type further including a transfer function that transfers data assigned with the assignment function into a buffer,
perform the assignment function on a piece of data to assign the piece of data to an address in the primary memory;
determine whether the data to be assigned to the primary memory is different from the data already stored at the assignment address in the primary memory by:
receiving the address and size of the piece of data,
reading the received data size from the primary memory at the received address, and
perform the transfer function, when data assigned to the primary memory is different from data already stored at the assignment address, to transfer the piece of data to the buffer; and
transfer contents of the buffer to a backup memory.

### Claim 2 (depends on 1)

The system of claim 1, wherein the primary controller is further configured to:
prior to transferring the contents of the buffer to the backup memory, determine that the buffer has fulfilled a predetermined condition.

### Claim 3 (depends on 2)

The system of claim 2, wherein the predetermined condition is that the buffer has reached a predetermined capacity threshold.

### Claim 4 (depends on 1)

The system of claim 1, wherein the primary controller is configured to perform the assignment function and the transfer function in parallel.

### Claim 5 (depends on 1)

The system of claim 1, wherein the primary controller is further configured to transfer the piece of data to the buffer if the piece of data is different than a piece of data that already exists at the address in the primary memory.

### Claim 6 (depends on 1)

The system of claim 1, further comprising a secondary controller coupled to the backup memory.

### Claim 7 (depends on 1)

The system of claim 1, wherein the at least one redundant data type further includes untracked operators.

### Claim 8

A method comprising:
creating at least one redundant data type based on at least one base data type, the at least one redundant data type including tracked operators that are different from corresponding operators of the at least one base data type, the tracked operators of the at least one redundant data type including an assignment function that is a same assignment function performed by the corresponding operators of the at least one base data type, the tracked operators of the at least one redundant data type further including a transfer function that transfers data assigned with the assignment function into a buffer;
performing the assignment function on a piece of data to assign the piece of data to an address in a primary memory;
determine whether the data to be assigned to the primary memory is different from the data already stored at the assignment address in the primary memory by:
receiving the address and size of the piece of data,
reading the received data size from the primary memory at the received address, and
performing the transfer function, when data assigned to the primary memory is different from data already stored at the assignment address, to transfer the piece of data to the buffer; and
transferring contents of the buffer to a backup memory.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
prior to transferring the contents of the buffer to the backup memory, determining that the buffer has fulfilled a predetermined condition.

### Claim 10 (depends on 9)

The method of claim 9, wherein the predetermined condition is that the buffer has reached a predetermined capacity threshold.

### Claim 11 (depends on 8)

The method of claim 8, wherein performing the assignment function and the performing the transfer function occur in parallel.

### Claim 12 (depends on 8)

The method of claim 8, wherein the transfer of the piece of data to the buffer is performed if the piece of data is different than a piece of data that already exists at the address in the primary memory.

### Claim 13

A non-transitory computer readable medium embodying a computer program, the computer program comprising computer readable program code that when executed causes at least one processing device to:
create at least one redundant data type based on at least one base data type, the at least one redundant data type including tracked operators that are different from corresponding operators of the at least one base data type, the tracked operators of the at least one redundant data type including an assignment function that is a same assignment function performed by the corresponding operators of the at least one base data type, the tracked operators of the at least one redundant data type further including a transfer function that transfers data assigned with the assignment function into a buffer,
perform the assignment function on a piece of data to assign the piece of data to an address in a primary memory;
determine whether the data to be assigned to the primary memory is different from the data already stored at the assignment address in the primary memory by:
receiving the address and size of the piece of data,
reading the received data size from the primary memory at the received address, and
perform the transfer function, when data assigned to the primary memory is different from data already stored at the assignment address, to transfer the piece of data to the buffer; and
transfer contents of the buffer to a backup memory.

### Claim 14 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the computer readable program code when executed causes the at least one processing device to:
prior to transferring the contents of the buffer to the backup memory, determine that the buffer has fulfilled a predetermined condition.

### Claim 15 (depends on 14)

The non-transitory computer readable medium of claim 14, wherein the predetermined condition is that the buffer has reached a predetermined capacity threshold.

### Claim 16 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein performing the assignment function and the performing the transfer function occur in parallel.

### Claim 17 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the computer readable program code when executed causes the at least one processing device to perform the transfer of the piece of data to the buffer if the piece of data is different than a piece of data that already exists at the address in the primary memory.
