Ramp/Soak (RMPS)

This information applies to the
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370,
GuardLogix
5570,
Compact GuardLogix
5380,
CompactLogix
5380,
CompactLogix
5480,
ControlLogix
5580, and
GuardLogix
5580 controllers.
The Ramp/Soak (RMPS) instruction provides for a number of segments of alternating ramp and soak periods.
Available Languages
Ladder Diagram
This instruction is not available in ladder diagram logic.
Function Block
RMPS_FB_avail_v31
Structured Text
RMPS(RMPS_tag,RampValue,SoakValue,SoakTime);
Operands
Function Block
Operand
Type
Format
Description
RMPS tag
RAMP_SOAK
structure
RMPS structure
RampValue
REAL
array
Ramp Value array. Enter a ramp value for each segment (0 to NumberOfSegs-1). Ramp values are entered as time in minutes or as a rate in units/minute. The TimeRate parameter reflects which method is used to specify the ramp. If a ramp value is invalid, the instruction sets the appropriate bit in Status and changes to Operator Manual or Program Hold mode. The array must be at least as large as NumberOfSegs.
Valid = 0.0 to maximum positive float
SoakValue
REAL
array
Soak Value array. Enter a soak value for each segment (0 to NumberOfSegs-1). The array must be at least as large as NumberOfSegs.
Valid = any float
SoakTime
REAL
array
Soak Time array. Enter a soak time for each segment (0 to NumberOfSegs-1). Soak times are entered in minutes. If a soak value is invalid, the instruction sets the appropriate bit in Status and changes to Operator Manual or Program Hold mode. The array must be at least as large as NumberOfSegs.
Valid = 0.0 to maximum positive float
Structured Text
Operand
Type
Format
Description
RMPS tag
RAMP_SOAK
structure
RMPS structure
RampValue
REAL
array
Ramp Value array. Enter a ramp value for each segment (0 to NumberOfSegs-1). Ramp values are entered as time in minutes or as a rate in units/minute. The TimeRate parameter reflects which method is used to specify the ramp. If a ramp value is invalid, the instruction sets the appropriate bit in Status and changes to Operator Manual or Program Hold mode. The array must be at least as large as NumberOfSegs.
Valid = 0.0 to maximum positive float
SoakValue
REAL
array
Soak Value array. Enter a soak value for each segment (0 to NumberOfSegs-1). The array must be at least as large as NumberOfSegs.
Valid = any float
SoakTime
REAL
array
Soak Time array. Enter a soak time for each segment (0 to NumberOfSegs-1). Soak times are entered in minutes. If a soak value is invalid, the instruction sets the appropriate bit in Status and changes to Operator Manual or Program Hold mode. The array must be at least as large as NumberOfSegs.
Valid = 0.0 to maximum positive float
See
Structured Text Syntax
for more information on the syntax of expressions within structured text.
RMPS Structure
Specify a unique RMPS structure for each instruction.
Input Parameter
Data Type
Description
EnableIn
BOOL
Enable input. If false, the instruction does not execute and outputs are not updated.
Default is true.
PV
REAL
The scaled analog temperature signal input to the instruction.
Valid = any float
Default = 0.0
PVFault
BOOL
Bad health indicator of PV. If true, the input is invalid, the instruction is placed in Program Hold or Operator Manual mode, and the instruction sets the appropriate bit in Status.
Default is false.
NumberOfSegs
DINT
Number of segments. Specify the number of ramp/soak segments used by the instruction. The arrays for RampValue, SoakValue, and SoakTime must be at least as large as NumberOfSegs. If this value is invalid, the instruction is placed into Operator Manual or Program Hold mode and the instruction sets the appropriate bit in Status.
Valid = 1 to (minimum size of RampValue, SoakValue, or SoakTime arrays)
Default = 1
ManHoldAftInit
BOOL
Manual/Hold after initialization. If true, the ramp/soak is in Operator Manual or Program Hold mode after initialization completes. Otherwise, the ramp/soak remains is in its previous mode after initialization completes.
Default is false.
CyclicSingle
BOOL
Cyclic/single execution. True for cyclic action or false for single action. Cyclic action continuously repeats the ramp/soak profile. Single action performs the ramp/ soak profile once and then stops.
Default is false.
TimeRate
BOOL
Time/rate ramp value configuration. True if the RampValue parameters are entered as a time in minutes to reach the soak temperature. False if the RampValue parameters are entered as a rate in units/minute.
Default is false.
GuarRamp
BOOL
Guaranteed ramp. If true and the instruction is in Auto, ramping is temporarily suspended if the PV differs from the Output by more than RampDeadband.
Default is cleared.
RampDeadband
REAL
Guaranteed ramp deadband. Specify the amount in engineering units that PV is allowed to differ from the output when GuarRamp is on. If this value is invalid, the instruction sets RampDeadband = 0.0 and the instruction sets the appropriate bit in Status.
Valid = any float Greater than or equal to 0.0
Default = 0.0
GuarSoak
BOOL
Guaranteed soak. If true and the instruction is in auto, the soak timer is cleared if the PV differs from the Output by more than SoakDeadband.
Default is false.
SoakDeadband
REAL
Guaranteed soak deadband. Specify the amount in engineering units that the PV is allowed to differ from the output when GuarSoak is on. If this value is invalid, the instruction sets SoakDeadband = 0.0 and the instruction sets the appropriate bit in Status.
Valid = any float Greater than or equal to 0.0
Default = 0.0
CurrentSegProg
DINT
Current segment program. The user program writes a requested value for the CurrentSeg into this input. This value is used if the ramp/soak is in Program Manual mode. If this value is invalid, the instruction sets the appropriate bit in Status.
Valid = 0 to NumberOfSegs-1
Default = 0
OutProg
REAL
Output program. The user program writes a requested value for the Out into this input. This value is used as the Out when the ramp/soak is in Program Manual mode.
Valid = any float
Default = 0.0
SoakTimeProg
REAL
Soak time program. The user program writes a requested value for the SoakTimeLeft into this input. This value is used if the ramp/soak is in Program Manual mode. If this value is invalid, the instruction sets the appropriate bit in Status.
Valid = 0.0 to maximum positive float
Default = 0.0
CurrentSegOper
DINT
Current segment operator. The operator interface writes a requested value for the CurrentSeg into this input. This value is used if the ramp/soak is in Operator Manual mode. If this value is invalid, the instruction sets the appropriate bit in Status.
Valid = 0 to NumberOfSegs-1
Default = 0
OutOper
REAL
Output operator. The operator interface writes a requested value for the Out into this input. This value is used as the Out when the ramp/soak is in Operator Manual mode.
Valid = any float
Default = 0.0
SoakTimeOper
REAL
Soak time operator. The operator interface writes a requested value for the SoakTimeLeft into this input. This value is used if the ramp/soak is in Operator Manual mode. If this value is invalid, the instruction sets the appropriate bit in Status.
Valid = 0.0 to maximum positive float
Default = 0.0
ProgProgReq
BOOL
Program program request. Set to true by the user program to request Program control. Ignored if ProgOperReq is true. Holding this true and ProgOperReq false locks the instruction in Program control.
Default is false.
ProgOperReq
BOOL
Program operator request. Set to true by the user program to request Operator control. Holding this true locks the instruction in Operator control.
Default is false.
ProgAutoReq
BOOL
Program auto mode request. Set to true by the user program to request the ramp/soak to enter Auto mode. Ignored if the loop is in Operator control, if ProgManualReq is true, or if ProgHoldReq is true.
Default is false.
ProgManualReq
BOOL
Program manual mode request. Set to true by the user program to request the ramp/soak to enter Manual mode. Ignored if the ramp/soak is in Operator control or if ProgHoldReq is true.
Default is false.
ProgHoldReq
BOOL
Program hold mode request. Set to true by the user program to request to stop the ramp/ soak without changing the Out, CurrentSeg, or SoakTimeLeft. Also useful when a PID loop getting its setpoint from the ramp/soak leaves cascade. An operator can accomplish the same thing by placing the ramp/soak into Operator Manual mode.
Default is false.
OperProgReq
BOOL
Operator program request. Set to true by the operator interface to request Program control. Ignored if ProgOperReq is true. The instruction clears this input to false.
Default is false.
OperOperReq
BOOL
Operator operator request. Set to true by the operator interface to request Operator control. Ignored if ProgProgReq is true and ProgOperReq is false. The instruction clears this input to false.
Default is false.
OperAutoReq
BOOL
Operator auto mode request. Set to true by the operator interface to request the ramp/soak to enter Auto mode. Ignored if the loop is in Program control or if OperManualReq is true. The instruction clears this input to false.
Default is false.
OperManualReq
BOOL
Operator manual mode request. Set to true by the operator interface to request the ramp/soak to enter Manual mode. Ignored if the loop is in Program control. The instruction clears this input to false.
Default is false.
Initialize
BOOL
Initialize program and operator values. When true and in manual, the instruction sets CurrentSegProg = 0, CurrentSegOper = 0, SoakTimeProg = SoakTime[0], and SoakTimeOper = SoakTime[0]. Initialize is ignored when in Auto or Hold mode. The instruction clears this parameter to false.
Default is false.
ProgValueReset
BOOL
Reset program control values. When true, the instruction clears ProgProgReq, ProgOperReq, ProgAutoReq, ProgHoldReq, and ProgManualReq to false.
Default is false.
Output Parameter
Data Type
Description
EnableOut
BOOL
Indicates if instruction is enabled. Cleared to false if Out overflows.
Out
REAL
The output of the ramp/soak instruction.
CurrentSeg
DINT
Current segment number. Displays the current segment number in the ramp/soak cycle. Segments start numbering at 0.
SoakTimeLeft
REAL
Soak time left. Displays the soak time remaining for the current soak.
GuarRampOn
BOOL
Guaranteed ramp status. Set to true if the Guaranteed Ramp feature is in use and the ramp is temporarily suspended because the PV differs from the output by more than the RampDeadband.
GuarSoakOn
BOOL
Guaranteed soak status. Set to true if the Guaranteed Soak feature is in use and the soak timer is cleared because the PV differs from the output by more than the SoakDeadband.
ProgOper
BOOL
Program/Operator control indicator. True when in Program control. False when in Operator control.
Auto
BOOL
Auto mode. True when the ramp/soak is in Program Auto or Operator Auto mode.
Manual
BOOL
Manual mode. True when the ramp/soak is in Program Manual or Operator Manual mode.
Hold
BOOL
Hold mode. True when the ramp/soak is in program Hold mode.
Status
DINT
Status of the function block.
InstructFault (Status.0)
BOOL
The instruction detected one of the following execution errors. This is not a minor or major controller error. Check the remaining status bits to determine what occurred.
PVFaulted (Status.1)
BOOL
PVHealth is bad.
NumberOfSegsInv (Status.2)
BOOL
The NumberOfSegs value is invalid value or is not compatible with an array size.
RampDeadbandInv (Status.3)
BOOL
Invalid RampDeadband value.
SoakDeadbandInv (Status.4)
BOOL
Invalid SoakDeadband value.
CurrSegProgInv (Status.5)
BOOL
Invalid CurrSegProg value.
SoakTimeProgInv (Status.6)
BOOL
Invalid SoakTimeProg value.
CurrSegOperInv (Status.7)
BOOL
Invalid CurrSegOper value.
SoakTimeOperInv (Status.8)
BOOL
Invalid SoakTimeOper value.
RampValueInv (Status.9)
BOOL
Invalid RampValue value.
SoakTimeInv (Status.10)
BOOL
Invalid SoakTime value
Description
The RMPS instruction is typically used to provide a temperature profile in a batch heating process. The output of this instruction is typically the input to the setpoint of a PID loop.
Whenever the value computed for the output is invalid, NAN, or Plus or Minus sign INF, the instruction sets Out = the invalid value and sets the math overflow status flag. The internal parameters are not updated. In each subsequent scan, the output is computed using the internal parameters from the last scan when the output was valid.
Monitoring the RMPS Instruction
There is an operator faceplate available for the RMPS instruction.
Affects Math Status Flags
No
Major/Minor Faults
None specific to this instruction. See
Common Attributes
for operand-related faults.
Execution
Function Block
Condition/State
Action Taken
Prescan
EnableIn and EnableOut bits are cleared to false.
Tag.EnableIn is false
EnableIn and EnableOut bits are cleared to false.
Tag.EnableIn is true
EnableIn and EnableOut bits are set to true.
The instruction executes.
Instruction first run
Clear CurrentSeg to 0.
Mode is set to operator manual mode.
SoakTimeProg and SoakTimeOper are set to SoakTime[0] if SoakTime[0] is valid.
Instruction first scan
All the operator request inputs are cleared to false.
If ProgValueReset is true, all the program request inputs are cleared to false.
The operator control mode is set to manual mode if the current mode is hold.
Postscan
EnableIn and EnableOut bits are cleared to false.
Structured Text
Condition/State
Action Taken
Prescan
See Prescan in the Function Block table.
Normal Execution
See Tag.EnableIn is true in the Function Block table.
Postscan
See Postscan in the Function Block table.
Initial Mode Applied on Instruction First Scan
The following table shows the ending control based on the program request inputs.
Control at Start of First Scan
ProgOperReq
ProgProgReq
ProgValueReset
FirstRun
Control at End of First Scan
Operator Control
false
true
false
na
Program Control
na
false
na
na
Operator Control
Program Control
true
Na
false
false
Operator Control
na
Na
true
true
Operator Control
false
false
false
true
Operator Control
false
true
false
na
Program Control
na
Na
true
false
Program Control
false
false
false
false
Program Control
The following table shows the ending control based on the Manual, Auto, and Hold mode requests.
Control at Start of First Scan
Oper
Auto
Req
Oper
Man
Req
Prog
Auto
Req
Prog
Man
Req
Prog
Hold
Req
Man
Hold
AftInit
Prog
Value
Reset
First
Run
Control at End
of First Scan
Operator Control
na
na
na
na
na
false
na
false
Operator Current mode
na
na
na
na
na
na
na
Operator Manual mode
na
na
na
na
na
true
na
na
Program Control
na
na
false
false
false
false
na
false
Program Current mode
na
na
na
na
na
false
true
false
na
na
true
false
false
false
false
na
Program Auto mode
na
na
na
true
false
false
false
na
Program Manual mode
na
na
na
na
true
false
false
na
Program Hold mode
na
na
na
na
na
true
na
na
Example
In this example, the RMPS instruction drives the setpoint of a PIDE instruction. When the PIDE instruction is in Cascade/Ratio mode, the output of the RMPS instruction is used as the setpoint. The PV to the PIDE instruction can be optionally fed into the PV input of the RMPS instruction if you want to use guaranteed ramping and/or guaranteed soaking.
In this example, the AutoclaveRSSoakValue, AutoclaveRSSoakTime, and AutoclaveRSRampValue arrays are REAL arrays with 10 elements to allow up to a 10 segment RMPS profile.
Function Block
RMPS_FB_ex_v31
Switching Between Program Control and Operator Control
The RMPS instruction can be controlled by either a user program or through an operator interface. Control can be changed at any time.
RMPS Switch between
(1) You can lock the instruction in Operator control by leaving ProgOperReq to true.
(2) You can lock the instruction in Program control by leaving ProgProgReq to true while ProgOperReq is false.
When transitioning from Operator control to Program control while the ProgAutoReq, ProgManualReq, and ProgHoldReq inputs are false, the mode is determined as follows:
If the instruction was in Operator Auto mode, then the transition is to Program Auto mode.
If the instruction was in Operator Manual mode, then the transition is to Program Manual mode.
When transitioning from Program control to Operator control while the OperAutoReq and OperManualReq inputs are false, the mode is determined as follows:
If the instruction was in Program Auto mode, then the transition is to Operator Auto mode.
If the instruction was in Program Manual or Program Hold mode, then the transition is to Operator Manual mode.
Program Control
The following diagram shows how the RMPS instruction operates when in Program control.
RPMS_Program Control
(1) In single (non-cyclic) execution, you must toggle ProgAutoReq from false to true if one execution of the ramp/soak profile is complete and you want another execution of the ramp/soak profile.
(2) When the instruction is configured for single execution, and the Auto mode Ramp-Soak profile completes, the instruction transitions to Hold mode.
(3) The instruction is placed in Hold mode if PVFaulted is true or any of the following inputs are invalid: NumberOfSegs, CurrentSegProg, or SoakTimeProg.
The following table describes the possible Program modes.
Mode
Description
Program Auto Mode
While in Auto mode, the instruction sequentially executes the ramp/ soak profile.
Program Manual Mode
While in Manual mode the user program directly controls the instruction’s Out. The CurrentSegProg, SoakTimeProg, and OutProg inputs are transferred to the CurrentSeg, SoakTimeLeft, and Out outputs. When the instruction is placed in auto mode, the ramp/soak function resumes with the values last input from the user program. CurrentSegProg and SoakTimeProg are not transferred if they are invalid.
To facilitate a "bumpless" transition into Manual mode, the CurrentSegProg, SoakTimeProg, and OutProg inputs are continuously updated to the current values of CurrentSeg, SoakTimeLeft, and Out when ProgValueReset is set and the instruction is not in Program Manual mode.
Program Hold Mode
While in Hold mode, the instruction’s outputs are maintained at their current values. If in this mode when ProgOperReq is set to change to Operator control, the instruction changes to Operator Manual mode.
Operator Control
The following diagram shows how the RMPS instruction operates when in Operator control.
RPMS_Operator Control
(1) When the instruction is configured for Single Execution, and the Auto mode ramp/soak profile completes, the instruction transitions to manual mode.
(2) The instruction is placed in Manual mode if PVFaulted is true or any of the following inputs are invalid: NumberOfSegs, CurrentSegOper, or SoakTimeOper.
The following table describes the possible Operator modes.
Mode
Description
Operator Auto Mode
While in Auto mode, the instruction sequentially executes the ramp/ soak profile.
Operator Manual Mode
While in Manual mode the operator directly controls the instruction’s Out. The CurrentSegOper, SoakTimeOper, and OutOper inputs are transferred to the CurrentSeg, SoakTimeLeft, and Out outputs. When the instruction is placed in Auto mode, the ramp/soak function resumes with the values last input from the operator. CurrentSegOper and SoakTimeOper are not transferred if they are invalid.
To facilitate a "bumpless" transition into Manual mode, the CurrentSegOper, SoakTimeOper, and OutOper inputs are continuously updated to the current values of CurrentSeg, SoakTimeLeft, and Out whenever the instruction is not in Operator Manual mode.
Executing the Ramp/Soak Profile
The following diagram illustrates how the RMPS instruction executes the ramp/soak profile.
RPMS_executing ramp soak profile
(1) The Ramp is complete when Out = SoakValue. If, during ramp execution, Out > SoakValue, Out is limited to SoakValue.
(2) Soaking is complete when Out is held for the amount of time specified in the current segment’s SoakTime. If the segment executed was not the last segment, CurrentSeg increments by one.
(3) Soaking has completed for the last programmed segment and the instruction is configured for cyclic execution. The instruction sets CurrentSeg = 0.
(4) Soaking has completed for the last programmed segment and the instruction is configured for single execution.
(5) When returning to Auto mode, the instruction determines if ramping or soaking resumes. What to do next depends on the values of Out, SoakTimeLeft, and the SoakValue of the current segment. If Out = SoakValue for the current segment, and SoakTimeLeft = 0, then the current segment has completed and the next segment starts.
Ramping
The ramp cycle ramps Out from the previous segment’s SoakValue to the current segment’s SoakValue. The time in which the ramp is traversed is defined by the RampValue parameters.
Ramping is positive if Out < target SoakValue of the current segment. If the ramp equation calculates a new Out which exceeds the target SoakValue, the Out is set to the target SoakValue.
Ramping is negative if Out > the target SoakValue of the current segment. If the ramp equation calculates a new Out which is less than the target SoakValue, the Out is set to the target SoakValue.
Each segment has a ramp value. You have the option of programming the ramp in units of time or rate. All segments must be programmed in the same units. The following table describes the ramping options:
Parameter
Description
Time-based ramping
TimeRate is set to true for time-based ramping (in minutes)
The rate of change for the current segment is calculated and either added or subtracted to Out until Out reaches the current segment’s soak value. In the following equation, DeltaT is the elapsed time in minutes since the instruction last executed.
RPMS time-based ramping
Where RampStart is the value of Out at the start of the Current Segment.
Rate-based ramping
TimeRate is cleared to false for rate-based ramping (in units/minute)
The programmed rate of change is either added or subtracted to Out until Out reaches the current segment’s soak value. In the following equation, DeltaT is the elapsed time in minutes since the instruction last executed.
RPMS_rated based ramping
Guaranteed Ramping
Set the input GuarRamp to true to enable guaranteed ramping. When enabled, the instruction monitors the difference between Out and PV. If the difference is outside of the programmed RampDeadband, the output is left unchanged until the difference between PV and Out are within the deadband. The output GuarRampOn is set to true whenever Out is held due to guaranteed ramping being in effect.
Soaking
Soaking is the amount of time the block output is to remain unchanged until the next ramp-soak segment is started. The soak cycle holds the output at the SoakValue for a programmed amount of time before proceeding to the next segment. The amount of time the output is to soak is programmed in the SoakTime parameters.
Each segment has a SoakValue and SoakTime. Soaking begins when Out is ramped to the current segment’s SoakValue. SoakTimeLeft represents the time in minutes remaining for the output to soak. During ramping, SoakTimeLeft is set to the current segment’s SoakTime. Once ramping is complete, SoakTimeLeft is decreased to reflect the time in minutes remaining for the current segment. SoakTimeLeft = 0 when SoakTime expires.
Guaranteed Soaking
Set the input GuarSoak to true to enable guaranteed soaking. When enabled, the instruction monitors the difference between Out and PV. If the difference is outside of the SoakDeadband, timing of the soak cycle is suspended and the internal soak timer is cleared. When the difference between Out and PV returns to within the deadband, timing resumes. The output GuarSoakOn is set to true when timing is held due to guaranteed soaking being in effect.
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.