It is a task of the invention to make it possible to calculate a control target value of one actuator or control target values of a plurality of actuators regarding engine control at a high speed through the use of a multicore processor. With a view to accomplishing this task, a plurality of lattice points that are arranged on a two-dimensional orthogonal coordinate system having axes representing a first operating condition and a second operating condition respectively are associated respectively with at least one or some of a plurality of cores that are arranged in a latticed manner on the multicore processor on one-on-one level on a same line as on the two-dimensional orthogonal coordinate system, and a calculation program for calculating an optimal control value at the associated lattice point or calculation programs for calculating optimal control values at the associated lattice points are allocated respectively to at least one or some of the plurality of the cores. In addition, each of the cores with which the lattice points are associated respectively is programmed, in a case where an operation area on the two-dimensional orthogonal coordinate system to which a current operating point belongs is an area that is defined by the lattice point associated with each of the cores itself, to transmit, to an interpolation calculation core, an optimal control value at the relevant lattice point that is calculated by each of the cores itself. The interpolation calculation core is programmed to perform an interpolation calculation of an optimal control value at the current operating point using optimal control values at all the lattice points that define the operation area on the two-dimensional orthogonal coordinate system to which the current operating point belongs. In addition, the multicore processor outputs the optimal control value at the current operating point, which is obtained from the interpolation calculation core, as a control target value of each of the actuators.
|
1. An engine control apparatus that calculates a control target value of one actuator or control target values of a plurality of actuators, comprising:
a multicore processor in which a plurality of cores are arranged in a latticed manner, wherein
a plurality of lattice points that are arranged on a two-dimensional orthogonal coordinate system having axes representing a first operating condition and a second operating condition respectively are associated with at least one or some of the plurality of the cores respectively on one-on-one level on a same line as on the two-dimensional orthogonal coordinate system, and a calculation program for calculating an optimal control value of the one actuator at the associated lattice points or calculation programs for calculating optimal control values of the plurality of the actuators at the associated lattice points are allocated to at least one or some of the plurality of the cores respectively,
each of the cores with which the lattice points are associated respectively is programmed, in a case where an operation area on the two-dimensional orthogonal coordinate system to which a current operating point belongs is an area that is defined by the lattice point associated with each of the cores itself, to transmit to an interpolation calculation core an optimal control value at the relevant lattice point that is calculated by each of the cores itself,
the interpolation calculation core is programmed to perform an interpolation calculation of an optimal control value at the operating point using optimal control values at all the lattice points that define the operation area, and
the multicore processor outputs the optimal control value at the operating point, which is obtained through the interpolation calculation, as the control target value.
7. An engine control apparatus that calculates a control target value of one actuator or control target values of a plurality of actuators through use of a multicore processor, comprising:
the multicore processor in which a plurality of cores are arranged in a latticed manner, wherein
a plurality of lattice points that are arranged on a three-dimensional orthogonal coordinate system having axes representing a first operating condition, a second operating condition and a third operating condition respectively are associated with at least one or some of the plurality of the cores respectively on a same line as on a two-dimensional orthogonal coordinate system having axes representing the first operating condition and the second operating condition respectively, and a calculation program for calculating an optimal control value of the one actuator at each of the associated lattice points or calculation programs for calculating optimal control values of the plurality of the actuators at each of the lattice points are allocated to at least one or some of the plurality of the cores respectively,
each of the cores with which the lattice points are associated is programmed, in a case where an operation space on the three-dimensional orthogonal coordinate system to which a current operating point belongs is a space that is defined by any of the plurality of the lattice points that are associated with each of the cores itself and are equal in respective values of the first operating condition and the second operating condition to one another and different in a value of the third operating condition from one another, to transmit, to an interpolation calculation core, optimal control values calculated by each of the cores itself at two of the lattice points that define the operation space,
the interpolation calculation core is programmed to perform an interpolation calculation of an optimal control value at the operating point using optimal control values at all the lattice points that define the operation space, and
the multicore processor outputs the optimal control value at the operating point, which is obtained through the interpolation calculation, as the control target value.
2. The engine control apparatus according to
each of the cores with which the lattice points are associated respectively is programmed to function as the interpolation calculation core in a case where the operation area on the two-dimensional orthogonal coordinate system to which the current operating point belongs is an area that is defined by the lattice points associated with each of the cores itself, and where each of the cores itself is associated with a representative lattice point among the plurality of the lattice points that define the operation area.
3. The engine control apparatus according to
each of the cores with which the lattice points are associated respectively is programmed, in a case where the operation area on the two-dimensional orthogonal coordinate system to which the current operating point belongs is an area that is defined by the lattice points associated with each of the cores itself, to calculate optimal control values at the relevant lattice points according to the calculation program, and in a case where the operation area is not an area that is defined by the lattice points associated with each of the cores itself, to stop calculating optimal control values at the relevant lattice points.
4. The engine control apparatus according to
each of the cores with which the lattice points are associated respectively is programmed, in a case where an operation area that can be attained within a calculation time of optimal control values overlaps with an area that is defined by the lattice points associated with each of the cores itself, to calculate optimal control values at the relevant lattice points according to the calculation program, and in a case where the operation area does not overlap with the area that is defined by the lattice points associated with each of the cores itself, to stop calculating optimal control values at the relevant lattice points.
5. The engine control apparatus according to
the first operating condition and the second operating condition are an engine rotational speed and an engine load respectively.
6. The engine control apparatus according to
each of the plurality of the cores is equipped with a CPU and a local memory in which a program that is executed in the CPU is stored, and
the calculation program and an interpolation calculation program that is executed in a case where the relevant core becomes the interpolation calculation core are stored in the local memory.
8. The engine control apparatus according to
each of the cores with which the lattice points are associated respectively is programmed to function as the interpolation calculation core in a case where an operation area on the two-dimensional orthogonal coordinate system to which the current operating point belongs is an area that is defined by the lattice points associated with each of the cores itself, and where each of the cores itself is associated with a representative lattice point among the plurality of the lattice points that define the operation area.
9. The engine control apparatus according to
each of the cores with which the lattice points are associated respectively is programmed, in a case where the operation space on the three-dimensional orthogonal coordinate system to which the current operating point belongs is a space that is defined by any of the lattice points associated with each of the cores itself, to calculate optimal control values at the lattice points associated with each of the cores itself among the lattice points that define the operation space according to the calculation program, and in a case where the operation space is not a space that is defined by the lattice points associated with each of the cores itself, to stop calculating optimal control values at all the lattice points associated with each of the cores itself.
10. The engine control apparatus according to
each of the cores with which the lattice points are associated respectively is programmed, in a case where an operation space that can be attained within a calculation time of optimal control values overlaps with a space that is defined by any of the lattice points associated with each of the cores itself, to calculate optimal control values at the lattice points associated with each of the cores itself among the lattice points that define the space that overlaps with the operation space, according to the calculation program, and in a case where the operation space does not overlap with the space that is defined by any of the lattice points associated with each of the cores itself, to stop calculating optimal control values at all the lattice points associated with each of the cores itself.
11. The engine control apparatus according to
the first operating condition and the second operating condition are an engine rotational speed and an engine load respectively.
12. The engine control apparatus according to
the third operating condition is an engine coolant temperature.
13. The engine control apparatus according to
the third operating condition is a vehicle speed or an intake air temperature.
14. The engine control apparatus according to
each of the plurality of the cores is programmed to select an operating condition that should be the third operating condition from a plurality of operating conditions defined in advance, in accordance with an operation state of an engine.
15. The engine control apparatus according to
each of the plurality of the cores is programmed to calculate optimal control values using an engine coolant temperature as the third operating condition while the engine is warmed up, and to calculate optimal control values after changing the third operating condition to a vehicle speed or an intake air temperature after the engine has been warmed up.
16. The engine control apparatus according to
each of the plurality of the cores is equipped with a CPU and a local memory in which a program that is executed in the CPU is stored, and
the calculation program and an interpolation calculation program that is executed in a case where the relevant core becomes the interpolation calculation core are stored in the local memory.
|
This application is a national phase application of International Application No. PCT/JP2011/072216, filed Sep. 28, 2011, the content of which is incorporated herein by reference.
This invention relates to a vehicular engine control apparatus that determines a control target value of an actuator on the basis of a plurality of operating conditions, and more particularly, to an engine control apparatus that calculates a control target value of an actuator through the use of a multicore processor having a plurality of cores.
In recent years, as disclosed in, for example, Japanese Patent Application Publication No. 2011-081539 (JP-2011-081539 A), the use of a calculation device that has a plurality of CPU cores mounted on a single semiconductor chip, namely, a multicore processor has been proposed in various fields. As disclosed in, for example, Japanese Patent Application Publication No. 2008-269487 (JP-2008-269487 A), the use of the multicore processor has been discussed in the field of the control of vehicular engines as well. The art disclosed in Japanese Patent Application Publication No. 2008-269487 (JP-2008-269487 A) is an art intended to reduce the consumption of electric power in the case where the multicore processor is employed in an engine control apparatus. According to this art, when a specific control processing is performed during the stop of engine control, the operation mode of a microcomputer is set to a low electric power consumption mode that is different from the operation mode during engine operation. In the low electric power consumption mode, the number of cores used by the microcomputer is made smaller than during engine operation. During the stop of engine control, no electric power is generated from an alternator or the like as during the operation of the engine, and an in-vehicle battery is not charged either. Therefore, the amount of consumption of electric power with which the battery is charged rapidly increases as the number of cores that operate during the performance of a specific control processing increases.
One advantage of the use of the multicore processor is its high processing ability. Higher processing ability can be obtained from the multicore processor than from a single core processor having one CPU core. High processing ability is an inducement to employ the multicore processor in an engine control apparatus. This is because the number of actuators mounted on the engine and the number of types thereof have been on the constant increase in recent years. In order to appropriately control the operation of the engine, the control target values of actuators thereof need to be set to appropriate values corresponding to the operating condition of the engine. Therefore, an optimization calculation is performed in a conventional engine control apparatus, but the calculation load in performing the optimization calculation increases as the number of actuators and the number of types of actuators increase. Thus, it has been apprehended that the processing ability of the single core processor that is employed in the conventional engine control apparatus may eventually become insufficient for the ever-increasing calculation load. The use of the multicore processor has a great merit in the field of engine control in which the calculation load is estimated to constantly increase from here on.
However, the processing ability of the multicore processor is not determined simply by the number of cores. In order to enhance the processing ability, a plurality of cores need to be efficiently operated. For this purpose, ingenuity has been demanded of the software that operates the cores. For example, tasks can be distributed to the plurality of the cores and processed in parallel in the multicore processor. However, the processing ability as a whole greatly differs on the method of parallelization.
Patent Document 1: Japanese Patent Application Publication No. 2008-269487 (JP-2008-269487 A)
Patent Document 2: Japanese Patent Application Publication No. 2011-081539 (JP-2011-081539 A)
It is a task of the invention to make it possible to calculate a control target value of an actuator or control target values of a plurality of actuators regarding engine control at a high speed through the use of a multicore processor. Then, with a view to accomplishing the task, the invention provides an engine control apparatus as follows.
The engine control apparatus provided by the invention has a multicore processor in which a plurality of cores are arranged in a manner of lattices. The lattices mentioned herein mean plane lattices, but their pattern is not limited. In addition to square lattices and rectangular lattices that are generally adopted as an arrangement pattern of cores, other patterns such as rhombic lattices and the like may also be adopted.
The invention has two particularly preferable modes. According to the first mode of the invention, the plurality of the cores that are arranged on a two-dimensional orthogonal coordinate system having axes representing a first operating condition and a second operating condition respectively are associated with the plurality of the cores that are mounted on the multicore processor, in the same line on one-on-one level. The first operating condition and the second operating condition are operating conditions that are especially important in associating the operation amount of each of actuators with a controlled variable of an engine, and one representative example thereof is a group of engine rotational speed and engine load.
The arrangement pattern of the lattice points on the two-dimensional orthogonal coordinate system is the same pattern as the arrangement pattern of the cores on the multicore processor. The cores with which the lattice points on the two-dimensional orthogonal coordinate system are associated may not be all the cores that are mounted on the multicore processor. For example, in the case where the cores are arranged on the rectangular lattices of N×M, the lattice points may be associated only with some of the cores, namely, the cores in a zone of n×m. A calculation program for calculating an optimal control value of each of the actuators at a corresponding one of the associated lattice points is allocated in advance to a corresponding one of the cores with which the lattice points are associated respectively. In the case where each of the cores has a local memory, the allocated optimal control value calculation program can be stored in the local memory. In that case, an interpolation calculation program for a later-described interpolation calculation can also be stored in the local memory of each of the cores. Hereinafter, among the cores that are mounted on the multicore processor, those cores to which optimal control value calculation program are allocated respectively will be referred to as optimal control value calculation cores.
A plurality of operation areas are defined on the aforementioned two-dimensional orthogonal coordinate system, by the plurality of the lattice points that are arranged thereon. For example, in the case where the arrangement pattern of the lattice points consists of rectangular lattices, one operation area is defined by four lattice points that are arranged at four corners of a rectangle respectively. A current operating point that is determined by respective current values of the first operating condition and the second operating condition belongs to one of the operation areas on the two-dimensional orthogonal coordinate system. Each of the optimal control value calculation cores is programmed, in the case where the operation area to which the current operating point belongs is an area that is defined by the lattice points associated with the optimal control value calculation core itself, to transmit to the interpolation calculation core the optimal control values at the relevant lattice points that are calculated by the optimal control value calculation core itself. The interpolation calculation core is programmed to calculate through interpolation an optimal control value at the current operating point, using the optimal control values at all the lattice points that define the operation area to which the current operating point belongs. The multicore processor outputs the optimal control value at the current operating point, which is obtained by being calculated through interpolation by the interpolation calculation core, as a control target value of each of the actuators.
That is, according to the first mode of the invention, the engine control apparatus calculates optimal control values at the respective lattice points by the plurality of the cores associated with the plurality of the lattice points that two-dimensionally surround the current operating point, and calculates through interpolation an optimal control value at the current operating point, on the basis of a calculation result thereof. According to this mode, the calculations of the optimal control values at the respective lattice points are performed in parallel by the separate cores. Therefore, the time needed to calculate the control target value of each of the actuators is drastically reduced in comparison with a case where the conventional single core processor is employed. Furthermore, when data on the optimal control values that are calculated by the cores respectively are given to the interpolation calculation core, a communication delay corresponding to the physical distance therebetween is caused. However, according to the first mode of the invention, the difference in communication delay time among the cores can be reduced. This is because the arrangement of the lattice points on the two-dimensional orthogonal coordinate system corresponds to the arrangement of the cores on the multicore processor, and hence the optimal control value at each of the lattice points is calculated by a group that consists of those cores which are physically closest to one another. Due to the small difference in communication delay time, the calculation can be performed with high efficiency in the processor as a whole.
By the way, the core functioning as the interpolation calculation core can be fixed to any one of the cores. In that case, one of the optimal control value calculation cores may be determined as the interpolation calculation core, or the interpolation calculation core may be selected from the cores other than the optimal control value calculation cores. However, it is more preferable that the core functioning as the interpolation calculation core be dynamically changed among the optimal control value calculation cores. In that case, each of the optimal control value calculation cores is programmed to perform the following processing in the case where the operation area to which the current operating point belongs is an area that is defined by the lattice points associated with each of the optimal control value calculation cores itself.
First of all, each of the optimal control value calculation cores determines whether or not the lattice point associated with each of the optimal control value calculation cores itself ranks as a representative lattice point among the plurality of the lattice points that define the operation area to which the current operating point belongs. For example, in the case where the arrangement pattern of the lattice points consists of rectangular lattices, one lattice point that is arranged at a predetermined position among the four lattice points that are arranged at four corners of a rectangle is selected as the representative lattice point. The core corresponding to the representative lattice point will be referred to hereinafter as a representative core. Each of the optimal control value calculation cores transmits, to another core as the representative core, the optimal control value at the lattice point associated with each of the optimal control value calculation cores itself, in the case where each of the optimal control value calculation cores itself is not the representative core. On the other hand, in the case where each of the optimal control value calculation cores itself is the representative core, each of the optimal control value calculation cores receives, from the respective cores with which the other lattice points defining the operation area to which the current operating point belongs are associated, the optimal control values that are calculated by those cores. Then, each of the optimal control value calculation cores calculates through interpolation the optimal control value at the current operating point according to the interpolation calculation program, on the basis of the optimal control values at all the lattice points that define the operation area to which the current operating point belongs. Each of the cores is programmed to perform such a processing, whereby it becomes possible not only to reduce the difference in communication delay time among the cores but also to shorten the communication delay time itself.
Incidentally, it is preferable that the optimal control value be calculated by the optimal control value calculation core according to the following procedure. According to one preferred procedure, each of the optimal control value calculation cores confirms whether or not the operation area to which the current operating point belongs is an area that is defined by the lattice points associated with each of the optimal control value calculation cores itself, at intervals of a certain time step (e.g., on a control cycle of the engine). Then, if it is confirmed that the operation area to which the current operating point belongs is an area that is defined by the lattice point associated with each of the optimal control value calculation cores itself, each of the optimal control value calculation cores calculates an optimal control value at the relevant lattice point, according to the aforementioned calculation program. On the other hand, if it is confirmed that the operation area to which the current operating point belongs is not an area that is defined by the lattice points associated with each of the optimal control value calculation cores itself, each of the optimal control value calculation cores stops calculating optimal control values at the relevant lattice points. The calculations of the optimal control values according to such a procedure are programmed into the optimal control value calculation cores respectively, whereby the consumption of electric power can be curbed while making it possible to calculate the control target value of each of the actuators at a high speed.
Besides, according to another preferred procedure regarding the calculation of the optimal control values, each of the optimal control value calculation cores first confirms whether or not an operation area that can be attained within a calculation time of each of the optimal control values overlaps with an area that is defined by the lattice points that are associated with each of the optimal control value calculation cores itself, at intervals of a certain time step (e.g., on a control cycle of the engine). Then, if it is confirmed that the operation area overlaps with the area, each of the optimal control value calculation cores calculates optimal control values at the relevant lattice points according to the aforementioned calculation program. On the other hand, if it is confirmed that the operation area does not overlap with the area, each of the optimal control value calculation cores stops calculating optimal control values at the relevant lattice points. The calculations of the optimal control values according to this procedure are programmed into the optimal control value calculation cores respectively. Thus, even in a situation where the operation state of the engine transiently changes, the control target value of each of the actuators can be calculated without being delayed with respect to the control cycle of the engine, while curbing the consumption of electric power.
On the other hand, according second mode of the invention, the plurality of the lattice points that are arranged on the three-dimensional orthogonal coordinate system having the axes representing the first operating condition, the second operating condition and the third operating condition respectively are associated with the plurality of the cores that are mounted on the multicore processor, respectively, on the same line as on the two-dimensional orthogonal coordinate system having the axes representing the first operating condition and the second operating condition respectively. The first operating condition and the second operating condition are operating conditions that are especially important in associating the operation amount of each of the actuators with the operation state of the engine, and one representative example thereof is a group of engine rotational speed and engine load. The third operating condition is arbitrary, but may be an operating condition to which priority should be given under the current operation state of the engine. For example, it is also possible to select the engine coolant temperature as the third operating condition while the engine is warmed up, and change the third operating condition to the vehicle speed or the intake air temperature after the engine has been warmed up.
The arrangement pattern of the lattice points on the two-dimensional orthogonal coordinate system having the axes representing the first operating condition and the second operating condition respectively is the same pattern as the arrangement pattern of the cores on the multicore processor. In addition, the arrangement pattern of the lattice points on the two-dimensional orthogonal coordinate system is repeated at certain intervals in the direction of the axis of the third operating condition, In consequence, the plurality of the lattice points that are equal in the respective values of the first operating condition and the second operating condition to one another and different in the value of the third operating condition from one another are associated with each of the cores. However, the cores with which the lattice points on the two-dimensional orthogonal coordinate system are associated respectively may not be all the cores that are mounted on the multicore processor. The calculation program for calculating an optimal control value of each of the actuators at the associated lattice point is allocated in advance to each of the cores with which the lattice points are associated respectively. In the case where each of the cores has a local memory, the allocated optimal control value calculation program can be stored in the local memory. In that case, an interpolation calculation program for a later-described interpolation calculation can also be stored in the local memory of each of the cores. Hereinafter, among the cores that are mounted on the multicore processor, those cores to which the optimal control value calculation program are allocated will be referred to as the optimal control value calculation cores.
A plurality of operation spaces are defined on the aforementioned three-dimensional orthogonal coordinate system, by the plurality of the lattice points that are arranged thereon. For example, in the case where the arrangement pattern of the lattice points on the two-dimensional orthogonal coordinate system having the axes representing the first operating condition and the second operating condition respectively consists of rectangular lattices, one operation space is defined by a total of eight lattice points, namely, four lattice points that are arranged at four corners of a rectangle in a lower rank and four lattice points that are arranged at four corners of a rectangle in an upper rank. The current operating point that is determined by the respective current values of the respective operating conditions belongs to any of the operation spaces on the three-dimensional orthogonal coordinate system. Each of the optimal control value calculation cores is programmed, in the case where the operation space to which the current operating point belongs is a space that is defined by any of the lattice points associated with each of the optimal control value calculation cores itself, to transmit to the interpolation calculation core the optimal control values at the lattice points that define the operation space that is calculated by each of the optimal control value calculation cores itself. Incidentally, the calculation of the optimal control value by the optimal control value calculation core is performed as to the two lattice points that are equal in the respective values of the first operating condition and the second operating condition to each other and different in the value of the third operating condition from each other. The interpolation calculation core is programmed to calculate through interpolation an optimal control value at the current operating point, using the optimal control values at all the lattice points that define the operation space to which the current operating point belongs. The multicore processor outputs the optimal control value at the current operating point, which is obtained by being calculated through interpolation by the interpolation calculation core, as a control target value of each of the actuators.
That is, according to the second mode of the invention, the engine control apparatus calculates optimal control values at the respective lattice points by the plurality of the cores associated with the plurality of the lattice points that three-dimensionally surround the current operating point, and calculates through interpolation the optimal control value at the current operating point on the basis of a calculation result thereof. Thus, the calculations of the optimal control values at the respective lattice points are performed dispersedly by the plurality of the cores that operate in parallel. Therefore, the time needed to calculate the control target value of each of the actuators is drastically reduced in comparison with a case where the conventional single core processor is employed. Furthermore, when data on the optimal control value that is calculated by each of the cores are given to the interpolation calculation core, a communication delay corresponding to the physical distance therebetween is caused. However, according to the second mode of the invention, the difference in communication delay time among the cores can be reduced. This is because the arrangement of the lattice points on the two-dimensional orthogonal coordinate system having the axes representing the first operating condition and the second operating condition respectively corresponds to the arrangement of the cores on the multicore processor, and hence the optimal control values at the respective lattice points are calculated by a group of the cores that are physically closest to one another. Because of the small difference in communication delay time, the calculation can be performed with high efficiency in the processor as a whole.
Furthermore, according to the second mode of the invention, finer engine control can be realized by causing the control target value of each of the actuators to reflect the third operating condition. In particular, in the case where the operating condition that should be the third operating condition is selected from the plurality of the operating conditions defined in advance, in accordance with the operation state of the engine, more appropriate engine control corresponding to the operation state of the engine can be realized.
In the second mode of the invention as well, the core functioning as the interpolation calculation core can be fixed to any one of the cores. In that case, one of the optimal control value calculation cores may be determined as the interpolation calculation core, or the interpolation calculation core may be selected from the cores other than the optimal control value calculation cores. However, it is more preferable that the core functioning as the interpolation calculation core be dynamically changed among the optimal control value calculation cores. In that case, each of the optimal control value calculation cores is programmed to perform the following processing in the case where the operation space to which the current operating point belongs is a space that is defined by the lattice points associated with each of the optimal control value calculation cores itself.
First of all, each of the optimal control value calculation cores determines whether or not the lattice point associated with each of the optimal control value calculation cores itself ranks as a representative lattice point among the plurality of the lattice points that define the operation space to which the current operating point belongs. For example, in the case where the arrangement pattern of the lattice points on the two-dimensional orthogonal coordinate system having the axes representing the first operating condition and the second operating condition respectively consists of rectangular lattices, one lattice point that is arranged at a predetermined position among the four lattice points that are arranged at four corners of a rectangle is selected as the representative lattice point. The core corresponding to the representative lattice point will be referred to hereinafter as a representative core. Each of the optimal control value calculation cores transmits, to another core as the representative core, the optimal control value at the lattice point associated with each of the optimal control value calculation cores itself, in the case where each of the optimal control value calculation cores itself is not the representative core. On the other hand, in the case where each of the optimal control value calculation cores itself is the representative core, each of the optimal control value calculation cores receives, from the respective cores with which the other lattice points defining the operation space to which the current operating point belongs are associated, the optimal control values that are calculated by those cores. Then, each of the optimal control value calculation cores calculates through interpolation the optimal control value at the current operating point according to the interpolation calculation program, on the basis of the optimal control values at all the lattice points that define the operation space to which the current operating point belongs. Each of the cores is programmed to perform such a processing, whereby it becomes possible not only to reduce the difference in communication delay time among the cores but also to shorten the communication delay time itself.
Incidentally, it is preferable that the optimal control value be calculated by the optimal control value calculation core according to the following procedure. According to one preferred procedure, each of the optimal control value calculation cores confirms whether or not the operation space to which the current operating point belongs is a space that is defined by any of the lattice points associated with each of the optimal control value calculation cores itself, at intervals of a certain time step (e.g., on a control cycle of the engine). Then, if it is confirmed that the operation space to which the current operating point belongs is a space that is defined by any of the lattice points associated with each of the optimal control value calculation cores itself, each of the optimal control value calculation cores calculates an optimal control value at the lattice point associated with each of the optimal control value calculation cores itself among the lattice points that define the operation space, according to the aforementioned calculation program. On the other hand, if it is confirmed that the operation space to which the current operating point belongs is not a space that is defined by the lattice points associated with each of the optimal control value calculation cores itself, each of the optimal control value calculation cores stops calculating optimal control values at all the lattice points associated with each of the optimal control value calculation cores itself. The calculations of the optimal control values according to this procedure are programmed into the optimal control value calculation cores respectively, whereby the consumption of electric power can be curbed while making it possible to calculate the control target value of each of the actuators at a high speed.
Besides, according to another preferred procedure regarding the calculation of the optimal control values, each of the optimal control value calculation cores first confirms whether or not an operation space that can be attained within a calculation time of each of the optimal control values overlaps with a space that is defined by any of the lattice points that are associated with each of the optimal Control value calculation cores itself, at intervals of a certain time step (e.g., on a control cycle of the engine). Then, if it is confirmed that the operation space overlaps with the space, each of the optimal control value calculation cores calculates an optimal control value at the lattice point associated with each of the optimal control value calculation cores itself among the lattice points defining the space that overlaps with the operation space, according to the aforementioned calculation program. On the other hand, if it is confirmed that the operation space does not overlap with the space, each of the optimal control value calculation cores stops calculating optimal control values at all the lattice points associated with each of the optimal control value calculation cores itself. The calculations of the optimal control values according to such a procedure are programmed into the optimal control value calculation cores respectively. Thus, even in a situation where the operation state of the engine transiently changes, the control target value of each of the actuators can be calculated without being delayed with respect to the control cycle of the engine, while curbing the consumption of electric power.
First Embodiment
An engine control apparatus according to the first embodiment of the invention will be described with reference to the drawings.
The engine control apparatus to which the invention is applied is an apparatus that calculates control target values of actuators regarding engine control through the use of a multicore processor. In the invention, there is no limit to the type or structure of a vehicular engine that is controlled by the engine control apparatus, and there is no limit to the types or number of actuators either. For example, the engine control apparatus according to this embodiment of the invention may be a control apparatus for a gasoline engine. In that case, the engine control apparatus calculates control target values of actuators such as a throttle, an ignition device, injectors, an EGR valve, a variable valve gear, a waste gate valve and the like. Besides, the engine control apparatus according to this embodiment of the invention may be a control apparatus for a diesel engine. In that case, the engine control apparatus calculates control target values of actuators such as injectors, an EGR valve, a diesel throttle, a variable nozzle turbo and the like.
The engine control apparatus according to this embodiment of the invention acquires respective current values of an engine rotational speed and an engine load, and determines control target values of the respective actuators on the basis of those values. If the engine rotational speed and the engine load are determined, the control target values of the respective actuators that can optimize an operation state of the engine can be specified. For that specification, adaptive data that are obtained by actually testing the engine can be used. However, if an attempt is made to obtain adaptive data as to all combinations of the engine rotational speed and the engine load, an adaptive operation costs an enormous length of time and enormous quantities of man-hours. It is thus proposed to acquire adaptive data as to certain specific combinations of the engine rotational speed and the engine load, and perform an interpolation calculation on the basis of the acquired adaptive data as to the other combinations. The engine control apparatus according to this embodiment of the invention performs a calculation of the actuator control target values with the aid of the interpolation calculation, in a parallel manner through the use of the multicore processor 100.
The adaptive data that are used in the multicore processor 100 are prepared as to combinations of the engine rotational speed and the engine load indicated by lattice points in
Next, a method of calculating the control target values of the actuators through the use of the multicore processor 100 will be described using
Thus, in this embodiment of the invention, optimal control values at the four lattice points that surround the current operating point are calculated, and those values are used to perform an interpolation calculation of an optimal control value at the current operating point. In an example shown in
The optimal control value at the current operating point A is specifically calculated according to the following procedure. First of all, in the arrangement of the cores shown in
According to the method described above, the optimal control values at the four lattice points needed for the interpolation calculation are calculated in parallel by the separate cores 102a respectively. Thus, the time needed to calculate the control target values of the actuators can be drastically reduced in comparison with a case where a conventional single core processor is employed. Furthermore, the arrangement of the lattice points on the two-dimensional orthogonal coordinate system corresponds to the arrangement of the cores 102a on the multicore processor 100. Therefore, the optimal control values at the four lattice points can be calculated by the four cores 102a that are physically closest to one another. Besides, one of the four cores 102a functions as the interpolation calculation core. This makes it possible not only to reduce the difference in communication delay time that is caused when the data on the optimal control values calculated by the respective cores are given to the interpolation calculation core, but also to shorten the communication delay time itself.
Incidentally, the method described above is carried out through the execution of an optimal control value calculation routine shown in a flowchart of
In step S102 as a first step of the flowchart of
If the result of the determination in step S102 is negative, the core 102a stops calculating an optimal control value, and ends the calculation in the current time step. This is because wasteful consumption of electric power should be curbed.
If the result of the determination in step S102 is positive, the core 102a performs a process of step S104. In step S104, the core 102a executes the optimal control value calculation program, and calculates an optimal control value at the lattice point that is associated with the core 102a itself.
Subsequently in step S106, the core 102a determines whether or not the core 102a itself ranks as a representative core. It can be determined whether or not the core 102a is a representative core, from a positional relationship between the lattice point associated with the core 102a itself and the current operating point.
If the result of the determination in step S106 is negative, the core 102a performs a process of step S112. In step S112, the core 102a transmits data on the optimal control value, which is calculated by the core 102a itself, to the representative core. It can be determined which core ranks as the representative core, from a coordinate of the current operating point on the two-dimensional orthogonal coordinate system. The calculation in the current time step by the relevant core 102a ends through the transmission of the data on the optimal control values.
If the result of the determination in step S106 is positive, the core 102a performs a process of step S108. In step S108, the core 102a receives, from the respective cores with which the other lattice points defining the operation area to which the current operating point belongs are associated, data on the optimal control values that are calculated by those cores respectively. For example, if the current operating point is located as indicated by the point A in
Subsequently in step S110, the core 102a as the representative core calculates through interpolation an optimal control value at the current operating point according to the interpolation calculation program, on the basis of the optimal control values at the four lattice points, which include the optimal control value calculated by the core 102a itself. The optimal control value at the current operating point, which is obtained by being calculated through interpolation, is output as a control target value of each of the actuators. Thus, the calculation in the current time step by the relevant core 102a ends.
The consumption of electric power can be curbed while making it possible to calculate the control target values of the actuators at a high speed, through the execution of the foregoing routine in each of the cores 102a.
Second Embodiment
Next, an engine control apparatus according to the second embodiment of the invention will be described with reference to the drawings.
The difference between this embodiment of the invention and the first embodiment of the invention consists in the method of calculating the control target values of the actuators through the use of the multicore processor 100. The arrangement of the cores 102 in the multicore processor 100, the hardware architecture of the multicore processor 100, and the software architecture of the multicore processor 100 are identical to those of the first embodiment of the invention shown in
In the first embodiment of the invention, the optimal control values at the four lattice points surrounding the current operating point are calculated, and the optimal control value at the current operating point is calculated on the basis of those values. However, in a situation where the operation state of the engine transiently changes, the position of the operating point on the two-dimensional orthogonal coordinate system may change while each of the cores 102a calculates an optimal control value. In that case, there may be created a discrepancy between the optimal control value that is obtained by being calculated through interpolation according to the method of the first embodiment of the invention and the optimal control value at the true current operating point. Then, in this embodiment of the invention, a method of accurately calculating the control target values of the actuators in the situation where the operation state of the engine transiently changes is proposed.
In a two-dimensional orthogonal coordinate system shown in
The area B indicates an area in which the operating point can exist upon the completion of the calculation of an optimal control value. Then, in this embodiment of the invention, optimal control values are calculated in advance as to all the lattice points surrounding the area B as well as the lattice points surrounding the point A. In an example shown in
The calculation according to this embodiment of the invention is specifically carried out according to the following procedure. First of all, in the arrangement of the cores shown in
The method described above is carried out through the execution of an optimal control value calculation routine shown in a flowchart of
In step S202 as a first step of the flowchart of
Subsequently in step S204, the core 102a determines whether or not the operation area acquired in step S202 overlaps with an area that is defined by the lattice point associated with the core 102a itself. For example, if the relevant core 102a is the core #8, it is determined which one of the four rectangular areas having the lattice point #8 as an apex overlaps with the operation area acquired in step S202.
If the result of the determination in step S204 is negative, the core 102a stops calculating an optimal control value, and ends the calculation in the current time step. This is because wasteful consumption of electric power should be curbed.
If the result of the determination in step S204 is positive, the core 102a performs a process of step S206. In step S206, the core 102a executes the optimal control value calculation program, and calculates an optimal control value at the lattice point that is associated with the core 102a itself.
Subsequently in step S208, the core 102a acquires respective current values of the engine rotational speed and the engine load. Then, the core 102a specifies a current operating point on the two-dimensional orthogonal coordinate system, and determines whether or not the current operating point is located in an area that is defined by the lattice point associated with the core 102a itself. For example, if the core 102a is the core #8, the core 102a determines whether or not which one of the four rectangular areas having the lattice point #8 as an apex contains the current operating point.
If the result of the determination in step S208 is negative, the core 102a nullifies the calculation result of the optimal control value, and ends the calculation in the current time step.
If the result of the determination in step S208 is positive, the core 102a performs a process of step S210. In step S210, the core 102a determines whether or not the core 102a itself ranks as a representative core. It can be determined whether or not the core 102a is the representative core, from a positional relationship between the lattice points associated with the core 102a itself and the current operating point.
If the result of the determination in step S210 is negative, the core 102a performs a process of step S216. In step S216, the core 102a transmits to the representative core data on the optimal control value that is calculated by the core 102a itself. It can be determined which one of the cores ranks as the representative core, from the coordinate of the current operating point on the two-dimensional orthogonal coordinate system. The calculation in the current time step by the relevant core 102a ends through the transmission of the data on the optimal control value.
If the result of the determination in step S210 is positive, the core 102a performs a process of step S212. In step S212, the core 102a receives, from the respective cores with which the other lattice points defining the operation area to which the current operating point belongs are associated, data on the optimal control values calculated by those cores respectively. For example, if the current operating point is located as indicated by the point C in
Subsequently in step S214, the core 102a as a representative core calculates through interpolation an optimal control value at the current operating point according to the interpolation calculation program, on the basis of the optimal control values at the four lattice points including the optimal control value calculated by the core 102a itself. The optimal control value at the current operating point, which is obtained by being calculated through interpolation, is output as a control target value of each of the actuators. Thus, the calculation in the current time step by the relevant core 102a ends.
Through the execution of the foregoing routine in each of the cores 102a, the control target value of a corresponding one of the actuators can be calculated without being delayed with respect to the control cycle of the engine while curbing the consumption of electric power, even in a situation where the operation state of the engine transiently changes.
Third Embodiment
Next, an engine control apparatus according to the third embodiment of the invention will be described with reference to the drawings.
This embodiment of the invention is different from the first and second embodiments of the invention in the number of operating conditions serving as a basis in determining control target values of the actuators. In this embodiment of the invention, the control target values of the actuators are determined on the basis of the engine coolant temperature as a third operating condition as well as the engine rotational speed and the engine load as the first and second operating conditions. Thus, this embodiment of the invention is different from the first and second embodiments of the invention also in the method of calculating control target values of the actuators through the use of the multicore processor 100. The arrangement of the cores 102 in the multicore processor 100, the hardware architecture of the multicore processor 100, and the software architecture of the multicore processor 100 are identical to those of the first embodiment of the invention shown in
The engine control apparatus according to this embodiment of the invention acquires respective current values of the engine rotational speed, the engine load and the engine coolant temperature, and determines the control target values of the respective actuators on the basis of those values. The engine coolant temperature is a factor that has a great influence on a relationship between the operation amount of each of the actuators and the operation state of the engine especially in a warm-up process of the engine. In the engine control apparatus according to this embodiment of the invention, adaptive data are prepared only as to a certain specific combination of the engine rotational speed, the engine load and the engine coolant temperature, and the other combinations are supplemented by an interpolation calculation based on the prepared adaptive data.
The adaptive data that are used in the multicore processor 100 are prepared as to a combination of the engine rotational speed, the engine load and the engine coolant temperature that are indicated by lattice points in
Next, a method of calculating control target values of the actuators through the use of the multicore processor 100 will be described using
The optimal control value at the current operating point D is specifically calculated according to the following procedure. First of all, in the arrangement of the cores shown in
According to the method described above, the engine coolant temperature as the third operating condition is reflected on the control target values of the actuators, whereby finer engine control can be realized than in the first embodiment of the invention. Besides, the calculations of optimal control values at the eight lattice points as needed for the interpolation calculation are dispersedly performed by the four cores 102a that operate in parallel. Therefore, the time needed to calculate the control target values of the actuators can be drastically reduced in comparison with a case where the conventional single-core processor is employed. Furthermore, according to the method described above, the optimal control values at the eight lattice points are calculated by the four cores 102a that are physically closest to one another, and one of the four cores 102a functions as the interpolation calculation core. This makes it possible not only to reduce the difference in communication delay time that is created when the data on the optimal control values calculated by the respective cores are given to the interpolation calculation core, but also to shorten the communication delay time itself.
Incidentally, the method described above is carried out through the execution of an optimal control value calculation routine shown in a flowchart of
In step S302 as a first step of the flowchart of
If the result of the determination in step S302 is negative, the core 102a stops calculating an optimal control value, and ends the calculation in the current time step. This is because wasteful consumption of electric power should be curbed.
If the result of the determination in step S302 is positive, the core 102a performs a process of step S304. In step S304, the core 102a executes the optimal control value calculation program, and calculates optimal control values at the two lattice points associated with the current operating point among the lattice points associated with the core 102a itself.
Subsequently in step S306, the core 102a determines whether or not the core 102a itself ranks as the representative core. It can be determined whether or not the core 102a is the representative core, from a positional relationship between the lattice points that are associated with the core 102a itself and the current operating point.
If the result of the determination in step S306 is negative, the core 102a performs a process of step S312. In step S312, the core 102a transmits to the representative core data on the optimal control values at the two lattice points that are calculated by the core 102a itself. It can be determined which one of the cores ranks as the representative core, from a coordinate of the current operating point on the three-dimensional orthogonal coordinate system. Through the transmission of the data on the optimal control values, the calculation in the current time step by the relevant core 102a ends.
If the result of the determination in step S306 is positive, the core 102a performs a process of step S308. In step S308, the core 102a receives, from the respective cores with which the other lattice points defining the operation space to which the current operating point belongs are associated respectively, data on the optimal control values that are calculated by those cores respectively. For example, if the current operating point is located as indicated by the point D in
Subsequently in step S310, the core 102a as the representative core calculates through interpolation an optimal control value at the current operating point according to the interpolation calculation program, on the basis of the optimal control values at the eight lattice points including the optimal control value that is calculated by the core 102a itself. The optimal control value at the current operating point, which is obtained by being calculated through interpolation, is output as a target value of each of the actuators. Thus, the calculation in the current time step by the relevant core 102a ends.
Through the execution of the foregoing routine in each of the cores 102a, the consumption of electric power can be curbed while making it possible to calculate a control target value of each of the actuators at a high speed.
Fourth Embodiment
Next, an engine control apparatus according to the fourth embodiment of the invention will be described with reference to the drawings.
The arrangement of the cores 102 in the multicore processor 100, the hardware architecture of the multicore processor 100, and the software architecture of the multicore processor 100 in this embodiment of the invention are identical to those of the first embodiment of the invention shown in
The method of calculating a control target value of each of the actuators according to this embodiment of the invention is carried out through the execution of an optimal control value calculation routine shown in a flowchart of
In step S402 as a first step of the flowchart of
Subsequently in step S404, the core 102a determines whether or not the operation space acquired in step S402 overlaps with a space that is defined by any of the lattice points associated with the core 102a itself.
If the result of the determination in step S404 is negative, the core 102a stops calculating an optimal control value, and ends the calculation in this current time step. This is because wasteful consumption of electric power should be curbed.
If the result of the determination in step S404 is positive, the core 102a performs a process of step S406. In step S406, the core 102a executes the optimal control value calculation program, and calculates an optimal control value at each of the lattice points associated with the core 102a itself among the lattice points that define the operation space acquired in step S402.
Subsequently in step S408, the core 102a acquires respective current values of the engine rotational speed, the engine load and the engine coolant temperature. The current time as mentioned herein means a current time point at which the calculation of an optimal control value is completed. Then, the core 102a specifies the current operating point on the three-dimensional orthogonal coordinate system from the respective current values of those three operating conditions, and determines whether or not the current operating point is located in a space that is defined by any of the lattice points associated with the core 102a itself.
If the result of the determination in step S408 is negative, the core 102a nullifies the calculation result of the optimal control value, and ends the calculation in the current time step.
If the result of the determination in step S408 is positive, the core 102a performs a process of step S410. In step S410, the core 102a determines whether or not the core 102a itself ranks as the representative core. It can be determined whether or not the core 102a is the representative core, from a positional relationship between the lattice points that are associated with the core 102a itself and the current operating point.
If the result of the determination in step S410 is negative, the core 102a performs a process of step S416. In step S416, the core 102a transmits to the representative core data on the optimal control values at the two lattice points associated with the current operating point, among data on the optimal control values that are calculated in advance in step S404. It can be determined which one of the cores ranks as the representative core, from a coordinate of the current operating point on the three-dimensional orthogonal coordinate system. The calculation in the current time step by the relevant core 102a ends through the transmission of the data on the optimal control values.
If the result of the determination in step S410 is positive, the core 102a performs a process of step S412. In step S412, the core 102a receives, from the respective cores with which the other lattice points defining the operation space to which the current operating point belongs are associated respectively, data on the optimal control values at the six lattice points that are calculated by those cores respectively.
Subsequently in step S414, the core 102a as the representative core calculates through interpolation an optimal control value at the current operating point according to the interpolation calculation program, on the basis of the optimal control values at the eight lattice points including the optimal control value that is calculated by the core 102a itself. The optimal control value at the current operating point, which is obtained by being calculated through interpolation, is output as a control target value of each of the actuators. Thus, the calculation in the current time step by the relevant core 102a ends.
Through the execution of the foregoing routine in each of the cores 102a, the control target value of each of the actuators can be calculated without being delayed with respect to the control cycle of the engine while curbing the consumption of electric power even in a situation where the operation state of the engine transiently changes.
Fifth Embodiment
Next, an engine control apparatus according to the fifth embodiment of the invention will be described with reference to the drawings.
The arrangement of the cores 102 in the multicore processor 100, the hardware architecture of the multicore processor 100, and the software architecture of the multicore processor 100 according to this embodiment of the invention are identical to those of the first embodiment of the invention shown in
The engine control apparatus according to this embodiment of the invention is characterized in that the third operating condition as one of the three operating conditions serving as a basis in determining a control target value of each of the actuators is changed in accordance with the state of the engine. In this embodiment of the invention as well, until the engine has been warmed up, the engine coolant temperature is used as the third operating condition as is the case, with the third embodiment of the invention. However, since the amount of change in engine coolant temperature is small after the engine has been warmed up, the movements of the operating point on the three-dimensional orthogonal coordinate system, which has the Z-axis representing the engine coolant temperature, are limited to those on a specific XY plane on which the engine coolant temperature is constant. That is, a large number of the lattice points that are arranged in the Z-axis direction are not used after the engine has been warmed up. Thus, in this embodiment of the invention, the third operating condition is changed from the engine coolant temperature to the intake air temperature upon the completion of the warm-up of the engine.
In this manner, in this embodiment of the invention, in addition to a plurality of lattice points (lattice points of a first group) that are equal in the respective values of the engine rotational speed and the engine load to one another and different in the value of the engine coolant temperature from one another, a plurality of lattice points (lattice points of a second group) that are equal in the respective values of the engine rotational speed and the engine load to one another and different in the value of the intake air temperature from one another are associated with each of the cores 102a. The optimal control value calculation program that is installed in the local memory 106 of each of the cores 102a is designed such that either adaptive data adapted to the respective lattice points of the first group or adaptive data adapted to the respective lattice points of the second group can be selectively used.
From the start of the engine to the completion of the warm-up of the engine, each of the cores 102a uses adaptive data adapted to the respective lattice points of the first group for the calculation according to the optimal control value calculation program as shown in the left diagram of
When the warm-up of the engine is then completed, each of the cores 102a changes the adaptive data used for the calculation of an optimal control value to the adaptive data adapted to the respective lattice points of the second group as shown in the right diagram of
Even if the engine has been warmed up, the intake air temperature changes. Thus, the intake air temperature has a greater influence on the state of the engine than the engine coolant temperature in a situation where warm-up has been completed. In consequence, by changing the third operating condition from the engine coolant temperature to the intake air temperature upon the completion of the warm-up of the engine, the state of the engine can be more appropriately controlled through effective use of the three-dimensional arrangement of the lattice points.
Others
The invention is not limited to the aforementioned embodiments thereof, but can be carried out after being modified in various manners without departing from the gist of the invention. For example, the invention may be carried out after being modified as follows.
In each of the aforementioned embodiments of the invention, the interpolation calculation is performed in the representative core that is selected from the cores that have calculated the optimal control values. However, the interpolation calculation can also be performed in the other cores. For example, each of
In each of the aforementioned embodiments of the invention, the lattice points are associated with one or some of the cores that are mounted on the multicore processor. However, the lattice points can also be associated with all the cores that are mounted on the multicore processor. For example, in the case of the multicore processor 100 shown in
In the fourth embodiment of the invention, the third operating condition after the completion of the warm-up of the engine may be a vehicle speed instead of the intake air temperature. This is because a difference in vehicle speed leads to a difference in the intensity of traveling wind and thus to a difference in the temperature of an exhaust system. Moreover, any operating condition that continuously changes is preferable as the third operating condition. For example, an atmospheric pressure or an EGR rate is preferable as the third operating condition.
100 MULTICORE PROCESSOR
102 CORE
102a CORE WITH WHICH LATTICE POINT IS ASSOCIATED
104 CPU
106 LOCAL MEMORY
108 BUS
110 OS
112 APPLICATION
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4729358, | Apr 09 1986 | Hitachi, Ltd. | Engine controlling system |
5649198, | Feb 19 1993 | Fujitsu Limited | Mapping calculation units by dividing a calculation model which can be calculated in parallel on an application program |
6082334, | Mar 30 1998 | Suzuki Motor Corporation | Electronically controlled fuel injection type two-stroke engine |
6304671, | Oct 08 1997 | Seiko Epson Corporation | Image processing apparatus using an offset correction table enabling interpolation to be performed without conditional jumps |
8738860, | Oct 25 2010 | EZCHIP SEMICONDUCTOR LTD ; Mellanox Technologies, LTD | Computing in parallel processing environments |
20110083125, | |||
20110213946, | |||
20120216017, | |||
20121026542, | |||
20140343823, | |||
20150081101, | |||
EP2341448, | |||
JP11191848, | |||
JP11280519, | |||
JP2008197776, | |||
JP2008269487, | |||
JP2011053876, | |||
JP201181539, | |||
JP62240441, | |||
JP9198358, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Sep 28 2011 | Toyota Jidosha Kabushiki Kaisha | (assignment on the face of the patent) | / | |||
Nov 13 2014 | WATANABE, SATORU | Toyota Jidosha Kabushiki Kaisha | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034457 | /0585 |
Date | Maintenance Fee Events |
Sep 25 2020 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 18 2020 | 4 years fee payment window open |
Oct 18 2020 | 6 months grace period start (w surcharge) |
Apr 18 2021 | patent expiry (for year 4) |
Apr 18 2023 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 18 2024 | 8 years fee payment window open |
Oct 18 2024 | 6 months grace period start (w surcharge) |
Apr 18 2025 | patent expiry (for year 8) |
Apr 18 2027 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 18 2028 | 12 years fee payment window open |
Oct 18 2028 | 6 months grace period start (w surcharge) |
Apr 18 2029 | patent expiry (for year 12) |
Apr 18 2031 | 2 years to revive unintentionally abandoned end. (for year 12) |