RAMP Function Block does not work when I use Time parameter

Hi Folks

I am using the RAMP function to close my PID controller to 0% in 20 seconds

The RAMP output is connected to Track_Val of PID controller.

See the attached configuration. When I am using the time function, the ramp function does not work and the controller does not go to 0%.

When I am using the rate function and set a particular Rate of closing in the RAMP function block, the controller does go to 0%

I am attaching my Module configuration.

Has anyone faced a similar issue before wherein the RAMP function works by selecting the Rate parameter but not with Time parameter?

  • Books Online says the following about the RAMP block, "When the RAMP_TYPE, IN, or END_VALUE parameters change during the execution of the block, the ramp is reset with the new values." I see that you have IN connected to PID1/OUT. IN is changing every scan, so the RAMP block is resetting every scan, attempting to ramp from the current IN to zero in 20 seconds. Somehow you have to freeze the value of IN while the ramp is enabled.

    I had a similar problem except that I was ramping the PID setpoint. I did not have to track the current setpoint, so I disconnected RAMP1/IN and set RAMP1/TRK_IN_D = False. The OUT ramped to END_VALUE just fine, but unfortunately the status of OUT is BadNotConnected when IN is not connected. The PID would not accept a setpoint with a bad status, but I got around it by using an action block to write only the CV. If the RAMP block is in another module, you can output to a floating point parameter without status and read that parameter with an external reference parameter in the module being ramped. That way, the bad status can't pass through.

  • In reply to gamella:

    Hi Gamella

    You are right, one way is to do it the way you have configured, another is by Using ACTION block and break the wired connection and write the value to RAMP IN only when RAMP is not enabled,

    which I used in my case as I need to RAMP the TRACK_IN_D of PID block so kept my configuration simple.

    Thanks for the help.

  • In reply to Mark Bendele:

    Yes the Ramp does reset the time when any of the values change that Mark has indicated in his comment and because of this method you should consider always using Rate instead of Time as it doesn't reset if any of the values change. It will always be the same rate (Slope of the output ramp remains the same always regardless of the changes) instead of rate changing because of where you are starting from (Ramp from 50 to 0 in 20 sec vs 100 to 0 in 20 sec).

    You could change the configuration to remove the wire to IN parameter, only update the IN when the ramp is not active by logic (Make sure the Status is GoodNonCascade) and keep using time if you want but remember the Rate would be different depending on where the starting point of the ramp is.
  • In reply to Matt Stoner:

    Hi Matt, Thanks for the reply. Thisis what I precisely did, update the IN when the ramp is not active by logic. Thanks