-> Hier kostenlos registrieren
Hallo zusammen,
Ich habe folgendes Problem:
ich möchte sehr gern nach einem Import eines Rezeptes über mappRecipe und RegPar die Parameter auf über-/ unterschreiten von Grenzwerte prüfen und ggf. einen Default Wert setzen.
Hierzu habe ich folgende Strukturen:
Rezept_TMP.Parametersatz_1.Par1 ( Bool)
Rezept_TMP.Parametersatz_1.Par2 ( UDINT)
Rezept_TMP.Parametersatz_1.Par3 ( INT)
Rezept_TMP.Parametersatz_2.Par1 ( INT)
Rezept_STD.Parametersatz_1.Par1 ( Bool)
Rezept_STD.Parametersatz_1.Par2 ( UDINT)
Rezept_STD.Parametersatz_1.Par3 ( INT)
Rezept_STD.Parametersatz_2.Par1 ( INT)
Rezept_GWO.Parametersatz_1.Par1 ( Bool)
Rezept_GWO.Parametersatz_1.Par2 ( UDINT)
Rezept_GWO.Parametersatz_1.Par3 ( INT)
Rezept_GWO.Parametersatz_2.Par1 ( INT)
Rezept_GWU.Parametersatz_1.Par1 ( Bool)
Rezept_GWU.Parametersatz_1.Par2 ( UDINT)
Rezept_GWU.Parametersatz_1.Par3 ( INT)
Rezept_GWU.Parametersatz_2.Par1 ( INT)
Diese Strukturen sind identisch aufgebaut.
Nach dem Laden des Rezeptes stehen die Daten in der Rezept_TMP Strukur.
Nun möchte ich über eine Schleife (habe ca. 200 Parameter zu Prüfen) die Temp Werte mit den GWU und GWO Werten vergleichen und beim über- / unterschreiten
der Grenzwerte den entsprechenden STD Wert setzen.
Mitt "ADR" bekomme ich die jeweilige Adresse der Struktur im Speicher und über "SIZEOFF" auch deren Größe.
Wie kann ich jetzt die Anzahl der Elemente bestimmen (bestimmt mir ja die Anzahl der Schleifendurchläufe) und dann in der Schleife auf deren Werte zugreifen (fürs Vergleichen).
Des weiteren würde mich interessieren, wie ich den Variablennamen der aktuell geladenen Variablen aus der TMP Struktur, dann in einen String umkopieren kann.
Ich habe schon mal die Sys_Lib angeschaut, finde dort allerdings keinen so rechten Ansatz für mein Problem.
Arbeiten aktuell mit dem AS4.2.5 und programmieren in ST.
Ich bin für jeden Ansatz dankbar, da ich es eigentlich nicht mit 200 If/Elsif Anweisungen realisieren möchte.
Man will sich ja auch weiter entwickeln
Mit Besten Grüßen
Ronny
Ich habe folgendes Problem:
ich möchte sehr gern nach einem Import eines Rezeptes über mappRecipe und RegPar die Parameter auf über-/ unterschreiten von Grenzwerte prüfen und ggf. einen Default Wert setzen.
Hierzu habe ich folgende Strukturen:
Rezept_TMP.Parametersatz_1.Par1 ( Bool)
Rezept_TMP.Parametersatz_1.Par2 ( UDINT)
Rezept_TMP.Parametersatz_1.Par3 ( INT)
Rezept_TMP.Parametersatz_2.Par1 ( INT)
Rezept_STD.Parametersatz_1.Par1 ( Bool)
Rezept_STD.Parametersatz_1.Par2 ( UDINT)
Rezept_STD.Parametersatz_1.Par3 ( INT)
Rezept_STD.Parametersatz_2.Par1 ( INT)
Rezept_GWO.Parametersatz_1.Par1 ( Bool)
Rezept_GWO.Parametersatz_1.Par2 ( UDINT)
Rezept_GWO.Parametersatz_1.Par3 ( INT)
Rezept_GWO.Parametersatz_2.Par1 ( INT)
Rezept_GWU.Parametersatz_1.Par1 ( Bool)
Rezept_GWU.Parametersatz_1.Par2 ( UDINT)
Rezept_GWU.Parametersatz_1.Par3 ( INT)
Rezept_GWU.Parametersatz_2.Par1 ( INT)
Diese Strukturen sind identisch aufgebaut.
Nach dem Laden des Rezeptes stehen die Daten in der Rezept_TMP Strukur.
Nun möchte ich über eine Schleife (habe ca. 200 Parameter zu Prüfen) die Temp Werte mit den GWU und GWO Werten vergleichen und beim über- / unterschreiten
der Grenzwerte den entsprechenden STD Wert setzen.
Mitt "ADR" bekomme ich die jeweilige Adresse der Struktur im Speicher und über "SIZEOFF" auch deren Größe.
Wie kann ich jetzt die Anzahl der Elemente bestimmen (bestimmt mir ja die Anzahl der Schleifendurchläufe) und dann in der Schleife auf deren Werte zugreifen (fürs Vergleichen).
Des weiteren würde mich interessieren, wie ich den Variablennamen der aktuell geladenen Variablen aus der TMP Struktur, dann in einen String umkopieren kann.
Ich habe schon mal die Sys_Lib angeschaut, finde dort allerdings keinen so rechten Ansatz für mein Problem.
Arbeiten aktuell mit dem AS4.2.5 und programmieren in ST.
Ich bin für jeden Ansatz dankbar, da ich es eigentlich nicht mit 200 If/Elsif Anweisungen realisieren möchte.
Man will sich ja auch weiter entwickeln
Mit Besten Grüßen
Ronny
Zuletzt bearbeitet: