Log-String zusammensetzen

McNugget

Level-1
Beiträge
220
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin allerseits.

Wie lässt sich der folgende Code eleganter/ schlanker/ performanenter/ verschachtelter gestalten?

Die Kanäle 15,16, 21-27, 31,32 gibt es aktuell nicht

Diese sollen aktuell nur mit Platzhaltern aufgefüllt werden, um bereits die Plätze zu reservieren.


Momentan sind sie per Deklaration mit '99.99' gefüllt.



Deklaration:
PROGRAM Log_String_01
VAR
Zeits:STRING;

Log_01_02: STRING;
Log_03_04: STRING;
Log_05_06: STRING;
Log_07_08: STRING;
Log_09_10: STRING;
Log_11_12: STRING;
Log_13_14: STRING;
Log_15_16: STRING;
Log_17_18: STRING;
Log_19_20: STRING;
Log_21_22: STRING;
Log_23_24: STRING;
Log_25_26: STRING;
Log_27_28: STRING;
Log_29_30: STRING;
Log_31_32: STRING;


Log_01_04: STRING;
Log_05_08: STRING;
Log_09_12: STRING;
Log_13_16: STRING;
Log_17_20: STRING;
Log_21_24: STRING;
Log_25_28: STRING;
Log_29_32: STRING;


Log_01_08: STRING;
Log_09_16: STRING;
Log_17_24: STRING;
Log_25_32: STRING;


Log_01_16: STRING;
Log_17_32: STRING;

Log_01_32: STRING;

P_28_29: STRING;
P_28_30: STRING;
RealString: STRING;

Timestamps:STRING;

LogString:STRING;

Anweisungsteil:
Timestamps:=CONCAT(DT_TO_STRING(Echtzeit), ';');


Kanal_01:=
CONCAT(Messungen.Mess_01.ME_TEMP_STRING, ';');
Kanal_02:=
CONCAT(Messungen.Mess_02.ME_TEMP_STRING, ';');
Kanal_03:=
CONCAT(Messungen.Mess_03.ME_TEMP_STRING, ';');
Kanal_04:=
CONCAT(Messungen.Mess_04.ME_TEMP_STRING, ';');
Kanal_05:=
CONCAT(Messungen.Mess_05.ME_TEMP_STRING, ';');
Kanal_06:=
CONCAT(Messungen.Mess_06.ME_TEMP_STRING, ';');
Kanal_07:=
CONCAT(Messungen.Mess_07.ME_TEMP_STRING, ';');
Kanal_08:=
CONCAT(Messungen.Mess_08.ME_TEMP_STRING, ';');
Kanal_09:=
CONCAT(Messungen.Mess_09.ME_TEMP_STRING, ';');
Kanal_10:=
CONCAT(Messungen.Mess_10.ME_TEMP_STRING, ';');
Kanal_11:=
CONCAT(Messungen.Mess_11.ME_TEMP_STRING, ';');
Kanal_12:=
CONCAT(Messungen.Mess_12.ME_TEMP_STRING, ';');
Kanal_13:=
CONCAT(Messungen.Mess_13.ME_TEMP_STRING, ';');
Kanal_14:=
CONCAT(Messungen.Mess_14.ME_TEMP_STRING, ';');
Kanal_15:=
CONCAT(Kanal_15, ';');
Kanal_16:=
CONCAT(Kanal_16, ';');
Kanal_17:=
CONCAT(Messungen.Mess_17.ME_TEMP_STRING, ';');
Kanal_18:=
CONCAT(Messungen.Mess_18.ME_TEMP_STRING, ';');
Kanal_19:=
CONCAT(Messungen.Mess_19.ME_TEMP_STRING, ';');
Kanal_20:=
CONCAT(Messungen.Mess_20.ME_TEMP_STRING, ';');


Kanal_21:=
CONCAT(Kanal_21, ';');
Kanal_22:=
CONCAT(Kanal_22, ';');
Kanal_23:=
CONCAT(Kanal_23, ';');
Kanal_24:=
CONCAT(Kanal_24, ';');
Kanal_25:=
CONCAT(Kanal_25, ';');
Kanal_26:=
CONCAT(Kanal_26, ';');
Kanal_27:=
CONCAT(Kanal_27, ';');



Kanal_28:=
CONCAT(Messungen.Mess_28.ME_TEMP_STRING, ';');
Kanal_29:=
CONCAT(Messungen.Mess_29.ME_TEMP_STRING, ';');
Kanal_30:=
CONCAT(Messungen.Mess_30.ME_TEMP_STRING, ';');

Kanal_31:=
CONCAT(Kanal_31, ';');
Kanal_32:=
CONCAT(Kanal_32, ';');

Kanal_28a:=
CONCAT(Messungen.Mess_28.ME_Druck_STRING, ';');
Kanal_29a:=
CONCAT(Messungen.Mess_28.ME_Druck_STRING, ';');
Kanal_30a:=
CONCAT(Messungen.Mess_28.ME_Druck_STRING, ';');

Log_01_02:=CONCAT(Kanal_01,Kanal_02);
Log_03_04:=CONCAT(Kanal_03,Kanal_04);
Log_05_06:=CONCAT(Kanal_05,Kanal_06);
Log_07_08:=CONCAT(Kanal_07,Kanal_08);
Log_09_10:=CONCAT(Kanal_09,Kanal_10);
Log_11_12:=CONCAT(Kanal_11,Kanal_12);
Log_13_14:=CONCAT(Kanal_13,Kanal_14);
Log_15_16:=CONCAT(Kanal_15,Kanal_16);
Log_17_18:=CONCAT(Kanal_17,Kanal_18);
Log_19_20:=CONCAT(Kanal_19,Kanal_20);
Log_21_22:=CONCAT(Kanal_21,Kanal_22);
Log_23_24:=CONCAT(Kanal_23,Kanal_24);
Log_25_26:=CONCAT(Kanal_25,Kanal_26);
Log_27_28:=CONCAT(Kanal_27,Kanal_28);
Log_29_30:=CONCAT(Kanal_29,Kanal_30);
Log_31_32:=CONCAT(Kanal_31,Kanal_32);

Log_01_04:=CONCAT(Log_01_02,Log_03_04);
Log_05_08:=CONCAT(Log_05_06,Log_07_08);
Log_09_12:=CONCAT(Log_09_10,Log_11_12);
Log_13_16:=CONCAT(Log_13_14,Log_15_16);
Log_17_20:=CONCAT(Log_17_18,Log_19_20);
Log_21_24:=CONCAT(Log_21_22,Log_23_24);
Log_25_28:=CONCAT(Log_25_26,Log_27_28);
Log_29_32:=CONCAT(Log_29_30,Log_31_32);

Log_01_08:=CONCAT(Log_01_04,Log_05_08);
Log_09_16:=CONCAT(Log_09_12,Log_13_16);
Log_17_24:=CONCAT(Log_17_20,Log_21_24);
Log_25_32:=CONCAT(Log_25_28,Log_29_32);

Log_01_16:=CONCAT(Log_01_08,Log_09_16);
Log_17_32:=CONCAT(Log_17_24,Log_25_32);

Log_01_32:=CONCAT(Log_01_16,Log_17_32);

P_28_29:=CONCAT(Kanal_28a,Kanal_29a);


P_28_30:=CONCAT(P_28_29, Kanal_30a);


RealString:=CONCAT(Log_01_32,P_28_30);




Logstring:=CONCAT(Timestamps,Realstring);
 
Hallo,
du könntest für die Kanäle auch ein ARRAY of STRING nehmen. Wenn du diese dann alle zu einem Gesamt-String zusammensetzen willst, dann könnte das auch so aussehen :
Code:
hString := '' ;
for i := 1 to 32 by 1 do
   hString := concat(hString , Kanal[i]) ;
end_for ;
Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke.

Das probiere ich mal.

Und wie setze ich hinter jeden Wert ein ";"?

Dann kann ich es besser in Excel sparieren.


nachtrag: Hab´s probiert.

CoDeSys will hier eine Deklaration für "Kanal". die kann ich aber ja nicht geben, da sich der Kanalname aus dem Hochzählen des Array ergibt, oder?

Also
for i := 1 to 32 by 1 do
ergäbe dann
, Kanal) ;
Kanal[1]
Kanal[2]
usw.

Kann ich es auch hinbekommen, dass er
Kanal_01
bis Kanal_32
zählt??



AARGH.... Arrays hassen mich..... Und langsam hasse ich sie auch..... Wann werde ich sie endlich begreifen?
 
Zuletzt bearbeitet:
vielleicht so :
Code:
hString := '' ;
for i := 1 to 32 by 1 do
   hString := concat(hString , Kanal[i]) ;
   hString := concat(hString , ';') ;
end_for ;
 
CoDeSys will hier eine Deklaration für "Kanal". die kann ich aber ja nicht geben, da sich der Kanalname aus dem Hochzählen des Array ergibt, oder?

...

Kann ich es auch hinbekommen, dass er
Kanal_01
bis Kanal_32
zählt??

Das verstehe ich im Augenblick nicht ...
du mußt natürlich deine Kanäle als ARRAY deklarieren - also statt :
Code:
Kanal_01 : string [32] ;
Kanal_02 : string [32] ;
Kanal_03 : string [32] ;
Kanal_04 : string [32] ;
...
mußt du es so machen :
Code:
Kanal : array [1..32] of string [32] ;
dann kannst du es auch so ansprechen :
Code:
Kanal[01] := ...
war es das ?
 
Zurück
Oben