23.12.2012 Views

Safety Considerations Guide for Trident v2 Systems - TUV ...

Safety Considerations Guide for Trident v2 Systems - TUV ...

Safety Considerations Guide for Trident v2 Systems - TUV ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

86 Appendix C <strong>Safety</strong>-Critical Function Blocks<br />

* Application<br />

* The APP parameter <strong>for</strong> a module selects the effect of a fault<br />

* on the vote mode outputs of the shutdown function blocks.<br />

* APP:=RELAY with RELAY_OK:=true<br />

* A sinlge fault (even a voter fault) degrades the mode to DUAL.<br />

* The relay provides a third channel <strong>for</strong> shutdown,<br />

* so if an output voter fails, there are still<br />

* two independent channels that can de-energize the output,<br />

* i.e., the relay and the other output voter channel.<br />

* APP:=RELAY with RELAY_OK:=false, or<br />

* APP:=DE_ENERGIZED<br />

* A voter fault degrades the mode to SINGLE.<br />

* A non-voter fault degrades the mode to DUAL.<br />

*<br />

* Runtime Errors<br />

* EBADPARAM Bad parameter<br />

* CO=FALSE indicates a programming error.<br />

* See ERROR number parameter <strong>for</strong> details.<br />

*=F===============================================================================<br />

*)<br />

IF RESET THEN<br />

CO := TRUE ;<br />

TMR := TRUE ;<br />

GE_DUAL := TRUE ;<br />

GE_SINGLE := TRUE ;<br />

NO_VOTER_FLTS := TRUE ;<br />

ELSIF PREVIOUS_RESET THEN<br />

; (* No operation. *)<br />

ELSIF CI AND CO THEN<br />

IO( CI := CI, IOP := IOP, SLOT := SLOT );<br />

IF NOT IO.CO THEN<br />

ERROR := IO.ERROR_NUM ;<br />

U := ReportBadParam(0) ;<br />

CO := FALSE ;<br />

END_IF ;<br />

IF CO THEN<br />

TMR := TMR AND IO.TMR ;<br />

GE_DUAL := GE_DUAL AND IO.GE_DUAL ;<br />

GE_SINGLE := GE_SINGLE AND IO.GE_SINGLE ;<br />

NO_VOTER_FLTS := NO_VOTER_FLTS AND IO.NO_VOTER_FLTS ;<br />

IF APP = RELAY AND RELAY_OK THEN<br />

TMR := TMR AND IO.NO_VOTER_FLTS ;<br />

ELSIF APP = DE_ENERGIZED OR APP = RELAY AND NOT RELAY_OK THEN<br />

TMR := TMR AND IO.NO_VOTER_FLTS ;<br />

GE_DUAL := GE_DUAL AND IO.NO_VOTER_FLTS ;<br />

ELSE<br />

ERROR := -5 ; (* Application number is invalid *)<br />

U := ReportBadParam(0) ;<br />

CO := FALSE ;<br />

END_IF ;<br />

END_IF ;<br />

END_IF ;<br />

IF ERROR = 0 AND NOT CO THEN<br />

ERROR := -6 ; (* Not initialized *)<br />

U := ReportBadParam(0) ;<br />

END_IF ;<br />

IF NOT CO THEN<br />

TMR := FALSE ;<br />

GE_DUAL := FALSE ;<br />

GE_SINGLE := FALSE ;<br />

NO_VOTER_FLTS := FALSE ;<br />

<strong>Safety</strong> <strong>Considerations</strong> <strong>Guide</strong> <strong>for</strong> <strong>Trident</strong> <strong>v2</strong> <strong>Systems</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!