TwinCat3 Bestimmte Werte aus einem zweidimensionalen Array anzeigen

Perold

Level-1
Beiträge
40
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich habe eine Frage zu Arrays. Und zwar habe ich in einer Spritzgussmaschine einen IPC von Beckhoff mit einer digitalen Eingangskarte. Auf einen Eingang dieser Karte bekomme ich einen Impuls pro Spritzgusszyklus. Diese Zyklen zähle ich und schreibe sie in ein 2 dimensionales Array [1..366,0..2] das wie folgt aussieht.
Bildschirmfoto 2018-10-09 um 09.10.11.jpg

Die zweite Dimension des Arrays (0,1,2) steht für die Früh- Spät- und Nachtschicht, während die erste Dimension für den Tag im Jahr steht. Ganz sauber ist dies nicht, da die Nachtschicht ja eigentlich in 2 Tage fällt, aber dies sei mal außen vor. Mich interessieren die Schusszahlen der Maschine pro Schicht und diese zählt mein Programm richtig. Das Programm habe ich in Structured Text (ST) geschrieben.

Nun möchte ich in einer Visualisierung immer die aktuelle Schicht und die letzten 8 Schichten anzeigen, weiß aber nicht so richtig wie ich das anstellen kann. Ich müsste glaube ich ein neues eindimensionales Array [0..8] erstellen und mir die Schusszahlen aus dem zweidimensionalen Array in dieses kopieren, habe aber bisher noch nicht die zündende Idee gehabt, wie ich dies anstelle, weil ich ja irgendwie aus der Zweidimensionalität in die Eindimensionalität umwandeln muss.

Kann mir bei diesem Problem vielleicht jemand etwas Starthilfe geben?
 
Du kannst eine UNION, bestehend aus dem zweidimensionalen ARRAY[1..366,0..2] und einem eindimensionalen ARRAY[1..1098], deklarieren. Die eindimensionale Arrayposition für die aktuelle Schicht ist dann Tag * 3 + Schicht. Von da kannst Du dann die Positionen für die letzten 8 Schichten zurückrechnen. Beim Jahreswechsel musst Du aber aufpassen, dass Du keine Array-Indizes ausserhalb des Arrays bekommst. Wenn der berechnete Index <= 0 wird, musst Du wieder 1098 addieren. Für die Berücksichtigung von Schaltjahren musst Du dir aber noch etwas ausdenken.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die schnelle Rückmeldung. Was du geschrieben hast hilft mir weiter und ich denke das bekomme ich hin. Rückmeldung über Erfolg oder Misserfolg folgt ;).

edit: UNION mit den beiden Arrays habe ich nun erstellt. Funktioniert auch. Kleiner Stolperstein war die OnlineAnzeige der Arrays, diese ging komischerweise bei dem eindimensionalen Array nur bis 1000. Falls noch jemand darüber stolpern sollte, hier habe ich Abhilfe gefunden: TwinCat 3 - die Array Online-Anzeige ist bei 1000 begrenzt :(

edit2: Es hat alles so funktioniert, wie du gesagt hast. Ich muss nur noch Sicherstellen, dass das ganze in einem Schaltjahr nicht durcheinander kommt.
 
Zuletzt bearbeitet:
Zurück
Oben