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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Analogwert umrechnen

  1. #1
    Registriert seit
    03.02.2013
    Ort
    Baden-Württemberg
    Beiträge
    46
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe SPS-Gemeinde,

    ich bin am verzweifeln...

    Ich habe einen Druckschalter, der mit ein Analogsignal ausgibt. Dieses möchte ich nun umrechnen, um mir am Panel den aktuellen Druck anzeigen zu lassen. kann mir jemand helfen, ich bekomme die komschsten Werte, aber nichts vernünftiges.
    Druckschalter kann 0-10 Bar.

    Habe es folgendermaßen versucht:

    L #Eingangswert // z.B. 16376
    L #Divisor // 3276 (Auflösung AI durch 10)
    /I
    T MD 10 // Ergebnis ist hier 1048581

    Weiß leider nicht, was ich falsch machen...


    Danke.
    Zitieren Zitieren Analogwert umrechnen  

  2. #2
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Ich empfehle dir den Scale Baustein zu verwenden.
    Außerdem hast du ein Wort also wäre MW 10 richtig.
    Wird das MW nicht anderweitig verwendet ? Divisor kein temp oder wenn temp dann vorher zugewiesen ?


    Gesendet von meinem iPhone mit Tapatalk
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!

  3. #3
    Registriert seit
    03.02.2013
    Ort
    Baden-Württemberg
    Beiträge
    46
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo Mitchih,

    Habe es im FC105 versucht, MD auch zu MW geändert, und die Temp sind auch zugewiesen.

    Habe zur Sicherheit nochmal direkte Werte versucht. Kommt trotzdem Müll raus. MW wird nirgends anders verwendet.

    Gruß doemyumrechnen.jpg

  4. #4
    Registriert seit
    09.11.2006
    Beiträge
    690
    Danke
    36
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Hm komisch
    Was ist wenn du das Ganze in real machst ?


    Gesendet von meinem iPad mit Tapatalk
    Zeige nie deine Verblüffung, wenn dir etwas auf Anhieb gelingt.

    Praxis: Es funktioniert aber keiner weiß warum!

  5. #5
    Registriert seit
    03.02.2013
    Ort
    Baden-Württemberg
    Beiträge
    46
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Was meinst du mit in Real machen?

    Wenn ich das ganze mit 1000/100 mache, funktioniert es wunderbar...
    Unbenannt.jpg

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Hallo

    Im AWL-Editor stelle den Cursor in die Zeile mit dem /I und drücke F1. Dann lies konzentriert was die Anweisung tut und was sie als Ergebnis liefert.

    Dein Fehler: Du speicherst das Ergebnis der Division UND den Divisionsrest (AKKU1-H) in MD10. Das macht irgendwie überhaupt keinen Sinn. (außerdem ist Dein Divisor falsch, falls Du einen Siemens-Analogeingang benutzt)

    Zweitens: willst Du als Ergebnis wirklich nur Ganzzahl-Werte 0 bis 10? Keine Nachkommastellen? Warum dann ein DINT als Ergebnis-Variable? Ein INT reicht da dicke. Wenn Du das Ergebnis einer 16-Bit-Division in einen 32-Bit-Wert speichern willst, dann mußt Du vorher den Divisionsrest aus AKKU1-H entfernen, z.B. durch "UD DW#16#FFFF" oder durch "SLD 16" + "SRD 16". Normalerweise speichert man das Ergebnis einer 16-Bit-Operation in eine 16-Bit-Variable - da braucht man nicht beachten, daß /I zusätzlich den Divisionsrest in AKKU1-H liefert.

    Besser: skaliere in eine REAL-Variable, dann erhältst Du auch Nachkommastellen.
    Code:
    L #Eingangswert
    ITD
    DTR
    L 2764.8
    /R
    T MD 10
    Falls Du es etwas flexibler brauchst dann schaue Dir mal den FC105 SCALE aus der "Standard Library / TI-S7 Converting Blocks" an.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von doemy Beitrag anzeigen
    MD auch zu MW geändert, und die Temp sind auch zugewiesen.

    Habe zur Sicherheit nochmal direkte Werte versucht. Kommt trotzdem Müll raus.
    Wenn Du das AWL-Programm beobachtest, dann siehst Du bei "T MW10" nicht, welcher Wert dem MW10 zugewiesen wird, sondern welchen Wert der komplette AKKU1 bei der Operation hat. Du mußt das MW10 in einer Variablentabelle beobachten oder im AWL-Programm wieder einlesen "L MW10", dann siehst Du welcher Wert tatsächlich in MW10 landet.

    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
    03.02.2013
    Ort
    Baden-Württemberg
    Beiträge
    46
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich bin noch ganz am Anfang der Analogwertverarbeitung bei Siemens. Deshalb vielleicht meine Fehler und etwas unbeholfenheit. Habe bisher nur mit CoDeSys Analogwerte gerechnet. Da macht es alles, wie man es hinschreibt.
    Bei Siemens scheint das ganze viel komplizierter zu sein...

    Habe es mit deinem Code versucht, aber auch da kommen sehr seltsame Ergebnisse raus
    Unbenannt.jpg

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Wenn Du meinen Code nimmst, dann bitte richtig. Ich speichere nicht in MW10 sondern in MD10 - eine REAL-Variable.

    Damit Du beim AWL-beobachten REAL-Ergebnisse sehen kannst, mußt Du die Anzeige auf Gleitpunkt umstellen: Rechtsmausklick in die Spalte "Standard" > Darstellung > Gleitpunkt
    Auch hier nochmal der Hinweis: besser das MD10 in einer Variablentabelle beobachten: Zielsystem > Variable beobachten/steuern

    Wenn Du mit AWL noch nicht genug Erfahrung hast dann wäre es vielleicht sinnvoll, zunächst in FUP oder KOP zu programmieren, da passieren nicht so viele Fehler wie in AWL möglich sind.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  10. Folgende 3 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    doemy (24.03.2016),Rudi (13.04.2016),SARAZIN (05.04.2016)

  11. #10
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.336
    Danke
    448
    Erhielt 688 Danke für 513 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von doemy Beitrag anzeigen
    Habe bisher nur mit CoDeSys Analogwerte gerechnet. Da macht es alles, wie man es hinschreibt.
    Bei Siemens scheint das ganze viel komplizierter zu sein...
    Das hat nix mit Siemens oder CodeSys zu tun.
    Du versucht nach deinem /R gerade einen 32-Bit IEE754-FloatingPoint in einen 16Bit-WORD-Datentyp (MW10) zu schreiben.
    Du solltest eigentlich schon von CodeSys wissen dass das ohne vorangehende Konvertierung nicht gut gehen kann.
    (Wobei CodySys-ST möglicherweise automatisch ne implizite Konvertierung macht. Als Programmierer muss man aber trotzdem wissen dass dies geschieht)

    Wie jede SPS macht auch die Siemens genau dass was du ihr hinschreibst.

    Nimm statt dem MW10 (Merker-Word) mal ein MD10. Deklariere diese in der Symboltabelle auch mit einem Symbol und Typ REAL.
    Da du mit REAL rechnest, dann solltest du auch mit der Darstellung "Gleitpunkt" beobachten.
    Wenn du beim Beobachten in der Spalte "Stardard" einen Rechtsklick machst, gibt es das Menü "Darstellung" in der du entweder auf
    "Automatisch" oder eben "Gleitpunkt" einstellen kannst.

    Nächte Frage: Warum nimmt du nicht einfach den FC105 -SCALE? Bevor du versuchst das Rad neu zu erfinden.
    Geändert von RONIN (13.04.2016 um 16:06 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  12. Folgende 2 Benutzer sagen Danke zu RONIN für den nützlichen Beitrag:

    doemy (24.03.2016),SARAZIN (05.04.2016)

Ähnliche Themen

  1. Analogwert umrechnen scalieren
    Von MK_Auto im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 06.01.2012, 20:07
  2. Digitalwert in Analogwert umrechnen
    Von Noops77 im Forum Simatic
    Antworten: 27
    Letzter Beitrag: 01.08.2011, 19:33
  3. Analogwert in °C umrechnen
    Von ch.m im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 04.03.2011, 12:11
  4. Gewicht umrechnen...
    Von anne im Forum Simatic
    Antworten: 43
    Letzter Beitrag: 08.06.2010, 10:58
  5. Analogwert in nicht gleich Analogwert aus ?
    Von Dilbert im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 16.03.2007, 08:24

Stichworte

Lesezeichen

Berechtigungen

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