Symbolisch Programmieren, Pointer etc.

blimaa

Level-3
Beiträge
1.133
Reaktionspunkte
131
Hi

Ich habs in der Diskussion ums TIA V14 schon angedeutet. Da man im V14 doch nicht bei den einzelnen Array's den Kommentar einfügen kann, frage ich mich wie man das lösen könnte.
Folgendes: Im Moment können wir unsere Aktoren einzeln aus dem Touchpanel anwählen und damit verfahren. Die Anwählung geschieht über ein Dropdown Auswahlfeld. Danach werden die Statis und die Befehle "vor" "zurück" etc. per Pointer ausgelesen. Im Zuge des V14, symbolisch programmieren und der 1500er Steuerungen dachte ich, ich könnte auf die symbolische Programmierung wechseln ohne Pointer und der Quatsch. Mittels Array. Allerdings wenn ich nicht in das Array reinkommentieren kann, dann weiss ich ja nicht was Zylinder[1] oder Zylinder[978] ist!?!?

Wie löst ihr das?

Gruss blimaa
 
Allerdings wenn ich nicht in das Array reinkommentieren kann
Dein Array ist doch bestimmt ein Array of Struct? Da könntest Du noch einen String "Description" mit reinpacken und die Aggregatbezeichnung da reinschreiben - und könntest den sogar am HMI anzeigen.

Harald
 
Hi

Gar keine schlechte Idee. Das mit den 900 Zylinder war ja auch nur ein Beispiel ;).
Allerdings wenn ich pro Station 10 Zylinder habe, wirds ja schon unübersichtlich.
Wenn ich den Zylinder ansteuern will z.B.

Code:
u Zylinder[1].Status_aus   
s Zylinder[8].Ansteuerung_Ein
s Zylinder[7].Ansteuerung_Aus

Im Moment sehe ich in der Kommentarspalte dann noch folgendes (weil ichs im DB beim entsprechenden Eintrag so beschrieben habe):

Code:
u Zylinder[1].Status_aus                    //Zylinder 1: Hubzylinder oben
s Zylinder[8].Ansteuerung_Ein           //Zylinder 8: Y-Achse nach rechts
s Zylinder[7].Ansteuerung_Aus          //Zylinder 7: X-Achse nach hinten


Kannst du noch ein Beispiel, Printscreen machen, was du genau mit Variablenmultiplexen meinst?



Gruss blimaa
 
Falls ich dich nicht völlig missverstanden habe, möchtest du doch anstelle der nichtssagenden Zahlen als Index Symbole verwenden. Du verwendest also z.Bsp. anstatt der '1' das Symbol bzw. die symbolische Konstante "Hubzylinder", deren Wert '1' ist. Diese Konstanten müssen natürlich vorher deklariert werden, als globale Konstanten z.Bsp. in einer Variablentabelle. Das ganze wäre in etwa vergleichbar mit Textlisten in Flexible etc.

Code:
U    Zylinder[1].Status_aus
U    Zylinder["Hubzylinder"].Status_aus

Es würde mich mal interessieren ob das ganze praktikabel ist.

Ergänzung:
Die Idee kam mir nämlich auch erst neulich über Nacht ;-) .
... Da es in TIA einige Funktionen gibt, die mit ARRAYs umgehen können, mit STRUCTs oder BLOCK_DBs jedoch nicht.
 
Zuletzt bearbeitet:
uiuiuiui
wenn das geht mit den konstanten :-)
Das würde ja scho in V13 gehen oder?
Aber würden nicht alle [1] von jedem array [hubzylinder] heissen?
Egal was das für ein Array ist?
 
uiuiuiui
wenn das geht mit den konstanten :-)
Das würde ja scho in V13 gehen oder?
Aber würden nicht alle [1] von jedem array [hubzylinder] heissen?
Egal was das für ein Array ist?

Nö, weil der Name ja nur eine lesbarere Version der Zahl ist.
Du kannst auch 100 Namen für den Wert 1 deklarieren.
 
Hi

Also soweit geht das. Sowol im FB deklariert oder Global in der Variablentabelle.
Nun habe ich nur noch das Problem, dass wenn es beim Zylinder ein Ein und ein Aus gibt, beim Zylinder 2 aber ein Auf und ein Ab gibt. Aber da ich mein Zylinder ja nur im UDT kommentieren kann, haben dann alle Zylinder nur "EIN" und "AUS" als Befehl. Konstante_Array.JPG

Wenn jetzt noch gelöst werden kann, dass ich für Zylinder 1 die Befehle Ein und Aus und für den Zylinder 2 Auf und Ab deklarieren kann..:rolleyes:
 
Es würde mich mal interessieren ob das ganze praktikabel ist.
Ja, ist es!
:cool: :D


Mach' ich auch mit (Zähler-) Schrittketten, Betriebsmodi u.ä. so.
Global hab'ich außer IOs und Takt-/Systemmerkerbyte nur Konstanten deklariert.
Insbesondere spätere Anpassungen fallen mir so viel leichter, da ich nur die Konstantentabelle anlaufen muss.

Hier mal ein Auszug:

TIA Konstanten.jpg

Auch wenn sich die Zahlenwerte öfter wiederholen.
Im Programm kann ich so unabhängig vom konkreten Zahlenwert arbeiten und z.B. später einfacher Anpassungen an Textlisten im HMI machen.
 
Natürlich gibt es auch hierfür eine Lösung. Nenne die beiden Endlagen einfach "GS" für Grundstellung und "AS" für Arbeitsstellung :ROFLMAO: .

Ja ok, so heissen sie ja auch bei uns. Nur ist es manchmal auch schön wenn man nach 5 Jahren direkt im Programm immer noch weiss wo GS und wo AS ist :rolleyes:.
Aber theoretisch könnte ja dann die Konstante "Hubzylinder" heissen und im Kommentar dann folgendes stehen "GS= oben, AS= unten"

Hmm nochmals drüber schlafen :roll:

Gruss blimaa
 
Zurück
Oben