STRIN als Bedingung

der_NooB

Level-2
Beiträge
131
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Ich bin wieder da. Ich hoffe, ihr blockiert mich nicht wegen meiner vielen Fragen.:("

also ich habe versucht STRING als Bedingung zu machen, hat nicht funktioniert.
und bestimmt kann ich anstatt den kompletten Satz zu schreiben den STRING Wert abfragen, wie geht das ?

danke ^_^
 

Anhänge

  • 1.png
    1.png
    74,7 KB · Aufrufe: 33
  • 2.png
    2.png
    32,9 KB · Aufrufe: 33
Super Danke dir,

Eine Frage: Wo deklariere ich meine Variablen am besten, anstatt dass ich alles im PLC_PRG schreibe? !!
GVL oder DUT ?
um strukturierter zu arbeiten ^_^
Ich glaube Du musst Dich erstmal in die Grundlagen der SPS einlesen und die dort verwendeten Begrifflichkeiten.
DUTs sind keine Variablen, sondern das sind benutzerdefinierte Datentypen, z.B. Strukturen oder ENUMs.
GVL steht für globale Variablenliste(n). Das sind Sammlungen von Variablen, auf die von überall her zugegriffen werden kann, dabei kann es mehrere GVLs geben.
Bei GVLs gilt soviel wie nötig, so wenig wie möglich. Man sollte versuchen so viel wie möglich lokal abzuwickeln, auch um Fehler zu vermeiden.
 
Auch zur besseren Lesbarkeit, kannst du dich gerne mal entscheiden ob du snake_case oder doch lieber PascalCase verwenden willst, aktuell machst du ja ein bisschen von beidem.

Und auch ein Tipp: Mach gerne einfach mal ein Thema in dem alle deine Fragen geklärt werden können, anstatt für jede kleine Frage ein neues Thema zu starten.. bleibt es übersichtlicher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und auch ein Tipp: Mach gerne einfach mal ein Thema in dem alle deine Fragen geklärt werden können, anstatt für jede kleine Frage ein neues Thema zu starten.. bleibt es übersichtlicher.
Was übersichtlicher sein wird, da kann man sich drüber streiten.
Wenn alles in einem Thread gepackt wird steigt die Beitragszahl hier zwar nicht so an, aber die Antworten zu seinen einzelnen Fragen sind in dem Thread dann bunt durcheinandergewürfelt.
Für jede Frage einen Thread auf machen ist da schon besser.
 
Ich glaube Du musst Dich erstmal in die Grundlagen der SPS einlesen und die dort verwendeten Begrifflichkeiten.
bei Siemens war Interne Variablen die in FCs sind, und Symboltabelle war wie glaub hier GVL.
oder ?
DUTs sind keine Variablen, sondern das sind benutzerdefinierte Datentypen, z.B. Strukturen oder ENUMs.
wie FB, habe ich so richtig verstanden oder ?
GVL steht für globale Variablenliste(n). Das sind Sammlungen von Variablen, auf die von überall her zugegriffen werden kann, dabei kann es mehrere GVLs geben.
Bei GVLs gilt soviel wie nötig, so wenig wie möglich. Man sollte versuchen so viel wie möglich lokal abzuwickeln, auch um Fehler zu vermeiden.
ich will Interne Variablen benutzten, die GVLs dann? anstatt dass ich alles oben bei PLC_PRG schreibe. Stimmt ?
 
Zuletzt bearbeitet:
bei Siemens war Interne Variablen die in FCs sind, und Symboltabelle.

wie FB, habe ich so verstanden oder ?

ich will Interne Variablen benutzten, die GVLs dann anstatt dass ich alles oben bei PLC_PRG schreibe. Stimmt ?
aaalso...
  • Interne Variablen
    • kannst Du nur in dem FB, FC oder PRG nutzen, genauso bei Siemens im FC, FB oder OB
    • Diese Variablen nutzt Du innerhalb des aufgerufenen Codes, kannst/sollst Du von woanders nicht drauf zugreifen
    • Somit kannst Du z.B. in jeder Funktion eine Zählwariable X anlegen, die beeinflussen sich nicht gegenseitig, jede Variable existiert nur in dem jeweiligen FC/FB/PRG.
  • Symboltabelle
    • Siemens: Zuordnung von nummerierten Objekten (FC, FB, OB, Merker, Timer, ....) zu Namen
    • CoDeSys: Gibt es in diesem Sinne nicht
  • DUT (Siemens UDT)
    • Ist ein Benutzerdefinierter Datentyp, z.B.
      • Struktur: Du willst 10 verschiedene Variablen (z.B. für einen Motor) zusammenfassen
      • Enum: Du willst Zahlenwerten einen Namen geben
  • FB
    • Funktions-Block: Hat eine Instanz, behält die Werte seiner VAR-Variablen bis zum nächsten Zyklus
  • FC
    • Funktion: Hat keine Instanz, kann sich also nichts merken. Hat einen Rückgabewert und leidet dann unter Amnesie
  • GVL
    • Globale Variablenliste: Alle hier definierten Variablen kannst Du ÜBERALL im Programm aufrufen und benutzen
    • Vorsicht bei den Namen: Wenn eine Variable hier genau so heißt, wie in einem FC/FB/PRG, so überlagert eine die andere und Du kannst nur eine von beiden aufrufen/nutzen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
aaalso...
  • Interne Variablen
    • kannst Du nur in dem FB, FC oder PRG nutzen, genauso bei Siemens im FC, FB oder OB
    • Diese Variablen nutzt Du innerhalb des aufgerufenen Codes, kannst/sollst Du von woanders nicht drauf zugreifen
    • Somit kannst Du z.B. in jeder Funktion eine Zählwariable X anlegen, die beeinflussen sich nicht gegenseitig, jede Variable existiert nur in dem jeweiligen FC/FB/PRG.
  • Symboltabelle
    • Siemens: Zuordnung von nummerierten Objekten (FC, FB, OB, Merker, Timer, ....) zu Namen
    • CoDeSys: Gibt es in diesem Sinne nicht
  • DUT (Siemens UDT)
    • Ist ein Benutzerdefinierter Datentyp, z.B.
      • Struktur: Du willst 10 verschiedene Variablen (z.B. für einen Motor) zusammenfassen
      • Enum: Du willst Zahlenwerten einen Namen geben
  • FB
    • Funktions-Block: Hat eine Instanz, behält die Werte seiner VAR-Variablen bis zum nächsten Zyklus
  • FC
    • Funktion: Hat keine Instanz, kann sich also nichts merken. Hat einen Rückgabewert und leidet dann unter Amnesie
  • GVL
    • Globale Variablenliste: Alle hier definierten Variablen kannst Du ÜBERALL im Programm aufrufen und benutzen
    • Vorsicht bei den Namen: Wenn eine Variable hier genau so heißt, wie in einem FC/FB/PRG, so überlagert eine die andere und Du kannst nur eine von beiden aufrufen/nutzen
Super erklärt Dankeschön.

aber wenn ich Aktion benutze dann kann ich meine Variable entweder bei PLC_PRG deklarieren oder GVL richtig ?
aber irgendwann mal wird bei PLC_PRG nicht mehr übersichtlich.
dann kann ich einen Zweiten PLC machen unter dem andere Aktionen richtig ?
und so ist Strukturierte Programmierung bei CodeSys richtig ?
 
Es wäre auch nett, wenn ihr mir sagen könntet, wo ich die Nutzung von A, M, T und P lesen oder erfahren kann.
Ich kann ja auch durch eine Anwendung ein Programm erstellen und dort meine internen Variablen sowie mein Programm schreiben!
Den Unterschied erkenne ich nicht.
 
Super erklärt Dankeschön.

aber wenn ich Aktion benutze dann kann ich meine Variable entweder bei PLC_PRG deklarieren oder GVL richtig ?
aber irgendwann mal wird bei PLC_PRG nicht mehr übersichtlich.
dann kann ich einen Zweiten PLC machen unter dem andere Aktionen richtig ?
und so ist Strukturierte Programmierung bei CodeSys richtig ?
Nein, eine Aktion ist quasi nur ein ausgelagerter Code innerhalb einer Funktion. Das gibt es bei Siemens so nicht. Es ist Code, der quasi an der Stelle im FC/FB/PRG, wo Du ihn aufrufst, eingefügt wird. Man kann das nutzen, um den Code übersichtlicher zu gestalten.

Strukturieren tust Du den Code, indem Du einzelne Funktionen Deines Programms in FC (Funktionen)/FB(Funktionsblöcke)/PRG(Programme) aufteilst. Vorteil: Diese einzelnen FC/FB/PRG kannst Du später auch kopieren und in neuen Programmen nutzen. Du kannst sie in Bibliotheken auslagern. Da hast Du gekapselten Code --> Siehe auch interne Variablen.

Im Idealfalle ruft PLC_PRG dann nur noch FCs/FBs/PRGs auf.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, eine Aktion ist quasi nur ein ausgelagerter Code innerhalb einer Funktion. Das gibt es bei Siemens so nicht. Es ist Code, der quasi an der Stelle im FC/FB/PRG, wo Du ihn aufrufst, eingefügt wird. Man kann das nutzen, um den Code übersichtlicher zu gestalten.

Strukturieren tust Du den Code, indem Du einzelne Funktionen Deines Programms in FC (Funktionen)/FB(Funktionsblöcke)/PRG(Programme) aufteilst. Vorteil: Diese einzelnen FC/FB/PRG kannst Du später auch kopieren und in neuen Programmen nutzen. Du kannst sie in Bibliotheken auslagern. Da hast Du gekapselten Code --> Siehe auch interne Variablen.

Im Idealfalle ruft PLC_PRG dann nur noch FCs/FBs/PRGs auf.
Sorry aber ich habe nicht verstanden.
wann macht Sinn einen Aktion zu benutzen, Programm, oder FC.
ich komme leider nicht so klar, danke für deine Mühe
und wenn ich bei FC aufrufen kann was macht PRG dann 🤒🤕
 
sps_plc_reaktionszeit.jpg


PLC_PRG ist dein Task, also dein Hauptprogramm.. alles was sich dort drin befindet und aufgerufen ist, wird abgearbeitet ("von oben nach unten").

Rufst du jetzt eine Funktion (FC) in deinem Task (PRG) auf, so wird diese Funktion ausgeführt.
 
sps_plc_reaktionszeit.jpg


PLC_PRG ist dein Task, also dein Hauptprogramm.. alles was sich dort drin befindet und aufgerufen ist, wird abgearbeitet ("von oben nach unten").

Rufst du jetzt eine Funktion (FC) in deinem Task (PRG) auf, so wird diese Funktion ausgeführt.
Das heißt PRG ist wie OB bei Siemens, da wird kein Programm geschrieben oder Variablen deklariert sondern nur meine Aktionen und FCs oder FBs gerufen
 
Zurück
Oben