Digital Engine Control Apparatus And Method

Anderson, Jr. September 17, 1

Patent Grant 3835819

U.S. patent number 3,835,819 [Application Number 05/319,345] was granted by the patent office on 1974-09-17 for digital engine control apparatus and method. This patent grant is currently assigned to Essex International, Inc.. Invention is credited to Robert L. Anderson, Jr..


United States Patent 3,835,819
Anderson, Jr. September 17, 1974

DIGITAL ENGINE CONTROL APPARATUS AND METHOD

Abstract

The disclosure describes digital apparatus and a digital method for operating a multicylinder internal combustion engine having spark plugs that are fired in response to an electrical fire signal and having fuel injectors that are opened to admit a quantity of fuel in response to an electrical fuel signal having a duration determined by the speed of the engine and the position of a throttle controlled by an operator of the engine.


Inventors: Anderson, Jr.; Robert L. (Pittsburgh, PA)
Assignee: Essex International, Inc. (Fort Wayne, IN)
Family ID: 23241858
Appl. No.: 05/319,345
Filed: December 29, 1972

Current U.S. Class: 123/406.47; 123/480; 123/486; 123/406.6; 701/123
Current CPC Class: F02D 41/2416 (20130101); F02P 5/1512 (20130101); F02D 41/26 (20130101); Y02T 10/46 (20130101); Y02T 10/40 (20130101)
Current International Class: F02D 41/00 (20060101); F02D 41/26 (20060101); F02D 41/24 (20060101); F02P 5/15 (20060101); F02m 052/00 ()
Field of Search: ;123/32EA,119R,139AL,139R,139AW,14MC,14CC ;235/150,150.2,150.21 ;340/172.5

References Cited [Referenced By]

U.S. Patent Documents
2868183 January 1959 Reggio
3054393 September 1962 Schmidt
3606869 September 1971 Huntzinger et al.
3659563 May 1972 Monpetit
3689753 September 1972 Williams et al.
Foreign Patent Documents
2,004,269 Aug 1970 DT
Primary Examiner: Goodridge; Laurence M.
Attorney, Agent or Firm: Molinare, Allegretti, Newitt & Witcoff

Claims



What is claimed is:

1. In a fuel system for an internal combustion engine including a source of fuel for a fuel injection means that is opened to admit a predetermined quantity of fuel to the engine in response to an electrical fuel signal, improved apparatus for controlling the fuel signal comprising:

first means for generating a first engine condition digital number having a value representing a first operating characteristic of the engine;

second means for generating a second engine condition digital number having a value representing a second operating characteristic of the engine;

data memory means for storing each of a plurality of fuel digital words representing a plurality of discrete engine fuel requirements;

program memory means for storing a plurality of instruction digital words representing a plurality of operating instructions;

a program sequencer for initiating the operating instructions in a predetermined order;

selecting means responsive to the operating instructions for producing a resultant fuel digital word representing the engine fuel requirement by selecting one or more of the fuel digital words depending on the values of the first and second engine condition digital numbers;

means for storing the resultant fuel digital word;

means for generating a position signal when the engine is in a predetermined position;

means responsive to the position signal for producing said fuel signal at the end of a predetermined operating interval; and

means for altering the value of the fuel signal as a function of the value of the resultant fuel digital word so that the proper quantity of fuel is admitted to the engine through the fuel injector means.

2. Apparatus, as claimed in claim 1, wherein the first and second means each comprises an analog to digital converter.

3. Apparatus, as claimed in claim 1, wherein the data memory means comprises means for storing each fuel digital word at a predetermined address that represents a predetermined value of the first engine operating characteristic and a predetermined value of the second engine operating characteristic, and wherein the selecting means comprises:

means responsive to the first and second engine condition digital numbers for selecting a plurality of the predetermined addresses, each selected address representing values of the first and second engine operating characteristics that at least approximately correspond to the values of the first and second engine operating characteristics represented by the first and second engine condition digital numbers; and

means for deriving from the fuel digital words stored at the selected addresses a single resultant fuel digital word.

4. Apparatus, as claimed in claim 3, wherein the data memory means comprises means for uniquely identifying each predetermined address by a preselected digital first address number proportional to a preselected value of the first operating characteristic and by a preselected digital second address number proportional to a preselected value of the second operating characteristic.

5. Apparatus, as claimed in claim 4, wherein the selecting means comprises:

means for comparing the first address numbers with the first engine condition digital number and for comparing the second address numbers with the second engine condition digital number, and for selecting a plurality of selected addresses identified by first and second address numbers that approximate the values of the first and second engine condition digital numbers; and

means for interpolating between the fuel digital words stored at the selected addresses to produce the resultant fuel digital word.

6. Apparatus, as claimed in claim 1, wherein the selecting means comprises:

an arithmetic unit for interpolating between the selected fuel digital words in accordance with the operating instructions.

7. Apparatus, as claimed in claim 1, wherein the means for generating a position signal comprises:

a first member mounted to a fixed portion of the engine;

a second member mounted to a cyclically moving portion of the engine so that the second member periodically passes adjacent the first member; and

means for producing the position signal when the second member passes adjacent the first member.

8. Apparatus, as claimed in claim 1, wherein the means responsive to the position signal comprises:

a clock generator for generating clock pulses at a predetermined rate;

a counter;

means for storing an open-time digital number having a value proportional to said predetermined operating interval;

means for loading the open-time digital number into the counter in response to the position signal;

means for transmitting clock pulses to the counter so that the counter counts to a predetermined value; and

means responsive to the counter for commencing the production of the fuel signal after the counter has counted to the predetermined value.

9. Apparatus, as claimed in claim 1, wherein the means for altering comprises:

a clock generator for generating clock pulses at a predetermined rate;

a counter;

means for loading the resultant fuel digital word into the counter in response to the commencement of the fuel signal;

means for transmitting the clock pulses to the counter so that the counter counts to a predetermined value; and

means for terminating the fuel signal when the counter has counted to the predetermined value.

10. Apparatus, as claimed in claim 1, wherein the internal combustion engine comprises a first cylinder and a second cylinder, wherein the fuel injection means comprises a first fuel injector for admitting fuel to the first cylinder and a second fuel injector for admitting fuel to the second cylinder, wherein the fuel signal comprises a first current pulse for controlling the first fuel injector and a second current pulse for controlling the second fuel injector, wherein the means responsive to the position signal comprises means for commencing the production of the first current pulse at the end of a first predetermined operating interval and means for commencing the production of the second current pulse at the end of a second predetermined operating interval, and wherein the means for altering comprises means for separately altering the values of the first and second current pulses so that a quantity of fuel proportional to the value of the resultant fuel digital word is separately admitted to the first cylinder through the first fuel injector and to the second cylinder through the second fuel injector.

11. Apparatus, as claimed in claim 10, wherein the means for storing comprises means for storing a first correction digital number and a second correction digital number and wherein the means for altering comprises means for altering the value of the first current pulse so that a quantity of fuel is admitted to the first cylinder proportional to the combined values of the resultant fuel digital word and the first correction digital number and means for altering the value of the second current pulse so that a quantity of fuel is admitted to the second cylinder proportional to the combined values of the resultant fuel digital word and the second correction digital number.

12. In a control system for an internal combustion engine including means for operating a controlled member in response to an electrical control signal, improved apparatus for controlling the control signal comprising:

first means for generating a first engine condition digital number having a value representing a first operating characteristic of the engine;

second means for generating a second engine condition digital number having a value representing a second operating characteristic of the engine;

data memory means for storing each of a plurality of control digital words representing a plurality of control requirements;

program memory means for storing a plurality of instruction digital words representing a plurality of operating instructions;

a program sequencer for initiating the operating instructions in a predetermined order;

selecting means responsive to the operating instructions for producing a resultant control digital word representing the engine control requirement by selecting one or more of the control digital words depending on the values of the first and second engine condition digital numbers;

means for storing the resultant control digital word; and

means for generating a position signal for controlling the control signal as a function of the value of the resultant control digital word.

13. Apparatus, as claimed in claim 12, wherein the control system comprises an ignition system, wherein the means for operating comprises a means for producing a spark in order to explode a fuel mixture inside the engine, wherein the control signal comprises an electrical fire signal; and wherein the resultant control digital word represents a spark timing requirement of the engine.

14. Apparatus, as claimed in claim 12, wherein the data memory means comprises means for storing each control digital word at a predetermined address that represents a predetermined value of the first engine operating characteristic and a predetermined value of the second engine operating characteristic, and wherein the selecting means comprises:

means responsive to the first and second engine condition digital numbers for selecting a plurality of the predetermined addresses, each selected address representing values of the first and second engine operating characteristics that at least approximately correspond to the values of the first and second engine operating characteristics represented by the first and second engine condition digital numbers; and

means for deriving from the control digital words stored at the selected addresses a single resultant control digital word.

15. Apparatus, as claimed in claim 14, wherein the data memory means comprises means for uniquely identifying each predetermined address by a preselected digital first address number proportional to a preselected value of the first operating characteristic and by a preselected digital second address number proportional to a preselected value of the second operating characteristic.

16. Apparatus, as claimed in claim 15, wherein the selecting means comprises means for comparing the first address numbers with the first engine condition digital number and for comparing the second address numbers with the second engine condition digital number, and for selecting a plurality of the predetermined addresses identified by first and second address numbers that approximate the values of the first and second engine condition digital numbers; and

means for interpolating between the control digital words stored at the selected addresses to produce the resultant control digital word.

17. Apparatus, as claimed in claim 12, wherein the selecting means comprises:

an arithmetic unit for interpolating between the selected control digital words in accordance with the operating instructions.

18. Apparatus, as claimed in claim 12, wherein the means for generating a position signal comprises:

a first member mounted to a fixed portion of the engine;

a second member mounted to a cyclically moving portion of the engine so that the second member periodically passes adjacent the first member; and

means for producing the position signal when the second member passes adjacent the first member.

19. Apparatus, as claimed in claim 12, wherein the means responsive to the position signal comprises:

a clock generator for generating clock pulses at a predetermined rate;

a counter;

means for loading the resultant control digital word into the counter in response to the position signal;

means for transmitting the clock pulses to the counter so that the counter counts to a predetermined value; and

means responsive to the counter for producing the control signal after the counter has counted to the predetermined value.

20. In a system for controlling the operation of an internal combustion engine including a source of fuel for a fuel injection means that is opened to admit a predetermined quantity of fuel to the engine in response to an electrical fuel signal and a spark means for producing a spark cable of igniting the fuel inside the engine in response to a fire signal, improved apparatus for controlling the fuel signal and the timing of the fire signal comprising:

first means for generating a first engine condition digital number having a value representing a first operating characteristic of the engine;

second means for generating a second engine condition digital number having a value representing a second operating characteristic of the engine;

data memory means for storing each of a plurality of fuel digital words representing a plurality of discrete engine fuel requirements and for storing each of a plurality of ignition digital words representing a plurality of ignition timing requirements for the engine;

selecting means for producing a resultant fuel digital word for controlling the amount of fuel injected into the engine and a resultant ignition digital word for controlling the ignition timing of the engine by selecting one or more of the fuel digital words and one or more of the ignition digital words depending on the values of the first and second engine condition digital numbers;

means for storing the resultant fuel digital word and for storing the resultant ignition digital word;

means for generating one or more position signals when the engine is in one or more predetermined positions;

first means responsive to one of the one or more position signals for producing said fuel signal at the end of a first predetermined operating interval;

means for altering the value of the fuel signal as a function of the value of the resultant fuel digital word so that a proper amount of fuel is admitted to the engine through the fuel injection means; and

second means responsive to one of the one or more position signals for producing the fire signal at the end of a second operating interval that is a function of the value of the resultant ignition digital word.

21. Apparatus, as claimed in claim 20, wherein the first operating characteristic comprises engine speed and the second operating characteristic comprises the position of a member controlled by the operator of the engine.

22. Apparatus, as claimed in claim 20, wherein the first and second means each comprises an analog to digital converter.

23. Apparatus, as claimed in claim 20, wherein the data memory means comprises means for storing each fuel digital word and each ignition digital word at a predetermined address that represents a predetermined value of the first engine operating characteristic and a predetermined value of the second engine operating characteristic, and wherein the selecting means comprises:

means responsive to the first and second engine condition digital numbers for selecting a plurality of the predetermined addresses, each selected address representing values of the first and second engine operating characteristics that at least approximately correspond to the values of the first and second engine operating characteristics represented by the first and second engine condition digital numbers; and

means for deriving from the fuel and ignition digital words stored at the selected addresses a single resultant fuel digital word and a single resultant ignition digital word.

24. Apparatus, as claimed in claim 23, wherein the data memory means comprises means for uniquely identifying each predetermined address by a preselected digital first address number proportional to a preselected value of the frst operating characteristic and a preselected digital second address number proportional to a preselected value of the second operating characteristic.

25. Apparatus, as claimed in claim 24, wherein the selecting means comprises:

means for comparing the first address numbers with the first engine condition digital number and for comparing the second address numbers with the second engine condition digital number, and for selecting a plurality of selected addresses identified by first and second address numbers that approximate the values of the first and second engine condition digital numbers; and

means for interpolating between the digital words stored at the selected addresses to produce the resultant fuel digital word and the resultant ignition digital word.

26. Apparatus, as claimed in claim 20, wherein the selecting means comprises:

an arithmetic unit for interpolating between the selected fuel and ignition digital words in accordance with the operating instructions.

27. Apparatus, as claimed in claim 20, wherein the means for generating a position signal comprises:

a first member mounted to a fixed portion of the engine;

a second member mounted to a cylically moving portion of the engine so that the second member periodically passes adjacent the first member; and

means for producing the position signal when the second member passes adjacent the first member.

28. Apparatus, as claimed in claim 20, wherein the first means comprises:

a clock generator for generating clock pulses at a predetermined rate;

a counter;

means for storing an open-time digital number having a value proportional to said first operating interval;

means for loading the open-time digital number into the counter in response to the position signal;

means for transmitting clock pulses to the counter so that the counter counts to a predetermined value; and

means responsive to the counter for commencing the production of the fuel signal after the counter has counted to the predetermined value.

29. Apparatus, as claimed in claim 20, wherein the means for altering comprises:

a clock generator for generating clock pulses at a predetermined rate;

a counter;

means for loading the resultant fuel digital word into the counter in response to the commencement of the fuel signal;

means for transmitting clock pulses to the counter so that the counter counts to a predetermined value; and

means for terminating the fuel signal when the counter has counted to the predetermined value.

30. Apparatus, as claimed in claim 20, wherein the second means comprises:

a clock generator for generating clock pulses at a predetermined rate;

a counter;

means for loading the resultant ignition digital word into the counter in response to the position signal;

means for transmitting the clock pulses to the counter so that the counter counts to a predetermined value; and

means responsive to the counter for producing the fire signal after the counter has counted to the predetermined value.

31. A method of injecting fuel into an internal combustion engine including a source of fuel for a fuel injection means that is opened to admit a predetermined quantity of fuel to the engine in response to an electrical fuel signal, said method comprising the steps of:

storing a plurality of fuel digital words representing a plurality of discrete engine fuel requirements;

storing a plurality of instruction digital words representing a plurality of operating instructions;

initiating the operating instructions in a predetermined order;

generating a first engine condition digital number having a value representing a first operating characteristic of the engine;

selecting under control of the operating instructions one or more of the fuel digital words depending on the values of the first and second engine condition digital numbers so that each selected fuel digital word at least approximately represents the fuel requirement of the engine;

deriving from the one or more selected fuel digital words a resultant fuel digital word representing the engine fuel requirement;

storing the resultant fuel digital word;

generating a position signal when the engine is in a predetermined position;

producing said fuel signal at the end of a predetermined operating interval initiated by the generation of the position signal; and

altering the value of the fuel signal as a function of the resultant fuel digital word so that the proper quantity of fuel is admitted to the engine through the fuel injection means.

32. A method, as claimed in claim 31, wherein the step of storing comprises the step of storing each fuel digital word at a predetermined address that represents a predetermined value of the first engine operating characteristic and a predetermined value of the second engine operating characteristic, and wherein the step of selecting comprises the steps of:

selecting a plurality of the predetermined addresses, each selected address representing values of the first and second engine operating characteristics that at least approximately correspond to the value of the first and second engine operating characteristics represented by the first and second engine condition digital numbers; and

deriving from the fuel digital words stored at the selected addresses a single resultant fuel digital word.

33. A method as claimed in claim 32, wherein the step of storing comprises the step of identifying each predetermined address by a preselected digital first address number proportional to a preselected value of the first operating characteristic and a preselected digital second address number proportional to a preselected value of the second operating characteristic.

34. A method as claimed in claim 33, wherein the step of selecting comprises the steps of:

comparing the first address numbers with the first engine condition digital number;

comparing the second address numbers with the second engine condition digital number;

selecting a plurality of the predetermined addresses identified by first and second address numbers that approximate the values of the first and second engine condition digital numbers; and

interpolating between the fuel digital words stored at the selected addresses to produce the resultant fuel digital word.

35. A method, as claimed in claim 31, wherein the internal combustion engine comprises a plurality of cylinders, wherein the fuel injection means comprises a separate fuel injector for each cylinder of the engine, wherein the fuel signal comprises a separate current pulse for independently operating each fuel injector, wherein the step of producing the fuel signal comprises the steps of producing separate current pulses for opening each fuel injector independently of the other fuel injectors, and wherein the step of altering comprises the step of individually altering the value of each current pulse so that a quantity of fuel proportional to the value of the resultant fuel digital word is separately admitted to the engine through each fuel injector.

36. A method, as claimed in claim 35, wherein the step of storing comprises the step of storing a separate correction digital number for each cylinder of the engine, and wherein the step of altering comprises the steps of separately combining the value of the resultant fuel digital word with the value of each correction digital number so that a quantity of fuel is admitted to each cylinder in proportion to the combined values of the resultant fuel digital word and the correction digital number stored for use with that cylinder.

37. A method of controlling a member of an internal combustion engine that is controllable in response to an electrical control signal, said method comprising the steps of:

storing a plurality of control digital words representing a plurality of engine control requirements;

storing a plurality of instruction digital words representing a plurality of operating instructions;

initiating the operating instructions in a predetermined order;

generating a first engine condition digital number having a value representing a first operating characteristic of the engine;

generating a second engine condition digital number having a value representing a second operating characteristic of the engine;

selecting one or more of the control digital words depending on the values of the first and second engine condition digital numbers so that each selected control digital word at least approximately represents the control requirement of the engine;

deriving from the one or more selected control digital words a resultant control digital word representing the engine control requirement;

storing the resultant control digital word;

generating a position signal when the engine is in a predetermined position; and

controlling the control signal in response to the position signal as a function of the value of the resultant control digital word.

38. A method, as claimed in claim 37, wherein the step of storing comprises the step of storing each control digital word at a predetermined address that represents a predetermined value of the first engine operating characteristic and a predetermined value of the second engine operating characteristic, and wherein the step of selecting comprises the steps of:

selecting a plurality of the predetermined addresses, each selected address representing values of the first and second engine operating characteristics that at least approximately correspond to the values of the first and second engine operating characteristics represented by the first and second engine condition digital numbers; and

deriving from the control digital words stored at the selected addresses a single resultant control digital word.

39. A method, as claimed in claim 38, wherein the step of storing comprises the step of identifying each predetermined address by a preselected digital first address number proportional to a preselected value of the first operating characteristic and a preselected digital second address number proportional to a preselected value of the second operating characteristic.

40. A method, as claimed in claim 39, wherein the step of selecting comprises the steps of:

comparing the first address numbers with the first engine condition digital number;

comparing the second address numbers with the second engine condition digital number;

selecting a plurality of the predetermined addresses identified by first and second address numbers that approximate the values of the first and second engine condition digital numbers; and

interpolating between the control digital words stored at the selected addresses to produce the resultant digital word.

41. A method, as claimed in claim 37, wherein the controllable member is a means for producing a spark capable of exploding a fuel mixture inside the engine, wherein each control digital word represents an ignition time at which a spark must be provided, and wherein the resultant control digital word represents a spark timing requirement of the engine.

42. In a control system for an internal combustion engine comprising first control means for controlling the operation of a first cylinder of the engine in response to a first control signal and second control means for controlling the operation of a second cylinder of the engine in response to a second control signal, improved apparatus for individually controlling the first and second control means comprising:

means for generating a control digital word having a value representing a control requirement of the engine at the predetermined operating condition;

means for storing the control digital word;

means for storing a first correction digital number having a value representing a control requirement characteristic of the first cylinder;

means for storing a second correction digital number having a value representing a control requirement characteristic of the second cylinder;

means for initiating the production of the first control signal and the second control signal;

means for altering the duration of the first control signal so that the operation of the first control means is controlled in proportion to the combined values of the control digital word and the first correction digital number and for altering the duration of the second control signal so that the operation of the second control means is controlled in proportion to the combined values of the control digital word and the second correction digital number.

43. Apparatus, as claimed in claim 42, wherein the means for storing the control digital word comprises a first register, wherein the means for storing the first correction digital number comprises a second register and wherein the means for storing the second correction digital number comprises a third register.

44. Apparatus, as claimed in claim 42, wherein the means for altering comprises:

means for adding the value of the first correction digital number to the value of the control digital word to produce a first corrected control digital word and for adding the value of the second correction digital number to the value of the control digital word to produce a second corrected control digital word;

a clock generator for generating clock pulses at a predetermined rate;

counting means;

means for loading the first corrected control digital word into the counting means and for producing a first output signal when the counting means has been stepped by the clock pulses to a predetermined value;

means responsive to the first output signal for terminating the first control signal;

means for loading the second corrected control digital word into the counting means and for producing a second output signal when the counting means has been stepped by the clock pulses to a predetermined value; and

means for terminating the second control signal in response to the second output signal.

45. Apparatus, as claimed in claim 42, wherein the control system comprises a fuel system, wherein the first control means comprises a first fuel injection means for admitting fuel into the first cylinder, wherein the second control means comprises a second fuel injection means for admitting fuel into the second cylinder and wherein the control requirements each comprise a fuel requirement of a cylinder.

46. A method of regulating a control function of an internal combustion engine so that the engine operates at a predetermined value of an engine operating characteristic, the method comprising the steps of:

storing a target digital number representing the predetermined value of the engine operating characteristic;

converting the value of the engine operating characteristic at a first point in time into a first test digital number;

converting the value of the engine operating characteristic at a second point in time later than the first point in time into a second test digital number;

producing a first logic signal if the second test digital number is greater in value than the target digital number;

producing a second logic signal if the second test digital number is less in value than the target digital number;

producing a third logic signal if the second test digital number is greater in value than the first test digital number;

producing a fourth logic signal if the second test digital number is less in value than the first test digital number;

storing a delta digital number representing a small change in the value of the control function;

changing the control function in an amount proportional to the value of the delta digital number in response to the first and fourth logic signals;

changing the control function in an amount proportional to the value of the delta digital number in response to the second and third logic signals;

changing the control function in an amount proportional to the inverse of the value of the delta digital number in response to the first and third logic signals; and

changing the control function in an amount proportional to the inverse of the value of the delta digital number in response to the second and fourth logic signals.

47. A method, as claimed in claim 41, wherein the control function is the quantity of fuel supplied to the engine, wherein the engine operating characteristic is engine speed, and wherein the delta digital number represents a small change in the quantity of fuel normally provided to the engine.

48. A method for controlling the operation of an internal combustion engine including a source of fuel for a fuel injection means to admit a predetermined quantity of fuel to the engine in response to an electricl fuel signal and spark means for producing a spark capable of igniting the fuel inside the engine in response to a fire signal, said method comprising the steps of:

generating a first engine condition digital number having a value representing a first operating characteristic of the engine;

generating a second engine condition digital number having a value representing a second operating characteristic of the engine;

storing a plurality of fuel digital words and a plurality of ignition digital words in pairs, each pair comprising a fuel digital word and an ignition digital word stored at a single predetermined address that represents a predetermined value of the first engine condition digital number and a predetermined value of the second engine digital number, said fuel digital words representing a plurality of engine fuel requirements and said ignition digital words representing a plurality of discrete spark requirements timing requirements of the engine;

selecting one or more of the predetermined addresses depending on the values of the first and second condition digital numbers;

deriving from the one or more fuel digital words and ignition digital words stored at the one or more selected addresses, a resultant fuel digital word and a resultant ignition digital word;

storing the resultant fuel digital word;

storing the resultant ignition digital word;

generating a position signal when the engine is in a predetermined position;

producing said fuel signal at the end of a predetermined operating interval initiated by the generation of the position signal;

altering the value of the fuel signal as a function of the resultant fuel digital word so that the proper quantity of fuel is admitted to the engine through the fuel injection means; and

generating the fire signal at the end of a variable operating interval initiated by the generation of the position signal, the operating interval being varied as a function of the value of the resultant ignition digital word.

49. A method, as claimed in claim 48, wherein the first operating characteristic comprises engine speed and the second operating characteristic comprises the position of a member controlled by an operator of the engine.

50. A method, as claimed in claim 48, wherein the step of storing comprises the step of identifying each predetermined address by a preselected digital first address number proportional to a preselected value of the first operating characteristic and a preselected digital second address number proportional to a preselected value of the second operating characteristic.

51. A method, as claimed in claim 50, wherein the step of selecting comprises and steps of:

comparing the first address numbers with the first engine condition digital number;

comparing the second address numbers with the second engine condition digital number;

selecting a plurality of a predetermined addresses identified by first and second address numbers that approximate the value of the first and second engine condition digital numbers; and

interpolating between the fuel and ignition digital words stored at the selected addresses to produce the resultant fuel digital word and the resultant ignition digital word.
Description



The apparatus includes a digital data memory that stores 256 fuel digital words each representing a discrete engine fuel requirement at a particular engine speed and throttle position, and 256 ignition digital words each representing a discrete engine spark timing requirement at a particular engine speed and throttle position. These digital words are empirically determined for each different type of engine to be operated and are stored in the data memory before the apparatus begins to control the engine. Each digital word is stored in the memory at an address represented by two digital numbers. The first address number is proportional to a throttle position and the second address number is proportional to the reciprocal of engine speed.

The apparatus also includes a digital program memory for storing operating instructions.

As the engine operates, electronic circuitry converts the engine speed and throttle position into digital electrical signals representing engine condition digital numbers.

Selection circuitry, including an arithmetic unit controlled by the operating instructions, compares the address numbers with the engine condition digital numbers in order to select the data memory addresses most nearly approximating the actual throttle position and speed of the engine.

The circuitry then interpolates between the digital words stored at the selected addresses in order to produce a resultant fuel digital word that corresponds to the engine fuel requirement and a resultant ignition digital word that corresponds to the engine spark timing requirement.

The resultant fuel and ignition digital words are stored in separate registers. An open-time digital word is also stored in order to determine the time at which each injector opens and begins supplying fuel to a cylinder.

A device attached to the engine crankshaft damper generates a position signal when the engine is in a predetermined position. In order to operate the number one cylinder of the engine, the position signal initiates additional signals by which the open-time digital word is loaded into an open-time electronic counter, and the counter is stepped until a predetermined counter value is reached. When the open-time counter reaches its predetermined value, the electrical fuel signal is produced and the number one injector is opened to admit fuel into the number one cylinder. In response to the production of the fuel signal, the resultant fuel digital word is loaded into a fuel electronic counter, and the counter is stepped until a predetermined value is reached. At this time, the fuel signal is terminated so that the number one injector closes. The ignition resultant digital word then is loaded into an ignition electronic counter in response to another position pulse. After the ignition electronic counter is stepped and reaches it predetermined value, the fire signal is produced and the number one spark plug is fired. These techniques are used to individually fire all spark plugs and to individually operate all injectors of the engine.

BACKGROUND OF THE INVENTION

This invention relates to internal combustion engine control and more specifically relates to an apparatus and a method for controlling an internal combustion engine by means of electronic techniques.

During the past several years, the Federal Government, as well as various states, have placed strict controls on the combustion products that can be emitted from automotive engines. In order to meet such controls, designers and engineers have used a variety of techniques for reducing engine emissions. While these techniques have reduced emissions to some extent, they have also adversely affected performance characteristics of the engine. For example, emission control devices have been known to reduce the starting, warm-up, and driveability characteristics of engines and have generally increased fuel consumption.

Some prior engine control techniques employ fuel injectors that are opened in response to an electrical signal in order to admit fuel into an engine cylinder. In order to control the electrical signal, analog electrical circuits have been employed. Experience has shown that these analog circuits are not precise enough to provide long-term accurate control over a fuel injector. Moreover, analog circuits are not well suited to the mass production techniques generally employed by automobile manufactures because small changes in component values can alter the operating characteristics of the circuits sufficiently to impair the accuracy of the fuel quantities injected into the engine cylinders. In addition, changes in component values due to the age and the adverse environmental conditions found in automotive engine compartments also decrease the accuracy with which analog circuits can control the injection of fuel. These same factors also render analog circuits deficient in their ability to control the ignition timing of an internal combustion engine. Moreover, the manner in which analog circuits control an engine generally can not be altered without physically substituting components of the circuit. This is an expensive process requiring the services of skilled technicians.

SUMMARY OF THE INVENTION

In order to overcome the deficiencies of the prior art engine control devices, the applicant has invented an entirely new control concept in which engine control requirements over a wide range of operating conditions are experimentally determined and are prestored in a data memory in the form of digital control data. As the engine is operated, the memory is instantaneously analyzed to select the precise control data needed to insure optimum engine operation. For example, data stored in the memory can be obtained in about 0.0000125 second, whereas an engine operating at 3,000 RPM requires about 0.020 second to complete one revolution. This technique provides engine control with a degree of speed, flexibility and accuracy previously unattainable. By merely changing the data stored in the memory, the engine may be automatically tuned for maximum performance, emission control, fuel economy, or other operating modes, without physically replacing any components.

According to an important feature of the invention, the engine operating characteristics of engine speed and throttle position are used to select data stored in the digital memory. Although engine speed and throttle position have been used in the past in mechanical engine control systems, the applicant is believed to be the first to recognize that these operating characteristics significantly reduce engine response time when used in connection with an electronic digital control system. By reducing engine response time, the applicant's invention enables the engine to instantaneously follow the varying commands of the operator thereby increasing the driveability of a vehicle employing the engine.

According to another feature of the invention, the digital control data is stored in the data memory in the form of many discrete control digital words. Each digital word represents an engine control requirement (such as fuel quantity) at a particular combination of engine operation characteristics, such as a specific engine speed and a specific throttle position. As the engine is operated, the engine operating characteristics are continuously converted into engine condition digital numbers so that any change in the operating characteristics (e.g., the movement of the throttle) is immediately detected. These engine control digital numbers are used to select from the data memory one or more of the control digital words that at least approximately correspond to the control requirement of the engine at the instantaneous operating characteristics represented by the engine condition digital numbers. In the normal case, the instantaneous operating condition of the engine will not correspond precisely to any of the particular combinations of engine operating characteristics at which a control digital word is stored. In order to increase accuracy, the system derives a composite resultant control digital word, which is proportional to the exact engine control requirement, from the stored control digital words that approximate the exact engine control requirement. This derivation may be achieved by a process of arithmetic interpolation. If such accuracy is not desired, this interpolation can be eliminated, and the resultant control digital word can be derived by merely selecting a single control digital word from the data memory and by transmitting the single word to a storage unit. The resultant control digital word is stored for a fraction of a second until another sample of the engine operating characteristics is taken. At that time, a new resultant control digital word is generated which reflects any change in engine operating conditions.

While the resultant control digital word is being derived and stored, a position signal is generated when the engine is in a predetermined position. This position signal is used to initiate the operation of a control means that can produce a control signal proportional to the value of the resultant control digital word in order to control the engine. For example, if the system is used to control ignition timing, means responsive to the position signal produces a control signal that enables the firing of a spark plug at the end of an operating interval proportional to the value of the resultant control digital word. By operating interval is meant either an interval of time or an interval of mechanical movement, such as degrees of crankshaft rotation. In this manner, the value of the resultant control digital word can control spark advance with a degree of accuracy heretofore unattainable. A similar technique is employed to control the operating interval during which fuel is injected into the engine. By employing these techniques, fuel can be injected in the precise quantities needed for instantaneous response to an operator's commands in a way which will optimize engine operation.

According to another feature of the invention, one of the engine condition digital numbers is proportional to the reciprocal of engine speed. It has been found that this feature enables the engine to be accurately controlled at slow engine speeds near idle speed.

According to another feature of the invention, operating instructions are stored in a program memory in the form of instruction digital words. The instruction digital words control the overall operation of the system, including the selection of control digital words from the data memory. By using this technique, the entire operating method of the system can be revised to accommodate a variety of requirements without replacing any components.

According to another feature of the invention, each control device, such as a fuel injector, associated with an individual cylinder of the engine is separately controlled.

According to another feature of the invention, the operating requirements of each cylinder are taken into account so that each cylinder is individually controlled according to its own operating requirements. As a resultant, the exact control requirements of the engine can be satisfied with a degree of accuracy previously unattainable.

According to still another feature of the present invention, a separate correction digital number is stored for each cylinder of the engine, and the value of each control signal for controlling fuel to each individual cylinder is altered by the composite value of the resultant control digital word and the correction digital number so that each cylinder is separately operated according to its own requirements.

According to still another feature of the invention, the engine is operated at a predetermined value of an operating characteristic, such as a particular speed, by sequentially converting the operating characteristic to digital numbers in a time-spaced manner and by using these numbers to make small changes in a control function, such as fuel quantity, until the desired value (e.g., speed) is achieved. This technique offers a method of maintaining an engine at a particular idle speed, even during the warm-up cycle, with a degree of accuracy unavailable through conventional techniques.

DESCRIPTION OF THE DRAWINGS

These and other advantages and features of the present invention will hereafter appear in connection with the accompanying drawings in which the numbers refer to the parts throughout and in which:

FIG. 1 is a fragmentary, perspective view of an exemplary internal combustion engine having a fuel injection and spark distribution system appropriate for use in connection with the present invention;

FIG. 2 is a top plan, schematic view of the engine and associated apparatus shown in FIG. 1 together with additional exemplary apparatus required to operate the engine;

FIG. 3 is a block diagram, schematic drawing of a preferred system embodying the present invention;

FIG. 3A is a block diagram of the timing circuit 320 shown in FIG. 3;

FIG. 4 is an injection map which graphically illustrates the manner in which the fuel requirements of the exemplary engine are stored in the data memory of the system;

FIG. 5 is an enlarged view of a portion of the injection map shown in FIG. 3;

FIG. 6 is a timing diagram showing the relative movement between various parts of the system and exemplary engine;

FIG. 7 illustrates the manner in which FIGS. 7A and 7B should be arranged;

FIGS. 7A and 7B are electronic logic schematic diagrams showing a preferred form of a program memory and a data memory used in the system;

FIG. 7C is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 7A and 7B;

FIG. 7D is a timing diagram showing the condition of the three system clock lines during 8 separate timing periods or slots T1 - T8;

FIG. 7E is an electronic logic schematic diagram showing a preferred form a bit latch used in the system;

FIG. 8 illustrates the manner in which FIGS. 8A - 8C should be arranged;

FIGS. 8A - 8C are electronic logic schematic diagrams showing a preferred form of analog to digital converter used in the system;

FIG. 8D is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 8A - 8C;

FIG. 9 illustrates the manner in which FIGS. 9A - 9C should be arranged;

FIG. 9A - 9C are electronic logic schematic drawings showing a preferred form of a speed and position indicating assembly for use in the system;

FIG. 9D is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 9A - 9C;

FIG. 10 illustrates the manner in which FIGS. 10A and 10B should be arranged;

FIGS. 10A and 10B are electronic logic schematic diagrams showing a preferred form of a program sequencer for use in the system;

FIG. 10C is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 10A and 10B;

FIG. 10D is an electronic logic schematic diagram illustrating a preferred form of one bit of a bus latch for use in the system;

FIG. 10E is an electronic logic schematic diagram illustrating a preferred form of an inhibitable noninverting buffer amplifier for use in the system;

FIG. 11 illustrates the manner in which FIGS. 11A - 11F should be arranged;

FIG. 11A - 11F are electronic logic schematic diagrams showing the preferred form of general registers for use in the system;

FIG. 11G is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 11A - 11F;

FIG.11H is an electronic schematic drawing showing one bit of a preferred form of register for use in the system;

FIG. 12 illustrates the manner in which FIGS. 12A - 12E should be arranged;

FIGS. 12A - 12E are electronic logic schematic diagrams showing a preferred form of an arithmetic unit for use in the system;

FIG. 12F is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 12A - 12E;

FIG. 12G is an electric schematic drawing showing one bit of a preferred form of full adder for use in the arithmetic unit;

FIG. 13 illustrates the manner in which FIGS. 13A - 13E should be arranged;

FIGS. 13A - 13D are electronic logic schematic diagrams showing a preferred form of an injector timing circuit for use in the system;

FIG. 13E is a decoding table showing the condition of the communication bus during the performance of instructions used by the apparatus shown in FIGS. 13A - 13D;

FIG. 14 illustrates the manner in which FIGS. 14A and 14B should be arranged;

FIGS. 14A and 14B are electronic logic schematic diagrams showing a preferred form of ignition timing circuit for use in the system;

FIG. 14C is a decoding table showing the condition of the communication bus during the performance of the LSPK instruction by the apparatus shown in FIGS. 14A and 14B;

FIG. 14D is a timing diagram showing the time interval of the engine cycle during which the reference counter operates;

FIG. 15 illustrates the manner in which FIGS. 15A - 15D should be arranged;

FIGS. 15A - 15D are electronic logic schematic diagrams showing a preferred form of input-output circuitry for use in the system; and

FIG. 15E is a timing decoding table showing the condition of the communication bus during the performance of instructions by the apparatus shown in FIGS. 15A - 15D.

DESCRIPTION OF THE PREFERRED EMBODIMENT

GENERAL DESCRIPTION

Referring to FIGS. 1 and 2, an exemplary form of apparatus for use in connection with the present invention would comprise a conventional V-8 internal combustion engine 80 having cylinders 1-8 in which pistons (not shown) reciprocate. An air horn 90, which can comprise the throttle body of a carburetor, is mounted on top of an intake manifold 92 in order to control the amount of air flowing into the engine. The air horn opening is controlled by a throttle plate (not shown) like the throttle plate in a conventional carburetor. The throttle plate is rotated by a shaft 98 that is connected by conventional linkage 94 to an accelerator pedal 96 which is controlled by the operator of the engine.

A fuel injector assembly 100 is mounted on top of the engine. The assembly comprises fuel injector F1 - F8 that inject fuel into the intake manifold adjacent the intake valves for cylinders 1-8, respectively, The fuel injectors are a well-known electro-mechanical type which open in response to an electrical fuel control signal to allow fuel into the intake manifold adjacent a particular cylinder. The injectors are connected by a common fuel line 110. The pressure in the fuel line is controlled by a pressure regulator 112 that provides a substantially constant pressure drop relative to manifold pressure at all injectors during all phases of operation. As a result of this constant pressure drop fuel system, the amount of fuel injected into a cylinder by each injector depends on the duration of time during which the injector is open. Fuel is supplied to regulator 112 through a supply line 114 from a source of fuel (not shown). Line 111 provides the manifold pressure reference signal to the regulator.

Electrical fuel control signals are supplied to injectors F1 - F8 by means of an injector drive circuit 116 comprising drive amplifiers 116A-116H. The amplifiers are a well-known type capable of driving the coils of injectors F1-F8 in response to fuel signals received over conductors 118-118H.

A spark distributor assembly 120 controls the firing of spark plugs S1-S8 that are mounted in cylinders 1-8, respectively. A conventional high voltage generator 130, such as a capacitive discharge unit, produces a high voltage pulse in response to an electrical fire control signal. The high voltage pulse is transmitted over a conductor 131 to a top terminal 134 of a conventional rotary distributor 132. A rotor 136 located inside distributor 132 distributes the high voltage pulses at top terminal 134 to each of electrodes 141-148 and through ignition wires 151-158 to spark plugs S1-S8, respectively.

Referring to FIG. 3, a preferred form of apparatus used to produce and time the fuel signals and fire signals which control the fuel injectors and spark plugs basically comprises a power supply 166; a data memory 170; an analog to digital unit 190; a speed and position indicating assembly 120; a selecting assembly 240 comprising a program memory 250, a program sequencer 260, a general purpose register unit 280, and an arithmetic unit 300; a timing circuit 320; an input/output circuit 372; and a communication bus 380.

Referring to FIG. 3, power supply 166 is a conventional device which supplies a -14 volt and a -28 volt potential to each unit of the system from a nominal +12 volt input which can be supplied from the engine battery.

Referring to FIG. 3, data memory 170 comprises an injector data memory 172 capable of storing 256, 8-bit fuel control digital words. Each fuel digital word numerically represents a fuel requirement of the engine at a particular engine speed and throttle position. Each fuel digital word is stored in the memory at an address defined by a 4-bit speed digital number proportional to the reciprocal of engine speed and a 4-bit throttle digital number proportional to a throttle position.

Data memory 170 also comprises an ignition data memory 176 capable of storing 256, 8-bit ignition control digital words. Each ignition digital word numerically represents an ignition timing requirement of the engine at a particular engine speed and throttle position. Each ignition digital word is stored at an address defined by a 4-bit speed digital number proportional to reciprocal engine speed and a 4-bit throttle digital number proportional to a throttle position. The fuel and ignition digital words are determined empirically by operating the engine at a variety of engine speeds and throttle positions that are expected to be encountered during actual operating conditions. The fuel and ignition timing requirements are recorded, are converted into 8-bit digital numbers, and are loaded into the data memories. Of course, the values of the numbers change depending on the type of tuning and engine performance desired.

Data memory 170 also comprises a data address latch 178 that temporarily stores the address at which a desired digital word is stored and an instruction latch (IL) 180 that tells the data memory when to read out or read in data.

Analog to digital unit 190 comprises a wiper arm 196 of a potentiometer 194 that is controlled by accelerator pedal 96 through linkage 94. An additional potentiometer 192 controlled by another engine operating characteristic, such as temperature, can also be provided. An input multiplexer 191 selects the potentiometer voltage to be converted and transmits it to an analog to digital converter 193. Converter 193 converts the analog voltage on wiper arm 196 into a corresponding throttle digital number that is stored in an analog to digital register (ADR register) 198. The operation of the converter is controlled by an instruction latch (IL) 200.

Still referring to FIG. 3, speed and position indicating assembly 210 comprises an engine member position predictor 212 of the type more fully described in the co-pending application of the present applicant and Bay E. Estes, III, entitles "Engine Member Position Predictor," filed, Dec. 12, 1972, U.S. Pat. Ser. No. 314,398, now U.S. Pat. No. 3,767,902, issued Oct. 23, 1973.

The assembly also comprises a clock sequence generator 214 that controls the time multiplex sequencing of the information flow within the system. Position predictor 212 receives input data from an engine crankshaft damper 220 that is fabricated with slots 221-224 displaced from each other by 90.degree. of arc. The slots are rotated adjacent a conventional magnetic sensor 226 that detects changes in magnetic flux density. Each time a slot is rotated adjacent the sensor, an electronic circuit 228 produces a position or damper pulse having a standardized amplitude and duration. The slots and sensor are arranged so that the trailing edge of a position pulse occurs as each piston reaches its 6.degree. before top dead center position. The repetition rate of the position pulses, of course, depends on the engine speed. Piston predictor 212 acts as an analog to digital converter by converting the repetition rate of the position pulses into a corresponding 8-bit speed digital number that is stored in a speed register (SPR) 216. The utilization of the number stored in the speed register is controlled by an instruction latch (IL) 218. Position predictor 212 also produces 128 location pulses per 90.degree. of engine rotation (crank-shaft rotation) on a conductor 901 in order to predict the exact location of the engine during its entire operating cycle.

Program memory 250 comprises a page zero digital program memory 252 and a page one digital program memory 256. Each of these program memories contains operating instructions which enable other units of the system to control the production and timing of the fuel and fire signals. This is an important feature of the invention, since it enables the capability of the system to be expanded without necessitating changes in the physical structure of the system. For example, the system could be expanded to take into account engine operating characteristics other than engine speed and throttle position, such as intake manifold pressure, ambient air pressure, ambient temperature, and engine temperature, in order to control the fuel and fire signals. These additional characteristics could be read into converter 193 by additional sensors, and could be used for control purposes by merely revising the operating instructions stored in the program memory.

Program sequencer 260 comprises a program counter (PCNT) 262 that causes the operating instructions from the program memory to be sequentially performed in a proper order. The sequencer also comprises a bus latch (BLT) 264 which enables every unit of the system to transmit data. Instructions are also sequenced by an RJMP latch 266 and an instruction latch (IL) 268. Page select gates 270 and page select lines 272 determine whether an instruction will be read out of the page zero or page one program memories.

General purpose register unit 280 comprises a zero detect register 282, an incrementing and complementing circuit 284, and 16 separate general purpose registers 670-685 collectively identified by the number 286. An instruction latch (IL) 288 controls the overall operation of the general purpose registers.

Arithmetic unit 300 comprises an instruction latch (IL) 302, an 8-bit full adder 304, an 8-bit SHA register 306, a 1-bit carry register 308, an 8-bit SHB register 310, and a 1-bit link bit register 312. Arithmetic unit 300 provides a means for interpolating between the discrete fuel and ignition digital words stored in the data memory so that the precise fuel and ignition timing requirements of the engine can be determined.

The component units of selecting assembly 240, i.e., program memory 250, program sequencer 260, general purpose register unit 280, and arithmetic unit 300, are programmed to select one or more fuel and ignition digital words stored in data memory 170 that at least approximately correspond to the fuel and ignition timing requirements of the engine at the speed and throttle position represented by the speed and throttle digital numbers stored in registers 216 and 198, respectively. The selecting assembly also derives from the one or more selected digital words a resultant fuel control digital word and a resultant ignition control digital word that precisely define the fuel and ignition timing control requirements of the engine.

The resultant fuel and ignition digital words are used by timing circuitry 320 (FIG. 3A in order to control the fuel injectors and spark plugs of the engine. Timing circuitry 320 receives position pulses over conductor 229, location pulses from assembly 210 over a conductor 901, and a distributor reference signal from a distributor switch 321 that indicates the period of time during which cylinder one is in the ignition portion of its operating cycle.

Referring to FIG. 3A, timing circuitry 320 comprises an injection open-time (INO) register 322 that stores an 8-bit open-time digital word representing the time at which each of the fuel injectors should open. Likewise, an injection duration (IND) register 324 stores the resultant fuel digital word derived by selecting assembly 240, and an ignition timing (IGN) register 326 stores the resultant ignition digital word derived by the selecting assembly. The opening of injectors F1-F8 is controlled through an instruction latch (IL) 328 by an INO counter 330, a shift register 332 and a clock gating circuit 334. The duration of the fuel injection, i.e., the time during which each of injectors F1-F8 remains open, is controlled by IND counters 341-344, correction registers 352-358 (corresponding to fuel injectors F1-F8, respectively), adder circuit 360 and output logic circuits 361-364. Correction registers 351-358 hold correction digital numbers that adjust the amount of fuel injected into cylinders according to the individual fuel requirement variations of the cylinders. IND counters 341-344 are controlled by a two speed clock 366 that produces clock pulses which step or count the counters.

The firing of spark plugs S1-S8 is controlled through an instruction latch (IL) 371 by an ignition reference counter 376, an ignition (IGN) counter 368, and an output logic gate 370 that sets the ignition timing to a particular degree of advancement during starting.

Input/output circuit 372 provides a means of reading data into and out of the system. The circuit includes a conventional HEX display unit 374 that is capable of simultaneously displaying two digits in hexadecimal notation.

All units of the system are connected through a common communication bus 380 comprising 8 data lines 381-388, 3 instruction control lines 390-391, 3 clock lines 394-396 which are sequenced by clock sequence generator 214, and 3 power lines 398-400 which supply DC voltage from power supply 166. This communication bus is an important feature which allows each unit of the system to be placed at any location along the bus. New circuitry can be added at any point on the bus in order to increase the memory capacity, or for any other purpose, without rewiring any existing unit. Data is transmitted between various units of the system on the 8 data lines in a timemultiplexed manner determined by the states of the three clock lines.

The basic operation of the system, together with a preferred form of the method aspect of the invention will now be described:

Before the system can control an engine, the engine must be tested at the speed and throttle positions encountered during operation in order to determine its fuel and ignition timing requirements. These requirements vary depending on the type of engine operation desired. After the requirements have been determined numerically, they can be plotted in the form of a graph or map. Such a map showing the fuel requirements of an exemplary engine tuned for maximum performance is plotted in FIG. 4 wherein the X axis represents engine speed or RPM, the Y axis represents the position of the throttle or accelerator pedal 96, and the Z axis represents a quantity of fuel in terms of milliseconds of injector open-time duration per engine revolution. Each point on the map corresponds to a fuel digital word stored at an address defined by a specific engine speed and a specific throttle position. Each fuel digital word represents the average fuel requirement of all eight cylinders of the engine. An analogous map could be plotted for ignition timing requirements.

Experience has shown that all cylinders of a typical internal combustion engine do not have the same fuel requirements. As a result, a single fuel digital word does not represent the precise fuel requirements of all engine cylinders. In order to provide precise fuel control for all cylinders of the engine, the individual fuel requirements of each cylinder are determined empirically and are converted into corresponding correction digital numbers. These numbers are loaded into correction registers 351-358 through input/output circuit 372 or from data stored in program memory 250. Alternatively, read only registers can be used which permanently retain the correction digital numbers. After the fuel and ignition maps have been plotted, the data from the map is read into data memory 170 through input/output circuit 372. If a read only memory is used, this step is not necessary since the data is stored in the memory during the manufacturing process.

After the fuel and ignition digital words and the correction digital numbers are stored, operating instructions must be stored in program memory 250 through input/output circuit 372. In the present system, approximately 250 operating instructions are stored in the form of discrete digital words. These operating instructions are sequentially initiated one-at-a-time by program sequencer 260.

When the system is turned on, power supply 166 provides a start pulse which initializes the various registers and output lines of the system. For example, the open-time digital word stored in INO register 322 is initialized to regulate the time at which each injector opens to admit fuel to a cylinder.

After the initialization and input/output routines are completed, the reciprocal engine speed stored in speed register 216 is transmitted over the communication bus to register 685 in general purpose registers 286. Register 685 is then incremented and checked for a zero condition in order to determine whether the engine is in an underspeed condition (e.g., being cranked by the starter) or whether the engine is at operating speed (i.e., idle speed or above). If a normal speed condition is detected, clock 366 is switched to its high speed state.

Selecting assembly 240 now selects four fuel digital words that are stored at addresses closely corresponding to the speed and throttle position at which the engine is being operated. The selection process is graphically illustrated in FIGS. 4 and 5. (The actual speed digital number stored in register 216 and used in the selection process is inversely proportional to engine speed. However, for ease of explanation, FIG. 4 has been drawn as if the speed digital number were directly proportional to engine speed). As previously described, FIG. 4 represents a "map" of the 256 fuel digital words stored in digital memory 170. If the engine is operating at a speed corresponding to an engine RPM of 65 along the X axis of FIG. 4 and a throttle position corresponding to 16 throttle position units along the Y axis of FIG. 4, a resultant fuel digital word corresponding to the engine fuel requirement at these operating conditions would be located at word position f0. By observing FIG. 4, it will be noted that the fuel digital words most closely surrounding word position f0 are words f1-f4. In order to operate the engine, the selecting assembly first selects words f1-f4 and then interpolates between the words in order to determine the value of the fuel quantity which would be represented if a fuel digital word were stored at location f0. This fuel quantity is then stored as a resultant fuel digital word which indicates the precise engine fuel requirement at that engine speed and throttle position represented by the speed and throttle digital numbers stored in registers 216 and 198. In the present example in which the engine speed is proportional to 65, the number held in speed register 216 also corresponds to 65 in hexadecimal notation. This number is stored in register 216 as an 8-bit binary number as follows: 01100101. In this number, the first (left hand) 4 bits represent the number 6, and the last (right hand) 4 bits represent the number 5. The first 4 bits also represent a speed index or address line number corresponding to the address line 6x along the X axis of the FIG. 4 map, and the last 4 bits represent a speed residual number 5 corresponding to a fractional portion of the 16 unit increment between the index or address lines 6x and 7x. As a result of this arrangement, if the first 4 bits are separated from the second 4 bits, the speed index number can be separated from the speed residual number. In the present system, separation is carried out by shifting the 8-bit speed number into SHA register 306 and by then shifting the speed number 4 bits to the left into SHB register 310. At the end of this operation, the speed index number is held in the SHB register and the speed residual number is held in the SHA register.

After the speed index and speed residual numbers are calculated and stored, the instructions initiate an analog to digital conversion in converter 193 and store the results in the form of an 8-bit digital throttle number in A/D register 198, the throttle pot 196 having been selected through the multiplexer by previous instructions. The throttle number is transmitted through the communication bus to the SHA register where the throttle index number and throttle residual number are calculated in the same manner described with respect to the speed index and residual numbers. In the present example in which the throttle position is proportional to 16, the throttle number held in register 198 also corresponds to 16 in hexadecimal notation. The number is stored in register 198 as an 8-bit binary number as follows: 00010110. In this number, the first (left hand) 4 bits represent the number 1 and the last (right hand) 4 bits represent the number 6. As can be seen from FIG. 4, throttle number 16 represents a throttle index number 1 corresponding to the address line x1 along the Y axis of the FIG. 4 map, and a throttle residual number 6 which corresponds to a fractional portion of the 16 unit increment between throttle index or address lines x1 and x2 of the FIG. 4 map. In FIG. 4, the bit positions are reversed from the normal convention so that the most significant bit is positioned to the right of the least significant bit.

The speed index number and throttle index number are combined to designate the address of fuel digital word f1 (FIG. 4) by writing the 4-bit speed index number to the left of the 4-bit throttle index number. In hexadecimal notation, this number reads 61, and its binary equivalent stored in the system registers is 01100001. This number corresponds to the address of "corner" word f1 from which the addresses of words f2-f4, which surround word location f0, can be calculated. In order to calculate the value of the word location f0 from the values of words f1-f4, the system solves the following interpolation equation:

f0 (r.sub.x, r.sub.y) = w.sub.1 f.sub.1 + w.sub.2 f.sub.2 + w.sub.3 f.sub.3 + w.sub.4 f.sub.4 /.DELTA.

where:

w.sub.1 = .DELTA.-r.sub.x -r.sub.y + r.sub.x r.sub.y /.DELTA.

w.sub.2 = r.sub.y - r.sub.x r.sub.y /.DELTA.

w.sub.3 = r.sub.x r.sub.y /.DELTA.

w.sub.4 = r.sub.x - r.sub.x r.sub.y /.DELTA.

rx = speed residual number,

.SIGMA.wi = .DELTA. = 16, ry = throttle residual number

The address of f2 is calculated by adding 1 to the address of f1 (61). This is possible because f2 is located at the same speed index number as f1, namely 6, and is located at the next ascending throttle index number from f1, namely 2. As a result, the address of digital word f2 is 62. The address of digital word f4 is calculated by adding 15 to the address of word f2. This process can be visually represented in connected with FIG. 4 by assuming that the f2 address is incremented 15 times. As the integers are added to the f2 address, the resulting addresses would appear to move toward the left parallel to the Y axis until the throttle address line xF is reached. At this point, the addition of one more integer moves the address to throttle address line x0 and increases the speed index number by one digit to 7. After 15 integers have been added to the word f2 address, the address of word f4 is reached. As in the case of the word f1 address, the word f3 address may be calculated by adding the integer one to the word f4 address.

As soon as the addresses of words f1-f4 are known, the values of these words can be obtained from data memory 170, and the rest of the terms of the interpolation equation may be calculated by conventional arithmetic techniques in order to determine the value of word location f0. This value is stored as a resultant fuel digital word in IND register 324. A similar routine is used in order to analyze the data stored in ignition data memory 176 in order to obtain a resultant ignition digital word that is stored in the IGN register 326.

Of course, if the engine speed and throttle position precisely correspond to an existing address in data memory 170, the interpolation routine is not required. In addition, if enough fuel digital words are stored in data memory 170, the different increments of speed and throttle position represented by the addresses will be sufficiently close to the actual engine operating conditions to obviate the need for interpolation.

Engine speed and throttle position are sampled every few milliseconds, and new resultant fuel and ignition digital words are stored in registers 324 and 326 at the same rate. As a result, any change in the values of the engine operating characteristics instantaneously results in resultant fuel and ignition digital words which represent the fuel and ignition timing requirements needed to meet the changed conditions. The resultant fuel and ignition digital words are used by timing circuitry 320 in order to individually operate each spark plug and fuel injector in the system at the appropriate time during the engine operating cycle.

Referring to FIG. 3A, timing circuitry 320 basically operates as follows:

Each time a position pulse related to cylinder 1 is received by INO counter 330, the counter is loaded with the open-time digital number held in INO register 322. Thereafter, the counter is stepped by divided location pulses until it overflows or reaches a predetermined value, thereby resetting shift register 332. As soon as shift register 332 is reset, logic circuit 333 switches output logic circuit 363 that produces a fuel pulse which opens injector F1. Additional location pulses from the speed and position indicating assembly 210 trigger shift register 332 every 90.degree. of engine rotation so that injectors F5, F4 and F2 associated with cylinders 5, 4 and 2, respectively, are sequentially opened. When a position pulse associated with cylinder 6 is received by the circuitry, the INO counter again is loaded and is stepped to produce a fuel signal that opens injector F6. Injector F6, instead of F1, is opened due to the condition of switch 321. Thereafter, the location pulses from the speed and position indicating assembly 210 trigger shift register 332 every 90.degree. of engine rotation in order to open injectors F3, F7 and F8 associated with cylinders 3, 7 and 8, respectively.

The duration of time during which the injectors remain open is determined by the value of the resultant fuel digital word stored in IND register 324 and the value of the correction digital numbers stored in correction registers 351-358. As previously explained, the resultant fuel digital word stored in IND register 324 represents the average fuel requirement of all cylinders of the engine. However, the cylinders of the engine normally require a quantity of fuel which deviates from the average amount to a greater-or-lesser extent. Correction digital numbers which take into account the individual fuel requirement variation of each cylinder are loaded into correction registers 351-358. As the injector associated with a cylinder is opened, the correction digital number held in the correction register associated with that cylinder is added to the number held in IND register 324 by adder circuit 360, and the sum is loaded into one of IND counters 341-344.

In response to a signal from logic circuit 333, the loaded IND counter is stepped until it overflows or reaches a predetermined value. At that time, one of the output logic circuits 361-364 closes the correct injector, thereby terminating the injection of fuel in the cylinder.

The manner in which the resultant fuel and ignition digital words are used to control the fuel injectors and spark plugs can be more completely understood with reference to FIG. 6 and the following discussion of the operation of cylinder 1.

FIG. 6 is a timing diagram representing a complete engine cycle or 720.degree. of crankshaft rotation. If the timing diagram is circumscribed in a clockwise direction, radial lines 1-8 represent the top dead center positions of the pistons in the like-numbered cylinders in their proper firing order. Assuming the piston in cylinder 1 is approaching its 6.degree. before top dead position A (i.e., its BTDC position) on the ignition phase of its operating cycle, a position pulse is produced by magnetic sensor 228, and switch 321 is closed. As previously explained, since damper 220 consists of 4 slots arranged 90.degree. apart, a position pulse is produced as each piston approaches its 6.degree. BTDC position. As the piston in cylinder 1 passes its 6.degree. BTDC position, switch 321 is open and the position pulse is terminated. A position pulse is terminated as each piston passes its 6.degree. BTDC position.

The termination of the position pulse causes the 8-bit open-time number in INO register 322 to be loaded into INO counter 330. (FIG. 3A) As the crankshaft continues to rotate, counter 330 is stepped by clock pulses from clock gating circuit 334 which, in turn, receives location pulses transmitted over conductor 901 from speed and position indicating assembly 210. Since assembly 210 produces 1.42 pulses per degree of crankshaft rotation, 128 pulses per 90.degree. of crankshaft rotation are received over conductor 901. This is an important feature because it enables the fire and fuel signals to be position dependent rather than time dependent. Of course, since the engine is rotating, the production of the signals can also be expressed in terms of time intervals. The location pulses are divided by four in circuit 334 before they are used to step counter 330. Counter 330 continues to be stepped until it overflows to its 0 count state. Output logic detects this condition and then switches shift register 332 to its 0 state. In response to the 0 state of shift register 332, logic circuit 333 and output logic circuit 363 produce a fuel signal that is amplified by drive amplifier 116A (FIG. 2) so that injector F1 opens at position B in FIG. 6. The amount of rotational arc (and the time interval) between positions A and B of FIG. 6 is controlled by the value of the open-time digital word. Thus, by merely changing the value of this word, the opening time of the fuel injectors can be adjusted to suit changing engine conditions. For example, an open-time digital word resulting in relatively early opening of the injectors can be used during starting to facilitate the production of a rich fuel mixture.

As soon as shift register 332 has been switched to its 0 state, the 4-bit correction digital number stored in correction register 351 (corresponding to cylinder 1) is added by adder 360 to the 4 least significant bits of the resultant fuel digital word stored in IND register 324. If an overflow bit is produced by this operation, it is added to the most significant 4 bits of the resultant fuel digital word. The corrected resultant fuel digital word is loaded into IND counter 343 which is stepped by clock pulses having a period of 50 microseconds produced by clock 366. As soon as counter 343 overflows to its 0 state, output logic circuit 363 terminates the fuel signal to injector F1, thereby closing the injector and preventing further fuel from being injected into cylinder 1. As shown in FIG. 6, the fuel signal terminates at position D. This position is 18.degree. prior to the closure of the intake valve for cylinder 1. Of course, the precise location of position D will vary depending on the value of the corrected resultant fuel digital word loaded into counter 343.

As fuel is injected into the intake manifold adjacent cylinder 1 by injector F1, it is mixed with air from air horn 90. The resulting fuel-air mixture is drawn into cyliner 1 as soon as the intake valve for cylinder 1 opens. After the fuel-air mixture has been drawn into cylinder 1 and the intake valve has closed, the piston in cylinder 1 moves toward its 90.degree. BTDC position (position E in FIG. 6). During this time, a position pulse used in connection with cylinder 8 is generated and is used to load reference counter 367. The reference counter is stepped by location pulses from speed and position indicating assembly 210. The number loaded into the reference counter is adjusted so that the crankshaft will rotate through about 45.degree. of arc before the reference counter overflows. This technique establishes a new reference point for loading IGN counter 368 which is approximately 51.degree. prior to the TDC position of the piston in cylinder 1. As soon as the reference counter overflows to its 0 state, the 8-bit resultant ignition digital word stored in IGN register 326 is loaded into IGN counter 368, and this counter also is stepped with location pulses from speed and position indicating assembly 210.

As soon as IGN counter 368 overflows to its 0 state, a fire signal is produced on conductor 369 which causes high voltage generator 130 to generate a high voltage that is transmitted to top terminal 134 of rotary distributor 132 (FIG. 2). At this point in time, rotor 136 of distributor 132 passes adjacent electrode 141 so that spark plug S1 is fired. In this example, the value of the resultant ignition digital word stored in IGN register 326 caused spark plug S1 to fire when the piston in cylinder 1 is in its 12.degree. BTDC position (position F in FIG. 6). Of course, the exact position at which spark plug S1 fires depends on the value of the resultant ignition digital word.

Timing circuitry 320 operates cylinder 6 in the same manner as cylinder 1. As previously explained, the remaining cylinders are also operated in an analogous manner, except that shift register 332 is switched by gating circuit 334 rather than INO counter 330.

When the engine is being started, the foregoing procedures are altered somewhat by the instructions loaded in program memory 250. As previously noted, the 8-bit speed digital number loaded into speed register 216 is inversely proportional to the speed of the engine. Speed and position indicating assembly 210 is designed so that the maximum possible number is loaded into the speed register if the engine speed falls below about 300 RPM. As a result, during starting, the speed register is loaded with the number FF in hexadecimal notation. In order to check for an underspeed or starting condition, the speed digital number stored in speed register 216 is transmitted to register 685 of general purpose register unit 280. Register 685 is then incremented (i.e., the number one is added to the register contents), and the result is checked for a zero condition. If a zero condition is detected, the circuitry selects the low speed of clock 366 which produces pulses having a period of 400 microseconds. An open-time digital number is loaded into INO register 322 which opens the injectors at the earliest time practical. In addition, a long count number is loaded into IND counters 341-344 which, together with the slow speed of clock 366, provides a fuel signal for each cylinder having a duration of about 20 milliseconds. This relatively long fuel signal duration provides a rich fuel mixture which is required in order to start the engine. During engine starting, reference counter 367, IGN counter 368, and IGN register 326 are not used. The fire signal is obtained directly from the position pulse which occurs at the 6.degree. BTDC position of each piston. This mode of operation is achieved by logic gate 370 under control of an LOF signal which is automatically produced by position indicating assembly 210 whenever engine RPM is below about 300 RPM.

If the throttle is closed and the automatic idle routine has been switched on by the operator, the foregoing procedure is again altered by the instructions stored in program memory 250. During the automatic idle routine, the system holds the engine speed at a specified target RPM by changing fuel signal duration. Fuel signal duration is repeatedly changed by a relative small adjustment or delta value which is added to or subtracted from the value of the resultant fuel digital word in order to achieve and maintain the target RPM. Basically, the system compares the present engine speed with the last-measured engine speed and the target speed in order to determine whether the adjustment value or its inverse should be applied to the resultant fuel digital word. The adjustment value or its inverse is combined with the resultant fuel digital word so that the engine speed keeps progressing toward the target speed. For example, if the engine speed is greater than the target speed, but the last application of the adjustment value moved it closer to the target speed, the adjustment value is repeated. Likewise, if the present speed is less than the target speed, but the last application of the adjustment value increased the engine speed toward the target speed, the adjustment value is repeated. If the last application of the adjustment value moved the present speed away from the target speed, the adjustment value is inverted and again combined with the resultant fuel digital word in order to move the engine speed toward the target speed. The process is described by the following logic Diagram A. ##SPC1##

In order to achieve this mode of operation, the system stores in registers a target digital number representing the target speed, the last previous speed digital number held in speed register 216, and a delta digital number representing a small change in the normal magnitude of the resultant fuel digital word. The present speed digital number held in register 216 is also utilized. Using these numbers, the system produces logic signals representing logical decisions L1-L6 shown on Diagram A.

If logic signals corresponding to decisions L3 or L6 are generated, the value of the delta digital number is added to the resultant fuel digital word before it is used in IND counters 341-344. If logic signals corresponding to decisions L4 and L5 are generated, the value of the delta digital number is inverted before it is added to the resultant fuel digital word.

DETAILED DESCRIPTION

The following description is given in terms of negative logic. That is, a voltage level corresponding to a logic state 1 is more negative than a voltage level corresponding to a logic state 0.

COMMUNICATION BUS 380, TIME MULTIPLEXING, AND INFORMATION TRANSFER

Each instruction in program memory 250 is executed during eight successive time slots designated T1 . . . T8. The state of clock lines 394-396 (designated CL1, CL2, and CL3 respectively) defines the time slot in which the system operates. These clock lines are available to every unit of the system through communication bus 380.

The states of the clocklines which define the eight time slots T1-T8 are shown in FIG. 7D in the sequence in which they occur. This sequence is never modified. Clock lines CL1, CL2 and CL3 sequence through a reflected Gray code in which only one line changes state at a time.

Information transfer within the system is accomplished through time-multiplexed communication bus 380 and associated memory. In addition to data lines 381-388 that are available to every unit in the system, the bus includes control line 390 which carries a WRTB instruction permitting any unit in the system to place data in 8-bit bus latch 264. The data present on the bus data lines varies according to the time slot and instruction being executed as follows:

Time Slot T1: Bus lines are charged to 1 states by low impedance active devices.

Time Slot T2: Data from program memory 250 is placed on the bus. This data is the code for the instruction that is to be executed during the current T time slot sequence.

Time slot T3: Bus lines are charged to 1 states by low impedance active devices.

Time Slots T4-T8: If the instruction to be executed is a single word instruction, the data contained in the associated 8-bit bus latch is placed on the bus. All instructions are single word instructions with the exceptions of JMPM, WBSI, JMPO, JMP1, JMP2 and JMP3.

Time Slots T4-T5: (Double word instructions.) The bus is left in an idling state. In this state, the bus lines are maintained at 1 states (where they were put at T3) by pull-up devices with sufficient drive to supply any leakage currents required by the system.

Time Slots T6-T7: (double word instructions.) Data from program memory 250 is place on the bus.

Time Slot T8: (Double word instructions.) The bus returns to the idle state described above.

Any unit in the system can communicate with any other unit by transmitting 8-bit data words to bus latch 264 through the bus. The unit that needs to transmit data places it in the bus latch during the execution of some instruction, and the unit that requires the data reads it from the bus during the next or some future instruction execution.

Data is presented in the bus as follows: Some time prior to time slot T6, the WRTB line 390 is pulled to its 0 state. This line is held at its 0 state through time slot T8 and is released at time slot T1 of the next instruction. Bus latch 264 is set to all 1 states and the bus lines are charged to 1 states by active devices whenever line 390 is at its 0 state during time slot T6. The data that is to be stored in the bus latch is presented to the bus at time slot T7 and is held stable through time slot T8. The data is removed at the end of time slot T8.

COMMON ELECTRONIC ELEMENTS

The major units of this system connected together by the communication bus shown in FIG. 2 are described in more detail in connection with FIGS. 7A-15D. There are many electronic elements common to each of these FIGURES. For example, the FIGURES describe NOR gates N1-N727, inverters I1-I290, D-type flip-flops D1-D60, bipolar transistors T1-T25, MOS field effect transistors M1-M112, capacitors C1-C2, and resistors R1-R179.

DATA MEMORY 170

Data memory 170 is shown in more detail in FIGS. 7A and 7B. As shown on the drawings, address latch 178 comprises bit latches 402, 404 and instruction latch 180 comprises bit latches 406, 408. These latches, together with all other 4-bit latches in the system, are shown in more detail in FIG. 7E.

Data memory 170 further comprises gating circuits 410 which enable external data entry into the memory chips in a convenient manner. A data-in cable 412 and a memory select cable 414 control the memory when data is read into the memory chips from an external source. Communication with the program sequencer is provided through a program address bus 416 comprising conductors 421-428. A memory address bus 430 provides a means for locating digital words at a particular address within the injection memory chips 432-439 and the ignition memory chips 442-449 (FIG. 7B). Each of these chips comprises a conventional 256 bit memory such as memory part no. 1101 manufactured by Intel Corporation.

Chip selection gates 464 energize select line 450 or 451 to determine whether the injection memory chips or the ignition memory chips will transfer their data onto the communication bus. Conductors 452-455 provide additional paths for transmitting signals among certain elements of the data memory.

Referring to FIG. 7B, the data memory 170 further comprises a timing decoding circuit 460 and an instruction decoding circuit 462.

ANALOG TO DIGITAL UNIT 190

Referring to FIGS. 8A-8C, analog to digital unit 190 comprises a power supply 470 which supplies a plus 15 volt voltage line 471 and a minus 15 volt voltage line 473. In addition, conventional regulator 472 provides a supply voltage of about 10 volts which biases throttle potentiometer 194. Input multiplexer 191 determines which of input channels 0-3 will be analyzed by the apparatus. The output of multiplexer 191 is connected to analog to digital converter 193 which may be of a standard type such as Model L-8B-1-B-1 manufactured by Datel Systems, Inc. Converter 193 also includes A/D register 198 shown in FIG. 3.

Unit 190 further comprises a voltage level shifting circuit 478, output enable gates 480, an input line select latch 482, a voltage level shifting circuit 484, an input sensing gate 486, and output latches 488.

As shown in FIG. 8C, instruction latch 218 comprises 4-bit latches 490 and 491 of the type shown in FIG. 7E. Timing decoding gates 492 and instruction decoding gates 494 are used to operate unit 190 from the communication bus. Conductors 496-528 provide additional connections between various elements of the circuitry.

SPEED AND POSITION INDICATING ASSEMBLY 210

FIG. 9A illustrates clock sequence generator 214 in detail. The generator comprises a precision crystal 531 that operates at 2.56 megahertz and has its output divided by 8 in order to produce a control signal at 320 kilohertz. This control signal is used to produce time slots T1-T8, each having a 1562.5 nanosecond duration which corresponds to a 640 kilohertz timeslot rate or an instruction execution rate of 80,000 per second.

Referring to FIG. 9B, speed register 216 comprises registers 530, 532. Assembly 210 also contains upcounters 534, 535, a down counter 536, a full adder 537, and an accumulator 538, all connected as shown.

Referring to FIG. 9C, assembly 210 further comprises timing decoding gates 540, instruction decoding gates 542, and an instruction latch 544 that controls the operation of the assembly from the communication bus.

An output driver circuit 546 enables the speed register 216 to transfer data to the communication bus. Conductors 548-561 connect various elements of the assembly.

PROGRAM MEMORY 250

Referring to FIG. 7B, page 0 memory 252 comprises memory chips 563-570, and page 1 memory 256 comprising memory chips 573-580. Each of these memory chips is identical to the chips of ignition data memory 176.

Referring to FIG. 7A, page select lines 272 comprise conductors 582 and 583 that are connected to the program sequencer and which transmit selection signals to the page 0 and page 1 memories through conductors 584 and 585, respectively.

PROGRAM SEQUENCER 260

Referring to FIGS. 10A and 10B, program counter 262 of program sequencer 260 comprises conventional 4 bit counters 590 and 591. The sequencer also comprises inhibitable, non-inverting buffers 594-601 shown in more detail in FIG. 10E.

As explained previously, bus latch 264 provides a means for every unit of the system to transmit data over the communication bus. The bus latch consists of 8 latches like the one shown in FIG. 10D.

Referring to FIG. 10A, RJMP latch 266 comprises 4-bit latches 604 and 605; instruction latch 268 comprises 4-bit latches 606 and 607; and a jump latch 608 comprises 4-bit latches 610 and 611, all of the type shown in FIG. 7E.

Referring to FIG. 10B, the program sequencer further comprises timing decoding gates 614 and a buffer amplifier 617. Page selected gates 270 select either the page 0 or page 1 memory chips in the program memory. The remainder of gates shown on FIG. 10B are for instruction decoding purposes. The program sequencer also includes conductors 618-646 which interconnect various units of the circuitry.

GENERAL PURPOSE REGISTER UNIT 280

Incrementing and complementing circuit 284 of general purpose register unit 280 is shown in more detail in FIG. 11A. The circuit comprises storage enable gates 650 that enable a temporary storage latch 652 to hold information used in complementing select gates 654 in order to perform the function of complementing the data transmitted to their inputs. An incrementer 656 adds 1 to the least significant bit of the data complemented by select gates 654.

Referring to FIG. 11B, general purpose register unit 280 further comprises select gates 658, bus precharge gates 660, and data output gates 662. Bus precharge gates 660 are controlled through a buffer amplifier 663.

Referring to FIG. 11C, general purpose register unit 280 also comprises timing decoding gates 664 and instruction decoding gates 666. Instruction latch 288 consists of 4-bit latches 667 and 668 of the type shown in FIG. 7E.

Referring to FIGS. 11D and 11E, general purpose registers 286 comprises register chips 670-685. Each of these register chips comprises eight circuits of the type shown in FIG. 11H.

Referring to FIG. 11F, general purpose register unit 280 also comprises register decode gates 688. Zero register detect gate 282, as shown in FIG. 11F, comprises a multiple input NOR gate. In addition, conductors 691-762 are used to conduct signals between various elements of the general purpose registers.

ARITHMETIC UNIT 300

Referring to FIG. 12A, full adder 304 comprises eight circuits of the type shown in detail in FIG. 12G. Arithmetic unit 300 also comprises select gates 768 which determine the origin of the data which is added in adder 304. Enable gates 770 transmit data on the communication bus into adder 304. An add 1 circuit 772 adds 1 to the total in counter 304 if the value stored in the carry bit or link bit registers equals 1.

FIG. 12B describes in detail an output circuit for transmitting data stored in the SHA or SHB registers to the bus. SHA register 306, carry bit register 308, SHB register 310 and a link bit register bit 312 are each shown in detail in FIG. 12C, and each comprises one or more D-type flip-flops.

Referring to FIG. 12D, arithmetic unit 300 also comprises a temporary storage register 774 and select gates 776 that route data from the temporary storage register or the bus to the SHA or SHB registers.

Referring to FIG. 12E, instruction latch 302 of arithmetic unit 300 comprises latches 764 and 765 of the type shown in FIG. 7E. Timing decoding gates 778 and instruction decoding gates 780 also are shown in FIG. 12E. In addition, signals are transmitted between the various elements of the arithmetic unit by conductors 782-862.

TIMING CIRCUITRY 320

INO Register 322, INO Counter 330, shift register 332, logic circuit 333 and gating circuit 334 are shown in more detail in FIG. 13A.

Referring to FIGS. 13A-13D, the injection portion of timing circuitry 320 further comprises an engine synchronizing circuit 864 that switches engine synchronizing conductor 866 to its 1 state when cylinder 1 or 6 is at its 6.degree. before top dead center position.

IND counters 341-344, output logic circuits 361-364 and clock 366 are shown in more detail in FIG. 13B.

IND Register 324, correction registers 351-358, and adder 360 are shown in more detail in FIG. 13C. Adder 360 comprises a 4-bit incrementer 885 connected to the 4 most significant bits of IND register 324, a 3-bit full adder having its carry output connected to incrementer 885, and a half adder 887, all connected as shown.

As shown in FIG. 13D, instruction latch 328 comprises instruction latches 866 and 867 of the type shown in FIG. 7E. In addition, the injection portion of timing circuitry 320 comprises instruction decoding gates 868 and timing decoding gates 870. Signals are transmitted between various portions of the timing circuitry by conductors 872-884. Additional connections between the elements of FIGS. 13A-13D are identicated by like timing and instruction mnemonics associated with like conductors.

The ignition control portion of timing circuitry 320 is shown in FIGS. 14A and 14B. Aside from the components shown in FIG. 3A, the circuit also comprises pulse standardizing gates 890 that convert the damper position pulse into pulses of uniform duration commencing at time slot T7. As shown in FIG. 14B, instruction latch 371 comprises 4-bit instruction latches 892 and 894 of the type shown in FIG. 7E. The circuit also comprises timing decoding gates 896 and an instruction decoding NOR gate 898. Signals are transmitted between various elements of the circuitry over conductors 900-906.

INPUT/OUTPUT CIRCUIT 372

Referring to FIG. 15A, input/output circuit 372 comprises an output register OR1 consisting of flip-flops D45-D51 and an output register OR2 consisting of flip-flops D52-D59. The output registers operate a lamp drive circuit 908 that drives one incandescent lamp for each output register flip-flop. Exemplary lamps 909, 910 are shown in the drawings.

Referring to FIG. 15B, Circuit 372 also comprises a bus drive circuit 911 that writes data to the bus. A gating circuit 912 writes data in a predetermined one of 16 bit positions, and a gating circuit 913 clears data from a predetermined one of 16 bit positions. The data and the bit position are determined by an instruction from the program memory.

Referring to FIG. 15C, circuit 372 comprises 16 input lines 917-932, each input line being controlled by a manual switch, such as switch 934 and being biased by a resistor, such as resistor R199.

The input lines are also identified by hexadecimal notation as lines 0-F. The input lines aree divided into two groups of eight lines each. A selection circuit 914 selects either one group or the other for reading data into the system. Another selection circuit 915 samples a predetermined one of the input lines, and, if the sampled line is at a logical 1 state, initiates a SKIP instruction. For example, in response to an SKB5 instruction, circuit 915 samples conductor 922, and if the conductor is in its logical 1 state, initiates a SKIP instruction over conductor 391.

Referring to FIG. 15D, circuit 372 also comprises an instruction latch 936 consisting of 4-bit latches 937 and 938 of the type shown in FIG. 7E. A timing decoding circuit 939 decodes the time slots transmitted over clock lines 394-396. The remaining circuitry shown in FIG. 15D is for instruction decoding purposes. This circuitry includes 8-bit latches 937 and 938 which serve a dual purpose. The latches set or reset individual bits in output registers OR1, OR2, and they sense individual bits in input lines 917-932. Instructions from the program memory determine which bit is acted on by the latches.

As previously explained, the system described in the drawings operates in accordance with operating instructions stored in program memory 250 and sequenced by program sequencer 260. The system is capable of executing each of the instructions defined as follows:

INSTRUCTION DEFINITIONS ______________________________________ Instruction Actual Instruction Description of Instruction Mnemonic Stored In Program Memory ______________________________________ ADDA 60 ADD BUS TO SHA REGISTER ADDB 61 ADD BUS TO SHB REGISTER ADDL 62 ADD 1 TO SHB REGISTER IF LINK BIT IS SET ACYA 63 ADD 1 TO SHA IF CARRY BIT IS SET (CLEAR CARRY) ACYB 64 ADD 1 TO SHB IF CARRY BIT IS SET (CLEAR CARRY) CLBS 50 CLEAR BUS TO ZERO CLBX AX CLEAR (RESET) BIT X OF 16 BIT I/O OUTPUT CLCY 65 CLEAR CARRY BIT CONV 80 INITIATE A/D CONVERSION IRGX 0X INCREMENT REGISTER X (ADD 1) JMPB 51 JUMP TO PAGE ADDRESS TAKEN FROM BUS JMPM 52 JUMP AND MARK ADDRESS FOLLOWING JUMP ADDRESS FOR RJMP COMMAND (SAVE RETURN) JMP0 54 JUMP TO PAGE ADDRESS IN PAGE 0, CONTAINED IN NEXT WORD JMP1 55 JUMP TO PAGE ADDRESS IN PAGE 1, CONTAINED IN NEXT WORD JMP2 56 JUMP TO PAGE ADDRESS IN PAGE 2, CONTAINED IN NEXT WORD JMP3 57 JUMP TO PAGE ADDRESS IN PAGE 3, CONTAINED IN NEXT WORD LIND 96 LOAD INJECTOR DURATION (IND) REGISTER LIN0 95 LOAD INJECTOR OPEN TIME (INO) REGISTER LRGX 1X LOAD REGISTER X FROM BUS LOR1 78 LOAD OUTPUT REGISTER OR1 FROM BUS LOR2 79 LOAD OUTPUT REGISTER OR2 FROM BUS LSHA 66 LOAD SHA REGISTER FROM BUS LSHB 67 LOAD SHB REGISTER FROM BUS LSPK 90 LOAD IGNITION TIMING REGISTER 326 FROM BUS LT16 91 LOAD CORRECTION REGISTERS 351 AND 356 FROM BUS LT53 92 LOAD CORRECTION REGISTERS 355 AND 353 FROM BUS LT47 93 LOAD CORRECTION REGISTERS 354 and 357 FROM BUS LT28 94 LOAD CORRECTION REGISTERS 352 AND 358 FROM BUS RJMP 58 RETURN TO LAST MARKED ADDRESS (BY JMPM) RST0 89 RESET A/D OUTPUT BIT 0 RST1 8A RESET A/D OUTPUT BIT 1 RST2 8B RESET A/D OUTPUT BIT 2 SBT0 86 SET A/D OUTPUT BIT 0 SBT1 87 SET A/D OUTPUT BIT 1 SBT2 88 SET A/D OUTPUT BIT 2 SEL0 8F SELECT CHANNEL 0 FOR A/D SEL1 8E SELECT CHANNEL 1 FOR A/D SEL2 8D SELECT CHANNEL 2 FOR A/D SEL3 8C SELECT CHANNEL 3 FOR A/D SEN0 82 SENSE A/D INPUT BIT 0. IF 1 SKIP 2. SEN1 83 SENSE A/D INPUT BIT 1. IF 1 SKIP 2. SEN2 84 SENSE A/D INPUT BIT 2. IF 1 SKIP 2. SEN3 85 SENSE A/D INPUT BIT 3. IF 1 SKIP 2. SHFC 98 SELECT HIGH FREQUENCY CLOCK FOR INJECTOR TIMING SHF1 68 SHIFT SHA AND SHB LEFT 1 (THRU LINK AND CARRY) SHF2 69 SHIFT SHA AND SHB LEFT 2 (THRU LINK AND CARRY) SHF3 6A SHIFT SHA AND SHB LEFT 3 (THRU LINK AND CARRY) NOOP FF PERFORMS NO OPERATION. THIS IS USED TO PROVIDE SPACES EITHER FOR SKIP TYPE INSTRUCTIONS OR IN ANTICIPATION OF NEED FOR FUTURE PROGRAM CHANGES IN SPECIFIC INSTRUCTION SEQUENCES SKBX CX SKIP 2 IF BIT X OF 16 BIT I/O IS 1 SKNC 6B SKIP 2 IF CARRY IS NOT SET SLFC 97 SELECT LOW FREQUENCY CLOCK FOR INJECTOR TIMING SRGX 2X SKIP 2 IF REGISTER X IS ZERO TRGX 3X TWO'S COMPLEMENT REGISTER X (NEGATE) WBSI 53 WRITE CONTENTS OF NEXT WORD TO BUS WDT1 70 WRITE DATA FROM INJECTOR DATA MEMORY TO BUS WDT2 71 WRITE DATA FROM IGNITION DATA MEMORY TO BUS WIR1 7A WRITE INPUT REGISTER 1 (16 BIT I/O) TO BUS WIR2 7B WRITE INPUT REGISTER 2 (16 BIT I/O) TO BUS WISP 72 WRITE ENGINE SPEED TO BUS WRAD 81 WRITE RESULTS OF A/D CONVERSION TO BUS WRBX BX WRITE (SET) BIT X OF 16 BIT I/O WRGX 4X WRITE CONTENTS OF REGISTER X TO BUS WSHA 6C WRITE CONTENTS OF SHA REGISTER TO BUS WSHB 6D WRITE CONTENTS OF SHB REGISTER TO ______________________________________ BUS

The foregoing instructions have been used to develop a program carried out by the program sequencer which operates the system in the manner described above.

PROGRAM ______________________________________ GENERAL PURPOSE REGISTER ASSIGNMENTS REGISTER 670 (0) RX : W4 REGISTER 671 (1) RY : W1 REGISTER 672 (2) USED TO INDICATE INJ (00)/IGN (01) TO INTERP REGISTER 673 (3) TEMP USED BY INTERP REGISTER 674 (4) UNUSED REGISTER 675 (5) LCNT FOR AUTO-IDLE ROUTINE REGISTER 676 (6) MULTIPLIER FOR BOTH MULT ROUTINES : TEMP REGISTER 677 (7) W3 REGISTER 678 (8) W2 REGISTER 679 (9) DELTA FOR AUTO-IDLE ROUTINE REGISTER 680 (A) LRPM (PREVIOUS RPM) FOR AUTO-IDLE REGISTER 681 (B) IGNITION FUDGE VALUE REGISTER 682 (C) INJECTOR FUDGE VALUE REGISTER 683 (D) CURRENT INJECTOR OPEN COUNT REGISTER 684 (E) YI : AF1 REGISTER 685 (F) ENG SPEED : XI : RET FOR INTERP : ______________________________________ TEMP

SWITCH ASSIGNMENTS ______________________________________ (0) SOURCE/DESTINATION (S/D) SWITCH (LSB) (1) SOURCE/DESTINATION (S/D SWITCH (2) SOURCE/DESTINATION (S/D SWITCH (MSB) (3) DISPLAY DATA FROM SOURCE SPECIFIED BY S/D SWITCHES (4) ENTER DATA TO DESTINATION SPECIFIED BY S/D SWITCHES (5) OUTPUT CURRENT IGNITION TIMING (6) OUTPUT CURRENT INJECTOR DURATION (8) LSB DATA ENTRY SWITCH . (15) MSB DATA ENTRY SWITCH ______________________________________

Program Memory STRT 000: Address Page Address Instruction Instruction Operation Performed Within Mnemonic Page __________________________________________________________________________ 0 00 53 START WBSI 88 INITIALIZE ALL CORRECTION REG. TO MIDPOINT 0 01 88 0 02 91 LT16 0 03 92 LT53 0 04 93 TL47 0 05 94 LT28 0 06 50 CLBS CLEAR 16 BIT OUTPUT REGISTERS 0 07 78 LOR1 0 08 79 LOR2 0 09 1B LRGB ZERO FUDGE VALUES 0 0A 1C LRGC 0 0B 19 LRG9 INITIALIZE AUTO-IDLE 0 0C 1A LRGA 0 0D 89 RST0 CLEAR A/D OUTPUT BITS 0 0E 8A RST1 0 0F 8B RST2 0 10 53 WBSI F0 0 11 F0 0 12 1D LRGD INITIALIZE OPEN COUNT (INO) REGISTER 322 0 13 55 BEGIN JMP1 DSPLY GO CHECK FOR DISPLAY REQ. AND DATA IN 0 14 C3 0 15 72 CONT WISP WRITE ENGINE SPEED FROM SPEED REGISTER 216 TO BUS 0 16 1F LRGF SAVE IT IN REGISTER 685 (F) 0 17 0F IRGF CHECK FOR UNDER-SPEED CONDITION BY INCREMENTING REGISTER 685 0 18 2F SRGF TEST FOR ZERO (UNDER-SPEED=CRANKING) 0 19 54 JMP0 ENT1 PATH FOR NON UNDER-SPEED 0 1A 27 0 1B 97 SLFC SELECT LOW FREQUENCY OF CLOCK 366 0 1C 53 WBSI CE PICK 20 MS INJECTOR DURATION 0 1D CE 0 1E 96 LIND GIVE IT TO MAIN INJECTOR DURATION (IND) REGISTER 324 0 1F 53 WBSI F0 PICK A QUICK OPEN COUNT 0 20 F0 0 21 95 LIN0 GIVE IT TO INJECTOR OPEN (INO) REGISTER 322 0 22 53 WBSI 81 PICK UP 6.degree. BTDC FOR IGNITION TIMING (FOR EXIT) 0 23 81 0 24 90 LSPK GIVE IT TO IGNITION TIMING (IGN) REGISTER 326 0 25 54 JMP0 BEGIN GO KEEP WATCH ON ENGINE SPEED 0 26 13 0 27 98 ENT1 SHFC SELECT HIGH FREQUENCY OF CLOCK 366 0 28 66 LSHA BEGIN CALCULATION OF SPEED INDEX __________________________________________________________________________ (XI)

SCALE ENGINE SPEED VALUE FOR MAP CONTROL ROUTINE __________________________________________________________________________ Program Memory Address Page Address Instruction Instruction Operation Performed Within Mnemonic Page __________________________________________________________________________ 0 29 50 CLBS 0 2A 67 LSHB 0 2B 6A SHF3 FORM WISP/2 IN SHB 0 2C 6A SHF3 0 2D 68 SHF1 0 2E 65 CLCY 0 2F 4F WRGF PICK UP WISP + 1 FROM REG. 685 0 30 61 ADDB SHB = WISP + (WISP/2) + 1 0 31 6D WSHB GET RESULTS TO BUS 0 32 6B SKNC CHECK FOR CARRY (SPEED ABOVE CRANKING BUT LOW) 0 33 53 WBSI FF INDICATE LOWEST POSSIBLE MAP SPEED 0 34 FF 0 35 1F LRGF MAP CONTROL ROUTINE 0 36 8F SEL0 SELECT CHANNEL 0 ON A/D CONVERTER (THROTTLE CHANNEL) 0 37 80 CONV INITIATE A/D CONVERSION 0 38 50 CLBS BEGIN CALCULATION OF RX, RY, XI AND YI 0 39 67 LSHB CLEAR SHB REGISTER 310 0 3A 4F WRGF ENGINE SPEED TO BUS 0 3B 66 LSHA ENGINE SPEED TO SHA REGISTER 306 0 3C 69 SHF2 SHIFT SHA REGISTER 306 AND SHB REGISTER 310 LEFT 2 BITS 0 3D 69 SHF2 SHIFT SHA REGISTER 306 AND SHB REGISTER 310 LEFT 2 BITS 0 3E 6D WSHB SHB REGISTER NOW HAS SPEED INDEX (XI) 0 3F 1F LRGF XI TO REGISTER 685 (F) 0 40 50 CLBS 0 41 67 LSHB CLEAR SHB REGISTER 0 42 69 SHF2 SHIFT LEFT 4 MORE BITS 0 43 69 SHF2 0 44 6D WSHB SHB REGISTER NOW HAS SPEED RESIDUAL (RX) 0 45 10 LRG0 RX TO REGISTER 670 (O) NOW GET YI AND RY 0 46 50 CLBS 0 47 67 LSHB CLEAR SHB REGISTER 0 48 81 WRAD BEGIN CHECK FOR THROTTLE OUT OF RANGE 0 49 66 LSHA 0 4A 65 CLCY 0 4B 53 WBSI 10 GET TEST CONSTANT TO BUS 0 4C 10 0 4D 60 ADDA THIS ADD WILL CARRY IF THROTTLE IS TOO LARGE 0 4E 6B SKNC TEST FOR CARRY 0 4F 54 JMP0 ENT4 GO FIX THINGS UP IF TOO LARGE 0 50 6F 0 51 81 WRAD A/D CONVERTER RESULT TO BUS 0 52 66 ENT5 LSHA THROTTLE (VALUE) TO SHA REGISTER 0 53 69 SHF2 SHIFT TO LEFT 4 BITS 0 54 69 SHF2 0 55 6D WSHB SHB REGISTER NOW HAS THROTTLE INDEX (YI) 0 56 1E LRGE YI TO REGISTER 684 (E) 0 57 50 CLBS 0 58 67 LSHB CLEAR SHB REGISTER 0 59 69 SHF2 SHIFT LEFT 4 MORE BITS 0 5A 69 SHF2 0 5B 6D WSHB SHB REGISTER NOW HAS THROTTLE RESIDUAL (RY) 0 5C 11 LRG1 RY TO REGISTER 671 (1) NOW GO THROUGH AUTO-IDLE ROUTINE IF FUDGE DELTA IS NON-ZERO. GOAL HERE IS TO FUDGE INJECTOR DURATION, WHENEVER THROTTLE IS IN THE CLOSED POSITION, IN SUCH A MANNER AS TO ACHIEVE A SPECIFIC ENGINE RPM. 0 5D 29 SRG9 BYPASS AUTO-IDLE IF FUDGE DELTA IS ZERO 0 5E 54 JMP0 AUTO JUMP TO AUTO-IDLE ROUTINE 0 5F C6 CALCULATE AF1 (CORNER ADDRESS OF MAP BRACKETING VALUES). SAVE IT FOR USE BY INTERPOLATION ROUTINE. 0 60 4F ENT2 WRGF XI (SPEED INDEX) TO BUS 0 61 66 LSHA XI TO SHA 0 62 69 SHF2 CALCULATE 16*XI (SHIFT 4 BITS) 0 63 69 SHF2 0 64 4E WRGE 0 65 60 ADDA SHA = 16*XI + YI 0 66 6C WSHA 0 67 1E LRGE SAVE AF1 (AF1 MEANS ADDRESS OF F1) NOW GO DO MAP INTERPOLATION FOR INJECTOR DURATION 0 68 50 CLBS TELL INTERPOLATION ROUTINE TO USE INJECTOR MAP 0 69 12 LRG2 0 6A 53 WBSI RET1 GIVE RETURN ADDRESS TO INTERPOLATION ROUTINE 0 6B 73 0 6C 1F LRGF 0 6D 55 JMP1 WGHTS GO TO INTERPOLATION THRU WEIGHTS CALCULATING CODE 0 6E 00 FIX-UP ROUTINE FOR TOO LARGE Y VALUE (THROTTLE) 0 6F 53 ENT4 WBSI EF OVERFLOW VALUE FOR THROTTLE 0 70 EF 0 71 54 JMP0 ENT5 GO BACK TO NORMAL CODE SEQUENCE 0 72 52 0 73 4C RET1 WRGC GET FUDGE VALUE TO BUS 0 74 66 LSHA PUT IT IN SHA REGISTER FOR FUDGE CHECK ROUTINE 0 75 52 JMPM FUDGE JUMP TO FUDGE CHECK SUBROUTINE 0 76 A4 0 77 13 LRG3 STORE INJECTOR DURATION VALUE TEMPORARILY 0 78 FF NOOP PERFORM NO OPERATION (THIS IS TO LEAVE SPACE FOR AN ANTICIPATED COMMAND) 0 79 FF NOOP 0 7A FF NOOP 0 7B FF NOOP 0 7C FF NOOP 0 7D FF NOOP 0 7E FF NOOR 0 7F C6 SKB6 TEST FOR INJECTOR DURATION DISPLAY REQUEST 0 80 54 JMP0 ENT6 PATH FOR NO DISPLAY WANTED 0 81 85 0 82 86 SBT0 GENERATE STROBE TO LOAD REGISTER 671 (1) INTO HEX DISPLAY 0 83 89 RSTO 0 84 FF NOOP PERFORM NO OP. (LEAVE SPACE) 0 85 33 ENT6 TRG3 COMPLIMENT FOR INJECTOR HARDWARE 0 86 43 WRG3 0 87 96 LIND GIVE DURATION TO INJECTOR UNIT 0 88 4D WRGD PICK UP OPEN COUNT 0 89 95 LIN0 GIVE IT TO INJECTOR HARDWARE GO TO MAP AND FIGURE NEW IGNITION TIMING VALUE 0 8A 02 IRG2 TELL INTERP ROUTINE TO USE IGNITION MAP 0 8B 53 WBSI RET2 GIVE RETURN ADDRESS TO INTERP 0 8C 90 0 8D 1F LRGF 0 8E 55 JMP1 INTRP JUMP TO INTERP (NO WEIGHT CALC ENTRY) 0 8F 21 0 90 4B RET2 WRGB GET IGNITION FUDGE VALUE TO BUS 0 91 66 LSHA PUT IT IN SHA REGISTER FOR FUDGE CHECK ROUTINE 0 92 52 JMPM FUDGE JUMP TO FUDGE CHECK SUBROUTINE 0 93 A4 0 94 90 LSPK GIVE RESULT TO IGNITION UNIT 0 95 FF NOOP 0 96 78 LOR1 OUTPUT IGNITION TIMING TO 16 BIT I/O 0 97 FF NOOP 0 98 FF NOOP 0 99 FF NOOP 0 9A FF NOOP 0 9B FF NOOP 0 9C C5 SKB5 TEST FOR IGNITION TIMING DIS- PLAY REQUEST 0 9D 54 JMP0 BEGIN GO BACK THROUGH UPDATE AGAIN 0 9E 13 0 9F 86 SBT0 STROBE INTO HEX READOUT 0 A0 89 RST0 0 A1 FF NOOP 0 A2 54 JMP0 BEGIN GO BACK THROUGH UPDATE AGAIN 0 A3 13 0 A4 65 FUDGE CLCY BEGIN CHECK FOR NEGATIVE FUDGE 0 A5 53 WBSI 80 0 A6 80 0 A7 60 ADDA 0 A8 6B SKNC NO CARRY IMPLIES POSITIVE FUDGE 0 A9 54 JMP0 FUD1 GO PROCESS NEGATIVE FUDGE 0 AA B4 0 AB 60 ADDA FIX UP FUDGE VALUE IN SHA 0 AC 65 CLCY BEGIN CHECK FOR OVERFUDGE 0 AD 6D WSHB 0 AE 60 ADDA 0 AF 6C WSHA GET NORMAL RESULT TO BUS 0 B0 6B SKNC SKIP IS NORMAL I.E., NO OVERFUDGE 0 B1 53 WBSI FF IF CARRY, RETURN MAXIMUM VALUE 0 B2 FF 0 B3 58 RJMP EXIT THROUGH ENTRY 0 B4 60 FUD1 ADDA FIX FUDGE VALUE BACK UP 0 B5 65 CLCY BEGIN CHECK FOR UNDERFUDGE 0 B6 6D WSHB GET VALUE 0 B7 60 ADDA ADD FUDGE 0 B8 53 WBSI 01 GET ABORT VALUE TO BUS 0 B9 01 0 BA 6B SKNC CHECK FOR CARRY (THERE SHOULD BE ONE NORMALLY) 0 BB 6C WSHA GET GOOD VALUE TO BUS 0 BC FF NOOP 0 BD 16 LRG6 BEGIN CHECK FOR ZERO VALUE 0 BE 26 SRG6 0 BF 58 RJMP RETURN IF VALUE IS NONZERO 0 C0 FF NOOP 0 C1 53 WBSI 01 0 C2 01 0 C3 58 RJMP EXIT THROUGH ENTRY 0 C4 4F INTEX WRGF EXIT ROUTINE FOR INTERPOLATION (MUST BE IN PAGE 0)

0 C5 51 JMPB EXIT TO CALLING ROUTINE AUTO-IDLE 0 C6 81 AUTO WRAD GET THROTTLE POSITION TO BUS 0 C7 13 LRG3 STORE IT TEMPORARILY FOR ZERO CHECK 0 C8 23 SRG3 TEST FOR CLOSED THROTTLE 0 C9 54 JMP0 AUT1 PATH FOR THROTTLE NOT CLOSED 0 CA F5 0 CB 25 SRG5 CHECK FOR LOOP DELAY CONTROL REGISTER EXHAUSTED 0 CC 54 JMP0 AUT2 PATH FOR INCREMENT DELAY LOOP AND EXIT 0 CD F2 0 CE 53 WBSI DO PICK UP -48 AS LOOP DELAY COUNT 0 CF D0 0 D0 15 LRG5 REINITIALIZE LOOP DELAY 0 D1 72 WISP PICK UP PRESENT UNMODIFIED RPM 0 D2 13 LRG3 SAVE IT TEMPORARILY 0 D3 65 CLCY BEGIN TEST FOR PRESENT SPEED ABOVE TARGET 0 D4 53 WBSI 93 (= MINUS 700RPM = TARGET SPEED) 0 D5 93 0 D6 66 LSHA 0 D7 43 WRG3 0 D8 60 ADDA 0 D9 6B SKNC NO CARRY IF SPEED IS GREATER THAN TARGET 0 DA 54 JMP0 AUT3 PATH FOR PRESENT RPM LESS THAN OR EQUAL TO TARGET RPM 0 DB EF 0 DC 33 TRG3 PATH FOR PRESENT RPM GREATER THAN TARGET RPM 0 DD 65 AUT4 CLCY 0 DE 43 WRG3 0 DF 66 LSHA 0 E0 4A WRGA 0 E1 60 ADDA 0 E2 6B SKNC 0 E3 39 TRG9 DELTA = -DELTA 0 E4 FF NOOP 0 E5 49 WRG9 PICK UP FUDGE DELTA 0 E6 66 LSHA 0 E7 4C WRGC PICK UP INJECTOR DURATION FUDGE 0 E8 60 ADDA MODIFY IT BY DELTA 0 E9 6C WSHA GET MODIFIED VALUE TO BUS 0 EA 1C LRGC UPDATE INJECTOR FUDGE 0 EB 72 WISP GET UNMODIFIED ENGINE SPEED TO BUS 0 EC 1A LRGA STORE IT AS LRPM LAST RPM 0 ED 54 JMP0 ENT2 RETURN TO MAIN PROGRAM 0 EE 60 0 EF 3A AUT3 TRGA REVERSE LRPM:PRESENT RPM COMPARISON TEST 0 F0 54 JMP0 AUT4 0 F1 DD 0 F2 05 AUT2 IRG5 UPDATE LOOP DELAY CONTROL 0 F3 54 JMP0 ENT2 RETURN TO MAIN PROGRAM 0 F4 60 0 F5 53 AUT1 WBSI 01 0 F6 01 0 F7 15 LRG5 PUT LONG INITIAL CLOSED THROTTLE DELAY 0 F8 54 JMP0 ENT2 RETURN TO MAIN PROGRAM 0 F9 60 STRT 256: GET TO PAGE 1 TO WRITE INTERPOLATION ROUTINE 1 00 50 WGHTS CLBS BEGIN CALCULATION OF W1...W4 1 01 66 LSHA INITIALIZE FOR MULTIPLY ROUTINE 1 02 67 LSHB 1 03 40 WRG0 RX TO BUS 1 04 16 LRG6 RX TO MULTIPLIER REGISTER 676 1 05 41 WRG1 RY TO BUS (MULTIPLICAND) 1 06 52 JMPM SMULT GO FORM RX*RY 1 07 6C 1 08 69 SHF2 DO DIVISION BY SHIFTING INTO SHB REGISTER 1 09 69 SHF2 1 0A 6D WSHB SHB = RX*RY/16 = W3 1 0B 17 LRG7 SAVE W3 1 0C 30 TRG0 FORM -RX 1 0D 31 TRG1 FORM -RY 1 0E 41 WRG1 1 0F 61 ADDB SHB = -RY + RY*RY/16 1 10 6D WSHB 1 11 18 LRG8 1 12 38 TRG8 [8] = RY-RX*RY/16 = W2 1 13 40 WRG0 -RX 1 14 61 ADDB SHB = -RX-RY + RX*RY/16 1 15 53 WBSI 10 16 (CONSTANT) 1 16 10 1 17 61 ADDB SHB = 16-RX-RY + RX*RY/16 = W1 1 18 6D WSHB 1 19 11 LRG1 [1] = W1 1 1A 47 WRG7 [7] = RX*RY/16 1 1B 67 LSHB 1 1C 40 WRG0 -RX 1 1D 61 ADDB SHB = -RX + RX*RY/16 = -W4 1 1E 6D WSHB 1 1F 10 LRG0 1 20 30 TRG0 [0] = RX-RX*RY/16 = W4 1 21 50 INTRP CLBS BEGIN INTERPOLATION CALCULATION 1 22 66 LSHA INITIALIZE FOR MULTIPLY ROUTINE 1 23 67 LSHB 1 24 41 WRG1 [1] = W1 1 25 16 LRG6 W1 TO MULTIPLIER REGISTER 676 1 26 4E LRGE FETCH AF1 1 27 22 SRG2 TEST FOR INJECTOR OR IGNITION ENTRY 1 28 55 JMP1 INT1 PATH FOR IGNITION ENTRY 1 29 60 1 2A 70 WDT1 PICK UP F1 FROM INJECTOR MAP 1 2B 52 INT2 JMPM SMULT GO DO REPEAT DOUBLE PRECISION ACCUMULATION ROUTINE TO FORM W1*F1 1 2C 6C 1 2D 48 WRG8 [8] = W2 1 2E 16 LRG6 W2 TO MULTIPLIER REGISTER 676 1 2F 0E IRGE CALCULATE AF2 = AF1 + 1 1 30 4E WRGE FETCH AF2 1 31 22 SRG2 TEST FOR INJECTOR OR IGNITION ENTRY 1 32 55 JMP1 INT3 PATH FOR IGNITION ENTRY 1 33 63 1 34 70 WDT1 PICK UP F2 FROM INJECTOR MAP 1 35 52 INT4 JMPM SMULT FORM W1*F1 + W2*F2 1 36 6C 1 37 40 WRG0 W4 1 38 16 LRG6 W4 TO MULTIPLIER REGISTER 676 1 39 6C WSHA SAVE CONTENTS OF SHA REGISTER 1 3A 13 LRG3 1 3B 4E WRGE 1 3C 66 LSHA 1 3D 53 WBSI 0F 0F = 15 1 3E 0F 1 3F 60 ADDA CALCULATE AF 4 = AF2 + 15 1 40 6C WSHA 1 41 1E LRGE 1 42 43 WRG3 1 43 66 LSHA RESTORE SHA REGISTER 1 44 4E WRGE FETCH AF4 1 45 22 SRG2 TEST FOR INJECTOR OR IGNITION ENTRY 1 46 55 JMP1 INT5 PATH FOR IGNITION ENTRY 1 47 66 1 48 70 WDT1 PICK UP F4 FROM INJECTOR MAP 1 49 52 INT6 JMPM SMULT FORM W1*F1 + W2*F2 + W4*F4 1 4A 6C 1 4B 47 WRG7 [7] = W3 1 4C 16 LRG6 W3 TO MULTIPLIER REGISTER 676 1 4D 0E LRGE CALCULATE AF3 = AF4 + 1 1 4E 4E WRGE 1 4F 22 SRG2 TEST FOR INJECTOR OR IGNITION ENTRY 1 50 55 JMP1 INT7 PATH FOR IGNITION ENTRY 1 51 69 1 52 70 WDT1 PICK UP F3 FROM INJECTOR MAP 1 53 52 INT8 JMPM SMULT FORM W1*F1+W2*F2+W4*F4+W3*F3 1 54 6C 1 55 69 SHF2 SCALE RESULT 1 56 69 SHF2 SHB = (W1*F1+W2*F2+W3*F3+W4*F4)/16 = f0 1 57 4E WRGE BEGIN RESTORATION OF AF1 1 58 66 LSHA 1 59 53 WBSI EF GET -17 TO BUS TO SUBTRACT FROM AF1 1 5A EF 1 5B 60 ADDA PERFORM SUBTRACTION 1 5C 6C WSHA 1 5D 1E LRGE 1 5E 54 JMP0 INTEX EXIT TO CALLING ROUTINE 1 5F C4 1 60 71 INT1 WDT2 PICK UP F1 FROM IGNITION MAP 1 61 55 JMP1 INT2 1 62 2B 1 63 71 INT3 WDT2 PICK UP F2 FROM IGNITION MAP 1 64 55 JMP1 INT4 1 65 35 1 66 71 INT5 WDT2 PICK UP F4 FROM IGNITION MAP 1 67 55 JMP1 INT6 1 68 49 1 69 71 INT7 WDT2 PICK UP F3 FROM IGNITION MAP 1 6A 55 JMP1 INT8 1 6B 53 MULTIPLICATION SUBROUTINE OR DOUBLE ACCUMULATION ROUTINE WHICH PERFORMS MULTIPLICATION DURING f0 CALCULATION 1 6C 26 SMULT SRG6 CHECK FOR MULTIPLIER ZERO 1 6D 55 JMP1 SML 1 PATH TO CONTINUE 1 6E 70 1 6F 58 RJMP EXIT IMMEDIATELY IF MULTIPLIER IS ZERO 1 70 36 SML1 TRG6 INITIATE LOOP CONTROL 1 71 65 SML2 CLCY 1 72 60 ADDA PERFORM DOUBLE PRECISION ACCUMULATION 1 73 64 ACYB 1 74 06 IRG6 UPDATE LOOP CONTROL 1 75 26 SRG6 CHECK FOR LOOP EXHAUSTED 1 76 55 JMP1 SML2 PATH TO CONTINUE IN LOOP 1 77 71 1 78 58 RJMP EXIT THROUGH ENTRY

NOW BEGIN CHECK FOR DATA DISPLAY AND INPUT REQUESTS 1 89 C3 DSPLY SKB3 CHECK FOR DATA DISPLAY REQUEST 1 8A 55 JMP1 DSP1 PATH FOR NO DATA DISPLAY REQUEST 1 8B BC 1 8C 52 JMPM SDADD GO GET SOURCE ADDRESS 1 8D 93 1 8E 53 WBSI DSPX GET BASE ADDRESS OF DISPLAY ROUTINES 1 8F 9E 1 90 61 ADDB CALCULATE JUMP ADDRESS 1 91 6D WSHB GET IT TO BUS 1 92 51 JMPB JUMP TO IT 1 93 7A SDADD WIR1 BEGIN CALCULATION OF SOURCE/ DEST ADDRESS 1 94 66 LSHA 1 95 6A SHF3 GET RID OF MOST SIGNIFICANT 5 BITS 1 96 69 SHF2 1 97 50 CLBS CLEAR SHB 1 98 67 LSHB 1 99 6A SHF3 SHB NOW HAS S/D BITS 1 9A 6D WSHB COPY TO BUS 1 9B 68 SHF1 SHB= 2*SHB 1 9C 61 ADDB SHB= 3* (S/D BITS) 1 9D 58 RJMP SUBROUTINE RETURN 1 9E 45 DSPX WRG5 PICK UP LCNT FOR DISPLAY 1 9F 55 JMP1 DOUT 1 A0 B6 1 A1 49 WRG9 PICK UP DELTA 1 A2 55 JMP1 DOUT 1 A3 B6 1 A4 4A WRGA PICK UP LRPM (PREVIOUS RPM) 1 A5 55 JMP1 DOUT 1 A6 B6 1 A7 4B WRGB PICK UP IGNITION FUDGE VALUE 1 A8 55 JMP1 DOUT 1 A9 B6 1 AA 4C WRGC PICK UP INJECTOR FUDGE VALUE 1 AB 55 JMP1 DOUT 1 AC B6 1 AD 4D WRGD PICK UP CURRENT OPEN COUNT 1 AE 55 JMP1 DOUT 1 AF B6 1 B0 72 WISP WRITE UNMODIFIED ENGINE SPEED FOR DISPLAY 1 B1 55 JMP1 DOUT 1 B2 B6 1 B3 8F SEL0 SELECT CHANNEL 0 ON A/D (THROTTLE) 1 B4 80 CONV INITIATE A/D CONVERSION 1 B5 81 WRAD GET A/D RESULTS TO BUS 1 B6 78 DOUT LOR1 LOAD OUTPUT REGISTER OR1 1 B7 86 SBT0 STROBE INTO HEX DISPLAY 1 B8 89 RST0 1 B9 FF NOOP 1 BA 54 JMP0 CONT RETURN TO MAIN PROGRAM 1 BB 15 1 BC C4 DSP1 SKB4 CHECK FOR DATA INPUT REQUEST 1 BD 54 JMP0 CONT RETURN TO MAIN PROGRAM 1 BE 15 1 BF 52 JMPM SDADD GO GET DESTINATION ADDRESS 1 C0 93 1 C1 53 WBSI INDX GET BASE ADDRESS OF INPUT ROUTINES 1 C2 C7 1 C3 61 ADDB CALCULATE JUMP ADDRESS 1 C4 6D WSHB GET IT TO BUS 1 C5 65 CLCY 1 C6 51 JMPB 1 C7 7B INDX WIR2 INPUT CORRECTION REGISTERS 351 AND 356 1 C8 91 LT16 1 C9 6B SKNC 1 CA 7B WIR2 INPUT CORRECTION REGISTERS 355 AND 353 1 CB 92 LT53 1 CC 6B SKNC 1 CD 7B WIR2 INPUT CORRECTION REGISTERS 354 AND 357 1 CE 93 LT47 1 CF 6B SKNC 1 D0 7B WIR2 INPUT CORRECTION REGISTERS 352 AND 358 1 D1 94 LT28 1 D2 6B SKNC 1 D3 7B WIR2 1 D4 1B LRGB INPUT IGNITION FUDGE VALUE 1 D5 6B SKNC 1 D6 7B WIR2 1 D7 1C LRGC LOAD INJECTOR FUDGE VALUE 1 D8 6B SKNC 1 D9 7B WIR2 1 DA 1D LRGD LOAD INJECTOR OPEN COUNT 1 DB 6B SKNC 1 DC 7B WIR2 1 DD 19 LRG9 LOAD AUTO-IDLE DELTA 1 DE 54 JMP0 CONT RETURN TO MAIN PROGRAM 1 DF 15 __________________________________________________________________________

Much of the information included in the instruction definitions and the program has been included in the drawings. The outputs of the various instruction decoding circuits have been labeled with the instructions decoded by the circuit. The timing decoding circuit outputs have also been labeled with the various time slots T1-T8 which are decoded at the output. Instruction decoding tables 7C, 8D, 9D, 10C, 11G, 12F, 13E, 14C and 15E are also included to aid interpretation of the drawings and to show the exact manner in which the detailed circuitry operates.

For example, FIG. 7C indicates that instruction WDT1 is carried out by data memory 170 shown in FIGS. 7A and 7B. As noted in the instruction definitions, data is written from the injector data memory to the bus during the WDT1 instruction. The exact manner in which this instruction is carried out is shown by the Boolean Algebra notations in FIGS. 7A and 7B.

Referring to FIG. 7B, timing decoding circuit 460 and instruction decoding circuit 462 operate so that conductor 452 is switched to its 1 state under the following condition written in Boolean Algebra notation and noted on conductor 452: WDT1 .sup.. (T7 + T8). According to this notation, conductor 452 is switched to its 0 state during time slots T7 and T8 when the WDT1 instructions is in instruction latch 180. This condition holds both inputs of NOR gate N26 (FIG. 7A) in their 0 states. The input opposite conductor 452 is normally 0 due to the presence of inverter 17. NOR gate N26 is switched to its 1 state, thereby switching NOR gate N25 to its 0 state and switching conductor 450 to its 1 state. When conductor 450 is in its 1 state, injector memory chips 432-439 are enabled to read data onto the bus. The exact manner in which the other instructions are executed by the circuitry can be similarly determined from the drawings.

Those skilled in the art will appreciate that the apparatus and method described above is merely exemplary of the preferred practice of the invention, and that modifications can be made without departing from the spirit and scope of the invention as defined in the appended claims.

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed