100% found this document useful (1 vote)
406 views92 pages

Mark Vies Safety Controller: Block Library

Uploaded by

azizi re
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
406 views92 pages

Mark Vies Safety Controller: Block Library

Uploaded by

azizi re
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 92

GEI-100691K

Mark* VIeS Safety Controller


Block Library
These instructions do not purport to cover all details or variations in equipment, nor to provide for every possible
contingency to be met during installation, operation, and maintenance. The information is supplied for informational
purposes only, and GE makes no warranty as to the accuracy of the information included herein. Changes, modifications,
and/or improvements to equipment and specifications are made periodically and these changes may or may not be reflected
herein. It is understood that GE may make changes, modifications, or improvements to the equipment referenced herein or to
the document itself at any time. This document is intended for trained personnel familiar with the GE products referenced
herein.
Public – This document is approved for public disclosure.
GE may have patents or pending patent applications covering subject matter in this document. The furnishing of this
document does not provide any license whatsoever to any of these patents.
GE provides the following document and the information included therein as is and without warranty of any kind,
expressed or implied, including but not limited to any implied statutory warranty of merchantability or fitness for
particular purpose.
For further assistance or technical information, contact the nearest GE Sales or Service Office, or an authorized GE Sales
Representative.

Revised: July 2018


Issued: Aug 2006

© 2006 – 2018 General Electric Company.


___________________________________
* Indicates a trademark of General Electric Company and/or its subsidiaries.
All other trademarks are the property of their respective owners.

We would appreciate your feedback about our documentation.


Please send comments or suggestions to controls.doc@ge.com

For public disclosure


Document Updates
Revision Location Description
Added a Note to notify users that the Mark VIeS control does not support
Introduction
status options
Clamp (CLAMP)
Dual Select Version 2 (DUALSEL_S2)
K
Function Generator (FUNGEN)
New blocks
Interpolator Version 2 (INTERP_V2)
Median Select Version 2 (MEDSEL_S2)
Vote (VOTE)
Controller Monitor (CTRLR_MON) Updated Mark VIeS Platforms table to include UCSC controller
J Updated TEMP_STATUS Inputs and TEMP_STATUS Outputs tables to
Temperature Status (TEMP_STATUS)
include UCSC controller
Cause and Effect Matrix New special task
Counter This block is not in the legacy category
H Black Channel Receiver (BLACK_RX)
Black Channel Transmitter (BLACK_TX) New SIGNATURE2
Black Channel Example
Temperature Status (TEMP_STATUS) Updated to better explain functionality based on controller platform
Legacy Category Blocks New section
Capture Data (CAPTURE)
G Logic Builder State Change (LOGIC_
BUILDER_SC) New blocks
On Off Delay (ON_OFF_DELAY)
Timer Version 2 (TIMER_V2)

2 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Contents
1 Introduction............................................................................................................................................4
2 Black Channel Receiver (BLACK_RX) .......................................................................................................7
3 Black Channel Transmitter (BLACK_TX)....................................................................................................8
4 Black Channel Example ............................................................................................................................9
5 Boolean Filter (BFILT) ........................................................................................................................... 16
6 Calculator (CALC) ................................................................................................................................ 17
7 Capture Data (CAPTURE) ...................................................................................................................... 18
8 Cause and Effect Matrix.......................................................................................................................... 24
9 Clamp (CLAMP) ................................................................................................................................... 24
10 Comment (_COMMENT) ....................................................................................................................... 25
11 Comment Block Functionality (_COMMENT_BF) ...................................................................................... 25
12 Comment No Break (_COMMENT_NB) ................................................................................................... 25
13 Compare (COMPARE) ........................................................................................................................... 26
14 Compare with Hysteresis (COMPHYS) ..................................................................................................... 30
15 Controller Monitor (CTRLR_MON).......................................................................................................... 32
16 Counter (COUNTER)............................................................................................................................. 36
17 Device Heartbeat (DEVICE_HB) ............................................................................................................. 37
18 Dual Select Version 2 (DUALSEL_S2) ...................................................................................................... 38
19 Expand Long Integer (EXPAND_UDI) ...................................................................................................... 44
20 Function Generator (FUNGEN)................................................................................................................ 45
21 Interpolator Version 2 (INTERP_V2)......................................................................................................... 47
22 Latch (LATCH) ..................................................................................................................................... 48
23 Logical AND (AND).............................................................................................................................. 49
24 Logic Builder State Change (LOGIC_BUILDER_SC) .................................................................................. 50
25 Logical NOT (NOT)............................................................................................................................... 61
26 Logical OR (OR) ................................................................................................................................... 62
27 Median Selector with Enable (MEDIAN) ................................................................................................... 63
28 Median Select Version 2 (MEDSEL_S2) .................................................................................................... 64
29 Move (MOVE)...................................................................................................................................... 72
30 On Off Delay (ON_OFF_DELAY)............................................................................................................ 73
31 Prevote (PREVOTE) .............................................................................................................................. 74
32 Pulse (PULSE)...................................................................................................................................... 77
33 Relay Ladder Logic (RUNG) ................................................................................................................... 78
34 Select (SELECT) ................................................................................................................................... 79
35 System Outputs (SYS_OUTPUTS) ........................................................................................................... 80
36 Temperature Status (TEMP_STATUS) ....................................................................................................... 81
37 Timer (TIMER)..................................................................................................................................... 84
38 Timer Version 2 (TIMER_V2).................................................................................................................. 85
39 Unit Delay (UNIT_DELAY) .................................................................................................................... 87
40 Variable Health (VAR_HEALTH) ............................................................................................................. 88
41 Vote (VOTE) ........................................................................................................................................ 92

Instruction Guide GEI-100691K 3


For public disclosure
1 Introduction

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:

• Block name and category


• Block description
• Block diagram
• Pin definitions
• Application notes (optional)
Each block has a full name and a simple name. The full name is descriptive and too long to display in a block diagram. For
this reason, all blocks have a simple name. The simple name is displayed in the ToolboxST application.
Floating point (REAL and LREAL) values conform to IEEE® 754. The standard defines certain computational exceptions that
may produce non-standard results, such as divide by zero. These non-standard values include infinities and Not a Numbers
(NaNs), which, if used in subsequent calculations, produce additional non-standard results. The software has been designed to
prevent the production and proliferation of such values. Function block descriptions may include additional details concerning
floating point exception handling where needed.
Block Libraries also contain rubber blocks, which are sized according to the number of pins used. Within the library, the
blocks are grouped functionally to simplify the task of converting ideas into blocks. For example, the Controller Monitor
(CTRLR_MON) block is a member of the System category.

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.

Pin Name Modifiers Description


^ prefixed with a carat (^ONREQ) Pin is rising-edge sensitive
Pin expects a variable that is an array of the size indicated
[ ] suffixed with square brackets (STATE[4])
within the brackets

4 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
1.1 Block Data Type
The pin data type identifier is listed beside the pin outside of the block diagram border. The basic data types used in the block
libraries are BOOL, INT, UINT, REAL, LREAL, DINT and UDINT. Blocks with data types ANY_NUM and ANY must have
the Block Data Type set to match the intended data type of the block output.

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.

Data Type Identifier Basic Data Type Description


A Any (ANY) Any data type
B Boolean (BOOL) 8-bit Boolean
I Integer (INT) 16-bit (Short) Signed Integer
DI Double Integer (DINT) 32-bit (Long) Signed Integer
R Real (REAL) 32-bit Floating Point
LR Long Real (LREAL) 64-bit (Long) Floating Point
UI Unsigned Integer (UINT) 16-bit (Short) Unsigned Integer
UDI Unsigned Double Integer (UDINT) 32-bit (Long) Unsigned Integer
N Numeric (ANY_NUM) Any data type except Boolean
S Analog or Boolean (Simple) Any simple data type

Data Type Identifier Type Definition Modifier Description


# m Build time constant

Note The Block Data Type is set in the block Property Editor.

1.2 Change Data Type of Variant Block


There are few blocks that support more than one data type as an input and/or output.

➢ To change the block data type


1. Select the block for which to change the data type.
2. From the Block Properties window, expand the General section.
3. From the Property Editor, select the Block Data Type.
4. From the Block Data Type drop-down box, select a valid data type for the block.

Instruction Guide GEI-100691K 5


For public disclosure
From the Block Data Type
drop down list , select a valid
data type for the block.

1.3 Legacy Category Blocks


Some of the controller software blocks have been put into the Legacy Category (this is the category that is used by the
ToolboxST Block Diagram Editor). This category is different than the blocks that reside in the Legacy Block Library. Legacy
category blocks are supported but not recommended for use in any new controller applications (ControlST V05.02 or later).
They are in the LEGACY category because no new development is to be done to add any new functionality to these blocks. In
many cases, there is a newer block that is preferred for use as a replacement for these blocks, as listed in the following table.

Legacy Category Rationale


Legacy Category Replacement
Reason
Block Block
_COMMENT is equivalent to the current functionality of _COMMENT_BF
_COMMENT_BF _COMMENT _COMMENT_BF used to provided a carriage-return/page-feed in the Mark VI and early
versions of Mark VIe controllers
TIMER TIMER_V2 TIMER_V2 supports AT_TIME output to RESET input
BFILT ON_OFF_DELAY Allows the Mark VIeS controller to have similar functionality as the Mark VIe controller
COMPHYS COMPARE Allows the Mark VIeS controller to have similar functionality as the Mark VIe controller

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.

6 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
2 Black Channel Receiver (BLACK_RX)
Block Category: Communications

The Black Channel Receiver (BLACK_RX) block


is a rubber block that allows for the connection of
up to 32 input variables of heterogeneous data
types with rubber pins. By default, the block is
displayed with only one variable input but may be
expanded as necessary for the application. If more
than 32 variables are required, the user may add
additional BLACK_RX blocks to the application.

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.

Instruction Guide GEI-100691K 7


For public disclosure
3 Black Channel Transmitter (BLACK_TX)
Block Category: Communications

The Black Channel Transmitter (BLACK_TX) block is a


rubber block that allows for the connection of up to 32
input variables of heterogeneous data types. By default,
the block is displayed with only one variable input but
may be expanded as necessary for the application. If more
than 32 variables are required, the user may add additional
BLACK_TX blocks to the application.

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

8 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
4 Black Channel Example
The black channel feature enables the transfer of safety control data between two separate Mark VIeS Safety controller
devices over the UDH network, using a new EGD page and unicast configuration. A matching pair of transmitter and receiver
blocks, BLACK_TX and BLACK_RX, are configured for the two Mark VIeS Safety control devices in the application. These
blocks run a data integrity check on each side of the black channel. The following figure displays an overview of the black
channel setup.
This example uses two simplex Mark VIeS safety controllers installed and set up on the same UDH network, as displayed
from the ToolboxST System Editor.

Instruction Guide GEI-100691K 9


For public disclosure
MarkVIeS_1 Device MarkVIeS_2 Device

HMI with
ToolboxST EGD Referenced
New EGD application Device
Page

VAR## pins must be connected to the same global variables ,


in the same order , in both black channel blocks .
Black Channel Example

10 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Open both Mark VIeS Component Editors, and select the General tab, Network Adapter 0, Adapter Settings. Verify that
the IP addresses are properly configured to be on the same network. The Black Channel uses UDH EGD Pages to send data
between each of the controllers. Routable EGD or controllers in the same subnet are the available options in the Mark VIeS
system, however any network topology that allows UDH EGD communication between the controllers would be considered
valid.

Instruction Guide GEI-100691K 11


For public disclosure
➢ To configure the Mark VIeS safety controllers for Black Channel communications
1. Verify that the controllers have been properly installed and configured for UDH network IP addresses.
2. From the first Mark VIeS Component Editor, EGD tab, right-click Produced Pages and select Add Page. Enter a
name for this page (for example blackTx).
3. Set the Destination to be the IP address of the second Mark VIeS controller and set the Mode to be Unicast.

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.

12 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
d. Use this example to verify that the data types for the Black_TX pins match the data types of the created variables.

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.

GEI-100691K Instruction Guide 13


For public disclosure
6. To connect the global variables to the block pins, from the Block Diagram Editor, double-click the Black_TX block and
select Browse Globals.
7. Select the appropriate global variable created from step 5.
8. From the second Mark VIeS Component Editor, EGD tab, select Referenced Devices and select the first Mark VIeS
controller (MarkVIeS_1) in this example.

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.

14 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
➢ To test the communication
1. Unlock the first controller.
2. From the Black_TX block, double-click a value for one of the VAR## pins (tiny green value).
3. From the Set Value dialog, change the Next Value and click Send & Close.
4. From the second controller’s Black_RX, notice that the data value of the matching VAR## pin has changed to match the
sent value from the first controller.
5. Disconnect the UDH cable from the transmitter end (Mark VIeS controller).
6. From the Black_RX block, notice that the LINK_OK pin connected variable changes to False.

Instruction Guide GEI-100691K 15


For public disclosure
5 Boolean Filter (BFILT)
Block Category: Boolean Operations

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.

16 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
6 Calculator (CALC)
Block Category: MATH

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.

The following operators are supported within EQUAT:


+ (add), - (subtract), * (multiply), / (divide), ^ (power), % (modulus), ABS() (absolute value), NEG() (negate), LOG()
(logarithm, base 10), LN() (natural logarithm), EXP() (Exponential e^x), RECIP (1/x), RND() (round to nearest integer), SQR
() (square root), COS() (cosine), SIN() (sine), TAN() (tangent), ACS() (arccosine), ASN() (arcsine), ATN() (arctangent).
The equation must be stated in terms of the operators and the A through H operands. The trigonometric functions expect angle
operands to be expressed in units of radians.
There is a limit of 64 elements (Operands and Operators) that may be specified in the equation string. For example, an
equation to ADD two input variables A+B, has two Operands (A and B) and one Operator (+): a total of three elements.
When using the division operator (/), if the denominator = 0, the denominator will be replaced by 3.4e-38.
When using the modulus operator (%), if the divisor = 0, the divisor will be replaced by 3.4e-38.
When using the RECIP() function, if the input operand A = 0, it will be replaced by 3.4e-38.
When using the SQR() function, if the input is negative, the output will be the square root of the absolute value of the input.
When using the TAN() function, if the input operand A is equal to np + p/2 (where n is an integer), then OUT = 0.
When using the LOG() function, if the input operand A is less than or equal to zero, then the output value is set to 0.
When using the LN() function, if the input operand A is less than or equal to zero, then the output value is set to 0.
When using the power operator (^), if the input operand A = 0 and operand B is not an integer, the calculation is done with the
rounded value of operand B.

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

Instruction Guide GEI-100691K 17


For public disclosure
7 Capture Data (CAPTURE)
Block Category: System
The Capture Data (CAPTURE) block collects multiple samples of 1 to 32 variables in a buffer that can be uploaded to
ToolboxST application or the Data Historian for display and analysis. Multiple clients may upload the same buffer. The block
supports a variety of triggering and sampling options. Changes to the configuration can only be accomplished by a download.
An optional, automatic re-enable feature allows the collector to re-arm for the next collection following a specified timeout
from the last upload.

CAPTURE Block

CAPTURE Block Expanded

18 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Inputs
Name Data Type Function Description
The sensitivity applied to the trigger condition for trigger evaluation (default is Level).

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

Instruction Guide GEI-100691K 19


For public disclosure
Inputs (continued)
Name Data Type Function Description
Relational comparison between the trigger variable (TR_VAR) and the trigger value (TR_VAL), to
be evaluated by the triggering logic each scan (default is NE)

EQ (1) – TR_VAR must equal to TR_VAL

GT (2) – TR_VAR must be greater than TR_VAL


Constant Trigger
TR_COND
Tr_Cond_T Condition GE (3) – TR_VAR must be greater than or equal to TR_VAL

LT (4) – TR_VAR must be less than TR_VAL

LE (5) – TR_VAR must be less than or equal to TR_VAL

NE (6) – TR_VAR must not be equal to TR_VAL


Constant Trigger
TR_VAL Value compared against the trigger variable for trigger evaluation (default is 0)
LREAL Value
Trigger
TR_VAR ANY Variable against which the trigger condition is evaluated (default is 0)
Variable
Constant Time Stamp
TSTAMP If True, the UTC time of each sample is collected with the sample (default is False)
BOOL Enable
One to thirty-two variables to be collected each sample. The trigger variable is not required to be
Collected
VAR1 ANY one of the captured variables, but including it in the variable list normally adds value to the
Variables
collection.
↓ ↓ ↓ ↓
One to thirty-two variables to be collected each sample. The trigger variable is not required to be
Collected
VAR32 ANY one of the captured variables, but including it in the variable list normally adds value to the
Variables
collection.
Manual (1) – Captured data must be manually uploaded by the user.

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

20 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Capture Block Theory of Operation
The Capture block is a software function used to collect application variables in real-time for offline display and analysis. The
core software is shared between the Capture block and Dynamic Data Recorders (DDRs). The main differences between them
are:

• 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.

Capture Block Configuration


The Capture block may be re-configured by either an offline or online download. Downloading causes the states of ALL
Capture blocks in the controller to be re-initialized, invalidating any data that may be in the process of being collected.
Therefore, if external blockware is used to sequence to collection of data, it must be sufficiently robust to recover from such a
re-initialization. This may be accomplished by examining the DONE and STATUS pins or through timeouts.

Capture Block Enabling Collections

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.

Instruction Guide GEI-100691K 21


For public disclosure
Capture Block Triggering Issues
The trigger event is evaluated differently for each of the buffer control modes. For the NORMAL and CIRCULAR modes the
sample period multiplier pin, FMULT allows the block to collect samples at rates slower than the block performs, thereby
extending its range. A sample is only collected every FMULT scans. Using the NORMAL mode, the trigger event is evaluated
every scan regardless of the value of FMULT. When the event occurs, the sample is collected and post-trigger samples are
collected every FMULT scans away from the trigger sample. Note that because the trigger sample may not occur on an
FMULT boundary, the time between the last pre-trigger sample and the trigger sample may not be the same when FMULT is
not equal to one.

Capture Block NORMAL


NORMAL mode is used to collect samples before and after a specified trigger event.
Once enabled, the block begins collecting pre-trigger samples, retaining the most recent PRE_SAM samples before a trigger
event occurs. Once the trigger occurs, the block collects POSTSAM more samples before changing the STATUS pin to
Complete. The trigger sample is included in the post sample count. Typically the buffer will contain PRE_SAM + POSTSAM
total samples. If the trigger occurs prior to collecting all of the pre-trigger samples, or the collection is halted prior to
capturing all of the post trigger samples this may not be the case.

Capture Block CIRCULAR


CIRCULAR mode is used to collect samples continuously until the buffer is manually stopped. Specifying a trigger event is
meaningless in this mode.
Once enabled, the block begins collecting samples, retaining the most recent PRE_SAM + POSTSAM total samples. It is
possible for the buffer to contain fewer samples if the collection is halted prematurely.

Capture Block ONLY


ONLY mode is used to collect samples only when the trigger event is True. The FMULT pin is ignored in this mode.
Once enabled, the block begins looking for trigger events every scan but only collects samples on the scans where the trigger
event is True. The block collects the first PRE_SAM + POSTSAM trigger samples before changing the STATUS pin to
Complete. It is possible for the buffer to contain fewer samples if the collection is halted prematurely.

Capture Block Time Stamping


The TSTAMP pin specifies whether wall clock time (in UTC format) is collected with each sample, or whether it is collected
only at the trigger event and all other sample times are extrapolated from the block performance period modified by FMULT.
It is recommended that TSTAMP always be left True, to insure that trends are displayed with the most accurate timestamp
information.

22 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Capture Block Status
The state of each collection is expressed through the DONE and STATUS output pins. The DONE pin may be monitored by
application code to drive manual reset algorithms. The STATUS pin provides more detailed state information and is usually
published on EGD for use by external clients. The definition of the states is affected by the specified buffer control mode and
is provided in the following table.

Buffer Control Mode Affected States


Status BUF_CTL Description
DISABLED All Prior to being enabled for the first time (manual enable mode only)
NORMAL Collecting pre-trigger samples while looking for a trigger
WAITING CIRCULAR Does not occur
ONLY Waiting for a trigger to occur
NORMAL Collecting post-trigger samples
CAPTURING CIRCULAR Collecting samples
ONLY Collecting a trigger sample
COMPLETE All No longer collecting, ready to be uploaded, ready to be re-enabled
NORMAL Writing the pre-trigger and post-trigger samples to flash.
FLASHWRITING CIRCULAR Does not occur
ONLY Does not occur

Capture Block Redundancy Issues


Like all application code blocks configured in a redundant controller system, the Capture block is replicated faithfully in each
controller. However, unlike other blocks, the Capture block maintains un-voted internal state information in each controller.
This independence allows the block to trigger on and capture data that may be different in each controller (for example,
anti-voted data). Likewise the communication channel established between the block and an external client (for example,
ToolboxST application) for an upload is not replicated to any redundant controllers. The STATUS and DONE pins are not
voted and as a result may not always track between controllers. This is normal if a capture is terminated early by an upload
request or anti-voted data is used in the trigger specification. Application writers who want to monitor these pins through
blockware should be aware of this discrepancy.

Capture Block Memory Use


Capture blocks consume RAM memory from the system memory pool to create the capture buffers. The allocation of memory
in the controller is a compromise that must be made considering the amount of real RAM available, the amount required for
application code, the amount needed for data collection (for example, Capture blocks and DDRs), and a free pool necessary
for support services, such as ToolboxST application and HMI connections.
The amount of memory required for a particular CAPTURE block may be calculated as the number of samples times the sum
of the size of each collected variable. If time-stamping is enabled add 8 bytes times the number of samples. For example, if a
CAPTURE block is configured to collect 1000 total samples where each sample contains two REAL, three INT, and five
BOOL data types, and time-stamping is enabled, the amount of memory required for the captured data is:
1000 x ((2 x 4) + (3 x 2) + (5 x 1) + 8) = 27,000 bytes

Data Type Size (Bytes)


BOOL 1
INT 2
UINT 2
DINT 4
UDINT 4
REAL 4
LREAL 8

Instruction Guide GEI-100691K 23


For public disclosure
8 Cause and Effect Matrix
The Cause and Effect Matrix is a new special task for the Mark VIeS Safety controller. This feature requires ToolboxST
V06.02 or later with the Mark VIeS Safety controller firmware V05.03 or later. Refer to the ToolboxST User Guide for Mark
Controls Platform (GEH-6700) for detailed instructions.

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

24 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
10 Comment (_COMMENT)
Block Category: System
The Comment (_COMMENT) block adds comment text in the block diagram. The _COMMENT block inserts a page break
as viewed from the tool and on the printed page. The comment will appear 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 True to display the entire text of the comment.
The _COMMENT block also controls the mode (flow mode or list mode) of the diagram to the next comment block (or end
of the code if there are no subsequent comment blocks).

11 Comment Block Functionality (_COMMENT_BF)


Block Category: System

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).

12 Comment No Break (_COMMENT_NB)


Block Category: System
The Comment No Break (_COMMENT_NB) block adds comment text in the block diagram without causing a page break.
The comment will appear after the next break in connected blocks. 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 True to display the entire text of the comment.
The _COMMENT_NB block also controls the mode (flow mode or list mode) of the diagram to the next Comment block (or
end of the code if there are no subsequent comment blocks).

Instruction Guide GEI-100691K 25


For public disclosure
13 Compare (COMPARE)
Block Category: Comparison
The Compare (COMPARE) block compares two input values and sets an output Boolean as the result. The input variable data
type is implied by the block data type.

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.

26 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Greater Than

Greater Than or Equal To

Instruction Guide GEI-100691K 27


For public disclosure
Equal To

Not Equal

28 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Less Than or Equal To

Less Than

Instruction Guide GEI-100691K 29


For public disclosure
14 Compare with Hysteresis (COMPHYS)
Block Category: Comparison

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.

Floating Point Exception Handling


If a NaN is present on an input pin, the COMPHYS block replaces it internally with the most positive or most negative
representable number based on its sign, for the purpose of the comparison.

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

30 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Inputs
Name Data Type Description
IN1 REAL, LREAL Input to compare
FUNC Constant CompFnL_T Comparison function (gt, lt, ge, le, eq) (default is gt)
IN2 REAL, LREAL Value to compare against
HYST REAL, LREAL Hysteresis value
SENS REAL, LREAL Sensitivity value

Output
Name Data Type Description

OUT BOOL Result of the comparison

Instruction Guide GEI-100691K 31


For public disclosure
15 Controller Monitor (CTRLR_MON)
Block Category: System

Note Only one instance of this block is allowed per controller.

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

32 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Inputs
Name Description Type Initial Visibility Usage
Value
ONLINE_FL_TMR Online Fail Triple Modular Redundancy UDINT 5000 ms Parameter Input

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

Instruction Guide GEI-100691K 33


For public disclosure
Global Variables
Global Pin Name Description Alarm Alarm Event EGD Default External
Class Page Access
HW_ALARM_R R controller hardware failure alarm Alarmed Diag False $Default Read Only
HW_ALARM_S† S controller hardware failure alarm Alarmed Diag False $Default Read Only
HW_ALARM_T †† T controller hardware failure alarm Alarmed Diag False $Default Read Only
FAN1_FAIL_R R controller Fan1 failure Alarmed Diag False $Default Read Only
FAN1_FAIL_S† S controller Fan1 failure Alarmed Diag False $Default Read Only
FAN1_FAIL_T †† T controller Fan1 failure Alarmed Diag False $Default Read Only
FAN2_FAIL_R R controller Fan2 failure Alarmed Diag False $Default Read Only
FAN2_FAIL_S† S controller Fan2 failure Alarmed Diag False $Default Read Only
FAN2_FAIL_T †† T controller Fan2 failure Alarmed Diag False $Default Read Only
POWER_UP Controller powered up Not Alarmed N/A False N/A Read Only
SIG_FORCED Signal forced in controller Alarmed Diag False N/A Read Only
SIG_FORCED_ Number of forced signals Not Alarmed N/A False N/A Read Only
NUM
OVERTEMP_R R controller over temperature Alarmed Diag False $Default Read Only
OVERTEMP_S† S controller over temperature Alarmed Diag False $Default Read Only
OVERTEMP_T †† T controller over temperature Alarmed Diag False $Default Read Only
ONLINE_R R controller online Not Alarmed N/A False $Default Read Only
ONLINE_S† S controller online Not Alarmed N/A False $Default Read Only
ONLINE_T †† T controller online Not Alarmed N/A False $Default Read Only
† Exists only when the controller’s redundancy is DUAL or TMR
†† Exists only when the controller’s redundancy is TMR

34 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Mark VIeS Platforms
Output Pins UCCC UCSB UCSC
True: Controller has been powered up and is controlling
POWER_UP
False: Controller not reached controlling state
True: At least one signal is forced
SIG_FORCED False: No forced signals or set to False for 2 sec every time the number of forced variables are
increased
SIG_FORCED_NUM Number of forced signals in the application
True: CPU temperature too high
OVERTEMP_R
False: CPU temperature normal
True: CPU temperature too high
OVERTEMP_S
False: CPU temperature normal
True: CPU temperature too high
OVERTEMP_T
False: CPU temperature normal
True: R controller is online
ONLINE_R
False: R controller is not online
True: S controller is online
ONLINE_S
False: S controller is not online
True: T controller is online
ONLINE_T
False: T controller is not online
True: R controller hardware failure has occurred
HW_ALARM_R
False: No R controller hardware failure
True: S controller hardware failure has occurred
HW_ALARM_S
False: No S controller hardware failure
True: T controller hardware failure has occurred
HW_ALARM_T
False: No T controller hardware failure
FAN1_FAIL_R Not Applicable (False)
FAN1_FAIL_S Not Applicable (False)
FAN1_FAIL_T Not Applicable (False)
FAN2_FAIL_R Not Applicable (False)
FAN2_FAIL_S Not Applicable (False)
FAN2_FAIL_T Not Applicable (False)

Instruction Guide GEI-100691K 35


For public disclosure
16 Counter (COUNTER)
Block Category: Timers and Counters
The Counter (COUNTER) block accumulates rising edges of the INC pin into CUR_CNT while the RUN is True and CUR_
CNT is less than MAX_CNT. When CUR_CNT is equal to MAX_CNT, AT_CNT transitions to True. If RUN is False then
counting is suspended, but CUR_CNT holds its value. If RESET is True then CUR_CNT is set to zero and counting is
suspended. If MAX_CNT is less than one, each rising edge of INC sets AT_CNT True and increments CUR_CNT.

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.

36 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
17 Device Heartbeat (DEVICE_HB)
Block Category: System
The Device Heartbeat (DEVICE_HB) block outputs an incrementing value to drive the heartbeat signal on a protection I/O
module, such as PPRO. This block follows the internal frame counter, which is synchronized in the three controllers of a
TMR system.
The DEVICE_HB block provides a voted variable representation of the controller scheduler frame number (another
free-running counter). It is normally used to drive the heartbeat input into the protection I/O packs. Because the variable is the
same in all controllers in a redundant set. It does not cause a potential voter disagreement diagnostic in the packs (could
happen with ControllerStateHeartbeat_R/S/T). The protection I/O pack trips the unit after five frames if no updates are
detected. After the unit trips, it must detect 60 frames of incrementing heartbeat before it allows the unit to go back online.

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

Instruction Guide GEI-100691K 37


For public disclosure
18 Dual Select Version 2 (DUALSEL_S2)
Block Category: Analog Operations
The Dual Select Version 2 (DUALSEL_S2) block transfers the average, minimum, or maximum of two analog signals to
output ({Device}). The user has the option to disable one transmitter. If one transmitter is disabled, the output will be the value
of the remaining transmitter.
This block is similar to the Mark VIe DUALSEL_V2 block but functionality differs in the following ways:

• The DUALSEL_S2 block does not support the status option.


• The Auto Enable (AU_EN_P) feature is not supported.
• Control commands for disabling and enabling transmitters are supported in the DUALSEL_S2 bock; however, the
push-button reset functionality must be implemented in another device. For further details, refer to the description of
control word (CTL_EXT) in the section Control Word.

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.

Output Bad Quality Indication (OBQ)


When two transmitters are disabled and/or in a BAD quality state, OBQ becomes True, the default value, DF, is automatically
transferred to output, and MODE is set to DEFAULT. OBQ becomes False when the quality status of either input becomes
GOOD. The GOOD quality input will be enabled and transferred to the output.

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.

38 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
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 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.

Block Function Enumerations


Dual Select (DS) mode defines the block function mode. The function mode enumerations are defined in the following table.

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

Instruction Guide GEI-100691K 39


For public disclosure
Examples

• 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.

Rate of Change Restriction


The rate of change of OUT is only restricted by the value of RATE when the block operating mode changes.
RATE is in engineering units per second. For example, if RATE = 1, A = 10 (enabled), and B = 25 (disabled), so MODE = A,
and the mode of the block is changed by enabling input B and disabling input A. Now, MODE = B and output will increase
from 10 to 25 engineering units in 15 seconds. At this point, output equals B, the block operating mode transition from A to B
is complete and the rate of change restriction on output is removed until the block operating mode changes, again.

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.

Changing Default Attributes

40 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
When the user clicks OK, the block will automatically set the appropriate attributes for each variable (for example, Type and
Format Specification). Any variables that need to be on EGD will be automatically placed on the $Default EGD page.

Note Each Device Name used in a controller must be unique.

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

Instruction Guide GEI-100691K 41


For public disclosure
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
MODE Yes {Desc} Block mode UINT (ENUM) AVG_AB 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) DUAL Internal

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

42 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Alarm and Event Configuration
The following guidelines apply to DUALSEL_S2 alarm and event configuration:

• The ODH variable is configured as an alarm.


• AD and BD variables are configured as events.
• Only Boolean variables can be configured as alarms.

Enabling Alarms on Signal

Instruction Guide GEI-100691K 43


For public disclosure
19 Expand Long Integer (EXPAND_UDI)
Block Category: Boolean operations
The Expand Long Integer (EXPAND_UDI) block moves each bit of the input into 32 individual Boolean outputs. The least
significant input bit is placed in OUT0 and the most significant bit is placed in OUT31.

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)

44 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
20 Function Generator (FUNGEN)
Block Category: Math
The Function Generator (FUNGEN) block creates common variable functions for test and verification. The function and/or
any of its parameters may be dynamically changed to generate the wave forms, STEP, SQUARE, RAMP, TRIANGLE and
SINE. Only a subset of the pins are required to configure each function type.

Pin Usage Combination for Generating Respective Functions


Function MAX_VAL MIN_VAL PERIOD1 PERIOD2 A_RATE D_RATE
Step

Square

Sine

Ramp

Triangular

FUNGEN Block

Instruction Guide GEI-100691K 45


For public disclosure
Inputs
Name Data Type Description
ENABLE BOOL Block enable (default value is False)
Function to generate the following:

• Step (1) drives the output to MAX_VAL in one sweep


• Square wave (2) oscillates between MAX_VAL and MIN_VAL, holding MAX_VAL for
PERIOD1 and MIN_VAL for PERIOD2. The sequence always begins with MAX_VAL
• Ramp (3) ramps the output to MAX_VAL. If the output is less than MAX_VAL the
ascending ramp rate, A_RATE is used. If the output is greater than MAX_VAL the
FUNC Fungen_T descending ramp rate D_RATE is used.
• Triangle wave (4) repetitively ramps from MAX_VAL to MIN_VAL at D_RATE and
back to MAX_VAL at A_RATE. At startup if the output is greater than MAX_VAL the
descending cycle will commence first. Otherwise the ascending cycle will commence
first
• Sine wave (5) generates a sinusoidal wave between the amplitudes of MAX_VAL
and MIN_VAL with a period of PERIOD1. The waveform commences at 0 degrees
regardless of the initial output value (default value is Step.
Maximum value of the output (unless the initial value of the output is already greater than
MAX_VAL REAL
MAX_VAL). For proper operation MAX_VAL should be greater than or equal to MIN_VAL
Time period in seconds for the sine wave function, or for the MAX_VAL portion of the
PERIOD1 REAL
square wave function
Minimum value of the output. For proper operation MIN_VAL should be less than or equal
MIN_VAL REAL
to MAX_VAL
PERIOD2 REAL Time period in seconds for the MIN_VAL portion of the square wave function
A_RATE REAL Ascending ramp rate in units/second
D_RATE REAL Descending ramp rate in units/second

Output
Name Data Type Description
OUTPUT REAL Output of the function

46 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
21 Interpolator Version 2 (INTERP_V2)
Block Category: Controls (Basic)
The Interpolator Version 2 (INTERP_V2) block generates an output as a function of IN by linear interpolation. The argument
table X[N] is searched using IN as the key. OUT is calculated from the function table Y[N] using the search index from the
argument table and interpolating between the values:
OUT = Y[i] + ((Y[i+1] - Y[i]) x ((IN - X[i]) / (X[i+1] - X[i]))),
where i is the index resulting from the binary search of the argument table.
The array sizes of the variables attached to X[ ] and Y[ ] must be equal to or greater than the table size specified by N and the
table size must be greater than or equal to 2. If either of these conditions is not met, a build error is generated. OUT is
clamped to either the first or last element in the function table if IN is not within the range of the argument table elements.
When IN is within the limits of the argument table, the slope, M, is calculated as follows; otherwise, M is defined to be the
slope of a line between the nearest function table end point element and the element next to it:
ERROR is False under normal operation but is set to True if an error is detected. If the value of IN is a NaN or if the elements
of X[] are not monotonically increasing, ERROR is set to True. If ERROR is True, OUT is not updated.

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

Instruction Guide GEI-100691K 47


For public disclosure
22 Latch (LATCH)
Block Category: Sequencing
The Latch (LATCH) block emulates an SR flip-flop; it sets or resets OUT based on the current values of SET and RESET, and
the previous value of OUT according to the following Truth table:
where X = either state, t = current state, and t+1 = next state

RDOM SET(t) RESET(t) OUT(t) OUT(t+1)


X 0 0 0 0
X 0 0 1 1
X 0 1 0 0
X 0 1 1 0
X 1 0 0 1
X 1 0 1 1
1 1 1 X 0
0 1 1 X 1

LATCH Block

Inputs

Name Data Type Description


SET BOOL Set input
RESET BOOL Reset input (default is False)
If True, RESET dominates the latch, else SET dominates (default is False, SET
RDOM BOOL
dominates).

Output
Name Data Type Description
OUT BOOL Output of the latch

State

Name Data Type Description


This is the status variable for storing the trigger status, a hidden pin. It can be viewed or
STATUS BOOL 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.

48 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
23 Logical AND (AND)
Block Category: Boolean Operations
The Logical AND (AND) block is an expandable block that performs a logical AND of up to 16 inputs.

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

Instruction Guide GEI-100691K 49


For public disclosure
24 Logic Builder State Change (LOGIC_BUILDER_SC)
Block Category: Permits and Overrides
This block allows up to 32 inputs to be configured with the AND, OR, and NOT blocks to create a PERMIT, OVERRIDE,
FORCE, or TRACK type block. Unlike the normal PERMIT, OVERRIDE, FORCE, or TRACK blocks that essentially
function as either an AND or OR block, this block allows the user to create unique logic scenarios that can contain up to 32
individual inputs and up to six logic blocks in series of depth using any combination of AND, OR, and NOT blocks.
The LOGIC_BUILDER_SC block provides a simple, versatile, and effective solution to provide FORCE, OVERRIDE or
PERMIT applications for complex situations. Each of the 32 inputs has a corresponding attribute set by the programmer,
which, when changed, must be downloaded to the controller. The input attribute either permits or does not permit the
operator’s ability to enable or disable the associated input using the CIMPLICITY graphical interface. The LOGIC_
BUILDER_SC block type, PERMIT, OVERRIDE, FORCE, or TRACK is controlled by an enumerated input, TYP, which is
set by the programmer. The enumeration selected for the TYP input determines the enumerations the block will output from
the OUT block output. The output enumerations will correspond to the type of block specified by the TYP input enumeration.
Each input has the capability of inheriting the description of a connected global variable or a global variable connected
through a NOT block. When a connection is made to one of the input pins, the description of the global variable is inherited
by default. If this description is undesirable, it must be disabled by setting the Inherit Description option to False in the input
variable properties. The description can be replaced with a desirable description by entering an appropriate description in the
description field of the input variable of the LOGIC_BUILDER_SC block (replace LOGIC_BUILDER_SC #1 with the
desired override description for the source connected to IN1). The description is not copied from the connected variable
immediately; the input’s description is set when the library or device containing the input is validated or built.

50 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
TYP Input Enumerations
Name Description
AU_PMT Auto Permit
CL_PMT Close Permit
OP_PMT Open Permit
INT_PMT Intermediate Permit
ON_PMT On Permit
OFF_PMT Off Permit
STR_PMT Start Permit
STP_PMT Stop Permit
HI_PMT High Permit
LO_PMT Low Permit
REV_PMT Reverse Permit

RDY1 Ready 1 Permit

RDY2 Ready 2 Permit

RDY3 Ready 3 Permit

RDY4 Ready 4 Permit

RDY5 Ready 5 Permit

SFC Transition Permit is only available in the Mark VIe


SFC_TRANS_PMT
controller (not in the Mark VIeS)

MOD_PMT Modulate Permit


CMD_FRC Command Force
CL_FRC Close Force
OP_FRC Open Force

INT_FRC Intermediate Force


ON_FRC On Force
OFF_FRC Off Force
STR_FRC Start Force
STP_FRC Stop Force

HI_FRC High Force

LO_FRC Low Force


REV_FRC Reverse Force
CMD_OVR Command Override
CL_OVR Close Override
OP_OVR Open Override

INT_OVR Intermediate Override


TRP_OVR Trip Override

STP_OVR Stop Override

MN_REJ Manual Reject

CMD_TRK Command Track

Instruction Guide GEI-100691K 51


For public disclosure
Permit Type Enumerations and Use
Enumeration When Used
AU_PMT Auto permit enumeration output is required
CL_PMT Close permit enumeration output is required
OP_PMT Open permit enumeration output is required
INT_PMT Intermediate permit enumeration output is required.
ON_PMT On permit enumeration output is required
OFF_PMT Off permit enumeration output is required
STR_PMT Start permit enumeration output is required
STP_PMT Stop permit enumeration output is required
HI_PMT High permit enumeration output is required
LO_PMT Low permit enumeration output is required
REV_PMT Reverse permit enumeration output is required
RDY1 Ready 1 permit enumeration output is required
RDY2 Ready 2 permit enumeration output is required
RDY3 Ready 3 permit enumeration output is required
RDY4 Ready 4 permit enumeration output is required
RDY5 Ready 5 permit enumeration output is required
SEQUENTIAL FUNCTION CHART TRANSITION permit enumeration output is required
SFC_TRANS_PMT
This is only available with the Mark VIe controller (not the Mark VIeS Safety controller)
MOD_PMT Modulate permit enumeration output is required

Force Type Enumerations and Use


Enumeration When Used
CMD_OVR Command override enumeration output is required
CL_OVR Close override enumeration output is required
OP_OVR Open override enumeration output is required
INT_OVR Intermediate override enumeration output is required
TRP_OVR Trip override enumeration output is required
STP_OVR Stop override enumeration output is required
MN_REJ Manual Reject enumeration output is required

Track Type enumeration, CMD_TRK is used when a Command track enumeration output is required.

52 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Equation (EQN) Input
The equation input, EQN, is a string equation that is equivalent to the graphical AND, OR, and NOT blocks used to represent
the logic required to provide the correct block output (* = AND, + = OR, ~ = NOT, () are grouping characters). The string
equation can be entered directly into the input EQN, or it can be generated automatically from the graphical representation of
the logic created using AND, OR, and NOT blocks. If the equation is entered manually into the EQN input, the logic is
automatically configured correctly in the logic building template and visa versa.
Example: EQN input; (IN1+IN2)*(~(IN3))

Example EQN Input

Logic Building Template

Instruction Guide GEI-100691K 53


For public disclosure
IN1, IN1TP, IN1TE, and IN1T (1-32) Inputs
Inputs IN1 through IN32 are manipulated by AND, OR, and NOT logic to create the desired output.
Input toggle permits, IN1TP through IN32TP , are set by the programmer and can only be changed in the controller by
performing a Build and Download of the modified code. If the toggle permit input for a corresponding input is True, the
operator is able to toggle the value of the associated logical input, IN1TE through IN32TE, using the CIMPLICITY graphical
interface.
Inputs IN1TE through IN32TE are toggle enable inputs that are controlled by the operator using the CIMPLICITY graphical
interface. The operator can toggle each permitted input from True to False, or False to True.
The toggle input values, IN1T through IN32T, track the values of IN1 through IN32, respectively, when toggle mode is not
enabled for its input. The toggle input value, IN1T through IN32T, is the actual value that is used in the AND, OR, and NOT
programmed logic. The toggle value, IN1T, for the IN1 input is defined as a combination of the toggle input permit, IN1TP
being equal to True, and the toggle enable input from the CIMPLICITY graphical interface, IN1TE being equal to True. This
toggle value concept is True for all 32 inputs, IN1 through IN32.

Output (OUT) Enumerations


The output, OUT, is an enumerated output. The enumerations for OUT are based on the block type dictated by the input
enumeration assigned to the input TYP, and will be a PERMIT, OVERRIDE, FORCE, or TRACK type enumerations. OUT
output enumerations are defined by type, either PERMIT, FORCE, OVERRIDE or TRACK.

OUT Permit Type Output Enumerations


Name Description
NO_PERM-NO_BYPASS No Permit and no Permit is bypassed
PERM-NO_BYPASS Permit OK and no Permit is bypassed
NO_PERM-BYPASS No Permit and a Permit is bypassed
PERM-BYPASS Permit OK and a Permit is bypassed

NO_PERM — indicates all permits have not been met.


PERM — indicates all permits have been met.
NO-BYPASS — indicates the operator has not invoked a toggle of any of the associated logic driven inputs to the permit type
block.
BYPASS — indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the permit type
block.
OUT Force Type Output Enumerations
Name Description
NO_FORCE-NO_BLOCK No Force and no Force is blocked
FORCE-NO_BLOCK Force active and no Force is blocked
NO_FORCE-BLOCK No Force and a Force is blocked
FORCE-BLOCK Force active and a Force is blocked

NO_FORCE — indicates no force command is active.


FORCE — indicates a force command is active.
NO-BLOCK — indicates the operator has not invoked a toggle of any of the associated logic driven inputs to the force type
block.
BLOCK — indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the force type
block.

54 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
OUT Override Type Output Enumerations
Name Description
NO_OVR-NO_BLOCK No Override and no Override is blocked
OVR-NO_BLOCK Override active and no Override is blocked
NO_OVR-BLOCK No Override and an Override is blocked
OVR-BLOCK Override active and an Override is blocked

NO_OVR — indicates no override command is active.


OVR — indicates an override command is active.
NO-BLOCK — indicates the operator has not invoked a toggle of any of the associated logic driven inputs to the override
type block.
BLOCK — indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the override
type block.

OUT Track Command Type Enumerations

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

NO_TRACK — indicates no track command is active.


TRACK — indicates a track command is active.
NO-BLOCK — indicates the operator has not invoked a toggle of any of the associated logic driven inputs to the track type
block.
BLOCK — indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the track type
block.

Outputs OUT_TGL and OUT_VAL


The output, OUT_TGL, indicates one or more of the inputs are in toggle-enabled mode. OUT_TGL is True when at least one
IN1TP and IN1TE through IN32TP and IN32TE pair is True. When OUT_TGL is True, the OUT enumeration contains
BYPASS or BLOCK based on the enumeration chosen for the block by the input TYP.
OUT_VAL, the Boolean output status, is driven by the logical output of the user-defined equation input, EQN. When OUT_
VAL is True, the OUT enumeration contains either PERM, OVR, FORCE or TRACK based on the enumeration chosen for
the block input TYP.

Instruction Guide GEI-100691K 55


For public disclosure
ToolboxST Configuration
When a block is inserted into the ToolboxST application code, it generates a window prompting the user to enter the Device
Name and the Block Type that will be assigned to the TYP input. The block automatically creates the variables associated
with the block and provides the appropriate attributes for each variable (for example Type, Scope, variables that need to be on
EGD will be automatically placed on the $Default EGD page).

Note Each Device Name used in a controller must be unique.

LOGIC_BUILDER Window Example

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

56 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Outputs (continued)
Name Description Type Array Initial Value Visibility Usage
Boolean output
OUT_VAL BOOL 0 False Always Output
status
Inputs in toggle
OUT_TGL BOOL 0 False Always Output
enabled mode

Global Pins (Automatically Created for an Auto Permit Type Block)


External
Global Pin Name Description Alarm Event EGD Page
Access
00LOG_BLD1000AU_PMT Test string for equation Not Alarmed False $DEFAULT Read Only
00LOG_BLD1000AU_PMT.IN1 Input 1 Not Alarmed False $DEFAULT Read Only
00LOG_BLD1000AU_PMT.IN1T Input 1 toggle value Not Alarmed False $DEFAULT Read Only
Input 1 toggle enable from
00LOG_BLD1000AU_PMT.IN1TE Not Alarmed *IN1TP $DEFAULT Read Only
HMI
00LOG_BLD1000AU_PMT.IN1TP Input 1 toggle permitted Not Alarmed False $DEFAULT Read Only
00LOG_BLD1000AU_PMT.IN2 Input 2 Not Alarmed False $DEFAULT Read Only
00LOG_BLD1000AU_PMT.IN2T Input 2 toggle value Not Alarmed False $DEFAULT Read Only
Input 2 toggle enable from
00LOG_BLD1000AU_PMT.IN2TE Not Alarmed *IN2TP $DEFAULT Read Only
HMI
00LOG_BLD1000AU_PMT.IN2TP Input 2 toggle permitted Not Alarmed False $DEFAULT Read Only
↓ ↓ ↓ ↓ ↓ ↓
↓ ↓ ↓ ↓ ↓ ↓
00LOG_BLD1000AU_PMT.IN32 Input 32 Not Alarmed False $DEFAULT Read Only
00LOG_BLD1000AU_PMT.IN32T Input 32 toggle value Not Alarmed False $DEFAULT Read Only
Input 32 toggle enable from
00LOG_BLD1000AU_PMT.IN32TE Not Alarmed *IN32TP $DEFAULT Read Only
HMI
00LOG_BLD1000AU_PMT.IN32TP Input 32 toggle permitted Not Alarmed False $DEFAULT Read Only
00LOG_BLD1000AU_PMT.OUT Output enumeration Not Alarmed False — Read Only
00LOG_BLD1000AU_PMT.OUT_VAL Boolean output status Not Alarmed False — Read Only
Inputs in toggle enabled
00LOG_BLD1000AU_PMT.OUT_TGL Not Alarmed False — Read Only
mode

Instruction Guide GEI-100691K 57


For public disclosure
HMI Configuration (CIMPLICITY)
The following figure is an example of the CIMPLICITY graphical interface with a permit type block, with six permit enabled
inputs and input 2 is toggled.

Typical HMI Object for LOGIC_BUILDER with a Permit Type Block


The following figure is an example of the common usage of a LOGIC_BUILDER block. This example displays the LOGIC_
BUILDER block sharing the same name as the M_O_V block that it is controlling. The ToolboxST application requires that
all blocks have unique names. The LOGIC_BUILDER blocks avoid this by adding the block type to the block name. This
makes them unique, links them to the block they control in the HMI, and indicates their function.

58 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Connection and Naming

GEI-100691K Instruction Guide 59


For public disclosure
State Change
The State Change feature performs a First In-First Out (FIFO) operation for all 32 inputs. It latches input values for the
current and previous frames when the output transitions to a Not Permitted, Forced, Override, or Track state. Indication is
provided that a State Change has occurred and acts as a reset dominant latch.
Each input has the capability of inheriting the description of a connected global variable or a global variable connected
through a NOT block. When a connection is made to one of the input pins, the description of the global variable is inherited
by default. If this description is undesirable, it must be disabled by setting the Inherit Description option to False in the input
variable properties. The description can be replaced with a desirable description by entering an appropriate description in the
description field of the input variable of the LOGIC_BUILDER_SC block (replace LOGIC_BUILDER_SC #1 with the
desired override description for the source connected to IN1). The description is not copied from the connected variable
immediately; the input’s description is set when the library or device containing the input is validated or built.
The State Change feature adds the input pins SCA_ENABLE, RESET, and RESET_PB. The SCA_ENABLE pin must be
True for the State Change feature to operate. This would typically be connected to device I/O to prevent recording a State
Change while the equipment is not operating. For example, it may not be desired to record a process trip to a pump if the
pump was already off when the trip signal was sent.
The RESET pin is available for control logic to reset the SCA pin. While the RESET pin is held True, the SCA pin will
remain False. It might be desirable to set this input True for one frame when a sequence or system is initially started.
The RESET_PB pin is intended for use by the CIMPLICITY graphical interface. When the RESET_PB pin is set to True the
SCA pin is set to False, then RESET_PB is set to False by the LOGIC_BUILDER_SC block.
The State Change feature adds the outputs pins SCA, SCA_CUR, and SCA_PRV. The SCA pin changes from False to True
when the OUT pin transitions to a Not Permitted, Forced, Override, or Track state. The SCA pin acts as a reset dominant
latch. The RESET and RESET_PB pins reset the SCA latch. The SCA_ENABLE pin prevents the SCA latch from being set,
but will not reset the SCA latch.
The SCA_CUR pin holds a 32-bit un-signed integer. The value of each bit of this integer represents the value of the
corresponding input, for the frame the OUT pin transitioned to a Not Permitted, Forced, Override, or Track state.
The SCA_PRV pin holds a 32-bit un-signed integer. The value of each bit of this integer represents the value of the
corresponding input, one frame before the OUT pin transitioned to a Not Permitted, Forced, Override, or Track state.

60 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
25 Logical NOT (NOT)
Block Category: Boolean Operations
The Logical NOT (NOT) block performs a logical inversion of the input and provides the mutually exclusive pair as an
output.

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

Instruction Guide GEI-100691K 61


For public disclosure
26 Logical OR (OR)
Block Category:Boolean Operations
The Logical OR (OR) block is an expandable block that performs a logical OR of up to 32 inputs.

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

62 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
27 Median Selector with Enable (MEDIAN)
Block Category: Selection
The Median Selector with Enable (MEDIAN) block selects the median of three analog variables and outputs the result.
LDIFLMT is driven True if the difference between the maximum and the minimum values of the three variables is ≥ the
analog variable DIFLMT.

Floating Point Exception Handling


If a NaN is present on an input pin, the MEDIAN block replaces it internally with the most positive or most negative
representable number based on its sign, for the purpose of the comparison.

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

Instruction Guide GEI-100691K 63


For public disclosure
28 Median Select Version 2 (MEDSEL_S2)
Block Category: Analog Operations
The Median Select Version 2 (MEDSEL_S2) block selects the median or average of three analog signals based on the
enumerated value of the input TS and transfers the selection to the output ({Device}). The user has the option to disable up to
two transmitters. If one transmitter is disabled, the output will be either the minimum, maximum, or average of the two
remaining transmitters based on the enumerated value of the input, DS. If the one transmitter allowed property, 1XMTR_P, is
True, two transmitters can be disabled and the output will be the value of the remaining transmitter.
This block is similar to the Mark VIe block MEDSEL_V2 but functionality differs in the following ways:

• The MEDSEL_S2 block does not support the status option.


• The Auto Enable (AU_EN_P) feature is not supported.
• Control commands for disabling and enabling transmitters are supported in the MEDSEL_S2 bock; however, the
push-button reset functionality must be implemented in another device. For further details, refer to the description of
control word (CTL_EXT) in the section Control Word.

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.

Output Bad Quality Indication (OBQ) functionality is as follows:


If 1XMTR_P is True, when three transmitters are disabled and/or in a BAD quality state, OBQ becomes True, the default
value, DF, is automatically transferred to the output, and MODE is set to DEFAULT.
OBQ becomes False when the quality status of any input becomes GOOD. The GOOD quality input will be enabled and
transferred to the output.
If 1XMTR_P is False, when two or three transmitters are disabled and/or in a BAD quality state, OBQ becomes True, the
default value, DF, is automatically transferred to output, and MODE is set to DEFAULT.
OBQ becomes False when the quality status of two inputs become GOOD. The GOOD quality inputs will be enabled and
based on the DS enumeration selected, the average, minimum, or maximum of the GOOD quality inputs is transferred to the
output.

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.

64 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
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

EN_C_CMD Enable Input C Command

DIS_C_CMD Disable Input C 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.

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.

Instruction Guide GEI-100691K 65


For public disclosure
Block Function Enumerations
Function is defined by two modes:

• Dual Select (DS) mode


• Three Select (TS) mode

DS Enumerations
Enumeration Function
AVG Average of A and B

MIN Minimum of A and B


MAX Maximum of A and B

TS Mode Enumerations
Enumeration Function
AVG Average of A, B and C

MEDIAN Median 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

AVG_A-C Average of A and C

AVG_B-C Average of B and C

AVG_ABC Average of A, B, and C

MEDIAN Median of A, B, and C

A Input A

B Input B

C Input C

DEFAULT Input DF

66 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Examples

• 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.

Rate of Change Restriction


The rate of change of the output is only restricted by the value of RATE when the block operating mode changes.
RATE is in engineering units per second. For example, if 1XMTR_P = True, RATE = 1, A = 10 (enabled), B = 25 (disabled),
and C = 50 (disabled), so MODE = A, and the mode of the block is changed by enabling input B and disabling input A. Now,
MODE = B and the output increases from 10 to 25 engineering units in 15 seconds. At this point, the output equals B, the
block operating mode transition from A to B is complete and the rate of change restriction on the output is removed until the
block operating mode changes again.

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).

Note Each Device Name used in a controller must be unique.

Instruction Guide GEI-100691K 67


For public disclosure
Enter the Attribute Instance Values Window

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

68 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Inputs
Name Global Description Data Type Initial Value Visibility
1XMTR_P — Allow one transmitter operation BOOL False Parameter
A Yes {Desc} Trans A input REAL 0 Always
B Yes {Desc} Trans B input REAL 0 Always
C Yes {Desc} Trans C input REAL 0 Always
CTL_EXT Yes {Desc} Control Word UINT (ENUM) NO_CMD Always
Default output if all transmitters
DF — REAL 0 Parameter
are bad
DL — Deviation alarm limit REAL 5 Parameter
DLDB — Deviation alarm limit deadband REAL 2 Parameter
DS — Dual Select mode property UINT (ENUM) AVG Parameter
DT — Deviation alarm delay UDINT 1000 Parameter
IN_ABQ — Trans A Bad quality BOOL False Always
IN_BBQ — Trans B Bad quality BOOL False Always
IN_CBQ — Trans C Bad quality BOOL False Always
RATE — Selection change rate limit REAL 1 Internal
TS — 3-XMTR Select mode property UINT (ENUM) MEDIAN Parameter

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

Instruction Guide GEI-100691K 69


For public disclosure
Global Variables
Alarm External
Pin Name Description Alarm Event EGD Page
Class Access
MEDSEL_S21001 MEDSEL_S2 1001 Not Alarmed — False $Default ReadOnly
MEDSEL_S2 1001 Trans A
MEDSEL_S21001.A Not Alarmed — False $Default ReadOnly
input
MEDSEL_S2 1001 Trans A
MEDSEL_S21001.ABQ Not Alarmed — False $Default ReadOnly
bad quality
MEDSEL_S2 1001 Trans A
MEDSEL_S21001.AD Not Alarmed — True $Default ReadOnly
deselected
MEDSEL_S2 1001 Trans B
MEDSEL_S21001.B Not Alarmed — False $Default ReadOnly
input
MEDSEL_S2 1001 Trans B
MEDSEL_S21001.BBQ Not Alarmed — False $Default ReadOnly
bad quality
MEDSEL_S2 1001 Trans B
MEDSEL_S21001.BD Not Alarmed — True $Default ReadOnly
deselected
MEDSEL_S2 1001 Trans C
MEDSEL_S21001.C Not Alarmed — False $Default ReadOnly
input
MEDSEL_S2 1001 Trans C
MEDSEL_S21001.CBQ Not Alarmed — False $Default ReadOnly
bad quality
MEDSEL_S2 1001 Trans C
MEDSEL_S21001.CD Not Alarmed — True $Default ReadOnly
deselected
MEDSEL_S21001.CTL_ MEDSEL_S2 1001 Control
Not Alarmed — False $Default ReadOnly
EXT Word
MEDSEL_S2 1001 Trans A
MEDSEL_S21001.DA Alarmed Alert False $Default ReadOnly
high deviation
MEDSEL_S2 1001 Trans B
MEDSEL_S21001.DB Alarmed Alert False $Default ReadOnly
high deviation
MEDSEL_S2 1001 Trans C
MEDSEL_S21001.DC Alarmed Alert False $Default ReadOnly
high deviation
MEDSEL_S2 1001 Block
MEDSEL_S21001.MODE Not Alarmed — False $Default ReadOnly
mode
MEDSEL_S2 1001 Bad
MEDSEL_S21001.OBQ Not Alarmed — False $Default ReadOnly
quality
MEDSEL_S2 1001 High
MEDSEL_S21001.ODH Alarmed Alert False $Default ReadOnly
deviation
MEDSEL_S2 1001 Select
MEDSEL_S21001.SEL_P Not Alarmed — False $Default ReadOnly
type property

70 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Alarm and Event Configuration
The following guidelines apply to MEDSEL_S2 alarm and event configuration:

• DA, DB, and DC variables are configured as alarms.


• AD, BD, and CD variables are configured as events.
• Only Boolean variables can be configured as alarms.

Enabling AD Variable Alarm

Instruction Guide GEI-100691K 71


For public disclosure
29 Move (MOVE)
Block Category: Type Conversion
The Move (MOVE) block transfers the value of the input variable, SRC, into the output variable, DEST. The data transfer
occurs each time the block runs and the ENABLE pin is True. The analog variants of the block can be used to perform data
type conversions, as well as memory move operations. The Boolean variant of MOVE is used to move only a logical state and
cannot convert the data type.
The MOVE blocks are useful for taking snapshots of data that are shared between tasks in separate modules. Moving the
variable to local copies guarantees that a high priority task cannot change the shared data while the low priority task is
processing it.

Floating Point Exception Handling


The MOVE block does not allow a NaN to pass through it. If a NaN is encountered on an input pin, it is replaced at the output
with either the most positive or most negative representable number, based on the sign of the NaN.

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)

72 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
30 On Off Delay (ON_OFF_DELAY)
Block Category: Timers and Counters
The On Off Delay (ON_OFF_DELAY) block behaves as a switch with a delayed response, whether being turned on or off.
The block passes a rising True value on the IN pin to the OUT pin if IN remains True for PU_DEL milliseconds. The block
passes a falling False value on the IN pin to the OUT pin if IN remains False for DO_DEL ms.

ON_OFF_DELAY Block Response

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

Instruction Guide GEI-100691K 73


For public disclosure
31 Prevote (PREVOTE)
Block Category: System
The Prevote (PREVOTE) block allows a user to transfer prevoted input values to blockware. The block prevotes any analog
variable into the block data type rounding any fractional value to the nearest integer (if block data type is INT) or into a
single/double precision floating point variable (if block data type is REAL). The boundary check and conversion is done
automatically.

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

PREVOTE Block Expanded

74 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Prevote data is available from I/O Nets (R, S, TA, TB) marked with a 1 for the system configurations displayed in the
following table.

Prevote Buffer Usage


Redundancy Prevote buffers Notes
Controller Network I/O pack R S TA TB 0
Simplex Simplex Simplex 1 0 0 0 0
Simplex Simplex Dual Not supported 0
Simplex Simplex TMR Not supported 0
Simplex Dual Simplex Not supported 0
Simplex Dual Dual Not supported 0
Simplex Dual TMR Not supported 0
Simplex TMR Simplex 1 0 0 0 Note 1
Simplex TMR Dual 0 0 1 1 Note 2
Simplex TMR TMR 1 1 1 0 0
Dual Simplex Simplex Not supported 0
Dual Simplex Dual Not supported 0
Dual Simplex TMR Not supported 0
Dual Dual Simplex 1 0 0 0 Note 1
Dual Dual Dual 0 0 1 1 Note 2
Dual Dual TMR 1 1 1 1 0
Dual TMR Simplex Not supported 0
Dual TMR Dual Not supported 0
Dual TMR TMR Not supported 0
TMR Simplex Simplex Not supported 0
TMR Simplex Dual Not supported 0
TMR Simplex TMR Not supported 0
TMR Dual Simplex Not supported 0
TMR Dual Dual Not supported 0
TMR Dual TMR Not supported 0
TMR TMR Simplex 1 0 0 0 Note 1
TMR TMR Dual 0 0 1 1 Note 2
TMR TMR TMR 1 1 1 0 0
Note 1 The I/O could be on any network.
Note 2 The I/O is not limited to R and T It could be R and T, or S and T.

Instruction Guide GEI-100691K 75


For public disclosure
Input
Name Data Type Description
VAR ANY Source variable

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

76 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
32 Pulse (PULSE)
Block Category: Sequencing
The Pulse (PULSE) block generates a Boolean one-shot of the specified width (WIDTH in milliseconds) at the output pin on
the rising edge of the trigger. Once the pulse is initiated, it persists until it times out regardless of the value of the trigger. The
previous state of the trigger is stored with each execution sweep so the falling edge of the next trigger may be seen prior to the
end of the pulse. A specified pulse width of 0 results in a one sweep pulse. The Pulse width is always a multiple of the frame
execution period set in the ToolboxST application. For accurate execution of the block, set WIDTH as a multiple of the frame
execution period.

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.

Instruction Guide GEI-100691K 77


For public disclosure
33 Relay Ladder Logic (RUNG)
Block Category: Boolean Operations
The Relay Ladder Logic (RUNG) block solves a Boolean equation of up to 16 inputs. The equation is specified as a character
string or can it be configured through the Relay Ladder Logic editor in the ToolboxST application. The equation may consist
of up to 64 elements, or combinations of operators and operands. For example, the equation A + B contains two operands and
one operator for a total of three elements.

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

78 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
34 Select (SELECT)
Block Category: Selection
The Select (SELECT) block is an expandable block that moves one of the 8 inputs, or the CASC into the output, based on the
prioritized evaluation of the selection pins. Working in ascending order from SEL1 the first True value encountered causes the
corresponding input to be moved to the output. If none of the selection pins are True then the CASC is moved to the output.

Floating Point Exception Handling


If a NaN (Not a Number) is encountered on an input pin it is replaced at the output by either the most positive or negative
representable number, based on the sign of the NaN.

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

Instruction Guide GEI-100691K 79


For public disclosure
35 System Outputs (SYS_OUTPUTS)
Block Category: System

Note Only one instance of this block is allowed per controller.

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

80 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
36 Temperature Status (TEMP_STATUS)
Block Category: System
The Temperature Status (TEMP_STATUS) block is a temperature-sensing block for the Mark VIeS Safety controllers. All
temperatures are in degrees C. The outputs from this block are dependent on controller platform. TEMP_STATUS is not
supported in the Virtual Controller, where all the outputs default to a value of zero and ALARM defaults to False. TEMP_
STATUS does not generate any diagnostic alarms.

TEMP_STATUS Block Functional Diagram

TEMP_STATUS Block

Instruction Guide GEI-100691K 81


For public disclosure
TEMP_STATUS Inputs
Input Pin Data Type Platform Functionality
ID of the controller being monitored/controlled; 1 for R, 2 for S, and 3 for T controller. 0 for
ID UINT All Local means the block monitors/controls the controller executing the block (backward
compatibility)
UCSB, UCSC Not applicable
OTPROT BOOL When True, forces the controller to reboot into a low power failure mode (in which the
UCCC
application will not run) when a temperature alarm condition is detected
UCSB, UCSC Not applicable
THLD REAL
UCCC Setpoint for declaring the alarm. Ignored unless USR_ENA is True
UCSB, UCSC Not applicable
HYST REAL Hysteresis value to be considered for clearing the alarm. Ignored unless USR_ENA is
UCCC
True
UCSB, UCSC Not applicable
USR_ENA BOOL
UCCC Used to enable user supplied temperature limits

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.

82 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Notes on Legacy Controller Functionality
With UCCC controllers, the CPU_TEMP pin outputs the CPU core temperature. The BRD_TEMP pin outputs the
motherboard temperature. two temperature sensors are embedded in the processor card as well, TEMP1 and TEMP2. One
sensor is placed near a resistor so that it is constantly warmed above the ambient temperature. The other is placed away from
any heat-producing elements. When the fan is on, the airflow provides cooling around both sensors and a relatively constant
temperature difference, DELTA, measures the difference between the two. When the fan is off the warmed sensor experiences
a much larger rise in temperature than does the ambient sensor. All three variables, TEMP1, TEMP2, and DELTA are output
for diagnostic purposes and backward compatibility, but they no longer contribute to the alarm logic.
With UCCC controllers, the TEMP_STATUS block uses a default temperature, DEF_THLD, to determine an upper
temperature alarm limit. This limit can be replaced with a user configurable limit, THLD, if the user enables Boolean input
USR_ENA. Once in ALARM, the Boolean condition will not reset until the CPU temperature falls below the upper
temperature alarm limit less a hysteresis value. This hysteresis value defaults to a supplied value DEF_HYST, unless the
Boolean input USR_ENA overrides this value with the input HYST. Default temperature limits are determined by GE for the
particular platform. Current EPMC values are: DEF_THLD = 90, DEF_HYST = 5°C. The user is given another Boolean
input pin, OTPROT, to control action when an alarm condition is detected. If an alarm condition latches when OTPROT is
True, the controller automatically reboots into a low power failure mode. The application will not run in this mode, but tool
connectivity is maintained. After a subsequent reboot, the application will run again.

Instruction Guide GEI-100691K 83


For public disclosure
37 Timer (TIMER)
Block Category: LEGACY, Timers and Counters

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.

84 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
38 Timer Version 2 (TIMER_V2)
Block Category: Timers and Counters
The Timer Version 2 (TIMER_V2) 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 the value in
CURTIME remains. 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 performance period set in
the ToolboxST application. For accurate performance of the block, set MAX_TIME as a multiple of the frame performance
period.
The maximum value of mCurTime in the TIMER block is 4294967295ms (0xFFFFFFFF).

TIMER_V2 Block

TIMER_V2 Example with AT_TIME output to RESET input

Instruction Guide GEI-100691K 85


For public disclosure
Inputs
Name Data Type Description
MAXTIME UDINT Maximum time value in milliseconds
RESET BOOL Zeros the timer
Automatically zeros the timer when AT_TIME is set. Maintains the residual
AUTO_RS BOOL
count.
RUN BOOL Enables the timer

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.

86 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
39 Unit Delay (UNIT_DELAY)
Block Category: Controls (Basic)
The Unit Delay (UNIT_DELAY) block performs a one-frame delayed copy of the input, IN, to the output, OUT. The time
period of the delay depends upon the Frame period with which the block is being executed.

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)

Instruction Guide GEI-100691K 87


For public disclosure
40 Variable Health (VAR_HEALTH)
Block Category: System
The Variable Health (VAR_HEALTH) block receives from 1 to 32 variable signals as input points to this block. For each
configured input, this block provides two corresponding output pins that provide both the health status (HEALTHnn) and link
status (LINKOKnn) of the corresponding input.
The available 32 input pins can be assigned to any of the following variables:

• Regular variable directly from an I/O board input signal


• Variable from an external network, such as a variable assigned to a Unit Data Highway (UDH) EGD page
• Regular variable directly from an I/O board output signal (not usually required)
• Internal state variable (rarely needed)

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

HEALTH1 BOOL Input 1 healthy


LINKOK1 ↓ Link OK for EGD variable 1
HEALTH32 ↓ Input 32 healthy
LINKOK32 BOOL Link OK for EGD variable 32

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.

88 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Note A period refers to the time between consecutive transmissions of the variable. For most variables from I/O packs, the
period corresponds to the frame rate, although certain I/O packs such as PSCA do not always transmit at frame rate. For
variables that derive their health from the health of a received EGD page from another controller, the period depends on the
frame rate of the transmitting source and the associated page period multiplier. From the ToolboxST application, select the
EGD tab to view the Period information.

Output Health Status Details


I/O pack variable sources — the VAR_HEALTH output status goes unhealthy during the first period in which the controller
does not receive a healthy indication from the source I/O pack.

• 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.

Single Network I/O Pack Input Response to Loss of Input


When an input on an I/O pack goes unhealthy, the input value holds the previous healthy input state for the first four periods.
After this, the value is set to the default value.
Responses to Loss of Input
Loss of Input
FRAME 1 2 3 4 5
Health Unhealthy
Values Hold last Default

Instruction Guide GEI-100691K 89


For public disclosure
Dual Network I/O Pack Input Response to Loss of Input
When both network inputs on an I/O pack are unhealthy, the input value holds the previous healthy input state for the first
four periods. After this, the input value is set to the default value. If only one input is unhealthy, the input value remains
healthy.

Responses to Loss of Input


Loss of 1st Input Loss of 2nd Input
FRAME 1 2 3 4 5 1 2 3 4 5
Health Healthy Unhealthy
Values 2nd input Hold last Default

TMR Network I/O Pack Input Response to Loss of Input


The input value is always calculated from the voted value of the three network inputs. Thus, if more than one input goes
unhealthy, the input value is voted to unhealthy. If only one input goes unhealthy, the input value remains healthy.

Responses to Loss of Input


Loss of 1st Input Loss of 2nd Input
FRAME 1 2 3 4 5 1 2 3 4 5
Health Healthy Unhealthy
Values Voted Voted Default (from vote)

External Network/EGD Page Response to Loss of Input


When an EGD page is unhealthy, the input values remain healthy until the fourth period, and the previous healthy input state
is held.
Responses to Loss of Input
Loss of Input
FRAME 1 2 3 4 5
Health Healthy Unhealthy
Values Hold last Hold last

Output Pin States


I/O Pack/Network Output Pins Description
Redundancy HEALTHnn LINKOKnn

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

90 GEI-100691K Mark VIeS Safety Controller Block Library


For public disclosure
Output Pin States (continued)
I/O Pack/Network Output Pins Description
Redundancy HEALTHnn LINKOKnn

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

Output Pin States — continued


I/O Pack/Network Output Pins Description
Redundancy HEALTHnn LINKOKnn

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

Instruction Guide GEI-100691K 91


For public disclosure
41 Vote (VOTE)
Block Category: Boolean Operations
The Vote (VOTE) block is an expandable block with up to 32 inputs that performs an M-out-of-N voting, where N is the
number of inputs. If at least M out of the N inputs are True, then the output voting result will be True. The value for M cannot
be greater than the number of inputs.
For example, if M=2 and N=3, this block will check if at least 2 out of 3 inputs are True. If so, OUT will be True. Otherwise,
OUT will be False.

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

For public disclosure

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy