Process Dosing (PDOSE)
This information applies to the CompactLogix 5380P and ControlLogix 5580P controllers.
The Process Dosing (PDOSE) instruction controls an ingredient addition that uses a flow meter or weigh scale to measure the quantity of ingredient added. The flow meter can provide an analog flow rate, an analog quantity (total), or a pulse count with rollover. If using a pulse generating flowmeter, a counting card must be used to determine the pulse count (or frequency). This instruction is designed to work well with the 1756-HSC (High-Speed Counter) module or the 1756-CFM (Configurable Flowmeter). The weigh scale can be on the receiving vessel, indicating gain in weight, or on the sourcing vessel, indicating loss in weight. The weigh scale can be connected using an analog input, device network, or other connection.
Use the PDOSE instruction to:
- Provide inputs for rate (flow rate or quantity per time) and quantity (total or pulse count).
- Use a pulse count as the Quantity process variable (PV), with configurable rollover count.IMPORTANT: A pulse counting card must be used with a pulse generating flowmeter.
- Totalize the flow rate PV to determine the quantity delivered when the flowmeter provides a rate signal but no quantity.
- Calculate the flow rate given the quantity by differentiating with respect to time when the meter provides a total or pulse count but no rate. If the rate PV is calculated from an input quantity, the PDOSE instruction uses a first-order, lag filter on the calculated rate PV signal to reduce the impact of jitter, scan time, quantization error, or input signal noise.
- Provide a low rate cutoff function, used to ignore flow rate values near zero to deal with noise or zero calibration error in the rate signal.
- Use a flowmeter with built-in totalizer. Forwards the totalizer clear command to the flowmeter and checks that the flowmeter's total was reset.
- Provide outputs to control associated equipment, such as pumps and valves, to start and stop flow.
- Monitor the status of controlled equipment, such as pumps and valves.
- Monitor rate or quantity input communication status and provide indication of uncertain or bad rate PV or quantity PV.
- Provide program or operator entry of a quantity to deliver (setpoint) and calculate the quantity remaining to deliver and percent complete during delivery.
- Provide program or operator entry of high and low tolerance limits. Lets the program or operator initiate a tolerance check after delivery is complete. Provides a warning if under tolerance and lets the operator bump the flow to make up the shortage. The bump can be set up as a timed bump or as an operator jog-like function. Provides an alarm if over tolerance and inhibits further flow.
- Automatically switch to a lower dribble flow rate as the quantity delivered approaches setpoint. Provides operator or program entry of the dribble quantity. Provides run, dribble, and stop outputs to controlled equipment.
- Use a preact value to stop flow to account for material in the pipe, time for equipment to stop, and delays in measurement, scan, communication, and so forth. Provides operator or program entry of the preact value. Provides an optional automatic preact correction based on the error in delivery when tolerance is checked. The auto correction lets the preact learn the correct value over time.
- Use the standard command source (PCMDSRC) instruction to provide ownership for entry of settings and acceptance of commands.
- Provide linear scaling of the input weight value from raw, input card units to engineering, display units.
- Provide a rate of weight change calculation (differentiation with respect to time) to generate an inferred flow rate. The calculated rate is filtered and has a low cutoff, so the rate is reported as zero when the change in weight is only from noise on the input weight signal.
- Provide outputs to control associated equipment, such as pumps and valves to start and stop flow. The operator or the program can start the ingredient addition, then pause and resume as needed.
- Monitor the status of controlled equipment, such as pumps and valves. Flow is stopped and an alarm is raised on an equipment fault or if the equipment fails to respond as commanded.
- Monitor the weight PV input quality and communication status and provides indication of uncertain or bad weight PV. Flow is stopped and an alarm is raised on a bad PV or communication loss.
- Provide a continuous monitoring function which allow continuous monitoring without SP requirement.
Available Languages
Ladder Diagram
Function Block Diagram
Structured Text
PDOSE (PDOSE tag, Inp_QtyPV, Inp_RatePV, BusObj);
Operands
IMPORTANT:
Unexpected operation may occur if:
- Output tag operands are overwritten.
- Members of a structure operand are overwritten.
- Except when specified, structure operands are shared by multiple instructions.
There are data conversion rules for mixing numeric data types within an instruction. See Data conversions.
Configuration Operands
Operand | Type | Format | Description |
---|---|---|---|
PlantPAx Control | P_DOSING | tag | Data structure required for proper operation of instruction. |
Inp_QtyPV | REAL | tag | Quantity from weigh scale or flowmeter (EU or pulse count). |
Inp_RatePV | REAL | tag | Flow rate from flowmeter (EU/Time, see Cfg_RateTime). |
BusObj | BUS_OBJ | tag | Bus component. |
P_DOSING Structure
Public members are standard, visible tag members that are programmatically accessible. Private, hidden members are used in HMI faceplates and are not programmatically accessible. Private members are listed in separate tables after public members.
Public Input Members | Data Type | FBD Default Visibility | FBD Wiring required | Usage | Description |
---|---|---|---|---|---|
EnableIn | BOOL | Not Visible | Not Required | Input | Enable Input - System Defined Parameter Default is true. |
Inp_InitializeReq | BOOL | Not Visible | Not Required | Input | 1 = Request to initialize the instruction. The instruction is normally initialized in instruction first run. use this request when reinitialization is needed. The instruction clears this operand automatically. Default is true. |
Inp_OwnerCmd | DINT | Not Visible | Not Required | Input | Owner device command. 0 = None, Inp_OwnerCmd.10 = Operator lock, Inp_OwnerCmd.11 = Operator unlock, Inp_OwnerCmd.12 = Program lock, Inp_OwnerCmd.13 = Program unlock, Inp_OwnerCmd.14 = acquire Maintenance, Inp_OwnerCmd.15 = release Maintenance, Inp_OwnerCmd.16 = acquire External, Inp_OwnerCmd.17 = release External. Default is 0. |
Inp_RatePVBad | BOOL | Not Visible | Not Required | Input | 1 = Rate PV input quality = Bad (Fail). Default is false. |
Inp_RatePVUncertain | BOOL | Not Visible | Not Required | Input | 1 = Rate PV input quality = Uncertain. Default is false. |
Inp_QtyPVBad | BOOL | Not Visible | Not Required | Input | 1 = Quantity PV input quality = Bad (Fail). Default is false. |
Inp_QtyPVUncertain | BOOL | Not Visible | Not Required | Input | 1 = Quantity PV input quality = Uncertain. Default is false. |
Inp_RunFdbk | BOOL | Visible | Not Required | Input | 1 = Controlled equipment is delivering (running). Default is false. |
Inp_DribbleFdbk | BOOL | Not Visible | Not Required | Input | 1 = Controlled equipment is delivering at dribble. Default is false. |
Inp_StopFdbk | BOOL | Visible | Not Required | Input | 1 = Controlled equipment is confirmed stopped. Default is false. |
Inp_CtrldEqpFault | BOOL | Not Visible | Not Required | Input | Controlled equipment object or I/O status 0 = Ok, 1 = Fail. Default is false. |
Inp_Reset | BOOL | Not Visible | Not Required | Input | 1 = Reset shed latches and cleared alarms. Default is false. |
Inp_eRatePVSrcQ | SINT | Not Visible | Not Required | Input | Flow rate signal source and quality (enumerated): 0=Good, live, confirmed good 1=Good, live, assumed good 2=Good, no feedback, assumed good 8=Test, virtualized 9=Test, loopback 10=Test, manually entered 16=Uncertain, live, off-spec 17=Uncertain, substituted at device or bus 18=Uncertain, substituted at instruction 19=Uncertain, using last known good 20=Uncertain, using replacement value 32=Bad, signal failure 33=Bad, channel fault 34=Bad, module or communication fault 35=Bad, invalid configuration. Default is 0. |
Inp_eRatePVNotify | Rate PV object alarm priority and acknowledgement status. 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. Default is 0. | ||||
Inp_eQtyPVSrcQ | SINT | Not Visible | Not Required | Input | Quantity signal source and quality (enumerated): 0=Good, live, confirmed good 1=Good, live, assumed good 2=Good, no feedback, assumed good 8=Test, virtualized 9=Test, loopback 10=Test, manually entered 16=Uncertain, live, off-spec 17=Uncertain, substituted at device or bus 18=Uncertain, substituted at instruction 19=Uncertain, using last known good 20=Uncertain, using replacement value 32=Bad, signal failure 33=Bad, channel fault 34=Bad, module or communication fault 35=Bad, invalid configuration. Default is 0. |
Inp_eQtyPVNotify | SINT | Not Visible | Not Required | Input | Quantity PV object alarm priority and acknowledgement status. 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. Default is 0. |
Inp_Hand | BOOL | Not Visible | Not Required | Input | 1 = Acquire hand (typically hardwired local), 0 = Release hand. Default is false. |
Inp_Ovrd | BOOL | Not Visible | Not Required | Input | 1 = Acquire Override (higher priority Program logic), 0 = Release Override. Default is false. |
Inp_ExtInh | BOOL | Not Visible | Not Required | Input | 1 = Inhibit External acquisition, 0 = Allow External acquisition. Default is false. |
Cfg_AllowDisable | BOOL | Not Visible | Not Required | Input | 1 = Allow Operator alarm disable, 0 = Disallow Operator alarm disable. Default is false. |
Cfg_AllowShelve | BOOL | Not Visible | Not Required | Input | 1 = Allow Operator alarm shelve, 0 = Disallow Operator alarm shelve. Default is false. |
Cfg_HasEqpFdbk | BOOL | Not Visible | Not Required | Input | 1 = Controlled equipment provides run (dribble if used) and stop feedback. Default is false. |
Cfg_UseEqpFdbk | BOOL | Not Visible | Not Required | Input | 1 = Use run / dribble / stop feedback, 0 = Assume equipment state. Default is false. |
Cfg_HasDribble | BOOL | Not Visible | Not Required | Input | 1 = Slow to dribble before complete, 0 = Run full flow until complete. Default is false. |
Cfg_HasRatePVNav | BOOL | Not Visible | Not Required | Input | 1 = Tells HMI an analog object (pai, etc.) is used for Inp_RatePV. Default is false. |
Cfg_HasMonitoring | BOOL | Not Visible | Not Required | Input | 1 = Allows continuous monitoring without setpoint requirement. Default is false. |
Cfg_HasMoreObj | BOOL | Not Visible | Not Required | Input | 1 = Tells HMI an object with more info is available. Default is false. |
Cfg_HasQtyPVNav | BOOL | Not Visible | Not Required | Input | 1 = Tells HMI an analog object (pai, etc.) is used for Inp_QtyPV. Default is false. |
Cfg_AutoAdjPreact | BOOL | Not Visible | Not Required | Input | 1 = Enable automatic adjustment of preact after each delivery. Default is false. |
Cfg_LossInQty | BOOL | Not Visible | Not Required | Input | 1 = Flow reduces quantity (Transfer out), 0 = Flow increases quantity (Transfer in). Default is false. |
Cfg_SetTrack | BOOL | Not Visible | Not Required | Input | 1 = When the owner is Program the operator settings track the program settings. When the owner is Operator the program settings track the operator settings; and the virtual inputs match the output values (transitions are bumpless) 0 = No tracking. Default is true. |
Cfg_ShedOnEqpFault | BOOL | Not Visible | Not Required | Input | 1 = Stop delivery and alarm on equipment fault; 0 = Alarm only on equipment fault. Default is true. |
Cfg_HasOper | BOOL | Not Visible | Not Required | Input | 1 = Operator (unlocked) exists, can be selected. Default is true. |
Cfg_HasOperLocked | BOOL | Not Visible | Not Required | Input | 1 = Operator locked exists, can be selected. Default is true. |
Cfg_HasProg | BOOL | Not Visible | Not Required | Input | 1 = Program (unlocked) exists, can be selected. Default is true. |
Cfg_HasProgLocked | BOOL | Not Visible | Not Required | Input | 1 = Program locked exists, can be selected. Default is true. |
Cfg_HasExt | BOOL | Not Visible | Not Required | Input | 1 = External exists, can be selected. Default is false. |
Cfg_HasMaint | BOOL | Not Visible | Not Required | Input | 1 = Maintenance exists, can be selected. Default is true. |
Cfg_OvrdOverLock | BOOL | Not Visible | Not Required | Input | 1 = Override supersedes Program/Operator Lock, 0 = Don't Override lock. Default is true. |
Cfg_ExtOverLock | BOOL | Not Visible | Not Required | Input | 1 = External supersedes Program/Operator Lock, 0 = Don't Override lock. Default is false. |
Cfg_ProgPwrUp | BOOL | Not Visible | Not Required | Input | 1 = Power up to Program, 0 = Power up to Operator. Default is false. |
Cfg_ProgNormal | BOOL | Not Visible | Not Required | Input | Normal source: 1 = Program if no requests; 0 = Operator if no requests. Default is false. |
Cfg_PCmdPriority | BOOL | Not Visible | Not Required | Input | Command priority. 1 = Program commands win, 0 = Operator commands win. Default is false. |
Cfg_PCmdProgAsLevel | BOOL | Not Visible | Not Required | Input | 1 = PCmd_Prog used as a level. Default is false. |
Cfg_PCmdLockAsLevel | BOOL | Not Visible | Not Required | Input | 1 = PCmd_Lock used as a level (1 = Lock, 0 = Unlock). Default is false. |
Cfg_ExtAcqAsLevel | BOOL | Not Visible | Not Required | Input | 1 = XCmd_Acq used as level (1 = Acquire, 0 = Release). Default is false. |
Cfg_AutoAdjPercent | REAL | Not Visible | Not Required | Input | Percentage of delivery error to auto-adjust preact. Valid = 0.0 to 100.0 (%) Default is 10.0. |
Cfg_CountsPerEU | REAL | Not Visible | Not Required | Input | Number of counts in Inp_QtyPV which equal 1.0 Engineering Units. Valid = 0.0 to maximum positive float. Default is 1.0. |
Cfg_EUQtyMult | REAL | Not Visible | Not Required | Input | Rate to quantity Engineering Units multiplier (e.g., gal to bbl.). Valid = 0.0 to maximum positive float. Default is 1.0. |
Cfg_BumpTime | REAL | Not Visible | Not Required | Input | Bump (manual top-off) time. Valid = 0.0 to 2147483.0 seconds. Default is 0.0. |
Cfg_ClearPulseTime | REAL | Not Visible | Not Required | Input | Time to pulse Out_ClearTot to clear External totalizer. Valid = 0.0 to 2147483.0 seconds. Default is 1.0. |
Cfg_FaultTime | REAL | Not Visible | Not Required | Input | Time for equipment feedback to follow output before fault. Valid = 0.0 to 2147483.0 seconds. Default is 10.0. |
Cfg_HiFlowRateLim | REAL | Not Visible | Not Required | Input | High flow rate alarm limit. Valid = 0.0 to maximum positive float. Default is 3.40E+38. |
Cfg_LoFlowRateLim | REAL | Not Visible | Not Required | Input | Low flow rate alarm limit. Valid = 0.0 to maximum positive float. Default is 0.0. |
Cfg_LoRateCutoff | REAL | Not Visible | Not Required | Input | Rate below which to report zero flow (Inp_RatePV in engineering unit/time, see Cfg_RateTime). Valid = 0.0 to maximum positive float. Default is 0.0. |
Cfg_MaxQty | REAL | Not Visible | Not Required | Input | Maximum allowed quantity to deliver (setpoint).Valid = 0.0 to maximum positive float. Default is 1.50E+38. |
Cfg_RateFiltTimeConst | REAL | Not Visible | Not Required | Input | Filter time constant (sec) for calculated rate. Valid = 0.0 to 2147483.0 seconds. Default is 0.1. |
Cfg_RateTime | REAL | Not Visible | Not Required | Input | Rate of change time base (seconds), use 1.0 for units/second, 60.0 for units/minute, 3600.0 for units/hour, 86400.0 for units/day. Valid = any float greater than zero. Default is 1.0 |
Cfg_Rollover | REAL | Not Visible | Not Required | Input | Quantity rollover (e.g., max count for pulse input). Valid = 0.0 to maximum positive float. Default is 0.0. |
Cfg_SettleTime | REAL | Not Visible | Not Required | Input | Time to allow flow to stop before allowing tolerance check.Valid = 0.0 to 2147483.0 seconds. Default is 1.0. |
Cfg_VirtualRate | REAL | Not Visible | Not Required | Input | Rate at which to deliver when running in virtual (Engineering Units/rate time). Valid = 0.0 to maximum positive float. Default is 1.0. |
Cfg_VirtualDribbleRate | REAL | Not Visible | Not Required | Input | Rate at which to dribble when running in virtual (Engineering Units/rate time). Valid = 0.0 to maximum positive float. Default is 0.1. |
Cfg_eKeepSP | SINT | Not Visible | Not Required | Input | Ownership of Setpoint (enumeration): 0 = follows CmdSrc, 1 = Operator, 2 = Program, 3 = External. Default is 0. |
Cfg_eKeepStart | SINT | Not Visible | Not Required | Input | Ownership of Start commands (enumeration): 0 = follows CmdSrc, 1 = Operator, 2 = Program, 3 = External. Default is 0. |
Cfg_eKeepTol | SINT | Not Visible | Not Required | Input | Ownership of Tolerance commands (enumeration): 0 = follows CmdSrc, 1 = Operator, 3 = External. Default is 0. |
Cfg_eKeepDribblePreact | SINT | Not Visible | Not Required | Input | Ownership of Dribble\Preact (enumeration): 0 = follows CmdSrc, 1 = Operator, 2 = Program, 3 = External. Default is 0. |
Cfg_HasHistTrend | SINT | Not Visible | Not Required | Input | Has Historical Trend. This enables navigation to the Device Historical Trend Faceplate from the HMI. Value of 0 = No External historical trend, 1 = Datalog historical trend, 2 = Historian histrical trend. Default is 0. |
Cfg_QtyDecPlcs | SINT | Not Visible | Not Required | Input | Number of decimal places for quantity display. Valid = 0,1,2,3,4,5,6. Default is 2. |
Cfg_RateDecPlcs | SINT | Not Visible | Not Required | Input | Number of decimal places for rate display. Valid = 0,1,2,3,4,5,6. Default is 2. |
Cfg_CnfrmReqd | SINT | Not Visible | Not Required | Input | Operator Command Confirmation Required. Represents the type of command confirmation required. 0 = None, 1 = Command confirmation required, 2 = Performer e-signature required, 3 = Performer and approver e-signature required. Default is 0. |
PCmd_Bump | BOOL | Not Visible | Not Required | Input | Program command to bump delivery for under tolerance. The instruction clears this operand automatically. Default is false. |
PCmd_ClearTot | BOOL | Not Visible | Not Required | Input | Program command to clear totalizer quantity. The instruction clears this operand automatically. Default is false. |
PCmd_StartTot | BOOL | Not Visible | Not Required | Input | Program command to start totalizer. The instruction clears this operand automatically. Default is false. |
PCmd_StopTot | BOOL | Not Visible | Not Required | Input | Program command to stop totalizer. The instruction clears this operand automatically. Default is false. |
PCmd_StartFlow | BOOL | Not Visible | Not Required | Input | Program command to start delivery. The instruction clears this operand automatically. Default is false. |
PCmd_StopFlow | BOOL | Not Visible | Not Required | Input | Program command to stop/pause delivery. The instruction clears this operand automatically. Default is false. |
PCmd_CheckTol | BOOL | Not Visible | Not Required | Input | Program command to check tolerances. The instruction clears this operand automatically. Default is false. |
PCmd_Lock | BOOL | Not Visible | Not Required | Input | Program command to lock Program (disallow Operator). The instruction clears this operand automatically if Cfg_PCmdLockAsLevel = 0. Default is false. |
PCmd_Normal | BOOL | Not Visible | Not Required | Input | Program command to select normal command source (Operator or Program). The instruction clears this operand automatically. Default is false. |
PCmd_Oper | BOOL | Not Visible | Not Required | Input | Program command to select Operator (Program to Operator). The instruction clears this operand automatically. Default is false. |
PCmd_Prog | BOOL | Not Visible | Not Required | Input | Program command to select Program (Operator to Program). The instruction clears this operand automatically. Default is false. |
PCmd_Unlock | BOOL | Not Visible | Not Required | Input | Program command to unlock Program (allow Operator to acquire). The instruction clears this operand automatically. Default is false. |
PCmd_Reset | BOOL | Not Visible | Not Required | Input | Program command to reset all alarms requiring reset. The instruction clears this operand automatically. Default is false. |
PCmd_Virtual | BOOL | Not Visible | Not Required | Input | Program command to select Virtual (virtualized) operation. The instruction clears this operand automatically. Default is false. |
PCmd_Physical | BOOL | Not Visible | Not Required | Input | Program command to select Physical operation (not virtualized). The instruction clears this operand automatically. Default is false. |
PSet_Owner | DINT | Not Visible | Not Required | Input | Program owner request ID (non-zero) or release (zero). Default is 0. |
PSet_DribbleQty | REAL | Not Visible | Not Required | Input | Program setting of quantity to dribble (Engineering Units). Valid = 0.0 to maximum positive float. Default is 0.0. |
PSet_Preact | REAL | Not Visible | Not Required | Input | Program setting of amount before total to stop flow (Engineering Units). Valid = 0.0 to maximum positive float. Default is 0.0. |
PSet_SP | REAL | Not Visible | Not Required | Input | Program setting of total quantity to deliver in Engineering Units. Valid = 0.0 to maximum positive float. Default is 0.0. |
PSet_TolHi | REAL | Not Visible | Not Required | Input | Program setting of high tolerance limit (ok amount > SP). Valid = 0.0 to maximum positive float. Default is 0.0. |
PSet_TolLo | REAL | Not Visible | Not Required | Input | Program setting of low tolerance limit (ok amount < SP). Valid = 0.0 to maximum positive float. Default is 0.0. |
XCmd_Bump | BOOL | Not Visible | Not Required | Input | External command to bump delivery for under tolerance.The instruction clears this operand automatically. Default is false. |
XCmd_ClearTot | BOOL | Not Visible | Not Required | Input | External command to clear totalizer Quantity. The instruction clears this operand automatically. Default is false. |
XCmd_StartTot | BOOL | Not Visible | Not Required | Input | External command to start totalizer.The instruction clears this operand automatically. Default is false. |
XCmd_StopTot | BOOL | Not Visible | Not Required | Input | External command to stop totalizer.The instruction clears this operand automatically. Default is false. |
XCmd_StartFlow | BOOL | Not Visible | Not Required | Input | External command to start deliver.The instruction clears this operand automatically. Default is false. |
XCmd_StopFlow | BOOL | Not Visible | Not Required | Input | External command to stop/pause delivery.The instruction clears this operand automatically. Default is false. |
XCmd_CheckTol | BOOL | Not Visible | Not Required | Input | External command to check tolerances.The instruction clears this operand automatically. Default is false. |
XCmd_Reset | BOOL | Not Visible | Not Required | Input | External command to clear shed latches and cleared alarms. Default is false. |
XCmd_Acq | BOOL | Not Visible | Not Required | Input | External command to Acquire ownership (Operator/Program/Override/Maintenance to External). The instruction clears this operand automatically if Cfg_ExtAcqAsLevel = 0. Default is false. |
XCmd_Rel | BOOL | Not Visible | Not Required | Input | External command to release ownership if Cfg_ExtAcqAsLevel = 0 (External to Operator/Program/Override/Maintenance). The instruction clears this operand automatically. Default is false. |
XCmd_ResetAckAll | BOOL | Not Visible | Not Required | Input | External command to acknowledge and reset all alarms and latched shed conditions. The instruction clears this operand automatically. Default is false. |
XSet_DribbleQty | REAL | Not Visible | Not Required | Input | External setting of quantity to dribble (Engineering Units). Default is 0.0. |
XSet_Preact | REAL | Not Visible | Not Required | Input | External setting of amount before total to stop flow (Engineering Units). Default is 0.0. |
XSet_SP | REAL | Not Visible | Not Required | Input | External setting of total quantity to deliver (Engineering Units). Default is 0.0. |
XSet_TolHi | REAL | Not Visible | Not Required | Input | External setting of high tolerance limit (ok amount > SP). Default is 0.0. |
XSet_TolLo | REAL | Not Visible | Not Required | Input | External setting of low tolerance limit (ok amount < SP). Default is 0.0. |
Public Output Members | Data Type | FBD Default Visibility | FBD Wiring required | Usage | Description |
---|---|---|---|---|---|
EnableOut | BOOL | Not Visible | Not Required | Output | Enable Output - System Defined Parameter |
Out_ClearTot | BOOL | Visible | Not Required | Output | 1 = Reset external totalizer (e.g. onboard flowmeter). |
Out_RunTot | BOOL | Visible | Not Required | Output | 1 = Run External totalizer (e.g. onboard flowmeter). |
Out_RunFlow | BOOL | Visible | Not Required | Output | 1 = Deliver at full (fast) flow. |
Out_StopFlow | BOOL | Visible | Not Required | Output | 1 = Stop delivery equipment. |
Out_DribbleFlow | BOOL | Visible | Not Required | Output | 1 = Deliver at dribble (slow) flow. |
Out_Reset | BOOL | Not Visible | Not Required | Output | 1 = Reset command has been received and accepted. |
Out_OwnerSts | DINT | Not Visible | Not Required | Output | Status of command source, owner command handshake and ready status. 0 = None, .10 = Operator lock, .11 = Operator unlock, .12 = Program lock, .13 = Program unlock, .14 = Acquire Maintenance, .15 = Release Maintenance, .16 = Acquire External, .17 = Release External, .18 = Has Maintenance, .19 = External Override lock, .20 = Has External, .21 = Has Operator, .22 = Has Program, .30 = Not ready. |
Sts_Initialized | BOOL | Not Visible | Not Required | Output | 1 = Instruction is initialized. use Inp_InitializeReq to reinitialize. |
Sts_CalcQty | BOOL | Not Visible | Not Required | Output | 1 = Integrate Inp_RatePV to get quantity, 0 = Use Inp_QtyPV. |
Sts_CalcRate | BOOL | Not Visible | Not Required | Output | 1 = Differentiate Inp_QtyPV to get rate, 0 = Use Inp_RatePV. |
Sts_Cleared | BOOL | Visible | Not Required | Output | 1 = Totalizer clear completed. |
Sts_TotRunning | BOOL | Visible | Not Required | Output | 1 = Totalizer running, 0 = Totalizer stopped. |
Sts_FlowStarting | BOOL | Not Visible | Not Required | Output | 1 = Flow is starting (Out_Run is on, feedback not showing run). |
Sts_FlowRunning | BOOL | Visible | Not Required | Output | 1 = Flow is running (Out_Run is on, feedback shows running). |
Sts_FlowStopping | BOOL | Not Visible | Not Required | Output | 1 = Flow is stopping (Out_Stop is on, feedback not showing stopped). |
Sts_FlowStopped | BOOL | Visible | Not Required | Output | 1 = Flow is stopped (Out_Stop is on, feedback shows stopped). |
Sts_DribbleStarting | BOOL | Not Visible | Not Required | Output | 1 = Dribble starting (Out_Dribble is on, feedback not showing dribble). |
Sts_FlowDribble | BOOL | Visible | Not Required | Output | 1 = Flow is dribbling (Out_Dribble is on, feedback shows dribble). |
Sts_Bumping | BOOL | Not Visible | Not Required | Output | 1 = Bump flow is active. |
Sts_InTol | BOOL | Not Visible | Not Required | Output | 1 = Total delivered is within tolerances. |
Sts_Complete | BOOL | Visible | Not Required | Output | 1 = Total delivered > (setpoint - preact). |
Sts_Virtual | BOOL | Not Visible | Not Required | Output | 1 = The instruction continues to generate outputs to control equipment, but the flow quantity and rate inputs are ignored, and a simulated flow rate is used. 0 = The instruction operates normally. |
Sts_bSrc | INT | Not Visible | Not Required | Output | Active selection bitmap (for HMI totem pole with command source request selection): Sts_bSrc.0: Hand, Sts_bSrc.1: Programmed out of service (rung false), Sts_bSrc.2: Maintenance out of service, Sts_bSrc.3: Maintenance, Sts_bSrc.4: Override, Sts_bSrc.5: External, Sts_bSrc.6: Program locked, Sts_bSrc.7: Program, Sts_bSrc.8: Operator locked, Sts_bSrc.9: Operator. |
Sts_eCmd | SINT | Not Visible | Not Required | Output | Dosing command 0 = None, 1 = Clear Totalizer, 2 = Start Totalizer, 3 = Start Flow, 4 = Start Dribble, 5 = Bump, 6 = Stop Flow, 7 = Stop Totalizer. |
Sts_eFdbk | SINT | Not Visible | Not Required | Output | Equipment feedback 0 = None/transition, 1 = Flow stopped, 2 = Flow running, 3 = Flow dribbling, 4 = Virtualized. |
Sts_eFault | SINT | Not Visible | Not Required | Output | Object fault status 0 = None, 1 = Error: bad configuration, 15 = Equipment fault. |
Sts_eNotifyAll | SINT | Not Visible | Not Required | Output | All alarm status enumerated values including related objects: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotify | SINT | Not Visible | Not Required | Output | All alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotifyEqpFault | SINT | Not Visible | Not Required | Output | Equipment Fault alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotifyHiFlowRate | SINT | Not Visible | Not Required | Output | Hi Flow Rate alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotifyLoFlowRate | SINT | Not Visible | Not Required | Output | Lo Flow Rate alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotifyOverTol | SINT | Not Visible | Not Required | Output | Over Tolerance alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotifyUnderTol | SINT | Not Visible | Not Required | Output | Under Tolerance alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eNotifyZeroFault | SINT | Not Visible | Not Required | Output | Zero Fault alarm status enumerated values: 0 = Not in alarm, acknowledged, 1 = Not in alarm, unacknowledged or reset required, 2 = Low severity alarm, acknowledged, 3 = Low severity alarm, unacknowledged, 4 = Medium severity alarm, acknowledged, 5 = Medium severity alarm, unacknowledged, 6 = High severity alarm, acknowledged, 7 = High severity alarm, unacknowledged, 8 = Urgent severity alarm, acknowledged, 9 = Urgent severity alarm, unacknowledged. |
Sts_eSrc | INT | Not Visible | Not Required | Output | The current command source enumerated values: 0 = Logic not in use, 4 = Hand, 8 = Maintenance, 16 = Override, 32 = Program, 33 = Program locked, 34 = Program by default (Normal), 64 = Operator, 65 = Operator locked, 66 = Operator by default (Normal), 128 = Maintenance Out of Service, 129 = Programmed Out of Service (rung false), 256 = External. |
Sts_eSts | SINT | Not Visible | Not Required | Output | Dosing status: 0 = Powerup/reset/unknown, 1 = Stopped, 2 = Totalizer running, 3 = Flow running, 4 = Dribble running, 5 = Bump flow, 6 = Flow starting, 7 = Dribble starting, 8 = Flow stopping, 15 = Out of service. |
Sts_UnackAlmCount | SINT | Not Visible | Not Required | Output | Count of unacknowledged alarms. |
Sts_Available | BOOL | Not Visible | Not Required | Output | 1 = Dosing available for control by automation (Program). |
Sts_MaintByp | BOOL | Not Visible | Not Required | Output | 1 = A Maintenance bypass is active, display icon. |
Sts_NotRdy | BOOL | Not Visible | Not Required | Output | 1 = Object not ready, see detail bits for reason. |
Sts_NrdyCfgErr | BOOL | Not Visible | Not Required | Output | 1 = Object not ready: configuration error. |
Sts_NrdyEqpFault | BOOL | Not Visible | Not Required | Output | 1 = Object not ready: External equipment fault (fault or shed requires reset). |
Sts_NrdyOoS | BOOL | Not Visible | Not Required | Output | 1 = Object not ready: out of service. |
Sts_NrdyPVBad | BOOL | Not Visible | Not Required | Output | 1 = Object not ready: PV bad quality or comm failure. |
Sts_Err | BOOL | Not Visible | Not Required | Output | 1 = Error in configuration: See detail bits (Sts_Errxxx) for reason. |
Sts_ErrAlm | BOOL | Not Visible | Not Required | Output | 1 = Error in config: alarm minimum on time, shelf time, severity. |
Sts_ErrBumpTime | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_BumpTime invalid. |
Sts_ErrClearPulseTime | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_ClearPulseTime invalid. |
Sts_ErrCountsPerEU | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_CountsPerEU invalid. |
Sts_ErrCutoff | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_Cutoff invalid. |
Sts_ErrEUQtyMult | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_EUQtyMult invalid. |
Sts_ErrFaultTime | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_FaultTime invalid. |
Sts_ErrRateTime | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_RateTime invalid. |
Sts_ErrLim | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_MaxQty invalid. |
Sts_ErrRollover | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_Rollover invalid. |
Sts_ErrRateFiltTimeConst | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_RateFiltTimeConst invalid. |
Sts_ErrSettleTime | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_SettleTime invalid. |
Sts_ErrVirtual | BOOL | Not Visible | Not Required | Output | 1 = Error: Cfg_VirtualDribbleRate or Cfg_VirtualRate invalid. |
Sts_Hand | BOOL | Not Visible | Not Required | Output | 1 = Hand is selected (supersedes Out of Service, Maintenance, Override, External, Program, Operator). |
Sts_OoS | BOOL | Not Visible | Not Required | Output | 1 = Out of service is selected (supersedes Maintenance, Override, External, Program, Operator). |
Sts_Maint | BOOL | Not Visible | Not Required | Output | 1 = Maintenance is selected (supersedes Override, External, Program, Operator). |
Sts_Ovrd | BOOL | Not Visible | Not Required | Output | 1 = Override is selected (supersedes External, Program, Operator). |
Sts_Ext | BOOL | Not Visible | Not Required | Output | 1 = External is selected (supersedes Program and Operator). |
Sts_Prog | BOOL | Not Visible | Not Required | Output | 1 = Program is selected. |
Sts_ProgLocked | BOOL | Not Visible | Not Required | Output | 1 = Program is selected and locked. |
Sts_Oper | BOOL | Not Visible | Not Required | Output | 1 = Operator is selected. |
Sts_OperLocked | BOOL | Not Visible | Not Required | Output | 1 = Operator is selected and locked. |
Sts_ProgOperSel | BOOL | Not Visible | Not Required | Output | Program/Operator selection (latch) state: 1 = Program, 0 = Operator. |
Sts_ProgOperLock | BOOL | Not Visible | Not Required | Output | Program/Operator lock (latch) state, 1 = Locked, 0 = Unlocked. |
Sts_Normal | BOOL | Not Visible | Not Required | Output | 1 = Selection equals the normal (Program or Operator). |
Sts_ExtReqInh | BOOL | Not Visible | Not Required | Output | 1 = External request inhibited, cannot get to External from current state. |
Sts_ProgReqInh | BOOL | Not Visible | Not Required | Output | 1 = Program request inhibited, cannot get to Program from current state. |
Sts_MAcqRcvd | BOOL | Not Visible | Not Required | Output | 1 = Maintenance acquire command received this scan. |
Sts_Alm | BOOL | Visible | Not Required | Output | 1 = An alarm is active. |
Sts_AlmInh | BOOL | Not Visible | Not Required | Output | 1 = One or more alarms shelved, disabled or suppressed. |
Sts_EqpFault | BOOL | Not Visible | Not Required | Output | 1 = Equipment fault detected. |
Sts_HiFlowRate | BOOL | Not Visible | Not Required | Output | 1 = Hi flow rate alarm. |
Sts_LoFlowRate | BOOL | Not Visible | Not Required | Output | 1 = Lo flow rate alarm. |
Sts_LoRateCutoff | BOOL | Not Visible | Not Required | Output | 1 = Rate PV below low rate cutoff, flow assumed to be zero. |
Sts_OverTol | BOOL | Not Visible | Not Required | Output | 1 = Delivery out of tolerance high. |
Sts_UnderTol | BOOL | Not Visible | Not Required | Output | 1 = Delivery out of tolerance low. |
Sts_ZeroFault | BOOL | Not Visible | Not Required | Output | 1 = Totalizer did not clear or unexpected flow. |
Sts_QtyBad | BOOL | Not Visible | Not Required | Output | 1 = Quantity value is Bad (PV Fail). |
Sts_QtyUncertain | BOOL | Not Visible | Not Required | Output | 1 = Quantity value is Uncertain. |
Sts_RateBad | BOOL | Not Visible | Not Required | Output | 1 = Rate value is Bad (PV Fail). |
Sts_RateUncertain | BOOL | Not Visible | Not Required | Output | 1 = Rate value is Uncertain. |
Sts_RdyAck | BOOL | Not Visible | Not Required | Output | 1 = An alarm is ready to be acknowledged. |
Sts_RdyReset | BOOL | Not Visible | Not Required | Output | 1 = A latched alarm or shed condition is ready to be reset. |
Val_SP | REAL | Visible | Not Required | Output | Amount to be delivered (setpoint) (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_Remain | REAL | Visible | Not Required | Output | Amount yet to deliver to reach setpoint (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_PercentComplete | REAL | Visible | Not Required | Output | Percent complete (for progress bar on HMI) Valid = 0.0 to 100.0. |
Val_QtyPV | REAL | Not Visible | Not Required | Output | Quantity from weigh scale or flowmeter (Engineering Units or pulse count). Valid = 0.0 to maximum positive float. |
Val_Qty | REAL | Visible | Not Required | Output | Quantity actually delivered (totalizer output) (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_RatePV | REAL | Not Visible | Not Required | Output | Flow rate from flowmeter (Engineering Units/time, see Cfg_RateTime). Valid = 0.0 to maximum positive float. |
Val_Rate | REAL | Visible | Not Required | Output | Current delivery rate (Engineering Units/time) (see Cfg_RateTime). Valid = 0.0 to maximum positive float. |
Val_DribbleQty | REAL | Visible | Not Required | Output | Amount to be delivered at slow rate (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_Preact | REAL | Visible | Not Required | Output | Amount before setpoit at which flow will be stopped (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_TolHi | REAL | Visible | Not Required | Output | Allowed amount > Setpoint (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_TolLo | REAL | Visible | Not Required | Output | Allowed amount < Setpoint (Engineering Units). Valid = 0.0 to maximum positive float. |
Val_Owner | DINT | Not Visible | Not Required | Output | Current object owner ID (0 = Not owned). |
SrcQ | SINT | Not Visible | Not Required | Output | Source and quality of primary value or status (enumerated): 0=Good, live, confirmed good 1=Good, live, assumed good 2=Good, no feedback, assumed good 8=Test, virtualized 9=Test, loopback 10=Test, manually entered 16=Uncertain, live, off-spec 17=Uncertain, substituted at device or bus 18=Uncertain, substituted at instruction 19=Uncertain, using last known good 20=Uncertain, using replacement value 32=Bad, signal failure 33=Bad, channel fault 34=Bad, module or communication fault 35=Bad, invalid configuration |
SrcQ_IO | SINT | Not Visible | Not Required | Output | Source and quality of primary input or output (enumerated): 0=Good, live, confirmed good 1=Good, live, assumed good 2=Good, no feedback, assumed good 8=Test, virtualized 9=Test, loopback 10=Test, manually entered 16=Uncertain, live, off-spec 17=Uncertain, substituted at device or bus 18=Uncertain, substituted at instruction 19=Uncertain, using last known good 20=Uncertain, using replacement value 32=Bad, signal failure 33=Bad, channel fault 34=Bad, module or communication fault 35=Bad, invalid configuration |
XRdy_Acq | BOOL | Not Visible | Not Required | Output | 1 = Ready for XCmd_Acq, enable HMI button. |
XRdy_Rel | BOOL | Not Visible | Not Required | Output | 1 = Ready for XCmd_Rel, enable HMI button. |
XRdy_Reset | BOOL | Not Visible | Not Required | Output | 1 = Ready for XCmd_Reset, enable HMI button. |
XRdy_ResetAckAll | BOOL | Not Visible | Not Required | Output | 1 = Ready for XCmd_ResetAckAll, enable HMI button. |
Private Input Members | Data Type | Description |
---|---|---|
CmdSrc | P_COMMAND_SOURCE | Control / Command Source Selection. |
MCmd_Acq | BOOL | Maintenance command to acquire ownership (Operator/Program/External/Override to Maintenance). The instruction clears this operand automatically. Default is false. |
MCmd_IS | BOOL | Maintenance command to select in service. The instruction clears this operand automatically. Default is false. |
MCmd_OoS | BOOL | Maintenance command to select out of service. The instruction clears this operand automatically. Default is false. |
MCmd_Physical | BOOL | Maintenance command to select Physical operation (not virtualized) Default is false. |
MCmd_Rel | BOOL | Maintenance command to release ownership (Maintenance to Operator/Program/External/Override). The instruction clears this operand automatically. Default is false. |
MCmd_Virtual | BOOL | Maintenance command to select Virtual (virtualized) operation Default is false. |
OCmd_Bump | BOOL | Operator command to bump delivery for under tolerance. The instruction clears this operand automatically. Default is false. |
OCmd_CheckTol | BOOL | Operator command to check tolerances. The instruction clears this operand automatically. Default is false. |
OCmd_ClearTot | BOOL | Operator command to clear totalizer quantity. The instruction clears this operand automatically. Default is false. |
OCmd_Lock | BOOL | Operator command to lock Operator (disallow Program). The instruction clears this operand automatically. Default is false. |
OCmd_Normal | BOOL | Operator command to select normal (Operator or Program). The instruction clears this operand automatically. Default is false. |
OCmd_Oper | BOOL | Operator command to select Operator (Program to Operator). The instruction clears this operand automatically. Default is false. |
OCmd_Prog | BOOL | Operator command to select Program (Operator to Program). The instruction clears this operand automatically. Default is false. |
OCmd_Reset | BOOL | Operator command to reset all alarms requiring reset. The instruction clears this operand automatically. Default is false. |
OCmd_ResetAckAll | BOOL | Operator command to reset all alarms and latched shed conditions. The instruction clears this operand automatically. Default is false. |
OCmd_StartFlow | BOOL | Operator command to start deliver. The instruction clears this operand automatically. Default is false. |
OCmd_StartTot | BOOL | Operator command to start totalizer. The instruction clears this operand automatically. Default is false. |
OCmd_StopFlow | BOOL | Operator command to stop/pause delivery. The instruction clears this operand automatically. Default is false. |
OCmd_StopTot | BOOL | Operator command to stop totalizer. The instruction clears this operand automatically. Default is false. |
OCmd_Unlock | BOOL | Operator command to unlock / release (allow Program to acquire) ownership. The instruction clears this operand automatically. Default is false. |
OSet_DribbleQty | REAL | Operator setting of quantity to dribble (Engineering Units). Valid = 0.0 to maximum positive float. Default is 0.0. |
OSet_Preact | REAL | Operator setting of amount before total to stop flow (Engineering Units). Valid = 0.0 to maximum positive float. Default is 0.0. |
OSet_SP | REAL | Operator setting of total quantity to deliver (Engineering Units). Valid = 0.0 to maximum positive float. Default is 0.0. |
OSet_TolHi | REAL | Operator setting of high tolerance limit (ok amount > SP). Valid = 0.0 to maximum positive float. Default is 0.0. |
OSet_TolLo | REAL | Operator setting of low tolerance limit (ok amount < SP). Valid = 0.0 to maximum positive float. Default is 0.0. |
Private Output Members | Data Type | Description |
---|---|---|
HMI_BusObjIndex | DINT | HMI bus object index Default is 0. |
MRdy_Acq | BOOL | 1 = Ready for MCmd_Acq, enable HMI button. |
MRdy_IS | BOOL | 1 = Ready for MCmd_IS, enable HMI button. |
MRdy_OoS | BOOL | 1 = Ready for MCmd_OoS, enable HMI button. |
MRdy_Physical | BOOL | 1 = Ready for MCmd_Physical, enable HMI button. |
MRdy_Rel | BOOL | 1 = Ready for MCmd_Rel, enable HMI button. |
MRdy_Virtual | BOOL | 1 = Ready for MCmd_Virtual, enable HMI button. |
ORdy_Bump | BOOL | 1 = Ready for OCmd_Bump (enables HMI button). |
ORdy_CheckTol | BOOL | 1 = Ready for OCmd_CheckTol (enables HMI button). |
ORdy_ClearTot | BOOL | 1 = Ready for OCmd_ClearTot (enables HMI button). |
ORdy_DribblePreact | BOOL | 1 = Ready for OSet_DribblePreact (enables HMI entry field). |
ORdy_Lock | BOOL | 1 = Ready for OCmd_Lock, enable HMI button. |
ORdy_Normal | BOOL | 1 = Ready for OCmd_Normal, enable HMI button. |
ORdy_Oper | BOOL | 1 = Ready for OCmd_Oper, enable HMI button. |
ORdy_Prog | BOOL | 1 = Ready for OCmd_Prog, enable HMI button. |
ORdy_Reset | BOOL | 1 = Ready for OCmd_Reset (enables HMI button). |
ORdy_ResetAckAll | BOOL | 1 = Ready for OCmd_ResetAckAll (enables HMI button). |
ORdy_SP | BOOL | 1 = Ready for OSet_SP (enables HMI entry field). |
ORdy_StartFlow | BOOL | 1 = Ready for OCmd_StartFlow (enables HMI button). |
ORdy_StartTot | BOOL | 1 = Ready for OCmd_StartTot (enables HMI button). |
ORdy_StopFlow | BOOL | 1 = Ready for OCmd_StopFlow (enables HMI button). |
ORdy_StopTot | BOOL | 1 = Ready for OCmd_StopTot (enables HMI button). |
ORdy_Tol | BOOL | 1 = Ready for OSet_Tol (enables HMI entry field). |
ORdy_Unlock | BOOL | 1 = Ready for OCmd_Unlock, enable HMI button. |
Sts_ErrInpSrc | BOOL | 1 = Error: Input Source invalid. No Rate or Quantity PV connected |
Public InOut Members | Data Type | FBD Default Visibility | FBD Wiring required | Usage | Description |
---|---|---|---|---|---|
Inp_QtyPV | REAL | Visible | Required | InOut | Quantity from weigh scale or flowmeter (Engineering Units or pulse count). Valid = 0.0 to maximum positive float. |
Inp_RatePV | REAL | Visible | Required | InOut | Flow rate from flowmeter (Engineering Units/time, see Cfg_RateTime). Valid = 0.0 to 2147483.0 seconds. |
BusObj | BUS_OBJ | Visible | Required | InOut | Bus component |
BUS_OBJ Structure
Use InOut parameters to link the Instruction to external tags that contain necessary data for the instruction to operate. These external tags must be of the data type shown, or NULL. All public InOut parameters for this instruction may be NULL.
Members | Data Type | Description |
---|---|---|
Inp_Cmd | DINT | Input to assert commands |
Out_Cmd | DINT | Resultant commands |
Inp_CmdLLH | DINT | Input for level normally high commands |
Out_CmdLLH | DINT | Resultant line level high commands |
Inp_Sts | DINT | Input to assert status |
Out_Sts | DINT | Resultant status |
Inp_CmdAck | DINT | Input to assert a command acknowledgement |
Out_CmdAck | DINT | Resultant command acknowledgements |
Inp_SeverityMax | DINT | Input: maximum alarm severity |
Out_SeverityMax | DINT | Resultant of maximum alarm severity |
Cfg_CmdMask | DINT | Propagation mask for commands |
Cfg_CmdLLHMask | DINT | Propagation mask for line level high commands |
Cfg_StsMask | DINT | Propagation mask for status |
Ref_Index | DINT | Bus array index |
Alarms
Discrete tag-based alarms are defined for these members.
Member | Alarm Name | Description |
---|---|---|
Sts_EqpFault | Alm_EqpFault | Equipment fault. Raised when the Inp_CtrldEqpFault input is true, or when equipment feedback signals fail to track the commanded state of the equipment within the configured time. If an equipment fault is configured as a shed fault, the flow is stopped and a reset is required to resume flow. |
Sts_HiFlowRate | Alm_HiFlowRate | Above high limit. Raised when the flow rate exceeds the High Flow Rate limit, for a configured period of time. |
Sts_LoFlowRate | Alm_LoFlowRate | Below low limit. Raised when the flow rate falls short of the Low Flow Rate limit, for a configured period of time. |
Sts_OverTol | Alm_OverTol | Above over tolerance limit. Raised when the tolerance check is performed and the quantity delivered exceeds the setpoint by more than the High Tolerance threshold. |
Sts_UnderTol | Alm_UnderTol | Below under tolerance limit. Raised when the tolerance check is performed and the quantity delivered falls short of the setpoint by more than the Low Tolerance threshold. |
Sts_ZeroFault | Alm_ZeroFault | Zero fault. Raised if the dosing fails to clear, or if the dosing is cleared but then registers flow before flow is commanded to start. |
Mark the alarm as used or unused and set standard configuration members of the discrete tag-based alarm. Access alarm elements using this format:
Tag.@Alarms.AlarmName.AlarmElement
PDOSETag.@Alarms.AlarmName.AlarmElement
The PDOSE instruction handles alarm conditions described by these use cases and conditions:
- Equipment fault - raised when the Inp_CtrldEqpFault input is true, or when equipment feedback signals fail to track the commanded state of the equipment within the configured time. If an equipment fault is configured as a shed fault, the flow is stopped and a reset is required to resume flow.
- Above high limit - raised when the flow rate exceeds the High Flow Rate limit, for a configured period of time.
- Below low limit - raised when the flow rate falls short of the Low Flow Rate limit, for a configured period of time.
- Above over tolerance limit - raised when the tolerance check is performed and the quantity delivered exceeds the setpoint by more than the High Tolerance threshold.
- Below under tolerance limit - raised when the tolerance check is performed and the quantity delivered falls short of the setpoint by more than the Low Tolerance threshold.
- Zero fault - raised if the dosing fails to clear, or if the dosing is cleared but then registers flow before flow is commanded to start.
There are Program, Operator, and External commands that enable the Reset and Reset & Acknowledge of all alarms of the instruction (Alarm Set) at the same time. This diagram shows how the commands interact with the PDOSE instruction.
Operation
This diagram illustrates the functionality of the PDOSE instruction:
Operator command request confirmation
The PDOSE instruction enables these operator command requests:
- OCmd _Bump
- OCmd_CheckTol
- OCmd_ClearTot
- OCmd_StartFlow
- OCmd_StartTot
- OCmd_StopFlow
- OCmd_StopTot
- OSet_DribbleQty
- OSet_Preact
- OSet_SP
- OSet_TolHi
- OSetTolLo
Enforced security might require the request to be confirmed or canceled before the selected command executes. The instruction checks the security rules inspecting Cfg_CnfrmReqd. If Cfg_CnfrmReqd=0 no confirmation is required and the request executes immediately. If Cfg_CnfrmReqd=1 the instruction waits for confirmation OCmd_CmdCnfrm=1 and/or cancellation For Cfg_CnfrmReqd=2 or 3 eSignature is needed before the confirmation and cancellation is enabled.
Virtualization
Use virtualization for instruction testing and operator training. Use PCmd_Virtual or MCmd_Virtual to enable virtualization. After finishing virtualization, use PCmd_Physical or MCmd_Physical to return to normal (physical device) operation.
When Virtualization is active, the instruction continues to generate outputs to control equipment, but the flow quantity and rate inputs are ignored, and a simulated flow rate is used. The instruction can emulate a rate at which to dribble and a rate at which to deliver when running in virtual.
WARNING:
To avoid starting equipment during virtualization, the downstream equipment instructions must be put in virtual so that their outputs are held in the safe state. Failure to do this can result in personal injury or equipment damage.
Initialization
The instruction is normally initialized in the instruction first run. Request re-initialization by setting Inp_InitializeReq = 1. For proper initialization, when adding the instruction while performing an online edit of the code, make sure that Inp_InitializeReq = 1, the default value.
Configuration of Strings for HMI
Configure strings for HMI faceplates (
FactoryTalk View
) and for Logix Designer
configuration dialog. The strings are set to extended properties of tag items. Configure the strings in Logix Designer
only.- Description
- Label for graphic symbol
- Display Library for HMI Faceplate call-up
- Instruction name
- Area name
- URL link
- More Information
- Input Quantity PV
- Input Rate PV
- Quantity PV Units
- Rate PV Units
- Alarm Equipment Fault Text
- Alarm Hi Flow Rate Text
- Alarm Lo Flow Rate Text
- Alarm Over Tolerance Text
- Alarm Under Tolerance Text
- Alarm Zero Fault Text
Command Source
The instruction uses these command sources. The command sources are prioritized in order from highest to lowest in this table.
Command Source | Description |
---|---|
Hand | Hardwired logic or other logic outside the instruction controls the device. The instruction tracks the state of the device for bumpless transfer back to one of the other command sources. This is the highest priority command source. |
Out-of-Service | The instruction is disabled and has no owner. |
Maintenance | Maintenance controls the device and supersedes Operator, Program, External and Override control. Operator commands and settings from the HMI are accepted. |
Override | Priority logic controls the device and supersedes Operator, Program and External control. Override Input (Inp_Ovrd) is accepted. |
External | External logic (e.g. field pilot control or upstream SCADA) controls the device. External commands (XCmd_) are accepted. |
Program locked | Program logic controls the device. Program commands (PCmd_) are accepted. Operator cannot take control from the Program. Override cannot take control from theProgram unless Cfg_OvrdOverLock = 1. |
Program | Program logic controls the device. Program commands (PCmd_) are accepted. |
Operator locked | The Operator controls the device. Operator commands (OCmd_) from the HMI are accepted. Program cannot take control from Operator. Override cannot take control from Operator unless Cfg_OvrdOverLock = 1. |
Operator | The Operator controls the device. Operator commands (OCmd_) from the HMI are accepted. This is the lowest priority command source. |
The instruction enables or disables these operations:
- Maintenance Out-of-Service exists
- Maintenance exists
- External exists
- Program (unlocked) exists
- Program locked exists
- Operator (unlocked) exists
- Operator locked exists
- PCmd_Lock used as a Level (1 = Lock, 0 = Unlock)
The instruction checks for invalid configurations of control and forces the nearest valid configuration.
The core control model arbitrates the source of the commands and parameters that the receiving function accepts. The core control model determines if the source is:
- A programmatic entity which resides entirely within the processing environment, or
- An external interface entity which issues commands and parameters external and asynchronously to the processing environment.
Locking a control source prevents the other control source from acquiring privilege.
Core Command Source Model
The core control model consists of these control sources:
- Oper
- OperLocked
- Prog
- ProgLocked
The control model defaults to this configuration. Other control sources may be present in the model but act as overriding control sources, acting independent of the base Operator/Program state machine.
Enabling control sources as Configuration
The individual control sources may be enabled or disabled by the user. The default configuration uses the entire base model; upon power-up of the processing environment the control source will be the designated default. Some combinations of enabled control sources are disallowed as they are either unnecessary or could create unintended changes.
Prog Power Up
Configuration allows the user to specify whether Operator or Program is the power-up default.
Prog Priority
Configuration allows the user to specify whether Operator or Program commands take priority when simultaneously asserted.
Automatic reset of commands
All commands are treated as one-shot-latched. This means that all commands are automatically cleared when the instruction executes and processes them.
Changing Destination States
Under certain configurations the destination command source for some commands may change. This is in keeping with the intent of the command. For example, if the Prog is disabled, the destination of the OCmd_Prog command is directed to the ProgLocked state instead of the Prog state. This maintains the intent of the OCmd_Prog command: the operator entity wishes to place the function in control of the program. If the command was eliminated there would be no way to accomplish this. This is only done in configurations where it would cause no conflict or race condition, but serves to preserve as much user functionality as is practical.
Higher Priority Command Sources
These Higher priority command sources operate independently within the model:
- External
- Override
- Maintenance
- Out-of-Service
- In-Service
- Hand
Monitor the PDOSE Instruction
Use the operator faceplate from the PlantPAx library of Process objects for monitoring.
Affects Math Status Flags
No.
Major/Minor Faults
None specific to this instruction. See Index Through Arrays for array-indexing faults.
Execution
Ladder Diagram
Condition/State | Action Taken |
---|---|
Prescan | Rung-condition-out is cleared to false. Any commands that are received before first scan are discarded. |
Instruction first run | Any commands received before first scan are discarded. |
Rung-condition-in is false | Any commands that are received are discarded. All alarms are cleared. The command source is reported as Program Out of Service. The displayed rate is zeroed. Outputs to controlled equipment are de-energized. Other output parameters (values and status) hold their last value. |
Rung-condition-in is true | Set rung-condition-out to rung-condition-in. The instruction executes. |
Postscan | Rung-condition-out is cleared to false. |
Function Block Diagram
Condition/State | Action Taken |
---|---|
Prescan | EnableOut is cleared to false. Any commands that are received before first scan are discarded. |
Instruction first run | Any commands received before first scan are discarded. |
Instruction first scan | See Instruction first run in the Function Block Diagram table. |
EnableIn is false | EnableOut is cleared to false. Latched alarms are reset. Command source selection processing proceeds except that Program and Operators commands are ignored and cleared and all ownership status bits (Sts_Maint, Sts_Ovrd, Sts_Ext, Sts_Prog and Sts_Oper) are cleared to 0. When rung-condition-in becomes true, the Program/Operator selection is set based on the configuration (Cfg_ProgPwrUp). |
EnableIn is true | EnableOut is set to true. The instruction executes. |
Postscan | EnableIn and EnableOut bits are cleared to false. |
Structured Text
In Structured Text, EnableIn is always true during normal scan. The instruction executes when it is in the control path activated by the logic.
Condition/State | Action Taken |
---|---|
Prescan | See Prescan in the Function Block Diagram table. |
Instruction first run | See Instruction first run in the Function Block Diagram table. |
EnableIn is true | See EnableIn is true in the Function Block Diagram table. |
Postscan | See Postscan in the Function Block Diagram table. |
Example
This example shows an input from a flowmeter (I_PDT_2) connected to a P_AInAdv block for the conversion of differential pressure to flow. The PV representing flow (Val from P_AInAdv) is the input for the PDOSE instruction (Inp_RatePV). The Sts_PVBad for the flow value is also used by the PDOSE instruction (Inp_RatePVBad). The outputs of the PDOSE instruction (Out_RunFlow and Out_DribbleFLow) are used as inputs to a two-speed motor (P_Motor2Spd). RunFlow and DribbleFlow are connected to PCmd_RunFast and PCmd_RunSlow, respectively. The status outputs of the motor for stopped (Sts_Stopped), running slow (Sts_RunningSlow), and running fast (Sts_RunningFast) are connected back to the PDOSE block as inputs Inp_StopFdbk, Inp_DribbleFdbk, and Inp_RunFdbk.
Ladder Diagram
Function Block Diagram
Structured Text
FI_01.Inp_PVData:=I_PDT_2;
PAI(FI_01,0);
FQIC_01.Inp_RatePVBad:=FI_01.Sts_PVBad;
PDOSE(FQIC_01, 0, FI_01.Val, 0);
PMTR_01.PCmd_Start1:=FQIC_01.Out_DribbleFlow;
PMTR_01.PCmd_Start2:=FQIC_01.Out_RunFlow;
PMTR_01.PCmd_Stop:=FQIC_01.Out_StopFlow;
PMTR(PMTR_01, 0, 0, 0, 0, 0);
FQIC_01.Inp_DribbleFdbk:=PMTR_01.Sts_Running1;
FQIC_01.Inp_RunFdbk:=PMTR_01.Sts_Running2;
FQIC_01.Inp_StopFdbk:=PMTR_01.Sts_Stopped;
Provide Feedback