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

Ergebnis 1 bis 9 von 9

Thema: Analogwerte einlesen und vergleichen

  1. #1
    Registriert seit
    09.05.2012
    Beiträge
    91
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe folgende Aufgabe

    Ich soll eine Temperatur einlesen (PT100) Und dann den Wert ausgeben (BCD) mit einer Kommerstelle. Der wert soll dann noch mit verglichen werden mit vorgegeben Werten und dann soll halt dafür ein Ausgang geschaltet werden also Temp größer als 10°C = P1.


    Ich habe jetzt meinen PT 100 richtig eingelesen, nur ich kann den Wert nicht in BCD wandeln, so das ich Ihn mit eine Kommastelle ausgeben kann.

    Ich habe dann ein Problem mit dem Vergleichen wie gebe ich die Temperraturen ein die mit dem Wertden des PT100 vergleichen werden. ?


    Hier mal mein Programm



    Einlesen PT100

    L PEW 288
    ITD
    DTR
    L 1.000000e+001
    /R
    T MD 10


    Hier jetzt der Punk wo ich mir nicht sicher bin ist für die Ausgabe in BCD ich bekomme aber die Kommastelle nicht hin




    L MD 10
    TRUNC
    T MD 20
    NOP 0

    L MD 20
    DTB
    T MD 30
    NOP 0
    Zitieren Zitieren Analogwerte einlesen und vergleichen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard

    Hallo,

    welche Steuerung "sollst" Du verwenden? An welche Analogeingabe ist der PT100 angeschlossen? Wohin sollst Du den Anzeigewert in BCD ausgeben? Wieviel Ziffern vor dem Komma? Kann die Temperatur auch negativ sein?

    Bei S7-Analogeingaben kommt der PT100-Wert normal schon als Ganzzahl mit 1 Nachkommastelle, z.B. -12,3°C oder +98,7°C erhält man als -123 bzw. +987. Das muß nur noch in BCD gewandelt werden und optisch ein Komma eingefügt werden.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard

    Wo kommt der Vergleichswert 10°C her? Ist das ein fester Wert im Programm oder soll er in einem HMI eingegeben werden?
    Bei Festwert vergleiche einfach mit 100 (für +10,0°C), bei Eingabewert rechne besser in REAL.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Registriert seit
    09.05.2012
    Beiträge
    91
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Also die Temperatur kann bis max 270,0°C ansteigen. Ich verwende die 6ES7-7KF02-0AB0, ich kann aber auch eine andere Karte verwenden, es ist lediglich ein übungsprojekt, was leider nur mit der Simatic Software simuliert wird. Die Vergleichswerte werden direkt im Programm festgehalten und werden nicht über ein HMI eingeben.

  5. #5
    Registriert seit
    09.05.2012
    Beiträge
    91
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von Elektrikus Beitrag anzeigen
    Also die Temperatur kann bis max 270,0°C ansteigen. Ich verwende die 6ES7-7KF02-0AB0, ich kann aber auch eine andere Karte verwenden, es ist lediglich ein übungsprojekt, was leider nur mit der Simatic Software simuliert wird. Die Vergleichswerte werden direkt im Programm festgehalten und werden nicht über ein HMI eingeben.

    Das eingeben der Vergleichswerte ist mir jetzt auch gelungen


    So habe ich es gemacht:

    L 160.0
    T MD14
    L180.0
    T MD18

    Die Werte dann auf dem Vergleicher und fertig, funktioniert auch.

    Ich habe jetzt nur das Problem mit der Darstellung der Temperatur mit einer Komma stelle... wäre dankbar wenn mir dabei jemand helfen könnte

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard

    Ganzzahlen und BCD-formatierte Zahlen kennen kein Dezimalkomma (Dezimalpunkt). Das Komma wird einfach nur optisch eingefügt. Die Position des Komma muß nur festgelegt werden.

    Um Deine Temperatur mit 3 Stellen vor dem Komma und 1 Nachkommastelle darzustellen, reicht es, einfach eine BCD-Wandlung des Analogwertes zu machen und in einem DWORD abzulegen, weil der Temperaturwert von der AI-Karte schon 1 Nachkommastelle hat.

    Du könntest Dir auch vorstellen, daß Du ein 4-Ziffern-BCD-Anzeigemodul an Deine SPS anschließt und die Temperatur darauf anzeigst:
    Code:
    4 Ziffern BCD-Anzeigemodul mit Vorzeichen bei Minus und feste Kommastelle für Anzeige -799.9 .. 799.9
    
    A4.7         : Vorzeichen (1 bei Minus, 0 bei Plus oder 0)
    A4.4 bis A4.6: Hunderterstelle 0..7 (MSB nicht anschließen)
    A4.0 bis A4.3: Zehnerstelle 0..9
    A5.4 bis A5.7: Einerstelle 0..9
    A5.0 bis A5.3: Nachkommastelle 0..9
    
    A4. 4.  4.   5.   5.
     7  654 3210 7654 3210
     V  HHH ZZZZ EEEE.NNNN
    Code:
    //PT100-Wert einlesen
          L     PEW  288            //INT: PT100-Wert in 0.1°C
          ITD
          T     #diTemperatur01     //DINT: Temperaturwert in 0.1°C
          DTR                       //Ganzzahl zu Gleitpunkt
          L     1.000000e+001       //Nachkommastelle normieren
          /R
          T     MD    10            //REAL: Temperatur in °C
    
    //Temperatur in BCD -799.9 .. 799.9 ausgeben
          SET                       //garantiert neue Bitverknüfung beginnen
          L     #diTemperatur01     //DINT: Temperaturwert in 0.1°C
          DTB                       //zu BCD
          T     #dwTemperatur01     //DWORD: Temperaturwert in 0.1°C (BCD)
          T     AW     4            //letzte 4 BCD-Ziffern auf Anzeige ausgeben
          SLD   1                   //Vorzeichen in Statusbit A1 schieben, A0=0 
          U     >0                  //A1 in VKE holen
          =     A      4.7          //Vorzeichen-Ausgang, 1 bei negativ
    Statt A4.7 kannst Du auch z.B. A6.0 nehmen, dann läßt sich das Programm besser in einer Variablentabelle beobachten.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Elektrikus (02.11.2012)

  8. #7
    Registriert seit
    09.05.2012
    Beiträge
    91
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Also ich habe mal dein Programm eingegeben und es funktioniert, leider kann ich mir die Temperatur aber noch nicht mit einer Nachkomastelle anzeigen lassen. Wie kann ich es in PLCSIM anzeigen lassen. ?

  9. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard

    Anzeige mit VAT in PLCSIM mit MW288 (statt PEW288) und A6.0 (statt A4.7) siehe Anhang
    Wie gesagt: das Dezimalkomma bei der BCD-Anzeige kannst Du nicht sehen. Es wird nur optisch zwischen der 3. und 4. Ziffer eingefügt (z.B. ein ständig leuchtender Dezimalpunkt).
    Temperatur: -123.4°C ---> PT100 ---> PEW288 (dez): -1234 ---> BCD (hex): -1234 ---> Anzeige: -123.4

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.293
    Danke
    932
    Erhielt 3.320 Danke für 2.682 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Code:
    //Temperatur in BCD -799.9 .. 799.9 ausgeben
          SET                       //garantiert neue Bitverknüfung beginnen
          L     #diTemperatur01     //DINT: Temperaturwert in 0.1°C
          DTB                       //zu BCD
          T     #dwTemperatur01     //DWORD: Temperaturwert in 0.1°C (BCD)
          T     AW     4            //letzte 4 BCD-Ziffern auf Anzeige ausgeben
          SLD   1                   //Vorzeichen in Statusbit A1 schieben, A0=0 
          U     >0                  //A1 in VKE holen
          =     A      4.7          //Vorzeichen-Ausgang, 1 bei negativ
    Zitat Zitat von Hilfe zu AWL
    SLD (Schiebe links Doppelwort) schiebt den gesamten Inhalt von AKKU 1 bitweise nach links. In die Bitstellen, die durch das Schieben frei werden, werden Nullen geschrieben. Das zuletzt geschobene Bit wird in das Statusbit A1 geladen.
    ...
    Gilt 0 < Schiebezahl <= 32, werden die Statusbits A0 und OV auf "0" zurückgesetzt.
    Es wird nur das eine höchstwertige Bit von #dwTemperatur01 geschoben - das Vorzeichenbit. Es ist danach im Statusbit A1.

    "U >0" ergibt VKE=1, wenn A1=1 und A0=0 (*1), allerdings nur bei der ersten Bitverknüpfung, ansonsten verknüpft U mit dem bereits vorhandenen VKE (*3). Weil in dem ganzen Beispielcode von mir keine weitere Bitverknüfung vorkommt bzw. abgeschlossen wird, habe ich die Operation SET eingefügt, welche das Erstabfragebit /ER auf 0 setzt (*2). Damit wird garantiert eine neue Bitverknüpfung begonnen und das "U >0" funktioniert garantiert wie gewünscht. (*1)(*3) Wenn vor dem Code eine Bitverknüpfung mit =/S/R endet und immer bearbeitet wird oder der Code mit SPBx angesprungen wird oder egal wie garantiert /ER=0 ist, dann kann das SET auch entfallen.

    (*1) siehe Hilfe zu AWL > Index > Abfragen des Zustands der Bits im Statuswort
    (*2) siehe Hilfe zu AWL > Index > SET
    (*3) siehe Hilfe zu AWL > Index > Statuswort > /ER Erstabfragebit (Statuswort, Bit 0)

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Zitieren Zitieren Eine Verständnissfrage  

Ähnliche Themen

  1. Analogwerte über USB einlesen und an S7 übertragen
    Von sailor im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 31.10.2012, 18:04
  2. S5 CPU945 Analogwerte einlesen
    Von hoelle1985 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 15.05.2012, 12:36
  3. Analogwerte mit 8MC11 einlesen und vergleichen
    Von Chry007 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 22.10.2010, 14:13
  4. Antworten: 8
    Letzter Beitrag: 23.07.2010, 08:19
  5. Analogwerte mit einer 313C einlesen
    Von Atlas im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 08.08.2009, 18:43

Lesezeichen

Berechtigungen

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