Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Programmierung mit ST (Structured Text)

  1. #1
    Registriert seit
    18.12.2014
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Leute.
    Ich bin noch ein Anfänger mit SPS Maschinen, bin aber auf ein kleines Problem gestoßen das
    ich leider noch nicht lösen konnte.

    Ist es irgendwie möglich Eingaben vom User abzufangen und darauf zu reagieren?

    Kleines Beispiel:
    Ich habe einen Sensor der zählt Objekte. Immer wenn er 3 gezählt hat, wechselt eine Lampe die Farbe, von Grün auf Rot, dann wieder auf Grün usw.

    Jetzt möchte ich aber, wenn ein Benutzer die Farbe mit einem Knopf umstellt der Zähler wieder von 0 gezählt wird. Wenn er aber denselben Knopf drückt wie die aktuelle Farbe, dann soll
    gar nichts passieren und alles wie gewohnt weiterlaufen. Mein Code sieht bisher so aus von der reinen Logik:

    Code:
    
    IF (Sensor=True) THEN
        
            Zaehler:=+1;
            
        ELSIF (Zaehler>=3 AND Gruen=True) THEN
        
                Gruen:=False;
                Rot:=True;
                Zaehler:=0;
                
        ELSIF (Zaehler>=3 AND Rot=True) THEN    
                
                Gruen:=True;
                Rot:=False;
                Zaehler:=0;
                
        END_IF;
    Ich müsste praktisch vergleichen ob die aktuelle Farbe der Lampe mit dem übereinstimmt, was der Benutzer drückt. Das ist aber ein uns dasselbe, da meine Lampe ja praktisch ein bool ist der 0 oder 1 sein kann, deswegen weiss ich nicht wie ich etwas mit sich selbst vergleichen kann...
    Zitieren Zitieren Programmierung mit ST (Structured Text)  

  2. #2
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.647
    Danke
    788
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Zitat Zitat von DerBenutzer Beitrag anzeigen
    Hallo liebe Leute.
    Ich bin noch ein Anfänger mit SPS Maschinen, bin aber auf ein kleines Problem gestoßen das
    ich leider noch nicht lösen konnte.

    Ist es irgendwie möglich Eingaben vom User abzufangen und darauf zu reagieren?

    Kleines Beispiel:
    Ich habe einen Sensor der zählt Objekte. Immer wenn er 3 gezählt hat, wechselt eine Lampe die Farbe, von Grün auf Rot, dann wieder auf Grün usw.

    Jetzt möchte ich aber, wenn ein Benutzer die Farbe mit einem Knopf umstellt der Zähler wieder von 0 gezählt wird. Wenn er aber denselben Knopf drückt wie die aktuelle Farbe, dann soll
    gar nichts passieren und alles wie gewohnt weiterlaufen. Mein Code sieht bisher so aus von der reinen Logik:

    Code:
    
    IF (Sensor=True) THEN
        
            Zaehler:=+1;
            
        ELSIF (Zaehler>=3) or TasteRot) AND Gruen THEN
        
                Gruen:=False;
                Rot:=True;
                Zaehler:=0;
                
        ELSIF (Zaehler>=3) or TasteGruen) AND Rot THEN    
                
                Gruen:=True;
                Rot:=False;
                Zaehler:=0;
                
        END_IF;
    Ich müsste praktisch vergleichen ob die aktuelle Farbe der Lampe mit dem übereinstimmt, was der Benutzer drückt. Das ist aber ein uns dasselbe, da meine Lampe ja praktisch ein bool ist der 0 oder 1 sein kann, deswegen weiss ich nicht wie ich etwas mit sich selbst vergleichen kann...
    So z.B.
    TasteX muss allerdings als Flanke gebildet sein.

    Bool musst du nie auf True oder False vergleichen wenn du ein Boolsches ergebnis erwartest. Da eine Boolsche Variable ja schon ein Boolsches Ergebnis zurückgibt.

    Also IF Variable1 AND NOT Variable2 THEN
    anstatt
    IF (Variable1=TRUE) and (Variable2=FALSE) THEN

    mfG René

  3. #3
    DerBenutzer ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2014
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super, vielen Dank für die schnelle Antwort. Ja das mit dem Bool war ein Flüchtigkeitsfehler meinerseits.
    Könnt ihr mir vielleicht gute Literatur mit praktischen Beispielen empfehlen zu ST?
    Ich habe bisher nur sehr theoretische Werke gefunden, die sich mehr mit dem Aufbau und der Funktionsweise einer SPS
    beschäftigen.

    Ich habe da nämlich noch ein Problem mit der Variablendeklaration.
    Eigentlich sind "Grün" und "Rot" ja Steuerungssignal die von Außen kommen.
    Dementsprechend wollte ich sie mit VAR_INPUT deklarieren.
    Allerdings hat man Variablen die innerhalb von VAR_INPUT deklariert sind
    ja nur Lesezugriff, ich könnte also in einer Schleife wie hier den Wert nicht ändern.

    Wie macht man das idealerweise? Übergeb ich meinen input mit einer zuweisung auf lokale Variablen, sprich:

    Code:
    VAR_INPUT
    Rot:BOOL;
    END_VAR
    VAR
    Rot_lokal:BOOL;
    END_VAR
    Rot_lokal:=rot;
    ?
    Geändert von DerBenutzer (19.12.2014 um 10:26 Uhr)

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    756
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Zitat Zitat von DerBenutzer Beitrag anzeigen
    Eigentlich sind "Grün" und "Rot" ja Steuerungssignal die von Außen kommen.
    Warum das? Werden "Rot" und "Grün" im aufrufenden Programm auch manipuliert? Wenn nicht, würde ich sie lokal im FB deklarieren.
    Zitat Zitat von DerBenutzer Beitrag anzeigen
    Allerdings hat man Variablen die innerhalb von VAR_INPUT deklariert sind ja nur Lesezugriff
    Ich kann nur für CoDeSys sprechen, dort kann ein FB seine VAR_INPUTs auch beschreiben. Eigentlich müsste der Bereich also VAR_PUBLIC und nicht VAR_INPUT heissen.
    Allerdings ist die Rückmeldung von Ergebnissen im VAR_INPUT-Bereich unüblich und wohl durchaus geeignet, einen Glaubenskrieg zu entfachen. Wenn Du das machen willst, würde ich die Variablen besonders kennzeichen, z. B. so:
    Code:
    VAR_INPUT   (* INPUT, FB read only *)
       inpSensor:BOOL;
    END_VAR
    VAR_INPUT   (* PUBLIC *)
       pubGruen:BOOL;
       pubRot:BOOL;
    END_VAR
    Empfehlenswert ist das aber nur, wenn "Rot" und "Grün" ausschliesslich zwischen dem PRG und diesem einen FB ausgetauscht werden und nur durch den FB manipuliert werden. Wenn das PRG diese Variablen dagegen auch manipuliert oder sie noch an weitere FB's übergeben muss, sind sie besser im PRG aufgehoben. Dann kann man sie als VAR_IN_OUT an die FB's übergeben.

  5. #5
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.647
    Danke
    788
    Erhielt 654 Danke für 497 Beiträge

    Standard

    Statt VAR_INPUT kannst du auch VAR_IN_OUT nehmen
    Die werden zu beginn gelesen und am ende geschrieben.

    Du kannst also eine Variable an VAR_IN_OUT inkrementieren.

    Also Deklarationen nach Bedarf:
    VAR_INPUT // Eingangsschnittstelle
    VAR_OUTPUT // Ausgangsschnittstelle
    VAR_IN_OUT // Sowohl Ein wie auch Ausgabe Ich nehm die z.B. bei UDTs standartmässig da in UDTs bei mir meist von allen Variablentypen vorhanden sind. Also welche die ich auch beschreiben muss aber auch z.t. nur Parameter.

    VAR_Temp // Flüchtige Variablen. Zustand undefiniert bis drauf geschrieben wird und zwar in JEDEM Zyklus
    VAR // Statische Variablen. Werden im Instanzdb gesichert und wie Merker behandelt.
    CONST // Lokale Konstanten. Brauchen keine Deklaration weil sie eigentlich nur ein Label darstellen deren Inhalt hier definiert wird.
    Code:
    CONST
       Max_Abweichung := 3; // Maximal zulässige Abweichung soll/ist 
       Max_OeffnungZU := 5; // Maximal zulässiger öffnungswinkel um als Geschlossen zu gelten
       Min_OeffnungAUF := 85; // Minimaler öffnungswinkel um als offen zu gelten
       Offenwinkel := 90; // Winkel für volle öffnung der KLappe
    END_CONST
    Auf Const sollte verzichtet werden, da in TIA diese Möglichkeit so wegfällt. Stattdessen Temp verwenden und direkt nach der Schnittstellenbeschreibung einen Wert zuweisen. Braucht halt ne Typdeklaration.

    mfG René

  6. #6
    DerBenutzer ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.12.2014
    Beiträge
    13
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe mir das Feedback mal zu Herzen genommen und in einem neuen Thread "weiterverarbeitet". So ganz blicke ich aber immer noch nicht durch.

Ähnliche Themen

  1. Studienprojekt Structured Text Interpreter
    Von antidose im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 11.02.2014, 16:39
  2. Structured Text FB Einbindung
    Von onikos im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 15.01.2014, 19:27
  3. Structured Text gemäß IEC 61131-3)
    Von megni im Forum CODESYS und IEC61131
    Antworten: 25
    Letzter Beitrag: 11.06.2013, 12:59
  4. [ ST - Structured Text ] Pointer Casten
    Von caret im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 16.10.2009, 22:38
  5. Structured Text RSLogix
    Von kammi-kaze im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 20.07.2009, 15:01

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •