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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Analogwert verarbeiten SCL

  1. #1
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo SPSler,

    bin momentan dabei SCL zu lernen.
    Habe bisher nicht viel Erfahrung...


    Ich möchste zur Übung einfach einen Analogwert z.B. Temperatur erfassen und ab bestimmte Unter-/ Obegrenzen ein digitalen Ausgang ein und ausschalten.

    Ich habe schonmal einbisschen angefangen aber bin mir nicht sicher wie richtig es ist.
    Mein Problem ist, dass ich diese ganze Sache nur simuliert testen kann.
    ich weiß allerdings nicht, wie ich bei PLCSIM einen analogen Eingang simulieren kann.

    Jemand evtl. ratschläge und tipps ?


    Hier noch mein SCL CODE:


    Code:
    Input                    
        Temperatur_1_Ist_wert    Real    0.0    0.0    True    
        
        Output                    
        Ausgang Anzeige_1    Bool    6.0    false    True    
        Ausgang Anzeige_2    Bool    6.1    false    True    
                            
        InOut                    
                            
        Static                    
        obergrenze    Int    8.0       520    True    
        untergrenze    Int    10.0    500    True    
                            
    
    
    IF #Temperatur_1_Ist_wert < #untergrenze THEN
      #"Ausgang Anzeige_1" := true;
    ELSE IF #Temperatur_1_Ist_wert =512 THEN
        #"Ausgang Anzeige_1":=false;
        END_IF;
        
        IF #Temperatur_1_Ist_wert > #obergrenze THEN
          #"Ausgang Anzeige_2" := true;
        ELSE IF #Temperatur_1_Ist_wert = 512 THEN
            #"Ausgang Anzeige_2" := false;
             END_IF;
           END_IF;
    END_IF;
    Zitieren Zitieren Analogwert verarbeiten SCL  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Zitat Zitat von EMZ Beitrag anzeigen
    ich weiß allerdings nicht, wie ich bei PLCSIM einen analogen Eingang simulieren kann.
    Wenn du das "alte" PLCSIM (S7-300/400) meinst, dann müsste das mit...
    PLCSIM -> Einfügen -> Allgemein -> PEW-Nummer eintippen gehen.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von EMZ Beitrag anzeigen
    Code:
        Static                    
        obergrenze    Int    8.0       520    True    
        untergrenze    Int    10.0    500    True    
    
    ...
    ELSE IF #Temperatur_1_Ist_wert =512 THEN
    ...
        ELSE IF #Temperatur_1_Ist_wert = 512 THEN
    ...
    Warum hast Du die 512 im Code nicht durch eine Variable dargestellt, wie Du es bei der Unter- oder Obergrenze völlig zu recht getan hast?
    Wenn Du Deine Unter- oder Obergrenze anpassen musst, kannst Du diese direkt in der Bausteinschnittstelle ändern. Die 512 ist aber auch von diesen beiden abhängig. Im jetzigen Zustand musst Du also Dein Programm durchforsten und es besteht immer die Möglichkeit, das Du vlt. eine Stelle übersiehst und somit dann hinterher u.U. eine Fehlfunktion hast.

    Besser ist es also, alle solche Werte durch Variablen darzustellen oder wenn möglich, sogar zu berechnen.

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Was die "512" darstellen sollen hab ich mich auch schon gefragt.
    Vom Code her sieht es ja aus als wäre das dein "OK-Wert"...

    Aber warum mit "="?

    Bei einem reellen Analogwert kann's gut sein das der Wert von 513 auf 511 geht...
    Obwohl du hier wahrscheinlich nur einen KLIMA-RTD PEW-Wert nach REAL konvertiert hast. Gibt wenigsten nicht viele Kommastellen.
    Wenn man bei anderen Anwendungen dann noch ein paar mehr Kommastellen hätte...

    Du kennst doch das Real-Kredo..
    10.0 * 1.0 / 10.0 != 1.0
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #5
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    Was die "512" darstellen sollen hab ich mich auch schon gefragt.
    Vom Code her sieht es ja aus als wäre das dein "OK-Wert"...
    Ich vermute, einfach ein beliebig gewählter Wert ungefähr in der Mitte zw. 500 (Untergrenze) und 520 (Obergrenze).



    Zitat Zitat von RONIN Beitrag anzeigen
    Aber warum mit "="?
    Weil er Anfänger ist und ihm daher die Erfahrung fehlt?




    Zitat Zitat von RONIN Beitrag anzeigen
    Du kennst doch das Real-Kredo..
    10.0 * 1.0 / 10.0 != 1.0
    Vermutlich erst jetzt.

  6. #6
    EMZ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Erstmals danke für die schnelle Antwort.

    Ich bin schon froh dass es vom Programmaufbau keine fatalen fehler hat.

    Was kann statt "=" denn hin??

    Ja die werte sind nur frei gewählte werte.

    Du kennst doch das Real-Kredo..
    10.0 * 1.0 / 10.0 != 1.0.
    Was darf ich darunter verstehen ?
    Geändert von EMZ (16.01.2015 um 21:10 Uhr)

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.327
    Danke
    932
    Erhielt 3.332 Danke für 2.690 Beiträge

    Standard

    Zitat Zitat von EMZ Beitrag anzeigen
    Ich bin schon froh dass es vom Programmaufbau keine fatalen fehler hat.
    Auch wenn SCL einen Programmierer ziemlich leicht verführt, ohne große Vorüberlegung schnell ein paar IF... hinzutippseln, so muß man sich trotzdem um vollständige Logik bemühen, die immer zu einem geordneten Ergebnis führt, wozu nach Möglichkeit der Code zu unbedingten (immer ausgeführten) Zuweisungen umgeformt werden sollte.

    Deinen Ausgängen wird nur etwas zugewiesen wenn Deine Temperatur außerhalb der Grenzwerte liegt (oder genau 512 ist). Wenn aber nichts zugewiesen wird - welchen Wert sollen die Ausgänge dann haben? In einer Function (FC) ist der Ausgang dann unbestimmt, in einem Function_Block (FB) hat er den Wert von der letzten Zuweisung, wird aber von TIA trotzdem angemeckert. Wenn ein Ausgang als Merkvariable benutzt wird dann muß er als IN_OUT deklariert werden.

    Beschreibe doch mal, welche Funktion Dein Testprogramm haben soll.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.367
    Danke
    457
    Erhielt 696 Danke für 521 Beiträge

    Standard

    Zitat Zitat von EMZ Beitrag anzeigen
    Was kann statt "=" denn hin??
    <= zum Rücksetzen des Max-Alarm
    >= zum Rücksetzen des Min-Alarm


    Zitat Zitat von EMZ Beitrag anzeigen
    10.0 * 1.0 / 10.0 != 1.0.
    Was darf ich darunter verstehen ?
    Hahahaha... Da hab ich dich wohl verwirrt.

    Das beruht auf der prinzipbedingten Ungenauigkeit in der Zahldarstellung im IEEE754-Gleitpunktformat.
    Nehmen wir zum Beispiel die Zahl 474.5, dann wird diese in Wirklichkeit wie folgt gespeichert:
    2^8 * (1+ 1/2 + 1/4 + 1/16 + 1/32 + 1/128 + 1/512). Entspricht 2^8 * 1.853515625 -> ergibt genau 474.5
    (Geht rauf bis 1/8388608 )

    Diese Darstellung deckt einen sehr großen Teil der reellen Zahlenmenge ab, hat aber auch eine Ungenauigkeit.
    Ein schönes Beispiel für diese Ungenauigkeit ist die Gleitpunktzahl 0.1
    Reale Darstellung: 2^(-4) * 1.600000023841858
    Laut IEEE754(Real) ist das 0.1, rechnet man es aber mit einem genaueren Format (Double) nach, bekommt man 0.10000000149011612.

    In gewissen Fällen kann es dazu kommen dass man z.B. einen Wert nimmt, ihn mehrmals so verrechnet das am Schluss wieder der Anfangswert rauskommen sollte, man aber stattdessen den Ursprungswert mit einem Kommafehler (Ungenaugkeit) präsentiert bekommt.
    Glücklicherweise ist das sehr selten.
    In der Praxis hat mir das Real-Format schon ein paar mal Probleme gemacht (Endloszähler mit Real und 0.001 als Inkrementalwert)
    Es reicht wenn man immer ein leichtes Misstrauen gegenüber dem REAL-Format im Hinterkopf hat, dann passt es.

    Wenn du noch mehr drüber lernen willst kannst du HIER selbst Hand anlegen.





    @hucki eins weiter unten: Ja das war ein Rest.... weg isser! Und gleich noch ein paar andere "elegante" Formulierungen entfernt.
    Geändert von RONIN (14.02.2015 um 22:37 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #9
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von RONIN Beitrag anzeigen
    Diese Darstellung deckt einen sehr großen Teil der reellen Zahlenmenge ab, hat aber auch eine Ungenauigkeit. Dadurch kann es in seltenen
    Da hast Du wohl versehentlich am Ende was abgeschnitten.

  10. #10
    EMZ ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.10.2012
    Beiträge
    202
    Danke
    25
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi ,

    mir geht es bei der programmierung rein darum, mit analogwerten zu arbeiten.
    die Funktion die ich haben wollte war die, dass ich eine Temperaturmessung habe. Wird die obere grenze überschritten, soll der Ausgang_1 schalten
    Das selbe für die untere grenze nur an Ausgang_2.
    Diese sollen dann z.B. eine einfache Regelstrecke darstellen, die über die dig. Ausgänge angesteuert wird.

    Als weitere Funktion möchte ich dass zwei Analogausgänge programmieren, die mir den aktuellen Istwert herausgeben, damit habe ich allerdings noch nicht angefangen,
    da ich nicht genau weiß wie ich einen analgen ausgang zuweise etc.
    mache ich zum ersten mal, deshalb will ich dabei step for step vorangehen.


    LG
    EMZ

    Danke im voraus für jegliche Hilfe ))
    Geändert von EMZ (17.01.2015 um 00:09 Uhr)

Ähnliche Themen

  1. Analogwert verarbeiten S5/analog PT100
    Von spspfuscher im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 24.10.2017, 13:28
  2. Step 7 Daten aus Global-DB in SCL verarbeiten
    Von penki im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.06.2013, 17:50
  3. Analogwert verarbeiten
    Von MauriceS im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 29.05.2011, 10:25
  4. 3 Analogwerte verarbeiten
    Von mythus im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 15.09.2008, 20:40
  5. Analogwert in nicht gleich Analogwert aus ?
    Von Dilbert im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 16.03.2007, 08:24

Lesezeichen

Berechtigungen

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