# US 5,715,439 A · Bi-directional co-processor interface

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

- Number: US 5,715,439 A
- Document ID: US5715439A
- Status: Granted
- Kind: A
- Application number: 08/762,650
- Filed: 1996-12-09
- Granted: 1998-02-03
- Earliest claimed: 1996-12-09
- Assignees: Allen-Bradley Company, Inc.
- Inventors: Otomar Schmidt; Richard S. Gunsaulus; Ronald E. Schultz; Charles M. Rischar; Jeffrey W. Brooks
- Web page: https://patentgrep.com/patent/US5715439A

## CPC

- G06F 9/3881: {Arrangements for communication of instructions and data}
- G05B 19/052: {Linking several PLC's}
- G06F 9/3879: {for non-native instruction execution, e.g. executing a command; for Java instruction set}
- G06F 9/4486: {Formation of subprogram jump address}
- G05B 2219/15127: Bit and word, byte oriented instructions, boolean and arithmetic operations
- 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)

## Abstract

A co-processor interface allows both a general processor and a relay ladder processor to make repeated calls to each other in the execution of subroutines. A register transfer instruction detected by the relay ladder processor triggers a suspension of the general processor. Return of control to the general processor is accomplished at the same time a register value is provided to the general processor that the general processor uses to reinitialize its program counter. For most single level transfers of control, a single transition instruction between the general processor to the relay ladder processor is sufficient to perform a call.

## Claims

### Claim 1

An industrial controller for executing a user program having relay ladder control instructions and general computer instructions, the controller comprising:
a relay ladder processor having a first program counter identifying instructions of the user program for the relay ladder processor to execute;
a general processor having a second program counter identifying instructions of the user program for the general processor to execute;
wherein the relay ladder processor operates to:
(i) execute the relay ladder control instructions identified by the first program counter;
(ii) respond to at least one first transition instruction by transferring a new value to the second program counter of a general processor and transferring control to the general processor; and
(iii) respond to at least one first return instruction by returning control to the general processor at an old value of the second program counter;
and wherein the general processor operates to:
(i) execute the general computer instructions identified by the second program counter;
(ii) respond to at least one second transition instruction by transferring a new value to the first program counter of the relay ladder processor and transferring control to the relay ladder processor; and
(iii) respond to at least one second return instruction by returning control to the relay ladder processor at an old value of the first program counter.

### Claim 2

The industrial controller as recited in claim one wherein the general processor responds to the second transition instruction also by saving a value of the first program counter prior to transferring a new value to the first program counter.

### Claim 3 (depends on 1)

The industrial controller of claim 1 wherein the second transition instruction is an instruction requesting a value of a register from the relay ladder processor.

### Claim 4 (depends on 3)

The industrial controller of claim 3 wherein the instruction requesting a value of a register from the relay ladder processor is followed by an instruction transferring the requested value to the second program counter.

### Claim 5 (depends on 4)

The industrial controller of claim 4 wherein the general processor includes a wait input suspending operation of the general processor when the wait input is asserted and wherein the instruction requesting a value of a register causes the relay ladder processor to assert the wait line.

### Claim 6 (depends on 4)

The industrial controller of claim 4 wherein the first transition instruction is an instruction returning to the general processor a value in response to the request for a value of a register.

### Claim 7 (depends on 4)

The industrial controller of claim 4 wherein the relay ladder processor also
(iv) responds to at least one first transition instruction by transferring a new value to a stack pointer of the general processor; and
and wherein the general processor also:
(iv) responds to at least one second transition instruction by transferring a new value to the stack pointer of the relay ladder processor.

### Claim 8

An industrial controller for executing a user program having relay ladder control instructions and general computer instructions, the controller comprising:
a relay ladder processor having a first program counter identifying instructions of the user program for the relay ladder processor to execute;
a general processor having a second program counter identifying instructions of the user program for the general processor to execute;
wherein the relay ladder processor operates to:
(i) execute the relay ladder control instructions identified by the first program counter;
(ii) respond to at least one first transition instruction by transferring a new value to a stack pointer of the general processor and transferring control to the general processor;
and wherein the general processor operates to:
(i) execute the general computer instructions identified by the second program counter;
(ii) respond to at least one second transition instruction by transferring a new value to the stack pointer of the relay ladder processor and transferring control to the relay ladder processor; p3 whereby the relay ladder processor and general processor may share the same stack and pass parameters via the shared stack.

### Claim 9 (depends on 1)

The industrial controller of claim 1 wherein the relay ladder processor:
responds to an interrupt signal by transferring a new value to the first program counter of the second processor and returning control to the second processor.

### Claim 10 (depends on 1)

The industrial controller of claim 1 wherein the relay ladder processor:
responds to an interrupt signal by transferring a new value to the first program counter of the second processor and returning control to the second processor.

### Claim 11 (depends on 10)

The industrial controller of claim 10 wherein the new value is determined by the type of interrupt.

### Claim 12 (depends on 1)

The industrial controller of claim 1 wherein the relay ladder and general processor include a first and second link register respectively indicating an instruction to execute and wherein the relay ladder and general processor respond to the first and second return instructions by executing an instruction at an address identified by the first and second link registers respectively and wherein the instructions identified by the first and second link registers cause transfer of control between processors.

### Claim 13 (depends on 2)

The industrial controller of claim 2 wherein the general processor saves the value of the first program counter in a stack.

### Claim 14 (depends on 1)

The industrial controller of claim 1 wherein the relay ladder processor after transferring control to the general processor suspends operation to preserve power until control is returned by the general processor to the relay ladder processor.
