What is claimed is: 1. A method of controlling a purge solenoid for a purge control system of an internal combustion, said method comprising the steps of: determining whether predetermined conditions are right for duty cycling the purge solenoid; turning the purge solenoid OFF if predetermined conditions are not right for duty cycling the purge solenoid; obtaining a duty cycle for the purge solenoid based on a duty cycle flow (DCFLOW) if predetermined conditions are right for duty cycling the purge solenoid; determining an output level of the purge solenoid based on the obtained duty cycle of the purge solenoid; and controlling the purge solenoid to the obtained duty cycle. 2. A method as set forth in claim 1 wherein said step of determining an output level comprises: determining whether the obtained duty cycle is approximately a predetermined minimum level; and turning the purge solenoid OFF if the obtained duty cycle is about the predetermined minimum level. 3. A method as set forth in claim 1 wherein said step of determining an output level comprises: determining whether the obtained duty cycle is approximately a predetermined maximum level; and turning the purge solenoid ON if the obtained duty cycle is approximately the predetermined maximum level. 4. A method as set forth in claim 1 wherein said step of determining an output level comprises: determining whether the internal combustion engine is operating at an idle condition; and using the obtained duty cycle at a first predetermined frequency to control the purge solenoid if the internal combustion engine is operating at an idle condition. 5. A method as set forth in claim 1 wherein said step of determining an output level comprises: determining whether the internal combustion engine is operating at an idle condition; and using the obtained duty cycle at a second predetermined frequency to control the purge solenoid if the internal combustion engine is not operating at an idle condition. 6. A method of controlling a purge solenoid for a purge control system of an internal combustion engine, said method comprising the steps of: determining whether predetermined conditions are right for duty cycling the purge solenoid; turning the purge solenoid OFF if predetermined conditions are not right for duty cycling the purge solenoid; obtaining a duty cycle for the purge solenoid based on a duty cycle flow (DCFLOW) if predetermined conditions are right for duty cycling the purge solenoid; determining whether the obtained duty cycle is about a predetermined minimum level; turning the purge solenoid OFF if the obtained duty cycle is about the predetermined minimum level; determining whether the obtained duty cycle is about a predetermined maximum level if the obtained duty cycle is not about the predetermined minimum level; turning the purge solenoid ON if the obtained duty cycle is about the predetermined maximum level; determining whether the internal combustion engine is operating at an idle condition; using the obtained duty cycle at a first predetermined frequency to control the purge solenoid if the internal combustion engine is operating at an idle condition; and using the obtained duty cycle at a second predetermined frequency to control the purge solenoid if the internal combustion engine is not at idle. 7. A method as set forth in claim 1 wherein said step of determining whether predetermined conditions are right comprises: determining whether the internal combustion engine is operating at wide open throttle; and determining whether the internal combustion engine is operating in closed loop. 8. A method of controlling a purge solenoid for a purge control system of an internal combustion engine, said method comprising the steps of: calculating the duty cycle flow (DCFLOW) based on a simulated engine airflow and a duty cycle initial multiplier (DCINML); determining whether DCINML is equal to a predetermined value; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value; using the result to obtain the duty cycle for the purge solenoid; determining an output level of the purge solenoid based on the obtained duty cycle of the purge solenoid; and controlling the purge solenoid to the obtained duty cycle. 9. A method of controlling a purge solenoid for a purge control system of an internal combustion engine, said method comprising the steps of; determining whether a simulated air flow is outside of a predetermined operating range or engine vacuum is below a predetermined limit; determining an 02CNTR value based on feedback from an oxygen sensor; determining whether 02CNTR is more negative that a first predetermined limit if the simulated air flow is outside of the predetermined operating range or engine vacuum is below the predetermined limit; decrementing a duty cycle multiplier factor (DCMULT) if 02CNTR is more negative than the first predetermined limit; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value; using the result to obtain the duty cycle for the purge solenoid; determining an output level of the purge solenoid based on the obtained cycle of the purge solenoid; and controlling the purge solenoid to the obtained duty cycle. 10. A method as set forth in claim 1 wherein said step of determining whether predetermined conditions are right comprises: determining whether 02CNTR is more negative than a second predetermined limit; determining whether the engine is operating in closed loop longer than a predetermined time limit; using more 02 sensor toggles per DCMULT increment if the engine is operating in closed loop expiration of the predetermined time limit; and using less 02 sensor toggles per DCMULT increment if the engine is operating in closed loop after expiration of the predetermined time limit. 11. A method of controlling a purge solenoid for a purge control system of an internal combustion engine, said method comprising the steps of: determining whether the internal combustion engine is operating at wide open throttle; determining whether the internal combustion engine is operating in closed loop; calculating a duty cycle flow (DCFLOW) based on a simulated engine airflow and a duty cycle initial multiplier (DCINML)if the internal combustion engine is not operating at wide open throttle or is operating closed loop; determining whether DCINML is equal to a predetermined value; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value and using the result to obtain the predetermined duty cycle for the purge solenoid; determining whether a simulated air flow is outside of a predetermined operating range or engine vacuum is below a predetermined limit if DCINML is equal to the predetermined value; determining an 02CNTR value based on feedback from an oxygen sensor; determining whether 02CNTR is more negative that a first predetermined limit if the simulated air flow is outside of the predetermined operating range or engine vacuum is below the predetermined limit; decrementing a duty cycle multiplier factor (DCMULT) if 02CNTR is more negative than the first predetermined limit; determining whether 02CNTR is more negative than a second predetermined limit if the simulated airflow is not outside of the predetermined operating range or engine vacuum is not below the predetermined limit; determined whether the internal combustion engine is operating in closed loop longer than a predetermined time limit if 02CNTR is not more negative than the second predetermined limit; sending a number of toggles from the oxygen sensor to an engine control unit; using more oxygen Sensor toggles per DCMULT increment if the internal combustion engine is operating in closed loop; using less oxygen sensor toggles per DCMULT increment if the internal combustion engine is operating in closed loop; determining an output level of the purge solenoid based on the obtained duty cycle of the purge solenoid; and controlling the purge solenoid to the obtained duty cycle. 12. A method of controlling a purge solenoid for a purge control system of an internal combustion, said method comprising the steps of: determining whether predetermined conditions are right for duty cycling the purge solenoid; turning the purge solenoid OFF if predetermined conditions are not right for duty cycling the purge solenoid; obtaining a predetermined duty cycle for the purge solenoid based on a duty cycle flow (DCFLOW) if predetermined conditions are right for duty cycling the purge solenoid; determining whether the predetermined duty cycle is approximately a predetermined minimum level; turning the purge solenoid OFF if the predetermined duty cycle is approximately a predetermined minimum level; determining whether the predetermined duty cycle is approximately a predetermined maximum level if the predetermined duty cycle is not approximately the predetermined minimum level; turning the purge solenoid ON if the predetermined duty cycle is approximately the predetermined maximum level; determining whether the internal combustion engine is operating at an idle condition if the predetermined duty cycle is not approximately the predetermined maximum level; using the predetermined duty cycle at a first predetermined frequency to control the purge solenoid if the internal combustion engine is operating at an idle condition; and using the predetermined duty cycle at a second predetermined frequency to control the purge solenoid if the internal combustion engine is not operating at an idle condition. 13. A method as set forth in claim 11 wherein said step of determining whether determined conditions are right comprises: calculating a duty cycle flow (DCFLOW) based on a simulated engine airflow and a duty cycle internal multiplier (DCINML); determining whether DCINML is equal to a predetermined value; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value and using the result to find the predetermined duty cycle for the purge solenoid; determining whether a simulated air flow is outside of a predetermined operating range or engine vacuum is below a predetermined limit if DCINML is equal to the predetermined value; determining whether 02CNTR is more negative that a first predetermined limit if the simulated air flow is outside of the predetermined operating range or engine vacuum is below the predetermined limit; decrementing a duty cycle multiplier factor (DCMULT) if 02CNTR is more negative than the first predetermined limit; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value; and using result to find the predetermined duty cycle for the purge solenoid. 14. A method as set forth in claim 11 wherein said step of determining whether predetermined conditions are right comprises: determining whether a simulated air flow is outside of a predetermined operating range or engine vacuum is below a predetermined limit; determining whether 02CNTR is more negative that a first predetermined limit if the simulated air flow is outside of the predetermined operating range or engine vacuum is below the predetermined limit; decrementing a duty cycle multiplier factor (DCMULT) if 02CNTR is more negative than the first predetermined limit; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value and using the result to find the predetermined duty cycle for the purge solenoid; determining whether 02CNTR is more negative than a second predetermined limit; determining whether the engine is operating in closed loop longer than a predetermined time limit if 02CNTR is not more negative than a second predetermined limit; using more oxygen Sensor toggles per DCMULT increment if the engine is operating in closed loop; using less oxygen sensor toggles per DCMULT increment if the engine is operating in closed loop. 15. A method as set forth in claim 11 wherein said step of determining whether predetermined conditions are right comprises: determining whether the internal combustion engine is operating at wide open throttle; and determining whether the internal combustion engine is operating in closed loop. 16. A method as set forth in claim 11 wherein said step of determining whether predetermined conditions are right comprises: determining whether the internal combustion engine is operating at wide open throttle; determining whether the internal combustion engine is operating in closed loop if the internal combustion engine is not operating at wide open throttle; calculating a duty cycle flow (DCFLOW) based on a simulated engine airflow and a duty cycle initial multiplier (DCINML) if the internal combustion engine is operating in closed loop; determining whether DCINML is equal to a predetermined value; multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value and using the result to obtain the predetermined duty cycle for the purge solenoid; determining whether a simulated air flow is outside of a predetermined operating range or engine vacuum is below a predetermined limit if DCINML is equal to the predetermined value; determining whether 02CNTR is more negative that a first predetermined limit if the simulated air flow is outside of the predetermined operating range or engine vacuum is below the predetermined limit; decrementing a duty cycle multiplier factor (DCMULT) if 02CNTR is more negative than the first predetermined limit; determining whether 02CNTR is more negative than a second predetermined limit if the simulated airflow is not outside of the predetermined operating range or engine vacuum is not below the predetermined limit; determining whether the engine is operating in closed loop longer than a predetermined time limit if 02CNTR is not more negative than the second predetermined limit; using more oxygen Sensor toggles per DCMULT increment if the internal combustion engine is operating in closed loop; and using less oxygen Sensor toggles per DCMULT increment if the internal combustion engine is operating in closed loop. 17. A method of controlling a purge solenoid for a purge control system of an internal combustion engine, said method comprising the steps of:
determining whether the internal combustion engine is operating at wide open throttle;
determining whether the internal combustion engine is operating in closed loop if the internal combustion engine is not operating at wide open throttle;
turning the purge solenoid OFF if the internal combustion engine is operating at wide open throttle or is not operating in closed loop;
calculating a duty cycle flow (DCFLOW) based on a simulated engine airflow and a duty cycle initial multiplier (DCINML);
determining whether DCINML is equal to a predetermined value;
multiplying the calculated DCFLOW by at least one predetermined factor to find a result of DCINML is not equal to the predetermined value and using the result to find the predetermined duty cycle for the purge solenoid;
determining whether a simulated air flow is outside of a predetermined operating range or engine vacuum is below a predetermined limit if DCINML is equal to the predetermined value;
determining an 02CNTR value based on feedback from an oxygen sensor;
determining whether 02CNTR is more negative that a first predetermined limit if the simulated air flow is outside of the predetermined operating range or engine vacuum is below the predetermined limit;
decrementing a duty cycle multiplier factor (DCMULT) if 02CNTR is more negative than the first predetermined limit;
multiplying the calculated DCFLOW by at least one predetermined factor to find a result if DCINML is not equal to the predetermined value and using the result to find the predetermined duty cycle for the purge solenoid if 02CNTR is not more
negative than the first predetermined value;
determining whether the engine is operating in closed loop longer than a predetermined time limit if the simulated air flow is not outside the predetermined operating range;
sending a number of toggles from the oxygen sensor to an engine control unit;
using more oxygen Sensor toggles per DCMULT increment if the engine is operating in closed loop;
using less oxygen Sensor toggles per DCMULT increment if the engine is operating in closed loop;
determining an output level of the purge solenoid based on the predetermined duty cycle of the purge solenoid; and
controlling the purge solenoid to the predetermined duty cycle. |