Diff of / szl4p3-prj,szl4p3,CDS/Protection/FB_TripBlockHandler/BlockTimer/svnobj [000000] .. [r2]  Maximize  Restore

Switch to side-by-side view

--- a
+++ b/ szl4p3-prj,szl4p3,CDS/Protection/FB_TripBlockHandler/BlockTimer/svnobj
@@ -0,0 +1,120 @@
+Gx_lw(!0…jüo–yj—=¹
+^1`pSystem.StringL{f8a58466-d7f6-439f-bbb8-d4600e41d099}ImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocumentL{f3878285-8e4f-490b-bb1b-9acbb7eb04db}TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}	Id
+longTagText
:// iterate through all blocksjuiOffsetAutoReset := DINT_TO_UINT(c_tsProt.diNBlock);puiOffsetBlockTimer := DINT_TO_UINT(c_tsProt.diNBlock)*2;FFOR idx:= 1 TO c_tsProt.diNBlock DO:	uiIdx := DINT_TO_UINT(idx);	8	// check for edge detection,	// this will trigger:,	// - auto reset timer,	// - occurrence timer	Â	//==============================================================================================R	// O C C U R R E N C E   H A N D L I N GH	// set timer for occurrence counterd	// if edge detected and count hasn't exceeded yet†	IF tsProt.tuBlockEdge.ai[idx]<>0 AND _fbTimerArray.Count(uiIdx := uiIdx) <= c_tsProt.tuBlockProtSetting.ats[idx].uiOccurrence THENx		_fbTimerArray.Append(uiIdx := uiIdx,lrData := _lrSysTime);	END_IFR	// check if occurrence period timer's up ¢	// if so, remove first element of list, thus counting number of occurrences down!Z	IF _fbTimerArray.Count(uiIdx := uiIdx)>0 AND"î		_lrSysTime > _fbTimerArray.Get(uiIdx := uiIdx, uiPosition := 0) + c_tsProt.tuBlockProtSetting.ats[idx].lrTPeriod THEN#
+	    $X		_fbTimerArray.RemoveFirst(uiIdx := uiIdx);%>	// B L O C K   H A N D L I N G&`	// check if number of occurrences exceeds limit'6	// if so, set block signal(À	IF _fbTimerArray.Count(uiIdx := uiIdx) > c_tsProt.tuBlockProtSetting.ats[idx].uiOccurrence THEN)		*:		// set output value to true+6		_tuBlock.ab[idx] := TRUE;,l		// check if fault is reset and timer not running yet-Ô		IF tsProt.tuResetFaultBlock.ai[idx]=0 AND _fbTimerArray.Count(uiIdx := uiIdx+uiOffsetBlockTimer)<=0 THEN.			/Z			// start block timer by setting time stamp0 			_fbTimerArray.Append(uiIdx := uiIdx+uiOffsetBlockTimer,lrData := _lrSysTime);1		END_IF	2	END_IF	3‚	// check if block timer's up or if external reset signal occured4>	// if so, reset block signal  5l	IF tsProt.tuResetFaultBlock.ai[idx]=0 AND // no fault6j		(_tuResetBlock.ab[idx] OR  // external reset signal7°		_lrSysTime > _fbTimerArray.Get(uiIdx := uiIdx+uiOffsetBlockTimer, uiPosition := 0) + c_tsProt.tuBlockProtSetting.ats[idx].lrTBlock) THEN // timer's up8h		// set output value to false and reset block timer98		_tuBlock.ab[idx] := FALSE;:~		_fbTimerArray.RemoveFirst(uiIdx := uiIdx+uiOffsetBlockTimer);;R	// A U T O   R E S E T   H A N D L I N G<l	// set timer for auto reset. Always on first position=L	IF tsProt.tuBlockEdge.ai[idx]<>0 THEN>|		_fbTimerArray.RemoveFirst(uiIdx := uiIdx+uiOffsetAutoReset);?ž		_fbTimerArray.Append(uiIdx := uiIdx+uiOffsetAutoReset, lrData := _lrSysTime);@v	// no autoreset when active block and negative definition A¦	IF _tuBlock.ab[idx] AND c_tsProt.tuBlockProtSetting.ats[idx].lrTAutoReset < 0 THENB2	// set auto reset signalCj	IF _tuResetBlock.ab[idx] OR // external reset signalDâ		_fbTimerArray.Count(uiIdx := uiIdx+uiOffsetAutoReset)>0 AND // auto reset count is bigger than 0 and timer's upE¨	   	_lrSysTime > _fbTimerArray.Get(uiIdx := uiIdx+uiOffsetAutoReset, uiPosition := 0) + ABS(c_tsProt.tuBlockProtSetting.ats[idx].lrTAutoReset) THENF¢		tsProt.tuResetFaultBlock.ai[idx] := ABS(tsProt.tuResetFaultBlock.ai[idx]) * -1;G
+	ELSEH˜		tsProt.tuResetFaultBlock.ai[idx] := ABS(tsProt.tuResetFaultBlock.ai[idx]);I6	// reset auto reset signalJZ	IF tsProt.tuResetFaultBlock.ai[idx] = 0 THENK6	// for debug purposes onlyLž	o_tuBlockSettings.ai[idx] := UINT_TO_INT(_fbTimerArray.Count(uiIdx := uiIdx));MEND_FORN,// output block signalO2o_tsBlock := _tuBlock.ts;PInterfaceQL{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}R6METHOD PROTECTED BlockTimerSVART@	tuProtBlock: TU_PROT_BLOCK_INT;U	uiIdx: UINT;V2	uiOffsetAutoReset: UINT;W4	uiOffsetBlockTimer: UINT;XEND_VARYVAR_IN_OUTZ(	tsProt			:	TS_PROT;ÐÐÐEgÐÐ	
+­ÎÚÐ-
ÐÐ	
+­ÏÚÐ-ÐÐ	
+­ÐÚÐ-ÐÐ	
+­ÑÚÐ-ÐÐ	
+­ÒÚÐ-ÐÐ	
+­ÓÚÐ-ÐÐ	
+­ÔÚÐ-ÐÐ	
+­ÕÚÐ-ÐÐ	
+­ÖÚÐ-ÐÐ	
+­×ÚÐ-ÐÐ	
+­ØÚÐ-ÐÐ	
+­ÙÚÐ-ÐÐ	
+­GÚÐ-ÐÐ	
+­HÚÐ-ÐÐ	
+­JÚÐ-ÐÐ	
+­IÚÐ-ÐÐ	
+­LÚÐ-ÐÐ	
+­KÚÐ-ÐÐ	
+­MÚÐ-ÐÐ	
+­ÚÚÐ-ÐÐ	
+­ÜÚÐ-ÐÐ	
+­áÚÐ-ÐÐ	
+­âÚÐ-ÐÐ	
+­ñÚÐ-ÐÐ	
+­òÚÐ- ÐÐ	
+­óÚÐ-!ÐÐ	
+­ôÚÐ-"ÐÐ	
+­õÚÐ-#ÐÐ	
+­öÚÐ-$ÐÐ	
+­÷ÚÐ-ÐÐ	
+­øÚÐ-ÐÐ	
+­ùÚÐ-ÐÐ	
+­NÚÐ-ÐÐ	
+­PÚÐ-%ÐÐ	
+­OÚÐ-ÐÐ	
+­úÚÐ-&ÐÐ	
+­ûÚÐ-'ÐÐ	
+­üÚÐ-(ÐÐ	
+­ýÚÐ-)ÐÐ	
+­QÚÐ-*ÐÐ	
+­þÚÐ-+ÐÐ	
+­RÚÐ-)ÐÐ	
+­SÚÐ-,ÐÐ	
+­ÿÚÐ--ÐÐ	
+­ÚÐ-.ÐÐ	
+­TÚÐ-/ÐÐ	
+­ÚÐ-0ÐÐ	
+­ÚÐ-1ÐÐ	
+­ÚÐ-2ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-3ÐÐ	
+­ÚÐ-4ÐÐ	
+­	ÚÐ-5ÐÐ	
+­VÚÐ-6ÐÐ	

+ÚÐ-7ÐÐ	
+­UÚÐ-)ÐÐ	
+­WÚÐ-8ÐÐ	
+­ÚÐ-9ÐÐ	

ÚÐ-:ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­7ÚÐ-ÐÐ	
+­8ÚÐ-ÐÐ	
+­9ÚÐ-;ÐÐ	
+­CÚÐ-ÐÐ	
+­DÚÐ-ÐÐ	
+­:ÚÐ-<ÐÐ	
+­>ÚÐ-=ÐÐ	
+­AÚÐ->ÐÐ	
+­BÚÐ-?ÐÐ	
+­;ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­5ÚÐ-@ÐÐ	
+­2ÚÐ-AÐÐ	
+­3ÚÐ->ÐÐ	
+­0ÚÐ-ÐÐ	
+­1ÚÐ-ÐÐ	
+­6ÚÐ-BÐÐ	
+­ÚÐ-CÐÐ	
+­(ÚÐ-DÐÐ	
+­ÚÐ-EÐÐ	
+­ ÚÐ-)ÐÐ	
+­4ÚÐ-FÐÐ	
+­EÚÐ-GÐÐ	
+­FÚÐ-HÐÐ	
+­"ÚÐ-ÐÐ	
+­#ÚÐ-ÐÐ	
+­$ÚÐ-IÐÐ	
+­%ÚÐ-JÐÐ	
+­&ÚÐ->ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­/ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-KÐÐ	
+­ÚÐ-LÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-MÐÐ	
+­ÚÐ-ÐÐ	
+­ÚÐ-NÐÐ	
+­ÉÚÐ-OÐPQÐE
+ÐÐ	
+­ÚÐ-RÐÐ	
+­%ÚÐ-SÐÐ	
+­8ÚÐ-TÐÐ	
+­<ÚÐ-UÐÐ	
+­MÚÐ-VÐÐ	
+­RÚÐ-WÐÐ	
+­ÚÐ-XÐÐ	
+­YÚÐ-YÐÐ	
+­ZÚÐ-ZÐÐ	
+­[ÚÐ-X
\ No newline at end of file