278
GEI-100682AC Mark* VIe Controller Standard 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: Sept 2005 © 2005 – 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 [email protected] For public disclosure

Mark* VIe Controller

  • Upload
    others

  • View
    51

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Mark* VIe Controller

GEI-100682AC

Mark* VIe ControllerStandard Block Library

These instructions do not purport to cover all details or variations in equipment, nor to provide for every possiblecontingency to be met during installation, operation, and maintenance. The information is supplied for informationalpurposes 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 reflectedherein. It is understood that GE may make changes, modifications, or improvements to the equipment referenced herein or tothe document itself at any time. This document is intended for trained personnel familiar with the GE products referencedherein.

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 thisdocument 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 forparticular purpose.

For further assistance or technical information, contact the nearest GE Sales or Service Office, or an authorized GE SalesRepresentative.

Revised: July 2018Issued: Sept 2005

© 2005 – 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 [email protected]

For public disclosure

Page 2: Mark* VIe Controller

Document UpdatesRevision Location Description

AC

Array Compress Boolean (ARRAY_COMPRESS)

New blocks

Array Compress Boolean (ARRAY_COMPRESS_UDI)

Array Expand Integer (ARRAY_EXPAND)

Array Expand Integer (ARRAY_EXPAND_UDI)

Array Compare (ARRAY_COMPARE)Updated the Description in the Comparison Functions table for LE and LT

Updated Data Type for N in the Inputs table

AB Variable Health (VAR_HEALTH)Updated for consistency and clarification as to what information applied to I/Opacks or EGD

AA Timer (TIMER) Corrected parameter name from mCurTime to CURTIME

ZController Monitor (CTRLR_MON) Updated for the UCSC controller platform

Temperature Status (TEMP_STATUS) Updated for the UCSC controller platform

Y Interpolator DL (INTERP_DL) A better description of the FTBL input array

X

Temperature Status (TEMP_STATUS)Updated to include the UCPA platform, and clarification on hardware sensors thatare only in the UCCx platform

Legacy Category Blocks New section

Timer Version 2 (TIMER_V2) New section

Timer (TIMER) Changed to LEGACY category and added example with MOVE

Throughout the document Updated description of the LEGACY category

2 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 3: Mark* VIe Controller

ContentsIntroduction......................................................................................................................................................7Block Data Type ............................................................................................................................................8Change Data Type of Variant Block ...................................................................................................................9Legacy Category Blocks ................................................................................................................................ 10

Absolute Value (ABS) ...................................................................................................................................... 11Add (ADD) .................................................................................................................................................... 12Analog Alarm (ANALOG_ALARM) .................................................................................................................. 13Any Forces (ANY_FORCES) ............................................................................................................................ 26Application State (APP_STATE) ........................................................................................................................ 27Array Average (ARRAY_AVERAGE) ................................................................................................................. 29Array Calculator (ARRAY_CALC)..................................................................................................................... 30Array Compare (ARRAY_COMPARE)................................................................................................................ 32Array Compress Boolean (ARRAY_COMPRESS) ................................................................................................. 37Array Compress Boolean Long Integer (ARRAY_COMPRESS_UDI) ....................................................................... 38Array Empty (ARRAY_EMPTY) ....................................................................................................................... 39Array Expand Integer (ARRAY_EXPAND) .......................................................................................................... 40Array Expand Integer Long Integer (ARRAY_EXPAND_UDI) ................................................................................ 41Array Fill (ARRAY_FILL) ................................................................................................................................ 43Array Find Element (ARRAY_FIND) ................................................................................................................. 44Array Minimum/Maximum Element Determination (ARRAY_MINMAX) ................................................................. 45Array Relay Ladder Logic (ARRAY_RUNG) ....................................................................................................... 46Array Sum (ARRAY_SUM) .............................................................................................................................. 47Average Input (AVRG) ..................................................................................................................................... 48Bit Counter (BIT_CNTR).................................................................................................................................. 49Boolean Alarm (BOOLEAN_ALARM) ............................................................................................................... 50Bubble Sort (BSORT)....................................................................................................................................... 53Calculator (CALC) .......................................................................................................................................... 54Capture Data (CAPTURE) ................................................................................................................................ 56Theory of Operation...................................................................................................................................... 59Configuration .............................................................................................................................................. 60Enabling Collections ..................................................................................................................................... 60Triggering Issues.......................................................................................................................................... 60Buffer Control Details ................................................................................................................................... 61Time Stamping ............................................................................................................................................ 61Capture Status ............................................................................................................................................. 62Redundancy Issues ....................................................................................................................................... 62Memory Use ............................................................................................................................................... 63

Change Detection (CHG_DET) .......................................................................................................................... 64Clamp (CLAMP)............................................................................................................................................. 65Code Timer (CODETIMER) .............................................................................................................................. 67Comment (_COMMENT) ................................................................................................................................. 69Comment Block Functionality (_COMMENT_BF) ................................................................................................ 69Comment No Break (_COMMENT_NB) ............................................................................................................. 70Compare (COMPARE) ..................................................................................................................................... 71Compress Boolean (COMPRESS)....................................................................................................................... 76Compress to Long Integer (COMPRESS_UDI) ..................................................................................................... 77Controller Monitor (CTRLR_MON).................................................................................................................... 78

Instruction Guide GEI-100682AC 3For public disclosure

Page 4: Mark* VIe Controller

Count Down (CTD) ......................................................................................................................................... 84Count Up (CTU).............................................................................................................................................. 85Decode (IN_DECODE) .................................................................................................................................... 86Derivative (DERIVATIVE)................................................................................................................................ 87Device Heartbeat (DEVICE_HB) ....................................................................................................................... 88Divide (DIV) .................................................................................................................................................. 89Equal (EQ) ..................................................................................................................................................... 90Expand Integer (EXPAND)................................................................................................................................ 92Expand Long Integer (EXPAND_UDI) ................................................................................................................ 93Finite Impulse Response (FIR) ........................................................................................................................... 95Function Generator (FUNGEN).......................................................................................................................... 97Greater Than, Equal To (GE) ............................................................................................................................. 99Get From Array (GET) ....................................................................................................................................101Greater Than (GT) ..........................................................................................................................................102Infinite Impulse Response (IIR).........................................................................................................................104Integrator With Lead (INTWLEAD)...................................................................................................................106Integrator, Selectable Algorithm (INTEG) ...........................................................................................................108Interpolator (INTERP).....................................................................................................................................110Interpolator DL (INTERP_DL) .........................................................................................................................112Lag Filter (LAG) ............................................................................................................................................114Latch (LATCH) ..............................................................................................................................................116Lead, Lag (LEAD_LAG) .................................................................................................................................117Less Than (LT)...............................................................................................................................................119Less Than, Equal To (LE).................................................................................................................................121Limit Detect Manual (LD_MAN) ......................................................................................................................123Logic Builder (LOGIC_BUILDER) ...................................................................................................................126Logic Builder State Change (LOGIC_BUILDER_SC) ...........................................................................................137Logical AND (AND).......................................................................................................................................139Logical NAND (NAND) ..................................................................................................................................140Logical NOR (NOR) .......................................................................................................................................141Logical NOT (NOT)........................................................................................................................................142Logical OR (OR) ............................................................................................................................................143Logical XNOR (XNOR) ..................................................................................................................................144Logical XOR (XOR) .......................................................................................................................................145Median Selector with Enable (MEDIAN) ............................................................................................................146Minimum, Maximum (MIN_MAX) ...................................................................................................................147Configuring Matrix Blocks ...............................................................................................................................148Matrix Addition Subtraction (MADDSUB)..........................................................................................................154Matrix Concatenation (MCONCAT)...................................................................................................................156Matrix Dot Division (MDOTDIV) .....................................................................................................................159Matrix Dot Multiplication (MDOTMUL) ............................................................................................................161Matrix Fill (MFILL)........................................................................................................................................163Matrix Find (MFIND) .....................................................................................................................................166Matrix Inverse (MINV)....................................................................................................................................168Matrix Minimum/Maximum Element Determination (MMINMAX) .........................................................................169Matrix Multiplication (MMUL) .........................................................................................................................171

4 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 5: Mark* VIe Controller

Matrix Submatrix Selection (MSUBMATRIX) .....................................................................................................173Matrix Switch Block (MSVCH) ........................................................................................................................175Matrix Transpose (MTRN) ...............................................................................................................................177Mode Select (MODSEL)..................................................................................................................................178Move (MOVE)...............................................................................................................................................180Move Truncated (MOVE_DT) ..........................................................................................................................181Move Truncated (MOVE_IT)............................................................................................................................182Mult (MULT).................................................................................................................................................183NaN Breaker (NAN_BREAKER) ......................................................................................................................184NaN Check (NANCHECK) ..............................................................................................................................185Negate (NEGATE)..........................................................................................................................................186Not Equal (NE) ..............................................................................................................................................187On Off Delay (ON_OFF_DELAY).....................................................................................................................189Parity Check (PARITY_CHK) ..........................................................................................................................190Prevote (PREVOTE) .......................................................................................................................................191Proportional Integral Derivative Control (PID) .....................................................................................................194Pulse (PULSE)...............................................................................................................................................198Pulse Extended (PULSE_EXT) .........................................................................................................................199Pushbutton (P_B) ...........................................................................................................................................200Put Into Array (PUT).......................................................................................................................................201Rate Limiter (RATELIM).................................................................................................................................202Rate Monitor (RATEMON) ..............................................................................................................................204Relay Ladder Logic (RUNG) ............................................................................................................................206Rotary Switch (ROTARY_SW) .........................................................................................................................207Round (ROUND) ...........................................................................................................................................208Select (SELECT) ............................................................................................................................................209Selector (SELECTOR).....................................................................................................................................210Sequence Branch Block - TMR (SBB) ................................................................................................................212Sequence Manager Block - TMR (SMGR)...........................................................................................................214Sequence Merge Block - TMR (SMB) ................................................................................................................216Sequence Step Block - TMR (SSB) ....................................................................................................................218Set Array (SETARRY).....................................................................................................................................221Square Root (SQRT) .......................................................................................................................................222Status Combine (STATUS_COMBINE) ..............................................................................................................223Status Monitoring ...........................................................................................................................................228Status Block Types ......................................................................................................................................228Status_Region.............................................................................................................................................229Sub_Status .................................................................................................................................................229Limit_Status...............................................................................................................................................229Status Input Verification ...............................................................................................................................229Status Tables ..............................................................................................................................................230

Status Split (STATUS_SPLIT) ..........................................................................................................................235Steer (STEER) ...............................................................................................................................................236Subtract (SUB)...............................................................................................................................................237Switch (SWITCH) ..........................................................................................................................................238System Outputs (SYS_OUTPUTS) ....................................................................................................................239Task Scan (SCAN)..........................................................................................................................................240Temperature Status (TEMP_STATUS) ................................................................................................................241

Instruction Guide GEI-100682AC 5For public disclosure

Page 6: Mark* VIe Controller

Time Monitor (TIME_MON) ............................................................................................................................244Timer (TIMER)..............................................................................................................................................247Timer Version 2 (TIMER_V2)...........................................................................................................................249Totalizer (TOTALIZER) ..................................................................................................................................251Transfer Function (TRNFUN) ...........................................................................................................................253Transport Delay (TRAN_DLY) .........................................................................................................................255Transport Delay Version 2 (TRAN_DLY_V2) ......................................................................................................256Unit Delay (UNIT_DELAY).............................................................................................................................257User Scheduled Block Heartbeat (USB_HB)........................................................................................................258UTC Time (UTC_TIME) .................................................................................................................................259Variable Alarm Status (VAR_ALARM_STATUS) ................................................................................................260Variable Health (VAR_HEALTH) ......................................................................................................................261Variable Simulation (VARSIM) .........................................................................................................................271Logic Examples..............................................................................................................................................272Annunciation of Temperature Threshold for Mark VIe I/O Packs..........................................................................272Annunciation of Loss of IONet for Mark VIe I/O Packs......................................................................................274Annunciation of TMR Controller Heartbeat Status Not OK .................................................................................276

6 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 7: Mark* VIe Controller

IntroductionBlocks 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 orderlisted in the task. The connections between the blocks are RAM memory elements through which data is passed. Theseelements are referred to as variables. Each variable has a defined data type and must be connected to pins of the same datatype. 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. Forthis 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 thatmay 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 toprevent the production and proliferation of such values. Function block descriptions may include additional details concerningfloating point exception handling where needed.

Block Libraries also contain rubber blocks, which are sized according to the number of pins used. Within the library, theblocks 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 simpleblock name and block configuration pins and variable pins, which transfer data in and out of the block. The pins are locatedon the block diagram according to their usage. All input pins (pins read by the block) and block configuration pins are listedon the left. All output pins (pins written by the block) and state pins (pins read and written by the block) are listed on theright. 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

[ ] suffixed with square brackets (STATE[4]) Pin expects a variable that is an array of the size indicatedwithin the brackets

Instruction Guide GEI-100682AC 7For public disclosure

Page 8: Mark* VIe Controller

Block Data TypeThe pin data type identifier is listed beside the pin outside of the block diagram border. The basic data types used in the blocklibraries are BOOL, INT, UINT, REAL, LREAL, DINT and UDINT. Blocks with data types ANY_NUM and ANY must havethe 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 andthe 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 DescriptionA Any (ANY) Any data typeB Boolean (BOOL) 8-bit BooleanI 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 PointUI Unsigned Integer (UINT) 16-bit (Short) Unsigned IntegerUDI Unsigned Double Integer (UDINT) 32-bit (Long) Unsigned IntegerN Numeric (ANY_NUM) Any data type except BooleanS 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.

8 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 9: Mark* VIe Controller

Change Data Type of Variant BlockThere 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.

From the Block Data Typedrop down list , select a valid data type for the block.

Instruction Guide GEI-100682AC 9For public disclosure

Page 10: Mark* VIe Controller

Legacy Category BlocksSome of the controller software blocks have been put into the Legacy Category (this is the category that is used by theToolboxST Block Diagram Editor). This category is different than the blocks that reside in the Legacy Block Library. Legacycategory 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. Inmany 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

LegacyCategory Block

ReplacementBlock

Reason

_COMMENT_BF _COMMENT _COMMENT is equivalent to the current functionality of _COMMENT_BF_COMMENT_BF used to provided a carriage-return/page-feed in the Mark VI and earlyversions of Mark VIe controllers

TIMER TIMER_V2 TIMER_V2 supports AT_TIME output to RESET input

TRAN_DLY TRAN_DLY_V2 TRAN_DLY_V2 corrects existing issues with TRAN_DLY, which could not be made backwardscompatible

Note LEGACY category blocks are hidden by default in the ToolboxST application. Refer to the ToolboxST User Guide(GEH-6700) for steps to display these blocks if needed for legacy support.

10 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 11: Mark* VIe Controller

Absolute Value (ABS)Block Category: Math

The Absolute Value (ABS) block outputs the absolute value of the input, IN.

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

ABS Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Input

Name Data Type DescriptionIN ANY_NUM† Input value† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY_NUM† Absolute value of the input† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 11For public disclosure

Page 12: Mark* VIe Controller

Add (ADD)Block Category: Math

The Add (ADD) block is an expandable block that adds up to 32 inputs. The sum of the connected inputs is set as the output.Furthermore, if no inputs are connected, the output will be 0.

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

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

ADD Block

Inputs

Name Data Type DescriptionIN1 ANY_NUM† First input↓ ↓ ↓INn ANY_NUM† N'th input† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY_NUM† Output† Value with status, if status option is enabled.

12 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 13: Mark* VIe Controller

Analog Alarm (ANALOG_ALARM)Block Category: Analog Operations

The Analog Alarm (ANALOG_ALARM) block documents the configuration of an analog alarm. It has no associated runtimeoperation; it is effectively an application code comment. When the IN pin is connected to a numeric variable, the blockdisplays the configuration of the analog alarms for that variable.

Note Alarm bits must be enabled to display as pins.

Each analog alarm consists of a main numeric variable and a number of SubVariables that either configure the alarms or holdindividual alarm bits. Each of these SubVariables is represented by a pin on the ANALOG_ALARM block.

➢➢ To create or edit configuration: double-click the ANALOG_ALARM block.

ANALOG_ALARM Block

Instruction Guide GEI-100682AC 13For public disclosure

Page 14: Mark* VIe Controller

(Optional) Alarm Block Template Configuration

An alarm block template may be used to define variable aliasing behavior for blocks.

➢➢ To create and configure an Analog Alarm block template

1. From the System Editor, select Edit, and System Information.

From the Editor Tree View , expand Alarm System and right-click Alarm Block Template.

Enter a name for the Analog Alarm block template and click OK .

14 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 15: Mark* VIe Controller

2. If any attributes are required for the block template, create or add attributes as needed. From the Tree View, expand theblock template and select Attributes.

Enter and define any attributes as needed for the alias properties.

From the Editor Tree View , select the template and enter an Alias for each SubVariable in the Data Grid as needed.

Instruction Guide GEI-100682AC 15For public disclosure

Page 16: Mark* VIe Controller

ToolboxST Configuration

➢➢ To insert the block in the ToolboxST application

1. From the Tree View, select a task in to display the Block Diagram Editor in the Summary View.

From the Library View, select the Analog Alarm block and drag and drop into the Diagram Editor.

Optionally, choose a block template. From the drop down menu, select a template and click OK .

Add values to the SubVariables and click OK .

16 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 17: Mark* VIe Controller

Analog Alarm Block Inserted

2. Double-click the IN pin and connect the global variable to the input.

Select Global VariableSelect Create variableand enter the variable name, or click Browse Globals to select a variable. Click OK .

.

Global Variable Connected to Input

Instruction Guide GEI-100682AC 17For public disclosure

Page 18: Mark* VIe Controller

3. From the Block Diagram Editor, double-click the Analog Alarm block.

Select the variable name.

From the Property Editor , select Alarm and select an available Analog Alarm Definition from the drop down menu.

18 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 19: Mark* VIe Controller

Select an Alarm Type property and select True from the drop down menu to change the value from False to True.

Select the Alarm Shelving property and select Enabled from the drop down menu.

Instruction Guide GEI-100682AC 19For public disclosure

Page 20: Mark* VIe Controller

Verify that the correct variables display for each alarm created, then close the window.

20 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 21: Mark* VIe Controller

4. From the Tree View, right-click ANALOG_ALARM_1.

5. Double-click the block to view the alias names if they were defined using a block template.

Instruction Guide GEI-100682AC 21For public disclosure

Page 22: Mark* VIe Controller

6. Configure the alarm parameters. From the Summary View, right-click the ANALOG_ALARM_1 block.

From the shortcut menu, select Edit Block Pins .

22 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 23: Mark* VIe Controller

Instruction Guide GEI-100682AC 23For public disclosure

Page 24: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN ANY_NUM Connect to a Numeric variable to document its alarm configuration

INH† BOOLWhen set to True, all configured alarm levels for this variable areinhibited

Unshelve†† BOOL When set to True, will cause the alarm to become unshelved† Available as long as any analog alarm type is configured†† Available when shelving is enabled for the alarm

24 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 25: Mark* VIe Controller

Outputs

Name Data Type Description Alarm TypeConfiguration†

BQ BOOLAlarm flag for Bad Quality. For BQ to be available, IN must beconnected to a variable with status.

BQ

H BOOL Alarm flag for High HHH BOOL Alarm flag for High High HHHHH BOOL Alarm flag for High High High HHHL BOOL Alarm flag for Low LLL BOOL Alarm flag for Low Low LLLLL BOOL Alarm flag for Low Low Low LLLDH BOOL Alarm flag for Deviation High DHRH BOOL Alarm flag for Rate of Change High RH† Associated output is only available if the specific alarm type is configured

Parameters

Name Data Type Description Alarm TypeConfiguration†

H_SP ANY_NUM Setpoint for High alarm (type must match IN) HH_T UINT Delay time for High alarm (ms) HHH_SP ANY_NUM Setpoint for High High alarm (type must match IN) HHHH_T UINT Delay time for High High alarm (ms) HHHHH_SP ANY_NUM Setpoint for High High High alarm (type must match IN) HHHHHH_T UINT Delay time for High High High alarm (ms) HHHL_SP ANY_NUM Setpoint for Low alarm (type must match IN) LL_T UINT Delay time for Low alarm (ms) LLL_SP ANY_NUM Setpoint for Low Low alarm (type must match IN) LLLL_T UINT Delay time for Low Low alarm (ms) LLLLL_SP ANY_NUM Setpoint for Low Low Low alarm (type must match IN) LLLLLL_T UINT Delay time for Low Low Low alarm (ms) LLL

HYST ANY_NUM Hysteresis for the analog alarm (type must match IN) H, HH, HHH or L, LL,LLL

DH_SP ANY_NUM Setpoint for Deviation High alarm (type must match IN) DHDH_T UINT Delay time for Deviation High alarm (ms) DHDH_C ANY_NUM Compare value for Deviation High (type must match IN) DHDH_Y ANY_NUM Hysteresis for Deviation High (type must match IN) DHRH_SP ANY_NUM Setpoint for Rate of Change High alarm (type must match IN) RHRH_T UINT Delay time for Rate of Change High alarm (ms) RHRH_Y ANY_NUM Hysteresis for Rate of Change High (type must match IN) RH

Auto Reset BOOL

Enable or Disable the Return to Normal (RTN) Unacknowledgedalarm state. The Returned to Normal Unacknowledged alarm stateis reached when the process returns within normal limits, and thealarm clears automatically before an operator has acknowledgedthe alarm condition.

N/A

AlarmShelving BOOL

Enable or disable the ability for an operator to shelve an alarm. Ashelved alarm will temporarily be removed from the alarm display,keeping nuisance trips or bad sensors from cluttering the AlarmViewer.

N/A

† Associated parameter is only available if the specific alarm type is configured

Instruction Guide GEI-100682AC 25For public disclosure

Page 26: Mark* VIe Controller

Any Forces (ANY_FORCES)Block Category: System

The Any Forces (ANY_FORCES) block provides information regarding the status of variable forcing within the controller. Ifany variable is in a forced state within the controller, the Boolean output pin YES is set to True. In addition, the blockindicates the number of forced variables within the controller on integer output pin, NUMVARS.

ANY_FORCES Block

Input

Name Data Type DescriptionYES BOOL True if any variables are forced

OUTPUTName Data Type DescriptionNUMVARS INT Number of variables currently forced

26 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 27: Mark* VIe Controller

Application State (APP_STATE)Block Category: System

Note If the APP_STATE block must perform download and reboot checks every frame, the task containing the block mustalso run every frame.

The Application State (APP_STATE) block can be used to perform download and reboot checks. There can be only one APP_STATE block in an application. All inputs and outputs are Boolean values. The two inputs of the block, DOWNLOAD_OKand REBOOT_OK, are driven from user defined logical circuits. The APP_STATE block output, DOWNLOADING, is aBoolean variable that indicates when a download is in progress. If the DOWNLOADING output of APP_STATE block isTrue, then any changes to the DOWNLOAD_OK and REBOOT_OK input pins will not change the existing download andreboot check status. Therefore, during downloading changes to the input pins are reflected in the download and reboot checksonly after the current download has been completed (when DOWNLOADING is False).

APP_STATE Block

ToolboxST Configuration

The APP_STATE block must not be used until after the input pins are configured. Configuring the APP_STATE blockinvolves the creation of suitable logic to drive the DOWNLOAD_OK and REBOOT_OK input pins. The user must create thislogic and consider the necessary inputs from field or application to produce Boolean signals for driving the APP_STATEblock inputs. The following figure is an example of possible input configuration where two control logics drive the two inputsof APP_STATE block.

APP_STATE Block Configuration

Instruction Guide GEI-100682AC 27For public disclosure

Page 28: Mark* VIe Controller

Impact of APP_STATE on Different Types of Downloads

All types of downloads including I/O pack, online, and offline (except Update DDR and Device Backup) are impacted by theAPP_STATE block. Update DDR and Device Backup are not affected. If the DOWNLOAD_OK input of the APP_STATEblock is True, all downloads will be allowed. If the DOWNLOAD_OK input is False, no downloads (except Update DDRand Device Backup) will be allowed. The same rule applies when an I/O pack parameter download is requested from theComponent Editor Hardware tab. The Update DDR and Device Backup downloads do not change the application. Therefore,they are not affected by the value of DOWNLOAD_OK.

Impact of the APP_STATE Block on Reboot Requests

If REBOOT_OK is True, reboot requests from the ToolboxST application will reboot the controller. If REBOOT_OK isFalse, the controller will not reboot.

Disabling the Download and Reboot checks

The download and reboot checks are only performed when the APP_STATE block is in the application and has beendownloaded to the Mark VIe controller. After adding the block, if the user does not want to perform download and rebootchecks, then this feature can be disabled by forcing the DOWNLOAD_OK and REBOOT_OK inputs to True.

Precautions Before APP_STATE Deletion

Note Removing the APP_STATE block from an application is not recommended after the block has been added.

The user must be very careful if choosing to delete an APP_STATE block. Before deleting the APP_STATE block, theDOWNLOAD_OK and REBOOT_OK input pins must be forced to True. Only after forcing these inputs to True, andverifying, then the user can safely delete the block from the application.

Precautions Before Relocating the APP_STATE Block

Before relocating the APP_STATE block, the user must force the DOWNLOAD_OK and REBOOT_OK input pins to True.After forcing the inputs to True, and verifying, then the user can safely relocate the block.

Precautions Before Causing Major Revision Mismatch

Actions including compressing variables and changing the network redundancy can cause a major revision mismatch. Beforesuch actions are performed, the user must force the DOWNLOAD_OK and REBOOT_OK input pins to True. After forcingthe inputs to True, and verifying, the user can safely perform any action that could cause a major revision mismatch, and thendownload to the controller.

Inputs

Name Data Type Description

DOWNLOAD_OK BOOLWhen set to True, the controller allows downloads to occur. When set toFalse, the controller rejects downloads.

REBOOT_OK BOOLWhen set to True, the controller allows reboots to occur. When set to False,the controller rejects reboots.

Output

Name Data Type Description

DOWNLOADING BOOL True when a download is in progress

28 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 29: Mark* VIe Controller

Array Average (ARRAY_AVERAGE)Block Category: Array

The Array Average (ARRAY_AVERAGE) block performs the average of the input array IN at each scan the ENABLE pin isTrue. It includes in the average the element whose corresponding INDEX_ENABLE array element is True. If the INDEX_ENABLE pin is attached to a scalar variable, then all elements of the IN array are averaged. The average type performeddepends on the type enumerated on the TYPE pin.

Average Types

Average Type Value DescriptionAverage Linear 1 Average of the elements of input IN(n).

Average LinearAngle 2

Average of the elements of angle based inputs IN(n). It takes into account 0 degrees equals/360degrees wrap-around for angles. For each Linear Angle data point, the direction vector is brokendown into its corresponding x and y components. x(n)=cosine(IN(n)), y(n)=sine(IN(n)). Theaverage of the x and y components are computed separately. After the result is calculated, a finalresulting output, OUT is determined from the x and y components. Out = arctangent(y/x).

Average CosinePhi

3

Average calculations are first calculated using:y(n) = abs(IN(n))/IN(n) x arccos(abs(IN(n))).If average y(n) is yAvg, then OUT = cos(yAvg).For average type = cosine phi, the value of IN(n) is restricted to be within -1 to 1.

ARRAY_AVERAGE Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runIN REAL/LReal Array Input Variable ArrayTYPE ENUM(INT) Average TypeN Unsigned double integer Constant number of IN values to averageINDEX_ENABLE BOOL Array Defines which array elements are included in the average.

Output

Name Data Type DescriptionOUT REAL Current average

Instruction Guide GEI-100682AC 29For public disclosure

Page 30: Mark* VIe Controller

Array Calculator (ARRAY_CALC)Block Category: Array

The Array Calculator (ARRAY_CALC) block is an expandable block that performs mathematical operations, defined by theequation string, on up to 8 inputs, A(x), B(x), C(x), D(x), E(x), F(x), G(x), and H(x), for which the corresponding element inthe INDEX_ENABLE array is True, and places the result in the output variable, OUT(x). The data type of the inputs andoutput is implied by the block data type selected in the Block Properties. Any modification to the equation string EQUATrequires a re-download to the controller.

The INDEX_ENABLE pin is a Boolean array that determines whether the calculation specified by EQUAT is enabled forelements “x”. For example, if Inputs A and B are arrays, then

IF (INDEX_ENABLE(x)) OUT(x) = A(x) + B(x);

If the variable attached to the INDEX_ENABLE pin is a scalar, then the value of the scalar determines if all the elements areenabled on not.

IF (INDEX_ENABLE) OUT(x) = A(x) + B(x)

The 8 inputs are either arrays of size N or a scalar variable. If the input is a scalar, the operation for that input will be appliedto every element of the input arrays as defined by EQUAT.

For example, if A is a scalar and B is an array and EQUAT is A + B, then,

OUT(x) = A + B(x).

If A is a scalar and B is a scalar and EQUAT is A + B, then,

OUT(x) = A + B.

Another example, if A is a scalar and the EQUAT is A, then,

OUT(x) = A.

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 angleoperands 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, anequation to ADD two input variables A+B, has two Operands (A and B) and one Operator (+): a total of three elements.

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

30 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 31: Mark* VIe Controller

ARRAY_CALC Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runA ANY_NUM_array† First operand↓ ↓ ↓H ANY_NUM_array† Eighth operand

N UINTNumber of element of the array toevaluate.

INDEX_ENABLE BOOL ArrayDefines which array elements arecalculated per the equation

EQUAT String Equation string to be performed† Array inputs are at least size N or a scalar.

Output

Name Data Type DescriptionOUT ANY_NUM_array† Output Array† Array inputs are at least size N or a scalar.

Instruction Guide GEI-100682AC 31For public disclosure

Page 32: Mark* VIe Controller

Array Compare (ARRAY_COMPARE)Block Category: Array

The Array Compare (ARRAY_COMPARE) block compares two input values and sets an output Boolean as the result. Theinput variable data type is implied by the block data type. Inputs IN1 is an array of at least size N. IN2 is either an array of atleast size N or a scalar.

ARRAY_COMPARE Block

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

Comparison Functions

Function DescriptionGT Greater thanGE Greater than or equalEQ EqualNE Not equalLT Less thanLE Less than or equal

32 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 33: Mark* VIe Controller

COMPARE Blocks

Hysteresis and sensitivity settings are provided to prevent toggling around a boundary condition. Sensitivity refers to thetolerance 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 specificationby the value of HYST amount before it evaluates to False.

Greater Than

Instruction Guide GEI-100682AC 33For public disclosure

Page 34: Mark* VIe Controller

Greater Than or Equal To

Equal To

34 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 35: Mark* VIe Controller

Not Equal

Less Than or Equal To

Instruction Guide GEI-100682AC 35For public disclosure

Page 36: Mark* VIe Controller

Less Than

Inputs

Name Data Type DescriptionIN1 ANY_NUM_array The input to compareIN2 ANY_NUM_array The input to compare against

FUNC ENUM (INT)The comparison function (GT, LT, GE, LE, EQ, NE) (defaultvalue is GT)

HYST ANY_NUM The hysteresis valueSENS ANY_NUM The sensitivity valueN UINT Number of elements in comparison

Output

Name Data Type DescriptionOUT BOOL Array The result of the comparison

36 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 37: Mark* VIe Controller

Array Compress Boolean (ARRAY_COMPRESS)Block Category: Boolean Operations

The Array Compress Boolean (ARRAY_COMPRESS) block packs up Boolean input arrays into a single integer arrayvariable. For example, if the input Booleans for a particular array index contain the values 0000 0000 0000 0101, the outputinteger for that index will contain the value 5. The least significant input bit is IN0(x) and the most significant input bit isIN15(x). Each input IN0-IN15 may be either a Boolean array or a single Boolean value. If the input is a single Boolean, itsvalue is used when compressing for all array indexes.

This is a rubber block that can accept a maximum of 16 inputs.

Note The Array Expand Integer (ARRAY_EXPAND) block performs the opposite operation of the ARRAY_COMPRESSblock.

ARRAY_COMPRESS Block

Inputs

Name Data Type Description

IN0 BOOL or BOOL arrayContains the first input (least significant binarydigit)

↓ ↓ ↓

IN15 BOOL or BOOL ArrayContains the sixteenth input (most significantbinary digit)

N UINT Number of elements to compress

INDEX_ENABLE BOOL ArrayDefines which array elements are included inthe compress

Output

Name Data Type DescriptionOUT UINTarray Contains the packed information

Instruction Guide GEI-100682AC 37For public disclosure

Page 38: Mark* VIe Controller

Array Compress Boolean Long Integer (ARRAY_COMPRESS_UDI)Block Category: Boolean Operations

The Array Compress Boolean (ARRAY_COMPRESS) block packs up Boolean input arrays into a single integer arrayvariable. For example, if the input Booleans for a particular array index contain the values 0000 0000 0000 0101, the outputinteger for that index will contain the value 5. The least significant input bit is IN0(x) and the most significant input bit isIN31(x). Each input IN0-IN31 may be either a Boolean array or a single Boolean value. If the input is a single Boolean, itsvalue is used when compressing for all array indexes.

This is a rubber block that can accept a maximum of 32 inputs.

Note The Array Expand Integer Long Integer (ARRAY_EXPAND_UDI) block performs the opposite operation of theARRAY_COMPRESS_UDI block.

ARRAY_COMPRESS_UDI Block

Inputs

Name Data Type Description

IN0 BOOL or BOOL arrayContains the first input (least significant binarydigit)

↓ ↓ ↓

IN31 BOOL or BOOL arrayContains the thirty-second input (mostsignificant binary digit)

N UINT Number of elements to compress

INDEX_ENABLE BOOL arrayDefines which array elements are included inthe compress

Output

Name Data Type DescriptionOUT UINTarray Contains the packed information

38 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 39: Mark* VIe Controller

Array Empty (ARRAY_EMPTY)Block Category: Array

The Array Empty (ARRAY_EMPTY) block empties array elements into individual output pins. It is expandable up to 32outputs. The block works in reverse of the ARRAY_FILL block. When the IN_INDEX input is 0 (default), the array copystarts at 0 offset of the IN_ARRAY. OUT1 = IN_ARRAY[0], OUT2 = IN_ARRAY[1] and so forth. When the IN_INDEXinput is > 0, the block checks if there is a big enough array connected to the IN_ARRAYpin. If the array is not big enough,the block does nothing. If the array size is within the copy range, it starts copying from the offset. As a rule, IN_INDEXshould be less than (length of IN_ARRAY minus number of output pins) for a copy to occur.

Note This block supports all data types. It is required that an array be connected to the input array and the data type of thearray is the same as the output pins.

ARRAY_EMPTY Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is TRUE)IN_ARRAY ANY Input arrayIN_INDEX Unsigned Long Offset in input array to start copy

Outputs

Name Data Type DescriptionOUT1 ANY Output 1↓ ↓ ↓OUT32 ANY Output 32

Instruction Guide GEI-100682AC 39For public disclosure

Page 40: Mark* VIe Controller

Array Expand Integer (ARRAY_EXPAND)Block Category: Boolean Operations

The Array Expand Integer (ARRAY_EXPAND) block transforms the unsigned integer input array into its binary equivalentform and stores the expanded information into 16 Boolean output arrays. For example, if the value of the input for a particularindex is 5, the output Booleans contain the values 0000 0000 0000 0101 at the same array index. The least significant outputbit is pin OUT0(x) and the most significant output bit is pin OUTF(x).

Note The Array Compress Boolean (ARRAY_COMPRESS) block performs the opposite operation of the ARRAY_EXPANDblock.

ARRAY_EXPAND Block

Inputs

Name Data Type DescriptionIN UINTarray Value to expandN UINT Number of elements to expand

INDEX_ENABLE BOOL arrayDefines which array elements are included inthe expansion

Outputs

Name Data Type Description

OUT0 BOOL arrayContains the results of the expansion process(least significant binary digit)

↓ ↓ ↓

OUT9 BOOL arrayContains the results of the expansion process(tenth least significant binary digit)

OUTA BOOL arrayContains the results of the expansion process(eleventh least significant binary digit)

↓ ↓ ↓

OUTF BOOL arrayContains the results of the expansion process(most significant binary digit)

40 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 41: Mark* VIe Controller

Array Expand Integer Long Integer (ARRAY_EXPAND_UDI)Block Category: Boolean Operations

The Array Expand Integer Long Integer (ARRAY_EXPAND_UDI) block transforms the unsigned integer input array into itsbinary equivalent form and stores the expanded information into 32 Boolean output arrays. For example, if the value of theinput for a particular index is 5, the output Booleans contain the values 0000 0000 0000 0101 at the same array index. Theleast significant output bit is pin OUT0(x) and the most significant output bit is pin OUT1F(x).

Note The Array Compress Boolean Long Integer (ARRAY_COMPRESS_UDI) block performs the opposite operation of theARRAY_EXPAND_UDI block.

ARRAY_EXPAND_UDI Block

Inputs

Name Data Type DescriptionIN UINTarray Value to expandN UINT Number of elements to expand

INDEX_ENABLE BOOL arrayDefines which array elements are included inthe expansion

Instruction Guide GEI-100682AC 41For public disclosure

Page 42: Mark* VIe Controller

Outputs

Name Data Type Description

OUT0 BOOL arrayContains the results of the expansion process(least significant binary digit)

↓ ↓ ↓

OUT9 BOOL arrayContains the results of the expansion process(tenth least significant binary digit)

OUTA BOOL arrayContains the results of the expansion process(eleventh least significant binary digit)

↓ ↓ ↓

OUT1F BOOL arrayContains the results of the expansion process(most significant binary digit)

42 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 43: Mark* VIe Controller

Array Fill (ARRAY_FILL)Block Category: Array

The Array Fill (ARRAY_FILL) block fills an output array with input values. It is expandable up to 32 inputs. When theOUT_INDEX input is 0 (default), the array copy starts at 0 offset of the OUT_ARRAY. OUT_ARRAY[0] = IN1, OUT_ARRAY[1] = IN2 and so forth. When the OUT_INDEX input is > 0, the block checks if there is a big enough array connectedto the OUT_ARRAYpin. If the array does not have enough space the block does nothing. If the array size is within the copyrange it starts copying from the offset. As a rule OUT_INDEX should be less than [Length of OUT_ARRAY minus Numberof input pins] for a copy to happen.

Note This block supports all data types. It is required that an array be connected to the output and the data type of the arrayis the same as the input pins.

ARRAY_FILL Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is TRUE)OUT_INDEX BOOL Offset to start copy in output arrayIN1 ANY Input 1↓ ↓ ↓IN32 ANY Input 32

Output

Name Data Type DescriptionOUT_ARRAY ANY Destination array

Instruction Guide GEI-100682AC 43For public disclosure

Page 44: Mark* VIe Controller

Array Find Element (ARRAY_FIND)Block Category: Array

The Array Find Element (ARRAY_FIND) block determines if a given value is present in a given array and reports a Booleanstatus as to whether the value is found in the array. If the value is found, the block reports the index of the array elementcontaining the value. It also supports the ability to specify the starting index in the array from which to search (default is fromthe start of the array). Additionally, it supports sensitivity input to be used when evaluating equality. If multiple arrayelements contain the given value, the ARRAY_FIND block returns the index of the first matching element.

Note This is a variant block that supports the following block data types: Integer, Double Integer, Real, Long Real,Unsigned Integer, Unsigned Double Integer, and Boolean. Refer to the section Change Data Type of Variant Block.

ARRAY_FIND Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to run

IN_INDEX UDINT

Integer zero-based array index to begin searching from (default of0, or beginning of the array). This should be less than the size ofthe array. If this value is greater than the size of the array, then thesearch will begin from the beginning of the array.

IN_ARRAY[ ] ANY_NUM Array Input array to be searchedIN_VALUE ANY_NUM Value to be searched for in the array

SENS ANY_NUMSensitivity value. This is not applicable for the Boolean block datatype. If SENS is less than 0, it will be treated as 0.

Outputs

Name Data Type Description

OUT BOOLResult of the find. True indicates that the value was found in thearray.

OUT_INDEX UDINTInteger zero-based array index of the array element that matchedthe value.

44 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 45: Mark* VIe Controller

Array Minimum/Maximum Element Determination(ARRAY_MINMAX)Block Category: Array

The Array Minimum/Maximum Element Determination (ARRAY_MINMAX) block finds the location and value of theminimum or maximum element in a given array. The input is a column array (IN) holding the floating-point/double entriesaccording to the variant of the block. The input pin N (specifying the size of the array) is an immediate pin. Therefore, itcannot be changed while the controller is online.

There is only one failure mode for this block, the failure to properly specify an input array (has either more or less elementsthan defined by the N).

Note This is a variant block that supports the following block data types: Integer, Double Integer, Real, Long Real,Unsigned Integer, and Unsigned Double Integer.

ARRAY_MINMAX Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runN Constant UINT Number of elements in input array ININDEX_ENABLE BOOL Array Defines which array elements determine MAX/MININ[ ] ANY_NUM Array Array holding elements

FUNC Constant UINTChoice of operation { 0 for Maximum,1 for Minimum}

Outputs

Name Data Type Description

INDEX UINTInteger Zero-Based array Index for Min/MaxElement (1st instance)

VALUE ANY_NUM Value of Min/Max element found

Instruction Guide GEI-100682AC 45For public disclosure

Page 46: Mark* VIe Controller

Array Relay Ladder Logic (ARRAY_RUNG)Block Category: Array

The Array Relay Ladder Logic (ARRAY_RUNG) block solves a Boolean equation of up to 16 input arrays. The arrays are ofsize at least N. The equation is specified as a character string or can be configured through the Relay Ladder Logic editor inthe ToolboxST application. The equation may consist of up to 128 elements, or combinations of operators and operands. Forexample, the equation A + B contains two operands and one operator for a total of three elements.

Supported Operators

Operation OperatorParenthesis ( )NOT ~OR +AND *

RUNG Block

Inputs

Name Data Type DescriptionEQN Constant String Boolean equationA BOOL Array Required Boolean input used in equation↓ ↓ ↓P BOOL Array Boolean input used in the equationNVal Unsigned double integer Number of elements to evaluate

Output

Name Data Type DescriptionOUT_ARRAY BOOL Array The result of the equation

46 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 47: Mark* VIe Controller

Array Sum (ARRAY_SUM)Block Category: Array

The Array Sum (ARRAY_SUM) block performs a summation of all the elements of the input array IN. It includes theelement for which the corresponding INDEX_ENABLE array element is True.

ARRAY_SUM Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runIN REAL/LReal Array Input Variable ArrayN Unsigned double integer Constant number of IN values to be summed

INDEX_ENABLE BOOL Array Defines which array elements are included in thesummation

Output

Name Data Type DescriptionOUT REAL Current sum

Instruction Guide GEI-100682AC 47For public disclosure

Page 48: Mark* VIe Controller

Average Input (AVRG)Block Category: Math

The Average Input (AVRG) block performs a rolling average on the last N values of the input IN at each scan the ENABLEpin is True. The N values used to calculate the rolling average are stored in the output array, ARRAY[N] and ARRAY[N]must be defined with at least N elements. ARRAY[N] can be initialized to the current value of IN by setting the PRESET pinto True. The block automatically performs a PRESET if the block detects that the value of N has changed after a download.

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

AVRG Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is TRUE)IN REAL† Last input to be included in the rolling averagePRESET BOOL True to initialize all N values of ARRAY to current value of INN Unsigned double integer Constant number of IN values to average† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT REAL† Current rolling average

ARRAY[N] REALStorage for last N values of input, IN. This array must be defined with atleast N elements

† Value with status, if status option is enabled.

48 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 49: Mark* VIe Controller

Bit Counter (BIT_CNTR)Block Category: Boolean Operations

The Bit Counter (BIT_CNTR) block counts the number of Boolean inputs that are currently set to 1. This is a rubber blockthat can handle from 1 to 32 input Boolean variables. The resulting count is placed in the integer output COUNT.

BIT_CNTR Block

Inputs

Name Data Type DescriptionIN1 BOOL Input Boolean variable 1↓ ↓ ↓IN32 BOOL Input Boolean variable 32

Output

Name Data Type DescriptionCOUNT UINT Number of input bits set to TRUE

Instruction Guide GEI-100682AC 49For public disclosure

Page 50: Mark* VIe Controller

Boolean Alarm (BOOLEAN_ALARM)Block Category: Boolean Operations

The Boolean Alarm (BOOLEAN_ALARM) block documents the alarm configuration of a Boolean variable. It has noassociated runtime operation; it is effectively an application code comment. When the IN pin is connected to a Booleanvariable, the block displays the alarm configuration for that variable.

ToolboxST Configuration

➢➢ To insert the BOOLEAN_ALARM block in the ToolboxST application

1. From the Tree View, select a task to display the Block Diagram Editor in the Summary View.

From the Library View, select the BOOLEAN_ALARM block and drag and drop into the Diagram Editor.

Inserted BOOLEAN_ALARM Block

50 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 51: Mark* VIe Controller

2. Double-click the IN pin and connect the global variable to the input.

.Select Global VariableSelect Create variableand enter the variablename, or click BrowseGlobals to select avariable. Click OK .

BOOLEAN_ALARM Block Global Variable Connected to the Input

3. From the Block Diagram Editor, double-click the BOOLEAN_ALARM block.

Select the variable name.

Instruction Guide GEI-100682AC 51For public disclosure

Page 52: Mark* VIe Controller

From the Property Editor , select Alarm. From the drop-down list, select Alarmed.

Configured BOOLEAN_ALARM Block

Inputs

Name Data Type DescriptionIN BOOL Connect to a Boolean variable to document its alarm configuration

Unshelve† BOOLWhen set to True when the alarm is shelved, will cause the alarm tounshelve

† Available only when the Alarm Shelving property is set to Enabled

52 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 53: Mark* VIe Controller

Bubble Sort (BSORT)Block Category: Array

The Bubble Sort (BSORT) block sorts the input array, SRC, of data and transfers it to the sorted array, DEST. BSORT isoptimized for small variation in the input data, SRC[ ], between task performance by initially using the mapping from theprevious task scan, stored in array, INDEX[ ], to move the data in SRC[ ] to the output array, DEST[ ]. The algorithm checksthe array to make sure it is sorted using a comparison system and corrects any errors using a bubble sort algorithm. Thenumber of elements sorted is the least of N, the array size of SRC[ ], the array size of DEST[ ], or the array size of INDEX[ ].The function is complete when the list is navigated completely without an exchange of data between elements of DEST[ ].

BSORT Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is False)N UDINT Number of elements in the array to be sortedSRC[ ] REAL The input array

Outputs

Name Data Type DescriptionDEST[ ] REAL The sorted arrayINDEX[ ] UDINT The mapping used to take the source array to the destination array

Instruction Guide GEI-100682AC 53For public disclosure

Page 54: Mark* VIe Controller

Calculator (CALC)Block Category: Math

Note Annunciation of TMR Controller Heartbeat Status Not OK is a logic example using the CALC block.

The Calculator (CALC) block is an expandable block that performs mathematical operations as defined by the equation stringon up to eight inputs, A, B, C, D, E, F, G, and H, and places the result in the output variable, OUT. The data type of the inputsand output is implied by the block data type selected in the Block Properties. Any modification to the equation string EQUATrequires a re-download to the controller.

Note The equation must be stated in terms of the operators and the A through H operands. The trigonometric functionsexpect angle operands to be expressed in units of radians.

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

There is a limit of 64 elements (Operands and Operators) that may be specified in the equation string. For example, anequation to ADD two input variables A+B, has two Operands (A and B) and one Operator (+): a total of three elements.

CALC Block

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

54 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 55: Mark* VIe Controller

This block propagates quality status if the status operations are enabled.

Block status modifications:

• When using the division operator (/), if the denominator = 0, the denominator will be replaced by 3.4e-38. The status willbe either LOW_LIMITED-CONFIGURATION_ERROR-BAD [5] if the numerator < 0 or HIGH_LIMITED-CONFIGURATION_ERROR-BAD” [6] if the numerator > 0.

• When using the modulus operator (%), if the divisor = 0, the divisor will be replaced by 3.4e-38. The status will be eitherLOW_LIMITED-CONFIGURATION_ERROR-BAD [5] if the dividend < 0 or HIGH_LIMITED-CONFIGURATION_ERROR-BAD [6] if the numerator > 0.

• When using the RECIP() function, if the input operand A = 0, it is replaced by 3.4e-38. The status will be HIGH_LIMITED-CONFIGURATION_ERROR-BAD [6].

• When using the SQR() function, if the input is negative, the output will be the square root of the absolute value of theinput. The status will be NOT_LIMITED-CONFIGURATION_ERROR-BAD [4].

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

status will be NOT_LIMITED-CONFIGURATION_ERROR-BAD [4].• 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. The

status will be NOT_LIMITED-CONFIGURATION_ERROR-BAD [4].• 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. The status will be NOT_LIMITED-CONFIGURATION_ERROR-BAD [4].

Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)A ANY_NUM† First operandB ANY_NUM† Second operandC ANY_NUM† Third operand↓ ↓ ↓H ANY_NUM† Eighth operandEQUAT String Equation string to be performed† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY_NUM† Output† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 55For public disclosure

Page 56: Mark* VIe Controller

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 toToolboxST application or the Data Historian for display and analysis. Multiple clients may upload the same buffer. The blocksupports 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 timeoutfrom the last upload.

CAPTURE Block

CAPTURE Block Expanded

56 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 57: Mark* VIe Controller

Inputs

Name Data Type Function Description

TR_TYPEConstant Tr_Type_T

Trigger Type

The sensitivity applied to the trigger condition for trigger evaluation – defaultis Level

Edge (1) – If the current trigger condition is True and the previous triggercondition is False, the trigger is True

Level (2) – If the current trigger condition is True, the trigger is True

AUTOENA Constant BOOLAutomaticEnable

If True, the block is automatically re-enabled for a new capture after thebuffer is uploaded. Note if automatic enabling is selected all manual enableinputs are ignored - default is False

ATOUTConstantUDINT

AutomaticEnable Timeout

The number of seconds after the last upload before capturing is re-enabled(only applicable if AUTOENA is True) – default is 60 seconds

BUF_CTLConstant Buf_Ctl_T Buffer Control

Buffer Control – Controls how and when the data is collected – default isNORMAL

NORMAL (1) – PRE_SAM samples are collected before a trigger event.POSTSAM samples are collected after the trigger event. Samples arecollected every FMULTscans. Capturing stops when the specified sampleshave 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 FMULTscans.The buffer contains the newest PRE_SAM + POSTSAM samples unlesscapturing is stopped prior to filling the buffer. Capturing stops when anupload command is received, or when the ENA_CAP pin transitions to Falseif automatic re-enabling is not selected.

ONLY (3) – The trigger condition is evaluated each scan. Samples are onlycollected 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 uploadcommand is received, or when the ENA_CAP pin transitions to False ifautomatic re-enabling is not selected.

ENA_CAP BOOL Manual Enable

If True and the AUTOENA pin is False, enable the block for capture. This pingives the application code the ability to enable and disable data collection.This is an edge-triggered pin. Once a capture has been stopped the pinmust be toggled False and then True again to re-enable the next capture. –default is False

FMULT Constant UINTSample PeriodMultiplier

Allows data to be collected slower than the performance rate of the block(scan period) by specifying a multiple of the scan period for samples to betaken (only applies to Normal and Circular buffer control) – default is 1

If a zero value is given, then the block will treat it as one Frame multiple.

POSTSAMConstantUDINT

Post TriggerSample Size

The number of samples to collect after and including the trigger event –default is 100

PRE_SAM ConstantUDINT

Pre TriggerSample Size

The number of samples to collect prior to the trigger event – default is 10

Instruction Guide GEI-100682AC 57For public disclosure

Page 58: Mark* VIe Controller

Inputs (continued)

Name Data Type Function Description

TR_CONDConstant Tr_Cond_T

TriggerCondition

The relational comparison between the trigger variable (TR_VAR) and thetrigger 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

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

TR_VAL ConstantLREAL

Trigger Value The value compared against the trigger variable for trigger evaluation –default is 0

TR_VAR ANY Trigger Variable The variable against which the trigger condition is evaluated – default is 0

TSTAMP Const BOOLTime StampEnable

If True, the UTC time of each sample is collected with the sample – default isFalse

VAR1 ANYCollectedVariables

One to thirty-two variables to be collected each sample. The trigger variableis not required to be one of the captured variables, but including it in thevariable list normally adds value to the collection.

↓ ↓ ↓ ↓

VAR32 ANYCollectedVariables

One to thirty-two variables to be collected each sample. The trigger variableis not required to be one of the captured variables, but including it in thevariable list normally adds value to the collection.

UPL_TYPE Upl_Type_T

Manual (1) – Captured data must be manually uploaded by the user.

Automatic (2) – Captured data is automatically uploaded by the datacollection system.

Trip (3) – Captured data is automatically uploaded by the data collectionsystem and is incorporated as part of the trip log.

Flash (4) – Captured data is written to flash disk on the controller. The lastthree samples are preserved after which the oldest one is overwritten. Thisworks only when the BUF_CTL is set to NORMAL.

58 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 59: Mark* VIe Controller

Outputs

Name Data Type Function Description

STATUS UINT Capture Status

The current status of the capture:DISABLED (0) – Not runningWAITING FOR TRIGGER (1) – Collecting pre-triggersamplesCAPTURING (2) – Collecting post-trigger samplesCAPTURE COMPLETE (3) – Data ready to be uploadedLOCKED (8003H) – The buffer is locked by an upload toanother clientFLASH WRITING (4) – The captured samples are beingwritten to flash.

DONE BOOL Capture Done Set to True when a buffer is ready to be loaded

Theory of OperationThe Capture block is a software function used to collect application variables in real-time for offline display and analysis. Thecore software is shared between the Capture block and Dynamic Data Recorders (DDRs). The main differences between themare:

• Capture blocks require an application code download to configure, while DDRs are configured by an independentdownload mechanism.

• Capture blocks are embedded in the application code and can be used to catch events that occur between application codeblocks. DDRs perform outside of the application code and can only sample data after all of the application code hasperformed in a particular frame.

• Capture blocks perform at the same priority as the other application code and so insure the highest data fidelity. DDRsperform 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 beuploaded to one or more client devices. Once uploaded the block may be re-armed to take another collection. Typically, forclients other than ToolboxST application the status pin must be mapped to EGD so that it can be monitored outside thecontroller. 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 clientshave been serviced.

Data collection is managed by specifying a buffer control mode and a trigger event. There are three buffer control modes. ANORMAL collection is one where a specified number of samples are collected prior to a trigger event and a specified numberof 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 ishalted by requesting an upload or disabling the block. An ONLY collection is one where samples are only collected if thespecified trigger event is True each opportunity the block has to collect a sample. This is useful when collecting data aroundan 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 therelational specifications of the trigger condition, and the sensitivity of the trigger type. Acceptable trigger conditions includeEQUALTO, NOT EQUALTO, GREATER THAN, GREATER THAN OR EQUALTO, LESS THAN, and LESS THAN OREQUALTO. Acceptable trigger types include LEVEL or EDGE. A level trigger is one that is satisfied at present, regardlessof past values. An edge trigger is one that is satisfied at present but was not satisfied at the previous evaluation.

Instruction Guide GEI-100682AC 59For public disclosure

Page 60: Mark* VIe Controller

ConfigurationThe Capture block may be re-configured by either an offline or online download. Downloading causes the states of ALLCapture 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 are-initialization. This may be accomplished by examining the DONE and STATUS pins or through timeouts.

Enabling Collections

Note Avariable needs to be connected to the Status pin to enable the automatic upload functionality of the CAPTURE blockin the WorkstationST* application.

A new collection may be enabled manually through blockware, or automatically, if so configured. If manual enabling isselected, the application code must toggle the ENA_CAP to False for at least one frame then back to True to re-enable acollection. Additionally, the block ignores all transitions of the ENA_CAP pin while the buffer is locked for uploading so thistoggling must occur when the buffer is unlocked. If automatic enabling is selected, the block is initially enabled and alltransitions of the ENA_CAP pin are ignored. The block will re-enable a capture after at least one upload occurs, and no newupload requests are received within ATOUT seconds following the completion of the last upload. Uploading a collection thatis not complete automatically changes the block status to complete. Another upload is not necessary to re-enable the nextcollection.

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

60 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 61: Mark* VIe Controller

Buffer Control Details

NORMALNORMAL 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 triggerevent occurs. Once the trigger occurs, the block collects POSTSAM more samples before changing the STATUS pin toComplete. The trigger sample is included in the post sample count. Typically the buffer will contain PRE_SAM + POSTSAMtotal samples. If the trigger occurs prior to collecting all of the pre-trigger samples, or the collection is halted prior tocapturing all of the post trigger samples this may not be the case.

CIRCULARCIRCULAR mode is used to collect samples continuously until the buffer is manually stopped. Specifying a trigger event ismeaningless in this mode.

Once enabled, the block begins collecting samples, retaining the most recent PRE_SAM + POSTSAM total samples. It ispossible for the buffer to contain fewer samples if the collection is halted prematurely.

ONLYONLY 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 triggerevent is True. The block collects the first PRE_SAM + POSTSAM trigger samples before changing the STATUS pin toComplete. It is possible for the buffer to contain fewer samples if the collection is halted prematurely.

Time StampingThe TSTAMP pin specifies whether wall clock time (in UTC format) is collected with each sample, or whether it is collectedonly 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 timestampinformation.

Instruction Guide GEI-100682AC 61For public disclosure

Page 62: Mark* VIe Controller

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

Buffer Control Mode Affected StatesStatus BUF_CTL DescriptionDISABLED All Prior to being enabled for the first time (manual enable mode only)

WAITINGNORMAL Collecting pre-trigger samples while looking for a triggerCIRCULAR Does not occurONLY Waiting for a trigger to occur

CAPTURINGNORMAL Collecting post-trigger samples

CIRCULAR Collecting samplesONLY Collecting a trigger sample

COMPLETE All No longer collecting, ready to be uploaded, ready to be re-enabled

FLASHWRITINGNORMAL Writing the pre-trigger and post-trigger samples to flash.CIRCULAR Does not occurONLY Does not occur

Note For potential application code pitfalls, refer to the section Redundancy Issues.

Redundancy IssuesLike all application code blocks configured in a redundant controller system, the Capture block is replicated faithfully in eachcontroller. 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 notvoted and as a result may not always track between controllers. This is normal if a capture is terminated early by an uploadrequest or anti-voted data is used in the trigger specification. Application writers who want to monitor these pins throughblockware should be aware of this discrepancy.

62 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 63: Mark* VIe Controller

Memory UseCapture blocks consume RAM memory from the system memory pool to create the capture buffers. The allocation of memoryin the controller is a compromise that must be made considering the amount of real RAM available, the amount required forapplication code, the amount needed for data collection (for example, Capture blocks and DDRs), and a free pool necessaryfor 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 sumof the size of each collected variable. If time-stamping is enabled add 8 bytes times the number of samples. For example, if aCAPTURE block is configured to collect 1000 total samples where each sample contains two Reals, three Short Integers, andfive Booleans, 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)

Boolean (BOOL) 1Short Integer (INT) 2Unsigned Sort Integer (UINT) 2Long Integer (DINT) 4Unsigned Long Integer (UDINT) 4Float (REAL) 4Long Float (LREAL) 8

Instruction Guide GEI-100682AC 63For public disclosure

Page 64: Mark* VIe Controller

Change Detection (CHG_DET)Block Category: Sequencing

The Change Detection (CHG_DET) block sets the OUT to True whenever it detects a difference between IN and STATEgreater than the absolute value of DBAND, effectively generating a Boolean pulse that may be used to synchronize otherblocks. In addition a symmetric range around zero may be specified by NZBAND that will cause the output to pulsewhenever IN moves into it, regardless of the size of the step change made to get there. Once inside NZBAND, IN must moveequal to or outside DBAND to reset the near zero detection function.

Note This block is a variant block that supports any one of the following block data types: Boolean, Integer, Double Integer,Real, Long Real, Unsigned Integer, Unsigned Double Integer. The data type of the outpin must match with the selected datatype of the block. Refer to the section Change Data Type of Variant Block.

Inputs

Name Data Type DescriptionIN ANY The variable to watch

DBAND ANYThe maximum numerical difference (deadband) that will not be detected. Thispin is inactivated for CHG_DET_B.

NZBAND ANYThe range around zero (near zero band) that when entered by IN will causeOUT to be pulsed True even if the change to get there was less than theDBAND value. This pin is inactivated for CHG_DET_B.

Output

Name Data Type Description

OUT ANY True when a change is detected or when entering near zero, otherwise False

StatesName Data Type DescriptionSTATE ANY Last value of the inputNZFLAG BOOL Near Zero Flag. Not used for CHG_DET_B.

64 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 65: Mark* VIe Controller

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 becomeTrue 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 VariantBlock.

CLAMP Block

This block propagates quality status if the status operations are enabled.

Block status modifications: OUTstatus is propagated from IN status. The status of OUT is modified to include HIGH_LIMITEDor LOW_LIMITED when applicable. For example:

• If IN status = NOT_LIMITED-GOODN” [128]• And OUT = MAX, then OUTstatus = HIGH_LIMITED-GOODNC [130]• Or OUT = MIN, then OUTstatus = LOW_LIMITED-GOODNC [129]• Or MIN < OUT < MAX, then OUTstatus = NOT_LIMITED-GOODNC [128]

Refer to the Status Monitoring (STATUS_MONITORING) block.

Instruction Guide GEI-100682AC 65For public disclosure

Page 66: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runMAX ANY_NUM Maximum limitIN ANY_NUM† Value to be clampedMIN ANY_NUM Minimum limit† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT ANY_NUM† Clamped outputIN_MAX BOOL Output is clamped at HILIMIN_MIN BOOL Output is clamped at LOLIM† Value with status, if status option is enabled.

66 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 67: Mark* VIe Controller

Code Timer (CODETIMER)Block Category: System

The Code Timer (CODETIMER) block calculates the time in microseconds between successive performances of the block. Itis used to determine how much time it takes to run a section of blockware, or how often a task runs in the controller. TheCODETIMER block calculates the interval of time, sweep, which passes between successive performances of the block, andstores the result in output DELTA. The block may be used to measure the scan period of a task by inserting a block at the startof the task. It is used to measure the performance time of a group of blocks by placing a CODETIMER block before and afterthe group and tying the DTIME pin of both blocks together. The correct time is displayed by the output DELTA of the secondCODETIMER block in that configuration.

The CODETIMER block collects statistical information about the sweep times measured. The PBAND pin is used to specifya time period for which no statistical data is collected, allowing the block to be configured to filter all but the worst-caseperformance times. The worst sweep times are stored in output variables WORST1 to WORST5 with WORST1 being thehighest time. The output variable SWEEPS provides the number of block performances since the block is enabled. The MINand MAX output variables indicate the lowest and highest sweep time respectively. To eliminate any known constant delays, avalue placed on the OFFSET pin is subtracted from the time period measured. Toggle the ENABLE pin to reset the block toits old statistics and start up. To calculate the average performance time connect the CODETIMER block with the FIR block.

Note The block functionality is not supported in the Virtual Controller. All the outputs default to a value of 0 except for theMIN, which defaults to 4294267295.

CODETIMER Block

CODETIMER Block Expanded

Instruction Guide GEI-100682AC 67For public disclosure

Page 68: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)OFFSET UINT Calibration offset in microsecondsPBAND REAL Minimum time of sweep in microseconds to collect statistics on

Outputs

Name Data Type DescriptionMAX LREAL The longest period in microseconds between block performancesMIN LREAL The shortest period in microseconds between block performancesDELTA LREAL The time in microseconds since the last performance of the blockNPBAND UDINT The number of sweep times that have been longer than PBANDSWEEPS UDINT The number of performance cycles recordedWORST1 LREAL The longest sweep time greater than PBANDWORST2 LREAL The second longest sweep time greater than PBANDWORST3 LREAL The third longest sweep time greater than PBANDWORST4 LREAL The fourth longest sweep time greater than PBAND

WORST5 LREAL The fifth longest sweep time greater than PBAND

State

Name Data Type DescriptionDTIME LREAL Internal State Variable

68 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 69: Mark* VIe Controller

Comment (_COMMENT)Block Category: System

The Comment (_COMMENT) block adds comment text in the block diagram. The block inserts a line break as viewed fromthe tool and on the printed page. The comment will appear on the left side of the page on the next line after the previousblock. The text of the comment is added in the Property View on the lower left side of the screen. The Show Descriptionproperty must be set to 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 ofthe code if there are no subsequent comment blocks).

Comment Block Functionality (_COMMENT_BF)Block Category: Legacy, System

Note This block is not recommended for use in any new controller applications (ControlST V05.02 or later). Refer to thesection Legacy Category Blocks.

The Comment Block Functionality (_COMMENT_BF) block adds comment text in the block diagram. The block inserts aline break as viewed from the tool and on the printed page. The comment will display on the left side of the page on the nextline after the previous block. The text of the comment is added in the Property View on the lower left side of the screen. TheShow 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 ofthe code if there are no subsequent comment blocks).

Instruction Guide GEI-100682AC 69For public disclosure

Page 70: Mark* VIe Controller

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 onthe 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 (orend of the code if there are no subsequent comment blocks).

70 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 71: Mark* VIe Controller

Compare (COMPARE)Block Category: Comparison

The Compare (COMPARE) block compares two input values and sets an output Boolean as the result. The input variable datatype is implied by the block data type.

Note Annunciation of Overtemp for Mark VIe I/O Packs and Annunciation of Controller TMR Heartbeat Status Not OK arelogic examples of using the COMPARE block.

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

Comparison Functions

Function DescriptionGT Greater thanGE Greater than or equalEQ EqualNE Not equalLT Less thanLE Less than or equal

COMPARE Blocks

Hysteresis and sensitivity settings are provided to prevent toggling around a boundary condition. Sensitivity refers to thetolerance 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 specificationby the value of HYST amount before it evaluates to False.

Instruction Guide GEI-100682AC 71For public disclosure

Page 72: Mark* VIe Controller

Greater Than

Greater Than or Equal To

72 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 73: Mark* VIe Controller

Equal To

Not Equal

Instruction Guide GEI-100682AC 73For public disclosure

Page 74: Mark* VIe Controller

Less Than or Equal To

Less Than

74 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 75: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN1 ANY_NUM The input to compare

IN2 ANY_NUM The input to compare against

FUNC ENUM (integer) The comparison function (GT, LT, GE, LE, EQ, NE), default value is GTHYST ANY_NUM The hysteresis valueSENS ANY_NUM The sensitivity value

Output

Name Data Type DescriptionOUT BOOL The result of the comparison

Instruction Guide GEI-100682AC 75For public disclosure

Page 76: Mark* VIe Controller

Compress Boolean (COMPRESS)Block Category: Boolean Operations

The Compress Boolean (COMPRESS) block packs up Booleans inputs into a single integer variable. For example, if the inputBooleans contain the values 0000 0000 0000 0101, the output integer will contain the value 5. The least significant input bit isIN0 and the most significant input bit is IN15. This is a rubber block that can accept a maximum of 16 inputs.

Note The Expand Integer (EXPAND) block performs the opposite operation of the COMPRESS block.

COMPRESS Block

Inputs

Name Data Type DescriptionIN0 BOOL Contains the first input (least significant binary digit)↓ ↓ ↓IN15 BOOL Contains the sixteenth input (most significant binary digit)

Output

Name Data Type DescriptionOUT UINT Contains the packed information

76 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 77: Mark* VIe Controller

Compress to Long Integer (COMPRESS_UDI)Block Category: Boolean Operations

The Compress to Long Integer (COMPRESS_UDI) block is an expandable block of up to 32 inputs that converts Booleaninputs into a single unsigned double integer. For example, if the input Booleans contain the values 0000 0000 0000 0000 00000000 0000 0101, the output integer will be 5. The least significant input bit is IN0 and the most significant input bit is IN31.

Note The Expand Long Integer (EXPAND_UDI) block performs the opposite operation of the COMPRESS_UDI block.

COMPRESS_UDI Block

Inputs

Name Data Type DescriptionIN0 BOOL Contains the first input (least significant binary digit)↓ ↓ ↓IN31 BOOL Contains the thirty-second input (most significant binary digit)

Output

Name Data Type DescriptionOUT Unsigned double integer Contains the packed information

Instruction Guide GEI-100682AC 77For public disclosure

Page 78: Mark* VIe Controller

Controller Monitor (CTRLR_MON)Block Category: System

Note From the ToolboxST Component Editor Software tab, press F1 for more information on the ControllerStateHeartbeatintrinsic variable.CTRLR_MON creates global variables that can be used throughout the controller application logic.Onlyone instance of this block is allowed per controller set.

The Controller Monitor function block (CTRLR_MON) provides the application code with basic information about thecontrollers in the unit. One set of the outputs supplied by the block is ONLINE_R/S/T. These signals are set to TRUE whenControllerStateHeartbeat_R/S/T are incrementing, and are set to FALSE when ControllerStateHeartbeat_R/S/T are notincrementing. A configurable filter allows you to adjust the timeout.

The Controller Monitor (CTRLR_MON) block is used for the following purposes:

• The Block has a POWER_UP output that transitions to True 5 secs after the controller is in control mode. SIG_FORCEDturns on if there are any forced variables in the controller, SIG_FORCED is set to False for 2 s every time the number offorced variables is 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 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 thatthe controller heartbeat stops.

• The outputs HW_ALARM_R, HW_ALARM_S, HW_ALARM_T are set to True whenever a hardware failure diagnosticis generated for R, S and T controllers respectively. The outputs FAN1_FAIL_R, FAN1_FAIL_S and FAN1_FAIL_T areset to True whenever a FAN 1 failure is detected for R, S and T controllers respectively (applicable to UCSB only). Theoutputs FAN2_FAIL_R, FAN2_FAIL_S and FAN2_FAIL_T are set to True whenever a FAN 2 failure is detected for R, Sand T controllers respectively (applicable to UCSB only). Fans 1 and 2 are available only in UCSB, and thecorresponding failure outputs will be False for other platforms.

• The outputs MEM_LOW1_R, MEM_LOW1_S, MEM_LOW1_T are set to True when more than 70% of RAM memoryhas been used. Otherwise, these outputs remain False for R, S and T controllers, respectively. The outputs MEM_LOW2_R, MEM_LOW2_S, MEM_LOW2_T are True when more than 95% of RAM memory has been used. Otherwise, theseoutputs remain False for R, S and T controllers, respectively.

Note In the virtual controller, the OVERTEMP_R, OVERTEMP_S and OVERTEMP_T are all False because there is notemperature measurement functionality. ONLINE_S and ONLINE_T are always False regardless of the controllerconfiguration (Simplex, Dual or TMR).

78 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 79: Mark* VIe Controller

CTRLR_MON Block

Instruction Guide GEI-100682AC 79For public disclosure

Page 80: Mark* VIe Controller

Mark VIe Controller PlatformsOutput Pins UCCA UCCC UCSA UCSBH1/H4 UCSBH3 UCSC

POWER_UPTrue: Controller has been powered up and is controlling.False: Controller has not reached controlling state

SIG_FORCEDTrue: At least one signal is forcedFalse: No forced signals or set to False for 2 s every time the number of forced variables are increased

SIG_FORCED_NUM

Number of forced signals in the application

OVERTEMP_R

True: CPUtemperature toohighFalse: CPUtemperature normal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

Not Applicable(False)

True: CPUtemperature too highFalse: CPUtemperature normal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

OVERTEMP_S

True: CPUtemperature toohighFalse: CPUtemperature normal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

Not Applicable(False)

True: CPUtemperature too highFalse: CPUtemperature normal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

OVERTEMP_T

True: CPUtemperature toohighFalse: CPUtemperature normal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

Not Applicable(False)

True: CPUtemperature too highFalse: CPUtemperature normal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

True: CPUtemperature toohighFalse: CPUtemperaturenormal

ONLINE_RTrue: R Controller is OnlineFalse: R Controller is not Online

ONLINE_STrue: S Controller is OnlineFalse: S Controller is not Online

ONLINE_TTrue: T Controller is OnlineFalse: T Controller is not Online

HW_ALARM_RTrue: R controller hardware failure has occurredFalse: No R controller hardware failure

HW_ALARM_STrue: S Controller hardware failure has occurredFalse: No S controller hardware failure

HW_ALARM_TTrue: T Controller hardware failure has occurredFalse: No T Controller hardware failure

FAN1_FAIL_RNot Applicable(False)

Not Applicable(False)

Not Applicable(False)

Not Applicable(False)

True: R ControllerFan1 notfunctioningFalse: RController Fan1 isfunctioning

Not Applicable(False)

FAN1_FAIL_SNot Applicable(False)

Not ApplicableFalse)

Not Applicable(False)

Not Applicable(False)

True: S ControllerFan1 notfunctioningFalse: SController Fan1 isfunctioning

Not Applicable(False)

80 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 81: Mark* VIe Controller

Mark VIe Controller Platforms (continued)

FAN1_FAIL_TNot Applicable(False)

Not Applicable(False)

Not Applicable(False)

Not Applicable(False)

True: T ControllerFan1 notfunctioningFalse: T ControllerFan1 isfunctioning

Not Applicable(False)

FAN2_FAIL_RNot Applicable(False)

Not Applicable(False)

Not Applicable(False)

Not Applicable(False)

True: R ControllerFan2 notfunctioningFalse: RController Fan2 isfunctioning

Not Applicable(False)

FAN2_FAIL_SNot Applicable(False)

Not Applicable(False)

Not Applicable(False)

Not Applicable(False)

True: S ControllerFan2 notfunctioningFalse S ControllerFan2 isfunctioning

Not Applicable(False)

FAN2_FAIL_TNot Applicable(False)

Not Applicable(False)

Not Applicable(False)

Not Applicable(False)

True: T ControllerFan2 notfunctioningFalse: T ControllerFan2 isfunctioning

Not Applicable(False)

MEM_LOW1_RFalse: R controller RAM memory usage is less than 70% of total RAM memoryTrue: R controller RAM memory usage is more than 70% of total RAM memory

MEM_LOW1_SFalse: S controller RAM memory usage is less than 70% of total RAM memoryTrue: S controller RAM memory usage is more than 70% of total RAM memory

MEM_LOW1_TFalse: Tcontroller RAM memory usage is less than 70% of total RAM memoryTrue: Tcontroller RAM memory usage is more than 70% of total RAM memory

MEM_LOW2_RFalse: R controller RAM memory usage is less than 95% of total RAM memoryTrue: R controller RAM memory usage is more than 95% of total RAM memory

MEM_LOW2_SFalse: S controller RAM memory usage is less than 95% of total RAM memoryTrue: S controller RAM memory usage is more than 95% of total RAM memory

MEM_LOW2_TFalse: Tcontroller RAM memory usage is less than 95% of total RAM memoryTrue: Tcontroller RAM memory usage is more than 95% of total RAM memory

Inputs

Name Description Type InitialValue

Visibility Usage InterfaceType

ONLINE_FL_TMR Online Fail Triple Modular Redundancy UDINT 5000 ms Parameter Input Value only

Outputs

Name Description Type InitialValue

Visibility Usage InterfaceType

HW_ALARM_R R Controller Hardware Failure Alarm BOOL False Always Output Value OnlyHW_ALARM_S 1 S Controller Hardware Failure Alarm BOOL False Always Output Value OnlyHW_ALARM_T 2 T Controller Hardware Failure Alarm BOOL False Always Output Value OnlyFAN1_FAIL_R R Controller Fan1 Failure BOOL False Always Output Value OnlyFAN1_FAIL_S 1 S Controller Fan1 Failure BOOL False Always Output Value OnlyFAN1_FAIL_T 2 T Controller Fan1 Failure BOOL False Always Output Value Only

Instruction Guide GEI-100682AC 81For public disclosure

Page 82: Mark* VIe Controller

Outputs (continued)

Name Description Type InitialValue

Visibility Usage InterfaceType

FAN2_FAIL_R R Controller Fan2 Failure BOOL False Always Output Value OnlyFAN2_FAIL_S 1 S Controller Fan2 Failure BOOL False Always Output Value OnlyFAN2_FAIL_T 2 T Controller Fan2 Failure BOOL False Always Output Value OnlyPOWER_UP Controller Powered Up BOOL 0 Always Output Value OnlySIG_FORCED Signal Forced In Controller BOOL False Always Output Value OnlySIG_FORCED_NUM Number of Forced Signals INT 0 Always Output Value OnlyOVERTEMP_R R Controller Over Temperature BOOL False Always Output Value OnlyOVERTEMP_S 1 S Controller Over Temperature BOOL False Always Output Value OnlyOVERTEMP_T 2 T Controller Over Temperature BOOL False Always Output Value OnlyONLINE_S 1 R Controller Online BOOL False Always Output Value OnlyONLINE_R S Controller Online BOOL False Always Output Value OnlyONLINE_T 2 T Controller Online BOOL False Always Output Value OnlyMEM_LOW1_R R Controller Low Memory 1 BOOL False Always Output Value OnlyMEM_LOW1_S 1 S Controller Low Memory 1 BOOL False Always Output Value OnlyMEM_LOW1_T 2 T Controller Low Memory 1 BOOL False Always Output Value OnlyMEM_LOW2_R R Controller Low Memory 2 BOOL False Always Output Value OnlyMEM_LOW2_S 1 S Controller Low Memory 2 BOOL False Always Output Value OnlyMEM_LOW2_T 2 T Controller Low Memory 2 BOOL False Always Output Value Only1 Exists only when the controller’s redundancy is dual or TMR2 Exists only when the controller’s redundancy is TMR

Global Variables

Global Pin Name Description Alarm AlarmClass Event

EGDDefaultPage

ExternalAccess

HW_ALARM_R R Controller Hardware Failure Alarm Alarmed Diag False $Default Read OnlyHW_ALARM_S 1 S Controller Hardware Failure Alarm Alarmed Diag False $Default Read OnlyHW_ALARM_T 2 T Controller Hardware Failure Alarm Alarmed Diag False $Default Read OnlyFAN1_FAIL_R R Controller Fan1 Failure Alarmed Diag False $Default Read OnlyFAN1_FAIL_S 1 S Controller Fan1 Failure Alarmed Diag False $Default Read OnlyFAN1_FAIL_T 2 T Controller Fan1 Failure Alarmed Diag False $Default Read OnlyFAN2_FAIL_R R Controller Fan2 Failure Alarmed Diag False $Default Read OnlyFAN2_FAIL_S 1 S Controller Fan2 Failure Alarmed Diag False $Default Read OnlyFAN2_FAIL_T 2 T Controller Fan2 Failure Alarmed Diag False $Default Read Only

POWER_UP Controller Powered Up NotAlarmed

N/A False N/A Read Only

SIG_FORCED Signal Forced In Controller Alarmed Diag False N/A Read Only

SIG_FORCED_NUM Number of Forced Signals NotAlarmed

N/A False N/A Read Only

OVERTEMP_R R Controller Over Temperature Alarmed Diag False $Default Read OnlyOVERTEMP_S 1 S Controller Over Temperature Alarmed Diag False $Default Read OnlyOVERTEMP_T 2 T Controller Over Temperature Alarmed Diag False $Default Read Only

ONLINE_R R Controller OnlineNotAlarmed

N/A False $Default Read Only

ONLINE_S 1 S Controller OnlineNotAlarmed

N/A False $Default Read Only

82 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 83: Mark* VIe Controller

Global Variables (continued)

Global Pin Name Description Alarm AlarmClass Event

EGDDefaultPage

ExternalAccess

ONLINE_T 2 T Controller OnlineNotAlarmed

N/A False $Default Read Only

MEM_LOW1_R R Controller Low Memory 1 Alarmed Diag False $Default Read OnlyMEM_LOW1_S 1 S Controller Low Memory 1 Alarmed Diag False $Default Read OnlyMEM_LOW1_T 2 T Controller Low Memory 1 Alarmed Diag False $Default Read OnlyMEM_LOW2_R R Controller Low Memory 2 Alarmed Diag False $Default Read OnlyMEM_LOW2_S 1 S Controller Low Memory 2 Alarmed Diag False $Default Read OnlyMEM_LOW2_T 2 T Controller Low Memory 2 Alarmed Diag False $Default Read Only1 Exists only when the controller’s redundancy is dual or TMR2 Exists only when the controller’s redundancy is TMR

Instruction Guide GEI-100682AC 83For public disclosure

Page 84: Mark* VIe Controller

Count Down (CTD)Block Category: Timers and Counters

The Count Down (CTD) block counts down and the counter, CUR_CNT, is decremented upon each rising edge of the DECpin. CUR_CNT is only decremented as long as the ENABLE pin is True. If ENABLE is False, the countdown is suspendedbut CUR_CNT holds its value. By default, the ENABLE pin is True. If RESET is True, the countdown is suspended and thevalue of CUR_CNT is set to MAX_CNT. MAX_CNT must be greater than or equal to 1.

Once CUR_CNT is equal to zero, AT_CNT becomes True. Then, each rising edge transitions of DEC CUR_CNT remainszero and AT_CNT remains True, until RESET is True.

CTD Block

Inputs

Name Data Type DescriptionDEC BOOL Decrements counter upon rising edgeMAX_CNT Unsigned double integer Value to start countdownRESET BOOL Sets counter to MAX_CNTENABLE BOOL Permissive for block performance

Outputs

Name Data Type DescriptionAT_CNT BOOL True when CUR_CNT reaches zeroCUR_CNT Double integer Current countdown value

84 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 85: Mark* VIe Controller

Count Up (CTU)Block Category: Timers and Counters

The Count Up (CTU) block counts up and the accumulating counter, CUR_CNT, is incremented upon each rising edge of theINC pin. CUR_CNT is only incremented as long as the ENABLE pin is True. If ENABLE is False, then the counting issuspended but CUR_CNT holds its value. By default, the ENABLE pin is True. If RESET is True, then the counting issuspended and the value of CUR_CNT is set to zero. MAX_CNT must be greater than or equal to 1.

Once MAX_CNT is reached, AT_CNT becomes True. Then, each rising edge of INC increments CUR_CNT. AT_CNTremains True, until MAX_CNT < CUR_CNT.

CTU Block

Inputs

Name Data Type DescriptionINC BOOL Increments counter upon rising edgeMAX_CNT UDINT Maximum count valueRESET BOOL Sets counter to zeroENABLE BOOL Permissive for block performance

Outputs

Name Data Type DescriptionAT_CNT BOOL True when CUR_CNT reaches MAX_CNTCUR_CNT UDINT Current count value

Instruction Guide GEI-100682AC 85For public disclosure

Page 86: Mark* VIe Controller

Decode (IN_DECODE)Block Category: Type Conversion

The Decode (IN_DECODE) block decodes the INPUT variable per type of decoding specified and communicates the resultsthrough real OUTPUTs. This is a rubber block that can accept a maximum of 32 inputs.

IN_DECODE Block

Inputs

Name Data Type DescriptionTYPE Unsigned Short Specifies the type of decoding; defaults to zero

STATUS Unsigned Short Specifies the Decode status; defaults to zeroIN0 Long Integer Identifies the variable to decode↓ ↓ ↓IN31 Long Integer Identifies the variable to decode

Outputs

Name Data Type DescriptionOUT0 REAL Decoded output corresponding to IN0↓ ↓ ↓OUT31 REAL Decoded output corresponding to IN31

86 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 87: Mark* VIe Controller

Derivative (DERIVATIVE)Block Category: Controls (Basic)

The Derivative (DERIVATIVE) block calculates OUT by differentiating IN and filters IN with lag time TC in seconds. Thetransfer function is of the form 1/( 1 + sTC). If TC equals zero, the smoothing is disabled.

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

DERIVATIVE Block

Inputs

Name Data Type DescriptionDIF_IN REAL† Input analog signal (default is 0)TC REAL† Time constant for smoothing (sec) (default is 0)ENABLE BOOL Block enable (default is True)† Value with status, if status option is enabled.

Output

Name Data Type Description

DIF_OUT REAL† Derivative of input

† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 87For public disclosure

Page 88: Mark* VIe Controller

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/Omodule, such as PPRO. This block is similar to the USB_HB block. However, it differs in that it follows the internal framecounter, which is synchronized in the three controllers of a TMR system, whereas the USB_HB outputs the task/user blockheartbeat, which is not synchronized.

The DEVICE_HB block provides a voted variable representation of the controller scheduler frame number (anotherfree-running counter). It is normally used to drive the heartbeat input into the protection I/O packs. Because the variable is thesame in all controllers in a redundant set. It does not cause a potential voter disagreement diagnostic in the packs (couldhappen with ControllerStateHeartbeat_R/S/T). The protection I/O pack trips the unit after five frames if no updates aredetected. 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 DescriptionOUT DINT Device heartbeat

88 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 89: Mark* VIe Controller

Divide (DIV)Block Category: Math

The Divide (DIV) block divides two numeric values; the quotient, OUT, and the mantissa, M, are outputs of the block. Forexample, if NUM = 10, DENOM = 8, then OUT = 1.25, M = 0.25. If the data type of the block is not Real or Long Real then,OUT is rounded to the nearest integer and M is set to 0. When DENOM is equal to 0, the output is limited to the high valuefor that data type and Mantissa is 0.

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

DIV Block

This block propagates quality status if the status operations are enabled.

Block status modifications: If DENOM = 0, then the output status will be either LOW_LIMITED-CONFIGURATION_ERROR-BAD [5] if NUM < 0 or HIGH_LIMITED-CONFIGURATION_ERROR-BAD [6] if NUM > 0. The status of M alwaysfollows the status of OUT.

Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionNUM ANY_NUM† NumeratorDENOM ANY_NUM† Denominator† Value with status, if status option is enabled.

Outputs

Name Data Type Description

OUT ANY_NUM† Output

M REAL† Mantissa† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 89For public disclosure

Page 90: Mark* VIe Controller

Equal (EQ)Block Category: Comparison

The Equal (EQ) block compares the two input values to determine if IN1 is equal to IN2. The result of the comparison is theoutput, OUT. Hysteresis and sensitivity settings are provided to prevent toggling around a boundary condition. Sensitivityrefers to the tolerance band of the equality relationship. That is, IN1 is equal to IN2 if it is numerically within the banddefined by IN2 ± SENS. Once the equality relationship evaluates to True, based on the value of the sensitivity input, SENS,the block output will not become False until the equality relationship exceeds the value of the hysteresis input, HYST.

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

EQ Block

Example

If HYST equals 5, SENS equals 2, IN1 equals 10 and IN2 equals 11.9; then OUT is True. OUTwill become False when thedifference between IN1 and IN2 becomes greater than 7, since IN1 and IN2 are considered equal when they are within theSENS value of 2.

90 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 91: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN1 ANY_NUM The input to compareIN2 ANY_NUM The input to compare againstHYST ANY_NUM The hysteresis valueSENS ANY_NUM The sensitivity value

Output

Name Data Type DescriptionOUT BOOL The result of the comparison

Instruction Guide GEI-100682AC 91For public disclosure

Page 92: Mark* VIe Controller

Expand Integer (EXPAND)Block Category: Boolean Operations

The Expand Integer (EXPAND) block transforms the unsigned integer input into its binary equivalent form and stores theexpanded information into 16 simple, Boolean outputs. For example, if the value of the input is 5, the output Booleanscontains the following values 0000 0000 0000 0101. The least significant output bit is pin OUT0 and the most significantoutput bit is pin OUTF.

Note The Compress Boolean (COMPRESS) block performs the opposite operation of the EXPAND block.

EXPAND Block

Input

Name Data Type DescriptionIN UINT Value to expand

Outputs

Name Data Type DescriptionOUT0 BOOL Contains the results of the expansion process (least significant binary digit)↓ ↓ ↓

OUT9 BOOLContains the results of the expansion process (tenth least significant binarydigit)

OUTA BOOLContains the results of the expansion process (eleventh least significantbinary digit)

↓ ↓ ↓OUTF BOOL Contains the results of the expansion process (most significant binary digit)

92 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 93: Mark* VIe Controller

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 leastsignificant input bit is placed in OUT0 and the most significant bit is placed in OUT31.

Note The Compress to Long Integer (COMPRESS_UDI) block performs the opposite operation of the EXPAND_UDIblock.

EXPAND_UDI Block

Instruction Guide GEI-100682AC 93For public disclosure

Page 94: Mark* VIe Controller

Input

Name Data Type Description

IN Unsigned Long Integer Value to expand

Outputs

Name Data Type Description

OUT0 BOOLContains the results of the expansion process (least significant binarydigit)

↓ ↓ ↓

OUT31 BOOLContains the results of the expansion process (most significant binarydigit)

94 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 95: Mark* VIe Controller

Finite Impulse Response (FIR)Block Category: Controls (Basic)

The Finite Impulse Response (FIR) block implements a filter in which each calculated output is a weighted sum of past andcurrent samples over a finite sample range.

FIR Block

The calculation equation is as follows:

Where:

t = Time sample (t=0 for the present time)

o(t) = Block output after this sweep

N = Number of filter taps

g = Gain for a particular tap

n = Tap number, n > 0

I = Input

If PRESET is True then all the filter states will be set to PVAL before the filter calculation is made.

Note The IN value affects the OUT value even when the PRESET pin is True since the filter calculation still occurs in thepreset mode.

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

Instruction Guide GEI-100682AC 95For public disclosure

Page 96: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)IN REAL† Current inputGAIN [ ] REAL Gain array, this array must be defined with at least N elements

PRESET BOOL Preset flag. The default value is FalsePVAL REAL† Preset valueN Unsigned double integer Number of taps in the filter† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT REAL† Filter output† Value with status, if status option is enabled.

StateName Data Type DescriptionSTATE REAL Array State variable array

96 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 97: Mark* VIe Controller

Function Generator (FUNGEN)Block Category: Math

The Function Generator (FUNGEN) block creates common variable functions for test and verification. The function and/orany of its parameters may be dynamically changed to generate the wave forms, STEP, SQUARE, RAMP, TRIANGLE andSINE. 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-100682AC 97For public disclosure

Page 98: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is False)

FUNC FUNGEN_T

Function to generate:

• 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 alwaysbegins 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 thanMAX_VAL the 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 greaterthan MAX_VAL the descending cycle will commence first. Otherwise theascending cycle will commence first.

• Sine wave (5) — generates a sinusoidal wave between the amplitudes ofMAX_VAL and MIN_VAL with a period of PERIOD1. The waveformcommences at 0 degrees regardless of the initial output value. The defaultvalue is "Step".

MAX_VAL REALMaximum value of the output (unless the initial value of the output is alreadygreater than MAX_VAL). For proper operation MAX_VAL should be greater thanor equal to MIN_VAL

PERIOD1 REALTime period in seconds for the sine wave function, or for the MAX_VAL portionof the square wave function

MIN_VAL REALMinimum value of the output. For proper operation MIN_VAL should be less thanor equal to MAX_VAL

PERIOD2 REAL Time period in seconds for the MIN_VAL portion of the square wave functionA_RATE REAL Ascending ramp rate in units/secondD_RATE REAL Descending ramp rate in units/second

Output

Name Data Type DescriptionOUTPUT REAL Output of the function

98 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 99: Mark* VIe Controller

Greater Than, Equal To (GE)Block Category: Comparison

The Greater Than, Equal To (GE) block compares the two input values (of any numeric data type) to determine if IN1 isgreater than or equal to IN2. The result of the comparison is the output, OUT. Hysteresis and sensitivity settings are providedto prevent toggling around a boundary condition. Sensitivity refers to the tolerance band of the equality relationship. Thegreater than or equal to relationship evaluates to True, when IN1 is greater than or equal to IN2 – SENS. The block outputwill not become False until the greater than equality relationship exceeds the value of the hysteresis input, HYST.

GE Block

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

Instruction Guide GEI-100682AC 99For public disclosure

Page 100: Mark* VIe Controller

Inputs

Name Data Type Description

IN1 ANY_NUM Input to compare

IN2 ANY_NUM Input to compare against

HYST ANY_NUM Hysteresis value

SENS ANY_NUM Sensitivity value

Output

Name Data Type DescriptionOUT BOOL Result of the comparison

100 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 101: Mark* VIe Controller

Get From Array (GET)Block Category: Array

The Get From Array (GET) block moves value N of an array into a variable, DEST, of the same data type. The data transferoccurs each time the block performs while the ENABLE pin is True. If N exceeds the array size of SRC[ ], the block transfersthe last element in the array.

Note This block is a variant block that supports any one of the following block data types: Boolean, Integer, Double Integer,Real, Long Real, Unsigned Integer, Unsigned Double Integer. The data type of the SRC array and the DEST pin must matchthe selected data type of the block. Refer to the section Change Data Type of Variant Block.

GET Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)SRC[ ] ANY Source array

N UDINT Source array index (0 based, interpreted internally as unsigned)

Output

Name Data Type DescriptionDEST ANY Destination variable

Instruction Guide GEI-100682AC 101For public disclosure

Page 102: Mark* VIe Controller

Greater Than (GT)Block Category: Comparison

The Greater Than (GT) block compares the two input values (of any numeric data type) to determine if IN1 is greater thanIN2. The result of the comparison is output, OUT. Hysteresis is provided to prevent toggling around a boundary condition.The greater than relationship evaluates to True, when IN1 is greater than IN2. The block output will not become False untilthe greater than relationship exceeds the value of the hysteresis input, HYST.

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

GT Block

102 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 103: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN1 ANY_NUM The input to compareIN2 ANY_NUM The input to compare againstHYST ANY_NUM The hysteresis value

Output

Name Data Type DescriptionOUT BOOL The result of the comparison

Instruction Guide GEI-100682AC 103For public disclosure

Page 104: Mark* VIe Controller

Infinite Impulse Response (IIR)Block Category: Controls (Basic)

The Infinite Impulse Response (IIR) block filter may be configured to act as different filters, including low pass, high pass,and notch filters. The filter is configured by selecting the values for the A and B pins that create the appropriate filter. Thecoefficients are then used in the following equation to filter the input variable. To implement higher order filters, use a seriescascade of the biquad stages.

Where:

N = number of stages of the filter

Y = output of filter

X = input value

A, B = arrays of coefficient

IIR Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

104 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 105: Mark* VIe Controller

Inputs

Name Data Type DescriptionENA_FIL BOOL Enable filter or directly pass input to outputINPUT REAL† Input variableA[ ] REAL Numerator coefficient array, size must be >= N*3B[ ] REAL Denominator coefficient array, size must be >= N*2

N UINT Number of 2nd order stages to cascade† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUTPUT REAL† Filtered output† Value with status, if status option is enabled.

StateName Data Type DescriptionDELAY[ ] LREAL Delay state variables array, size must be >= N*2

Instruction Guide GEI-100682AC 105For public disclosure

Page 106: Mark* VIe Controller

Integrator With Lead (INTWLEAD)Block Category: Controls (Basic)

The Integrator With Lead (INTWLEAD) block computes the integral of IN using the radian frequency lead term as follows.

Output OUT is clamped between the upper and lower clamp inputs, HILIM and LOLIM. Output IN_MIN or IN_MAXbecomes True to indicate that input, IN, has reached the low or high limitation, respectively.

When PRESET is True, OUT is set to the initial value PR_VAL, also clamped between HILIM and LOLIM.

INTWLEAD Block

This block propagates quality status if the status operations are enabled.

Block status modifications: OUTstatus is propagated from either IN status or PR_VAL status, whichever is active. The statusof OUT is modified to include HIGH_LIMITED or LOW_LIMITED when applicable.For example:

• If PRESET is False and IN status = NOT_LIMITED-GOODNC [128]• Or If PRESET is True and PR_VAL status = NOT_LIMITED-GOODNC [128]• And OUT = HILIM, then OUTstatus = HIGH_LIMITED-GOODNC [130]• Or OUT = LOLIM, then OUTstatus = LOW_LIMITED-GOODNC [129]• Or LOLIM < OUT < HILIM, then OUTstatus = NOT_LIMITED-GOODNC [128]• If LD_FREQ < 0.0001, the block will use 0.001 for the calculation and OUTstatus = LOW_

LIMITED-SUBSTITUTE-UNCERTAIN [73].

Refer to the Status Monitoring (STATUS_MONITORING) block.

106 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 107: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)HILIM REAL Upper clampIN REAL† Value to be integratedLD_FREQ REAL Lead frequency in radians/secondLOLIM REAL Lower clampPRESET BOOL Preset command (default is False)PR_VAL REAL† Preset value† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT REAL† Integrator OutputIN_MAX BOOL Output is clamped at HILIMIN_MIN BOOL Output is clamped at LOLIM† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 107For public disclosure

Page 108: Mark* VIe Controller

Integrator, Selectable Algorithm (INTEG)Block Category: Controls (Basic)

The Integrator, Selectable Algorithm (INTEG) block has an output that is the integral of the input over time, following eitherthe Euler or the Tustin algorithm. The input and output are in the same units. Input is multiplied by gain before integration,and output is clamped between the limits after integration.

Tustin integration uses the average of present and previous input values as the input, otherwise, it is the same as the Eulermethod. The integrations method is selected by the INTMETH enumeration, either EULER or TUSTIN.

Where:

in = input

out = output

G = gain

T = sample period

Output OUT is clamped between the upper and lower clamp inputs, HILIM and LOLIM. Output IN_MIN or IN_MAXbecomes True to indicate that input, IN, has reached the low or high limitation, respectively.

When PRESET is True, OUT is set to the initial value PR_VAL, also clamped between HILIM and LOLIM.

INTEG Block

This block propagates quality status if the status operations are enabled.

Block status modification: OUTstatus is propagated from either IN status or PR_VAL status, whichever is active. The status ofOUT is modified to include HIGH_LIMITED or LOW_LIMITED when applicable. For example:If PRESET is False and IN status = NOT_LIMITED-GOODNC [128]Or IfPRESET is True and PR_VAL status = NOT_LIMITED-GOODNC [128]AndOUT = HILIM, then OUTstatus = HIGH_LIMITED-GOODNC [130]OrOUT = LOLIM, then OUTstatus = LOW_LIMITED-GOODNC [129]OrLOLIM < OUT < HILIM, then OUTstatus = NOT_LIMITED-GOODNC [128]

Refer to the Status Monitoring (STATUS_MONITORING) block.

108 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 109: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is False)IN REAL† Value to be integratedGAIN REAL Integrator gainHILIM REAL Maximum allowed outputLOLIM REAL Minimum allowed outputINTMETH ENUM (UINT) Integration method (EULER or TUSTIN)PRESET BOOL Initialize commandPR_VAL REAL† Initialization value† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT REAL† Integrator OutputIN_MAX BOOL Output is clamped at HILIMIN_MIN BOOL Output is clamped at LOLIM† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 109For public disclosure

Page 110: Mark* VIe Controller

Interpolator (INTERP)Block Category: Controls (Basic)

The Interpolator (INTERP) block generates an output as a function of IN by linear interpolation. The argument table X[N] issearched using IN as the key. OUT is calculated from the function table Y[N] using the search index from the argument tableand interpolating between the values:

OUT = Y[i] + ((Y[i+1] - Y[i]) x ((INPUT - X[i]) / (X[i+1] - X[i]))), where i is the index resulting from the binary search of theargument 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 thetable size must be greater than or equal to 2. If either of these conditions is not met, OUTwill equal 0. OUT is clamped toeither the first or last element in the function table if IN is not within the range of the argument table elements. When IN iswithin the limits of the argument table, the slope, M, is calculated as follows; otherwise, M is defined to be the slope of a linebetween the nearest function table end point element and the element next to it:

INTERP Block

This block propagates quality status if the status operations are enabled.

Block status modification: If the values of OUT is out of the range of Y[ ] respectively, then the output status is limited (LOW_LIMITED-GOODNC [129] or HIGH_ LIMITED-GOODNC [130]).

110 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 111: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)IN REAL† Input valueN 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† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT REAL† Interpolated outputM REAL Slope of output function† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 111For public disclosure

Page 112: Mark* VIe Controller

Interpolator DL (INTERP_DL)Block Category: Controls (Basic)

The Interpolator DL (INTERP_DL) block estimates a missing functional value f(x,y) from four known functional values atneighboring points f(X0,Y0), f(X0,Y1), f(X1,Y0), f(X1,Y1), provided X0 < x < X1 and Y0 < Y1 as follows:

Expansion checks are run to ensure that the declared size of the function array, FTBL, is equal to the size of the input array,XTBL, times the size of the input array YTBL.

INTERP_DL Block

This block propagates quality status if the status operations are enabled.

Block status modification: If the values of X and Y are out of the range of XTBL and YTBL respectively, then the output statusis limited (LOW_ LIMITED-GOODNC [129] or HIGH_ LIMITED-GOODNC [130]).

Refer to the Status Monitoring (STATUS_MONITORING) block.

112 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 113: Mark* VIe Controller

Inputs

Name Data Type DescriptionX REAL† Input X

Y REAL† Input Y

XTBL REAL X table array

YTBL REAL Y table array

FTBL REAL

Function table arrayFTBL[0] = f(XTBL[0], YTBL[0]), FTBL[1] = f(XTBL[0], YTBL[1]), FTBL[2] = f(XTBL[0], YTBL[2], …,FTBL[nYTBL – 1] = f(XTBL[0], YTBL[nYTBL – 1], FTBL[nYTBL] = f(XTBL[1], YTBL[0], …,where nYTBL = the number of elements in YTBL

FMIN REAL Minimum function table valueFMAX REAL Maximum function table value† Value with status, if status option is enabled.

Output

Name Data Type DescriptionF REAL† Function output† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 113For public disclosure

Page 114: Mark* VIe Controller

Lag Filter (LAG)Block Category: Controls (Basic)

The Lag Filter (LAG) block filters the input variable with a first order lag filter. The lag time constant is expressed in seconds.The transfer function of the filter is of the form 1/( 1 + Ts).

TC = 0

LAG Block

Note At time constants below the frame period, the LAG and LAG00 software blocks function differently. In the LAGblock, if the time constant is less than the frame period, the time constant value is internally set to the frame period prior tocalculating the output. In the LAG00 block, if the time constant is less than the frame period, the input is copied directly tothe output.

Response of Block to Sine Wave

114 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 115: Mark* VIe Controller

Response of Block to Square Wave

This block propagates quality status if the status operations are enabled.

Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)LAG_IN REAL† Variable to filterTC REAL Filter time constant in seconds† Value with status, if status option is enabled.

Output

Name Data Type DescriptionLAG_OUT REAL† Filtered variable† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 115For public disclosure

Page 116: Mark* VIe Controller

Latch (LATCH)Block Category: Sequencing

The Latch (LATCH) block emulates an SR flip-flop in that it sets or resets OUT based on the current values of SET andRESET, and the previous value of OUT.

LATCH Block

Note Annunciation of TMR Controller Heartbeat Status Not OK is a logic example using the LATCH block.

Truth TableRDOM SET(t) RESET(t) OUT(t) OUT(t+1)X 0 0 0 0X 0 0 1 1X 0 1 0 0X 0 1 1 0X 1 0 0 1X 1 0 1 11 1 1 X 00 1 1 X 1Where:X = either statet = current statet+1 = next state

Inputs

Name Data Type Description

SET BOOL Set input

RESET BOOL Reset input (default is False)

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

Output

Name Data Type DescriptionOUT BOOL Output of the latch

StateName Data Type Description

STATUS BOOLThis is the status variable for storing the trigger status, a hidden pin. It can be viewed orchanged by right-clicking the block and selecting Edit Block Pins. Writing to this variable isnot recommended, but can be used to preset block states.

116 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 117: Mark* VIe Controller

Lead, Lag (LEAD_LAG)Block Category: Controls (Basic)

The Lead, Lag (LEAD_LAG) block performs a (discrete) filter function that combines both Lead and Lag compensatorcharacteristics. The properties of the Lead compensator are typified by an output that, with an appropriate time constant (T1),is proportional to the sum of the input signal (IN) and its derivative (slope). As the derivative action tends to uncover that partof a signal that is not constant (time varying), the Lead compensator, with the appropriate time constant, behaves similarly toa high pass filter (magnitude response) except low frequencies are passed with unity gain while high frequency componentsof the input signal are amplified. The resultant phase shift for this type of compensator is typically positive, where the outputleads the input. The Lag portion of the algorithm acts as integrator, ramping the output toward the input at a rate defined bythe time constant, T2. Phase response for this compensator is typically characterized by a lagging phase shift, where theoutput lags the input.

The manner in which the LEAD_LAG filter compensates the input signal's phase and magnitude response is contingent on thevalues supplied for the two time constants (T1, T2). Proper block operation requires a T1 value that is two (minimum) to eight(maximum) times the T2 value. The algorithm functions predominantly as a lead compensator, passing lower frequencycomponents of the input with variable gain, and higher frequency components with amplification equal to the ratio T1/T2. Inaddition, the T2 constant should be assigned a value that is at least four times the sequencing scan interval.

LEAD_LAG Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING)block.

Instruction Guide GEI-100682AC 117For public disclosure

Page 118: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN REAL† Analog inputT1 REAL† Lead tauT2 REAL† Lag tau† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT REAL† Output value† Value with status, if status option is enabled.

118 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 119: Mark* VIe Controller

Less Than (LT)Block Category: Comparison

The Less Than (LT) block compares the two input values (of any numeric data type) to determine if IN1 is less than IN2. Theresult of the comparison is the output, OUT.

LT Block

Hysteresis is provided to prevent toggling around a boundary condition. The less than relationship evaluates to True, whenIN1 is less than IN2. The block output will not become False until the less than relationship exceeds the value of thehysteresis input, HYST.

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

Instruction Guide GEI-100682AC 119For public disclosure

Page 120: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN1 ANY_NUM The input to compareIN2 ANY_NUM The input to compare againstHYST ANY_NUM The hysteresis value

Output

Name Data type DescriptionOUT BOOL The result of the comparison

120 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 121: Mark* VIe Controller

Less Than, Equal To (LE)Block Category: Comparison

The Less Than, Equal To (LE) block compares the two input values (of any numeric data type) to determine if IN1 is less thanor equal to IN2. The result of the comparison is the output, OUT.

LE Block

Hysteresis and sensitivity settings are provided to prevent toggling around a boundary condition. Sensitivity refers to thetolerance band of the equality relationship. The less than or equal to relationship evaluates to True, when IN1 is less than orequal to IN2 + SENS. The block output will not become False until the less than equality relationship exceeds the value of thehysteresis input, HYST.

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

Instruction Guide GEI-100682AC 121For public disclosure

Page 122: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN1 ANY_NUM Input to compareIN2 ANY_NUM Input to compare againstHYST ANY_NUM Hysteresis valueSENS ANY_NUM Sensitivity value

Output

Name Data Type DescriptionOUT BOOL Result of the comparison

122 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 123: Mark* VIe Controller

Limit Detect Manual (LD_MAN)Block Category: Diagnostics

The Limit Detect Manual (LD_MAN) block evaluates the INPUT variable per a list of limit specifications and communicatesthe results through five alarm state Boolean variables. If ENABLE is True, Boolean output HH_STATwill go True when INgoes above HH_LIM by the percentage specified by HH_HYS. It will go False when IN goes below HH_LIM by this samepercentage. Operation of the H_STAT, L_STAT, and LL_STAT is similar. Output N_STAT (normal output) will be True ifneither High Limit nor Low Limit conditions are True.

Hysteresis percentage is always calculated based on full range of the input, MAX_VAL minus MIN_VAL.

The user is responsible for insuring that HH_LIM > H_LIM > L_LIM > LL_LIM.

LD_MAN Block

Instruction Guide GEI-100682AC 123For public disclosure

Page 124: Mark* VIe Controller

LD_MAN Block Functional Diagram

124 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 125: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)IN Float Identifies the variable to evaluateMAX_VAL Float Maximum value of the input variableHH_LIM Float HIGH-HIGH limit valueHH_HYS Float HIGH-HIGH hysteresis (% of MAX_VAL-MIN_VAL)H_LIM Float HIGH limit valueH_HYS Float HIGH hysteresis (% of MAX_VAL-MIN_VAL)L_LIM Float LOW limit valueL_HYS Float LOW hysteresis (% of MAX_VAL-MIN_VAL)LL_LIM Float LOW-LOW limit valueLL_HYS Float LOW-LOW hysteresis (% of MAX_VAL-MIN_VAL)

Outputs

Name Data Type DescriptionHH_STAT BOOL Indicates that the input variable is in the HIGH-HIGH limitH_STAT BOOL Indicates that the input variable is in the HIGH limitN_STAT BOOL Indicates that the input variable is not in any limit conditionL_STAT BOOL Indicates that the input variable is in the LOW limitLL_STAT BOOL Indicates that the input variable is in the LOW-LOW limit

Instruction Guide GEI-100682AC 125For public disclosure

Page 126: Mark* VIe Controller

Logic Builder (LOGIC_BUILDER)Block Category: Permits and Overrides

The Logic Builder (LOGIC_BUILDER) block is a universal block that 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, the LOGIC_BUILDERblock allows the user to create unique logic scenarios that can contain up to 32 individual inputs and up to six logic blocks inseries of depth using any combination of AND, OR, and NOT blocks.

The LOGIC_BUILDER block provides a simple, versatile, and effective solution to provide FORCE, OVERRIDE orPERMIT 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 theoperator’s ability to enable or disable the associated input using the CIMPLICITY graphical interface. The LOGIC_BUILDER block type, PERMIT, OVERRIDE, FORCE, or TRACK is controlled by an enumerated input, TYP, which is setby the programmer. The enumeration selected for the TYP input determines the enumerations the block will output from theOUT 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 connectedthrough a NOT block. When a connection is made to one of the input pins, the description of the global variable is inheritedby default. If this description is undesirable, it must be disabled by setting the Inherit Description option to False in the inputvariable properties. The description can be replaced with a desirable description by entering an appropriate description in thedescription field of the input variable of the LOGIC_BUILDER block (replace LOGIC_BUILDER #1 with the desiredoverride 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.

126 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 127: Mark* VIe Controller

TYP Input Enumerations

Name DescriptionAU_PMT Auto PermitCL_PMT Close PermitOP_PMT Open PermitINT_PMT Intermediate PermitON_PMT On PermitOFF_PMT Off PermitSTR_PMT Start PermitSTP_PMT Stop PermitHI_PMT High PermitLO_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_TRANS_PMT SFC Transition Permit

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-100682AC 127For public disclosure

Page 128: Mark* VIe Controller

Permit Type Enumerations and Use

Enumeration When UsedAU_PMT Auto permit enumeration output is requiredCL_PMT Close permit enumeration output is requiredOP_PMT Open permit enumeration output is requiredINT_PMT Intermediate permit enumeration output is required.ON_PMT On permit enumeration output is requiredOFF_PMT Off permit enumeration output is requiredSTR_PMT Start permit enumeration output is requiredSTP_PMT Stop permit enumeration output is requiredHI_PMT High permit enumeration output is requiredLO_PMT Low permit enumeration output is requiredREV_PMT Reverse permit enumeration output is requiredRDY1 Ready 1 permit enumeration output is requiredRDY2 Ready 2 permit enumeration output is requiredRDY3 Ready 3 permit enumeration output is requiredRDY4 Ready 4 permit enumeration output is requiredRDY5 Ready 5 permit enumeration output is requiredSFC_TRANS_PMT Sequential function chart transition permit enumeration output is requiredMOD_PMT Modulate permit enumeration output is required

Force Type Enumerations and Use

Enumeration When UsedCMD_OVR Command override enumeration output is requiredCL_OVR Close override enumeration output is requiredOP_OVR Open override enumeration output is requiredINT_OVR Intermediate override enumeration output is requiredTRP_OVR Trip override enumeration output is requiredSTP_OVR Stop override enumeration output is requiredMN_REJ Manual Reject enumeration output is required

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

128 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 129: Mark* VIe Controller

Equation (EQN) Input

The equation input, EQN, is a string equation that is equivalent to the graphical AND, OR, and NOT blocks used to representthe logic required to provide the correct block output (* = AND, + = OR, ~ = NOT, () are grouping characters). The stringequation can be entered directly into the input EQN, or it can be generated automatically from the graphical representation ofthe logic created using AND, OR, and NOT blocks. If the equation is entered manually into the EQN input, the logic isautomatically 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-100682AC 129For public disclosure

Page 130: Mark* VIe Controller

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 byperforming a Build and Download of the modified code. If the toggle permit input for a corresponding input is True, theoperator is able to toggle the value of the associated logical input, IN1TE through IN32TE, using the CIMPLICITY graphicalinterface.

Inputs IN1TE through IN32TE are toggle enable inputs that are controlled by the operator using the CIMPLICITY graphicalinterface. 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 notenabled for its input. The toggle input value, IN1T through IN32T, is the actual value that is used in the AND, OR, and NOTprogrammed logic. The toggle value, IN1T, for the IN1 input is defined as a combination of the toggle input permit, IN1TPbeing equal to True, and the toggle enable input from the CIMPLICITY graphical interface, IN1TE being equal to True. Thistoggle 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 inputenumeration assigned to the input TYP, and will be a PERMIT, OVERRIDE, FORCE, or TRACK type enumerations. OUToutput enumerations are defined by type, either PERMIT, FORCE, OVERRIDE or TRACK.

OUT Permit Type output enumerations are as follows:

OUT Permit Type Output Enumerations

Name DescriptionNO_PERM-NO_BYPASS No Permit and no Permit is bypassedPERM-NO_BYPASS Permit OK and no Permit is bypassedNO_PERM-BYPASS No Permit and a Permit is bypassedPERM-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 typeblock.

BYPASS— indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the permit typeblock.

OUT Force Type output enumerations are as follows:

OUT Force Type Output Enumerations

Name DescriptionNO_FORCE-NO_BLOCK No Force and no Force is blockedFORCE-NO_BLOCK Force active and no Force is blockedNO_FORCE-BLOCK No Force and a Force is blockedFORCE-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 typeblock.

130 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 131: Mark* VIe Controller

BLOCK— indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the force typeblock.

OUT Override Type output enumerations are as follows:

OUT Override Type Output Enumerations

Name DescriptionNO_OVR-NO_BLOCK No Override and no Override is blockedOVR-NO_BLOCK Override active and no Override is blockedNO_OVR-BLOCK No Override and an Override is blockedOVR-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 overridetype block.

BLOCK— indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the overridetype block.

OUT Track Command Type output enumerations are as follows:

Name DescriptionNO_TRACK-NO_BLOCK No Track and no Track is blockedTRACK-NO_BLOCK Track active and no Track is blockedNO_TRACK-BLOCK No Track and a Track is blockedTRACK-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 typeblock.

BLOCK— indicates the operator has invoked a toggle of at least one of the associated logic driven inputs to the track typeblock.

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 oneIN1TP and IN1TE through IN32TP and IN32TE pair is True. When OUT_TGL is True, the OUT enumeration containsBYPASS 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 forthe block input TYP.

Instruction Guide GEI-100682AC 131For public disclosure

Page 132: Mark* VIe Controller

ToolboxST Configuration

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

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

LOGIC_BUILDERWindow Example

Inputs

Name Description Type Array Initial Value Visibility Usage

EQNLOGICEQUATION

STRING 0 IN1 Always Const

TYP LOGIC TYPE UINT 0 {Type} Always InputIN1 INPUT 1 BOOL 0 False Always Input

IN1TInput 1 togglevalue

BOOL 0 False Always State

IN1TEInput 1 toggleenable from HMI

BOOL 0 False Always Input

IN1TPInput 1 togglepermitted BOOL 0 False Always Const

IN2 INPUT 2 BOOL 0 False Always Input

IN2TInput 2 togglevalue

BOOL 0 False Always State

IN2TEInput 2 toggleenable from HMI

BOOL 0 False Always Input

IN2TPInput 2 togglepermitted BOOL 0 False Always Const

↓ ↓ ↓ ↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓ ↓ ↓IN32 INPUT 32 BOOL 0 False Always Input

IN32TInput 32 togglevalue

BOOL 0 False Always State

IN32TEInput 32 toggleenable from HMI

BOOL 0 False Always Input

IN32TPInput 32 togglepermitted BOOL 0 False Always Const

132 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 133: Mark* VIe Controller

Outputs

Name Description Type Array Initial Value Visibility Usage

{Device}{Type}Test string forthe equation BOOL 0 False Always Output

OUTOutputenumeration

UINT 0NO_PERM -NO_BYPASS

Always Output

OUT_VAL Boolean outputstatus

BOOL 0 False Always Output

OUT_TGL Inputs in toggleenabled mode

BOOL 0 False Always Output

Instruction Guide GEI-100682AC 133For public disclosure

Page 134: Mark* VIe Controller

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

Global Pin Name Description Alarm Event EGD Page ExternalAccess

00LOG_BLD1000AU_PMTTest string for theequation Not Alarmed False $DEFAULT Read Only

00LOG_BLD1000AU_PMT.IN1 Input 1 Not Alarmed False $DEFAULT Read Only00LOG_BLD1000AU_PMT.IN1T Input 1 toggle value Not Alarmed False $DEFAULT Read Only

00LOG_BLD1000AU_PMT.IN1TE Input 1 toggle enablefrom HMI

Not Alarmed *IN1TP $DEFAULT Read Only

00LOG_BLD1000AU_PMT.IN1TP Input 1 toggle permitted Not Alarmed False $DEFAULT Read Only00LOG_BLD1000AU_PMT.IN2 Input 2 Not Alarmed False $DEFAULT Read Only00LOG_BLD1000AU_PMT.IN2T Input 2 toggle value Not Alarmed False $DEFAULT Read Only

00LOG_BLD1000AU_PMT.IN2TE Input 2 toggle enablefrom HMI

Not Alarmed *IN2TP $DEFAULT Read Only

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 Only00LOG_BLD1000AU_PMT.IN32T Input 32 toggle value Not Alarmed False $DEFAULT Read Only

00LOG_BLD1000AU_PMT.IN32TE Input 32 toggle enablefrom HMI

Not Alarmed *IN32TP $DEFAULT Read Only

00LOG_BLD1000AU_PMT.IN32TP Input 32 toggle permitted Not Alarmed False $DEFAULT Read Only00LOG_BLD1000AU_PMT.OUT Output enumeration Not Alarmed False — Read Only00LOG_BLD1000AU_PMT.OUT_VAL Boolean output status Not Alarmed False — Read Only

00LOG_BLD1000AU_PMT.OUT_TGL Inputs in toggle enabledmode

Not Alarmed False — Read Only

134 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 135: Mark* VIe Controller

HMI Configuration (CIMPLICITY)

The following figure is an example of the CIMPLICITY graphical interface with a permit type block, with six permit enabledinputs 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 thatall blocks have unique names. The LOGIC_BUILDER blocks avoid this by adding the block type to the block name. Thismakes them unique, links them to the block they control in the HMI, and indicates their function.

Instruction Guide GEI-100682AC 135For public disclosure

Page 136: Mark* VIe Controller

Connection and Naming

136 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 137: Mark* VIe Controller

Logic Builder State Change (LOGIC_BUILDER_SC)Block Category: Permits and Overrides

The Logic Builder State Change (LOGIC_BUILDER_SC) block operation is identical to the LOGIC_BUILDER block withan additional State Change feature.

Note Refer to the Mark VIe Controller DCS Block Library (GEI-100679), the block First In-First Out (FIFO).

The State Change feature performs a First In-First Out (FIFO) operation for all 32 inputs. It latches input values for thecurrent and previous frames when the output transitions to a Not Permitted, Forced, Override, or Track state. Indication isprovided 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 connectedthrough a NOT block. When a connection is made to one of the input pins, the description of the global variable is inheritedby default. If this description is undesirable, it must be disabled by setting the Inherit Description option to False in the inputvariable properties. The description can be replaced with a desirable description by entering an appropriate description in thedescription field of the input variable of the LOGIC_BUILDER_SC block (replace LOGIC_BUILDER_SC #1 with thedesired override description for the source connected to IN1). The description is not copied from the connected variableimmediately; the input’s description is set when the library or device containing the input is validated or built.

TYP Input Enumerations

Refer to the Logic Builder (LOGIC_BUILDER) block section TYP Input Enumerations.

EQN Input

Refer to the Logic Builder (LOGIC_BUILDER) block section Equation (EQN) Input.

State Change

The State Change feature adds the input pins SCA_ENABLE, RESET, and RESET_PB. The SCA_ENABLE pin must beTrue for the State Change feature to operate. This would typically be connected to device I/O to prevent recording a StateChange while the equipment is not operating. For example, it may not be desired to record a process trip to a pump if thepump 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 willremain 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 theSCA pin is set to False, then RESET_PB is set to False by the LOGIC_BUILDER_SC block.

OUT Enumerations

Refer to the Logic Builder (LOGIC_BUILDER) block section Output (OUT) Enumerations.

Instruction Guide GEI-100682AC 137For public disclosure

Page 138: Mark* VIe Controller

Outputs OUT_TGL and OUT_VAL

Refer to the Logic Builder (LOGIC_BUILDER) block section Outputs OUT_TGL and OUT_VAL.

State Change

The State Change feature adds the outputs pins SCA, SCA_CUR, and SCA_PRV. The SCA pin changes from False to Truewhen the OUT pin transitions to a Not Permitted, Forced, Override, or Track state. The SCA pin acts as a reset dominantlatch. 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 thecorresponding 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 thecorresponding input, one frame before the OUT pin transitioned to a Not Permitted, Forced, Override, or Track state.

ToolboxST Configuration

Refer to the Logic Builder (LOGIC_BUILDER) block section Configuration.

138 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 139: Mark* VIe Controller

Logical AND (AND)Block Category: Boolean Operations

The Logical AND (AND) block is an expandable block that performs a logical AND of up to 32 inputs.

AND Block

Note Annunciation of Loss of IONet for Mark VIe I/O Packs is a logic example using the AND block.

Truth TableIN1 IN2 OUT

1 1 1

1 0 00 1 00 0 0OUTwill be 1 only if all inputs are 1. Otherwise, OUTwillbe 0.

Inputs

Name Data Type DescriptionIN1 BOOL First input↓ ↓ ↓INn BOOL N'th input

Output

Name Data Type DescriptionOUT BOOL Output

Instruction Guide GEI-100682AC 139For public disclosure

Page 140: Mark* VIe Controller

Logical NAND (NAND)Block Category: Boolean Operations

The Logical NAND (NAND) block is an expandable block that performs a logical NAND of up to 32 inputs.

NAND Block

Truth TableIN1 IN2 OUT0 0 10 1 11 0 11 1 0OUTwill be 0 only if all inputs are 1. Otherwise, OUTwill be 1.

Inputs

Name Data Type DescriptionIN1 BOOL First input↓ ↓ ↓INn BOOL N'th input

Output

Name Data Type Description

OUT BOOL Output

140 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 141: Mark* VIe Controller

Logical NOR (NOR)Block Category: Boolean Operations

The Logical NOR (NOR) block is an expandable block which performs a logical NOR of up to 32 inputs.

NOR Block

Truth TableIN1 IN2 OUT0 0 1

0 1 01 0 01 1 0

Inputs

Name Data Type DescriptionIN1 BOOL First input↓ ↓ ↓INn BOOL N'th input

Output

Name Data Type Description

OUT BOOL Output

Instruction Guide GEI-100682AC 141For public disclosure

Page 142: Mark* VIe Controller

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

NOT Block

Note Annunciation of TMR Controller Heartbeat Status Not OK is a logic example using the NOT block.

Input

Name Data Type DescriptionA BOOL Input value

Outputs

Name Data Type DescriptionOUT_A BOOL Non-inverted value of input ANOT_A BOOL Inverted value of input A

142 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 143: Mark* VIe Controller

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

Truth TableIN1 IN2 OUT0 0 0

0 1 1

1 0 11 1 1OUTwill be 0 only if all inputs are 0. Otherwise, OUTwill be 1.

Inputs

Name Data Type DescriptionIN1 BOOL First input↓ ↓ ↓INn BOOL N'th input

Outputs

Name Data Type Description

OUT BOOL Output

Instruction Guide GEI-100682AC 143For public disclosure

Page 144: Mark* VIe Controller

Logical XNOR (XNOR)Block Category: Boolean Operations

The Logical XNOR (XNOR) block is an expandable block that performs a logical exclusive-NOR of up to 32 inputs.

XNOR Block

Truth TableIN1 IN2 IN3 OUT0 0 0 10 0 1 00 1 0 00 1 1 11 0 0 01 0 1 11 1 0 11 1 1 0OUTwill be 1 only if there is an even number of inputs that are 1 OR if all of the inputsare 0. Otherwise, OUT will be 0.

Inputs

Name Data Type DescriptionIN1 BOOL First input↓ ↓ ↓INn BOOL N'th input

Output

Name Data Type DescriptionOUT BOOL Output

144 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 145: Mark* VIe Controller

Logical XOR (XOR)Block Category: Boolean Operations

The Logical XOR (XOR) block is an expandable block that performs a logical exclusive-OR of up to 32 inputs.

XOR Block

Truth TableIN1 IN2 IN3 OUT0 0 0 00 0 1 10 1 0 10 1 1 01 0 0 11 0 1 01 1 0 01 1 1 1OUT is 1 only if there is an odd number of inputs that are 1. Otherwise, OUT is 0.

Inputs

Name Data Type DescriptionIN1 BOOL First input↓ ↓ ↓INn BOOL N'th input

Output

Name Data Type DescriptionOUT BOOL Output

Instruction Guide GEI-100682AC 145For public disclosure

Page 146: Mark* VIe Controller

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 greaterthan or equal to 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 negativerepresentable number based on its sign, for the purpose of the comparison.

MEDIAN Block

MEDIAN Block Expanded

Inputs

Name Data Type DescriptionINPUT1 REAL Input variable 1INPUT2 REAL Input variable 2INPUT3 REAL Input variable 3DIFLMT REAL Maximum to minimum difference limitLENABLE BOOL Block enable (default is True)

Outputs

Name Data Type DescriptionMEDIAN REAL Median selected output valueLDIFLMT BOOL Maximum to minimum difference limit exceeded logical

146 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 147: Mark* VIe Controller

Minimum, Maximum (MIN_MAX)Block Category: Selection

The Minimum, Maximum (MIN_MAX) block is an expandable block that determines the minimum or maximum value of upto 32 inputs by choosing an enumerated function. If the value of the input pin FUNC is MAX, then the greatest value input ispassed to the output. If the value of FUNC is MIN, then the least value input is passed to the output.

Note Annunciation of Overtemp for Mark VIe I/O Packs is a logic example using the MIN_MAX block.

The status pin, STAT1 - STAT32, corresponding to the selected input is set to True and others are set to False. If more thanone input satisfies the function, the first input found in top/down order is passed. The default value for the FUNC input isMIN.

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

MIN_MAX Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)

FUNC ENUM (INT) Selection function (either MIN or MAX, default is MIN)IN1 ANY_NUM† First input↓ ↓ ↓INn ANY_NUM† N'th input† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT ANY_NUM† Minimum or maximum valueSTAT1 BOOL First flag. If True, the corresponding input is the minimum or maximum↓ ↓ ↓STATn BOOL N'th flag. If True, the corresponding input is the minimum or maximum† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 147For public disclosure

Page 148: Mark* VIe Controller

Configuring Matrix BlocksThe type of Matrix block and the controller’s processor type and frame rate determine the size of the array that can besupported. Generally, faster processors with longer frame rates can support larger array inputs. A Matrix input and output usesa column-oriented single dimension array. Both single and double precision data types are supported by the Matrix blocks.The Matrix blocks have the following common inputs (where X indicates the Matrix):

• ROWS_X indicates the rows of matrix X• COLS_X indicates the columns of matrix X

MADDSUB Block ToolboxST Configuration

➢➢ To configure a MADDSUB block

1. From the ToolboxST application, insert a new Mark VIe controller.

2. From the Tree View, double-click the new Mark VIe controller to open the Component Editor.

Enter a name for the program and click OK .

148 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 149: Mark* VIe Controller

3. Enter a task name, such as T1, and click OK.

Expand the program and select the task to display the Block Ed i tor.

Select Matrix as the block category from the drop down menu to display the Matrix blocks .

Select a block and drag and drop to move the block (MADDSUB ) into the Block Ed i tor.

Instruction Guide GEI-100682AC 149For public disclosure

Page 150: Mark* VIe Controller

4. From the Block Editor, double-click theMADDSUB block to display the Edit Block Pin Connections dialog box.

5. Add two matrices (A and B), each having two rows and four columns where:

a. Create a local or global variable with an array size of 8 (equivalent to ROWS_A multiplied by COLS_A) and valuesof [1, 2, 3, 4, 5, 6, 7, 8] to attach to the input A, as follows:

From the Tree View , right -click Variables and select Add Variab lefrom the drop down menu.

150 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 151: Mark* VIe Controller

Note In the Tree View, the Variables item inside the Programs item contains global variables. The Variables item insidethe task item contains local variables. Local variables are only available for the specified task, whereas global variablescan be used with multiple tasks.

Enter a name for the variable and click OK.

Change the Type to REAL.

Modify the initial value and select an Array Size as 8.

Enter the values as 1, 2, 3, 4, 5, 6, 7, 8, then click OK .

Instruction Guide GEI-100682AC 151For public disclosure

Page 152: Mark* VIe Controller

b. Create another local or global variable with array size of 8 (equivalent to ROWS_B multiplied by COLS_B) andvalues of 10, 20, 30, 40, 50, 60, 70, 80 to attach to the input B, as follows:

c. From the Tree View, select the task item to display the Block Editor.

d. From the Block Editor, double-click the MADDSUB block diagram to display the Edit Block Pin Connectionsdialog box.

For pin A, select Global Variab lesfrom the drop down menu.

Select Variab le 1, then click OK .

152 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 153: Mark* VIe Controller

The following table contains timing data, with the performance time taken for a given order of Matrix, that can be used toconfigure the application. The controller's performance time is in microseconds (µs) and corresponds to the orders 1, 10,and 50. The timings when re-computed may not be exact, but should be approximately the same as listed.

Timing Data

Block Order† UCSATime UCCATime UCCC Time

MADDSUB1 1.04 0.94 0.2510 13.86 10.09 4.8350 370 189 110

MDOTDIV1 0.87 0.85 0.3910 19.75 15.03 4.8350 542 286 99.77

MFILL1 0.76 0.66 0.110 7.74 5.79 1.6250 175 135 31.9

MCONCAT1 1.03 0.76 0.3910 21.26 17.04 4.9250 167.31 322 103

MMINMAX1 0.78 0.67 0.2410 7.68 4.42 1.2750 167.81 83.51 27.36

MTRN1 0.71 0.46 0.2910 12.1 10.15 2.0950 341 273 98.3

MDOTMUL1 0.75 0.37 0.0810 12.2 11.85 2.8550 340 168 61.89

MSVCH1 0.73 0.44 0.110 10.57 9.99 3.5850 279 195 63.91

MSUBMATRIX1 1.53 1.41 0.6610 12.56 11.74 4.3450 320 192 68.5

MFIND1 1.02 1.05 0.3810 24.7 18.86 7.5150 735.01 425 132

MINV1 8.73 8.68 2.610 109 474 26850 3209 48851 30984

MMUL1 0.83 0.77 0.0810 43.11 71.59 34.5750 4472 3624 1500

† Order refers to the number of Matrix rows and columns. For example, a Matrix with an order of 50 has both 50 columns and50 rows.

Instruction Guide GEI-100682AC 153For public disclosure

Page 154: Mark* VIe Controller

Matrix Addition Subtraction (MADDSUB)Block Category: Matrix

The Matrix Addition Subtraction (MADDSUB) block computes the sum or difference of two equally sized matrices. InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for the MADDSUB block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix.• The failure to properly specify a matrix by defining an input array that has either more or less elements than defined by

the intended number of rows and columns in the matrix.• An attempt to attach a variable to the output pin that does not match the expected output size defined by the number of

ROWS_A and COLS_A.• An attempt to find the sum or difference of two matrices that differ in size. For performance, the input matrices A and B

must have the same number of elements and have the same number of rows and columns. The ROWS_A must equal theROWS_B likewise, the COLS_A must equal the COLS_B.

MADDSUB Block

154 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 155: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixROWS_B Constant UINT Number of rows in the second input matrixCOLS_B Constant UINT Number of columns in the second input matrixB[ ] REAL/LREAL Array Array holding entries of the second input matrix

FUNC Constant UINT Choice of operation {0 for Addition, 1 for Subtraction}

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL Array Array holding entries of the output matrix

Instruction Guide GEI-100682AC 155For public disclosure

Page 156: Mark* VIe Controller

Matrix Concatenation (MCONCAT)Block Category: Matrix

The Matrix Concatenation (MCONCAT) block combines two smaller matrices and provides the following functions:

• Combines two smaller matrices into one large matrix by either stacking them on top of each other or setting themside-by-side

• Merges one small matrix into another big matrix, and as a result, some content in the big matrix is replaced by the contentof the small matrix

Note Refer to the section Configuring Matrix Blocks.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Examples

This block provides the ability to stack two matrices either on top of each other or side-by-side, resulting in one larger matrix.This block also provides merging of a given smaller matrix into the given bigger matrix resulting in a new matrix, which hasthe same size of the bigger matrix.

Horizontal Concatenation

Vertical Stacking Concatenation

START_ROW = 1 and START_COL = 1

Merge

156 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 157: Mark* VIe Controller

The failure modes for this block include:

• An attempt to define the size (length) of either of the input arrays, A or B, as anything other than the product of the inputvalues for ROWS_A and COLS_A (or ROWS_B and COLS_B).

• An attempt to combine two input matrices that are not the appropriate size for concatenation (that the number of columnsis inconsistent for vertical stacking, the number of rows is inconsistent for horizontal stacking, and ROWS_A less thanROWS_B or COLS_A less than COLS_B in case of Merge)

• An attempt to define the number of rows or columns in the input matrices as a non-positive number• An attempt to attach a pin for the output array (matrix) that does not match the expected output size

MCONCAT Block

Instruction Guide GEI-100682AC 157For public disclosure

Page 158: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixROWS_B Constant UINT Number of rows in the second input matrixCOLS_B Constant UINT Number of columns in the second input matrix

START_ROW UINTStart row in the matrix A for merge, it starts from 0 and usedonly for merge function

START_COL UINTStart column in the matrix A for merge, it starts from 0 andused only for merge function.

B[ ] REAL/LREAL Array Array holding entries of the second input matrix

FUNC UINTChoice of operation {0 for horizontal, 1 for vertical, 2 forMerge}

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrix

158 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 159: Mark* VIe Controller

Matrix Dot Division (MDOTDIV)Block Category: Matrix

The Matrix Dot Division (MDOTDIV) block computes the result of dot division of two equally sized matrix. Each element ofthe input matrix A is divided by the corresponding element of the matrix B to compute the corresponding element in theoutput matrix.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix• The 2 input matrices are not equal• The failure to properly specify a matrix by defining an input array that has either more or less elements than defined by

the intended number of rows and columns in the matrix• An attempt to attach a variable to the output pin that does not match the expected output size defined by the number of

ROWS_A and COLS_A

MDOTDIV Block

Instruction Guide GEI-100682AC 159For public disclosure

Page 160: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixROWS_B Constant UINT Number of rows in the second input matrixCOLS_B Constant UINT Number of columns in the second input matrixB[ ] REAL/LREAL Array Array holding entries of the second input matrix

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrix

160 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 161: Mark* VIe Controller

Matrix Dot Multiplication (MDOTMUL)Block Category: Matrix

The Matrix Dot Multiplication (MDOTMUL) block computes the result of dot multiply of two equally sized matrices. Eachelement of the input matrix A is multiplied by the corresponding element of the matrix B to compute the correspondingelement in the output matrix.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix• The 2 input matrices are not equal• The failure to properly specify a matrix by defining an input array that has either more or less elements than defined by

the intended number of rows and columns in the matrix• An attempt to attach a variable to the output pin that does not match the expected output size defined by the number of

ROWS_A and COLS_A

MDOTMUL Block

Instruction Guide GEI-100682AC 161For public disclosure

Page 162: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixROWS_B Constant UINT Number of rows in the second input matrixCOLS_B Constant UINT Number of columns in the second input matrixB[ ] REAL/LREAL Array Array holding entries of the second input matrix

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrix

162 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 163: Mark* VIe Controller

Matrix Fill (MFILL)Block Category: Matrix

The Matrix Fill (MFILL) block generates a matrix of a specified size with entries populated in a defined pattern. The desiredentries are given a specified value and the remaining matrix entries are assigned to a pre-fill value. The patterns (of forms)supported include: full, diagonal, upper triangular, lower triangular and miscellaneous.

lalInMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entriesare listed column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix• An attempt to attach a pin for the output array (matrix) that does not match the expected output size defined by the

product of ROWS_A and COLS_A

MFILL Block

Examples

This block provides a number of fill patterns for the output matrix. They are each depicted briefly by the following examples:

FULL: ROWS_A = 2, COLS_A = 3, VALUE = 6, PREFILL = 0, FORM= FULL

Full Configuration

DIAG: ROWS_A = 4, COLS_A = 3, VALUE = 6, PREFILL = 0, FORM = DIAG

DIAG Configuration

Instruction Guide GEI-100682AC 163For public disclosure

Page 164: Mark* VIe Controller

UPTRI: ROWS_A = 4, COLS_A = 3, VALUE = 6, PREFILL = 0.5, FORM = UPTRI

UPTRI Configuration

LOWTRI: ROWS_A = 4, COLS_A = 3, VALUE = 6, PREFILL = 0.5, FORM = LOWTRI

LOWTRI Configuration

MISC: ROWS_A = 4, COLS_A = 3, VALUE = 6, PREFILL = 0, FORM = MISC ROW_ST = 1, COL_ST = 1, ROW_END=3, COL_END = 2

MISC configuration

Note The indices defining the starting and ending rows and columns for the fill are zero-based. (ROW_ST, COL_ST, ROW_END, COL_END). These values are also standard integer inputs that can be changed online. If the fill indices are chosen suchthat they exceed the actual size of the matrix, these inputs are accepted but only the appropriate entries in the output matrixare populated.

164 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 165: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixVALUE REAL/LREAL Value to populate specified matrix entriesPREFILL REAL/LREAL Value to populate unspecified matrix entriesFORM UINT Pattern used in populating output matrixROW_ST UINT Starting row for fill when using misc optionCOL_ST UINT Starting column for fill when using misc optionROW_END UINT Ending row for fill when using misc optionCOL_END UINT Ending column for fill when using misc option

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrix

Instruction Guide GEI-100682AC 165For public disclosure

Page 166: Mark* VIe Controller

Matrix Find (MFIND)Block Category: Matrix

The Matrix Find (MFIND) block reads in a matrix and output a list (1-dimensional array) of all elements that meet auser-defined condition (elements that are greater than 5). Equality (as well as not equal) checking of floating point variables iscarried out based on a tolerance (TOL). This value defaults to 1e-3 when not otherwise specified on the pin. The comparisonfunctions are of six kinds: greater than or equal to, less than or equal to, less than, greater than, equal to, not equal to.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins that specify the size of the matrix are immediate pins that cannotbe changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns(COLS_A) in the desired input matrix.

• An attempt to attach a pin for the output array (matrix) that does not match the expected output size defined by theproduct of ROWS_A and COLS_A

MFIND Block

166 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 167: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrix

FUNC Constant UINT Comparison function (GT=1, LT=2, GE=3, LE=4, EQ=5, NE=6)

TOL REAL/LREALTolerance variable used to define equality in EQ & NE (defaultsto 1e-3)

REF REAL/LREAL Reference value to which all matrix elements are comparedPREFILL REAL/LREAL Default value to which the output array is pre-filled

Outputs

Name Data Type Description

BROWNDX INTArray holding the row indices of all elements that meet thedefined criteria

BCOLNDX INTArray holding the column indices of all elements that meet thedefined criteria

B[ ] REAL/LREAL Array Array holding the values of all elements that meet the definedcriteria

COUNT UINT Total number of elements found

Instruction Guide GEI-100682AC 167For public disclosure

Page 168: Mark* VIe Controller

Matrix Inverse (MINV)Block Category: Matrix

The Matrix Inverse (MINV) block computes the inverse of the input matrix.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• The matrix is not invertible if the quotient of 1/(ad-bc) is undefined• The output matrix should be set to all zeros

MINV Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixTOL† REAL/LREAL Tolerance value† The TOL pin should always be equal to 0.0 except in the case when the DEToutput is almost zero, < 1E-08. Setting the TOLpin to a small number, for example 1E-06, will cause the DEToutput to equal 0.0 and the ERROR output to equal True.

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrixERROR BOOL The matrix is not invertible (if not invertible ERROR = True)DET REAL/LREAL Determinant of the matrix

168 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 169: Mark* VIe Controller

Matrix Minimum/Maximum Element Determination(MMINMAX)Block Category: Matrix

The Matrix Minimum/Maximum Element Determination (MMINMAX) block finds the location and value of the minimum ormaximum element in a given matrix.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix• The failure to properly specify and input matrix by defining an input array that has either more or less elements than

defined by the intended number of rows and columns in the matrix

MMINMAX Block

Instruction Guide GEI-100682AC 169For public disclosure

Page 170: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrix

FUNC Constant UINT Choice of operation { 0 for Maximum,1 for Minimum }

Outputs

Name Data Type DescriptionROW UINT Integer Zero-Based Row Index for Min/Max Element (1st instance)

COL UINT Integer Zero-Based Column Index for Min/Max Element (1st instance)VALUE REAL/LREAL Floating point value of Min/Max element found

170 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 171: Mark* VIe Controller

Matrix Multiplication (MMUL)Block Category: Matrix

The Matrix Multiplication (MMUL) block computes the product of two appropriately sized matrices.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define the size (length) of either of the input arrays, A or B, as anything other than the product of the inputvalues for ROWS_A and COLS_A, or ROWS_B and COLS_B

• An attempt to attach a variable to the output pin that does not match the expected output size defined by the number ofROWS_A and COLS_B

• An attempt to find the product of two matrices that are not the proper size for multiplication (the number of columns in Amatrix must equal the number of rows in B)

• An attempt to define the number of rows or columns in the desired input matrices as a non-positive number

MMUL Block

Instruction Guide GEI-100682AC 171For public disclosure

Page 172: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixROWS_B Constant UINT Number of rows in the second input matrixCOLS_B Constant UINT Number of columns in the second input matrixB[ ] REAL/LREAL Array Array holding entries of the second input matrix

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrix

172 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 173: Mark* VIe Controller

Matrix Submatrix Selection (MSUBMATRIX)Block Category: Matrix

The Matrix Submatrix Selection (MSUBMATRIX) block generates an output matrix based on user defined start, end, andevery nth column/row selection information for both the rows and columns of the input matrix.

Note Refer to the section How To Configure Matrix Blocks.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted column-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix(ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/doubleentries according to the variant of the block. The input pins specifying the size of the matrix are immediate pins and thereforecannot be changed while the controller is online.

Note ROW_ST, ROW_END, COL_ST, and COL_END are zero based.

Note The indices defining the column and row start and end locations.

Example

A = ROW_ST=0 ROW_INC=1 ROW_END=1COL_ST =1 COL_INC=2 COL_END=3

The block outputs and matrix would be:

ROWS_B=2 COLS_B=2 B=

The failure modes for this block include:

• An attempt to define the number of rows, columns, row increment, and/or column increment for the desired inputmatrices as a non-positive number

• An attempt to create an input array (A) that is not equal to the product of ROWS_A and COLS_A

MSUBMATRIX Block

Instruction Guide GEI-100682AC 173For public disclosure

Page 174: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LReal Array Array holding entries of the first input matrixROW_ST Constant UINT Index to start row sub-matrix selectionROW_INC Constant UINT Index to increment between row start-stop selectionROW_END Constant UINT Index to end row sub-matrix selectionCOL_ST Constant UINT Index to start column sub-matrix selectionCOL_INC Constant UINT Index to increment between column start-stop selectionCOL_END Constant UINT Index to end column sub-matrix selection

Outputs

Name Data Type DescriptionROWS_B UINT Number of rows in the output matrixCOLS_B UINT Number of columns in the output matrixB[ ] REAL/LReal Array Array holding entries of the output matrix

174 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 175: Mark* VIe Controller

Matrix Switch Block (MSVCH)Block Category: Matrix

The MSVCH block selects output matrix from two equally sized input matrices based on input condition flag.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted row-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix (ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/double entriesaccording to the variant of the block. The input pins specifying the size of the matrix are immediate pins and therefore cannotbe changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

If B_FLAG is True, matrix C[ ] is equal to matrix A[ ], else c[ ] is equal to matrix B[ ].

MSVCH Block

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix• The 2 input matrices are not equal• The failure to properly specify a matrix by defining an input array that has either more or less elements than defined by

the intended number of rows and columns in the matrix• An attempt to attach a variable to the output pin that does not match the expected output size defined by the number of

ROWS_A and COLS_A

Instruction Guide GEI-100682AC 175For public disclosure

Page 176: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to run

B_FLAG BOOLMatrix Selection Flag, If B_FLAG is True, C is set to A. If B_FLAG is False, C is set to B

ROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrixROWS_B Constant UINT Number of rows in the second input matrixCOLS_B Constant UINT Number of columns in the second input matrixB[ ] REAL/LREAL Array Array holding entries of the second input matrix

Outputs

Name Data Type DescriptionROWS_C UINT Number of rows in the output matrixCOLS_C UINT Number of columns in the output matrixC[ ] REAL/LREAL Array Array holding entries of the output matrix

176 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 177: Mark* VIe Controller

Matrix Transpose (MTRN)Block Category: Matrix

The Matrix Transpose (MTRN) block computes the transpose of a given matrix.

InMatrix Notation, two-dimensional arrays (matrices) are collapsed into one dimension. This is done such that all entries arelisted row-wise in an array. The two-dimensional matrices are defined by an integer number of rows in the matrix (ROWS_A), an integer number of columns in the matrix (COLS_A), and an array (A) holding the floating-point/double entriesaccording to the variant of the block. The input pins specifying the size of the matrix are immediate pins and therefore cannotbe changed while the controller is online.

Note Refer to the section Configuring Matrix Blocks.

The failure modes for this block include:

• An attempt to define a non-positive number of rows (ROWS_A) or columns (COLS_A) in the desired output matrix• The failure to properly specify an input array that has either more or less elements than defined by the intended number

of rows and columns in the matrix

MTRN Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runROWS_A Constant UINT Number of rows in the first input matrixCOLS_A Constant UINT Number of columns in the first input matrixA[ ] REAL/LREAL Array Array holding entries of the first input matrix

Outputs

Name Data Type DescriptionROWS_B UINT Number of rows in the output matrixCOLS_B UINT Number of columns in the output matrixB[ ] REAL/LREAL Array Array holding entries of the output matrix

Instruction Guide GEI-100682AC 177For public disclosure

Page 178: Mark* VIe Controller

Mode Select (MODSEL)Block Category: Selection

The Mode Select (MODSEL) block sets one of up to 8 logical outputs, MODE_0 to MODE_8, and clears the remainingoutputs based on a request from a logical input, MD0RQ to MD7RQ, corresponding to the mode number requested. Themode remains set until another input logical is set. No two modes can be set at any one time. If two transition requests occurat the same time and both transitions are allowed, the transition to the mode with the lowest number will occur. In otherwords, the lower the mode number, higher the priority. Upon power up the block sets to MODE_0.

MODSEL Block Functional Diagram

MODSEL Block

178 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 179: Mark* VIe Controller

Inputs

Name Data Type DescriptionMD0RQ BOOL Mode 0 request↓ ↓ ↓MD7RQ BOOL Mode 7 request

Outputs

Name Data Type DescriptionMODE_0 BOOL Mode 0 selected↓ ↓ ↓

MODE_7 BOOL Mode 7 selected

MODEW1 UINT

Mode Word one indicates which mode is selected. This word is formattedsuch that each bit presents a mode. With the least significant bit being mode0 and the most significant bit being mode 7. For example, if mode 5 isselected the word will be set equal to 32.

MODEW2 UINTMode Word two indicates which mode is selected. This word is formattedsuch that the magnitude of the word represents the mode number. Forexample, if mode 5 is selected then the word will be set to 5.

SCRATCH BOOLPin that contains state information to be preserved during an onlinedownload. Default is True to save modes to Nonvolatile memory.

Instruction Guide GEI-100682AC 179For public disclosure

Page 180: Mark* VIe Controller

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 transferoccurs each time the block runs and the ENABLE pin is True. The analog variants of the block can be used to perform datatype conversions as well as memory move operations. The Boolean variant of MOVE is used to move only a logical state andcannot convert the data type.

Note Annunciation of TMR Controller Heartbeat Status Not OK is a logic example using the MOVE block.

The MOVE blocks are useful for taking snapshots of data that are shared between tasks in separate modules. Moving thevariable to local copies guarantees that a high priority task cannot change the shared data while the low priority task isprocessing it.

Note This block is a variant block that supports any one of the following block data types: Boolean, Integer, Double Integer,Real, Long Real, Unsigned Integer, Unsigned Double Integer. The data type of the DEST pin must match the selected datatype of the block. Refer to the section Change Data Type of Variant Block.

ENABLE

MOVE Block

This block propagates quality status if the status operations are enabled.

Block status modification: If SRC is value only, the status of DEST is NOT_LIMITED-GOODNC [128].

Refer to the Status Monitoring (STATUS_MONITORING) block.

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 outputwith either the most positive or most negative number, based on the sign of the NaN.

Inputs

Name Data Type Description Interface TypeENABLE BOOL Block enable (default is True) Value onlySRC ANY† Source variable Value with status or Value only† Value only or value with status, if status option is enabled and value only for Boolean block type.

Output

Name Data Type Description Interface Type

DEST ANY†Destination variable (data type enforced by theblock type). Value with status

† Value only or value with status, if status option is enabled and value only for Boolean block type.

180 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 181: Mark* VIe Controller

Move Truncated (MOVE_DT)Block Category: Type Conversion

The Move Truncated (MOVE_DT) block transfers the value of any variable into another long integer variable usingtruncation rather than rounding in the conversion. The data transfer occurs each time the block runs and the ENABLE pin isTrue. The analog variants of the block can be used to perform data type conversions as well as memory move operations.

MOVE_DT Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)SRC Simple Source variable

Output

Name Data Type DescriptionDEST Long Integer Destination variable (data type enforced by the block used)

Instruction Guide GEI-100682AC 181For public disclosure

Page 182: Mark* VIe Controller

Move Truncated (MOVE_IT)Block Category: Type Conversion

The Move Truncated (MOVE_IT) block transfers the value of any variable into another integer variable using truncationrather than rounding in the conversion. The data transfer occurs each time the block runs and the ENABLE pin is True. Theanalog variants of the block can be used to perform data type conversions as well as memory move operations.

MOVE_IT Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)SRC SIMPLE Source variable

Output

Name Data Type DescriptionDEST Long INT Destination variable (data type enforced by the block used)

182 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 183: Mark* VIe Controller

Mult (MULT)Block Category: Math

The Mult (MULT) block is an expandable block that performs a multiplication of up to 32 inputs. The product of theconnected inputs is set as the output. If no inputs are connected the output is a constant 1.

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

MULT Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionIN1 ANY_NUM† First input↓ ↓ ↓INn ANY_NUM† N'th input† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY_NUM† Product† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 183For public disclosure

Page 184: Mark* VIe Controller

NaN Breaker (NAN_BREAKER)Block Category: Diagnostics

The NaN Breaker (NAN_BREAKER) block passes all good input values to the output. If the input value is a NaN, it sets theBoolean INP_IS_NAN to True and outputs the last good value. If there was no good last value, it outputs zero. This blocktriggers a diagnostic message #356 if the input remains NaN for more than four consecutive frames.

Note This block supports the following block data types: Real and Long Real.

NaN_BREAKER Block

Note The diagnostic message is not displayed if the block is run in the Virtual Controller. The rest of the functionality issupported.

Input

Name Data Type DescriptionINPUT REAL/LREAL Input signal to check for NaN

Outputs

Name Data Type DescriptionINP_IS_NAN BOOL True if input signal value is NaN

OUTPUT REAL/LREAL Equal to input if input is not NaN, otherwise it is last good value

StateName Data Type DescriptionLGVALUE REAL/LREAL Last good input value (default is 0)

184 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 185: Mark* VIe Controller

NaN Check (NANCHECK)Block Category: System

The NaN Check (NANCHECK) block is a test block used for diagnosis or detection of Not-A-Number (NaN) and infinityvalues. The block receives a float or double as an input and counts the number of times a NaN or infinity value is detected.Three output counters are provided to give a total number of Quiet NaNs, signaling NaNs, and Infinities detected in the inputvariable.

The Enable and Reset inputs also serve as controls to the counting. If Enable is False, block counting is disabled. If Reset isTrue, the counts are forced to zero. The block may be selected to one of the two types, REAL and LREAL. Use the former ifthe source is a REAL (that is, floating point variable) or UDINT. Use the latter if the source is a LREAL (that is, double).

NANCHECK Block

NANCHECK Block Expanded

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)RESET BOOL Block reset (default is False); True resets the three counters

SRC REAL, UDINT, or LREALFor NaNCheck blocks selected as type REAL, input SRC may be oftype REAL or UDint only. For NaNCheck blocks of type LReal, inputSRC may be of type LReal only.

Outputs

Name Data Type DescriptionQ_NAN UDINT Number of Quiet NaNs detected after block resetS_NAN UDINT Number of Signaling NaNs detected after block resetINFIN UDINT Number of Infinities detected after block reset

Instruction Guide GEI-100682AC 185For public disclosure

Page 186: Mark* VIe Controller

Negate (NEGATE)Block Category: Math

The Negate (NEGATE) block multiplies the input by –1.

Note This is a variant block that supports any one of the following block data types: Integer, Double Integer, Real, LongReal. The default data type is Real. Refer to the section Change Data Type of Variant Block.

NEGATE Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

Input

Name Data Type DescriptionIN REAL, LREAL, INT, DINT† Input value† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT REAL, LREAL, INT, DINT† Negated input value† Value with status, if status option is enabled.

186 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 187: Mark* VIe Controller

Not Equal (NE)Block Category: Comparison

The Not Equal (NE) block compares the two input values (of any numeric data type) to determine if IN1 is not equal to IN2.The result of the comparison is the output, OUT.

NE Block

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

Sensitivity refers to the tolerance band of the equality relationship. That is, IN1 is not equal to IN2 if it is numerically outsidethe band defined by IN2 ± SENS.

Instruction Guide GEI-100682AC 187For public disclosure

Page 188: Mark* VIe Controller

Inputs

Name Data Type DescriptionIN1 ANY_NUM The input to compareIN2 ANY_NUM The input to compare againstSENS ANY_NUM The sensitivity valueHYST ANY_NUM The Hysteresis value

Output

Name Data Type DescriptionOUT BOOL The result of the comparison

188 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 189: Mark* VIe Controller

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 blockpasses 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 DescriptionIN BOOL Boolean input signalPU_DEL Unsigned double integer Pickup delay (ms)DO_DEL Unsigned double integer Dropout delay (ms)

Output

Name Data Type DescriptionOUT BOOL Delayed filtered output

Instruction Guide GEI-100682AC 189For public disclosure

Page 190: Mark* VIe Controller

Parity Check (PARITY_CHK)Block Category: System

The Parity Check (PARITY_CHK) block checks for even or odd parity on input variable. It sets the ODD output to True if theinput long integer contains an odd number of logical 1 and sets the EVEN output to False.

PARITY_CHK Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)INPUT DINT Variable to check parity

Outputs

Name Data Type DescriptionODD BOOL True if Odd Parity

EVEN BOOL True if Even Parity

190 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 191: Mark* VIe Controller

Prevote (PREVOTE)Block Category: System

The Prevote (PREVOTE) block allows a user to transfer prevoted input values to blockware. The block prevotes any analogvariable into the block data type rounding any fractional value to the nearest integer (if block data type is INT) or into asingle/double precision floating point variable (if block data type is REAL). The boundary check and conversion is doneautomatically.

Note This block is a variant block that supports any one of the following block data types: Boolean, Integer, Double Integer,Real, Long Real, Unsigned Integer, and Unsigned Double Integer. Refer to the section Change Data Type of Variant Block.

PREVOTE Block

PREVOTE Block Expanded

Instruction Guide GEI-100682AC 191For public disclosure

Page 192: Mark* VIe Controller

Prevote data is available from I/O Nets (R, S, Ta, Tb) marked with a 1 for the system configurations displayed in thefollowing table.

Mark VIe Prevote Buffer Usage

Redundancy Prevote BuffersController Network I/O Pack R S ‘Ta TbSimplex Simplex Simplex 1 0 0 0Simplex Simplex Dual Not supportedSimplex Simplex TMR Not supportedSimplex Dual Simplex Not supportedSimplex Dual Dual Not supportedSimplex Dual TMR Not supportedSimplex TMR Simplex † 1 0 0 0Simplex TMR Dual †† 0 0 1 1Simplex TMR TMR 1 1 1 0Dual Simplex Simplex Not supportedDual Simplex Dual Not supportedDual Simplex TMR Not supportedDual Dual Simplex † 1 0 0 0Dual Dual Dual †† 0 0 1 1Dual Dual TMR 1 1 1 1Dual TMR Simplex Not supportedDual TMR Dual Not supportedDual TMR TMR Not supportedTMR Simplex Simplex Not supportedTMR Simplex Dual Not supportedTMR Simplex TMR Not supportedTMR Dual Simplex Not supportedTMR Dual Dual Not supportedTMR Dual TMR Not supportedTMR TMR Simplex † 1 0 0 0TMR TMR Dual †† 0 0 1 1TMR TMR TMR 1 1 1 0† The I/O could be on any network.†† The I/O is not limited to R and T. It could be R and Tor S and T.

192 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 193: Mark* VIe Controller

Input

Name Data Type DescriptionVAR ANY Source variable

Outputs

Name Data Type DescriptionRHLT BOOL R prevote variable healthSHLT BOOL S prevote variable healthTAHLT BOOL TA prevote variable healthTBHLT BOOL TB prevote variable healthR ANY R prevote destination variableS ANY S prevote destination variableTA ANY TA prevote destination variableTB ANY TB prevote destination variable

Instruction Guide GEI-100682AC 193For public disclosure

Page 194: Mark* VIe Controller

Proportional Integral Derivative Control (PID)Block Category: Controls (Basic)

The Proportional Integral Derivative Control (PID) block performs proportional, integral and derivative control on the setpoint, measured value feedback, and a derivative source. It provides a smooth transition between operating modes using aninternal lockon sequence.

The LOCKON[ ] array may contain up to 32 elements, each of which must be initialized with one of three modes indicating alockon function: LOCKON (O), LOCKON (1), or LOCKON (2)

Note If the integral gain is set to zero (0), do not attempt to use LOCKON mode (0).

The MODE pin selects a process mode (external to the _PID block) that requires the block to perform one of the three typesof lockon functions. Using the MODE as the index into LOCKON[ ] array accomplishes the binding. When the block detectsa mode change it performs the corresponding lockon function during that sweep. Clamp MODE to within the size of theLOCKON array.

If LOCKON[MODE] = NO_LOCKON, or If LOCKON[MODE] is undefined:

• Calculate PID correction• Route correction variable to OUT (F = 0)• Ignore any mode changes

If LOCKON[MODE] = LOCKON and the mode changes:

• Set all derivative states equal to DSRC• Set integral state with OUT(t-1) - (A + B + OFFSET)• Update state variable for (KI * (CTL_VAR -SETPT))

Calculate PID correction: Route correction variable to OUT (F = 0)

IF LOCKON[MODE] = PASSTHRU:

• Set all integral and derivative states to zero• Route SETP to OUT (F = 1)• Ignore any mode changes• ERROR = 0

194 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 195: Mark* VIe Controller

The integration is calculated using a bilinear transformation for the trapezoidal rule:

• 1/s = (T/2) x (Z+1)/(Z-1)• y(t) = (T/2) x [x(t) + x(t-1)] + y(t-1)

If OUT is in one of the clamps the integrator state is not allowed to wind up. The derivative is calculated using the three-pointformula:

• s = (3Z^^2 - 4Z + 1) / (Z^^2 x 2T)• y'(t) = [3y(t) - 4y(t-1) + y(t-2)] / 2T

PID Block Functional Diagram

Instruction Guide GEI-100682AC 195For public disclosure

Page 196: Mark* VIe Controller

PID Block

Inputs

Name Data Type DescriptionCTL_VAR REAL Controlled variable (primary feedback)

SETPT REAL Setpoint (primary reference)KP REAL Proportional gain

D_ACT BOOLDirect acting switch. If False then KP' = -KP, else KP' = KP. The default value isFalse.

KI REAL Integral gainKD REAL Derivative gainDSRC REAL Derivative sourceOFFSET REAL Offset modifier

LOCKON [32] UINTLockon control array (32 elements maximum) of lockon codes correspondingto each mode

MODE UINT Operating mode, used as an index into the LOCKON[ ] arrayMAXOUT REAL Maximum output clamp limitMINOUT REAL Minimum output clamp limit

196 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 197: Mark* VIe Controller

Outputs

Name Data Type Description

ERROR REALError; if mode is PASSTHRU then ERROR is 0, otherwise ERROR is CTL_VAR - SETPT

OUT REAL PID Output CorrectionLALM BOOL Set to True if OUT is ≤ MINOUT, else set to FalseHALM BOOL Set to True if OUT is ≥ MAXOUT, else set to FalseMSTATE UINT Mode state - stores the previous operating mode (no user input required)KIPROP1 LREAL Double precision KI x prop (t-1) (no user input required)

INTEG1 LREAL Double precision INTEG (t-1) (no user input required)S_DSRC1 LREAL Double precision DSRC (t-1) (no user input required)S_DSRC2 LREAL Double precision DSRC (t-2) (no user input required)S_OUT1 LREAL Double precision OUT (t-1) (no user input required)

Instruction Guide GEI-100682AC 197For public disclosure

Page 198: Mark* VIe Controller

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 onthe rising edge of the trigger. Once the pulse is initiated, it persists until it times out regardless of the value of the trigger. Theprevious state of the trigger is stored with each performance sweep so the falling edge of the next trigger may be seen prior tothe end of the pulse. A specified pulse width of 0 results in a one sweep pulse. The pulse width is always a multiple of theframe performance period set in the ToolboxST application. For accurate performance of the block, set WIDTH as a multipleof the frame performance period.

PULSE Block

Inputs

Name Data Type DescriptionTRIG BOOL Triggers a new pulse on its rising edgeWIDTH UDINT Period of the pulse in milliseconds. Default is 0 (1 sweep).

Output

Name Data Type DescriptionOUT BOOL Pulse output

StateName Data Type DescriptionCWIDTH UDINT Elapsed time since the pulse began in milliseconds

ISTRIGGERED BOOL

This is the state pin for storing the trigger status of the block, ahidden pin, It can be viewed or changed by right-clicking the blockand selecting Edit Block Pins. Writing to this variable is notrecommended, but can be used to preset block states.

198 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 199: Mark* VIe Controller

Pulse Extended (PULSE_EXT)Block Category: Sequencing

The Pulse Extended (PULSE_EXT) block generates a Boolean pulse at OUT of the specified duration, WIDTH (ms). If TRIGtransitions from False to True, then OUT transitions to True and remains True until the time specified by WIDTH has elapsedsince the last rising edge of TRIG. A specified pulse width of 0 will result in a one sweep pulse. The pulse width is always amultiple of the frame performance period set in the ToolboxST application. For accurate performance of the block, setWIDTH as a multiple of the frame performance period.

PULSE_EXT Block Functional Diagram

PULSE_EXT Block

Inputs

Name Data Type DescriptionTRIG BOOL Triggers pulse timer on its rising edgeWIDTH Unsigned double integer Pulse width in milliseconds

Output

Name Data Type DescriptionOUT BOOL Pulse output

StateName Data Type DescriptionCWIDTH Unsigned double integer Elapsed time since rising edge of TRIG in milliseconds

Instruction Guide GEI-100682AC 199For public disclosure

Page 200: Mark* VIe Controller

Pushbutton (P_B)Block Category: System

The Pushbutton (P_B) block is normally used to accept Boolean commands from the Human-machine Interface (HMI). Whenthe input is False, the output is False. When the input is True, the output becomes True and after a duration specified byWIDTH, the block sets IN and OUT to False. WIDTH defaults to 1000 ms.

P_B Block Functional Diagram

P_B Block

Inputs

Name Data Type DescriptionIN BOOL Push-button inputWIDTH Unsigned double integer Push-button pulse width (ms)

Output

Name Data Type DescriptionOUT BOOL Push-button output

200 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 201: Mark* VIe Controller

Put Into Array (PUT)Block Category: Array

The Put Into Array (PUT) block moves a value from a variable into an array element of the same data type. A block exists foreach of the analog data types and is identified by its suffix. The data transfer occurs each time the block performs and theENABLE pin is True. The array index N is interpreted as an unsigned long integer. If N is out of range, the block transfersinto the last element of the array.

Note This block is a variant block that supports any one the following block data types: Boolean, Integer, Double Integer,Real, Long Real, Unsigned Integer, Unsigned Double Integer. Refer to the section Change Data Type of Variant Block.

PUT Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)SRC ANY Source variable

N UDINTDestination array index (0 based, interpreted internally asunsigned)

Output

Name Data Type DescriptionDEST[ ] ANY Destination array

Instruction Guide GEI-100682AC 201For public disclosure

Page 202: Mark* VIe Controller

Rate Limiter (RATELIM)Block Category: Controls (Basic)

The Rate Limiter (RATELIM) block behaves as a rate limiter. OUT equals IN if the rate of change of the input, RATE_IN,does not exceed RATE_INC or RATE_DEC. The rate of change of OUT is limited when RATE_IN exceeds RATE_INC orRATE_DEC. In this case, RATE_LIM is True. When HOLD is set to True, OUT maintains current value. When PASS is setto True, OUT equals IN (no rate limiting). PASS takes precedence over HOLD. When PRESET is set to True, OUT equalsPR_VAL (no rate limiting). PRESET takes precedence over PASS and HOLD. RATE_IN is calculated for all cases.

RATELIM Block Functional Diagram

RATELIM Block

202 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 203: Mark* VIe Controller

This block propagates quality status if the status operations are enabled.Block status modifications:

• RATE_IN status is propagated from IN status.• OUTand RATE_OUTstatus are propagated from either IN status or PR_VAL status, whichever is active. The statuses of

OUTand RATE_OUTare modified to include HIGH_LIMITED or LOW_LIMITED when applicable. For example:

IF PRESET is False and IN status = NOT_LIMITED-GOODNC [128]AndRATE_IN > RATE_INC, then OUTstatus = HIGH_LIMITED-GOODNC [130]OrABS(RATE_IN) > ABS(RATE_DEC), then OUTstatus = LOW_LIMITED-GOODNC [129]OrRATE_IN < RATE_INC AND ABS (RATE_IN) < ABS(RATE_DEC),then OUTstatus = NOT_LIMITED-GOODNC [128]

Refer to the section Types of Status Blocks.

Inputs

Name Data Type DescriptionIN REAL† Input variableRATE_INC REAL Rate of increase limit (units/sec)RATE_DEC REAL Absolute rate of decrease limit (units/sec)PR_VAL REAL† Preset value

PRESET BOOL Initializes output to preset value

PASS BOOL Passes input to output without limitingHOLD BOOL Holds output to current value when True† Value with Status, if status option is enabled.

Outputs

Name Data Type DescriptionRATE_OUT REAL† Rate of change after limit (units/sec)RATE_IN REAL† Rate of change before limit (units/sec)OUT REAL† Rate limited outputRATE_LIM BOOL Output rate limiting occurring† Value with Status, if status option is enabled.

Instruction Guide GEI-100682AC 203For public disclosure

Page 204: Mark* VIe Controller

Rate Monitor (RATEMON)Block Category: Controls (Basic)

The Rate Monitor (RATEMON) block monitors the rate of change of IN and sets a flag when a specified rate is exceeded. TheRATE variable on the output is calculated based on the change in units per seconds of the input variable IN. OUT is simply apass through variable which contains the same value as the input, IN. When RATE is greater than 0 and RATE exceedsRATE_INC, then RATE_INC_HI is True. When RATE is less than 0 and absolute value of RATE exceeds RATE_DEC, thenRATE_DEC_HI is True.

Additionally, this block uses hysteresis, HYST, which is applied to RATE_INC and RATE_DEC.Example with IN = Sine function (RATE = Cosine function) :RATE_INC = 0.6RATE_DEC = 0.4HYST = 0.2

RATEMON Block Functional Diagram

RATEMON Block

204 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 205: Mark* VIe Controller

This block propagates quality status if the status operations are enabled.Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionIN REAL† Input variableRATE_INC REAL Absolute rate of change increase setpoint (units/sec)RATE_DEC REAL Absolute rate of change decrease setpoint (units/sec)HYST REAL Hysteresis† Value with Status, if status option is enabled.

Outputs

Name Data Type DescriptionRATE REAL† Rate of change of input (units/sec)OUT REAL† Pass through outputRATE_INC_HI BOOL Increase rate of change HIGH flagRATE_DEC_HI BOOL Decrease rate of change LOW flag† Value with Status, if status option is enabled.

Instruction Guide GEI-100682AC 205For public disclosure

Page 206: Mark* VIe Controller

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 characterstring or can it be configured through the Relay Ladder Logic editor in the ToolboxST application. The equation may consistof up to 128 elements, or combinations of operators and operands. For example, the equation A + B contains two operandsand one operator for a total of three elements.

RUNG Block Functional Diagram

RUNG Block

Note Annunciation of Loss of IONet for Mark VIe I/O Packs, Annunciation of TMR Controller Heartbeat Status Not OK, andSelection of Setpoint based on Boolean Logic are logic examples using the RUNG block.

Supported Operators

Operation OperatorParenthesis ( )NOT ~OR +AND *

Inputs

Name Data Type DescriptionEQN Constant String Boolean equationA BOOL Required Boolean input used in equation↓ ↓ ↓P BOOL Boolean input used in the equation

Output

Name Data Type DescriptionOUT BOOL The result of the equation

206 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 207: Mark* VIe Controller

Rotary Switch (ROTARY_SW)Block Category: Boolean Operations

The Rotary Switch (ROTARY_SW) block uses the value of an unsigned integer input, IN, to select one of N Boolean outputs.This is a rubber block that provides up to 32 outputs. The selected output is driven True while all other outputs are drivenFalse. An input value of 1 for IN selects the first output, OUT1, and an input value of N selects the last output, OUT(N). Ifthe integer input contains a value that is not within the range of 1 to N then all outputs are driven False.

ROTARY_SW Block

Input

Name Data Type DescriptionIN UINT Selects which Boolean output will be True

Outputs

Name Data Type DescriptionOUT1 BOOL Contains the results of the selection process↓ ↓ ↓OUT32 BOOL Contains the results of the selection process

Instruction Guide GEI-100682AC 207For public disclosure

Page 208: Mark* VIe Controller

Round (ROUND)Block Category: Math

The Round (ROUND) block rounds an input value to the nearest rational number. The input PREC specifies the precision thatthe number will be rounded. The result is sent to the output OUT.

For example, if :

IN = 2.3

PREC = 0

OUT = 2.00000000

IN = 2.55

PREC = 1

OUT = 2.60000000

IN = 5.007

PREC = 2

OUT = 5.01000000

IN = -14.5

PREC = 0

OUT = -15

IN = 14.5

PREC = 0

OUT = 15

ROUND Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

Inputs

Name Data Type DescriptionIN REAL† Input variablePREC UINT Input rounding precision† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT REAL† Rounded output† Value with status, if status option is enabled.

208 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 209: Mark* VIe Controller

Select (SELECT)Block Category: Selection

The Select (SELECT) block is an expandable block that moves one of the 32 inputs in a Mark VIe control system, one of the8 inputs in a Mark VIeS Safety control system, or the CASC into the output, based on the prioritized evaluation of theselection pins. Working in ascending order from SEL1 the first True value encountered causes the corresponding input to bemoved to the output. If none of the selection pins are True then the CASC is moved to the output.

Note This is a variant block that supports any one the following block data types: Boolean, Integer, Double Integer, Real,Long Real, Unsigned Integer, Unsigned Double Integer. The default data type is Real. Refer to the section Change Data Typeof Variant Block.

SELECT Block

Note Selection of Setpoint based on Boolean Logic is a logic example using the SELECT block.

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

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 negativerepresentable number, based on the sign of the NaN.

Inputs

Name Data Type DescriptionENABLE 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† Value with Status (Value only for Boolean block type), if status option is enabled.

Output

Name Data Type DescriptionOUT ANY† Selected output† Value with Status (Value only for Boolean block type), if status option is enabled.

Instruction Guide GEI-100682AC 209For public disclosure

Page 210: Mark* VIe Controller

Selector (SELECTOR)Block Category: Selection

The Selector (SELECTOR) block is an expandable block that moves up to 16 inputs, INAxx and INBxx, depending on theBoolean inputs SELA and SELB into OUTxx. This is based on the prioritized evaluation of the selection pins.

If SELA is True then OUTxx = INAxx

If SELB is True then OUTxx = INBxx

When both SELA and SELB are True, SELA takes the priority.

When both SELA and SELB are False, OUTxx= CASC.

Note This is a variant block that supports any one the following block data types: Boolean, Integer, Double Integer, Real,Long Real, Unsigned Integer, Unsigned Double Integer. The default data type is BOOL. Refer to the section Change DataType of Variant Block.

SELECTOR Block

This block propagates quality status if the status operations are enabled. Refer to the Status Monitoring (STATUS_MONITORING) block.

210 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 211: Mark* VIe Controller

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is True)CASC ANY† Cascade inputSELA BOOL When True Select Input Set ASELB BOOL When True select Input Set BINA1 ANY† Input 1 Set AINB1 ANY† Input 1 Set BINA2 ANY† Input 2 Set AINB2 ANY† Input 2 Set B↓ ↓ ↓INA16 ANY† Input 16 Set AINB16 ANY† Input 16 Set B† Value with Status (Value only for Boolean block type), if status option is enabled.

Outputs

Name Data Type DescriptionOUT1 ANY† Output 1OUT2 ANY† Output 2↓ ↓ ↓Out16 ANY† Output 16† Value with Status (Value only for Boolean block type), if status option is enabled.

Instruction Guide GEI-100682AC 211For public disclosure

Page 212: Mark* VIe Controller

Sequence Branch Block - TMR (SBB)Block Category: Sequencing

The Sequence Branch Block - TMR (SBB) is a rubber block that supports up to eight branches. The Branch block is used tocreate up to eight branches from a single Sequence Step Block (SSB) step. The block can be configured to activate allbranches, or just one. The Sequence Merge Block (SMB ) block is used to bring the branches back into the main line of asequence.

When the SBB (Branch) block is configured to perform all branches (BR_ALL is True), then all SSB's that are attached to theNEXTx[ ] outputs will be started when the upstream SSB (the SSB connected to the START[2] pin of the SBB block)transitions. This allows a sequence to perform multiple branches in parallel. The branch inputs 1 through 8 (BRANCHx) areignored when the SBB block is configured to branch all.

When the SBB block is configured to perform selective branching, then only one branch will be selected when the upstreamSSB transitions. The first branch input (BRANCHx) to go high determines which branch is selected. If more than one branchinput is high at the same time, then the lower numbered branch is selected. Only one branch is ever selected when the branchtype (BR_ALL) is False. Normally, the ACTIVE and ON outputs of the SBB block will only be on for a few scans of thetask.

Note Do not connect more then one sequence block to one NEXTx output of the SBB branch block. If a branch is enabledby setting the BRANCHx input to True, but there is nothing connected to the corresponding NEXTx output, then the sequencewill freeze when the SBB branch block becomes active.

SBB Block

212 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 213: Mark* VIe Controller

Inputs

Name Data Type DescriptionSTART[2] BOOL Connection pin – from the NEXT pin of an SSB blockBR_ALL BOOL If True branch all. If False selective branchRESET BOOL Reset the Branch blockBRANCH1 BOOL Transition condition for branch 1↓ ↓ ↓BRANCH8 BOOL Transition condition for branch 8

Outputs

Name Data Type DescriptionACTIVE BOOL If True the branch is activeON BOOL If True the branch is active and transitioningGSTAT[7] BOOL Global input and output connection to SMGR blockNEXT1[2] BOOL Next output for branch 1↓ ↓ ↓NEXT8[2] BOOL Next output for branch 8

Instruction Guide GEI-100682AC 213For public disclosure

Page 214: Mark* VIe Controller

Sequence Manager Block - TMR (SMGR)Block Category: Sequencing

The Sequence Manager Block - TMR (SMGR) block collects global status information from all of the Sequential Step blocks(SSBs) in a sequence and distributes global inputs to each of these blocks. The block must be in the same task as all the SSB'sin the sequence, and it must be at the beginning or the end of the task for the status outputs to show accurate sequenceinformation. Each SSB (and SMB and SBB block) in a sequence should have the same variable attached to their GSTAToutput pin.

The SMGR block is used to show the status of a whole sequence. If any SSB in the sequence is active, then the ACTIVEoutput of the SMGR will be True. The same applies to the ON and FAULT outputs. Note that for sequences which havemultiple branches that can run at the same time, all three outputs may be True (one branch running, and another faulted). Thefour Boolean inputs are used as global inputs for every Sequence block attached to the GSTAT variable. For instance, whenthe RESET input goes high, all SSB's (and SBB and SMB blocks) in the sequence will reset, just as if their own reset inputshad been set to True.

Each Bit of GSTAT[ ] represents the following global input/output as follows:

GSTAT[0] : Global On output

GSTAT[1] : Global Active output

GSTAT[2] : Global Fault output

GSTAT[3] : Global Reset' input

GSTAT[4] : Global Hold input

GSTAT[5] : Global SSMODE input

GSTAT[6] : Global SSTRIG input

SMGR Block

214 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 215: Mark* VIe Controller

Inputs

Name Data Type DescriptionSTART[2] BOOL Use this input to re-start the sequence from another SSBRESET BOOL Global reset input to all SFBsHOLD BOOL Global hold input to all SFBsSSMODE BOOL Global single-step mode

SSTRIG BOOL Global single-step trigger (edge sensitive)START1ST BOOL Use this input to start the sequence for the first timeEND[2] BOOL Use this input to end the sequence from another SSBGSTAT[7] BOOL Global input and output connection on the sequence manager

Outputs

Name Data Type DescriptionACTIVE BOOL Sequence is active status outputON BOOL ON status outputNEXT[2] BOOL Output to connect to the START[2] of the next SSBFAULT BOOL Sequence is faulted status output

Instruction Guide GEI-100682AC 215For public disclosure

Page 216: Mark* VIe Controller

Sequence Merge Block - TMR (SMB)Block Category: Sequencing

The Sequence Merge Block - TMR (SMB) block is used to merge up to eight branches into a single Sequence Step Block(SSB) step. The block can be configured to merge all branches or just one. The Branch block is used to create the branches.

When the SMB block is configured to perform a selective merge (MR_ALL is False), then the first branch (an SSB connectedto a MERGEx[2] input) to request a transition will cause the MERGE block to start the SSB attached to the OUT pin. Aselective merge is normally used to merge branches which are controlled by a 'selective' branch block. The DONEFB input isignored when a selective merge is being performed.

Setting the MR_ALL to True configures the SMB block to merge all branches. Under this configuration, the SMB block waitsuntil all defined branches (MERGEx[2] inputs) have requested a transition before it starts the SSB attached to the NEXT[2]pin. The first branch (MERGEx[2] input) to request a transition will start a timer in the SMB block. If all branches do notmerge within the time specified by the MTIME input, then the SMB block will fault. Note that if MTIME is set to -1, then theSMB block will never timeout. The RESET input will clear the SMB block.

For the merge all configuration, the DONEFB input must be True before any SFB attached to the STARTx[2] inputs willattempt for transition. For selective merging, the DONEFB input is ignored. The ACTIVE pin indicates that the MERGEblock is in the process of accepting a hand-off (s) from the previous SSB(s) and transitioning to the next SSB. This output willgo high as soon as the SMB block detects a request to transition through it's MERGEx[2] pin and will stay high until theSSB's tied to the NEXT[2] pin has accepted the transition. The ON output will follow the ACTIVE output, but will not comeon until all the start requests have been accepted. It will go out as soon as the merge block starts a transition through theNEXT[2] output.

Each Bit of GSTAT[ ] represents the following global input/output

GSTAT[0] : Global 'On' output

GSTAT[1] : Global 'Active' output

GSTAT[2] : Global 'Fault' output

GSTAT[3] : Global 'Reset' input

GSTAT[4] : Global 'Hold' input

GSTAT[5] : Global 'SSMODE' input

GSTAT[6] : Global 'SSTRIG' input

SMB Block

216 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 217: Mark* VIe Controller

Inputs

Name Data Type DescriptionDONEFB BOOL Transition condition for merge allMR_ALL BOOL If True merge all. If False selective mergeMTIME UDINT Merge time input in milliseconds

RESET BOOL If True reset the merge block (from any state)HOLD BOOL Places SMB into hold modeSSMODE BOOL Single step mode (semi automatic mode)

SSTRIG BOOL Single step trigger (edge sensitive)MERGE1[2] BOOL Start input for merge 1↓ ↓ ↓MERGE8[2] BOOL Start input for merge 8

Outputs

Name Data Type DescriptionNEXT[2] BOOL Next output to the start input of an SSBACTIVE BOOL If True the merge is active

ON BOOL If True the merge is active and transitioningFAULT BOOL If True a fault has occurredRTIME UDINT Remaining feedback time in seconds

StatesName Data Type DescriptionCTIME UDINT Current merge time in millisecondsGSTAT[7] BOOL Global input and output connection to SMGR block

Instruction Guide GEI-100682AC 217For public disclosure

Page 218: Mark* VIe Controller

Sequence Step Block - TMR (SSB)Block Category: Sequencing

The Sequence Step Block - TMR (SSB) block creates a step in an automatic sequence. A sequence consists of a number ofSSB blocks wired together with branch (SBB) and merge (SMB) blocks. The active or on outputs are used to indicate that astep is active.

Each SSB represents a step in a sequence. The SSB's are tied together to form a sequence by wiring the NEXT[ ] output pin ofthe present block to the START [ ] input pin of the next block. The DONEFB input is used to transition the SSB to the nextstep. The ACTIVE output of the SSB indicates when the step is active while the ON output indicates active with a successfultransition from the previous step. The ACTIVE or ON outputs are used to trigger the actions that are required for a futurestep.

The first step of a sequence is started by using the STRT1ST Boolean output of the Sequence Manager block (SMGR) withthe Sequence managers NEXT[2] pin connected to the (SSB) START[2] pin. Some inputs can be considered to be global tothe auto-sequence. Specific pins of an SSB can be made global by assigning the same variable to like pins of each SSB in theauto-sequence, and the same variable can be connected to the GSTAT[ ] pin of each SSB.

When using the GSTAT[1] no variable assignments are necessary for the inputs that are controlled by the SMGR block. Theinputs which are global are: HOLD, RESET, SSMODE, and SSTRIG. The HOLD input of an SSB is used to stop theFBTIME so that a timeout condition will not occur.

Note The SSMODE can be used to implement a semi-auto mode for a sequence.

An important feature of the SSB is single step mode (SSMODE) , which is implemented by using the SSMODE and SSTRIGinputs. These inputs are global and so can be set through the SMGR for whole sequence. When SSMODE input is True, thenthe SSB waits for the SSTRIG input before it sets its ON output. While waiting for the SSTRIG, the active output Boolean(ACTIVE) will be True. Even if the DONEFB is True, the step will not transition to the next step unless the SSTRIG is False.The SSTRIG must go high, then low.

The PASSTHR input controls how the SSB behaves if the DONEFB is True when the SSB is started. If PASSTHRU is True,then only the ACTIVE output becomes True while the SSB transitions to the next step. If PASSTHR is False, then both theACTIVE and the ON outputs become True while the SSB transitions to the next step. The only way the SSB can fault is if theDONEFB does not come True within the time specified in the FBTIME input (a value of zero or less means that the SSB willnever time out). If the SSB times out before the DONEFB becomes True, the FAULT output will go high. If the DONEFBbecomes True, the fault will clear automatically and the sequence will continue.

218 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 219: Mark* VIe Controller

Each Bit of GSTAT[ ] represents the following global input/output:

GSTAT[0] : Global 'On' output

GSTAT[1] : Global 'Active' output

GSTAT[2] : Global 'Fault' output

GSTAT[3] : Global 'Reset' input

GSTAT[4] : Global 'Hold' input

GSTAT[5] : Global 'SSMODE' input

GSTAT[6] : Global 'SSTRIG' input

SSB Block

Inputs

Name Data Type DescriptionSTART[2] BOOL Starts the SSB. Connect from NEXToutput of another stepDONEFB BOOL Done feedback input. Causes a transition to the next stepFBTIME UDINT Feedback input time in millisecondsFORCEFB BOOL Forces the done feedback to TrueHOLD BOOL Global hold input to all the SFBsSSMODE BOOL Single step mode (semi automatic mode)

SSTRIG BOOL Single step trigger (edge sensitive)

RESET BOOL Resets the SSB from any state

PASSTHR Constant BOOLWhen started just go to the next step if the done feedback isTrue

Instruction Guide GEI-100682AC 219For public disclosure

Page 220: Mark* VIe Controller

Outputs

Name Data Type DescriptionACTIVE BOOL Indicates the SSB is activeON BOOL Indicates the SSB is active and onNEXT[2] BOOL Pin to connect to next SSB, SBB, or SMB blockFAULT BOOL Fault status outputRTIME UDINT Remaining feedback time in seconds

StatesName Data Type DescriptionCTIME UDINT Current feedback time in millisecondsGSTAT[7] BOOL Global input and output connection to SMGR block

220 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 221: Mark* VIe Controller

Set Array (SETARRY)Block Category: Array

The Set Array (SETARRY) block fills the destination array with the value set at the input.

Note This block is a variant block that supports any one the following block data types: BOOL, Integer, Double Integer,Real, Long Real, Unsigned Integer, Unsigned Double Integer. Refer to the section Change Data Type of Variant Block.

SETARRY Block

Inputs

Name Data Type DescriptionENABLE BOOL Block enable (default is False)SET ANY Set value

Output

Name Data Type DescriptionDEST[ ] ANY Destination array

Instruction Guide GEI-100682AC 221For public disclosure

Page 222: Mark* VIe Controller

Square Root (SQRT)Block Category: Math

The Square Root (SQRT) block performs the square root function on the absolute value of the input.

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

SQRT Block

This block propagates quality status if the status operations are enabled.

Block Status Modification: If the input is negative, the output will be the square root of the absolute value of the input and theoutput status will be NOT_LIMITED- CONFIGURATION_ERROR-BAD [4].

Refer to the Status Monitoring (STATUS_MONITORING) block.

Input

Name Data Type DescriptionIN ANY_NUM† Input value† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY_NUM† Square root of the input value† Value with status, if status option is enabled.

222 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 223: Mark* VIe Controller

Status Combine (STATUS_COMBINE)Block Category: System

The Status Combine (STATUS_COMBINE) block applies the value of IN_S as the quality status for the input IN. The outputof the block is the value of IN with status. IN can either be value only or value with status. If IN is value with status, then thestatus of IN is replaced by the value of IN_S. The valid values for the IN_S are listed in the following table. Using an invalidvalue for IN_S results as the status of OUT being NOT_ LIMITED – BAD [0].

Note This block is a variant block, which supports any one of the following block data types: Integer, Double Integer, Real,Long Real, Unsigned Integer, and Unsigned Double Integer. The data type of the OUT pin must match the selected block datatype. Status functionality is always enabled for this block. Refer to the section Change Data Type of Variant Block.

STATUS_COMBINE Block

This block propagates status. Refer to the Status Monitoring (STATUS_MONITORING) block.

Instruction Guide GEI-100682AC 223For public disclosure

Page 224: Mark* VIe Controller

Valid Values for IN_S

BAD STATUS REGION IntegerNOT_LIMITED-BAD 0LOW_LIMITED-BAD 1HIGH_LIMITED-BAD 2CONSTANT-BAD 3NOT_LIMITED-CONFIGURATION_ERROR-BAD 4LOW_LIMITED-CONFIGURATION_ERROR-BAD 5HIGH_LIMITED-CONFIGURATION_ERROR-BAD 6CONSTANT-CONFIGURATION_ERROR-BAD 7NOT_LIMITED-NOT_CONNECTED-BAD 8LOW_LIMITED-NOT_CONNECTED-BAD 9HIGH_LIMITED-NOT_CONNECTED-BAD 10CONSTANT-NOT_CONNECTED-BAD 11NOT_LIMITED-DEVICE_FAILURE-BAD 12LOW_LIMITED-DEVICE_FAILURE-BAD 13HIGH_LIMITED-DEVICE_FAILURE-BAD 14CONSTANT-DEVICE_FAILURE-BAD 15NOT_LIMITED-SENSOR_FAILURE-BAD 16LOW_LIMITED-SENSOR_FAILURE-BAD 17HIGH_LIMITED-SENSOR_FAILURE-BAD 18CONSTANT-SENSOR_FAILURE-BAD 19NOT_LIMITED-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 20LOW_LIMITED-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 21HIGH_LIMITED-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 22CONSTANT-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 23NOT_LIMITED-NO_COMM_WITH_NO_USABLE_VALUE-BAD 24LOW_LIMITED-NO_COMM_WITH_NO_USABLE_VALUE-BAD 25HIGH_LIMITED-NO_COMM_WITH_NO_USABLE_VALUE-BAD 26CONSTANT-NO_COMM_WITH_NO_USABLE_VALUE-BAD 27NOT_LIMITED-OUT_OF_SERVICE-BAD 28LOW_LIMITED-OUT_OF_SERVICE-BAD 29HIGH_LIMITED-OUT_OF_SERVICE-BAD 30CONSTANT-OUT_OF_SERVICE-BAD 31

UNCERTAIN STATUS REGION Integer

NOT_LIMITED-UNCERTAIN 64

LOW_LIMITED-UNCERTAIN 65

HIGH_LIMITED-UNCERTAIN 66

CONSTANT-UNCERTAIN 67

NOT_LIMITED-LAST_USABLE_VALUE-UNCERTAIN 68

LOW_LIMITED-LAST_USABLE_VALUE-UNCERTAIN 69

HIGH_LIMITED-LAST_USABLE_VALUE-UNCERTAIN 70

CONSTANT-LAST_USABLE_VALUE-UNCERTAIN 71

NOT_LIMITED-SUBSTITUTE-UNCERTAIN 72

LOW_LIMITED-SUBSTITUTE-UNCERTAIN 73

224 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 225: Mark* VIe Controller

Valid Values for IN_S (continued)

HIGH_LIMITED-SUBSTITUTE-UNCERTAIN 74

CONSTANT-SUBSTITUTE-UNCERTAIN 75

NOT_LIMITED-INITIAL_VALUE-UNCERTAIN 76

LOW_LIMITED-INITIAL_VALUE-UNCERTAIN 77

HIGH_LIMITED-INITIAL_VALUE-UNCERTAIN 78

CONSTANT-INITIAL_VALUE-UNCERTAIN 79

NOT_LIMITED-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 80

LOW_LIMITED-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 81

HIGH_LIMITED-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 82

CONSTANT-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 83

NOT_LIMITED-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 84

LOW_LIMITED-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 85

HIGH_LIMITED-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 86

CONSTANT-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 87

NOT_LIMITED-SUBNORMAL-UNCERTAIN 88

LOW_LIMITED-SUBNORMAL-UNCERTAIN 89

HIGH_LIMITED-SUBNORMAL-UNCERTAIN 90

CONSTANT-SUBNORMAL-UNCERTAIN 91

GOOD NON CASCADE STATUS REGION Integer

NOT_LIMITED-GOODNC 128

LOW_LIMITED-GOODNC 129

HIGH_LIMITED-GOODNC 130

CONSTANT-GOODNC 131

NOT_LIMITED-ACTIVE_BLOCK_ALARM-GOODNC 132

LOW_LIMITED-ACTIVE_BLOCK_ALARM-GOODNC 133

HIGH_LIMITED-ACTIVE_BLOCK_ALARM-GOODNC 134

CONSTANT-ACTIVE_BLOCK_ALARM-GOODNC 135

NOT_LIMITED-ACTIVE_ADVISORY_ALARM-GOODNC 136

LOW_LIMITED-ACTIVE_ADVISORY_ALARM-GOODNC 137

HIGH_LIMITED-ACTIVE_ADVISORY_ALARM-GOODNC 138

CONSTANT-ACTIVE_ADVISORY_ALARM-GOODNC 139

NOT_LIMITED-ACTIVE_CRITICAL_ALARM-GOODNC 140

LOW_LIMITED-ACTIVE_CRITICAL_ALARM-GOODNC 141

HIGH_LIMITED-ACTIVE_CRITICAL_ALARM-GOODNC 142

CONSTANT-ACTIVE_CRITICAL_ALARM-GOODNC 143

NOT_LIMITED-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 144

LOW_LIMITED-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 145

Instruction Guide GEI-100682AC 225For public disclosure

Page 226: Mark* VIe Controller

Valid Values for IN_S (continued)

HIGH_LIMITED-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 146

CONSTANT-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 147

NOT_LIMITED-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 148

LOW_LIMITED-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 149

HIGH_LIMITED-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 150

CONSTANT-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 151

NOT_LIMITED-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 152

LOW_LIMITED-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 153

HIGH_LIMITED-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 154

CONSTANT-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 155

GOOD CASCADE STATUS REGION Integer

NOT_LIMITED-GOODC 192

LOW_LIMITED-GOODC 193

HIGH_LIMITED-GOODC 194

CONSTANT-GOODC 195

NOT_LIMITED-INITIALIZATION_ACKNOWLEDGE-GOODC 196

LOW_LIMITED-INITIALIZATION_ACKNOWLEDGE-GOODC 197

HIGH_LIMITED-INITIALIZATION_ACKNOWLEDGE-GOODC 198

CONSTANT-INITIALIZATION_ACKNOWLEDGE-GOODC 199

NOT_LIMITED-INITIALIZATION_REQUEST-GOODC 200

LOW_LIMITED-INITIALIZATION_REQUEST-GOODC 201

HIGH_LIMITED-INITIALIZATION_REQUEST-GOODC 202

CONSTANT-INITIALIZATION_REQUEST-GOODC 203

NOT_LIMITED-NOT_INVITED-GOODC 204

LOW_LIMITED-NOT_INVITED-GOODC 205

HIGH_LIMITED-NOT_INVITED-GOODC 206

CONSTANT-NOT_INVITED-GOODC 207

NOT_LIMITED-NOT_SELECTED-GOODC 208

LOW_LIMITED-NOT_SELECTED-GOODC 209

HIGH_LIMITED-NOT_SELECTED-GOODC 210

CONSTANT-NOT_SELECTED-GOODC 211

NOT_LIMITED-LOCAL_OVERRIDE-GOODC 216

LOW_LIMITED-LOCAL_OVERRIDE-GOODC 217

HIGH_LIMITED-LOCAL_OVERRIDE-GOODC 218

CONSTANT-LOCAL_OVERRIDE-GOODC 219

NOT_LIMITED-FAULT_STATE_ACTIVE-GOODC 220

LOW_LIMITED-FAULT_STATE_ACTIVE-GOODC 221

226 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 227: Mark* VIe Controller

Valid Values for IN_S (continued)

HIGH_LIMITED-FAULT_STATE_ACTIVE-GOODC 222

CONSTANT-FAULT_STATE_ACTIVE-GOODC 223

NOT_LIMITED-INITIATE_FAULT_STATE-GOODC 224

LOW_LIMITED-INITIATE_FAULT_STATE-GOODC 225

HIGH_LIMITED-INITIATE_FAULT_STATE-GOODC 226

CONSTANT-INITIATE_FAULT_STATE-GOODC 227

Inputs

Name Data Type Description DefaultIN_S UINT Input status 128IN ANY_NUM Input value 0

Outputs

Name Data Type Description DefaultOUT ANY_NUM Output value with status N/A

Instruction Guide GEI-100682AC 227For public disclosure

Page 228: Mark* VIe Controller

Status MonitoringThis section describes the use of blocks that can support status operations. Software blocks are interconnected by variablesassigned to pins. Blocks that support status operations will have some pins for which there is a status in addition to a value.

Function blocks monitor status inputs for three reasons:

1. To propagate input status to output status based on priority

2. To perform block actions or calculations based on input status

3. To alter output status based on block limitations or functions

Status Block TypesThe following are three divisions within the value with status function blocks, which determine how they react to status:

• Single Input/Single Output blocks (such as ABS) take a single input and produce a single output.• Selection blocks (such as SELECT, MIN_MAX) produce one output from a selection of multiple inputs. The output

status is propagated based on the selected input variable.• Relational blocks (such as ADD, MULT, SUB) use multiple inputs to produce an output.

Note The priority of the output status calculation is listed in the table, Output Status Calculation Hierarchy.

These blocks change status based on equation boundary conditions or when the output value exceeds the data type range asspecified for that specific block. The standard status is represented as: (Limit_Status)-(Sub_Status)-(Status_Region) (forexample, NOT_LIMITED-DEVICE_FAILURE-BAD).

228 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 229: Mark* VIe Controller

Status_Region

Note Additional information on cascade structures is available from the Fieldbus FoundationTM organization.

There are four status regions: BAD, UNCERTAIN, GOOD(CASCADE), and GOOD(NON-CASCADE). The propagationpriority of the regions, and the quality of the parameter value are:

1. BAD (0 ≤ Enumeration ≤ 31): The value is not useful.

2. GOOD(C) (192 ≤ Enumeration ≤ 227): The value quality is good, and may be part of a cascade structure.

3. UNCERTAIN (64 ≤ Enumeration ≤ 91): The value quality is less than normal, but the value may still be useful.

4. GOOD(NC) (128 ≤ Enumeration ≤ 155): The value quality is good, and the block does not support a cascade path.

Note For a complete list of status regions, refer to the section Status Tables.

The output status region is based on the inputs. It cannot be improved, but can be degraded based on the propagation priority.For example, a block with three inputs and one output has input variables in the status regions of BAD, UNCERTAIN, andGOOD(NC). The output would reflect the input with the lowest propagation priority and therefore have an output status ofBAD. This applies for all three function block divisions for input variables used in the calculation of the output.

Sub_StatusThere are many different sub statuses (such as DEVICE_FAILURE and SUBSTITUTE), which are used to provide morespecific information. The sub-status is propagated to the output based on the following rules:

1. For Relational blocks, sub-status is not propagated when two or more measurements are combined. The resultingsub-status will be designated as non-specific.

2. For Single Input/Single Output and Selection blocks:

• BAD Region - Only Device Failure (Status Enumeration Values: 12 – 15) or Sensor Failure (Status EnumerationValues: 16 – 19) BAD quality Sub-Status are propagated. All others are propagated as non-specific (StatusEnumeration Values: 0 – 3)

• UNCERTAIN Region - No Sub-status Propagated, all are propagated as non-specific (Status Enumeration Values: 64– 67)

• GOOD(NC) Region - No Sub-status Propagated, all are propagated as non-specific (Status Enumeration Values: 128– 131)

• GOOD(C) Region - All Sub-status Propagated (Status Enumeration Values: 192 – 227)

Limit_StatusThere are four limits used in statuses: NOT-LIMITED, LOW-LIMITED, HIGH-LIMITED, and CONSTANT. The limit statuspropagation is based on these rules:

1. For Relational blocks, the limit status is never propagated. The limit status is only created by a block if needed.

2. For Single Input/Single Output and Selection blocks, the status limit is propagated. A block altered status willoverwrite an input limit status.

Status Input Verification• Any status block that receives a signal from a non-status block/variable treats that input status as the system default of

NOT_LIMITED-GOODNC (128).• Any status block that receives an input status that is not in the valid range is treated as a status of NOT_LIMITED-BAD

(0).

Instruction Guide GEI-100682AC 229For public disclosure

Page 230: Mark* VIe Controller

Status TablesOutput Status Calculation Hierarchy

Condition Hierarchy Output Status

Any Related Input Value = NaN(Not a Number) 1

The related inputs are determined by the status block type:+NaN = HIGH_LIMITED-BAD [2]-NaN = LOW_LIMITED-BAD [1]

Status_Region Propagation 2Follows propagation priority outlined above with BAD regiontaking first priority and GOOD(NC) region taking last priority

Block Status Modification such asExceeded Data Type 3

Block modified status-detailed in block specific help file.Exceeding data type changes Limit_Status:HIGH_LIMITED for data type exceeded high orLOW_LIMITED for data type exceeded low

Sub_Status and Limit_StatusPropagation 4 These are only propagated for Single I/O and Selection blocks

Data Type RangesThe calculated output value for a block cannot exceed the range limits for the respective data type. If this occurs, the outputvalue is replaced by the maximum or minimum value for the data type. For example, if the output value for an INT data typeis computed as 100,000, the actual output value will be limited to 32,767 and the status is determined as listed in the tableOutput Status Calculation Hierarchy.

Type Minimum Value Maximum ValueINT -32768 32767DINT -2147483648 2147483647UINT 0 65535UDINT 0 4294967295REAL -3.4E+38 3.4E+38LREAL -1.7E+308 1.7E+308BOOLEAN False True

230 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 231: Mark* VIe Controller

Bad Status Regions

Bad Status Region IntegerNOT_LIMITED-BAD 0LOW_LIMITED-BAD 1HIGH_LIMITED-BAD 2CONSTANT-BAD 3NOT_LIMITED-CONFIGURATION_ERROR-BAD 4LOW_LIMITED-CONFIGURATION_ERROR-BAD 5HIGH_LIMITED-CONFIGURATION_ERROR-BAD 6CONSTANT-CONFIGURATION_ERROR-BAD 7NOT_LIMITED-NOT_CONNECTED-BAD 8LOW_LIMITED-NOT_CONNECTED-BAD 9HIGH_LIMITED-NOT_CONNECTED-BAD 10CONSTANT-NOT_CONNECTED-BAD 11NOT_LIMITED-DEVICE_FAILURE-BAD 12LOW_LIMITED-DEVICE_FAILURE-BAD 13HIGH_LIMITED-DEVICE_FAILURE-BAD 14CONSTANT-DEVICE_FAILURE-BAD 15NOT_LIMITED-SENSOR_FAILURE-BAD 16LOW_LIMITED-SENSOR_FAILURE-BAD 17HIGH_LIMITED-SENSOR_FAILURE-BAD 18CONSTANT-SENSOR_FAILURE-BAD 19NOT_LIMITED-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 20LOW_LIMITED-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 21HIGH_LIMITED-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 22CONSTANT-NO_COMM_WITH_LAST_USABLE_VALUE-BAD 23NOT_LIMITED-NO_COMM_WITH_NO_USABLE_VALUE-BAD 24LOW_LIMITED-NO_COMM_WITH_NO_USABLE_VALUE-BAD 25HIGH_LIMITED-NO_COMM_WITH_NO_USABLE_VALUE-BAD 26CONSTANT-NO_COMM_WITH_NO_USABLE_VALUE-BAD 27NOT_LIMITED-OUT_OF_SERVICE-BAD 28LOW_LIMITED-OUT_OF_SERVICE-BAD 29HIGH_LIMITED-OUT_OF_SERVICE-BAD 30CONSTANT-OUT_OF_SERVICE-BAD 31

Instruction Guide GEI-100682AC 231For public disclosure

Page 232: Mark* VIe Controller

Uncertain Status Regions

Uncertain Status Region IntegerNOT_LIMITED-UNCERTAIN 64LOW_LIMITED-UNCERTAIN 65HIGH_LIMITED-UNCERTAIN 66CONSTANT-UNCERTAIN 67NOT_LIMITED-LAST_USABLE_VALUE-UNCERTAIN 68LOW_LIMITED-LAST_USABLE_VALUE-UNCERTAIN 69HIGH_LIMITED-LAST_USABLE_VALUE-UNCERTAIN 70CONSTANT-LAST_USABLE_VALUE-UNCERTAIN 71NOT_LIMITED-SUBSTITUTE-UNCERTAIN 72LOW_LIMITED-SUBSTITUTE-UNCERTAIN 73HIGH_LIMITED-SUBSTITUTE-UNCERTAIN 74CONSTANT-SUBSTITUTE-UNCERTAIN 75NOT_LIMITED-INITIAL_VALUE-UNCERTAIN 76LOW_LIMITED-INITIAL_VALUE-UNCERTAIN 77HIGH_LIMITED-INITIAL_VALUE-UNCERTAIN 78CONSTANT-INITIAL_VALUE-UNCERTAIN 79NOT_LIMITED-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 80LOW_LIMITED-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 81HIGH_LIMITED-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 82CONSTANT-SENSOR_CONVERSION_NOT_ACCURATE-UNCERTAIN 83NOT_LIMITED-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 84LOW_LIMITED-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 85HIGH_LIMITED-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 86CONSTANT-ENGINEERING_UNIT_RANGE_VIOLATION-UNCERTAIN 87NOT_LIMITED-SUBNORMAL-UNCERTAIN 88LOW_LIMITED-SUBNORMAL-UNCERTAIN 89HIGH_LIMITED-SUBNORMAL-UNCERTAIN 90CONSTANT-SUBNORMAL-UNCERTAIN 91

232 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 233: Mark* VIe Controller

Good Non Cascade Status Region

Good Non Cascade Status Regions IntegerNOT_LIMITED-GOODNC 128LOW_LIMITED-GOODNC 129HIGH_LIMITED-GOODNC 130CONSTANT-GOODNC 131NOT_LIMITED-ACTIVE_BLOCK_ALARM-GOODNC 132LOW_LIMITED-ACTIVE_BLOCK_ALARM-GOODNC 133HIGH_LIMITED-ACTIVE_BLOCK_ALARM-GOODNC 134CONSTANT-ACTIVE_BLOCK_ALARM-GOODNC 135NOT_LIMITED-ACTIVE_ADVISORY_ALARM-GOODNC 136LOW_LIMITED-ACTIVE_ADVISORY_ALARM-GOODNC 137HIGH_LIMITED-ACTIVE_ADVISORY_ALARM-GOODNC 138CONSTANT-ACTIVE_ADVISORY_ALARM-GOODNC 139NOT_LIMITED-ACTIVE_CRITICAL_ALARM-GOODNC 140LOW_LIMITED-ACTIVE_CRITICAL_ALARM-GOODNC 141HIGH_LIMITED-ACTIVE_CRITICAL_ALARM-GOODNC 142CONSTANT-ACTIVE_CRITICAL_ALARM-GOODNC 143NOT_LIMITED-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 144LOW_LIMITED-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 145HIGH_LIMITED-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 146CONSTANT-UNACKNOWLEDGED_BLOCK_ALARM-GOODNC 147NOT_LIMITED-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 148LOW_LIMITED-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 149HIGH_LIMITED-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 150CONSTANT-UNACKNOWLEDGED_ADVISORY_ALARM-GOODNC 151NOT_LIMITED-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 152LOW_LIMITED-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 153HIGH_LIMITED-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 154CONSTANT-UNACKNOWLEDGED_CRITICAL_ALARM-GOODNC 155

Instruction Guide GEI-100682AC 233For public disclosure

Page 234: Mark* VIe Controller

Good Cascade Status Region

Good Cascade Status Regions IntegerNOT_LIMITED-GOODC 192LOW_LIMITED-GOODC 193HIGH_LIMITED-GOODC 194CONSTANT-GOODC 195NOT_LIMITED-INITIALIZATION_ACKNOWLEDGE-GOODC 196LOW_LIMITED-INITIALIZATION_ACKNOWLEDGE-GOODC 197HIGH_LIMITED-INITIALIZATION_ACKNOWLEDGE-GOODC 198CONSTANT-INITIALIZATION_ACKNOWLEDGE-GOODC 199NOT_LIMITED-INITIALIZATION_REQUEST-GOODC 200LOW_LIMITED-INITIALIZATION_REQUEST-GOODC 201HIGH_LIMITED-INITIALIZATION_REQUEST-GOODC 202CONSTANT-INITIALIZATION_REQUEST-GOODC 203NOT_LIMITED-NOT_INVITED-GOODC 204LOW_LIMITED-NOT_INVITED-GOODC 205HIGH_LIMITED-NOT_INVITED-GOODC 206CONSTANT-NOT_INVITED-GOODC 207NOT_LIMITED-NOT_SELECTED-GOODC 208LOW_LIMITED-NOT_SELECTED-GOODC 209HIGH_LIMITED-NOT_SELECTED-GOODC 210CONSTANT-NOT_SELECTED-GOODC 211NOT_LIMITED-LOCAL_OVERRIDE-GOODC 216LOW_LIMITED-LOCAL_OVERRIDE-GOODC 217HIGH_LIMITED-LOCAL_OVERRIDE-GOODC 218CONSTANT-LOCAL_OVERRIDE-GOODC 219NOT_LIMITED-FAULT_STATE_ACTIVE-GOODC 220LOW_LIMITED-FAULT_STATE_ACTIVE-GOODC 221HIGH_LIMITED-FAULT_STATE_ACTIVE-GOODC 222CONSTANT-FAULT_STATE_ACTIVE-GOODC 223NOT_LIMITED-INITIATE_FAULT_STATE-GOODC 224LOW_LIMITED-INITIATE_FAULT_STATE-GOODC 225HIGH_LIMITED-INITIATE_FAULT_STATE-GOODC 226CONSTANT-INITIATE_FAULT_STATE-GOODC 227

234 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 235: Mark* VIe Controller

Status Split (STATUS_SPLIT)Block Category: System

The Status Split (STATUS_SPLIT) block is used to split the value and status for an input with interface type (value withstatus). The value at IN is transferred to VALUE and the status of IN is transferred to STATUS.

If IN is value only then STATUS will be NOT_LIMITED-GOODNC –[128]

The status region is indicated by the outputs BAD, POOR, GOOD.

If STATUS < 32, then BAD = True

If 63 < STATUS < 92, then POOR = True

If 127 < STATUS < 156 or if 191 < STATUS < 228, then GOOD = True

Note This block is a variant block that supports any one of the following block data types: Integer, Double Integer, Real,Long Real, Unsigned Integer, Unsigned Double Integer. The data type of the VALUE pin must match the selected data type ofthe block. Status functionality is always enabled for this block. Refer to the section Change Data Type of Variant Block.

STATUS_SPLIT Block

This block propagates status. Refer to the section Status Monitoring (STATUS_MONITORING).

If IN is value only, the Status output is NOT_LIMITED_GOODNC[128].

Input

Name Data Type Description DefaultIN ANY† Input value 0† Value with status

Outputs

Name Data Type Description DefaultVALUE ANY Output value N/ASTATUS UINT Output status N/AGOOD BOOL Status in GOOD region N/ABAD BOOL Status in BAD region N/APOOR BOOL Status in UNCERTAIN region N/A

Instruction Guide GEI-100682AC 235For public disclosure

Page 236: Mark* VIe Controller

Steer (STEER)Block Category: Selection

The Steer (STEER) block is an expandable block up to 32 inputs that moves the input, IN, to one of the 32 outputs, OUTn, orto the cascade pin, CASC. Working in ascending order from SEL1 to SELn, the first True value encountered causes the inputto be moved to the corresponding output. All other outputs are set to zero or False for Booleans. If none of the selection pinsare True then IN is moved to the cascade output, CASC.

Example: If SEL2 is True, then input IN is moved to output OUT2.

If any of the selection pins, SEL, or the clearance pin, CLR, are True, the ACT pin is set to True.

If CLR is True, then all of the outputs and the cascade pin are set to zero. By tying ACT pin to CLR pin of another STEERblock, multiple STEER blocks may be cascaded with the highest priority selections placed on the first blocks in the string.

Note This is a variant block that supports any one the following block data types: Boolean, Integer, Double Integer, Real,Long Real, Unsigned Integer, Unsigned Double Integer. The default data type is Real. Refer to the section Change Data Typeof Variant Block.

STEER Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Inputs

Name Data type DescriptionENABLE BOOL Block enable (default is True)

CLR BOOL If True, all outputs and CASC are cleared (default is False)IN ANY† Input variableSEL1 BOOL First selection input↓ ↓ ↓SELn BOOL N'th selection input† Value with Status (Value only for Boolean block type), if status option is enabled.

236 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 237: Mark* VIe Controller

Outputs

Name Data Type DescriptionACT BOOL Block is active; a selection has been made by the block or CLR is TrueCASC ANY† Default selectionOUT1 ANY† First output variable↓ ↓ ↓OUTn ANY† N'th output variable† Value with Status (Value only for Boolean block type), if status option is enabled.

Subtract (SUB)Block Category: Math

The Subtract (SUB) block performs an algebraic subtraction: OUT = IN1 – IN2.

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

SUB Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Inputs

Name Data Type DescriptionIN1 ANY_NUM† Input 1IN2 ANY_NUM† Input 2† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY_NUM† Result of the substraction† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 237For public disclosure

Page 238: Mark* VIe Controller

Switch (SWITCH)Block Category: Selection

The Switch (SWITCH) block is used to switch the output between two inputs, F and T, with a rate limiter. When SEL is True,the output tracks input T, and if SEL is False, the output tracks input F. The output is rate limited when the selection SELremains constant and T or F change, as well as when SEL changes to select the other input. The output equals the selectedinput if the rate of change of the selected input does not exceed A_RATE or D_RATE. The rate of change of OUT is limitedwhen the selected input exceeds A_RATE or D_RATE. The rate limits do not apply to Booleans. When A_RATE and/or D_RATE equal 0, the output is set equal to the selected input.

Note This is a variant block that supports any one the following block data types: Boolean, Integer, Double Integer, Real,Long Real, Unsigned Integer, Unsigned Double Integer. The default data type is Real. Refer to the section Change Data Typeof Variant Block.

SWITCH Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Inputs

Name Data Type DescriptionF ANY† Default is 0T ANY† Input variable (default is 0)SEL BOOL Selection input (default is 0)A_RATE REAL Ascending transfer rate (engineering_units/sec) (default is 0)D_RATE REAL Descending transfer rate (engineering_units/sec) (default is 0)† Value with status, if status option is enabled.

Output

Name Data Type DescriptionOUT ANY† Selected value† Value with status, if status option is enabled.

238 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 239: Mark* VIe Controller

System Outputs (SYS_OUTPUTS)Block Category: System

The System Outputs (SYS_OUTPUTS) block provides a command interface between the application code and the I/Osubsystem (that is, I/O packs). The command input Booleans are synchronously transmitted to every I/O pack. The commandsare 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 framesand then reset.

SYS_OUTPUTS Block

SYS_OUTPUTS Block Expanded

Inputs

Name Data Type Description

MRESET BOOLApplication Reset: Directs all I/O packs to reset any latchedconditions resulting from previous trips.

RSTSUIC BOOLReset Suicide: Directs all I/O packs to unsuicide any closed loopregulators. Suiciding a regulator forces it into a safe state. Closedloop operation may not be re-started without lifting the suicide.

RSTDIAG BOOLReset Diagnostics: Directs all I/O packs and the controller to clearfrom the queue all diagnostics in the normal state.

RSTSYS BOOLReset System Limits: Directs all I/O packs to clear all latched systemlimit logicals.

Instruction Guide GEI-100682AC 239For public disclosure

Page 240: Mark* VIe Controller

Task Scan (SCAN)Block Category: System

The Task Scan (SCAN) block returns the most recent task scan period, and the scheduled scan period. Both the outputs are inseconds. The TSK_TIM value may not be always equal to SCAN_RT, if higher priority tasks preempt this task.

Note The TSK_TIM and the SCAN_RT pins both hold the same value (scheduled task scan time) in the Virtual Controller.The actual task scan time is not measured.

SCAN Block

Outputs

Name Data Type DescriptionTSK_TIM REAL Actual task scan timeSCAN_RT REAL Scheduled task scan time

240 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 241: Mark* VIe Controller

Temperature Status (TEMP_STATUS)Block Category: System

The Temperature Status (TEMP_STATUS) block is a temperature-sensing block for the Mark VIe controllers. Alltemperatures are in degrees C. The outputs from this block are dependent on controller platform. TEMP_STATUS is notsupported 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

Instruction Guide GEI-100682AC 241For public disclosure

Page 242: Mark* VIe Controller

TEMP_STATUS Inputs

Input Pin Data Type Platform Functionality

IDUnsigned ShortInteger

All

ID of the controller being monitored/controlled; 1 for R, 2 for S, and 3 for Tcontroller. 0 for Local means the block monitors/controls the controllerexecuting the block (backward compatibility).

OTPROT BOOL

UCPA, UCSA, UCSB, andUCSC

Not applicable

UCCA and UCCCWhen True, forces the controller to reboot into a low power failure mode(in which the application will not run) when a temperature alarm conditionis detected.

THLD REAL

UCPA, UCSA, UCSB, andUCSC

Not applicable

UCCA and UCCC Setpoint for declaring the alarm. Ignored unless USR_ENA is True.

HYST REAL

UCPA, UCSA, UCSB, andUCSC

Not applicable

UCCA and UCCCHysteresis value to be considered for clearing the alarm. Ignored unlessUSR_ENA is True.

USR_ENA BOOL

UCPA, UCSA, UCSB, andUCSC

Not applicable

UCCA and UCCC Used to enable user supplied temperature limits

TEMP_STATUS Outputs

Output Pin Data Type Platform Functionality

ALARM BOOL

UCPA, UCSA, UCSB, andUCSC

Remains False, is not applicable

UCCA and UCCC

Is False if CPU_TEMP is within limits

If USR_ENA is False, then ALARM is True if CPU_TEMP is greater thanor equal to DEF_THLD.If USR_ENA is True, then ALARM is True if CPU_TEMP is greater than orequal to THLD.

If ALARM is True and if OTPROT is True, then the controller reboots to alower power state

CPU_TEMP REAL

UCPA, UCSA, UCSB, andUCSC

Not Applicable, has a value of 0

UCCA and UCCC Provides the CPU temperature in °C

BRD_TEMP REAL

UCSC Not Applicable, has a value of 0

UCPA, UCSA, and UCSB Processor board hot spot temperature in °C

UCCA and UCCC Motherboard temperature in °C

TEMP1 REAL

UCSC Temperature value of sensor on Carrier Board in °C

UCPA Not Applicable, has a value of 0

UCSA, and UCSB Processor board ambient temperature in °C

UCCA and UCCC Temperature value of sensor #1 near resistor on EPMC in °C

242 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 243: Mark* VIe Controller

TEMP_STATUS Outputs (continued)

Output Pin Data Type Platform Functionality

TEMP2 REAL

UCPA, UCSA, UCSB, andUCSC

Not Applicable, has a value of 0

UCCA and UCCC Temperature value of sensor #2 at bottom of EPMC in °C

DELTA REAL

UCPA, UCSA, UCSB, andUCSC

Not Applicable

UCCA and UCCC TEMP1 - TEMP2 in °C

DEF_THLD REAL

UCPA, UCSA, UCSB, andUCSC

Not used

UCCA and UCCC90°C (194 °F) is the default value of CPU temperature limit for alarm, °C.Used when USR_ENA is False.

DEF_HYST REAL

UCPA, UCSA, UCSB, andUCSC

Not used

UCCA and UCCC5°C (9 °F) is the default value of CPU temperature hysteresis. Used todetermine alarm reset value when USR_ENA is False.

Notes on Legacy Controller Functionality

With UCCA and UCCC controllers, the CPU_TEMP pin outputs the CPU core temperature. The BRD_TEMP pin outputs themotherboard temperature. two temperature sensors are embedded in the processor card as well, TEMP1 and TEMP2. Onesensor is placed near a resistor so that it is constantly warmed above the ambient temperature. The other is placed away fromany heat-producing elements. When the fan is on, the airflow provides cooling around both sensors and a relatively constanttemperature difference, DELTA, measures the difference between the two. When the fan is off the warmed sensor experiencesa much larger rise in temperature than does the ambient sensor. All three variables, TEMP1, TEMP2, and DELTA are outputfor diagnostic purposes and backward compatibility, but they no longer contribute to the alarm logic.

With UCCA and UCCC controllers, the TEMP_STATUS block uses a default temperature, DEF_THLD, to determine anupper temperature alarm limit. This limit can be replaced with a user configurable limit, THLD, if the user enables Booleaninput USR_ENA. Once in ALARM, the Boolean condition will not reset until the CPU temperature falls below the uppertemperature alarm limit less a hysteresis value. This hysteresis value defaults to a supplied value DEF_HYST, unless theBoolean input USR_ENA overrides this value with the input HYST. Default temperature limits are determined by GE for theparticular platform. Current EPMC values are: DEF_THLD = 90, DEF_HYST = 5°C. The user is given another Booleaninput pin, OTPROT, to control action when an alarm condition is detected. If an alarm condition latches when OTPROT isTrue, the controller automatically reboots into a low power failure mode. The application will not run in this mode, but toolconnectivity is maintained. After a subsequent reboot, the application will run again.

Instruction Guide GEI-100682AC 243For public disclosure

Page 244: Mark* VIe Controller

Time Monitor (TIME_MON)Block Category: System

The Time Monitor (TIME_MON) block uses Coordinated Universal Time (UTC) and outputs local time and a FLAG whichpulses to True for one second when the local time reaches the setpoint time. UTC is elapsed time in seconds in Greenwich,England, since January 1, 1970, 00:00:00. T_DIF, in hours, is equal to the standard local time plus or minus UTC Timedepending on location; standard local time is the local time without the Daylight Savings Time adjustment, if DaylightSavings Time is being observed. As an example, if UTC time is 16:00:00 and standard local time is 12:30:00, then T_DIF is –3.5 or if standard local time is 17:00:00, T_DIF is 1. If Daylight Savings Time is to be observed, DLST should be set to True.

The Setpoint Function, SP_Fn, determines the FLAG occurrence. For example, if the function, SP_Fn, is selected for amonthly-basis occurrence, the block will use the day setpoint, DAY_SP, the hour setpoint, HR_SP, the minute setpoint, MIN_SP and the second setpoint, SEC_SP, and will ignore the year setpoint, YR_SP, and the month setpoint, MON_SP. When thelocal time, which is the standard local time, adjusted for Daylight Savings Time, if applicable, matches these input setpoints,the output FLAG will pulse to True for one second. A One_Time occurrence requires all six setpoints. All setpoints are localtime.

TIME_MON Block

TIME_MON Block Expanded

244 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 245: Mark* VIe Controller

Input Setpoint Function (SP_F) Enumerations

Function EnumerationOne time occurrence One_TimeYearly-basis occurrence YearlyMonthly-basis occurrence Daily-basis occurrence MonthlyDaily-basis occurrence DailyHourly-basis occurrence HourlyMinute-basis occurrence Minute

Inputs

Name Data Type Description Interface typeDLST BOOL Observe Daylight Savings Time Value onlyT_DIF INT Local/UTC time difference in hours Value onlySP_Fn ENUM(UNIT) Enumerated function to select FLAG occurrence Value onlyYR_SP UINT Year setpoint Value onlyMON_SP UINT Month setpoint Value only

DAY_SP UINT Day setpoint Value only

HR_SP UINTHour setpoint, based on 24 hour clock (9:00 pm= 21)

Value only

MIN_SP UINT Minute setpoint Value onlySEC_SP UINT Second setpoint Value onlyDST_B_MON ENUM(UNIT) Daylight Savings Time Begin Month Value onlyDST_B_DAY ENUM(UNIT) Daylight Savings Time Begin Day Value onlyDST_B_HR ENUM(UNIT) Daylight Savings Time Begin Hour Value onlyDST_B_MIN ENUM(UNIT) Daylight Savings Time Begin Minute Value onlyDST_E_MON ENUM(UNIT) Daylight Savings Time End Month Value onlyDST_E_DAY ENUM(UNIT) Daylight Savings Time End Day Value onlyDST_E_HR ENUM(UNIT) Daylight Savings Time End Hour Value onlyDST_E_MIN ENUM(UNIT) Daylight Savings Time End Minute Value only

Instruction Guide GEI-100682AC 245For public disclosure

Page 246: Mark* VIe Controller

Outputs

Name Data Type Description Interface typeFLAG BOOL Indicates that the set time has been reached Value onlyYR UINT Year in Local Time Value onlyMON UINT Month in Local Time Value onlyDAY UINT Day in Local Time Value onlyHR UINT Hour in Local Time Value onlyMIN UINT Minute in Local Time Value onlySEC UINT Second in Local Time Value onlyUTCTIME UINT UTC seconds Value only

LOCKED BOOLTrue if time is synchronized with an NTP TimeMaster

Value only

246 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 247: Mark* VIe Controller

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 thesection Legacy Category Blocks.

The Timer (TIMER) block accumulates incremental time into CURTIME while RUN is True. When CURTIME is equal toMAXTIME, AT_TIME transitions to True. If RUN is False then timing is suspended but the value in CURTIME remains. IfRESET is True then CURTIME is set to zero and counting is suspended. The AUTO_RS flag can reset the timer after itreaches MAXTIME. In this mode, AT_TIME will be True for one scan and the CURTIME will be set to the residual count sothat 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 inthe ToolboxST application. For accurate performance of the block, set MAX_TIME as a multiple of the frame performanceperiod.

The maximum value of CURTIME in the TIMER block is 4294967295ms (0xFFFFFFFF).

TIMER Block

Note Annunciation of TMR Controller Heartbeat Status Not OK is a logic example using the TIMER block.

TIMER Example with MOVE

Instruction Guide GEI-100682AC 247For public disclosure

Page 248: Mark* VIe Controller

Inputs

Name Data Type DescriptionMAXTIME UDINT Maximum time value in millisecondsRESET BOOL Zeros the timerAUTO_RS BOOL Automatically zeros the timer when AT_TIME is set. Maintains residual count.RUN BOOL Enables the timer

Outputs

Name Data Type DescriptionAT_TIME BOOL Indicates the timer has reached the maximum time valueCURTIME UDINT Current time value in milliseconds

StateName Data Type Description

LAST_CURTIME UDINTThis is the last current time value in milliseconds, a hidden pin. It can be viewedor changed by right-clicking the block and selecting Edit Block Pins. Writing tothis variable is not recommended, but can be used to preset block states.

248 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 249: Mark* VIe Controller

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. WhenCURTIME is equal to MAXTIME, AT_TIME transitions to True. If RUN is False then timing is suspended but the value inCURTIME remains. If RESET is True then CURTIME is set to zero and counting is suspended. The AUTO_RS flag can resetthe timer after it reaches MAXTIME. In this mode, AT_TIME will be True for one scan and the CURTIME will be set to theresidual 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 inthe ToolboxST application. For accurate performance of the block, set MAX_TIME as a multiple of the frame performanceperiod.

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-100682AC 249For public disclosure

Page 250: Mark* VIe Controller

Inputs

Name Data Type DescriptionMAXTIME UDINT Maximum time value in millisecondsRESET BOOL Zeros the timer

AUTO_RS BOOLAutomatically zeros the timer when AT_TIME is set. Maintains the residualcount.

RUN BOOL Enables the timer

Outputs

Name Data Type Description

AT_TIME BOOL

AT_TIME = True indicates that the timer has reached the maximum timevalue. In Timer Version 2, AT_TIME can be used as a signal for the RESETpin as was the case in many existing Mark VI controller applications. Thislogic results in a loss of residual time, whereas the use of AUTO_RS resultsin no loss of residual time.

CURTIME UDINT Current time value in milliseconds

StateName Data Type Description

LAST_CURTIME UDINTThis is the last current time value in milliseconds, a hidden pin. It can be viewedor changed by right-clicking the block and selecting Edit Block Pins. Writing tothis variable is not recommended, but can be used to preset block states.

250 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 251: Mark* VIe Controller

Totalizer (TOTALIZER)Block Category: Timers and Counters

Note Only one instance of this block is allowed per controller in the application code.

The Totalizer (TOTALIZER) block is a rubber block that can handle up to 64 sets of pins. The TOTALIZER block uses aspecial area of the NVRAM to maintain critical application code counter values. The Totalizer block has 64 totalizers(counters) that accumulate rising edges of the INCx pin in the TOTALx variable. When a rising edge of INCx is detected 1 isadded to the value stored in TOTALx. When TOTALx reaches it's maximum value (2^31-1) then on the next rising edge ofINCx, ROLLx transitions to True and TOTALx is set to zero until the next rising edge of INCx. TOTALx is never negative.Use the Set totalizer values menu option from the ToolboxST application to set totalizer values.

TOTALIZER Block

Instruction Guide GEI-100682AC 251For public disclosure

Page 252: Mark* VIe Controller

Inputs

Name Data Type DescriptionINC1 BOOL The specified totalizer increments on the rising edge of this pin↓ ↓ ↓

INC64 BOOL The specified totalizer increments on the rising edge of this pin

Outputs

Name Data Type DescriptionTOTAL1 UDINT The output value of the totalizer for use by other application code

ROLL1 BOOLTrue if the totalizer value has overflowed. The pin stays True until INCxincrements again.

↓ ↓ ↓TOTAL64 UDINT The output value of the totalizer for use by other application code

ROLL64 BOOLTrue if the totalizer value has overflowed. The pin stays True until INCxincrements again.

252 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 253: Mark* VIe Controller

Transfer Function (TRNFUN)Block Category: Controls (Basic)

The Transfer Function (TRNFUN) block provides a digital implementation of the following transfer function:

This equation can approximate a phase lead, phase lag, simple lag, phase lead/lag, or a bridged-T (Notch) compensatordepending upon the choice of the appropriate coefficients. The block can also be used to create Butterworth, Chebyshev, andsuch, second order filters, and can be cascaded to form higher order filters.

The nature of the transfer function may be altered online by changing the values of the equation coefficients. The blockcalculates whether the new coefficients result in an unstable function (one or more poles lie outside the unit circle). If found tobe unstable the block does not switch to the new function but maintains the old coefficients. The switching lockout may bedefeated by using the DLOCK pin but CI_ERR will still be set True if the stability check fails.

The stability check is intended to protect the user against transfer functions that are grossly unstable. It cannot replace soundengineering judgement. Limitations in the stability check may cause erroneous results when the coefficients specify amarginally stable transfer function. There is no guarantee about the stability of the loop in which it is placed.

The evaluation of coefficients normally occurs in the background and the coherent set is transferred to the foreground.Therefore the change from one set of coefficients to another may require over 500 milliseconds to occur. If ENA_DYN is setto True this calculation is performed in the foreground, but the block incurs an performance time penalty as a result. Ifforeground coefficient evaluation is chosen the block is preset with the unity gain function at initialization time. The firstevaluation occurs at the first foreground performance and if found to be unstable, the unity gain function remains in effect.

The TRNFUN (REAL) form should be used to implement second order and simpler functions. The TRNFUN (long) formshould be used when cascading blocks to create higher order forms because it maintains the resolution of a double floatingpoint number between the blocks. A data type conversion block, such as MOVE (REAL) is required to convert the output ofthe final block back to a single precision floating point number for use with most other blocks. The transformation from thecontinuous domain (s) into the discrete domain (z) is accomplished by bilinear transformation. This method produces accurateresults for frequencies of interest that are less than 0.3/T (w < 0.3/T). For tasks executing at 32 milliseconds this is about 10radians, or 1.5 Hz. For tasks executing at 2 milliseconds this is about 150 radians, or 24 Hz.

Note This is a variant block that supports any one the following block data types: REAL or Long Real. The default data typeis REAL. Refer to the section Change Data Type of Variant Block.

TRNFUN Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Block status modifications: If B0, B1, B2 = 0, then the output status will be NOT_LIMITED-CONFIGURATION_ERROR-BAD[4].

Instruction Guide GEI-100682AC 253For public disclosure

Page 254: Mark* VIe Controller

Inputs

Name Data Type DescriptionENA_FUN BOOL If True the function is enabled, else the input value is moved to the output

ENA_DYN BOOLIf True the coefficients are re-evaluated in the foreground each sweep.Otherwise this calculation is performed in the background.

DLOCK BOOL

If True an error found by the stability checker does NOT prevent the blockfrom accepting the new coefficients. Normally coefficients that result inunstable transfer functions are rejected. Note that if this pin is set AFTERdiscovering that a specified function is deemed unstable, the coefficientsmust be altered again to cause the block to recalculate and then accept thenew values.

IN REAL/LREAL† Input valueA2 REAL Second order numerator coefficientA1 REAL First order numerator coefficientA0 REAL Zero order numerator coefficientB2 REAL Second order denominator coefficientB1 REAL First order denominator coefficientB0 REAL Zero order denominator coefficient

PRESET BOOLIf True, and ENA_FUN is True calculate the state variables so as to drivethe output to the input value.

† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUT REAL/REAL† Output valueCI_ERR BOOL If True, indicates that the specified transfer function is unstable† Value with status, if status option is enabled.

254 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 255: Mark* VIe Controller

Transport Delay (TRAN_DLY)Block Category: Controls (Basic)

Note This block is not recommended for use in any new controller applications (ControlST V05.02 or later). Refer to thesection Legacy Category Blocks.

The Transport Delay (TRAN_DLY) block collects input samples each scan and stores them in an array. OLD is the secondoldest value stored in the array and OUT is the Nth value stored prior to the inclusion of the current input value. The delaytime for OUT is equal to the scan rate multiplied by the least of N_DELAY, the array size of LIST[ ], or the array size ofSLIST[ ]. The delay time for OLD is equal to the scan rate times the number of elements of LIST[ ]. The array size of thevariable connected to the LIST[ ] pin should be greater than or equal to the value of N_DELAY. The SLIST pin is an array pinsimilar to the LIST pin, but is only present on the status version of the block.

TRAN_DLY Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Inputs

Name Data Type DescriptionIN REAL† Next value to be entered into the listN_DELAY Unsigned double integer Size of the array that defines the LIST variable† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOLD REAL† Second oldest value stored in LISTarrayOUT REAL† Newest or Nth stored value in the list as specified by N_DELAY† Value with status, if status option is enabled.

StateName Data Type DescriptionLIST[ ] REAL(array) Storage array for the delay listSLIST[ ] UINT(array) Storage array for the delay list status

Instruction Guide GEI-100682AC 255For public disclosure

Page 256: Mark* VIe Controller

Transport Delay Version 2 (TRAN_DLY_V2)Block Category: Controls (Basic)

The Transport Delay Version 2 (TRAN_DLY_V2) block collects input samples each scan and stores them in an array. OLD isthe oldest value stored in the array and OUT is the Nth value stored prior to the inclusion of the current input value. The delaytime for OUT is equal to the scan rate times the least of N_DELAYor the array size of LIST[ ]. The delay time for OLD isequal to the scan rate times the number of elements of LIST[ ]. The array size of the variable connected to the LIST[ ] pinshould be greater than or equal to the value of N_DELAY. The SLIST pin is an array pin similar to the LIST pin, but is onlypresent on the status version of the block.

TRAN_DLY_V2 Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Inputs

Name Data Type DescriptionIN REAL† Next value to be entered into the listN_DELAY Unsigned double integer Size of the array that defines the LIST variable† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOLD REAL† Oldest value stored in LISTarrayOUT REAL† Newest or Nth stored value in the list as specified by N_DELAY† Value with status, if status option is enabled.

StateName Data Type DescriptionLIST[ ] REAL(array) Storage array for the delay list

256 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 257: Mark* VIe Controller

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 timeperiod of the delay depends upon the Frame period with which the block is being performed.

Note This is a variant block that supports any one the following block data types: Boolean, Integer, Double Integer, Real,Long Real, Unsigned Integer, Unsigned Double Integer. The default data type is Real. Refer to the section Change Data Typeof Variant Block.

UNIT_DELAY Block

This block propagates quality status if the status operations are enabled. Refer to the section Status Monitoring (STATUS_MONITORING).

Inputs

Name Data Type DescriptionINPUT ANY† Input value to be delayed† Value with status, if status option is enabled.

Outputs

Name Data Type DescriptionOUTPUT ANY† Delayed valueSTATE ANY† Current value of the input (for feedback)† Value with status, if status option is enabled.

Instruction Guide GEI-100682AC 257For public disclosure

Page 258: Mark* VIe Controller

User Scheduled Block Heartbeat (USB_HB)Block Category: System

This block outputs the current value of the USB heartbeat counter. The block has zero inputs and one output.

Note The task heartbeat is anti-voted, so it can be used to detect a stalled task in a particular controller.

The USB_HB block outputs the free-running counter value of the task in which it is scheduled. This indicates that the task isrunning as expected, which can be made available outside the task by attaching a global variable. The information is alsoavailable as a local task variable _Heartbeat, which is a convenient indication from within the ToolboxST application.

USB_HB Block

Note The USB heartbeat counter should not be connected to an I/O module output. This generates an output disagreementdiagnostic alarm. The DEVICE_HB block should be used instead to connect to an I/O module output.

Output

Name Data Type DescriptionOut UINT Controller heartbeat variable

258 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 259: Mark* VIe Controller

UTC Time (UTC_TIME)Block Category: System

The UTC Time (UTC_TIME) block outputs UTC seconds which is a LONG REAL data type. When the LOCKED boolean isTrue, UTCTIME is synchronized with the NTP server. And if the LOCKED is False, then UTCTIME will display the MarkVIe system time.

The output is seconds lapsed since 1 January 1970 00:00:00.

UTC_TIME Block

Outputs

Name Data Type DescriptionUTCTIME LREAL Outputs UTC secondsLOCKED BOOL True if local time is synchronized with an NTP Time Master

Instruction Guide GEI-100682AC 259For public disclosure

Page 260: Mark* VIe Controller

Variable Alarm Status (VAR_ALARM_STATUS)Block Category: System

Note Refer to theMark VIe Control Volume III Diagnostics and Troubleshooting Manual (GEH-6721_Vol_III), the sectionAlarm States for more information on the alarm subsystem, alarm variables, and the alarm queue.

The Variable Alarm Status (VAR_ALARM_STATUS) block provides access to alarm status information for the attachedvariable. This block provides two Boolean statuses of alarm states: ACK and IN_ALM_Q. The ACK status indicates whetherthe given variable (if it is an alarm variable) has been acknowledged. The IN_ALM_Q status indicates whether the inputvariable is currently in the Alarm subsystem Alarm Queue.

Note If a variable that is not an alarm is attached to this block, the output statuses will return False.

VAR_ALARM_STATUS Block

Inputs

Name Data Type DescriptionVAR ANY Variable for which alarm statuses are to be examined

Outputs

Name Data Type DescriptionACK BOOL Alarm Acknowledge status for the input variable VARIN_ALM_Q BOOL In-Alarm Queue status for the input variable VAR

260 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 261: Mark* VIe Controller

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 eachconfigured input, this block provides two sets of corresponding output pins that provide both the health status (HEALTHnn,UNCERTnn, and BADnn) and link status (LINKOKnn, LINK_UNCERTnn, and LINK_BADnn) of the corresponding input.In most applications that monitor variable health, the application should monitor the BADnn signal to determine whether agiven variable is healthy or not.

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)

When a variable VARnn is believed to be working properly, the corresponding output pins HEALTHnn and LINKOKnn areboth set to True and UNCERTnn, BADnn, LINK_UNCERTnn, and LINK_BADnn are set to False. This happens when alltests defined for its source are completed successfully. This includes both variable signal connectivity, as well as anyHealthy/Unhealthy determinations made by the specific I/O pack.

The HEALTHnn output provides an indication of the health of the corresponding variable VARnn. For example, if theEthernet cable is unplugged from a simplex Analog Input I/O pack, this causes a connectivity failure resulting in HEALTHnnbeing set to False to indicate an Unhealthy signal and UNCERTnn to become True for the configured number of base healthdelay periods, after which BADnn becomes True. An I/O pack can set HEALTHnn to False for other conditions, such as if aninput configured as a 4-20 mA Analog Input has its input current out of range. If the I/O pack sets HEALTHnn to False,BADnn becomes True immediately rather than delaying for the configured number of base health delay periods.

Inputs transition from Unhealthy to Healthy on the first frame they are received as Healthy from an I/O module orexternal/UDH/CDH source.

Note For input health information to be viewable in a live data display, for example in Live View, Trender, or the blockwareeditor, the input must be connected to either a VAR_HEALTH or AI block.

If LINKOKnn is True, the controller has successfully received the EGD data packet from the I/O pack or other source. IfLINKOKnn is False, the EGD data packet has not been received and HEALTHnn will always be False. Immediately after notreceiving the EGD data packet, LINKOKnn will become False and LINK_UNCERTnn will become True for the configurednumber of base health delay periods (or 3 periods for external/UDH/CDH inputs), after which time LINK_BADnn willbecome True and LINK_UNCERTnn will become False.

Each VARnn input on the VAR_HEALTH block has separate LINKOKnn, LINK_UNCERTnn, and LINK_BADnn outputpins, even though other inputs may share the same link. The LINKOKnn,, LINK_UNCERTnn, and LINK_BADnn outputsapply 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).

Note Refer to the table Output Pin States for I/O Pack Inputs.

Instruction Guide GEI-100682AC 261For public disclosure

Page 262: Mark* VIe Controller

The HEALTHnn output for each variable provides the instantaneous status of the variable input. A Healthy value on theHEALTHnn output implies a Healthy input pin. All Ethernet communication links have a bit error rate, so occasional loss of asingle EGD packet on an Ethernet network is considered normal and is expected. To prevent the HEALTHnn output from anI/O pack from going False after a single period loss of communication, the base health delay can be configured using theToolboxST application. When an I/O network EGD packet is missed, HEALTHnn will become False and UNCERTnn willbecome True for the configured period determined by the base health delay. If the I/O network EGD packet continues to bemissed, UNCERTnn will remain True until the base health delay has completed, after which time UNCERTnn becomes Falseand BADnn becomes True. All external/UDH/CDH signal inputs operate the same as described above for a base health delayof 3 periods.Refer to the section Output Health Status Details for detailed timing.

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

Output Health Status Details

I/O Pack Inputs

For I/O pack variable sources, Bad status could be caused by a communication failure with the I/O pack or by the I/O pack'sdetermination that the signal is bad based on conditions specific to the I/O pack input (Out of range, and so forth).

The HEALTHnn output status becomes True during the first period in which the controller receives a healthy indication fromthe source I/O pack. When the I/O pack determines that the signal is bad, the VAR_HEALTH output status goes Bad duringthe first period. For communication failure, VAR_HEALTH outputs act as follows:

• For an I/O network with simplex redundancy, HEALTHnn goes False after the loss of the single input data packet.• For an I/O network with dual redundancy, HEALTHnn goes False after the loss of both input data packets.• For an I/O network with TMR redundancy, HEALTHnn goes False after the loss of the second input data packet.

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

When an I/O network input on an I/O pack is no longer received, the input is set to Uncertain and the value holds the previousHealthy input state value for the configured base health delay number of periods. After the base health delay, the value is setto the default value and the status is set to Bad.

Responses to Loss of Input (Base Health Delay = 3)

Loss of InputFRAME 1 2 3 4 5Health Uncertain BadValues Hold last Default

262 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 263: Mark* VIe Controller

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

When both I/O network inputs on an I/O pack are no longer received, the input is set to Uncertain and the value holds theprevious Healthy input state for the configured base health delay number of periods. After the base health delay, the inputvalue is set to the default value and the status is set to Unhealthy. If only one I/O network input goes Bad, the input valueremains Healthy.

Responses to Loss of Input (Base Health Delay = 3)

Loss of 1st Input Loss of 2nd InputFRAME 1 2 3 4 5 FRAME 1 2 3 4 5Health Healthy Health Uncertain BadValues 2nd input Values 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 I/O network inputs. Thus, if more than one networkinput goes Unhealthy, the input value is set to the default value and the status is voted to Bad. If only one network input goesUnhealthy, the input value remains Healthy. The base health delay does not apply to TMR I/O pack inputs.

Responses to Loss of Input

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

Note If the VAR_HEALTH block has an anti-voted variable connected as an input, the corresponding VAR_HEALTHoutput behaves the same as if the system has simplex redundancy, regardless of the actual redundancy of the system.

Instruction Guide GEI-100682AC 263For public disclosure

Page 264: Mark* VIe Controller

External Network Inputs

For external network/EGD page sources, including variables received over the UDH or Control Data Highway (CDH)using EGD pages, HEALTHnn goes False and UNCERTnn becomes True immediately after missing an input packet. Afterthree periods of missing packets UNCERTnn becomes False and BADnn becomes True. Since EGD pages can be configuredto run at different rates, the health of the variable is verified once each period as configured for that EGD exchange. Each timean EGD exchange is received, the associated input variables in that exchange are set to Healthy status and a timeout timer forthat exchange is set to four. This timeout timer is then decremented each time the configured time interval occurs. If thetimeout timer reaches zero, all input variables in that exchange are set with an Unhealthy status and the counter remains atzero until the EGD exchange is successfully received again.

Note UDH and CDH health is not affected by the base health delay configuration. It always becomes BAD on the fourthperiod.

In a redundant controller set, inputs from external UDH/CDH sources are not voted and are received independently by eachcontroller. However, state variables of blocks that use these inputs will be voted. A redundant controller that has lost UDHconnectivity can be provided with the corresponding Designated Controller input signal values and status by the FaultTolerant EGD feature.

External Network/EGD Page Response to Loss of Input

When an EGD page is no longer received, the input is set to Uncertain and the previous Healthy input state is held. After threeperiods of missed packets, the input is set to Unhealthy.

Responses to Loss of Input

Loss of InputPERIOD 1 2 3 4 5Health Uncertain BadValues Hold last Hold last

264 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 265: Mark* VIe Controller

Output Pin States for I/O Pack InputsI/O Pack, I/ONetworkRedundancy

Output PinsDescription

HEALTHnn UNCERTnn BADnn LINK-OKnn

LINK_UNCERTnn

LINK_BADnn

Simplex I/Opack,Simplex IONet

0 0 1 0 0 1

Input is Bad and the IONetEGD Exchange has notbeen received after theconfigured health delayperiod

0 0 1 0 1 0

Input was set to Bad by theI/O pack and the IONetEGD Exchange has notbeen received within theconfigured base healthdelay period

0 0 1 1 0 0

Input is set to Bad by theI/O pack and the IONetEGD Exchange is beingreceived

0 1 0 0 1 0

Input has not beenreceived within theconfigured base healthdelay period and the IONetEGD Exchange has notbeen received within theconfigured base healthdelay period

1 0 0 1 0 0Input is Healthy and theIONet EGD exchange isbeing received

Instruction Guide GEI-100682AC 265For public disclosure

Page 266: Mark* VIe Controller

Output Pin States for I/O Pack Inputs (continued)I/O Pack, I/ONetworkRedundancy

Output PinsDescription

HEALTHnn UNCERTnn BADnn LINK-OKnn

LINK_UNCERTnn

LINK_BADnn

Simplex I/Opack, DualIONet

0 0 1 0 0 1

Input is Bad and none ofthe IONet EGD Exchangeshave been received afterthe configured health delayperiod

0 0 1 0 1 0

Input was set to Bad by theI/O pack and the IONetEGD Exchange has notbeen received within theconfigured base healthdelay period

0 0 1 1 0 0

Input is set to Bad by theI/O pack and at least oneIONet EGD Exchange isbeing received

0 1 0 0 1 0

Input has not beenreceived within theconfigured health delayperiod and none of theIONet EGD Exchangeshave been received withinthe configured health delayperiod

1 0 0 1 0 0Input is Healthy and atleast one IONet EGDexchange is being received

Simplex I/Opack, TMRIONet

N/A N/A N/A N/A N/A N/A Configuration not allowed

Dual I/O pack,Simplex IONet N/A N/A N/A N/A N/A N/A Configuration not allowed

266 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 267: Mark* VIe Controller

Output Pin States for I/O Pack Inputs (continued)I/O Pack, I/ONetworkRedundancy

Output PinsDescription

HEALTHnn UNCERTnn BADnn LINK-OKnn

LINK_UNCERTnn

LINK_BADnn

Dual I/O pack,Dual IONet

0 0 1 0 0 1

Input is Bad and none ofthe IONet EGD Exchangeshave been received afterthe configured health delayperiod

0 0 1 0 1 0

Input was set Bad by theI/O pack and the IONetEGD Exchange has notbeen received within theconfigured base healthdelay period

0 0 1 1 0 0

Input is set to Bad by theI/O pack and at least oneIONet EGD Exchange isbeing received

0 1 0 0 1 0

Input has not beenreceived within theconfigured health delayperiod and none of theIONet EGD Exchangeshave been received withinthe configured health delayperiod

1 0 0 1 0 0Input is Healthy and atleast one IONet EGDexchange is being received

Dual I/O Pack,TMR IONet

N/A N/A N/A N/A N/A N/A Configuration not allowed

TMR I/O pack,Simplex IONet N/A N/A N/A N/A N/A N/A Configuration not allowed

Instruction Guide GEI-100682AC 267For public disclosure

Page 268: Mark* VIe Controller

Output Pin States for I/O Pack Inputs (continued)

I/O Pack, I/ONetworkRedundancy

Output Pins

DescriptionHEALTHnn UN-

CERTnn BADnn LINK-OKnn

LINK_UN-CERTnn

LINK_BADnn

TMR I/O pack,Dual IONet

0 0 1 0 0 1

Input is Bad and eithernone or only one of theIONet EGD Exchanges hasbeen received after theconfigured health delayperiod

0 0 1 0 1 0

Input was set to Bad by theI/O pack and the IONetEGD Exchange has notbeen received within theconfigured base healthdelay period

0 0 1 1 0 0

Input is set to Bad by theI/O pack and at least twoIONet EGD Exchanges arebeing received

0 1 0 0 1 0

Input has not beenreceived within theconfigured health delayperiod and either none oronly one of the IONet EGDExchanges has beenreceived within theconfigured health delayperiod

1 0 0 1 0 0

Input is Healthy and atleast two IONet EGDexchanges are beingreceived

268 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 269: Mark* VIe Controller

Output Pin States for I/O Pack Inputs (continued) (continued)

I/O Pack, I/ONetworkRedundancy

Output Pins

DescriptionHEALTHnn UN-

CERTnn BADnn LINK-OKnn

LINK_UN-CERTnn

LINK_BADnn

TMR I/O pack,TMR IONet

0 0 1 0 0 1

Input is Bad and eithernone or only one of theIONet EGD Exchanges hasbeen received after theconfigured health delayperiod

0 0 1 0 1 0

Input was set to Bad by theI/O pack and the IONetEGD Exchange has notbeen received within theconfigured base healthdelay period

0 0 1 1 0 0

Input is set to Bad by theI/O pack and at least twoIONet EGD Exchanges arebeing received

0 1 0 0 1 0

Input has not beenreceived within theconfigured health delayperiod and either none oronly one of the IONet EGDExchanges has beenreceived within theconfigured health delayperiod

1 0 0 1 0 0

Input is Healthy and atleast two IONet EGDexchanges are beingreceived

Instruction Guide GEI-100682AC 269For public disclosure

Page 270: Mark* VIe Controller

Inputs

Name Data Type DescriptionVAR1 Simple Input variable to know the health status↓ ↓ ↓VAR32 Simple Input variable to know the health status

Outputs

Name Data Type Description

HEALTH1 BOOL Is input 1 Healthy↓ ↓ ↓HEALTH32 BOOL Is input 32 HealthyLINKOK1 BOOL Link OK for EGD variable 1↓ ↓ ↓LINKOK32 BOOL Link OK for EGD variable 32UNCERT1 BOOL Is input 1 Uncertain↓ ↓ ↓UNCERT32 BOOL Is input 32 UncertainBAD1 BOOL Is input 1 bad↓ ↓ ↓BAD32 BOOL Is input 32 badLINK_UNCERT1 BOOL Is EGD link 1 Uncertain↓ ↓ ↓LINK_UNCERT32 BOOL Is EGD link 32 UncertainLINK_BAD1 BOOL Is EGD link 1 bad↓ ↓ ↓LINK_BAD32 BOOL Is EGD link 32 bad

270 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 271: Mark* VIe Controller

Variable Simulation (VARSIM)Block Category: System

When enabled, the Variable Simulation (VARSIM) block writes the input values into the output variables and sets thesimulation flag in the variables quality field. When disabled the block removes the simulation flag from the variables quality.

The block is rubber block that may service up to 32 variables. For any Boolean variables, the block uses the pick-up(PU-DLY) delay pin to specify how long to delay moving a transition from 0 to 1 from an input pin to the output variable. Forany Boolean variables, the block also uses the drop out (DO-DLY) delay pin to specify how long to delay moving a transitionfrom 1 to 0 from an input pin to the output variable.

VARSIM Block

Inputs

Name Data Type DescriptionENABLE BOOL Enable the block to runPU_DLY UINT Pickup Delay - milliseconds to delay a 0 to 1 Boolean transitionDO_DLY UINT Dropout Delay - milliseconds to delay a 1 to 0 Boolean transitionIN1 ANY The unscaled value to be written to the corresponding variable point↓ ↓ ↓IN32 ANY The unscaled value to be written to the corresponding variable point

Outputs

Name Data Type DescriptionOUT1 ANY A variable identifying the variable point to write↓ ↓ ↓

OUT32 ANY A variable identifying the variable point to write

Instruction Guide GEI-100682AC 271For public disclosure

Page 272: Mark* VIe Controller

Logic Examples

Annunciation of Temperature Threshold for Mark VIe I/O PacksThe following sample control logic uses MIN_MAX and COMPARE blocks to annunciate a temperature threshold alarm if anyMark VIe I/O pack is operating at a temperature higher than the specified threshold value. In this example, the IOPackTmprsignal is in degrees F. The I/O packs have an internal pack electronics temperature sensor that maps to an output signal, whichis used in this logic after creating a connected variable.

PAIC Variable Connected variable

Panel.Pack_TerminalBoardLocation_Temperature_Pack Connector

Connected Variable Naming Convention

Note There is a standard diagnostic alarm generated from the I/O pack to annunciate operating temperature is out of range.

This logic uses groups of I/O packs (based on redundancy) that are located within one expansion panel. It finds the maximumtemperature for each group and compares it to the maximum set temperature. If any single I/O pack exceeds this threshold,then the alarm Boolean variable is True.

Note This example process alarm is typically set at a more restrictive range than the I/O pack diagnostic alarm.

This alarm could be used as a warning for when the cabinet is getting too hot. This process alarm (typically set at a morerestrictive range than when the diagnostic alarm from the I/O pack is annunciated) does not indicate any immediate danger tothe I/O pack electronics.

Max of the max temp Compare

to temp threshold

7

8

Max temp for all TMR

4, 5, 6

Max temp for all simplex

3

Simplified Logic Explanation

272 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 273: Mark* VIe Controller

� � ��� ��� �� � �

� � �� � �

The Min_Max blocks are arrangements of I /O packs with simplex packs (SMX) occurring first in order of operation (3), followed by the R , S, and T packs.

Each group of packs is sending the maximum temperature OUT , and these are tied to input pins .

Lastly, the Compare block is set for GE (greater than or equal to ), and it determines if IN 1 (the I/O pack max temp) is greater than the overtemp annunciation threshold , which is the IN 2 constant. If True, it sets the output Boolean to True.

At the (7) ordered Min _Max, it finds the Max of the Max, and sends that temperature OUT .

Detailed Explanation of Logic

GEI-100682AC Instruction Guide 273For public disclosure

Page 274: Mark* VIe Controller

Annunciation of Loss of IONet for Mark VIe I/O PacksThe following sample control logic uses AND and RUNG blocks to annunciate an alarm if any Mark VIe I/O pack located inthe expansion panel loses IONet communication. The I/O packs have an internal LINK_OK output variable for the detectionof an Ethernet signal, which is used in this logic after creating a connected variable.

PPDA Variable Connected Variable

Panel.LogicCheckingRelayPack _Location_PackLogic

Connected Variable Naming Convention

This logic uses groups of I/O packs (based on redundancy) that are located within one expansion panel. If all links in eachgroup of input pins per AND block are okay, the AND block sends a True output.

Is link okay for all I /O packs? If False

set alarm to True

78

Is link Ok for all TMR?

4, 5 , 6

Is link Ok for all simplex?

3

Simplified IONet Logic Explanation

274 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 275: Mark* VIe Controller

The AND blocks are arrangements of I/O packs with simplex packs (SMX) occurring first in order of operation (3), followed by the R, S, and T packs.

Simplex I/O packs

TMR I/O packs

Each group of I /O packs is sending True if all links are Ok or False if any one or more links are not Ok .

Lastly, the RUNG is set for ~A (if not True). Therefore, if the input pin is not True then the output is True (alarm is annunciated).

At the (7) ordered AND block, it sends True if all input pins are True or False if any one or more are False .

Detailed Explanation of IONet Logic

GEI-100682AC Instruction Guide 275For public disclosure

Page 276: Mark* VIe Controller

Annunciation of TMR Controller Heartbeat Status Not OKThe following sample control logic uses theMOVE, CALC, COMPARE, NOT, TIMER, LATCH, and RUNG blocks toannunciate an alarm if the Mark VIe controller (R, S, or T) Heartbeat status remains not okay for 200 ms. This logic is used toverify the heartbeat is still running (this frame and last frame heartbeats are not the same value), and EGD communication isstill being produced by the controller. The controller heartbeat increments each frame in most instances. However, there arenormal times when this heartbeat might not increment for a few frames. That is why there is a 200 ms TIMER delay before anissue is announced. The following figure displays a simplified explanation of this logic.

Note From the ToolboxST Component Editor Software tab, press F1 for more information on the ControllerStateHeartbeatintrinsic variable.

ControllerStateHeartbeat Difference between last frame and this frame heartbeat (HB)

CALC

Store this frame’s HB for use in the next frame CALC.

MOVE

Is there a difference between last frame and this frame?

Yes NoController R, S, or T HB is OK

������������������������ ������

RUNG

NoAnnunciate Alarm

Has it been 200 ms since there was no difference in heart beats?

Yes

COMPARE TIMER

No Controller R, S, or T HB is NotOK.

Yes

Simplified Logic Explanation

Note The ControllerStateHeartbeat intrinsic was developed so the ToolboxST application could drive the status screens forR, S, and T controllers.

Each individual controller (R, S, or T) in the set sends its own individual ControllerStateHeartbeat by EGD. The goal of thislogic is to detect a problem with EGD communications within the redundant controllers. Since this communication betweencontrollers in the redundant set is not a critical control function (whereas the communication from an I/O pack to thecontroller set could be critical), it is acceptable for individual EGD packets to be dropped or delayed. That is why it isnecessary to use the TIMER block in this alarm logic. Refer to the following figure.

276 GEI-100682AC Mark VIe Controller Standard Block LibraryFor public disclosure

Page 277: Mark* VIe Controller

From the Component Editor, EGD, Configuration tab, this intrinsic variable can be viewed (datatype is UDINT). This is only the R controller.

(125) MOVE takes the global variable value (SRC) and moves it to the value of the local variable (DEST).

(126) CALC finds the difference between this frame and last frame heart beat . The initial value of A is zero.

(128) MOVE takes this frames heart beat value (SRC) and moves it to the value of the new local variable (DEST). This variable is used in the previous (126) CALC block.

(129) COMPARE sends True (OUT) Boolean if this frame and last frame heart beat values are the same (the difference CSHB_RD is equal to zero).

Takes the opposite of the Boolean input (if True then False)

If (RUN) input pin is True, TIMER starts.

If (RESET) input pin is True, then TIMERresets to zero.

If the heartbeat is not incrementing for 200 ms (MAXTIME) input pin, then TIMER sends a True Boolean out (AT_TIME).

If the (SET) input pin is True (heart beat issue)and the L 86MR1 master reset is False at the (RESET) input pin, and the (OUT) is currently False, then the (OUT) is set to True.

If input A is not True (False) then OUT isTrue, which means the R controller heart beat is OK.

The same type of previous logic repeats for the S and T controllers , then ...

Input A is from the output of (128) MOVE.

A TIMER block is used because it is acceptable for individual IONet packets to be dropped or delayed.

R, S, and T controller heartbeat is okay inputs

If all are True, then (OUT) is True. If any one or more are False then (OUT) is False.

If (A) is not True, then (OUT) is True. Therefore If any controller heartbeat is not okay, then the alarm is annunciated .

Detailed Logic Explanation

GEI-100682AC Instruction Guide 277For public disclosure

Page 278: Mark* VIe Controller

Selection of Setpoint based on Boolean Logic

The following sample control logic uses the RUNG and SELECT blocks as part of the algorithm for determining theappropriate schedule type. The three blocks displayed in the following figure are a small part of the overall scheduling task,which involves a total of 55 blocks. The three RUNG Boolean equations represent the three possible schedules based on theTrue or False condition of the input pin variable. The SELECT block sets its output value to the IN# (a REAL variable type)based on which of the schedules is True (SEL#).

93) If A, B, and C are all True and D is False then OUT is True, if not OUT is False.

94) If A, B, and C are all True and D is False then OUT is True, if not OUT is False.

95) Else if A is True (variable used in previous two RUNG input pin Ds ) then OUT is True.

96) If SEL1 is True then OUT = IN1. Else if SEL2 is True then OUT = IN2. Else if SEL3 is True then OUT = IN3. Else OUT = CASC.

For public disclosure