Mark Vies Safety Controller: Block Library
Mark Vies Safety Controller: Block Library
Note The Mark VIeS Safety control does not support status options. For a description of status operations, refer to the Mark
VIe Controller Standard Block Library (GEI-100682), the Status Monitoring (STATUS_ MONITORING) block.
Blocks are software subroutines that are included in the tasks to be run in the controller. Within the ToolboxST* application,
the connections are accomplished graphically using pins and wires to form a data flow diagram. The blocks run in the order
listed in the task. The connections between the blocks are RAM memory elements through which data is passed. These
elements are referred to as variables. Each variable has a defined data type and must be connected to pins of the same data
type. Some block pins accept multiple data types and others are capable of converting from one data type to another.
Each block entry in the library consists of the following:
Note Pin names are given modifiers that provide additional information about the pin.
A graphical representation of the software for each block is provided in the form of a block diagram that includes the simple
block name and block configuration pins and variable pins, which transfer data in and out of the block. The pins are located
on the block diagram according to their usage. All input pins (pins read by the block) and block configuration pins are listed
on the left. All output pins (pins written by the block) and state pins (pins read and written by the block) are listed on the
right. The pin name is listed beside each pin inside the block diagram border.
Note The default value of Boolean inputs is False unless the input is a block Enable, in which case the default is True and
the default value of inputs with data types INT, UINT, DINT, UDINT, REAL and LREAL is 0, until otherwise specified.
The block content provides tables to define the input and output pins. Each entry includes the block name for the variable,
basic data type, typical scaling units, and a description of the variable. Typical scaling units are supplied for reference only;
specific applications may use other scaling units as appropriate.
Note The Block Data Type is set in the block Property Editor.
Note LEGACY category blocks are hidden by default in the ToolboxST application. Refer to the ToolboxST User Guide for
Mark Controls Platform (GEH-6700) for steps to display these blocks if needed for legacy support.
The BLACK_RX block validates the integrity of the Mark VIeS Safety controller data signed by a corresponding Black
Channel Transmitter (BLACK_TX) block running in the transmitting device. The user configures the running rate of the
BLACK_RX block on the receiving device to greater than or equal to the rate of the incoming Black Channel EGD page from
the referenced transmitting device. The BLACK_RX block receives the Connection ID (CONN_ID), Sequence number
(SEQ), Signature (SIGNATURE and SIGNATURE2), and variable data consumed from the referenced EGD page as inputs.
The block also receives an Expected Connection ID (CONN_ID_EXP) input value used to validate the transmitted CONN_ID
value. The user configures a corresponding CONN_ID input on the BLACK_TX block and the CONN_ID_EXP constant
input on the matching BLACK_RX block.
Inputs
Name Data Type Description
CONN_ID_EXP Constant UDINT Expected connection ID
CONN_ID UDINT Connection ID
SEQ UDINT Sequence number
The Stale Count (STALE_CNT) input is a Constant pin used to configure the number times the
block can run without the SEQ input value changing. If the number of times the block ran without
the SEQ value incrementing exceeds the STALE_CNT value, LINK_OK is driven to False and
STALE_CNT Constant UDINT
the STALE_CNT pin defaults to 1. The value zero may be applied to the STALE_CNT pin to
disable driving LINK_OK False due to stale sequence number transmission completely. This
provides the flexibility to monitor for stale data externally in the application code if necessary.
SIGNATURE UDINT Signature
SIGNATURE2 UDINT Second Signature
VAR01 ANY Input variable 1
↓ ANY ↓
VAR32 ANY Input variable 32
Output
Name Data Type Description
The output pin, LINK_OK, is a single Boolean value that denotes the integrity of the control data
received from the Black Channel. If any of the inputs from the Black Channel are corrupt, the
Signature calculation will not match the SIGNATURE and SIGNATURE2 input values from the
LINK_OK BOOL
transmitter (BLACK_TX) and LINK_OK will be driven False.
If the CONN_ID value from the Black Channel does not match the CONN_ID_EXP value, LINK_
OK output will also be driven False.
The BLACK_RX block also checks for out-of-order reception of SEQ values. If the sequence number does not monotonically
increase, LINK_OK will be driven False until the sequence number resumes increasing from the point at which the
out-of-order reception was encountered. The block takes sequence number roll-over into account during run time.
The block receives a Connection ID (CONN_ID) input used to uniquely identify a Black Channel connection between a
specific BLACK_TX block in the transmitting device and a specific Black Channel Receiver (BLACK_RX) block configured
in the receiving device. The Sequence Number (SEQ) output of the block monotonically increases each time the block runs.
The BLACK_TX block creates a Signature that the BLACK_RX block uses for a data integrity check. The Signature output
(SIGNATURE and SIGNATURE2) is calculated using the values of the CONN_ID, Sequence number (SEQ), and input data
of the variables connected to the block and transmitted to the receiver (BLACK_RX).
Each of the variables connected to the BLACK_TX block must be placed on a dedicated Black Channel EGD dedicated page
that is configured for production at a rate tuned for the application. All of these variables should not only exist on the same
EGD page but must also exist on the same EGD exchange to provide coherency on the receiving end of the Black Channel. If
the number of the variables required by the application exceeds the length of the EGD exchange, additional BLACK_TX
blocks, EGD pages, and exchanges may be used to scale the application.
Inputs
Name Data Type Description
CONN_ID UDINT Connection ID
VAR01 ANY Input variable 1
↓ ANY ↓
VAR32 ANY Input variable 32
Outputs
Name Data Type Description
SEQ UDINT Sequence number
SIGNATURE UDINT Signature
SIGNATURE2 UDINT Second Signature
HMI with
ToolboxST EGD Referenced
New EGD application Device
Page
4. From the Software tab of the first Mark VIeS device, create a Program and Task, then insert the Black_TX block.
5. From the Software tab Tree View, select the Variables for the Task. From the Data Grid, create global variables for all
Black_TX block pins.
a. Create up to 32 VAR## variables as needed for the data to be transmitted from the first controller to the second
controller.
Note Use another pair of transmitter and receiver blocks if more than 32 variables are needed.
b. Select data types as are needed for the data to be transmitted or as are required for the block pins.
c. Select the EGD Page for each of these variables to be the black channel page created in step 2.
e. Notice that the Initial Value for the CONN_ID is 1 in this example (BlackConnectionID). This Connection ID must be a unique number to represent this particular
Black_TX block (important when using more than one Black_TX transmitter block). This ID is used by the Black_RX receiver block to identify which transmitter block it
is receiving.
Under Referenced Devices, select the new device (MarkVIeS_1 in this example), and verify that the available global
variables display.
9. From the Software tab, create a Program and Task, then insert the Black_RX block.
10. From the Software tab Tree View, select the Variables for the Task. From the Data Grid, create a Boolean global
variable for the Link_OK pin.
11. From the Block Diagram Editor, and the Black_RX block, double-click the CONN_ID_EXP pin. Set the Immediate
Value to be the same as the Black_TX CONN_ID value (in this example it is 1). This value is especially important when
using more than one set of blocks (to identify which Black_TX data values should be received by this particular Black_
RX block).
12. Double-click the Black_RX block, select Browse Globals.
13. Select the global variables created in the first Mark VIeS controller, and connect them to the appropriate pins.
a. From the Select a Variable dialog box, select the folder with the name of the first controller device, then select the
appropriate variable.
b. Attach the VAR## data variables in exactly the same order as they appear in the Black_TX block.
14. Build and Download both controllers (this can be done simultaneously).
15. Click each controller’s Status tab and wait for the controller to be in the Controlling state.
Note This block is not recommended for use in any new controller applications (ControlST V05.02 or later). Refer to the
section Legacy Category Blocks.
The Boolean Filter (BFILT) block passes a rising True value on the IN pin to the OUT pin if IN remains True for PU_DEL (in
milliseconds) time. The block passes a falling False value on the IN pin to the OUT pin if IN remains False for DO_DEL (in
milliseconds).
BFILT Block
Inputs
Name Data Type Description
PU_DEL UDINT Pick-up delay in milliseconds
IN BOOL Identifies the variable to filter
DO_DEL UDINT Drop-out delay in milliseconds
Output
Name Data Type Description
OUT BOOL Filtered output
State
Name Data Type Description
PREVOUT BOOL Last filtered output (hidden pin) that can be viewed or changed by right-clicking the
block and selecting Edit Block Pins. Writing to this variable is not recommended,
but can be used to preset block states.
The Calculator (CALC) block is an expandable block that performs mathematical operations,
defined by the equation string, on up to 8 inputs, A, B, C, D, E, F, G, and H, and places the
result in the output variable, OUT. The data type of the inputs and output is implied by the block
data type selected in the Block Properties panel in the ToolboxST application. Any modification
to the equation string EQUAT requires a re-download to the controller.
Note This is a variant block which supports any one the following block data types: INT, DINT, REAL, LREAL, UINT, and
UDINT. The default data type is REAL. Refer to the section Change Data Type of Variant Block.
Inputs
Name Data Type Description
ENABLE BOOL Block enable (default is True)
A ANY_NUM Operand used in equation
B ANY_NUM Operand used in equation
C ANY_NUM Operand used in equation
↓ ↓ ↓
H ANY_NUM Operand used in equation
Equation string to be executed using operands: + - * / ^ %
EQUAT String ABS NEG RND SQR COS SIN TAN ACS ASN ATN LOG
LN EXP RECIP
Output
Name Data Type Description
OUT ANY_NUM Output of equation
CAPTURE Block
Constant Edge (1) – If the current trigger condition is True and the previous trigger condition is False, the
TR_TYPE Trigger Type
Tr_Type_T trigger is True.
Level (2) – If the current trigger condition is True, the trigger is True.
Constant Automatic If True, the block is automatically re-enabled for a new capture after the buffer is uploaded. Note
AUTOENA
Boolean Enable that if automatic enabling is selected, all manual enable inputs are ignored (default is False).
Automatic
Constant The number of seconds after the last upload before capturing is re-enabled (only applicable if
ATOUT Enable
UDINT AUTOENA is True) (default is 60 seconds).
Timeout
Buffer Control – Controls how and when the data is collected (default is NORMAL).
NORMAL (1) – PRE_SAM samples are collected before a trigger event. POSTSAM samples are
collected after the trigger event. Samples are collected every FMULT scans. Capturing stops when
the specified samples have been collected, an upload command is received, or when the ENA_
CAP pin transitions to False if automatic re-enabling is not selected.
CIRCULAR (2) – Samples are collected indefinitely every FMULT scans. The buffer contains the
Constant Buffer
BUF_CTL newest PRE_SAM + POSTSAM samples unless capturing is stopped prior to filling the buffer.
Buf_Ctl_T Control
Capturing stops when an upload command is received, or when the ENA_CAP pin transitions to
False if automatic re-enabling is not selected.
ONLY (3) – The trigger condition is evaluated each scan. Samples are only collected when the
trigger event is valid. The buffer contains PRE_SAM + POSTSAM samples unless capturing is
stopped prior to filling the buffer. Capturing stops when the specified samples have been collected,
an upload command is received, or when the ENA_CAP pin transitions to False if automatic
re-enabling is not selected.
If True and the AUTOENA pin is False, enable the block for capture. This pin gives the application
Manual code the ability to enable and disable data collection. This is an edge-triggered pin. Once a capture
ENA_CAP BOOL
Enable has been stopped the pin must be toggled False and then True again to re-enable the next capture
(default is False).
Allows data to be collected slower than the performance rate of the block (scan period) by
Sample specifying a multiple of the scan period for samples to be taken (only applies to Normal and
Constant
FMULT Period Circular buffer control) (default is 1).
UINT
Multiplier
If a zero value is given, then the block will treat it as one Frame multiple.
Constant Post Trigger
POSTSAM Number of samples to collect after and including the trigger event (default is 100)
UDINT Sample Size
Constant Pre Trigger
PRE_SAM Number of samples to collect prior to the trigger event (default is 10)
UDINT Sample Size
Automatic (2) – Captured data is automatically uploaded by the data collection system.
Trip (3) – Captured data is automatically uploaded by the data collection system and is
UPL_TYPE Upl_Type_T incorporated as part of the trip log.
With the Mark VIe controller (not the Mark VIeS Safety controller): Flash (4) – Captured data is
written to flash disk on the Mark VIe controller. The last three samples are preserved after which
the oldest one is overwritten. This works only when the BUF_CTL is set to NORMAL, and is not
available with the Mark VIeS Safety controller.
Outputs
Name Data Type Function Description
The current status of the capture:
DISABLED (0) – Not running
WAITING FOR TRIGGER (1) – Collecting pre-trigger samples
STATUS UINT Capture Status CAPTURING (2) – Collecting post-trigger samples
CAPTURE COMPLETE (3) – Data ready to be uploaded
LOCKED (8003H) – The buffer is locked by an upload to another client
FLASH WRITING (4) – The captured samples are being written to flash.
DONE BOOL Capture Done Set to True when a buffer is ready to be loaded
• Capture blocks require an application code download to configure, while DDRs are configured by an independent
download mechanism.
• Capture blocks are embedded in the application code and can be used to catch events that occur between application code
blocks. DDRs perform outside of the application code and can only sample data after all of the application code has
performed in a particular frame.
• Capture blocks perform at the same priority as the other application code and so insure the highest data fidelity. DDRs
perform at a lower priority than the application code and are not guaranteed to catch data transitioning at frame rate.
The Capture block collects data sets of variables, known as samples and stores them in a local buffer. The buffer may be
uploaded to one or more client devices. Once uploaded the block may be re-armed to take another collection. Typically, for
clients other than ToolboxST application the status pin must be mapped to EGD so that it can be monitored outside the
controller. Once an upload is in progress, the buffer is locked to prevent it from being re-armed during the data transfer.
Multiple clients may upload the buffer simultaneously. The block ignores the transitions of its ENA_CAP pin until all clients
have been serviced.
Data collection is managed by specifying a buffer control mode and a trigger event. There are three buffer control modes. A
NORMAL collection is one where a specified number of samples are collected prior to a trigger event and a specified number
of samples are collected after the trigger event. Once the trigger event has been found to be satisfied it is no longer evaluated.
A CIRCULAR collection is one where no trigger event is specified and samples are taken indefinitely until the collection is
halted by requesting an upload or disabling the block. An ONLY collection is one where samples are only collected if the
specified trigger event is True each opportunity the block has to collect a sample. This is useful when collecting data around
an event that occurs sporadically.
A trigger event is completely specified by selecting a trigger condition, a trigger type, a trigger variable, and a trigger value.
The trigger variable is an application variable that the block monitors. It is compared against a trigger value using the
relational specifications of the trigger condition, and the sensitivity of the trigger type. Acceptable trigger conditions include
EQUAL TO, NOT EQUAL TO, GREATER THAN, GREATER THAN OR EQUAL TO, LESS THAN, and LESS THAN OR
EQUAL TO. Acceptable trigger types include LEVEL or EDGE. A level trigger is one that is satisfied at present, regardless
of past values. An edge trigger is one that is satisfied at present but was not satisfied at the previous evaluation.
Note A variable needs to be connected to the Status pin to enable the automatic upload functionality of the CAPTURE block
in the WorkstationST* application.
A new collection may be enabled manually through blockware, or automatically, if so configured. If manual enabling is
selected, the application code must toggle the ENA_CAP to False for at least one frame then back to True to re-enable a
collection. Additionally, the block ignores all transitions of the ENA_CAP pin while the buffer is locked for uploading so this
toggling must occur when the buffer is unlocked. If automatic enabling is selected, the block is initially enabled and all
transitions of the ENA_CAP pin are ignored. The block will re-enable a capture after at least one upload occurs, and no new
upload requests are received within ATOUT seconds following the completion of the last upload. Uploading a collection that
is not complete automatically changes the block status to complete. Another upload is not necessary to re-enable the next
collection.
9 Clamp (CLAMP)
Block Category: Math
The Clamp (CLAMP) block restricts the output to values defined by MIN and MAX. Outputs IN_MIN or IN_MAX become
True to indicate a low or high limitation active.
Note This is a variant block that supports any one the following block data types: Integer, Double Integer, Real, Long Real,
Unsigned Integer, Unsigned Double Integer. The default data type is Real. Refer to the section Change Data Type of Variant
Block.
CLAMP Block
Inputs
Name Data Type Description
ENABLE BOOL Enables the block to run
MAX ANY_NUM Maximum limit
IN ANY_NUM Value to be clamped
MIN ANY_NUM Minimum limit
Outputs
Name Data Type Description
OUT ANY_NUM Clamped output
IN_MAX BOOL Output is clamped at maximum limit
IN_MIN BOOL Output is clamped at minimum limit
Note This block is not recommended for use in any new controller applications (ControlST V05.02 or later). Refer to the
section Legacy Category Blocks.
The Comment Block Functionality (_COMMENT_BF) block adds comment text in the block diagram. The block inserts a
line break as viewed from the tool and on the printed page. The comment will display on the left side of the page on the next
line after the previous block. The text of the comment is added in the Property View on the lower left side of the screen. The
Show Description property must be set to True to display the entire text of the comment.
The COMMENT_BF block also controls the mode (Flow or List mode) of the diagram to the next comment block (or end of
the code if there are no subsequent comment blocks).
Note This is a variant block which supports any one the following block data types: INT, DINT, REAL, LREAL, UINT, and
UDINT. The default data type is REAL. Refer to the section .
Inputs
Name Data Type Description
IN1 ANY_NUM Input to compare
IN2 ANY_NUM Input to compare against
FUNC ENUM (INT) Comparison function (gt, ge, eq, ne, le, or lt) (default is gt)
HYST ANY_NUM Hysteresis value
SENS ANY_NUM Sensitivity value
Output
Name Data Type Description
OUT BOOL Result of the comparison
Comparison Functions
FUNC Description
Gt Greater than
Ge Greater than or equal
Eq Equal
Ne Not equal
Le Less than
Lt Less than or equal
Hysteresis and sensitivity settings are provided to prevent toggling around a boundary condition. Sensitivity refers to the
tolerance band of the equality relationship. That is, IN1 is equal to IN2 if it is numerically within the band defined by IN2 ±
SENS. Hysteresis applies for all relationships. Once any relationship evaluates to True, it must exceed the normal
specification by the value of HYST amount before it evaluates to False.
Not Equal
Less Than
Note This block is not recommended for use in any new controller applications (ControlST V05.02 or later). Refer to the
section Legacy Category Blocks.
The Compare with Hysteresis (COMPHYS) block compares two floating point values and sets an output Boolean reflecting
the result. Hysteresis. Sensitivity settings are provided to prevent toggling around a boundary condition. The supported
functions include: greater than (gt), greater than or equal to (ge), equal to (eq), less than (lt), or less than or equal to (le).
Sensitivity refers to the thickness of the equality relationship. That is, IN1 is equal to IN2 if it is numerically within the band
defined by IN2 ± SENS. Hysteresis applies for all relationships. Once any relationship evaluates to True it must exceed the
normal specification by the HYST amount before it evaluates to False.
Note This block is a variant block that supports the following block data types: Real and Long Real. To modify the data
type, refer to the section Change Data Type of Variant Block.
COMPHYS Block
Output
Name Data Type Description
The Controller Monitor (CTRLR_MON) block is used for various purposes. The Block has a POWER_UP output that
transitions to True 5 sec after the controller is in control mode. SIG_FORCED turns on if there are any forced variables in the
controller, SIG_FORCED is set to False for 2 s every time the number of forced variables are increased. SIG_FORCED_
NUM indicates the number of forced variables in the controller.
The block detects the current controller configuration (Simplex, Dual, or TMR). According to this configuration over
temperature alarms OVERTEMP_R, OVERTEMP_S, OVERTEMP_T (not applicable for all platforms, refer to the table,
Platforms) and controller online variables ONLINE_R, ONLINE_S, and ONLINE_T are generated for R, S and T
respectively.
The input ONLINE_FL_TMR is used to delay the controller online variables change from True to False in the event the
controller heartbeat stops.
Note CTRLR_MON creates global variables that can be used throughout the controller application software.
The outputs, HW_ALARM_R, HW_ALARM_S, HW_ALARM_T, become True any time a hardware failure diagnostic is
generated for R, S and T controllers, respectively. The outputs, FAN1_FAIL_R, FAN1_FAIL_S and FAN1_FAIL_T, become
True any time a FAN 1 failure is detected for R, S and T controllers, respectively (not applicable for all platforms; refer to the
table Platforms). The outputs, FAN2_FAIL_R, FAN2_FAIL_S and FAN2_FAIL_T, become True any time a FAN 2 failure is
detected for R, S and T controllers, respectively (applicable to UCSB only). Fans 1 and 2 are available only in the UCSB and
the corresponding failure outputs will be False for other platforms.
Note In the Virtual Controller, the OVERTEMP_R, OVERTEMP_S and OVERTEMP_T are all False because there is no
temperature measurement functionality. ONLINE_S and ONLINE_T are always False irrespective of the controller
configuration (Simplex, Dual or TMR).
CTRLR_MON Block
Outputs
Name Description Type Initial Visibility Usage
Value
HW_ALARM_R R controller hardware failure alarm BOOL False Always Output
HW_ALARM_S † S controller hardware failure alarm BOOL False Always Output
HW_ALARM_T †† T controller hardware failure alarm BOOL False Always Output
FAN1_FAIL_R R controller Fan1 failure BOOL False Always Output
FAN1_FAIL_S † S controller Fan1 failure BOOL False Always Output
FAN1_FAIL_T †† T controller Fan1 failure BOOL False Always Output
FAN2_FAIL_R R controller Fan2 failure BOOL False Always Output
FAN2_FAIL_S † S controller Fan2 failure BOOL False Always Output
FAN2_FAIL_T †† T controller Fan2 failure BOOL False Always Output
POWER_UP Controller powered up BOOL 0 Always Output
SIG_FORCED Signal forced in controller BOOL False Always Output
SIG_FORCED_NUM Number of forced signals INT 0 Always Output
OVERTEMP_R R controller over temperature BOOL False Always Output
OVERTEMP_S † S controller over temperature BOOL False Always Output
OVERTEMP_T †† T controller over temperature BOOL False Always Output
ONLINE_S † R controller online BOOL False Always Output
ONLINE_R S controller online BOOL False Always Output
ONLINE_T †† T controller online BOOL False Always Output
† Exists only when the controller’s redundancy is DUAL or TMR
†† Exists only when the controller’s redundancy is TMR
COUNTER Block
Inputs
Name Data Type Description
INC BOOL Triggers another count on its rising edge
MAX_CNT DINT The maximum count value
RESET BOOL Zeros the counter
RUN BOOL Enables the counter
Outputs
Name Data Type Description
AT_CNT BOOL Indicates the counter has reached the maximum count value
CUR_CNT DINT Current count value (always ≤ MAX_CNT)
States
Name Data Type Description
This is the variable that holds the current count. It is a hidden pin that
can be viewed or changed by right-clicking the block and selecting Edit
LAST_CURCNT DINT
Block Pins. Writing to this variable is not recommended, but can be
used to preset block states.
This is the variable that holds the state, indicating the counter has
reached the maximum count value. This is a hidden pin. It can be
LAST_ATCNT BOOL viewed or changed by right-clicking the block and selecting Edit Block
Pins. Writing to this variable is not recommended, but can be used to
preset block states.
Note The OUT value freezes if the associated task/user block stops running.
DEVICE_HB Block
Output
Name Data Type Description
OUT DINT Device heartbeat
Block Configuration
Disabling Transmitters
When the quality status of transmitter A (IN_ABQ) is BAD (False), ABQ and AD become True and transmitter A is
automatically disabled. Once the quality status of transmitter A becomes GOOD (True), ABQ becomes False. If the quality
status of transmitter A becomes GOOD (True) and the value of input A is within the deviation limits set by the user, AD
becomes False and A is automatically enabled. This concept also applies to input B.
A transmitter can be manually disabled using the CTL_EXT input. If input A and B are both enabled and have a GOOD
quality status and A is manually disabled, then the corresponding output, AD, becomes True to indicate that input A is
disabled. If input A is enabled and B is disabled, then BD is True.
Control Word
Control word (CTL_EXT) is used by the HMI operator for manual control. The manual commands from the HMI allow each
input to be enabled or disabled. A manually disabled transmitter can be manually enabled, regardless of its deviation status.
The command enumerations are defined in the following table.
CTL_EXT Enumerations
Enumeration Command
NO_CMD No Command
EN_A_CMD Enable Input A Command
DIS_A_CMD Disable Input A Command
EN_B_CMD Enable Input B Command
DIS_B_CMD Disable Input B Command
Note Operation of the CTL_EXT pin in the Mark VIeS control differs from that in other Mark VIe control products. In the
Mark VIeS control, the variable attached to the CTL_EXT pin must be from a consumed EGD page. The EGD producer
device driving the variable must implement the necessary push-button reset logic.
Example Configuration
An HMI faceplate is created to display data from the DUALSEL_S2 block from a Mark VIeS control. EGD signals are
consumed by the HMI from the Mark VIeS control and are used to drive the faceplate. The control word from the Mark
VIeS control is used for feedback. Control commands are sent to an EGD signal driven from a Mark VIe device. For
example, after adding the DUALSEL_S2 block to the Mark VIeS control system and attaching the EGD signals to the
faceplate, the following configuration is required:
In a Mark VIe device:
• Create a control word variable.
• Add the control word variable to a produced EGD page.
• Add push-button reset logic in the blockware to reset the control word value to NO_CMD (0). The control word should
be reset after one second of it being non-zero.
In the HMI:
• Attach the control word variable from the Mark VIe control to the control word logic in the appropriate DUALSEL_S2
faceplate.
In the Mark VIeS device:
• Attach the control word variable from the Mark VIe control to the CTL_EXT pin of the appropriate DUALSEL_S2
block.
DS Mode Enumerations
Enumeration Function
AVG Average of A and B
MIN Minimum of A and B
MAX Maximum of A and B
Operating mode (MODE) is a block-operating mode that depends on DS and the quality status of the inputs. The operating
mode enumerations are defined in the following table.
MODE Enumerations
Enumeration Operating Mode
AVG Average of A and B
MIN_A-B Minimum of A and B
MAX_A-B Maximum of A and B
A Input A
B Input B
DEFAULT Input DF
• AVG, MIN_A-B, or MAX_A-B is the operating mode when both transmitters are not BAD quality and are enabled.
• A mode is selected when transmitter B is manually disabled or determined to be BAD quality.
• B mode is selected when transmitter A is manually disabled or determined to be BAD quality.
• DEFAULT is the operating mode selected automatically when both transmitters are determined to be bad quality and/or
disabled.
Deviation Alarms
A and B values are compared to determine if the absolute value of their difference is greater than or equal to the deviation
limit, DL. If so, the deviation high alarm, ODH, becomes True, delayed by the deviation time delay, DT. The deviation alarm
will not become False until the absolute difference between A and B is less than the value of DL minus DLDB (deviation
limit dead band)or either input is disabled.
Note The deviation high output, ODH, becomes True when at least one transmitter is in deviation. Also, if a transmitter
input is disabled, the deviation alarm for that transmitter is disabled.
In general, the deviation alarm only sets Boolean outputs and has no influence on the functionality of the block (that is, the
transmitter in deviation with the output is not automatically disabled, and the block mode does not change).
Note Refer to the section Alarm and Event Configuration for more information.
ToolboxST Configuration
Inserting this block into the application program will generate the window displayed in the following figure. This prompts the
user to Enter Device Description, Enter Device Name, and Enter Format Specification in the Values column.
The block and pin connections are configured automatically. The object will display in the ToolboxST application.
DUALSEL_S2 Block
Pin names are in the form Device Value.Pin Name, where Device Value has the attribute value 00DUALSEL_S21000 and pin
Name is the block input/output pin name. (Refer to the table Global Variables.) The description, DUALSEL_S2 Description,
becomes the prefix of the block input/output descriptions. The FormatSp Attribute Name Value, TempFS, is the format
specification of the block output. The DLFormatSp Attribute Name Value, TempDiffFS, is the format specification of the
block DL pin output.
Note The only exception to the rule is the output pin ({Device}) where the global pin name is in the form Device Value pin
name without the " ".
Inputs
Name Global Description Data Type Initial Value Visibility
A Yes {Desc} Trans A input REAL 0 Always
B Yes {Desc} Trans B input REAL 0 Always
CTL_EXT Yes {Desc} Control word UINT (ENUM) NO_CMD Always
Default output if both
DF No REAL 0 Parameter
transmitters are bad
DL No Deviation alarm limit REAL 5 Parameter
Deviation alarm limit
DLDB No REAL 2 Parameter
deadband
DS No Dual Select Mode property UINT (ENUM) AVG Parameter
DT No Deviation alarm delay UDINT 1000 Parameter
IN_ABQ No Trans A bad quality BOOL False Always
IN_BBQ No Trans B bad quality BOOL False Always
RATE No Selection change rate limit REAL 1 Parameter
Global Variables
Pin Name Description Alarm Alarm Event EGD Page External
Class Access
DUALSEL_S21001 DUALSEL_S2 1001 Not Alarmed — False $Default ReadOnly
DUALSEL_S2 1001
DUALSEL_S21001.A Not Alarmed — False $Default ReadOnly
Trans A input
DUALSEL_S2 1001
DUALSEL_S21001.ABQ Not Alarmed — False $Default ReadOnly
Trans A bad quality
DUALSEL_S2 1001
DUALSEL_S21001.AD Not Alarmed — True $Default ReadOnly
Trans A deselected
DUALSEL_S2 1001
DUALSEL1001.B Not Alarmed — False $Default ReadOnly
Trans B input
DUALSEL_S2 1001
DUALSEL_S21001.BBQ Not Alarmed — False $Default ReadOnly
Trans B bad quality
DUALSEL_S2 1001
DUALSEL_S21001.BD Not Alarmed — True $Default ReadOnly
Trans B deselected
DUALSEL_S2 1001
DUALSEL_S21001.CTL_EXT Not Alarmed — False $Default ReadOnly
Control word
DUALSEL_S2 1001
DUALSEL_S21001.MODE Not Alarmed — False $Default ReadOnly
Block mode
DUALSEL_S2 1001
DUALSEL_S21001.OBQ Not Alarmed — False $Default ReadOnly
Bad quality
DUALSEL_S2 1001
DUALSEL_S21001.ODH Alarmed Alert False $Default ReadOnly
High deviation
DUALSEL_S2 1001
DUALSEL_S21001.SEL_P Not Alarmed — False $Default ReadOnly
Select type property
EXPAND_UDI Block
Input
Name Data Type Description
IN UDINT Input 32 bit integer to expand
Outputs
Name Data Type Description
OUT0 BOOL Contains the results of the expansion process (least significant binary digit)
↓ ↓ ↓
OUT31 BOOL Contains the results of the expansion process (most significant binary digit)
Square
Sine
Ramp
Triangular
FUNGEN Block
Output
Name Data Type Description
OUTPUT REAL Output of the function
INTERP_V2 Block
Inputs
Name Data Type Description
ENABLE BOOL Block enable (default is True)
IN REAL Input value
N UDINT Number of elements in argument and function tables (must be ≥ 2)
X[ ] REAL Argument table (values must be monotonically increasing)
Y[ ] REAL Function table
Outputs
Name Data Type Description
OUT REAL Interpolated output
M REAL Slope of output function
ERROR BOOL Error detected in input value or argument table
LATCH Block
Inputs
Output
Name Data Type Description
OUT BOOL Output of the latch
State
AND Block
Logic
INPUT01 INPUT02 OUT
1 1 1
1 0 0
0 1 0
0 0 0
OUT will be 1 only if all inputs are 1. Otherwise, OUT will be 0.
Inputs
Name Data Type Description
INPUT01 BOOL First input
↓ ↓ ↓
INPUTnm BOOL N’th input
Output
Name Data Type Description
OUT BOOL Output
Track Type enumeration, CMD_TRK is used when a Command track enumeration output is required.
Name Description
NO_TRACK-NO_BLOCK No Track and no Track is blocked
TRACK-NO_BLOCK Track active and no Track is blocked
NO_TRACK-BLOCK No Track and a Track is blocked
TRACK-BLOCK Track active and a Track is blocked
Inputs
Name Description Type Array Initial Value Visibility Usage
EQN Logic equation STRING 0 IN1 Always Const
TYP Logic type UINT 0 {Type} Always Input
IN1 Input 1 BOOL 0 False Always Input
Input 1 toggle
IN1T BOOL 0 False Always State
value
Input 1 toggle
IN1TE BOOL 0 False Always Input
enable from HMI
Input 1 toggle
IN1TP BOOL 0 False Always Const
permitted
IN2 Input 2 BOOL 0 False Always Input
Input 2 toggle
IN2T BOOL 0 False Always State
value
Input 2 toggle
IN2TE BOOL 0 False Always Input
enable from HMI
Input 2 toggle
IN2TP BOOL 0 False Always Const
permitted
↓ ↓ ↓ ↓ ↓ ↓ ↓
↓ ↓ ↓ ↓ ↓ ↓ ↓
IN32 Input 32 BOOL 0 False Always Input
Input 32 toggle
IN32T BOOL 0 False Always State
value
Input 32 toggle
IN32TE BOOL 0 False Always Input
enable from HMI
Input 32 toggle
IN32TP BOOL 0 False Always Const
permitted
Outputs
Name Description Type Array Initial Value Visibility Usage
Test string for
{Device}{Type} BOOL 0 False Always Output
equation
Output
OUT UINT 0 NO_PERM -NO_BYPASS Always Output
enumeration
NOT Block
Input
Name Data Type Description
A BOOL Input value
Outputs
Name Data Type Description
OUT_A BOOL Non-inverted value of input A
NOT_A BOOL Inverted value of input A
OR Block
Logic
INPUT01 INPUT02 OUT
0 0 0
0 1 1
1 0 1
1 1 1
OUT will be 0 only if all inputs are 0. Otherwise, OUT will be 1.
Inputs
Name Data Type Description
INPUT01 BOOL First input
↓ ↓ ↓
INPUTnm BOOL N’th input
Output
Name Data Type Description
OUT BOOL Output
MEDIAN Block
Inputs
Name Data Type Description
INPUT1 REAL Input variable 1
INPUT2 REAL Input variable 2
INPUT3 REAL Input variable 3
DIFLMT REAL Maximum to minimum difference limit
LENABLE BOOL Block enable logical
Outputs
Name Data Type Description
MEDIAN REAL Median selected output value
LDIFLMT BOOL Maximum to minimum difference limit exceeded logical
Block Configuration
Disabling Transmitters
When the quality status of transmitter A is BAD (False), then ABQ and AD become True and transmitter A is automatically
disabled. Also, depending on the DS enumeration selected, the average, minimum, or maximum of inputs B and C is
transferred to OUT. Once the quality status of transmitter A becomes GOOD (True), ABQ becomes False. If the quality status
of transmitter A becomes GOOD (True) and the value of input A is within the deviation limits set by the user, AD becomes
False and A is automatically enabled. This concept also applies to inputs B and C.
A transmitter can be manually disabled through the CTL_EXT input. If input A, B, and C are all enabled and have a GOOD
quality status, and A is manually disabled, then the corresponding output, AD, becomes True to indicate that input A is
disabled. If input A is enabled and B is disabled, then BD is True. If input B is enabled and C is disabled, then CD is True.
Control Word
Control word (CTL_EXT) is used by the HMI operator for manual control. The manual commands from the HMI allow each
input to be enabled or disabled. A manually disabled transmitter can be manually enabled, regardless of its deviation status.
The command enumerations are defined in the following table.
Note A manually disabled transmitter may be manually enabled, regardless of its deviation status, unless the block is in
Average mode. For further details, refer to the section Deviation Alarms.
Note Operation of the CTL_EXT pin in the Mark VIeS control differs from that in other Mark VIe control products. In the
Mark VIeS control, the variable attached to the CTL_EXT pin must be from a consumed EGD page. The EGD producer
device driving the variable must implement the necessary push-button reset logic.
Commands are only accepted by the block if a transition from NO_CMD to a command value is detected while the CTL_
EXT input is healthy. After a command is accepted by the block, the CTL_EXT pin is ignored for a period of two seconds
after which a valid transition from NO_CMD must be detected to accept another command. An example configuration is as
follows:
Example Configuration
An HMI faceplate is created to display data from the MEDSEL_S2 block from a Mark VIeS control. EGD signals are
consumed by the HMI from the Mark VIeS control and are used to drive the faceplate. The control word from the Mark
VIeS control is used for feedback. Control commands are sent to an EGD signal driven from a Mark VIe device. For
example, after adding the MEDSEL_S2 block to the Mark VIeS control system and attaching the EGD signals to the
faceplate, the following configuration is required:
In a Mark VIe device:
• Create a control word variable.
• Add the control word variable to a produced EGD page.
• Add push-button reset logic in the blockware to reset the control word value to NO_CMD (0). The control word should
be reset after one second of it being non-zero.
In the HMI:
• Attach the control word variable from the Mark VIe control to the control word logic in the appropriate MEDSEL_S2
faceplate.
In the Mark VIeS device:
• Attach the control word variable from the Mark VIe control to the CTL_EXT pin of the appropriate MEDSEL_S2
block.
DS Enumerations
Enumeration Function
AVG Average of A and B
TS Mode Enumerations
Enumeration Function
AVG Average of A, B and C
Operating mode (MODE) is the block-operating mode that depends on DS, TS, and the quality status of the inputs. The
operating mode enumerations are defined in the following table.
MODE Enumerations
Enumeration Operating Mode
MIN_B-C Minimum of B and C
MIN_A-B Minimum of A and B
MIN_A-C Minimum of A and C
MAX_B-C Maximum of B and C
MAX_A-B Maximum of A and B
MAX_A-C Maximum of A and C
AVG_A-B Average of A and B
A Input A
B Input B
C Input C
DEFAULT Input DF
• MEDIAN or AVG_ABC mode is selected when none of the transmitters have a BAD quality status.
• AVG_A-B mode is selected when a BAD quality is detected on transmitter C or when C is manually disabled, and the DS
enumeration is AVG.
• MIN_A-B mode is selected when a BAD quality is detected on transmitter C or when C is manually disabled, and the DS
enumeration is MIN.
• MAX_A-B mode is selected when a BAD quality is detected on transmitter C or when C is manually disabled, and the
DS enumeration is MAX.
• A mode is selected when 1XMTR_P is True and B and C transmitters are disabled.
• DEFAULT mode is selected when all transmitters are BAD quality and/or disabled or 1XMTR_P is False, and two
transmitters are BAD quality and/or disabled.
Deviation Alarms
Each transmitter value is compared with the output to determine if it is outside of the deviation limit, DL. If so, the deviation
high alarm for the deviant input DA, DB, or DC, for transmitters A, B, or C respectively, and ODH become True, delayed by
the deviation time delay, DT.
The deviation alarms will not become False until the absolute difference between the deviant input and the output is less than
the value of DL minus Deviation Limit Deadband (DLDB), or the deviant input is disabled.
Note The Deviation High output, ODH, becomes True when at least one transmitter is in deviation. Also, if a transmitter
input is disabled, the deviation alarm for that transmitter is disabled.
In general, the deviation alarm only sets Boolean outputs and has no influence on the functionality of the block (for example,
the transmitter in deviation with the output is not automatically disabled, and the block mode does not change).
However, if the block is calculating the average of all three transmitters (all three transmitters are enabled and TS = AVG), a
transmitter that gets a high deviation will be automatically disabled immediately (ignoring the value of DT). The high
deviation alarm will be True for a single block execution. It will be enabled when the absolute difference between the deviant
input and the output is less than the value of DL minus DLDB.
ToolboxST Configuration
Inserting the MEDSEL_S2 block in the application program displays the Enter the Attribute Instance Values window,
prompting the user to enter the device description, device name, and format specification in the Values column. The block
then automatically creates the variables associated with the block and provide the appropriate attributes for each variable (for
example, Type and Format Spec variables that need to be on EGD will automatically be placed on the $Default EGD page,
and so forth).
For this example, accept the default options for these attributes. The Device Name is 00MEDSEL_S21000, the description is
MEDSEL_S2 Description, and the format specification is TempFS.
When the user clicks OK, the block and pin connections are automatically configured and Global pins are generated. Pin
names are in the form Device Value.pin Name, where Device Value has the attribute value 00MEDSEL_S21000 and Input_
Name is the block input/output name. (Refer to the table Global Variables.) For this example, the description MEDSEL_S2
Description becomes the prefix of the block input/output descriptions. The FormatSp Attribute Name Value in the previous
example, TempFS, is the format specification of the block output. The DLFormatSp Attribute Name Value, TempDiffFS, is the
format specification of the block DL pin output.
Note The only exception to this rule is the output pin ({Device}), where the global pin name is in the form Device Value.pin
Name without the " ".
Once the object has been added successfully, the block displays in the ToolboxST application as displayed in the following
figure.
MEDSEL_S2 Block
Outputs
Name Global Description Data Type Initial Value Visibility
{Device} Yes {Desc} REAL 0 Always
ABQ Yes {Desc} Trans A Bad quality BOOL False Always
AD Yes {Desc} Trans A disabled BOOL False Always
BBQ Yes {Desc} Trans B Bad quality BOOL False Always
BD Yes {Desc} Trans B disabled BOOL False Always
CBQ Yes {Desc} Trans C Bad quality BOOL False Always
CD Yes {Desc} Trans C disabled BOOL False Always
DA Yes {Desc} Trans A high deviation BOOL False Always
DB Yes {Desc} Trans B high deviation BOOL False Always
DC Yes {Desc} Trans C high deviation BOOL False Always
MODE Yes {Desc} Block mode UINT (ENUM) MEDIAN Always
OBQ Yes {Desc} Bad quality BOOL False Always
ODH Yes {Desc} High deviation BOOL False Always
SEL_P Yes {Desc} Select Type property UINT (ENUM) MEDIAN Internal
Note This is a variant block that supports any one the following block data types: BOOL, INT, DINT, REAL, LREAL,
UINT, and UDINT. The data type of the DEST pin must match the selected data type of the block. Refer to the section .
MOVE Block
Inputs
Name Data Type Description
ENABLE BOOL Block enable (default is True)
SRC ANY Source variable
Output
Name Data Type Description
DEST ANY Destination variable (data type enforced by the block type)
ON_OFF_DELAY Block
Inputs
Name Data Type Description
IN BOOL Boolean input signal
PU_DEL UDINT Pickup delay (ms)
DO_DEL UDINT Dropout delay (ms)
Output
Name Data Type Description
OUT BOOL Delayed filtered output
Note This block is a variant block that supports any one of the following block data types: BOOL, INT, DINT, REAL,
LREAL, UINT, and UDINT. To modify the data type, refer to the section Change Data Type of Variant Block.
PREVOTE Block
Outputs
Name Data Type Description
RHLT BOOL R prevote variable health
SHLT BOOL S prevote variable health
TAHLT BOOL TA prevote variable health
TBHLT BOOL TB prevote variable health
R ANY R prevote destination variable
S ANY S prevote destination variable
TA ANY TA prevote destination variable
TB ANY TB prevote destination variable
PULSE Block
Inputs
Name Data Type Description
TRIG BOOL Triggers a new pulse on its rising edge
WIDTH UDINT Period of the pulse in milliseconds (default is 0, 1 sweep)
Output
Name Data Type Description
OUT BOOL Pulse output
State
Name Data Type Description
CWIDTH UDINT Elapsed time since the pulse began in milliseconds
This is the state pin for storing the trigger status of the block, a hidden pin, It can
be viewed or changed by right-clicking the block and selecting Edit Block Pins.
ISTRIGGERED BOOL
Writing to this variable is not recommended, but can be used to preset block
states.
Supported Operators
Operation Operator
Parenthesis ()
NOT ~
OR +
AND *
RUNG Block
Inputs
Name Data Type Description
EQN Constant String Boolean equation
A BOOL Required Boolean input used in equation
↓ ↓ ↓
P BOOL Boolean input used in the equation
Output
Name Data Type Description
OUT BOOL The result of the equation
Note This is a variant block that supports any one the following block data types: BOOL, INT, DINT, REAL, LREAL,
UINT, and UDINT. The default data type is REAL. To modify the data type, refer to the section Change Data Type of Variant
Block.
SELECT Block
Inputs
Name Data Type Description
ENABLE BOOL Block enable (default is True)
CASC ANY Default (cascade) selection
IN1 ANY First input variable
SEL1 BOOL First selection input
↓ ↓ ↓
INn ANY N'th input variable
SELn BOOL N'th selection input
Output
Name Data Type Description
OUT ANY Selected output
The System Outputs (SYS_OUTPUTS) block provides a command interface between the application code and the I/O
subsystem (that is, I/O packs). The command input Booleans are synchronously transmitted to every I/O pack. The commands
are interpreted as level values by the I/O packs and so should not be kept in the True state, but rather pulsed for a few frames
and then reset.
SYS_OUTPUTS Block
Inputs
Name Data Type Description
MRESET BOOL Application Reset: Directs all I/O packs to reset any latched conditions resulting from
previous trips
RSTSUIC BOOL Reset Suicide: Directs all I/O packs to unsuicide any closed loop regulators. Suiciding a
regulator forces it into a safe state. Closed loop operation may not be re-started without
lifting the suicide
RSTDIAG BOOL Reset Diagnostics: Directs all I/O packs and the controller to clear from the queue all
diagnostics in the normal state
RSTSYS BOOL Reset System Limits: Directs all I/O packs to clear all latched system limit logicals
TEMP_STATUS Block
TEMP_STATUS Outputs
Output Pin Data Type Platform Functionality
UCSB, UCSC Remains False, is not applicable
Is False if CPU_TEMP is within limits
If USR_ENA is False, then ALARM is True if CPU_TEMP is greater than or equal to DEF_
ALARM BOOL THLD.
UCCC
If USR_ENA is True, then ALARM is True if CPU_TEMP is greater than or equal to THLD.
If ALARM is True and if OTPROT is True, then the controller reboots to a lower power
state
UCSB, UCSC Not Applicable; has a value of 0
CPU_TEMP REAL
UCCC Provides the CPU temperature in °C
UCSC Not Applicable; has a value of 0
BRD_TEMP REAL UCSB Processor board hot spot temperature in °C
UCCC Motherboard temperature in °C
UCSC Temperature value of sensor on Carrier Board in °C
TEMP1 REAL UCSB Processor board ambient temperature in °C
UCCC Temperature value of sensor #1 near resistor on EPMC in °C
UCSB, UCSC Not Applicable; has a value of 0
TEMP2 REAL
UCCC Temperature value of sensor #2 at bottom of EPMC in °C
UCSB, UCSC Not Applicable
DELTA REAL
UCCC TEMP1 - TEMP2 in °C
UCSB, UCSC Not used
DEF_THLD REAL 90°C (194 °F) is the default value of CPU temperature limit for alarm, °C.
UCCC
Used when USR_ENA is False.
UCSB, UCSC Not used
DEF_HYST REAL 5°C (9 °F) is the default value of CPU temperature hysteresis.
UCCC
Used to determine alarm reset value when USR_ENA is False.
Note This block is not recommended for use in any new controller applications (ControlST V05.02 or later). Refer to the
section Legacy Category Blocks.
The Timer (TIMER) block accumulates incremental time into CURTIME while RUN is True. When CURTIME is equal to
MAXTIME, AT_TIME transitions to True. If RUN is False then timing is suspended but CURTIME holds its value. If
RESET is True then CURTIME is set to zero and counting is suspended. The AUTO_RS flag can reset the timer after it
reaches MAXTIME. In this mode, AT_TIME will be True for one scan and the CURTIME will be set to the residual count so
that no time is lost.
The time period taken by the output pin AT_TIME to transition is always a multiple of the frame execution period set in the
ToolboxST application. For accurate execution of the block, set MAX_TIME as a multiple of the frame execution period.
The maximum value of mCurTime in the TIMER block can be 4294967295ms (0xFFFFFFFF).
TIMER Block
Inputs
Name Data Type Description
MAXTIME UDINT Maximum time value in milliseconds
RESET BOOL Zeros the timer
AUTO_RS BOOL Automatically zeros the timer when AT_TIME is set. Maintains
residual count.
RUN BOOL Enables the timer
Outputs
Name Data Type Description
AT_TIME BOOL Indicates the timer has reached the maximum time value
CURTIME UDINT Current time value in milliseconds
State
Name Data Type Description
LAST_CURTIME UDINT This is the last current time value in milliseconds, a hidden pin. It can
be viewed or changed by right-clicking the block and selecting Edit
Block Pins. Writing to this variable is not recommended, but can be
used to preset block states.
TIMER_V2 Block
Outputs
Name Data Type Description
AT_TIME = True indicates that the timer has reached the maximum time
value. In Timer Version 2, AT_TIME can be used as a signal for the RESET
AT_TIME BOOL pin as was the case in many existing Mark VI controller applications. This
logic results in a loss of residual time, whereas the use of AUTO_RS results
in no loss of residual time.
CURTIME UDINT Current time value in milliseconds
State
Name Data Type Description
This is the last current time value in milliseconds, a hidden pin. It can be viewed
LAST_CURTIME UDINT or changed by right-clicking the block and selecting Edit Block Pins. Writing to
this variable is not recommended, but can be used to preset block states.
Note This is a variant block which supports any one the following block data types: BOOL, INT, DINT, REAL, LREAL,
UINT, and UDINT. The default data type is REAL. To modify the data type, refer to the section Change Data Type of Variant
Block.
UNIT_DELAY Block
Input
Name Data Type Description
IN ANY Input value to be delayed
Outputs
Name Data Type Description
OUT ANY Delayed value
STATE ANY Current value of the input (for feedback)
Inputs
Name Data Type Description
VAR1 Simple Input variable to know the health status
↓ ↓ ↓
VAR32 Simple Input variable to know the health status
Outputs
Name Data Type Description
When a variable VARnn is believed to be working properly, the corresponding output pins HEALTHnn and LINKOKnn are
both set to True. This happens when all tests defined for its source are completed successfully. This includes both variable
signal connectivity as well as any healthy/unhealthy determinations made by the specific I/O pack.
The HEALTHnn output provides an indication of the health of the corresponding variable VARnn. If the Ethernet cable is
unplugged from a simplex analog input I/O pack, this causes a connectivity issue resulting in the HEALTHnn variable being
set to False to indicate an Unhealthy signal. The I/O pack can set the HEALTHnn variable to False for other conditions, such
as if an input configured as a 4–20 mA analog input has its input current out of range.
I/O points transition from Unhealthy to Healthy the first frame they are received Healthy from the I/O module.
Note For input health information to be viewable in a live data display, for example in Live View, Trender, or the blockware
editor, the input must be connected to either a VAR_HEALTH or AI block. Refer to the table, Output Pin States.
If LINKOKnn is True, the controller has successfully received the EGD data packet from the I/O pack or other source. If
LINKOKnn is False, the EGD data packet has not been received and HEALTHnn will always be False as well.
Each configured VARnn input on the VAR_HEALTH block also has a separate output pin, LINKOKnn, even though it is a
component of the overall health. The LINKOKnn output applies to all of the data from a particular device and may be used as
an indication of electronic hardware health (for example, I/O pack health).
The HEALTHnn output for each variable provides the instantaneous status of the variable input. A healthy value on the
HEALTHnn output implies a healthy input pin. However, any user application code should allow an appropriate time before
responding to a transition from healthy to unhealthy. All Ethernet communication links have a bit error rate, so occasional loss
of a single EGD packet on an Ethernet network is considered normal and expected. The HEALTHnn output can go False after
only a single period loss of communication. In most applications that monitor variable health, it will be necessary to add a (1)
time delay or (2) period counter or (3) loss-counts-per-time-interval counter to the detected unhealthy transition based on the
specific needs of that I/O variable. Refer to the section Output Health Status Details for detailed timing.
• For a network with simplex redundancy, the VAR_HEALTH output status goes unhealthy after the loss of the only input
data packet.
• For a network with dual redundancy, the VAR_HEALTH output status goes unhealthy after the loss of both input data
packets.
• For a network with TMR redundancy, the VAR_HEALTH output status goes unhealthy after the loss of the second input
data packet.
This unhealthy status could be caused by a communication failure with the I/O pack or by the I/O pack's determination that
the signal is unhealthy based on conditions specific to that type of I/O pack and input.
External network/EGD page sources — including variables received over the UDH or Control Data Highway (CDH) using
EGD pages, the corresponding HEALTHnn output on the VAR_HEALTH block for an input variable does not go unhealthy
after the loss of a single input data packet containing that variable. Instead, the corresponding HEALTHnn output goes
unhealthy during the fourth unhealthy period. Since EGD pages can be configured to run at different rates, the health of the
variable is verified once each period as configured for that EGD exchange. Each time an EGD exchange is received, the
associated input variables in that exchange are set to healthy status and a timeout timer for that exchange is set to four. This
timeout timer is then decremented each time the configured time interval occurs. If the timeout timer reaches zero, all input
variables in that exchange are set with an unhealthy status and the counter remains at zero until the EGD exchange is
successfully received again.
Note If the VAR_HEALTH block has an anti-voted variable connected as an input, the corresponding VAR_HEALTH
output behaves the same as if the system has simplex redundancy, regardless of the actual redundancy of the system.
Simplex I/O pack, 0 0 Input is unhealthy and the IONet EGD exchange is not being received.
Simplex IONet 0 1 Input is unhealthy, but the IONet EGD exchange is being received.
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received.
Simplex I/O pack, Dual 0 0 Input is unhealthy and the IONet EGD exchange is not being received on either
IONet IONet.
0 1 Input is unhealthy, but the IONet EGD exchange is being received on at least
one IONet EGD exchange.
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received on at least one
IONet
Simplex I/O pack, TMR 0 0 Input is unhealthy and the IONet EGD exchange is not being received on either
IONet IONet that connects to this pack
0 1 Input is unhealthy, but the IONet EGD exchange is being received on at least
one IONet EGD exchange
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received on at least one
IONet
Dual I/O pack, Simplex 1 0 Not applicable.
IONet
Dual I/O pack, Dual 0 0 Input is unhealthy and the IONet EGD exchange is not being received on either
IONet IONet
0 1 Input is unhealthy, but the IONet EGD exchange is being received on at least
one IONet EGD exchange
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received on at least one
IONet
Dual I/O Pack, TMR 0 0 Input is unhealthy and the IONet EGD exchange is not being received on any
IONet IONet
0 1 Input is unhealthy, but the IONet EGD exchange is being received on at least
one IONet EGD exchange
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received on at least two
IONets
TMR I/O pack, Simplex N/A N/A Not applicable
IONet
TMR I/O pack, Dual 0 0 Input is unhealthy and the IONet EGD exchange is not being received on either
IONet IONet
0 1 Input is unhealthy, but the IONet EGD exchange is being received on at least
one IONet EGD exchange
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received on at least one
IONet
TMR I/O pack, TMR 0 0 Input is unhealthy and the IONet EGD exchange is not being received on any
IONet IONet
0 1 Either the input is unhealthy or else the EGD is being received on only one of
the three IONets
1 0 Not possible
1 1 Input is healthy and the IONet EGD exchange is being received on at least tow
IONets
VOTE Block
Inputs
Name Description Data Type Initial Value Visibility
IN1 Input 1 BOOL False Always
↓ ↓ ↓ ↓ ↓
IN32 Input 32 BOOL False Always
M M value of M-out-of-N voting UINT 1 Parameter
Outputs
Name Description Data Type Initial Value Visibility
ERR M value is out of range BOOL N/A Always
OUT Result of voting BOOL N/A Always