Modern automated control systems can include a large number of controlled devices, sensors, actuators, cameras, and one or more controllers (e.g., microprocessors or microcontrollers). The controller(s) can receive and process data from at least the sensors and cameras and issue commands to operate the controlled devices based, at least in part, on the data received. Such automated control systems can operate in combination with dynamic environments where conditions in the environment change frequently causing changes in one or more sensor outputs, changes in responses by the control system and changes in control signals output by the controller(s).
The inventors have recognized and appreciated that sensing and control systems for dynamic environments should be fast (e.g., reflexively responsive), with very low latency between receipt of signals and data from connected devices in the environment (e.g., sensors, motors, actuators, lighting equipment, robotics equipment, imaging devices such as cameras, etc.) and transmission of control signals to the controlled devices that operate in the dynamic environment. Further, sensing and control systems should be flexible to handle a wide variety of signaling types including different digital and analog signaling types.
Previous work by the inventors relates to appreciably low latency control systems for dynamic environments, as well as flexible input/output circuitry to dynamically accommodate a variety of different signal types (e.g., transmission and/or reception of single-ended digital and analog signaling types and/or differential digital and analog signaling types analog signals) for multiple devices in the dynamic environment. Regarding this previous work, example implementations of low latency control systems can be found in U.S. Pat. No. 9,459,607, entitled “Methods, Apparatus, and Systems for Monitoring and/or Controlling Dynamic Environments,” issued Oct. 4, 2016, which patent is incorporated herein by reference in its entirety. Example implementations of flexible input/output circuitry can be found in U.S. Pat. No. 11,182,326, entitled “Input/Output Apparatus and Methods for Monitoring and/or Controlling Dynamic Environments,” issued Nov. 23, 2021, which patent is incorporated herein by reference in its entirety.
In view of the foregoing, the inventive implementations described in the present disclosure generally relate to augmenting the signal processing architecture of the inventors' previous work while at the same time maintaining or further decreasing the latency (or increasing the reflexive responsiveness) of such systems by the addition of signal-processing-resource circuitry (SPRe circuitry). In various examples, the SPRe circuitry is communicatively coupled to both the flexible input/output circuitry and also to one or more controllers so as to form a holistic control system for a dynamic environment. Examples of signal processing functionality that may be performed by the SPRe circuitry on signals or other information received from the controller(s), as well as signals or other information received from the flexible input/output circuitry, include but are not limited to: analog filtering; digital filtering; frequency and/or phase detection; normalization, scaling and/or other transformation (e.g., via one or more look-up tables or “LUTs”); digital signal generation; and analog signal generation.
In various aspects, SPRe circuitry as disclosed herein can be particularly configured by one or more controllers (including those controllers previously disclosed by the inventors) to perform a variety of signal processing and/or signal generation functionality; further, the controller(s) that configure the signal processing and/or signal generation functionality of the SPRe circuitry may also provide one or more signals to be processed by the SPRe circuitry (e.g., for transmission ultimately to one or more devices in the dynamic environment, via the flexible input/output circuitry). Likewise, the SPRe circuitry may receive one or more signals from the flexible input/output circuitry (which signals are provided in the first instance to the flexible input/output circuitry by one or more devices in the dynamic environment); the SPRe circuitry can process these signals received from the flexible input/output circuitry (in some instances based at least in part on particular configuration of the SPRe circuitry by the controller(s)) and in turn transmit the processed signals to the controller(s).
In some example implementations, as discussed in further detail below, SPRe circuitry according to the inventive concepts disclosed herein can include multiple processing resources. In one aspect, each of the processing resources of the SPRe circuitry may be particularly configured at a given time (e.g., by one or more controllers) to perform some type of signal processing or signal generation on a signal provided to the SPRe circuitry by either the controller(s) or the flexible input/output circuitry. In one example, a first processing resource of the SPRe circuitry may be configured by the controller(s) for a first type of signal processing or signal generation on a first signal (received from the controller(s) or from the flexible input/output circuitry), and a second processing resource of the SPRe circuitry may be configured by the controller(s) for a second type of signal processing or signal generation on the first signal and/or a second signal received from the controller(s) or the flexible input/output circuitry). Furthermore, the first processing resource of the SPRe circuitry may alternatively or additionally configure and/or trigger operation of the second processing resource of the SPRe circuitry to perform the second type of signal processing or signal generation or yet another type of signal processing or signal generation on the first signal, the second signal, and/or a third signal received from the controller(s) of the flexible input/output circuit.
In view of the foregoing, it should be appreciated that the respective processing resources of the SPRe circuitry in various example implementations may be flexibly and dynamically configured (and reconfigured) to perform some type of signal processing and/or signal generation in connection with “outbound” signals (from the controller(s) to the SPRe circuitry, then to the flexible input/output circuitry, then to the one or more devices in the dynamic environment) as well as “inbound” signals (from the one or more devices in the dynamic environment to the controller(s), via the flexible input/output circuitry and the SPRe circuitry). Additionally, it should be appreciated that at least a first processing resource of the SPRe circuitry may communicate directly with one or more other processing resources of the SPRe circuitry to configure and/or trigger operation of the one or more other processing resources, in some instances based at least in part on the processing or generation of a signal by the first processing resource. In this manner, multiple processing resources of the SPRe circuitry may be employed in tandem (e.g., concurrently and/or sequentially, as in a “cascade” of events and actions) to perform corresponding types of signal processing and/or signal generation with little to no intervention or configuration by the controller(s) (or any significant use of processing bandwidth of the controller(s)).
The foregoing concept of one processing resource of the SPRe circuitry being capable of dynamically configuring and/or triggering operation of one or more other processing resources of the SPRe circuitry is referred to herein as “cross-communication between multiple processing resources.” The SPRe circuitry can thereby offload signal-processing tasks that would otherwise by handled by the controller(s), freeing up the controller(s) to attend to other system management and control tasks. In various aspects, the offloading of signal processing bandwidth from controller(s) to the SPRe circuitry and the speed of the SPRe circuitry can significantly decrease the overall latency of the sensing and control system.
Some implementations relate to a control system comprising: a controller to issue control signals for controlling a at least one controlled device in a dynamic environment; flexible input/output (I/O) circuitry communicatively coupled to the controller and to the at least one controlled device to transform at least one first signal of a first signaling type from the controller to a second signal of a second signaling type that is supported by a first controlled device of the at least one controlled device; and a signal processing resource communicatively coupled to the controller and to the flexible I/O circuitry, wherein the signal processing resource is configured to offload at least one signal-processing task relating to the first signal from the controller.
Some implementations relate to a control system comprising: a controller to receive signals and data from at least one connected device in a dynamic environment; flexible input/output (I/O) circuitry communicatively coupled to the controller and to the at least one connected device to transform at least one first signal of a first signaling type from a first connected device of the at least one connected device to a second signal of a second signaling type that is supported by the controller; and a signal processing resource communicatively coupled to the controller and to the flexible I/O circuitry, wherein the signal processing resource is configured to offload at least one signal-processing task from the controller relating to the second signal.
It should be appreciated that all combinations of the foregoing concepts and additional concepts discussed in greater detail below (provided such concepts are not mutually inconsistent) are contemplated as being part of the inventive subject matter disclosed herein. In particular, all combinations of claimed subject matter appearing at the end of this disclosure are contemplated as being part of the inventive subject matter disclosed herein. It should also be appreciated that terminology explicitly employed herein that also may appear in any disclosure incorporated by reference should be accorded a meaning most consistent with the particular concepts disclosed herein.
The skilled artisan will understand that the drawings primarily are for illustrative purposes and are not intended to limit the scope of the inventive subject matter described herein. The drawings are not necessarily to scale; in some instances, various aspects of the inventive subject matter disclosed herein may be shown exaggerated or enlarged in the drawings to facilitate an understanding of different features. In the drawings, like reference characters generally refer to like features (e.g., functionally similar and/or structurally similar elements).
Regarding the controller 110 of the control system 102, example implementations of a controller 110 can be found in U.S. Pat. No. 9,459,607, entitled “Methods, Apparatus, and Systems for Monitoring and/or Controlling Dynamic Environments,” issued Oct. 4, 2016, which patent is incorporated herein by reference in its entirety. As noted in this patent, in general the controller 110 monitors and controls the dynamic environment 105, which has a plurality of conditions in response to which a plurality of actions are required. In one aspect, the controller 100 is configured to: 1) divide the plurality of conditions into multiple subsets including a first subset; 2) evaluate the first subset of the plurality of conditions by receiving at least one input signal 111 representing at least one monitored condition of the plurality of conditions and processing the at least one input signal so as to determine if at least one condition of the first subset is satisfied; and 3) provide first control information 113 representing at least one first action of the plurality of actions if the at least one condition of the first subset is satisfied. As shown in
The controller 110 can be implemented as a microprocessor, microcontroller, programmable logic controller, field-programmable gate array, digital signal processor, application specific integrated circuit, logic circuit, or some combination thereof. In some implementations, the controller 110 can be implemented as a networking component that generally manipulates a signal (e.g., an Ethernet PHY, a router, etc.). The controller 110 also may implement signal isolation functionality (e.g., with magnetics, capacitive coupling, and/or opto-isolators—not shown).
Regarding the flexible input/output circuitry 120 of the control system 102, example implementations of flexible input/output circuitry 120 can be found in U.S. Pat. No. 11,182,326, entitled “Input/Output Apparatus and Methods for Monitoring and/or Controlling Dynamic Environments,” issued Nov. 23, 2021, which patent is incorporated herein by reference in its entirety. In general, the flexible input/output circuitry 120 is communicatively coupled to the controller 110 to configure and support a first input/output (I/O) signaling channel 122A to facilitate communication between the flexible input/output circuitry and a first device 170A of a plurality of devices 170 in the dynamic environment 105. The flexible input/output circuitry 120 also configures and supports a second input/output (I/O) signaling channel 122B to facilitate communication between the flexible input/output circuitry and a second device 170B of the plurality of devices 170 in the dynamic environment 105. In one aspect, the flexible input/output circuitry 120 dynamically configures each of the first I/O signaling channel 122A and the second I/O signaling channel 122B, based on at least one programming input 119 provided by the controller, to support transmission and/or reception of single-ended digital and analog signaling types and/or differential digital and analog signaling types. Although only two I/O signaling channels 122A and 122B are shown for simplicity in
The control system 102 shown in
In various aspects, SPRe circuitry 115 can be particularly configured by the controller 110 to perform a variety of signal processing and/or signal generation functionality; further, the controller 110 may also provide one or more signals to trigger operation of the SPRe circuitry 115 or be themselves processed by the SPRe circuitry 115 (e.g., for transmission ultimately to one or more devices 170 in the dynamic environment 105, via the flexible input/output circuitry 120). Likewise, the SPRe circuitry 115 may receive one or more signals from the flexible input/output circuitry 120 (which signals are provided in the first instance to the flexible input/output circuitry by one or more devices 170 in the dynamic environment 105); the SPRe circuitry 115 can process the one or more signals received from the flexible input/output circuitry 120 (in some instances based at least in part on particular configuration of the SPRe circuitry 115 by the controller 110) and in turn transmit the processed signal(s) to the controller 110.
As shown in
As also shown in
In yet another aspect of the SPRe circuitry 115 shown in
Thus, it may be appreciated from the foregoing that a first processing resource of the SPRe circuitry 115 may be configured by the controller 110 for a first type of signal processing or signal generation on a first signal (received from the controller 110 or from the flexible input/output circuitry 120), and a second processing resource of the SPRe circuitry 115 may be configured by the controller 110 for a second type of signal processing or signal generation on the first signal and/or a second signal received from the controller 110 or the flexible input/output circuitry 120. Furthermore, the first processing resource of the SPRe circuitry 115 may alternatively or additionally configure and/or trigger operation of the second processing resource of the SPRe circuitry 115 to perform the second type of signal processing or signal generation or yet another type of signal processing or signal generation on the first signal, the second signal, and/or a third signal received from the controller(s) of the flexible input/output circuit.
In view of the foregoing, it should be appreciated that the respective processing resources of the SPRe circuitry 115 shown in
The foregoing concept of one processing resource of the SPRe circuitry 115 being capable of dynamically configuring and/or triggering operation of one or more other processing resources of the SPRe circuitry 115 is referred to herein as “cross-communication between multiple processing resources.” The SPRe circuitry 115 can thereby take on signal processing tasks that would otherwise by handled by the controller 110, freeing up the controller 110 to attend to other system management and control tasks. In various aspects, the offloading of signal processing bandwidth from controller 110 to the SPRe circuitry 115 and the speed of the SPRe circuitry 115 can significantly decrease the overall latency of the sensing and control system 100.
The inventors have further recognized and appreciated that this concept of cross-communication between multiple processing resources of the SPRe circuitry 115 can be employed to dynamically reconfigure respective processing resources of the SPRe circuitry such that a given processing resource acts as a “master” processing resource and one or more other processing resources act as a “slave” processing resource at a given time—and then the respective roles of master and slave processing resources can be reconfigured at a later time (such that a master becomes a slave or vice versa). In one example discussed further below, a first processing resource of the SPRe circuitry 115 is configured to process one or more incoming signals, via the flexible input/output circuitry 120, from a first device 170A (e.g., a first stepper motor) in the dynamic environment 105. In this example, the first stepper motor provides a signal 122A to the flexible input/output circuitry 120 upon completion of a particular task or reaching a certain state (e.g., completion of N shaft rotations). When the first processing resource 115A of the SPRe circuitry 115 receives the signal provided by the first stepper motor indicating completion of the particular task/reaching a certain state, the first processing resource triggers operation of the second processing resource 115B, which is configured to provide a signal 117B to the flexible input/output circuitry 120 and in turn a signal 122B to a second device 170B (e.g., a second stepper motor) in the dynamic environment 105 to operate in a particular manner (e.g., ramp up the motor speed to 2000 RPM). In this manner, the first processing resource 115A is a “master” and the second processing resource 115B is a “slave” in that the second stepper motor is only operated after the first stepper motor has completed a particular task or reached a certain state.
At a later time, one or both of the first and second processing resources of the SPRe circuitry 115 may be reconfigured (e.g., by the controller 110) such that the second processing resource expects an input from the second stepper motor and/or another device in the dynamic environment 105, and on receipt of this new input triggers operation of the first processing resource or yet another processing resource to provide a signal to the first stepper motor or yet another device in the dynamic environment—in this manner, the second processing resource 115B becomes a “master” that reconfigures and/or triggers operation of another processing resource of the SPRe circuitry 115.
Thus, it may be readily appreciated that the SPRe circuitry 115 provides a sophisticated architecture with rich functionality to augment control systems for dynamic environments by providing flexible, dynamic, bi-directional and reconfigurable signal processing and signal generation.
In some implementations as described in further detail below, the respective processing resources of the SPRe circuitry can be implemented, at least in part, with dedicated circuitry (e.g., logic circuitry, code implemented on gates of a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), universal asynchronous receiver transmitter (UART), digital signal processor (DSP), etc., or some combination of such dedicated circuitry), so that the SPRe circuitry can perform signal processing and/or signal generation tasks faster than the tasks would be performed by the controller(s) to which the SPRe circuitry is coupled.
As noted above, the flexible I/O circuitry 120 facilitates communications between the controller 110 and connected devices 170 (e.g., one or more controlled devices 140, 142, one or more cameras 150, 152, and/or one or more sensor 160, 162) that operate in the dynamic environment 105. As shown in
Communication between the flexible I/O circuitry 120 (and/or controller 110) and a connected device in the dynamic environment 105 over a signaling channel can be in a half-duplex mode for some of the connected devices 170 that support half-duplex communications. In some implementations, full duplex communication can be established with a connected device that supports full duplex communication by connecting two signaling channels from the flexible I/O circuitry 120 to the connected device and using one signaling channel as a downlink to the connected device (from the controller 110 to the connected device) and the other signaling channel as an uplink to transmit data, for example, to the controller 110. In some instances, a signaling channel of the flexible I/O circuitry 120 may be configured to implement more than one type of signaling at the same time (e.g., providing a current through a signaling channel while sampling the voltage on the same channel, such as when providing a current to a thermistor and reporting the temperature from a thermistor).
More specifically, the SPRe circuitry 115 shown in
The drawing of
Referring again to
In some cases, the SPRe circuitry 115 can be implemented additionally or alternatively, at least in part, with machine code that executes on circuitry of at least one processor. Such a processor can be a microprocessor, microcontroller, field-programmable gate array (FPGA), a programmable logic controller (PLC), application-specific integrated circuit (ASIC), digital signal processor (DSP), custom programmable digital and/or analog circuitry, etc., or some combination thereof. For example, machine code executing on a digital signal processor can perform a filtering function on a sampled analog signal received from the flexible I/O circuitry 120.
By implementing the SPRe circuitry 115 with dedicated circuitry, the SPRe circuitry can perform signal-processing tasks more quickly than the controller 110 would be able to process them. As such, the SPRe circuitry can offload processing tasks from the controller 110 and additionally increase processing speed of the offloaded tasks.
In some cases, one or more processors that is/are used to implement a preprocessor or postprocessor of the SPRe circuitry 115 can be shared, i.e., a selected processor may be adapted to perform some of the functionality of the SPRe circuitry, some of the functionality of the controller 110, and/or some of the functionality of the flexible I/O circuitry 120. In some implementations, functionality of the SPRe circuitry 115 can be implemented in part by code executing on one or more processors of the controller 110 and in part by code executing on one or more processors of the flexible I/O circuitry 120.
The preprocessor 210 can include one or more frequency counters 215, one or more digital filters 211, one or more analog filters 216, one or more prescalers 219, and/or one or more look-up tables (LUTs) 218 for operating on signals received from the flexible I/O circuitry 120. The preprocessor 210 can also receive digital signals from the flexible I/O circuitry 120 which may or may not be processed by the preprocessor 210. Unprocessed signals can be passed on to the controller 110 as digital inputs for further processing by the controller (indicated by the dashed signal path in the preprocessor of
With reference for the moment to
Referring again to
Implementing digital filtering, frequency detection, and/or phase detection with dedicated circuitry between the flexible I/O circuitry 120 and the controller 110 can offload such signal-processing tasks from the controller 110 and make available more processing time at the controller 110 for attending to overall system control tasks. In addition to speeding up processing of received signals from the flexible I/O circuitry 120 and reducing the workload on the controller 110, the precision of the signal processing performed by the preprocessor 210 can be better (for high frequency signals for example) than the precision that would be achieved with the controller 110 when the controller is tasked with other signal-processing, command, and control actions.
As mentioned above, the preprocessor 210 can receive sampled, digitized, analog signals (indicated in
According to some implementations, the flexible I/O circuitry 120 can digitize one or more analog signals (such as analog waveforms) and/or one or more analog values (such as voltage or current readings) received from a connected device 140 in the dynamic environment 105 and provide one or more corresponding digitized representations of the analog signal(s) and/or analog value(s) to the preprocessor 210 (indicated as Analog Input Values in Digital Form), as depicted in the example implementations of
Components of the preprocessor 210 (and postprocessor 220) can be initialized by the controller 110 when placed into service with configuration values (indicated as Processor Configurations in
The excursion E can be a percentage of full scale that a new sample is permitted to deviate from the current running average value to be included in the running total. Values that exceed the excursion limit can be rejected by the preprocessor 210. Selecting the excursion value E facilitates adjustment of rejection of short transient noise spikes.
The threshold value T can be implemented as a value that, when crossed, triggers an interrupt-driven delivery by the preprocessor 210 of an input value to the controller 110. The interrupt-driven delivery can cause the controller 110 to take an action (which can be immediate) in response to the detected crossing of the threshold value T by the preprocessor.
Hysteresis H can represent an excursion from a last running average reported via an interrupt (in response to a threshold crossing, for example) before a new interrupt-driven delivery will be initiated by the preprocessor 210. For example, if a running average value is typically about 50 and the threshold T is set at 80, a temporary increase of the running average to about 90 will be reported by the preprocessor 210 to the controller 110 with an interrupt-driven delivery. If the hysteresis H is set at 30, then the current running average (about 90 in this example) must change by at least 30 before the new current running average is reported by the preprocessor 210 to the controller 110 with an interrupt-driven delivery.
In some implementations, the flexible I/O circuitry 120 can provide raw analog signals to the preprocessor 210 and the analog filters 216 can be implemented with circuit components (e.g., resistors, capacitors, inductors, op-amps, etc.) to form any suitable analog filter or analog functionality 217 (e.g., integrator, differentiator, threshold detector, etc.). Analog-to-digital conversion 213 can then be implemented after the analog filters (e.g., with A/D converters in the preprocessor 210), before the filtered signals are provided to the controller 110.
In some cases, outputs from the analog filters (or A/D converters after the analog filters), or outputs received directly from the flexible I/O circuitry 120 can be provided to one or more look-up-tables (LUTs) 218 for further signal processing. A LUT 218 may use each received value to address an entry in the table and retrieve a corresponding value that is passed on to the controller 110 instead of or in addition to the value received by the LUT 218. The corresponding value that is passed to the controller can provide a more accurate representation of a physical parameter in the dynamic environment 105 than the received value. The corresponding value may correct for system and/or device errors, such as a nonlinear response by a device. Alternatively, outputs from the analog filters (or A/D converters) can be provided directly to the controller 110 for further processing.
An example application that can benefit from the use of a LUT 218 is one in which a sensor 160 comprises a thermistor to sense a temperature in the dynamic environment 105. Thermistors typically have non-linear behavior (resistance as a function of temperature), which is shown in
In some cases, the preprocessor 210 can include one or more pre-scalers 219 that operate on data received from the flexible I/O circuitry 120. A pre-scaler 219 may rescale the received data before sending the rescaled data to the controller 110. The rescaling can alter the data so that it covers a full range of data values supported by the controller 110.
Components of the preprocessor 210 can be configured by the controller 110 at any time via one or more preprocessor configuration communication lines, which are depicted in
The functionality of the preprocessor 210 may be implemented in other ways, as depicted in
Referring again to
In some cases, the received analog output from the controller 110 can be received from the controller as a digital signal that is intended to be converted to an analog signal (e.g., by a digital-to-analog converter) prior to transmission from the flexible I/O circuitry 120, so that an analog signal is delivered to a device in the dynamic environment 105 that is communicatively coupled to the signaling channel. The D/A conversion may be done at the flexible I/O circuitry 120, for example.
For the example implementation of
The output data buffers 242, 244 are arranged to pass information to the flexible I/O circuitry 120 and can also be FIFO data buffers. The output data buffers 242, 244 can allow queuing of generated signals from the digital signal generator(s) and/or analog signal generator(s). These buffers can also be used as completion buffers that communicate with the controller 110 to notify the controller when a particular signal is being sent (or has been sent) to the flexible I/O circuitry 120.
The postprocessor 220 also includes at least a first signal path for digital outputs that are provided to the flexible I/O circuitry 120 and/or at least a second signal path for analog outputs that are provided to the flexible I/O circuitry 120. Signal buffering may or may not be used on these first and second signal paths. Signal processing (e.g., filtering) may or may not be used on these first and second signal paths. In some cases, a digital signal and/or analog signal from the controller 110 can be passed through the postprocessor 220 and provided unprocessed to the flexible I/O circuitry 120.
A digital signal generator 225 can be configured to output binary waveforms that are passed to the flexible I/O circuitry 120 and then sent to at least one connected device 140 in the dynamic environment 105. An example binary waveform can be a waveform that is used to control a stepper motor or other servo motor, for example. Parameters for a digital waveform can be specified by the controller 110 as postprocessor configurations that can be queued in the input data buffer 232 and then sent to the digital signal generator 225. Such postprocessor configurations can include the features of the digital waveform to be generated (e.g., condition on which signal generation should start, frequency, start phase, end phase, duration, amplitude, duty cycle, rate of change of the waveform from a starting state to a final state, condition on which signal generation should terminate). In some cases, a digital signal generator 225 can be implemented with an FPGA, DSP, and/or memory and logic gates to access the memory for example.
An “analog” signal generator 227 can be configured to output a digital signal that is passed to the flexible I/O circuitry 120, converted to an analog signal at some point after being generated by the analog signal generator 227, and sent to at least one device 140 in the dynamic environment 105. The digital signal output by the analog signal generator can comprise a sequence of analog signal values (computed or generated by the postprocessor 220) that are each represented digitally in the signal sent to the flexible I/O circuitry 120. Conversion to an analog waveform may be done by the flexible I/O circuitry 120 or by a D/A converter prior to the flexible I/O circuitry 120. Example analog waveforms (after D/A conversion) can include a sinusoidal waveform, a triangular or saw-tooth waveform, a voltage or current ramp, etc. Parameters of the analog waveform (that will be output from the flexible I/O circuitry 120) can be specified by the controller 110 via postprocessor configurations that can be queued in the input data buffer 234 and then sent to the analog signal generator 227. Such postprocessor configurations can include the features of the analog waveform to be generated (e.g., condition on which signal generation should start, frequency, start phase, end phase, duration, amplitude, duty cycle, rate of change of the waveform from a starting state to a final state, condition on which signal generation should terminate). An analog signal generator 227 can be implemented with an FPGA, DSP, and/or memory and logic gates to access the memory for example.
In some implementations, the analog signal generator 227 can receive a certain number of input parameters from the controller 110 that determine the analog waveform and execute code on at least one processor to generate a corresponding digital signal, as described above, based on the received input parameters. The digital signal comprises a sequence of digitally-represented analog values and is output to the flexible I/O circuitry 120 from which the desired analog signal will be output. For example, one or more of the following parameters can be received, by the analog signal generator 227, as one or more configuration inputs from the controller 110.
Types of motors that can be controlled by the SPRe circuitry 115 include various types of servo motors as well as non-servo AC and DC motors. A servo motor refers to a motor implemented within a feedback control loop to achieve or maintain specified locations (rotation angles) or speeds. The motor inside the loop can be any controllable motor, such as a stepper motor or switched reluctance motor (SRM). Control of the motor can be by pulse-width modulation (PWM) or with pulse trains. Location and/or speed data to provide feedback information for the control loop can be provided from one or more encoders and/or resolvers mechanically coupled to the controlled motor or coupled to a rotating shaft driven by the motor. In some cases, position sensors and/or rotation sensors can be implemented with synchros (also referred to as selsyns), resolvers (4-pole synchros), or potentiometers.
Switched reluctance motors (SRMs) can be either outrunners (fixed magnets on the rotor surround the driven poles on the stator) or inrunners (where the static poles, stators, surround a static permanent magnet on an internal rotor). A switching network driving the stators of SRMs are frequently driven in quadrature so that the duty cycles of each phase can be driven at a convenient 50% duty cycle.
Functionality of a postprocessor 220 can be implemented in other ways, as depicted in
The UART processor 260 can be reconfigured to handle transformations between more than two different signaling types, and the configuration of the UART processor for particular signaling types can be set with parameters transmitted from the controller 110 to the UART processor 260 as Processor Configurations, which are indicated in
The SPRe circuitry 115 can alternatively or additionally include a resolver processor 222 for controlling a motor, using a control loop for example, in the dynamic environment 105. The resolver processor 222 can include an angle evaluator 250 that is adapted to interpret two signals from a resolver (which may be implemented as a sensor 160 in the dynamic environment 105). The two signals from the resolver (sensor 160) can be sinusoidal analog signals having different phases that together encode a rotation angle of a shaft of the resolver, for example. The two signals can be received by the flexible I/O circuitry 120 as analog signals, converted to digital signals (by the flexible I/O circuitry 120 or A/D converters located between the flexible I/O circuitry 120 and the angle evaluator 250), and provided to the angle evaluator 250 for processing. The angle evaluator 250 can process the two received digital signals (e.g., determine a phase difference between the two signals) to determine an angle of the resolver's shaft. The resolver processor 222 can output the computed angular value of the resolver's shaft as a digital data value to the controller 110. The resolver processor 222 can further output a sequence of digital values (indicated in
In some implementations, the preprocessor 210 and/or the postprocessor 220 can include additional or alternative circuit components. For example, the preprocessor 210 and/or the postprocessor 220 can include high-speed counters with or without compare functions. Use of high-speed counters and compare functionality can provide for signal generation (e.g., beginning, ending) by one signal generator to be contingent upon the status of another signal generator. Such contingent operation can support coordinated operation of multiple motors in the dynamic environment 105. Coordinated operation of motors may be used for coordinated multi-axis motion of machinery in the dynamic environment 105 (e.g., robotic arms, CNC machines, etc.).
The preprocessor 210 and/or the postprocessor 220 (or processor implementing one or both of preprocessor and postprocessor functionality) can also include dedicated comparators and channel memory. The dedicated comparators can detect critical changes of either or both analog and digital signals received from the flexible I/O circuitry 120 and activate particular entries on an event table of the controller 110. The event table can determine one or more actions to be taken in response to one or more detected conditions in the dynamic environment 105. The channel memory can be used for high-frequency sampling of incoming analog signals received from the flexible I/O circuitry 120.
Another component that can be included in the preprocessor 210 for each channel is a baud rate controller. This device can manage delivery of signal values to the channel at a prescribed baud rate and character set. The baud rate controller can adapt signaling to various communication protocols such as, but not limited to, CANBus, ProfiBus, or another protocol on top of RS485. One example of a device that can be used as a baud rate controller is the UART processor 260 depicted in
In
In some cases, communication can be provided between SPRe circuits 115 (affecting operation of their components) across different signaling channels of the flex I/O circuitry 120. For example, a first SPRe circuit 115 assigned to a first signaling channel of the flex I/O circuitry can communicate with a second SPRe circuit 115 assigned to a second signaling channel of the flex I/O circuitry 120. The first SPRe circuit 115 can indicate, for example, a signal-processing task status (e.g., idle, start, running, complete) of the first SPRe circuit 115. In one example, the status(es) of the digital signal generators 225 and/or analog signal generators 227 can be communicated across signaling channels to notify another SPRe circuit 115 when signal generation has started and/or stopped. Such cross-channel communication can allow operating scenarios where one signal generator for one signaling channel of the flexible I/O circuitry 120 may only be allowed to initiate signal generation after completion of signal generation by another signal generator for another signaling channel in the postprocessor 220. Cross-channel communication can also allow operating scenarios where signal generation is to be synchronized and occur simultaneously for two or more signaling channels. Alternatively, or additionally, at least some of the components of a SPRe circuit 115 can communicate directly with the controller 110 (communication lines not shown in
In some cases, SPRe circuitry 115 may involve more than two links to carry signals and information between one of the connected devices 170 and the SPRe circuitry 115. An example of this is shown in
According to some implementations, the control system 102 is capable of signal negotiations and renegotiations with connected devices 170 in the dynamic environment 105. For example, the controller 110 may first communicate with a device 140 in the dynamic environment 105 according to a default communication protocol that uses a first signaling type. Once communication is established, the device 140 may signal to the controller 110 a preferred signaling type that is different from the default signaling type. The controller 110 can then reconfigure the signaling channel, by changing configuration settings in the flexible I/O circuitry 120, to continue communication with the device 140 according to the preferred signaling type.
As an example of signal translation by the flexible I/O circuitry 120 of
The circuit of
It will be appreciated that the SPRe circuitry 115 can provide several beneficial functionalities to the control system 102, some of which have been described above. Such functionalities include:
While various inventive embodiments have been described and illustrated herein, those of ordinary skill in the art will readily envision a variety of other means and/or structures for performing the function and/or obtaining the results and/or one or more of the advantages described herein, and each of such variations and/or modifications is deemed to be within the scope of the inventive embodiments described herein. More generally, those skilled in the art will readily appreciate that all parameters, dimensions, materials, and configurations described herein are meant to be exemplary and that the actual parameters, dimensions, materials, and/or configurations will depend upon the specific application or applications for which the inventive teachings is/are used. Those skilled in the art will recognize, or be able to ascertain using no more than routine experimentation, many equivalents to the specific inventive embodiments described herein. It is, therefore, to be understood that the foregoing embodiments are presented by way of example only and that, within the scope of the appended claims and equivalents thereto, inventive embodiments may be practiced otherwise than as specifically described and claimed. Inventive embodiments of the present disclosure are directed to each individual feature, system, article, material, kit, and/or method described herein. In addition, any combination of two or more such features, systems, articles, materials, kits, and/or methods, if such features, systems, articles, materials, kits, and/or methods are not mutually inconsistent, is included within the inventive scope of the present disclosure.
Also, various inventive concepts may be embodied as one or more methods, of which an example has been provided. The acts performed as part of the method may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.
All definitions, as defined and used herein, should be understood to control over dictionary definitions, definitions in documents incorporated by reference, and/or ordinary meanings of the defined terms.
The indefinite articles “a” and “an,” as used herein in the specification and in the claims, unless clearly indicated to the contrary, should be understood to mean “at least one.”
The phrase “and/or,” as used herein in the specification and in the claims, should be understood to mean “either or both” of the elements so conjoined, i.e., elements that are conjunctively present in some cases and disjunctively present in other cases. Multiple elements listed with “and/or” should be construed in the same fashion, i.e., “one or more” of the elements so conjoined. Other elements may optionally be present other than the elements specifically identified by the “and/or” clause, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, a reference to “A and/or B”, when used in conjunction with open-ended language such as “comprising” can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements); etc.
As used herein in the specification and in the claims, “or” should be understood to have the same meaning as “and/or” as defined above. For example, when separating items in a list, “or” or “and/or” shall be interpreted as being inclusive, i.e., the inclusion of at least one, but also including more than one, of a number or list of elements, and, optionally, additional unlisted items. Only terms clearly indicated to the contrary, such as “only one of” or “exactly one of,” or, when used in the claims, “consisting of,” will refer to the inclusion of exactly one element of a number or list of elements. In general, the term “or” as used herein shall only be interpreted as indicating exclusive alternatives (i.e. “one or the other but not both”) when preceded by terms of exclusivity, such as “either,” “one of,” “only one of,” or “exactly one of.” “Consisting essentially of,” when used in the claims, shall have its ordinary meaning as used in the field of patent law.
As used herein in the specification and in the claims, the phrase “at least one,” in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements. This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase “at least one” refers, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, “at least one of A and B” (or, equivalently, “at least one of A or B,” or, equivalently “at least one of A and/or B”) can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements); etc.
In the claims, as well as in the specification above, all transitional phrases such as “comprising,” “including,” “carrying,” “having,” “containing,” “involving,” “holding,” “composed of,” and the like are to be understood to be open-ended, i.e., to mean including but not limited to. Only the transitional phrases “consisting of” and “consisting essentially of” shall be closed or semi-closed transitional phrases, respectively, as set forth in the United States Patent Office Manual of Patent Examining Procedures, Section 2111.03.
This application is a bypass continuation of International Application No. PCT/US2023/069664, titled “Systems and Method for Controlling Dynamic Environments,” filed on Jul. 5, 2023, which claims the priority benefit to U.S. Application No. 63/358,260, titled “Systems and Methods for Controlling Dynamic Environments,” filed on Jul. 5, 2022, which application is incorporated herein by reference in its entirety.
| Number | Date | Country | |
|---|---|---|---|
| 63358260 | Jul 2022 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | PCT/US2023/069664 | Jul 2023 | WO |
| Child | 19011106 | US |