TIA KOP-Netzwerk in SCL übersetzen / umschreiben

Buschmann

Level-2
Beiträge
115
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich möchte das angehangene KOP-Netzwerk in SCL übersetzen / umschreiben, um es anschließend einfacher erweitern zu können. In KOP würde das Netzwerk zu sehr "aufgebläht". Mit SCL habe ich aber zuvor noch nie programmiert. Daher folgende Fragen:
- Wie wird die Flanke getriggert?
- Die ADD- und MOVE-Anweisungen finde ich rechts in der Anweisungsliste nicht?
- Müssen / Sollten REGIONEN eingesetzt werden? Wenn ja, wie?
- Kann mir jemand bis zur ersten ADD-Instruktion weiterhelfen? Die Parallelverzweigungen sollten anschließend alleine machbar sein.

Gruß
Buschmann


Code:
IF "St1_Schrittk_Wender_DB".Schritt."Bestimmung Ablauf Bauteil".Aktiv
    AND ("St2_Schrittk_Abstapelung_DB".Schritt."BT Einfahrfreigabe Roboter Palette".Aktiv AND "St2_Daten".Roboter[1].Status.Akt_PRG_Nummer = 1)
    OR "St2_Daten".Roboter[1].Status.Akt_PRG_Nummer <> 1
    R_TRIG #Flanke[3]
    "St2_Daten".Roboter[1].Status.Akt_PRG_Nummer <> 1
    ADD
    "ANL_Daten".Datensatz_Foerderstrecke[5].Anz_Bauteile
    "St1_Daten".Position_BS_Wender
    "St2_Schrittk_Abstapelung_DB".Schritt."BT Einfahrfreigabe Roboter Palette".Aktiv
    "St2_Daten".Roboter[1].Status.Akt_PRG_Nummer = 1
    "St2_Schrittk_Abstapelung_DB".Schritt."BT Einfahrfreigabe Roboter Palette".Aktiv
    MOD
    #Modulo_BS_Wender
    "St1_Daten".Datensatz_Scheibe[2].Rezeptur.Verpackungsvorschrift = 1
    "St1_Daten".Datensatz_Scheibe[2].Status = 1
    #Modulo_BS_Wender = 0
    "St1_Daten".Datensatz_Scheibe[2].Wenden
    "St1_Daten".Datensatz_Scheibe[2].Rezeptur.Verpackungsvorschrift
 

Anhänge

  • FC102 - KOP.PNG
    FC102 - KOP.PNG
    64,7 KB · Aufrufe: 87
In KOP würde das Netzwerk zu sehr "aufgebläht".
Man muss nicht ein ganzes Ablaufprogramm in ein einziges Netzwerk quetschen.
Das sichtbare Bild würde ich z.B. in 3 bis 5 Netzwerke aufteilen. Das lässt sich auch viel leichter erweitern.

Mit SCL habe ich aber zuvor noch nie programmiert.
Dann lass es lieber. SCL ist für Logik sehr ungeeignet und noch viel unübersichtlicher als dein Monster-KOP-Netzwerk.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie wärs, es in KOP zu lassen und dafür einfach Sammelvariablen in Netzwerke bilden, denen einen aussagekräftigen Namen spendieren und dann in mehreren Netzwerken den Code abbilden?

Wäre meiner Ansicht nach jedenfalls leserlicher als ein Batzen an SCL Code.
 
ChatGPT kann deine Frage auch gut beantworten ;)

Für die positive Flanke (Rising Edge) wird R_TRIG verwendet. Für die negative Flanke (Falling Edge) wird F_TRIG verwendet. Ein Beispiel für die positive Flanke sieht so aus:

Code:
VAR
FlankenErkennung : R_TRIG;
Trigger : BOOL;
END_VAR

FlankenErkennung(CLK := DeinSignal);Trigger := FlankenErkennung.Q;

Die Addition (ADD) und Zuweisung (MOVE) in SCL werden direkt mit Operatoren durchgeführt. Die Addition erfolgt so:

Code:
Ergebnis := Operand1 + Operand2;

Die Zuweisung (MOVE) erfolgt so:

Code:
ZielVariable := Wert;

Regionen in SCL sind optional und dienen der besseren Strukturierung des Codes. Eine Region wird so definiert:

Code:
REGION 'Name der Region'
// Dein Code hier
END_REGION

Regionen helfen, den Code übersichtlicher zu gestalten, sind aber nicht zwingend notwendig.
 
Eine Flanke kannst du allerdings auch so machen:

Code:
VAR
VorherigerZyklus : Bool;
VaribaleDieAbgefragtWird : BOOL;
END_VAR

IF VaribaleDieAbgefragtWird AND NOT VorherigerZyklus THEN
// Hier Code
END_IF;
VorherigerZyklus := VaribaleDieAbgefragtWird;
 
Zurück
Oben