Compressor Start Sequencer

alendi

Member
Join Date
Aug 2005
Location
San Casimiro, Aragua
Posts
36
Hello everyone, stay safe at home, please.

I'm looking for a solution in WPLSoft Delta in order to control 3 compressors boosters, attached you'll find a little true table showing compressors behavior, can anyone please help me with an idea how to proceed with WPLSoft?

I'll use a 4-20 ma pressure sensor, so PLC will use one analog input, also want to use a screen to show pressure value, any suggestion?

Thanks.

Compressors.jpg
 
It looks like,

  • when the pressure is below 300 (350? 400?), you want the compressor that has been turned off for the longest to be turned on next
  • when the pressure is above 400, you want the compressor that has been turned on for the longest to be turned off next
Is that correct?
 
Last edited:
Hi Drbitboy, Thanks for answer.

Yes, you're right,

when pressure is under 300, means since system start moment, all compressors are on to reach at least 300 PSI, over 300PSI one of the compressor can turn off and keep 2 compressors running till 400 PSI are reached, now the differential is more or less 50 PSI, the machine begins in production so pressure starts to drop I think it can work in the following order, if you have better suggestion will be welcomed.

When pressure is between 350 and 400 PSI only 2 compressors will run, following the true table to sequence the functioning each up and down pressure.
If pressure drop below 300 PSI all the 3 compressors will run.
If the pressure is over 400 PSI only 1 compressor will run, but if pressure do not drop during 5 minutes all compressor will stop.

The sequence in the table is to make all compressors work the same amount of time.

Any suggestion will be welcomed, Thanks again.
 
Create two queues (FIFO stacks): one for compressors that are off; the other for compressers that are on.



Initially you put all three compressors, represented by the numbers 0, 1 and 2, onto the off queue.



Every scan you check

  • the pressure,
  • how long since the last compressor was turned on
  • how long since the last compressor was turned off
and, based on some combination of those checks, do one of three things:


  • begin a "start compressor" sequence
    • pop the bottom item (compressor#) from the off queue
      • FFU instruction on the off queue
      • this will be the compressor number to start
    • push that item onto the top of on queue
      • FFL instruction on the on queue
    • start that compressor#, along with any timers
  • begin a "stop compressor" sequence
    • Similar to the "start compressor" sequence
      • FFU on the on queue
      • FFL on the off queue
      • stop that compressor#, along with any timers
  • nothing
    • E.g. process is in start or stop sequence
    • or process is waiting for a timer to complete
You will need logic to deal with the edge case when a queue is empty but the code wants to pull a compressor number from it.
 
Thanks Drbitboy

It seems logical but I can't represent this idea in a PLC Software, I'll check Delta's handbooks to find how make this ladder there, Thanks again and I'll send you my results.
 
I used to do this all the time, but no longer have access to the code.

Each compressor has a number C=1, 2, 3. (Starting at zero makes my head hurt.)

Each sequence has a variable number: Lead compressor = SEQ1, Lag compressor = SEQ2, Standby compressor = SEQ 3

If C2 is to be the lead compressor then SQ1=2, etc. When it is time to shut one down set SEQ1 = SEQ2 and SEQ2 = SEQ3.

To avoid doubling up calculate SEQ3 = 6-SEQ2-SEQ1

Then if three are running shut of SEQ3. If two are running shut down SEQ2. When it is time to start another compressor use the next one in the sequence.
 
Actually this algorithm may not guarantee balanced run time over many cycles (although it does try;)).


That said, Tom's approach is simpler to implement than a pair of FIFOs.



That said, a possibly simpler approach (that may reduce to the same thing) is to have two ints (next_on; next_off) an array of four bits (on_bits), an array of four bits (change_bits), and an integer (choice)


On the first pass, set next_on=1 and next_off=1; reset/unlatch all [on_bits] and [change_bits] to 0 (all compressors are off).


After the first pass actions, there are two sections to the code:


A) Set the choice integer


A.1) As noted before, the preliminary logic will evaluate the inputs and make one of three choices:

  1. do nothing - set choice to 1
  2. turn on a next_on compressor - set choice to 2
  3. turn off a compressor - set choice to 3



B) Respond to the choice integer


B.1) If choice is 2 (turn on next compressor):

  • if on_bits[next_on] is 1, do nothing because all three compressors are already on
  • if on_bits[next_on] is 0,
    • Set/Latch change_bits[next_on] to 1
    • Initiate start of compressor next_on
    • add 1 to next_on
    • if next_on is 3, then set next_on to 1

B.2) If choice is 1 (turn off next compressor):
  • if on_bits[next_off] is 0, do nothing because all three compressors are already off
  • if on_bits[next_off] is 1,
    • Reset/unlatch change_bits[next_off] to 0
    • Initiate stop of compressor next_off
    • add 1 to next_off
    • if next_off is 3, then set next_off to 1
B.3) If choice is 3, do nothing




But again, this does not guarantee equal accumulated run time.
 
Actually this algorithm may not guarantee balanced run time over many cycles (although it does try;)).

Absolutely correct.

I guess I've never been convinced that equal run time was important. You want some run time on all, but if they aren't equal so what. A significant portion of wear and tear occurs at starting, and this method should provide fairly equal starts.
 
I wrote this code when we replaced the propriety electronic controller on a 6 pump pressure cleaner.
It changes the start machine and stops and starts pumps according to the varying outlet pressure.
 
Thanks to all, You're giving me a good understanding of the logic required.

I don't know if timers are required, just to initial start to avoid excessive power consumption, all start/stops will be controlled with a single pressure switch, also I'm looking for 4-20ma analog pressure sensor to get a better control rather than single on/off pressure switch, I think using values can control the motors.

I'm reading now about FIFO command and how to program it in WPLSoft, later I'll post my results.

1) Pressure range 0 to 300PSI all three compressors will run.
2) Pressure range over 400 PSI a single compressor will run, if the pressure keeps over 400 PSI more than 5 min. then all compressors will stop.
3) When pressure range is between 350 and 400 PSI sequence will control compressor following the above table, means:

a) press 350 = C1=ON - C2=ON - C3=OFF
b) press 400 = C1=OFF - C2=ON - C3=OFF
c) press 350 = C1=OFF - C2=ON - C3=ON
d) press 400 = C1=OFF - C2=OFF - C3=ON
e) press 350 = C1=ON - C2=OFF - C3=ON
f) press 400 = C1=ON - C2=OFF - C3=OFF
RETURN TO B)

Thanks sparksy@gage for file, I can't see it because is RSlogix, I've WPLSoft (Delta).


Thanks again for your comments.
 
Last edited:
Not the way I would run compressors you have, however, an alternative possibility to your question is to use a step sequencer, i.e. steps 1, 2, 3 start the pumps
steps 4 to 11 do the switching (the reason for the extra steps is that you have transitions that are essentially the same i.e. 400 > 350 & 350 >400 more than once build a step sequencer 1,2,3 are easy just timers to step on, others look at the pressure to switch from one state to another so it would be steps 4 to 11, step 12 would set the sequencer back to 5 Use the sequence word compares to the steps to run the motors.
 
XPS copy of RSS code for Delta pressure cleaner mod.The unit has 6 high pressure pumps to produce high pressure water at high volume for sanitation of food production gear.
It varies the pump that starts each new start and switches on the pumps as the pressure drops off and starts the pumps as the pressure rises above the high setpoint.

This was originally controlled by a circuit board that failed 1 time too many and I replaced it with this code.

Hope XPS is ok, havent worked out how to convert it to PDF.
 
Hi everyone

Thanks again, I'm getting ideas from you, thanks sparksy@gage for PDF, it open a new view of the problem, I'll update advances soon. Thanks again.

So, I'll use a sequencer, like a bitshift command, each on/off change determined by values 350/400 psi will add a bit to 2 positions in the bitshift, 3 positions in total, bitshift will be advanced every transition too, if on to off step doesn't occurs in some amount of time so all compressors will stop and standby till pressure drop to 350 again, I was making some test simulator in domore designer.

Sorry, it can't be a bitshift command, is a rotary drum command, so last bit in row return to 1st place with every rotation.

Thanks a lot.
 

Similar Topics

I Am looking to get ahold of the modbus map for an air compressor. I HAve emailed the vendor as well, just wondering if any of my friends here...
Replies
1
Views
117
Got a customer with a Chinese air compressor, 240V, 15HP. The present control of the entire system is inside their VFD. It controls the motor...
Replies
2
Views
1,053
Hey All, I've got a Sullair LS-16 (V160) compressor with the 3-line Supervisor controller (identical to this...
Replies
9
Views
2,466
Hi folks, i'm pretty much new on this topic and i need some help with the dual compressor part 3 and 4, currently working on part 3 i cant make...
Replies
20
Views
5,134
Hi everyone, Working on a project that has 2 Metering Pumps that are Pneumatically actuated. I need to add an Air Compressor to the system and I...
Replies
10
Views
1,898
Back
Top Bottom