Multiple Inputs - Control Logic

96 views

Matthew Timbang

Sep 22, 2022, 9:37:26 AMSep 22
to FDS and Smokeview Discussions
Hello all,

I am trying to model a mechanical smoke shaft which activates when a smoke detector is activated and temporarily turns off when pressure within the corridor is -50Pa.

Currently I have managed to activate it when a smoke detector is triggered. I am wondering if I can use another input (deadband-based) for the pressure-dependant input.

I am using PyroSim. But I am not aware of how I can use multiple inputs for a single vent.

Thanks

Matthew

Matt

Sep 22, 2022, 9:57:25 AMSep 22
to FDS and Smokeview Discussions
I did this a few years back.  I modified it a little since then.  It gives an indication of how I did it.  To provide a pressure sensitive device which say ramps down to trickle vent I used a series of separate vent surfaces next to each other, and turned each one/ off independently.  All would be 'on' when pressure difference is low, and only 1 or 2 when pressure difference is high (like when the replacement air path is closed).  I also played around with doors flapping open and closed as the pressure changed... it is possible to do, but i'd love a simpler way of doing it :).  if you find one let me know!

dr_jfloyd

Sep 22, 2022, 12:19:57 PMSep 22
to FDS and Smokeview Discussions
What I think you have asked for is:
1. A smoke detector goes off and a mechanical exhaust in a shaft starts up
2. That exhaust needs to shutoff when the pressure is -50 Pa
3. The exhaust should turn back on after a brief period of time. I take this to really mean after the pressure has dropped some amount.
4. Go back to 2.

You should be able to do this with control functions.

A deadband controller can handle being true or false based on shaft pressure. You will have to figure out what to use for the upper limit of the deadband is (-40, -30,..?). That upper limit is going to depend on leakage in the shaft. You don't want it so close to -50 that the fan is cycling every timestep but also don't want it so far away that it takes a long time to turn back on. You may need to experiment with different values.

For the vent you just need a control function that is true when there is smoke detection AND when the deadband is true.

Matthew Timbang

Sep 24, 2022, 4:46:12 PMSep 24
to FDS and Smokeview Discussions
Thank you all for the replies. I shall experiment away!

Matthew

Sep 26, 2022, 1:47:19 PMSep 26
to FDS and Smokeview Discussions
Hi,

I've had a look at Pyrosim, and it looks like I have to manually create the control function (correct me if I'm wrong!) to combine both smoke detection and deadband input. I've had a look at the FDS manual, and I'm having trouble understanding how to formulate the code.

For example (using this extract from the manual), I have this deadband control...

&SURF ID='FAN', TMP_FRONT=40., VOLUME_FLOW=-1. /
&VENT XB=-0.3,0.3,-0.3,0.3,0.0,0.0, SURF_ID='FAN', CTRL_ID='corridor' /
&DEVC ID='TC', XYZ=2.4,5.7,3.6, QUANTITY='TEMPERATURE' /
ON_BOUND='LOWER', SETPOINT=23.,27., LATCH=F/

and I want to also consider the smoke detector input (extracted from Pyrosim)...

&CTRL ID='corridor', FUNCTION_TYPE='ALL', LATCH=.TRUE., INPUT_ID='or'/
&CTRL ID='or', FUNCTION_TYPE='ANY', LATCH=.FALSE., INPUT_ID='SD','SD01'/

How would you go about formulating the code?

dr_jfloyd

Sep 26, 2022, 2:08:58 PMSep 26
to FDS and Smokeview Discussions
&CTRL ID='thermostat', FUNCTION_TYPE='DEADBAND', INPUT_ID='TC',ON_BOUND='LOWER', SETPOINT=23.,27., LATCH=F/

INPUT_ID='TC' : This is a temperature device in the example in the User's Guide. This needs to be whatever device you want to use as input to the dead band.  Your original post says you want to use pressure, so you need a device that measures pressure and that device would be the input to this control function.
ON_BOUND='LOWER': This defines when the dead band is true. LOWER is like heating in a building. You turn on the heat with the temperature drops below the lower bound and shut the heat off when the temperature rises above the upper bond. ON_BOUND='UPPER' is like air conditioning in a building. You turn on the AC when the temperature is above the upper bound and shut it off the temperature drops below the lower bound.  You don't want the fan running when the pressure drops below -50.  If you think about this in terms of heating and cooling, this is like cooling where you turn the system off at the low value.

SETPOINT=23,27:  These are the pressures you want to use.  SETPOINT(1)=-50. You will need to determine what an appropriate pressure is for SETPOINT(2).

You don't want the fan running any time the pressure is above SETPOINT(2). You only want the fan running if the pressure is above SETPOINT(2) [the dead band is true] and if there is smoke [your detection function is true].  What type of control function in FDS outputs true if both of its inputs are true?  This function would be what you use for the fan.

Matthew

Sep 26, 2022, 3:09:26 PMSep 26
to FDS and Smokeview Discussions
Thanks Jason.

I've had a go and ran the model. Hopefully should have some results tomorrow... I'll update this thread with what I've done if it works!

Matthew

Sep 27, 2022, 4:41:57 AMSep 27
to FDS and Smokeview Discussions
Model looks good!

Here's the code that I ended up using in PyroSim:

&CTRL ID='Extract Start/Stop', FUNCTION_TYPE='ALL', LATCH=.TRUE., INPUT_ID='and'/
&CTRL ID='and', FUNCTION_TYPE='ALL', LATCH=.FALSE., INPUT_ID='or','TEST1'/

&CTRL ID='or', FUNCTION_TYPE='ANY', LATCH=.FALSE., INPUT_ID='SD','SD01'/
&CTRL ID='TEST1', FUNCTION_TYPE='DEADBAND', SETPOINT=-50.0,-40.0, ON_BOUND='UPPER', LATCH=.FALSE., INPUT_ID='Corridor Pressure'/

Where SD and SD01 are smoke detectors, and TEST1 is the CTRL ID for the deadband input.

I initially wrote a slightly different code into PyroSim, but it automatically changed it to the above.

Matthew

Sep 28, 2022, 8:09:39 AMSep 28
to FDS and Smokeview Discussions
Looked at the device .csv file, and it looks like the exhaust didn't turn off when pressure dropped below -50Pa.

I think it's because the first line of code has LATCH=.TRUE. when it should be LATCH=.FALSE. so that the state can be changed more than once.