FT_PT1 Initialization: Resolving a Zero Start Value

Patricia Callen1 min read
Other ManufacturerProcess ControlTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

The FT_PT1 function block can initialize its output at zero even when the input is already nonzero. The reported correction is to initialize the output from the block's static gain relationship, not from zero.

Identify the FT_PT1 initialization symptom

During initialization, the observed out value starts at zero. This creates a mismatch when in already represents a steady-state value. A first-order lag with a static input must ultimately reproduce that input after applying gain K.

Apply the gain-corrected start value

Initializing with out := in; works only when K equals 1. The gain-corrected initialization is out := in * K;, which makes the initial output consistent with the block's stated static relationship.

Initialization Valid condition Result
out := 0; Input-derived initialization is not required Forces a zero start
out := in; K = 1 Matches unity-gain steady state
out := in * K; General supported correction Includes the configured gain

Correct the initialization branch

Add the output assignment inside the existing IF NOT init THEN branch. Preserve the other initialization statements already present in the library block.


The correction was acknowledged for a subsequent release, but the evidence does not identify a library version. Inspect the installed FT_PT1 source or release notes rather than assuming that a particular version contains the change.

Verify the corrected behavior

  1. Set in and K to the values required by the application before initialization.
  2. Execute the block's initialization path and observe out.
  3. Confirm that the initial value satisfies out = in * K. Repeat with K not equal to 1 to distinguish the corrected expression from out := in;.

FAQ

Why does FT_PT1 start at zero during initialization?

The reported implementation does not initialize out from the current input and gain. Add the gain-corrected assignment within the existing initialization branch.

Should FT_PT1 initialize with out := in?

Only when K = 1. For the general case, initialize with out := in * K;.

How do I verify the FT_PT1 initialization fix?

Initialize the block with known in and K values, then confirm that the first initialized output satisfies out = in * K. Use a gain other than 1 to verify that the gain is applied.

Back to blog