`Frazer et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 9.494,926 B2
`Nov. 15, 2016
`
`USOO9494.926B2
`
`(54) METHODS AND APPARATUS EMPLOYING
`AN ACTION ENGINE FORMONITORING
`AND/OR CONTROLLING DYNAMIC
`ENVIRONMENTS
`
`(71) Applicant: Opteon Corporation, Cambridge, MA
`(US)
`(72) Inventors: Mark J. Frazer, Toronto (CA); T. Eric
`Hopkins, Wellesley, MA (US);
`Timothy N. Schaeffer, Somerville, MA
`(US)
`(73) Assignee: Opteon Corporation, North
`Cambridge, MA (US)
`
`(*) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 828 days.
`(21) Appl. No.: 13/646,452
`
`(22) Filed:
`
`Oct. 5, 2012
`
`(65)
`
`Prior Publication Data
`US 2013/0090745 A1
`Apr. 11, 2013
`
`Related U.S. Application Data
`(60) Provisional application No. 61/543,680, filed on Oct.
`5, 2011.
`
`(2006.01)
`(2006.01)
`
`(51) Int. Cl.
`G05B 5/02
`G05B 9/042
`(52) U.S. Cl.
`CPC ........... G05B 15/02 (2013.01); G05B 19/0421
`(2013.01); G05B 2219/1153 (2013.01); G05B
`2219/2214 (2013.01); G05B 2219/2231
`(2013.01)
`
`(58) Field of Classification Search
`None
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,380,698 A
`4,858,101 A
`
`4, 1983 Butts
`8, 1989 Stewart et al.
`(Continued)
`
`FOREIGN PATENT DOCUMENTS
`
`CN
`CN
`
`6, 2002
`1353828 A
`2, 2008
`1.01131575 A
`(Continued)
`
`OTHER PUBLICATIONS
`
`International Search Report and Written Opinion for PCT Interna
`tional Application No. PCT/US2012/059097 dated Dec. 11, 2012.
`(Continued)
`Primary Examiner — Carlos Ortiz Rodriguez
`(74) Attorney, Agent, or Firm — Cooley, LLP
`(57)
`ABSTRACT
`A dynamic environment (e.g., an automated industrial pro
`cess) has multiple conditions in response to which corre
`sponding actions are required, and comprises various equip
`ment, control device(s) to control the equipment, and one or
`more sensors to generate input signal(s) representing a
`monitored condition of the environment. A control system
`for the environment comprises a master processor and one or
`more co-processors, wherein the master processor config
`ures a given co-processor to evaluate only a first Subset of
`conditions expected to occur in the environment within a
`specified time period (e.g., less than a response time of the
`master processor), and to provide first control information
`representing an action to be taken if a particular condition of
`the first subset is satisfied. The co-processor receives the
`input signal(s) representing the monitored condition, pro
`cesses the input signal(s) so as to determine if the particular
`condition of the first subset is satisfied, and provides the first
`control information to the control devices so as to control the
`equipment. Exemplary applications include dynamic envi
`ronments in which machine vision techniques and/or equip
`ment are employed.
`33 Claims, 10 Drawing Sheets
`
`RECEWE
`QUEE
`44
`
`counter(s)
`42
`
`SENSORS)
`40
`
`196
`
`194
`
`HOUSEKEEPNG
`CPU90
`
`NPUTss 12
`
`192
`
`192
`
`ACTION ENGINE1
`coNDITIONS 142c
`
`EVENT TABLE12
`
`158c
`
`A B C CTR S C NSTR 144
`
`1
`
`so
`
`Do X
`
`Node
`
`O
`
`O
`
`1
`
`- ||
`
`3
`
`|| 1 |NO-OP
`
`1
`
`Y
`
`1
`
`0
`
`1
`
`- || 1
`
`|| 0 | No-op
`
`?
`s
`
`
`
`SCANNER 16Oc
`30c
`
`140c-1
`
`140-2
`
`140-3
`40c-4
`
`140C-5
`
`OUTPUT
`SIGNALS 68
`
`OUTPUt
`US 14
`
`SEMAPHRE
`REGISTER
`150
`
`TRANSMT
`(UU
`34
`
`IPR2025-00943
`Tesla EX1005 Page 1
`
`
`
`US 9,494,926 B2
`Page 2
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`2011 O161538 A1
`2011/023.0991 A1
`2013/00966.97 A1
`
`6, 2011 Decker
`9, 2011 Case
`4/2013 Frazer et al.
`
`4,876,664
`5,287,548
`5,594.917
`5,600,845
`5,748,468
`5,978,352
`6,282.462
`6,536,029
`6,567,709
`6,594,529
`6,646,564
`6,665,650
`6,941,247
`6,944,746
`6,968,242
`7,086,036
`7,120,505
`7,167,971
`7,200,741
`7,260,668
`7.469,177
`7,472,106
`7,522,066
`7,577,482
`7.593,784
`7,613,783
`7,774,074
`7.987,305
`8, 155,769
`8, 195,844
`8,761,036
`8,884,552
`8,904,074
`2005/OO97233
`2007, OO13547
`2007/O194944
`2007/0266370
`2008, 0046103
`2008, OO821.86
`2008/0260297
`2010/0281483
`2011 OO187O6
`2011/0022.192
`2011/0022822
`2011/OO77749
`2011/O157389
`
`A 10, 1989
`A
`2, 1994
`A
`1/1997
`A
`2, 1997
`A
`5, 1998
`A 11, 1999
`B1
`8, 2001
`B1
`3, 2003
`B1
`5/2003
`B1
`T/2003
`B1
`11, 2003
`B1
`12, 2003
`B2
`9, 2005
`B2
`9, 2005
`B1
`11/2005
`B2
`8, 2006
`B2 10, 2006
`B2
`1/2007
`B1
`4, 2007
`B2
`8, 2007
`B2 12, 2008
`B2 12, 2008
`B2
`4, 2009
`B1
`8, 2009
`B2
`9, 2009
`B2 11/2009
`B2
`8, 2010
`B2
`T 2011
`B2 *
`4, 2012
`B2
`6, 2012
`B2
`6, 2014
`B2 11/2014
`B2 12, 2014
`A1
`5/2005
`A1
`1/2007
`A1
`8, 2007
`A1 11, 2007
`A1
`2, 2008
`A1
`4, 2008
`A1 10, 2008
`A1 11, 2010
`A1
`1, 2011
`A1
`1, 2011
`A1
`1, 2011
`A1
`3, 2011
`A1
`6, 2011
`
`Bittorf et al.
`Flood et al.
`Palermo et al.
`Gilson et al.
`Notenboom et al.
`Imaizumi et al.
`Hopkins
`Boggs et al.
`Malm et al.
`Boggs et al.
`AZieres et al.
`O'Grady, Jr. et al.
`Voigt et al.
`So
`Hwu et al.
`Boggs et al.
`Nakamura et al.
`Asaad et al.
`Mine
`Franke
`Samad et al.
`Muneta et al.
`Galera et al.
`Steele et al.
`Carle et al.
`Naismith
`Davlin et al.
`Blair et al.
`Chandhoke ..................... TOO/86
`Fulton et al.
`Fulton et al.
`van Doorne et al.
`Lee et al.
`Oka et al.
`Boaz
`Galera et al.
`Myers et al.
`Ashida
`Hood et al.
`Chung et al.
`Rakib et al.
`Egawa
`Plache et al.
`Chandhoke
`Shang et al.
`McClellan
`
`FOREIGN PATENT DOCUMENTS
`
`CN
`CN
`DE
`DE
`JP
`JP
`
`8, 2009
`101498468 A
`9, 2011
`102.200786 A
`100 13 541 A1 10, 2001
`10 2009 047 O24 A1
`5, 2011
`2002-29.7209. A 10, 2002
`2010-079355. A
`4/2010
`
`OTHER PUBLICATIONS
`
`W. Bolton, “Programmable Logic Controllers.” (Elsevier, 4th ed.
`2006).
`Dias, J. et al., “Simulating Pursuit with Machine Experiments with
`Robots and Artificial Vision.” IEEE Transactions on Robotics and
`Automation, vol. 14, No. 1, Feb. 1998, pp. 1-18.
`Ito, T. et al., “A Master-Slave Adaptive Load-Distribution Processor
`Model on PCA.” Proceedings of the 19th IEEE International
`Parallel and Distributed Processing Symposium, Apr. 2005, 8 pages.
`Martinez, J. et al., “A modular and scalable architecture for PC
`based real-time vision systems.” Real Time Imaging, vol. 9, 2003,
`pp. 99-112.
`Ziemba, R. “Use of programmable logic controller (PLC) for
`temperature, position, velocity and pressure control of injection
`molding machinery.” Industry Applications Annual Meeting, 1988,
`Conference Record of the 1988 IEEE, pp. 12-19.
`Office Action dated Aug. 7, 2015 from U.S. Appl. No. 13/646,326.
`Extended European Search Report dated Jul. 27, 2015 from EP
`Application No. 12838771.9.
`Rao, N. “Programmable Controllers for Special Control Applica
`tions in Rolling Mills.” Industrial Automation and Control. 1995,
`IEEE/IAS International Conference, Jan. 5, 1995, pp. 173-177.
`Office Action mailed Apr. 22, 2016 from U.S. Appl. No. 13/646,326.
`Tang et al., “Application Technology of Programmable Controller.”
`published by Hubei Science and Technology Press, 2008, 35 pp.
`Office Action dated Mar. 31, 2016 from CN Application No.
`201280.0597609.
`Office Action Search Report from CN Application No.
`201280.0597609.
`Notice of Allowance dated Aug. 17, 2016 from U.S. Appl. No.
`13/646,326.
`Office Action mailed Mar. 11, 2016 by Japanese Patent Office for
`Application No. JP 2014-534803 (including English Translation).
`
`* cited by examiner
`
`IPR2025-00943
`Tesla EX1005 Page 2
`
`
`
`U.S. Patent
`
`Nov.15, 2016
`
`Sheet 1 of 10
`
`US 9,494,926 B2
`
`
`
`o€SSd00udGALVWOLNV
`
`OL
`
`
`
`JOYNLNOD)LNdNI)
`
`SYHOLVNLOVINAWdINOASHOSNAS
`
`
`(SSO0IAaa(SS9IAga
`
`
`
`89—99
`
`
`
`
`
`YATIONLNOOOIDOTFIEVNWNVeSOdd
`
`(91d)
`
`LOla
`
`IPR2025-00943
`Tesla EX1005 Page 3
`
`IPR2025-00943
`Tesla EX1005 Page 3
`
`
`
`
`
`U.S. Patent
`
`Nov. 15, 2016
`
`Sheet 2 of 10
`
`US 9,494.926 B2
`
`99
`
`
`
`IPR2025-00943
`Tesla EX1005 Page 4
`
`
`
`U.S. Patent
`
`Nov. 15, 2016
`
`Sheet 3 of 10
`
`US 9,494.926 B2
`
`
`
`
`
`
`
`9
`
`Z
`9
`
`£579
`
`IPR2025-00943
`Tesla EX1005 Page 5
`
`
`
`U.S. Patent
`
`Nov.15, 2016
`
`Sheet 4 of 10
`
`US 9,494,926 B2
`
`89
`
`89
`
`1-021
`
`JOSS9901g-09
`
`payeoipeqd
`
`Alows\
`
`JOSS8901d-09
`
`nding
`
`
`2-021
`
`a0epezul
`
`sjeuBis
`
`Jase
`
`JOSSO90/q
`
`uoneolunWWwo4wun
`
`Buisseo0J4
`
`feoyu=|—yndu|
`
`
`payeolpaq
`
`Ajows\
`
`eyeq/weiBold
`
`uonoy
`
`7sulbug
`
`IPR2025-00943
`Tesla EX1005 Page 6
`
`IPR2025-00943
`Tesla EX1005 Page 6
`
`
`
`
`
`
`
`U.S. Patent
`
`Nov. 15, 2016
`
`Sheet S of 10
`
`US 9,494.926 B2
`
`
`
`IPR2025-00943
`Tesla EX1005 Page 7
`
`
`
`U.S. Patent
`
`Nov. 15, 2016
`
`Sheet 6 of 10
`
`US 9,494.926 B2
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`dO-ON
`
`00 | 0
`
`IPR2025-00943
`Tesla EX1005 Page 8
`
`
`
`U.S. Patent
`U.S. Patent
`
`Nov.15, 2016
`
`Sheet 7 of 10
`
`US 9,494.926 B2
`US 9,494,926 B2
`
`909)OdInaqng
`
`
`
`I0ft
`
`siaysiBoy
`yndino
`
`JeuueOS
`JBUULDS
`
` Paysagewageel010JANSEN
`Bulouenbes|uMajqe|jaarbeysluanalceindd
`
`Joyesedwon
`
`o1607
`
`9
`
`IPR2025-00943
`Tesla EX1005 Page 9
`
`IPR2025-00943
`Tesla EX1005 Page 9
`
`
`
`U.S. Patent
`U.S. Patent
`
`Nov.15, 2016
`
`Sheet 8 of 10
`
`US 9,494.926 B2
`US 9,494,926 B2
`
`
`
`NOOP
`
`NOOP
`
`
`
`REGISTERS
`CHAINED
` met110c¢
`
`if144¢-2
`-L144¢-4{
`sae
`ACTIONJ
`
`
`
`
`
`
`
`
`©
`
`. ©
`
`ey
`LL
`
`IPR2025-00943
`Tesla EX1005 Page 10
`
`
`
`0
`
`1 | r E
`
`°
`°
`°
`°
`°
`
`
`Qo
`-
`-
`-
`oO
`
`
`Oo
`°
`
`
`Oo
`
`=
`
`-
`
`°
`
`-
`
`Oo
`
`°
`
`I
`
`I
`
`I
`
`-
`
`oO
`
`-
`
`Cc
`
`o
`
`i
`
`oO
`
`a
`
`<
`
`N N
`142c-1TNS142c-3
`142c-5
`142c-4
`
`IPR2025-00943
`Tesla EX1005 Page 10
`
`
`
`U.S. Patent
`
`Nov. 15, 2016
`
`Sheet 9 of 10
`
`US 9,494.926 B2
`
`
`
`
`
`
`
`ETTEVIL LINEAE
`
`?-00||
`
`
`
`Z-00Z|| ? ||OSSE OORHd-OO
`
`
`
`ETTEVIL LINEAE
`
`
`
`ETTEVIL LINEAE
`
`U-00||
`
`IPR2025-00943
`Tesla EX1005 Page 11
`
`
`
`U.S. Patent
`U.S. Patent
`
`Nov.15, 2016
`
`Sheet 10 of 10
`
`US 9,494.926 B2
`US 9,494,926 B2
`
`
`
`SS900Jq¢peyewoyny
`
`
`
`
`
`
`
`
`
`
`
`
`
`Sguswidinbysonoqoy
`
`(SOdIA0q[OUD)}(seolaeqyndu)ssojenpy
`SIOSU8S
`
`
`
`
`
`of
`
`89
`
`
`
`
`
`yusudinbguolsiAsuryoeyy
`
`OltO61
`
`OlOY
`
`
`
`wajshs[ou]U0D
`
`
`
`uolnoyJa}se/\
`
`
`
`suibugJOSSE90lq
`
`
`
`Buisseoo0lgebeul|
`
`4eyndwoy
`
`y
`
`IPR2025-00943
`Tesla EX1005 Page 12
`
`IPR2025-00943
`Tesla EX1005 Page 12
`
`
`
`
`
`US 9,494,926 B2
`
`1.
`METHODS AND APPARATUS EMPLOYING
`AN ACTION ENGINE FORMONITORING
`AND/OR CONTROLLING DYNAMIC
`ENVIRONMENTS
`
`CROSS-REFERENCE TO RELATED
`APPLICATION
`
`The present application claims a priority benefit, under 35
`U.S.C. S 119(e), to U.S. provisional application Ser. No.
`61/543,680, filed on Oct. 5, 2011, entitled “Methods, Appa
`ratus and Systems for Monitoring and/or Controlling
`Dynamic Environments, which application is incorporated
`herein by reference in its entirety.
`
`10
`
`15
`
`BACKGROUND
`
`2
`general architecture and various aspects of functionality,
`PLCs are in many respects similar to general-purpose com
`puters (e.g., desktop or laptop personal computers); how
`ever, whereas general-purpose computers typically are opti
`mized for calculation and display tasks, PLCs generally are
`optimized for control tasks in a dynamic environment Such
`as an automated industrial process. Accordingly, PLCs gen
`erally are thought of as special-purpose control computers
`for controlled dynamic environments. Since PLCs often are
`employed in the demanding conditions of an automated
`industrial process, from a package design standpoint con
`ventional PLCs often tend to be ruggedly designed so as to
`withstand demanding environments in which the PLC may
`be exposed to one or more of physical vibrations, challeng
`ing temperature and humidity conditions, dust or potentially
`damaging materials, and electrically noisy environments.
`FIG. 2 illustrates a generalized block diagram of the
`typical electrical components/circuitry (e.g., "hardware’)
`constituting the conventional PLC 50 of FIG. 1. As shown
`in FIG. 2, the basic functional components of the PLC 50
`include a processor unit 52, memory 54, power supply 56,
`input interface 58, output interface 60, and one or more
`communications interfaces 62 all communicatively and/or
`electrically coupled to one another. FIG. 2 also shows a
`programming device 64 communicatively coupled to the
`PLC 50 and employed to program the PLC.
`In FIG. 2, the processor unit 52 includes a microprocessor
`to interpret input signals 66 received by the input interface
`58, and in turn provide output signals 68 via the output
`interface 60 So as to implement control actions according to
`a program (e.g., series of processor-executable instructions)
`stored in the memory 54. In particular, the memory 54 stores
`the program containing instructions representing the control
`actions to be implemented by the microprocessor, as well as
`various data relating to input signals, output signals and
`operation of the microprocessor as it carries out various
`instructions. The input interface 58 provides to the processor
`unit 52 information via input signals 66 received from
`external input devices (e.g., sensors, Switches, meters, coun
`ters, etc.). The processor unit 52 in turn communicates
`control actions to external output devices (e.g., valves,
`motors, etc.) via the output signals 68.
`In FIG. 2, examples of components constituting the
`respective input and output interfaces may include analog
`to-digital converters, optocouplers/optoisolators, buffers,
`latches, and drivers so as to appropriately interface with
`various external input and output devices associated with the
`controlled dynamic environment. Although four input sig
`nals and four output signals are shown for purposes of
`illustration in FIG. 2, it should be appreciated that different
`types of conventionally available PLCs may be configured
`to accept different numbers of input signals (some number N
`of input signals) and provide different numbers of output
`signals (some number X of output signal), and that the
`number of input signals and output signals need not neces
`sarily be the same. In general, the number N of input signals
`and the number X of output signals is dictated at least in part
`by the number of input devices 40 employed to monitor the
`automated process 10 of FIG. 1 and the number of control
`devices 30 employed to control the equipment 20.
`In the PLC 50 shown in FIG. 2, the communications
`interface(s) 62 is/are used to receive and transmit various
`data (which may relate to one or more of the programs for
`execution by the processor unit 52, the input signals, the
`output signals, other data to be utilized by the processor unit
`52 in executing the program, etc.) via one or more commu
`nication networks from or to one or more network-based
`
`25
`
`35
`
`40
`
`A programmable logic controller (PLC) is a special form
`of computer-based controller typically employed to control
`equipment, machinery and/or instrumentation in automated
`industrial electromechanical processes. A common example
`of such an automated industrial electromechanical process is
`given by the operation of a factory assembly line. In the
`dynamic environment of a factory assembly line, there may
`be multiple pieces of industrial equipment, machinery and/
`or instrumentation (collectively referred to as “equipment'
`for simplicity) associated with the fabrication, assembly,
`and/or packaging of parts/components, as well as the trans
`port of the parts/components amongst various stages of
`fabrication, assembly and/or packaging.
`30
`FIG. 1 provides a general illustration of the typical role of
`a conventional PLC 50 in connection with an automated
`industrial process 10 Such as the operation of a factory
`assembly line. In addition to multiple pieces of equipment
`20, the dynamic environment of a factory assembly line
`typically includes several control devices 30 (e.g., actuators)
`for operating the multiple pieces of equipment 20, as well as
`multiple input devices 40 (e.g., sensors) to provide indica
`tions of equipment status and/or various conditions associ
`ated with fabrication, assembly, packaging and/or transport
`of parts/components. Such indications provided by the input
`devices 40 often are referred to as “states' or “conditions'
`of the dynamic environment. Some examples of control
`devices 30 used to operate the equipment 20 include mag
`netic relays, Solenoids, electric motors, and pneumatic or
`45
`hydraulic cylinders. Some examples of input devices 40
`include limit Switches, position sensors, analog sensors (e.g.,
`pressure or temperature sensors), and imaging devices (e.g.,
`cameras).
`Generally speaking, the PLC 50 is employed to monitor
`input signals 66 provided by input devices 40. These input
`signals, respectively or in various combinations, represent
`different states (conditions) of the dynamic environment as
`a function of time. In response to the input signals present
`at a given time, the PLC 50 generates output signals 68 to
`the control devices 30 for operating the industrial equipment
`20, to ensure the automated process 10 is implemented
`efficiently and predictably. To this end, the PLC 50 generally
`is employed to coordinate predetermined sequences of
`actions to be taken by the equipment 20 implementing the
`process 10, in which respective actions may need to occur
`within a certain time window contingent on information
`provided by the input devices 40 (via the input signals 66).
`A typical PLC includes programmable memory to store
`processor-executable instructions and employs various other
`electronic components to implement functions such as logic,
`sequencing, timing, counting, and arithmetic. In terms of
`
`50
`
`55
`
`60
`
`65
`
`IPR2025-00943
`Tesla EX1005 Page 13
`
`
`
`3
`external input/output devices and/or other remote PLCs. In
`general, the communications interface(s) 62 implement Such
`functions as device verification, data acquisition, synchro
`nization between user applications, and connection manage
`ment. The power supply 56 converts AC voltage to a low DC
`Voltage (e.g., 5 Volts) required for the various circuitry in the
`PLC to operate. Finally, the programming device 64 (which
`in some examples may be coupled to the PLC 50 via the
`communication interface(s) 62) is employed to enter into the
`memory 54 the program to be executed by the processing
`unit 52; typically, the program is developed/written in the
`programming device 64 and then transferred to the memory
`54 of the PLC 50.
`FIG. 3 provides additional details of the internal archi
`tecture of the PLC 50 shown in FIG. 2, particularly in
`connection with the processor unit, various elements of
`memory, input/output interfaces, and busses to facilitate
`information transfer. For example, FIG. 3 illustrates that the
`processor unit 52 (denoted as CPU in FIG. 2) is associated
`with a clock 52A, the frequency of which determines the
`operating speed of the PLC and provides the timing and
`synchronization for various elements in the PLC. Informa
`tion within the PLC is carried amongst the processor unit,
`various memory elements, and to and from the input/output
`interfaces 58 and 60 via multiple busses; in particular, the
`PLC employs a data bus for transporting data to and from the
`PLC’s constituent elements, an address bus to send the
`addresses of locations for accessing Stored data, and a
`control bus for signals relating to internal control actions.
`The PLC architecture also may include an I/O system bus for
`communications between the input/output interfaces 58 and
`60 (from which the input signals 66 are received from
`external input devices, and the output signals 68 are pro
`vided to external output devices, respectively) and an input/
`output unit 55 configured to transfer input/output informa
`tion between the I/O system bus and the PLC's data bus.
`In general, the processor unit 52 (CPU) of the architecture
`shown in FIG. 3 includes an arithmetic and logic unit (ALU)
`that is responsible for data manipulation and carrying out
`arithmetic operations (e.g., addition, Subtraction, multipli
`cation, division) and digital logic operations (e.g., AND,
`OR, NOT, and EXCLUSIVE-OR), internal memory regis
`ters used to store information involved in program execu
`tion, and an internal control unit to receive the output of the
`clock 52A and control the timing of operations. The various
`memory elements constituting memory 54 may include
`read-only-memory (ROM) 54A to provide permanent stor
`age for the operating system and fixed data used by the
`processor unit, user program random-access memory 54B
`(User program RAM) employed for the program to be
`executed by the PLC, and data random-access memory 54C
`(Data RAM) used for data (information regarding the status
`of input and output signals, values of timers and counters
`and other internal devices, etc.). The program to be executed
`by the PLC may also be stored in non-volatile memory.
`From the PLC architecture illustrated in FIG. 3, it may be
`appreciated that although conventional PLCs often are con
`sidered special-purpose computers rather than general-pur
`pose computers, both PLCs and general-purpose computers
`share many aspects of a “Von Neumann' computer archi
`tecture. In a Von Neumann computer architecture, computer
`instructions (the “user program” stored in User program
`RAM 54A) as well as any data required for program
`execution (e.g., stored in Data RAM 54C) are accessed from
`various memory elements over a common bus architecture
`(i.e., via the address, data and control busses shown in FIG.
`3). Although conventional PLCs attempt to tailor computer
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 9,494,926 B2
`
`10
`
`15
`
`4
`performance by being special-purpose computing devices
`implementing specific functionality corresponding to a par
`ticular automated industrial process, the architecture of
`conventional PLCs nonetheless places fundamental limits
`on their performance, as they execute instructions serially
`and hence effectively have no capacity for parallel execu
`tion.
`Programming of a PLC primarily is concerned with
`specifying digital logic functions that process one or more
`input signals representing a sensed condition (“state') asso
`ciated with the automated process being implemented by
`various equipment at a given time. The digital logic func
`tions acting on the monitored condition of the automated
`process generate one or more control signals in response to
`the monitored condition. As noted above, these control
`signals are applied to control devices that in turn control the
`various equipment to take Some action involved in further
`implementing the automated process. At a high level, a PLC
`program generally implements a sequence of one or more
`actions in response to monitored conditions as a function of
`time (e.g., if A or B occurs, actuate C; if A and B occurs,
`actuate D). The automated process evolves over time as
`actuators control equipment to drive the process to new
`conditions. Hence, as noted above, the automated process
`constitutes a dynamic environment in which an evolution of
`conditions is monitored by the PLC, and wherein the PLC
`makes decisions and updates control signals to actuators,
`based on respective monitored conditions, to drive the
`environment to new conditions.
`Many conventional PLCs are programmed via a “ladder
`logic' programming language to codify the digital logic that
`is used to evaluate inputs signals representing monitored
`conditions. Common ladder logic programming languages
`typically employ graphical diagrams that resemble “rungs'
`of a ladder, wherein respective rungs represent circuit dia
`grams for electromechanical relays (which were used in
`older logical control systems) to facilitate intuitive program
`ming by control system engineers. Ladder logic is best
`Suited to implement control solutions in which primarily
`binary variables are involved (e.g., the monitored conditions
`in a dynamic environment each may be represented as
`TRUE, i.e., logic one, or FALSE, i.e., logic Zero).
`However, in a variety of automated process environments,
`outputs of sensors may be analog signals. Accordingly, in
`Some instances, if the direct output of a given input device?
`sensor is not in the form of a binary signal, the output of the
`input device/sensor may be pre-conditioned in some respects
`to provide the input signals 66 in binary form. For example,
`an analog output of a temperature sensing device may be
`first applied to a comparator circuit having a temperature set
`point Voltage as another input so as to provide, as one of the
`input signals 66, a binary indication of whether or not the
`monitored temperature is above or below the particular
`temperature set point. Alternatively, an analog value may be
`converted to a quantitative value encoded into a multi-bit
`digital word used by the system to perform mathematical
`operations and/or make decisions. Similarly, a multi-bit
`output of a counter serving as an input device may be
`compared to a pre-determined count to in turn provide, as
`one of the input signals 66, a binary indication of whether or
`not the counter output is above or below the pre-determined
`count (alternatively, an output of a counter having some
`number B of bits may be provided directly as a number B of
`input signals 66). Yet other types of input devices may
`generate highly transient signals; for Such devices, a latch
`may be employed to facilitate the detection of a signal edge
`or transient so as to provide an input signal of Suitable
`
`IPR2025-00943
`Tesla EX1005 Page 14
`
`
`
`5
`duration to the PLC indicating the occurrence of the edge/
`transient. In other examples, input devices may include
`various networked devices, for which one or more commu
`nication status signals (e.g., data packet transmitted/re
`ceived) may serve as one of the input signals 66.
`Ladder logic and other languages for programming con
`ventional PLCs generally are considered to be rules-based
`programming languages. A typical PLC program may be
`constituted by a series of rules, wherein each rule is consti
`tuted by one or more binary input signals (e.g., A, B, C, D)
`representing a monitored condition of the automated pro
`cess, and a corresponding control signal (e.g., X) that is
`generated in response to particular digital logic evaluating
`the input signals. Accordingly, in Some aspects a rule in a
`PLC program may be viewed in a manner similar to an
`“IF/THEN” statement (e.g., If (AAND NOT B) AND (COR
`D), THEN X). The PLC program includes all of the rules
`necessary to implement all of the actions that are required in
`response to different combinations of input signals repre
`senting all of the different possible conditions of the auto
`mated process that may be monitored via the set of available
`input signals.
`With reference again to FIG. 2, the programming device
`64 (which may be a handheld programming device, a
`desktop console, or a personal computer Such as a laptop or
`tablet computer) is typically employed to create, store and
`download to the PLC executable programs including a set of
`rules. When the program is executed by the PLC, the rules
`are typically executed sequentially from first to last and then
`repeated, wherein each pass through the set of rules in
`sequence often is referred to as a "scan” or "control loop.”
`Thus, consecutive repetitions of the scan or control loop
`represent a continuous cycle of the PLC reading input
`signals, examining input signal using the logic encoded in
`the program rules, and then changing control signals output
`by the PLC as appropriate.
`More specifically, with respect to general operation,
`including various housekeeping activities and performing
`scans or control loops, conventional PLCs typically function
`in a cyclical manner. For example, when power is initially
`applied to a PLC, the PLC may perform a self-check or
`diagnostic routine to ensure that various hardware compo
`nents are functioning properly. With reference again to
`FIGS. 2 and 3, if no fault or error conditions are detected, the
`PLC then controls the input interface 58 and memory 54 so
`as to read each of the input signals 66 sequentially and store
`each read instance of a given input signal in a dedicated
`memory location. The PLC then executes its program by
`sequentially testing each rule (i.e., fetching, decoding and
`executing the program instructions in sequence) and solving
`the logic encoded in the rule.
`In particular, for each rule, the stored instances of certain
`input signals as specified in the rule are retrieved from
`memory, the rule is evaluated based on the retrieved input
`signals, and if the rule is satisfied (i.e., all of the pre-requisite
`conditions specified in the rule are met), a control signal
`corresponding to the satisfaction of the rule is generated. If
`Such a control signal is generated, it is stored in a dedicated
`memory location. Evaluation of a given rule may involve
`multiple read operations from, and write operations to,
`different memory locations (e.g., registers) as the digital
`logic codified in the rule is solved. As noted above, respec
`tive rules are evaluated sequentially as the PLC executes the
`ladder logic program; accordingly, while the PLC is evalu
`ating a particular rule, it is inattentive to the other rules
`codified in the program.
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 9,494,926 B2
`
`10
`
`15
`
`6
`If the PLC generates any control signals in response to
`evaluation of the rules, it may provide these for output as a
`set of updated control signals 68. These control signals in
`turn are transmitted to one or more actuators or other
`equipment to be controlled in connection with the automated
`process. The PLC then returns to performing the self-check,
`reading each of the input signals and storing them to
`memory, executing the program rules to complete the con
`trol loop, updating the control signals for output (if any), and
`repeating this cycle iteratively.
`The time period required by the PLC to complete the
`cycle described above commonly is referred to as a “cycle
`time' or “scan time.” Typical cycle times of conventional
`PLCs are on the order of approximately 10 milliseconds to
`hundreds of milliseconds. The cycle time generally is deter
`mined by the particular CPU used in the processor unit, the
`size of the program to be scanned (e.g., the number of rules
`constituting the program, which in turn depends at least in
`part on the number of input signals to be read, the number
`of input signal combinations for which independent evalu
`ations are required, and the number of control signals to be
`generated), and the system functions that are in use pursuant
`to execution of the program. Thus, the more complex the
`program, the longer the cycle time will be.
`It should be appreciated that, in a conventional PLC, the
`vast majority of rules when evaluated in a given cycle are
`not satisfied (i.e., no control signal is generated pursuant to
`evaluation of the rule); if a rule is not satisfied, the program
`merely moves to the next rule for evaluation. In this manner,
`it is common in conventional PLCs for a substantial portion
`of a given cycle to be spent evaluating Successive rules
`without generating any control signals.
`Although relatively quick compared to general-purpose
`computers programmed to implement similar functionality,
`the cycle time of a PLC is not instantaneous. As a result, the
`PLC does not “watch’ its input signals all of the time, but
`instead the PLC samples the states of the input signals
`periodically depending on the cycle time. Furthermore, the
`cycle time constitutes a minimum delay in updating control
`signals (if generated pursuant to a satisfied rule) that are
`output by the PLC in response to sampled input signals. In
`this manner, the cycle time also may be viewed as a
`minimum response time (a “reaction time') of the PLC to a
`particular monitored condition (i.e., represented by a par
`ticular value for one or more of the input signals), and is
`often referred to as a “latency” of the PLC. Thus, it should
`be appreciated that due to this latency, an input signal that
`lasts for a duration shorter than the cycle time may be missed
`by the program (in general, any input signal must be present
`for longer than the cycle time). In some instances, external
`circuitry may be employed to latch transient signals so that
`they will not be missed entirely by the PLC. Even if a
`particular input signal is not “missed due to latching,
`however, a control signal that is to be generated in response
`to the input signal may be generated by the PLC too late to
`be effective for the correct operation of the equipment being
`controlled.
`Because of the cyclical nature in which a conventional
`PLC executes a program, all possible combinations of input
`signals (representing all possible conditions of the auto
`mated process being controlled for which some action is
`required) must be contemplated in a single control loop of
`the program. Stated different