From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Using LABVIEW To Read and generate pressure for fuel injection

HI guys. im new to the site and labview so please excuse my ignorance. we are currently working on a diesel engine and want to convert it to run on a common rail fuel injector.

 

now we got hold of a common-rail fuel pump and injector from a factory a few years back. Now ive been working on it to get it to run. the problem ive found out is that like all modern enigines everything is controlled by the ECU(engine control unit). As siemens ECU's cannot be tweaked and an after market ECU is out of our budget, I am thinking to use labview to control the fuel injector and pump. at the momment im just concentrating on the pump. it has 3 control valves/electrical componnents. 1 is a pressure control valve, the other a volume control valve and 3rd one is the component on the common rail itself. NOw what we think happens is the pump generates pressure and when the software tells it to open or switch on it does so and the volume control valve opens when the ecu/labview tells it to and then when the fuel flows through pressure the common rail also opens and closes when the fuel needs tro get to the fuel injector.

 

 

Firstly from the engine there is 2 types of data/.signals that are being transmitted to the DAQ. Firslty, the shaft encoder signal. This is connected to the crankshaft and in a full revolution it sends 5000 signals to the DAQ. This tells us where exactly the piston is in the engine. The second is the Top Dead Centre Indicator. As its name it lets us no when the piston is in the top. Now what we have to do is get the injector to inject at a certain time. or the injector to open at acertain time and close a certain time. That is before the piston reaches top dead centre and using the shaft enconder sig nal will know where the pistin is and just before it reaches the centre at a certain degree tell it to open and after a certain dgree past the TDC close.

 

Now it terms of the program, I want it to take the info from the DAQ and using both these signals the user can put in a certain degree it should open and close ( so thats 2 boxes to stick a number in on the front panel- 1 for what degree to open and the other when to close) and the Labview should send a signal to the DAQ telling it exaclty when to open and when to close. Then at that time the power isgiven to the Fuel pump, it generates the presurre and then transfers the fuel to the injector.

 

I hope i havent confused you guys burt this is basicaly what im trying to do.

 

please can anyone help me out???

 

many thanks

 

Message Edited by jamran on 12-24-2008 06:57 AM
Message Edited by jamran on 12-24-2008 06:57 AM
Message Edited by jamran on 12-24-2008 06:57 AM
0 Kudos
Message 1 of 42
(7,444 Views)

It's certainly possible for LV to to perform as an engine management system. A question regarding safety and operation... You seem unsure of how the system of your is intended to work. That concerns me. Are the fuel rail injectors you will use from an injected gasoline engine? If so, will they handle the presures from a diesel pump? If deisel injectors, is the existing system run by metering pump or injector pulse width? It seems like you are unsure of that. A metering pump connected to a pulse width type injector is possibly a mismatch of two types of systems. It can explode the injector or lines if done improperly. You really should put some data acquisition on the pump controls and actuators of an existing running system to determine intended function. That would give huge insight into how the system should be controlled using LV or any other system.

 

Labview 8.5
Meas Studio 2008
0 Kudos
Message 2 of 42
(7,393 Views)
hi It is a diesel injector n pump from a ford. However, i didnt get what you  where trying to say after that. please clarify. I can send pic sof the equipment if u want.
0 Kudos
Message 3 of 42
(7,370 Views)

jamran wrote:
hi It is a diesel injector n pump from a ford. However, i didnt get what you  where trying to say after that. please clarify....

What I heard walter write was what I thought when reading your post.

 

Before we can develop an app we have to know what the requirements are. Lacking documentation, monitoring an operational system (using a DAQ systtem) will let us know what we are developing.

 

TO just start "poking around" while using gas is a "bad idea" (Quoting from my wife "NO more experiments in the kitchen!")

 

Fast forward .... assuming you can find doncumentaiton....

 

I suspect you will have to implement this application on an FPGA in order to respond to the measured events in a timely fashion.

 

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
Message 4 of 42
(7,364 Views)

Hi there

 

i agree with the other posters: Trying to get a controller working by "trial and error" when gas and high pressure and moving parts are involved is highly dangerous and can risk damage to your health and equipment! I'd refuse to "play around" without knowing where to start if somebody is trying to force you to do so in any way.

 

I suggest to start with a software simulation of your environment (sensors and actuators and the controller), e.g. with Mathworks Matlab/Simulink. If there's an existing ECU there propably already exist models of the ECU and the environment somewhere. Then you can find solutions of how to handle dangerous or unexpected situations inside the controller WITHOUT the risk of explosive special effects.

 

If you have a working model of the controller in Simulink (or whatever) you can then start to port this code to LabVIEW (or embed the Simulink Model with the NI Simulation Interface Toolkit (SIT). You also can embedd DLLs in LabVIEW).

 

As the hardware platform you may take a look at NI cRIO. These are suitable for in-Car operation (voltage supply, ruggedness).

 

Best regards
chris

CL(A)Dly bending G-Force with LabVIEW

famous last words: "oh my god, it is full of stars!"
Message 5 of 42
(7,349 Views)

Wow

 

Listen to the prior advice provided

 

Your specification, just with regard to the diesel is lacking.

Is it low speed (<200rpm) medium speed (200 ==> 1800) or high speed > 1800?

What is the cylinder volume ?

Engine capacity? Engine weight?

 

Your solution from a safety apsect will have to be based upon an FPGA real time solution.

A windows solution is not viable.

 

What type of encoder provides 5000 signals? Usual form is either 360 degree encoder or 1024,2048 4096 etc pulse encoder.

You will need to utilise the 3 signals from the shaft encoder sig A sig B and sig Z (TDC). Without them you cannot determine the direction of rotation. Yeah diesel motors can operate in both directions( low speed direct drive marine engines for example)

 

Whilst the software competence of the Discussion fraternity is not in doubt, the blind faith of attempting to 'glue ' a solution from old components without understanding the complexities

of the ECU will be extremely hazardous. Suggest  you consider  improving your life assurance!

 

Regards

Xseadog

Message 6 of 42
(7,336 Views)

I have been using two FPGA-RT systems to control a common rail (CR) fuel injection pump and diesel injectors on the engine  so that the engine ECU is diabled and not used at all. Let me first explain some basics of the diesel CR system so that you'll better understand your system.

 

The common rail pump generates high pump largely independent of the engine speed so that a high pressure reservoir is available (called the common rail) all the time. The pump generally has two valves called the PCV (pressure control valve) and the VCV (volume control valve) to regulate the pressure generated as you mentioned. The third valve as you said on the rail is not a valve but a rail pressure sensor which provides the feedback on the pressure in the common rail. The injector is either a solenoid or a piezo-electric injector based on the mechansim for actuation of the valve.

 

You mentioned your system is from Ford. Ford does not manufacture the fuel system it self but uses normally either a Delphi or a seimens systems. The PCV and VCV are solenoid actuated valves and the operating voltage is 0-5 Volts DC usually. 0 volts usually means minimum operning of the valves but I have seen and used pump which reverse this and make 5V as the minimum opening so you need to know the specs of your system. The pressure sensors also usually provides a 0-5V DC signal. Lets say, if your pump is rated for 1200 bar max, then the sensor normally indicates a voltage output of 4.5 ~4.8 bar to indicate this output. Moreover, the voltage corresponding to 0 bar pressure is generally 0.5 V (and not 0 volts) to provide a means of knowing if the sensor is bad at startup.

 

The encoder as you mentioned provides two signals. one is the position of the crankshaft (caleed Index A usually) and the position of the piton top dead centre (caleed Index Z usually).

 

To control the fuel injection pump, you do not need the encoder signals as the pump works in the time domain and not the geometric (crank angle) domain. To control the fuel pump, a practical application is to fix the value of the VCV to about 30 percent opening and vary the PCV to change the pressure. The 30% opening of the  VCV  ensures that the pump has enough fuel at all times to raise the pressure as well as to provide adequate cooling of the pump components (and the fuel does get hot- upto 100°C at pressures around 1500 bar). The PCV should be controlled by using a PID or a PI controller with the rail pressure sensor as the feedback. It is preferable to use a deterministic system (Real time) to ensure safety but a windows based system could also work. You just need to limit the rate of change in the setpopint as well as the maxiumum pressure while you are tuning to prevent damage and to ensure safety of the equipment and your own safety. The tuning of the PI controller can be done by hit and try but make sure that you have upper limits set to lets say, 2.5 V. once you have a stable system working, you can then increase the upper limit.

 

The case of the injector is another story. First of all, you cannot use a labview DAQ card or even FPGA to directly switch open the injectors. You would require power drives which would generate the required voltage and current (Voltage upto 200V, current upto 20Amps) to open the injectors. What you need to do is to generate a TTL pulse train based upon the encoder Index A & Z. The rising edge of the  TTL pulse should correspond to the crank angle at which you are commanding the injector to open and the width of the pulse is the duration for which you command the injector to remain open. I say commanded  because the actual opening would occur a bit later (due to injector opening delay, and the closing also takes a finite time - inertia/lag of mechanical systems).

 

To further complicate the matter, a 4-stroke engine has two revolutions per 4 strokes (180°-exhaust, 180°-intake, 180°-compression & 180°-expansion or power). so you will get 2 Index Z signals every 4 strokes. Now, the fuel injection is done towards the end ofthe compression stroke and therefore, you need some means of identifying the compression TDC or Index Z, so that you don't inject at the end of the exhaust stroke (Exhaust TDC or Index Z). One way of doing this is to have an in-cylinder pressure sensor or even better to use cam sensor which gives you a signal around compression stroke to let you know that it is the compression stroke. (a word of caution- if injecting fuel at the exhaust TDC accidently, you can damage the engine within a few cycles and that means 1~2 seconds). So identifying the compression TDC is A MUST!.

 

If you have the compression TDC identified, then you generate that TTL pulse at the desired crankangle with the desired pulsewidth and let the power drive do the rest. I would recommend at least a RT-system and preferabbly a RT-FPGA to implement this as you need to have absoulte determinism in the injection control.

 

I hope this is not that complicated as it seems and I hope this helps you.

 

Let me know if you need further help.

 

Cheers!!

 

 

 

Message 7 of 42
(7,316 Views)

To add to my previous post, as xseadog said rightly, that the encoder can only provide 360/720/3600/4096/7200 Index A signals per revolution so your number of 5000 does not make sense.

 

Moreover, you have psoted the same question/problem in another of your posts

http://forums.ni.com/ni/board/message?board.id=170&message.id=374513#M374513

 

Could you please avoid doing that so that the resources and time of people helping you is not wasted.

 

Cheers!!!

Message 8 of 42
(7,267 Views)

Mani's World wrote:

I have been using two FPGA-RT systems to control a common rail (CR) fuel injection pump and diesel injectors on the engine  so that the engine ECU is diabled and not used at all. Let me first explain some basics of the diesel CR system so that you'll better understand your system.

 

The common rail pump generates high pump largely independent of the engine speed so that a high pressure reservoir is available (called the common rail) all the time. The pump generally has two valves called the PCV (pressure control valve) and the VCV (volume control valve) to regulate the pressure generated as you mentioned. The third valve as you said on the rail is not a valve but a rail pressure sensor which provides the feedback on the pressure in the common rail. The injector is either a solenoid or a piezo-electric injector based on the mechansim for actuation of the valve.

 

You mentioned your system is from Ford. Ford does not manufacture the fuel system it self but uses normally either a Delphi or a seimens systems. The PCV and VCV are solenoid actuated valves and the operating voltage is 0-5 Volts DC usually. 0 volts usually means minimum operning of the valves but I have seen and used pump which reverse this and make 5V as the minimum opening so you need to know the specs of your system. The pressure sensors also usually provides a 0-5V DC signal. Lets say, if your pump is rated for 1200 bar max, then the sensor normally indicates a voltage output of 4.5 ~4.8 bar to indicate this output. Moreover, the voltage corresponding to 0 bar pressure is generally 0.5 V (and not 0 volts) to provide a means of knowing if the sensor is bad at startup.

 

The encoder as you mentioned provides two signals. one is the position of the crankshaft (caleed Index A usually) and the position of the piton top dead centre (caleed Index Z usually).

 

To control the fuel injection pump, you do not need the encoder signals as the pump works in the time domain and not the geometric (crank angle) domain. To control the fuel pump, a practical application is to fix the value of the VCV to about 30 percent opening and vary the PCV to change the pressure. The 30% opening of the  VCV  ensures that the pump has enough fuel at all times to raise the pressure as well as to provide adequate cooling of the pump components (and the fuel does get hot- upto 100°C at pressures around 1500 bar). The PCV should be controlled by using a PID or a PI controller with the rail pressure sensor as the feedback. It is preferable to use a deterministic system (Real time) to ensure safety but a windows based system could also work. You just need to limit the rate of change in the setpopint as well as the maxiumum pressure while you are tuning to prevent damage and to ensure safety of the equipment and your own safety. The tuning of the PI controller can be done by hit and try but make sure that you have upper limits set to lets say, 2.5 V. once you have a stable system working, you can then increase the upper limit.

 

The case of the injector is another story. First of all, you cannot use a labview DAQ card or even FPGA to directly switch open the injectors. You would require power drives which would generate the required voltage and current (Voltage upto 200V, current upto 20Amps) to open the injectors. What you need to do is to generate a TTL pulse train based upon the encoder Index A & Z. The rising edge of the  TTL pulse should correspond to the crank angle at which you are commanding the injector to open and the width of the pulse is the duration for which you command the injector to remain open. I say commanded  because the actual opening would occur a bit later (due to injector opening delay, and the closing also takes a finite time - inertia/lag of mechanical systems).

 

To further complicate the matter, a 4-stroke engine has two revolutions per 4 strokes (180°-exhaust, 180°-intake, 180°-compression & 180°-expansion or power). so you will get 2 Index Z signals every 4 strokes. Now, the fuel injection is done towards the end ofthe compression stroke and therefore, you need some means of identifying the compression TDC or Index Z, so that you don't inject at the end of the exhaust stroke (Exhaust TDC or Index Z). One way of doing this is to have an in-cylinder pressure sensor or even better to use cam sensor which gives you a signal around compression stroke to let you know that it is the compression stroke. (a word of caution- if injecting fuel at the exhaust TDC accidently, you can damage the engine within a few cycles and that means 1~2 seconds). So identifying the compression TDC is A MUST!.

 

If you have the compression TDC identified, then you generate that TTL pulse at the desired crankangle with the desired pulsewidth and let the power drive do the rest. I would recommend at least a RT-system and preferabbly a RT-FPGA to implement this as you need to have absoulte determinism in the injection control.

 

I hope this is not that complicated as it seems and I hope this helps you.

 

Let me know if you need further help.

 

Cheers!!

 

 

 


thanks very much thats a lot ofhelp.

 

right firstly, i am not looking to run it as a normal car would. we are looking to inject about every 30secs! so the idea of safety n trial n error has been assessed. secondly, I would likr to no whats a PID? im not quite sure as well as a power drive. what do u mean by that?? is it like a power box? please could you clarify. with the injection being every 30s will it be suitable for me to run it using a windows based system? im really lost and sonfused. all the tutorials ive done are very very basic. could u recommend me any texts or site to increase my knowlege and understanding on labview in relation to my topic? thanks

 

to other users whp wanted numbers and figures

 

engin capacity 2.5l
4cylinder
speed 4000rpm mAX power 15kw at 4k rpm
volum diam pistn 0.094m stroke of piston 0.09m
clearence vol 34.66x10-6m2
weight will let u know

basically we have converted one of the cylinders to run on common rail we have put a cylinder bomb on it and the bomb maintains same compression ratio

the other 3 cyclinders run original using normal distribution pump

Message 9 of 42
(7,103 Views)

I'll restate the problem as you have outlined to make sure I'm right. The 3 cylinder operate normally with the original injection system. You have separated the 4th cylinder and are using it as a combustion bomb to study fuel injection/spray/combustion characteristics. You want to inject fuel after about every 30 seconds. Here is what you need to explain further.

 

1. Do you have a separate pump for this 1 cylinder and will the other 3 cylinders operate with the injection pump on the engine with the ECU? If that is the case, then the problem is much simplified.

2. At what point in time do you want the injection to occur after every 30 seconds or so?. If you want to inject before the start of the compression stroke (like GAsoline normally does) or you want to inject during the compression stroke (like a diesel), in either case, you need to the encoder signal to know the crank angle (engine rotational position) as well as the identification of the stroke as I wrote in my earlier post.

3. A PID is a prpoportional-integral-derivative controller. You can google PID and there is tons of information on it.

4. A power drive converts the digital pulse signal (5V TTL) into a 50-200V, upto 20Amps signal to open the injector. Any DAQ card cannot handle this much current so you need a special power drive.

5. If you have to control the pump also as you stated in your first post, then you need a fast loop rate which is difficult to get with windows based LabVIEW. I would prefer atleast a RT system.

6. I would like to see the specs for the injection pump, common rail pressure sensor; the injector and the encoder as those are what you require to develop the system.

 

Hope this makes things more clear!!

 

Cheers!!

 

PS: The best way to express your appreciation is to click on the 'Kudos'.

Message Edited by Mani's World on 01-10-2009 11:55 AM
Message 10 of 42
(7,095 Views)