ARCHITECTURE AND APPARATUS FOR ADVANCED ARBITRATION IN EMBEDDED CONTROLS
20170277604 · 2017-09-28
Inventors
Cpc classification
G06F11/182
PHYSICS
G06F11/184
PHYSICS
International classification
Abstract
A method of arbitrating conflicting outputs in a redundant control system. Execution data of a task executed by each controller in the redundant control system is recorded. The execution data includes an initial timestamp of each execution stream, identification of critical functions in each execution stream, and parameter values used by the critical functions. A path executed by each controller is identified based only on the critical functions executed for each execution stream. The recorded execution data of each executed path is applied to an arbitration module. An output result from one of the respective controllers selecting, by an arbitration module, based on the recorded execution data of each executed path. The output result of the selected controller is communicated to a next module for further processing.
Claims
1. A method of arbitrating conflicting outputs in a redundant control system, the method comprising the steps of: recording execution data of a task executed by each controller in the redundant control system, the execution data including an initial timestamp of each execution stream, identification of critical functions in each execution stream, and parameter values used by the critical functions; identifying a path executed by each controller based only on the critical functions executed for each execution stream; applying the recorded execution data of each executed path to an arbitration module; selecting, by an arbitration module, an output result from one of the respective controllers based on the recorded execution data of each executed path; and communicating the output result of the selected controller to a next module for further processing.
2. The method of claim 1 wherein selecting the output result is performed by a decider within the arbitration module, wherein at least one of a logic function or a logic table is used by the decider to select the output result.
3. The method of claim 2 wherein the logic function is represented as follows:
De=max.sub.i=1.sup.n(w.sub.1T.sub.i+w.sub.2P.sub.i+w.sub.3v.sub.i) where T.sub.i is a timestamp output factor of path i, P.sub.i is a preference path factor of path i, v.sub.i is preference of output value factor used on path i, w.sub.1,w.sub.2,w.sub.3 are weights for importance of each factor.
4. The method of claim 2 wherein the logic table includes fixed outputs based on the comparative factors in the logic table:
5. The method of claim 4 wherein the logic table includes a timestamp comparative factor.
6. The method of claim 4 wherein the logic table includes a path comparative factor.
7. The method of claim 4 wherein the logic table includes a parameter value comparative factor.
8. The method of claim 2 wherein the decider module utilizes a combination of the logic function and the logic table.
9. The method of claim 1 wherein identifying a path executed by each controller based only on the critical functions comprises the steps of: identifying all critical functions used in all paths by each controller; tracking only the identified critical functions in each path; generating a bit vector for each path, each bit vector represented by only by the critical functions, wherein each bit in each bit vector represents whether a respective critical function is executed for the respective task.
10. The method of claim 9 wherein a respective bit of each bit vector is set if the function is executed in a respective path and is unset if the function is not executed in the respective path.
11. The method of claim 10 wherein each of the bits in each respective bit vector are initially unset at the initial timestamp.
12. The method of claim 9 wherein all critical functions are predetermined.
13. The method of claim 9 wherein at least one parameter value is recorded for each bit set in each bit vector.
14. The method of claim 13 wherein a parameter table is generated for each path as a function of recorded parameter values, wherein only critical functions executed in a respective path are listed as entries in a respective parameter table, and wherein parameter values utilized by the executed critical functions are recorded in the parameter table.
15. The method of claim 14 wherein more than one parameter is recorded for an executed critical function.
16. The method of claim 1 wherein each initial timestamp is attached to a respective bit vector.
17. The method of claim 2 wherein the initial timestamp is obtained from fused sensor data.
18. The method of claim 1 wherein each set of recorded execution data obtained from each path is provided to a respective circular buffer of the arbitration module, each circular buffer is in communication with the decider module wherein stored data from each circular buffer is provided to the decider.
19. The method of claim 1 wherein each circular buffer stores a predetermined amount of data.
20. The method of claim 19 wherein each circular buffer stores a current data value and two previous data values.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
DETAILED DESCRIPTION
[0015] The following detailed description is meant to be illustrative in understanding the subject matter of the embodiments and is not intended to limit the embodiments of the subject matter or the application and the uses of such embodiments. Any use of the word “exemplary” is intended to be interpreted as “serving as an example, instance, or illustration.” Implementations set forth herein are exemplary are not meant to be construed as preferred or advantageous over other implementations. The descriptions herein are not meant to be bound by any expressed or implied theory presented in the preceding background, detailed description or descriptions, brief summary or the following detailed description.
[0016] Techniques and technologies may be described herein in terms of functional and/or logical block components, and with reference to symbolic representations of operations, processing tasks, and functions that may be performed by various computing components or devices. Such operations, tasks, and functions are sometimes referred to as being computer-executed, computerized, software-implemented, or computer-implemented. It should be appreciated that the various block components shown in the figures may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. For example, an embodiment of a system or a component may employ various integrated circuit components, (e.g., memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices).
[0017] When implemented in software, various elements of the systems described herein are essentially the code segments or computer-executable instructions that perform the various tasks. In certain embodiments, the program or code segments are stored in a tangible processor-readable medium, which may include any medium that can store or transfer information. Examples of a non-transitory and processor-readable medium include an electronic circuit, a microcontroller, an application-specific integrated circuit (ASIC), a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a CD-ROM, an optical disk, a hard disk, or the like.
[0018] The system and methodology described herein can be utilized to identify faults in controllers executing software functions in control systems. While the approach and methodology are described below with respect to controllers or processors used in vehicle applications, one of ordinary skill in the art appreciates that an automotive application is merely exemplary, and that the concepts disclosed herein may also be applied to any other suitable communications system such as, for example, general industrial automation applications, manufacturing and assembly applications, and gaming.
[0019] The term “vehicle” as described herein can be construed broadly to include not only a passenger automobile, but any other vehicle including, but not limited to, rail systems, planes, off-road sport vehicles, robotic vehicles, motorcycles, trucks, sports utility vehicles (SUVs), recreational vehicles (RVs), marine vessels, aircraft, farming vehicles, and construction vehicles.
[0020] There is shown in
[0021] The data either from the fusion module 14 or directly from the sensors 12 are input to a controller 16. The controller 16 may include a plurality of processors or a multi-core processor. As shown in
[0022]
[0023] For each critical function identified in a path that is executed a timestamp at the initiation and execution of a path is recorded, and data values are recorded for each critical function executed. The data value may include one or more parameter values. In
[0024]
[0025]
[0026]
[0027]
[0028] To further enhance the determination of identifying the correct result by the arbitration module, values of parameters resulted from executed functions are tracked and analyzed. An inconsistent output between different paths or a same path executed by two different processors can be a result of different values used since an output of a computation path depends on values used by each function. This can be caused by various factors that include, but are not limited to, hardware faults and updates from other functions. This can be particularly challenging when global variables are used. To assist in determining the correct output, a table is generated to record values used in the computation. Each function may utilize one parameter or multiple parameter values. Therefore, the parameter values used only by the critical functions in the execution sequence are recorded.
[0029]
[0030]
[0031] Referring to the path vector 50, the first bit of the path vector 50, which represents function (a) is set and therefore has at least one associated parameter value in the table 52. As shown in the table 52, function (a) utilizes parameter values “8” and “21.2”. The second bit of the path vector 50, which represents function (c) is not set and therefore does not have a corresponding entry or parameter value in the table 52. The third bit of the path vector 50, which represents function (f) is set and therefore has at least one associated parameter value in the table 52. As shown in table 50, function (f) utilizes parameter value “22”. Similarly, the fourth bit of the path vector 50, which represents function (g) is set and therefore has at least one associated parameter value in the table 52. As shown in table 52, function (g) utilizes parameter value “0”. It should be understood that not every bit in the path vector will necessarily have an entry in the table, and not every parameter value is recorded. That is, while non-critical functions are utilized and executed in a respective path, only the critical functions that are executed are recorded by the arbitration module for determining which path provides the correct output.
[0032] After each table is generated for each path, the arbitration module compares various factors either individually or in combination that include timestamp, the path utilized, and parameter values.
[0033]
[0034] In step 62, critical functions of the different paths for a list are identified and are initiated for storage. A list head is used to indicate a beginning of a list.
[0035] In step 63, an address is set as the current function address. That is, an address for the node of which current function is being executed is set as the current address.
[0036] In step 64, a determination is made as to whether the current address is part of a current list. It should be recalled all functions whether critical or non-critical are executed in an execution string; however, the routine only records data for critical functions. If the current address is part of the current list representing a critical function, then the routine proceeds to step 65; otherwise the routine proceeds to step 66.
[0037] In step 65, the function is identified as a critical function and parameter values are recorded for this critical function while being executed.
[0038] In step 66, a determination is made whether the execution string is complete. If the determination is made that no additional functions need to be executed, then the routine proceeds to step 68 where the routine ends. If the determination is made that the execution string is not complete and that additional functions require execution, then the routine proceeds to step 67.
[0039] In step 67, the routine identifies the next function in the execution string and the routine returns to step 63 to set this next function as the current function address.
[0040] It should be understood that functions may be called multiple times in a calling tree for execution and each time that a function is called is treated as a different function because only one path of a program will be executed and the functions executed on any path are done so sequentially. After a check is considered for each function as to whether it is critical or non-critical, only respective functions that are identified as critical.
[0041]
[0042] The arbitration module 22 includes a logic function 76 where the criteria relied on by the arbitration module 22 may be weighted according to the function utilized for identifying a decision. In addition, the arbitration module 22 includes a lookup table 78. The lookup table 78 provides fixed decisions based on the input values.
[0043] The arbitration module 22 further includes a decider 80 that utilizes a combination of the decisions derived by the strategy of the logic function 76 and the lookup table 78.
[0044] The logic function 76 may be represented by the following formula:
De=max.sub.i=1.sup.n(w.sub.1T.sub.i+w.sub.2P.sub.i+w.sub.3v.sub.i)
where T.sub.i is a timestamp output of path i, P, is a preference of an output of path i, v.sub.i is preference of output value used on path i, w.sub.1,w.sub.2,w.sub.3 are weights for importance of each factor. Each of the weights may be predetermined at design time and will vary according to the function being executed or a range that the function is being operated in. For example, if the function relates to a speed of a vehicle, a weighting factor w.sub.1 for the preference of value output v.sub.i may be 50%, whereas if the function relates to engine torque, the weighting factor w.sub.1 for the preference of value output v.sub.i may be 75%. In another example, a steering operation is based on the speed of the vehicle. A vehicle speed parameter at 65 mph may have a different weight than a vehicle speed parameter of 75 as the vehicle speed may affect what the steering angle should be set to. As a result, the weights applied to different outputs are preset based on the function being executed.
[0045] Referring to the timestamp factor, a timestamp T.sub.i taken at a respective time may be more preferential or critical when taken at a respective time. As a result, greater weight may be applied to the timestamp parameters as opposed to the path or parameter values when the condition requires it.
[0046] Referring to the path factor, greater emphasis may be placed on path that utilizes more critical functions relative to another path. A strategy may be applied that the more critical functions that are executed for a respective path, the greater the confidence or reliability of the output from that respective path.
[0047] Referring to parameter values used by a respective function, greater emphasis may be applied to parameters that are within a respective parameter operating range or within a respective distance from a parameter target value.
[0048] Based the various factors as described herein, different weighting factors may be utilized in the logic function 76.
[0049] The lookup table 78 represents fixed decisions based on the differences between various factors described above such as timestamps, paths, and parameter values. Differences may include the difference of the timestamps of the comparing paths or between a target timestamp, the differences between the executed paths such as the critical functions, and the differences between the parameter values of the comparing paths or to a parameter target value. Based on the comparisons of each category, a fixed decision output is applied. An exemplary lookup table is shown as follows:
TABLE-US-00001 T-diff range P-diff pointer Decision [0,1] abcdg, abdg V1[0, 10] O(P1) [0,3] abdg, aefg V1[0,4], v2[1,10] Omax
The decider 80 may utilize only the results from the logic function 76, only the results of lookup table 78, or a respective combination of the logic function 76 and the lookup table 78 in determining which output results should be relied on an provided to other modules for additional processing. Additional modules may include, but is not limited to, other controllers, devices, subsystems, or systems. This information may be utilized to execute further tasks, or may be used to enable a vehicle operations based on the output results.
[0050] While certain embodiments of the present invention have been described in detail, those familiar with the art to which this invention relates will recognize various alternative designs and embodiments for practicing the invention as defined by the following claims.