TIA Funktionen aufrufen

--alex--

Level-2
Beiträge
107
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

Ich habe ein SCL Netzwerk wo ich mit IF .. END_IF 6 Anlagen untereinander vergleichen muss.
Dazu habe ich aktuell 15 IF Abfragen.

Das hat in einem SCL Netzwerk soweit funktioniert da alle IF Abfragen nur unter einer gemeinsamen Bedingung abgefragt wurden.

Jetzt soll sich die Funktion der Anlage ändern und ich müsste dazu die 15 vorhanden IF Abfragen mehrmals unter verschiedenen Bedingungen aufrufen.
Jetzt könnte ich 15 FC´s erstellen und diese in meinem Programm dementsprechend oft aufrufen.
Das möchte ich aber, wenn möglich, vermeiden.

Gibt es eine Möglichkeit in einem Netzwerk so etwas ähnliches wie "Funktionen" zu erstelle und diese dann in einen anderen Netzwerk immer wieder aufzurufen?

Verzeiht mir wenn meine Anfrage zu banal ist, aber ich habe das so noch nicht gebraucht.

Danke
Alex
 
Keine Ahnung wie ich euch das besser beschreiben kann.
Wie gesagt, wenn ich 15 FC´s erstellen würde, wäre das kein Problem.
Dann rufe ich die, in der Kombination auf, die ich brauche.
Die Kombination ist auch nicht das Problem.
Ich möchte mir halt das Anlegen der 15 FC´s ersparen -- wenn möglich.

Packe ich alle 15 IF-Abfragen in einem FC, und rufe ich den auf, dann werden immer alle 15 Abfragen ausgeführt.
Das war bis jetzt so, soll aber jetzt eben anders werden.

Je nach Gegebenheit, brauche ich unterschiedliche Kombinationen der Abfrage:
1,4,5 und 7
1,2,3, 14 und 15
4,8 und 2
1,2,3,4,5,6,78,9,10,11,12,13,14 und 15
...
...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist ein bißchen schwer da, so ins Blaue, etwas zu empfehlen. Wie wäre es wenn du deinem FC das übergibst, was du benutzen möchtest ? Mir ist allerdings diese "Index"-Geschichte "ein ganz klein bißchen" suspekt - bis du sicher, das da in ein-zwei Monaten noch jemand durchsteigt wenn du sowas machst ?

Vom Grundsatz ist deine Überlegung nicht schlecht - wegen DRY (Don't repeat yourself). Vielleicht konkretisierst du das Ganze mal mehr - vielleicht mit deinem bisherigen Code ...?
 
Zuletzt bearbeitet:
Ein FC und diese Nummern übergeben.(mit true/false)?
Diese Nummern verwendest du dann.Die wo nicht verwendet werden kriegen false.
Vielleicht als case Struktur mit if/else.Steht in der Nummer Null springst du aus dem Case raus.
Das sollen mal die SCL Spezialisten erklären.
 
Die IF Abfragen sind denkbar simpel, müssen aber jetzt eben in unterschiedlichen Kombinationen aufgerufen werden.
Es geht darum, 6 Maschinen miteinander zu Vergleichen und ihnen dann, letztendlich aufgrund der Betriebsstunden, eine Wertigkeit zu geben.


Code:
    IF "KM2_DB".K2.Bereit AND ("KM3_Freigabe" AND "KM3_DB".K2_Freigabe) THEN
        IF "Regelung_KM_DB"."KM1-2-3_Master-Slave".BS[3].gesamt."real" >= "Regelung_KM_DB"."KM1-2-3_Master-Slave".BS[5].gesamt."real" THEN
            "Regelung_KM_DB"."KM1-2-3_Master-Slave".Master[3] -= 1;
        ELSE
            "Regelung_KM_DB"."KM1-2-3_Master-Slave".Master[5] -= 1;
        END_IF;
    END_IF;

Aufgrund verschiedener Zustände (Anforderung, Störungen, etc. ) werden nicht immer alle Maschinen miteinander verglichen.
Diese Logik ist zwar ein bisschen Tricky aber gut dokumentiert.


In LASAL (Sigmatek) geht das recht einfach.
Hier erstelle ich in einer Klasse mehrere Methoden und rufe die in der CyWork einfach nach belieben auf.

Im C# gibt es ja auch so etwas wie lokale Funktionen die man definiert und dann aufrufen kann.

Jetzt dachte ich mir, dass es im TIA Portal auch so etwas gibt.
Wollte die Frage eigentlich gar nicht stellen, da mir die Anfrage zu simpel war und ich davon ausging, dass es so etwas auch im TIA gibt und ich es halt nicht kenne.

Vielleicht habe ich meine Frage einfach nur dämlich formuliert?
 
Zuletzt bearbeitet:
Im C# gibt es ja auch so etwas wie lokale Funktionen die man definiert und dann aufrufen kann.
wie sähe das denn in C# aus ?
Abrt grundsätzlich bleibe ich bei dem Ansatz deinen FC mit einem zusätzlichen Parameter aufzurufen - das könnte ja z.B. ein Bitmuster sein, das du via DWord übergibst (binär - also 2#xxxxxxxx)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe es jetzt so gelöst, dass ich den FC mit 15 Bool Parametern aufrufe.
Das funktioniert und macht genau das was ich wollte.
Nächste Woche ersetze ich meine Parameter durch ein DWord.

Danke euch für eure Hinweise.
Die haben mich zum Nachdenken angeregt.
 
Zurück
Oben