1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | (* When the Element has been processed, the notifier gets acknowledged. Be sure to run this code continously! *) {attribute 'hide'} FUNCTION FindChanges : ERROR VAR_IN_OUT ChangeDetected : BOOL; // At least one Signal change has been detected; ErrorDetected : BOOL; // Some Error Occured FindChanges := ERROR.NO_ERROR; ErrorDetected := FALSE; ChangeDetected := FALSE; NumberOfChanges := 0; SysTimeRtc.SysTimeRtcHighResGet( pTimestamp := Timestamp ); //Loop through the metrics AllMetricsList.ItterateRestart( HasNext => HasNext ); WHILE HasNext DO AllMetricsList.ItterateNext( itfElement => itfElement, HasNext => HasNext ); IF __QUERYINTERFACE( itfElement, _Metric ) THEN // Loop is called for every metric IF _Metric.Notify THEN AllMetricsWhichWillEverReport := AllMetricsList ); IF AddMetricError <> ERROR.NO_ERROR THEN FindChanges := AddMetricError; ErrorDetected := TRUE; END_IF NumberOfChanges := NumberOfChanges + 1; _Metric.AcknowledgeNotify(); END_IF END_IF END_WHILE ChangeDetected := (NumberOfChanges <> 0); |