

(* @NESTEDCOMMENTS := 'Yes' *)
(* @PATH := '' *)
(* @SYMFILEFLAGS := '2048' *)

_________________________________________________________________________________________________

FUNCTION_BLOCK Uebergabe        		(* Messwerte IN sTRING-FORM in das Datenarray schreiben *)

VAR_INPUT
	Messwert: Reihnfolge;
	indize: INT;				(*gibt die Anzahl der Spalten des Arrays an*)
	reset: BOOL;				(* dienet zum Lschen des Arrays*)
END_VAR

VAR_OUTPUT
	convert: BOOL;
END_VAR

VAR_IN_OUT
	normwerte: ARRAY [0..MAXDATA, 0..ANZMESS] OF STRING(20);			
END_VAR

VAR
	Messwertuebergabe:STRING;		(* Messwert aus Messen(PRG) *)
	index: INT;				(*gibt Anzahl der Zeilen an*)
	setze: BOOL;
	pt: POINTER TO STRING;
	Systime: TIME;
	trig: BOOL;
END_VAR


(* @END_DECLARATION := '0' *)

_______________________________________________________________________________________________________________
(*
		die Messwerte aus Messen werden an Messwertbergabe bergeben und in den Datentyp Reihnfolge gelesen .
		
 		Reihnfolge :	(Systemzeit:=0,MessP_Gleich:=1, MessSpannung:=2, MessStrom:=3, Wirkleistung:=4,Scheinleistung:=5, CosinusPhi:=6, Einstrahlung:=7,Wirkenergie_Bezug:=8,Wirkerergie_lieferung:=9);
*)

Messen();

CASE Messwert OF
	0:
		Messwertuebergabe:=TIME_TO_STRING (Systime);

	1 :		(*Messwert P_Gleich *)
		Messwertuebergabe := Ergebnis;

	2 :		(*U_Wechsel_L1 *)
		Messwertuebergabe:= Spannung;

	3 :		 (*I_Wechsel_L1*)
		Messwertuebergabe:=Strom;

	4:		(*Messwert P Wirkleistung *)
		Messwertuebergabe:=Wirk;

	5:		(*Messwert CosinusPhi *)
		Messwertuebergabe:=CosinPhi;
	6:
			(*Messwet des Phyranometers*)
		Messwertuebergabe:=Einstrahlung;
	7:
		(*Summe Wirkarbeit_Bezug*)
		Messwertuebergabe:= Energie_bezug;
	8:
			(*Summe Wirkarbeit_Lieferung*)
		Messwertuebergabe:= Energie_liefer;
END_CASE

(*________________________lschen des Arrays_____________________________________________________________________*)
	IF reset =TRUE THEN
		FOR index:=0 TO MAXDATA DO
			FOR indize:=0 TO (ANZMESS)DO
				pt:= ADR (normwerte[index,indize]);
				pt^:='';
			END_FOR
		END_FOR
	END_IF

(*_______________________________________________________________________________________________________________*)

IF ( Anzahl >maxdata ) THEN

	Anzahl := maxdata;
END_IF
(*_______________________________________________________________________________________________________________*)
IF reset =TRUE THEN

	convert:=FALSE;
	index:=0;
END_IF

(*___!!!!!!!!!!!!!!_____Timer fr die Abtastzeit_!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!______________________*)
		
		IF TIME() - Systime>=zycl THEN
		Systime:=TIME();
		trig:=TRUE;
		ELSE
		trig:=FALSE;
		END_IF
(*_!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_*)

(*___________________Aufnahme der Messwerte ins Array_______________________________________________________________*)
IF (index<anzahl) AND trig=TRUE THEN
		convert := FALSE;
		IF Einstrahlung ='0.0' AND filtern=TRUE THEN	(* zum Rausfiltern der Messwete ohne Leistung, z.B Nachts und Schlechtwetter*)
			setze:= FALSE;
		ELSE
			setze:=TRUE;
		END_IF
		
		IF setze =TRUE THEN
			normwerte[index,indize] := Messwertuebergabe;
		END_IF

	index:=index+1;
END_IF;
(*_______________________________________________________________________________________________________________*)


IF (index >= anzahl) THEN
	convert := TRUE;
END_IF

(*_______________________________________________________________________________________________________________*)



END_FUNCTION_BLOCK
