Start-Stop Fan by Temp

' 1. Rung#1 start the fan in reverse (low speed) if the ambient temp is at 29 degrees. I can change this setpoint. '

Operative word here is: REVERSE. Unfortunately that wasn't mentioned until just a few posts ago. Not in the OP. This factor needs another approach. James McQuade is certainly on to something regarding a VFD. This would be my approach, as VFD's are really good at accel and decel tasks for motors. Just a thought you may want to pursue this avenue of operation. Good luck!!
 
Here you go: the process control logic, i.e. the first four rungs, are essentially four Start-Stop circuits (cf. here) handing off control to each other; it could also be implemented as a sequence.

Toggling B3/47 to 1 will run the process model simulator, so you can watch the logic in action; the model is oversimplified, of course.

And I take no credit; it's based on what I learned a while back on the forum from this post, with a couple of bells and whistles added.
 
Last edited:
Just to make sure, when the alternate temp shuts off
the low speed reverse output at 140 degrees and After the
T4:4.TT timer times out to allow the low speed to stop. Will the High speed out turn on and run then?

Thanks again. Just wanted to make sure it would
 
Just to make sure, when the alternate temp shuts off
the low speed reverse output at 140 degrees and After the
T4:4.TT timer times out to allow the low speed to stop. Will the High speed out turn on and run then?

Thanks again. Just wanted to make sure it would


Yes, I believe the high speed out will become 1 when T4:4/TT transitions from 1 to 0, as long as, at that transition, the ambient temperature is above the [high fan setpoint N7:13].


And you're welcome.




TL;DR



To be pedantic ;), if the [low speed reverse output B3/30] is running when the [alternate temperature N7:21] reaches (is greater than or equal to) 140deg, then the [Low Speed Coast model T4:4] timer starts timing, and it is that state of T4:4/TT being 1 that actually shuts off the [low speed reverse output B3/30], because of the [XIO T4:4/TT] that is the last contact in rung 0003.


Also, I call the first four rungs Start/Stops, although rungs 0000 and 0001 with timers look like Sealed-in Coils (cf. here).


However, I still call them Start/Stops, because using only [XIC /TT] in the seal-in branch is effectively the same as using [XIC /EN] in the seal-in branch and [XIO /DN] in the main rung, which would then look like a Start/Stop.


The point is that

  • each coast model (shutoff) timer only starts when its corresponding fan speed is 1
  • once a timer starts timing,
    • it will always assign 0 its correspondng fan speed because /TT becomes 1 and the [XIO /TT] in the fan run logic becomes False
    • it will always run until the timer expires, i.e. until /TT is 0.
Neither fan speed can run while any timer is running. This does mean that when the system is first started (B3/31 transistions from 0 to 1), and none of the timers are running, then one of the fans may start immediately, depending on the temperature setpoints.



Finally, the fans turning on is dependent on the temperature behavior, and the assumptions are that

  • the [alternate temperature N7:21] will increase when [low reverse fan speed B3/30] is 1, eventually exceeding 140
  • as well as
  • the [ambient temperature N7:20] will decrease when [high fan speed B3/29] is 1, eventually going below 29.
Those are the assumptions, and I know very little about the process, and the fact that there two separate temperatures controlling this logic makes unsure what the edge cases are, so it is up to you to think about what may happen e.g.

  • if one or both temperature sensors break and return invalid data,
  • or if the operators invert the sense of the Low and High fan temperature setpoints.
So I suggest experimenting with the simulation to see if there are any unexpected behaviors. E.g. what happens if the low fan setpoint temperature that triggers the low rev fan speed is higher than the high fan setpoint temperature that triggers the high fan speed?








note that there are other approaches that may be more clear e.g. five states: 0; 1; 2; 3; 4. I.e.
0. B3/31 is 0, system is off
  1. low reverse fan speed is 1
  2. low reverse fan speed is 0, fan is coasting in reverse to a stop
  3. high fan speed is 1
  4. high fan speed is 1, fan is coasting to a stop
and then write the logic that transitions based on the current state, the temperature sensor readings and the timers.
 
Summary


"Know thy process" is astronomically more important than programming skills.


Just sayin'




Details


To follow up on some of the thoughts on my last post, I am still concerned that we don't "know thy process," so even if some code meets the snapshot of your specifications posted here, there is no guarantee it can correctly, or even safely, handle edge cases of the actual process.


For example, say the [alternate temperature] sensor, represented by N7:21 in the code, is broken, and never returns a value above 140deg when the [low rev fan speed] was 1. In that case, [low rev fan speed] would never become 0, and the actual temperature of whatever the [alt. temp.] sensor measured might continuously, even dangerously, rise past 140deg as the fan continues heating the process. One solution to this would be to add an OR branch around the GEQ on rung 0001 with a GEQ that checks the [ambient temperature N7:20] against a maximum setpoint temperature suitable for that [amb. temp.]; assuming both temperatures increase when the low rev fan is running, that would (perhaps?) start the [low speed coast model T4:4] TON timer, which would stop the low reverse fan, and protect the system from over-temperature.


There could still be a problem if both temperature sensors failed, so perhaps there should also be logic with a timer that limits how long [low rev fan speed] can be 1, and that shuts down the process if that timer is ever done, requiring operator intervention to restart e.g.


Code:
     low rev fan speed     low timeout reset
--+--------] [----------+----------]/[--------[TON T4:6]-----
  |                     |                     [...     ]
  |      T4:6/DN        |
  +--------] [----------+
and add [XIO T4:6/DN] to the stop contacts (outside the branching) on rung 0003.


N.B. that's not quite the right approach: the operator can restart the system by pressing the reset without fixing the process problem, but at least then it's not the PLC that is the problem.



heh, yet another start/stop; gotta love design patterns ;)
 
drbitboy

The temp I call "Alternate Temp for Low Speed Shutoff" is actually a "3rd stage HiHi Temp Process shutdown".
This is why I need the High speed fan to come on at 140° before the 150° shutdown SP.

What do you think the best method for programming this scenario?
1. During testing I noticed... If the "Alternate Temp for Low Speed Shutoff" gets to 140° the Low speed fan will cut off by T4:4.TT, but if the Ambient Temp stays below the Low speed setpoint. The low speed fan picks back up and runs again.

2. If the Low speed Reverse continues to run and to avoid a system shutdown at 150°. How would i add that if the "Alternate Temp for Low Speed Shutoff" gets to 140°, it will shutoff the Low Speed fan by T4:4.TT and Start the High Speed fan output even if the Low speed Ambient temp doesn't change/increase?

Thanks again for helping me
 
drbitboy

The temp I call "Alternate Temp for Low Speed Shutoff" is actually a "3rd stage HiHi Temp Process shutdown".
This is why I need the High speed fan to come on at 140° before the 150° shutdown SP.

What do you think the best method for programming this scenario?
1. During testing I noticed... If the "Alternate Temp for Low Speed Shutoff" gets to 140° the Low speed fan will cut off by T4:4.TT, but if the Ambient Temp stays below the Low speed setpoint. The low speed fan picks back up and runs again.

2. If the Low speed Reverse continues to run and to avoid a system shutdown at 150°. How would i add that if the "Alternate Temp for Low Speed Shutoff" gets to 140°, it will shutoff the Low Speed fan by T4:4.TT and Start the High Speed fan output even if the Low speed Ambient temp doesn't change/increase?

Thanks again for helping me




Hah. This is the problem with code from one who does not know thy process.


So [Ambient Temperature] is literally that: it is the temperature of the environment around the process unaffected by the running process; it is not some ambient temperature of the process that is affected by which fan is running. Is that correct? I had assumed the latter.



Also, let me know if this is also correct: this process operates in one of two operating modes:


Mode 1


When the ambient temperature (N7:20) is at or below some limit (29deg; N7:11?), the [low rev fan speed] is used to heat i.e. to raise the process temperature (N7:21), i.e.

  • When the process temperature reaches 140deg,
    • then the low rev speed needs to stop (and coast) to avoid the [HiHi Temp Process Shutdown] at 150deg.
  • When the low rev speed stops because the process temp reaches 140deg, then either
    • more likely: the process temperature will decrease on its own because the ambient temperature is low enough
    • OR
    • less likely: the high speed needs to run to bring the process temperature down to some point below 140deg.

Mode 2


When the ambient temperature (N7:20) is above that limit (29deg; N7:11?),the the [high fan speed] is used to cool the process, basically the reverse of mode 1, and either ambient conditions or the [high fand speed] used to heat the process, or at least keep it from getting too low.




Am I getting warm?









Sidebar



Also, I noticed another problem with my previous code:

  • say the low rev fan speed is 1 so it is heating the process,
  • and the operator hits the stop button accidentally,
  • in that case the coast timer would not start
  • so if the operator hits the start button immediately and the conditions were right (Alt. Temp. above high setpoint N7:13)
  • then the process would assign high fan speed to 1 while the physical fan was still coasting to a stop
 
Updated program* that should** fix the issue mentioned in the sidebar of the previous post.

* from post #17
** i.e. it's untested




Another sidebar: say the fan is coasting in either direction and the PLC loses power, or goes into PROGRAM mode and then back to RUN; the timers will reset and the fan may restart before the coasting to a stop is complete. One solution is to have a bit for each timer that is latched by /TT, and unlatched by /DN, and it is a start branch for its timer, possibly ANDed with [First pass S:1/15]; so if the PLC stops and restarts while coasting, that latched bit restarts the timer to finish the coasting to a stop.
 
Last edited:
Drbitboy

1. Your 100% correct. The ambient temp is the true outside temp of the plant.

2. The low speed and high speed is triggered by this ambient temp and the run process B3:1/15
If B3:1/15 is not running then the fans don’t run

3. But anytime when the low speed reverse fan is running due to the
low ambient Setpoint and anytime the 3rd stage (auxiliary temp shutdown) gets to 140 degrees then the low speed needs to stop by t4:4.tt & high speed fan needs to run regardless of where the ambient temp or at.

4. I tested the High speed back to Low sped & this works great.

Note:
- your right the low speed is need to blow down on the process for heat
- the low & high speed fans outputs is controlled by the outside ambient temp
- anytime the low speed fan is running and the 3rd stage (auxiliary temp) gets to 140 degrees then the Low speed needs to stop by the t4:4.tt and the high speed needs to run. This needs to happen regardless of what the ambient temp is.
- the 3rd stage temp (auxiliary temp) will never get to 140 degrees when the high speed fan is running.


Thanks again for all your help
 
Last edited:
James, are you back in the workforce? hoping to hear to the positive as l haven't seen your constructive posts. l like you are/have been on the tools and l believe in your philosophy of make it easy for the maintenance. But the more l learn about USA most of you are guessing unless you are electrical engineers, because others haven't a clue from what l have seen, least of all your government, aren't you supposed to be there to save the free world, let's hope so, as guess where the probs going to come from and it isn't Australia or New Zealand
 
Thinking about this some more, I don't think the ambient temperature matters because there is some target setpoint around which you want to keep the auxiliary temperature.


Nominally

  • when the ambient environment is "warm" (whatever that means), the auxiliary temperature will rise by itself with no fan running and need to be cooled by [high fan speed] when it gets above 140deg to avoid the 150deg shutdown.
  • when the ambient environment is "cool" (whatever that means), the auxiliary temperature will drop by itself with no fan running and need to be heated by [low rev fan speed] when it gets below some temperature below 140 to avoid process problems.
So this is a bang-bang control but "split-range" (to borrow a term from the domain of PID/continuous control). For bang-bang to work there needs to be hysteresis, either in the system or in the control system. For example, after the [high fan speed] cools the system, perhaps the coasting fan continues to cool the auxiliary temp. to 135deg before it stops, so when the fan is stopped, it will still take some time for the ambient conditions to raise the auxiliary temp. back to 140deg. And the same goes for the cooling dynamics and control.



So the problem with my existing program for this process is its dependence on ambient temperature. Yes, I understand that the ambient temperature affects whether cooling or heating will be needed, but instead of trying to make that choice based on the ambient temp. sensor, why not let the process be the sensor instead? I.e. if the auxiliary temp. gets below, say 120deg, the PLC will "know" ambient is "cool" because the process needs heating. And if the auxiliary temp. goes above 140deg, the PLC will "know" ambient is "warm" because the process needs cooling.


So the structure of the program does not change, but the temperature GEQs and LEQs that use [ambient temp. N7:20] need to change to use [auxiliary temp. N7:21] and all GEQs and LEQs need different setpoints. e.g.

  • The LEQ for [low rev fan speed] to become 1 uses a setpoint (Source B) of 120deg
  • The GEQ for stopping the low rev fan and starting the [low speed coast model] timer uses a setpoint of 130deg
  • The GEQ for [high fan speed] to become 1 uses a setpoint of 140deg
  • The LEQ for stopping the high fan speed and starting the [high speed coast model] timer uses a setpoint of 130deg.
The input setpoints' inputs (N7:10/:11 and N7:12/:13) are not needed because the process tells the PLC what they should be.


See the attached PDF. You need to adjust with the setpoints based on the real process and its dynamics.


The auxiliary simulation model's heating and cooling rates are fast enough that the outer temperature limits (120 and 140) can be exceeded during coasting after heating; set T4:20.PRE to 6 or more to prevent that.
 
Last edited:
Thanks drbitboy

- when the process is stopped. I would think during the initial startup of the run process, The fan control (Low or High) would need to be triggered by the outside ambient temp. Because the 3rd stage temp (auxiliary temp) can vary from machine.

- your initial program was spot on, but I just needed to
figure out how to make the high speed fan run after 3rd stage temp
got to 140 degrees even if the ambient temp was still below the low speed temp sp

- also good thinking on adding the Run B3:1/15 to preventing unwanted fans to run when the process is off



Is this possible?
Thanks again for all your help and time
 
Last edited:
To get the high fan speed to be 1 when the 3rd stage (aux.) temp is 140deg, or more: add an OR of the GEQ comparing [aux.temp.] to 140 around the [ambient temp.] GEQ in rung 0002.


I'll post the code shortly, but you should be able to figure it out yourself: [high fan speed] is 1 if all of the instructions downstream of the branches on rung 0002 are true, AND, within the branches on the left of rung 0002,

  1. [ambient temp. N7:20] is LEQ [hi fan setpoint N7:13]
  2. OR (2) [aux. temp. N7:21] is GEQ 140deg
  3. OR (3) [high fan speed B3/29] was already 1.

However, notice that if the [aux. temp.] reaches 140deg because the [low rev fan speed] was 1 and was heating the process, then [Low speed coast model] timer (rung 0001) will be timing for 60s, and only after that timer expires will the new logic from the previous para. be allowed to assign a 1 to [high fan speed]. So we might want to lower the GEQ setpoint trigger on rung 0001 to some point below 140deg so the low rev fan is, or will soon be, stopped when the aux. temp reaches 140deg and the high fan speed needs to run.


Also note that oeprators who enter mistaken or invalid values for the low and high fan setpoints will make the logic control the process in a manner that may be less than ideal: the PLC may not always do what you want it to do, but it will always do exactly what you told it to do.




And again, I still think the ambient temperatures are irrelevant; the fact that the setpoint triggers are user inputs suggests to me that ambient temperatures are not the right control system inputs. What is the PLC actually trying to control? What is this process actually doing? Is it a cooling tower? A feed preheater? A distillation column condenser?
 
Last edited:
I still think it's the wrong way to do this, but here it is: ambient temperature controlled, with special cases for high auxiliary temperatures: low rev fan off if aux. temp. is 135 or more; hi fan on if aux. temp. is 140 or more.


N.B. The coast timers' .PREsets are 10s and 5s instead of the OP 60s and 30s; I did that for testing with the simulation model. So you will need to fix that.



The aux. temp. model logic has been gussied up a bit:

  • ambient adds or subtracts 0.75deg/s
  • low rev. fan adds 1.0deg/s
  • high fan subtracts 1.0deg/s
  • aux. temp cannot go much below 120deg; that is probably not realistic but then neither is the rest of the model and it saves sitting around waiting for the temperature to come back from some ridiculously low value.
The interesting thing to do is to assign a value to the ambient temperature that is less than the limit-checked low fan setpoint (N7:11), so the low rev fan will add 1deg/s while the ambient subtracts 0.75deg/s, net will be adding 0.25deg/s. Then, when the low rev fan is on, assign a value to the amb. temp. that is greater than the limit-checked high fan setpoint (N7:13), so the ambient contribution adds 0.75deg/s, for a net that adds 1.75deg/s. The low rev fan will go off at an aux. temp. of 135deg, and that aux. temp. will continue to climb at 0.75deg/s from the ambient. When aux. temp. reaches 140deg, the low rev fan coast model timer has not expired, so it continues to climb and gets to almost 150deg before that low coast timer expires and the high fan comes on to save the day.


Anyway, my point is that those aux. temp. GEQs limits need to be set carefully.


In reality, there will be noise in the temperature signal, so if it is bouncing around the Lo/Hi setpoints, the process could turn on either motor briefly followed by a long time in one of the coast timers.
 
Last edited:

Similar Topics

Hello I am trying to make a program work with a sqo instruction .The process has 5 steps ,and a starting step of zero.There should be 8 sec...
Replies
17
Views
1,048
Good morning to everyone on the forum and happy new year. I'm trying to use the following functions in sysmac studio, because I need to enable one...
Replies
1
Views
324
Good Morning , I would like to start a Powerflex 525 with a N.O. Start Pushbutton , and when the N.O. Start Pushbutton is released I would...
Replies
3
Views
1,656
Hello, I am trying to detect when the PLC changes from STOP to START mode. This can be considered an edge case scenario, but I would to analyze...
Replies
4
Views
1,565
Hello Everyone! It has been a while since I used the method of drawing a state diagram, converting that to Boolean algebra, and translating that...
Replies
13
Views
2,963
Back
Top Bottom