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

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

Thema: Frage zu Analogwertverarbeitung Wort aus DB auf analogen Ausgang

  1. #1
    Registriert seit
    03.02.2011
    Beiträge
    29
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe da eine Frage.

    Ich bekomme auf meiner S7 Steuerung im DB6.dbw246 einen Wert von 0-100 von einem angeschlossenen Pc geliefert.

    diesen Wert möchte ich an meinem Analogen Ausgang PAW 272 ausgegeben bekommen.

    Die Hardware ist auf 4-20mA am Ausgang eingestellt.


    Ich habe es schon mit dem Standard Scale Baustein ausprobiert. Damit komme ich nicht weiter.

    Hat jemand einen Lösungsvorschlag für mich?

    Gruß

    Markus
    Zitieren Zitieren Frage zu Analogwertverarbeitung Wort aus DB auf analogen Ausgang  

  2. #2
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Probier mal Unscale, FC106


    Ein weiteres Problem kann sein, dass Du den Wert erst in REAL umwandeln musst, jetzt ist er ja Integer.

    Also
    L DB6.DBW246
    ITD
    DTR
    und dieser auf den FC106 draufschalten

  3. #3
    klaerbaer2010 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.02.2011
    Beiträge
    29
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo

    Ich habe mir jetzt folgendes überlegt:

    L DBX.DBW
    ITD
    DTR
    L 27648
    *R
    L 100.0
    /R
    Trunc
    T PAW


    Kann das funktionieren?

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Nein!

    L DB6.DBW
    ITD
    DTR
    L 27648.0
    *R
    L 100.0
    /R
    RND (TRUNC geht theoretisch auch, ist aber nicht passend zum folgendem Befehl)
    T PAW

  5. #5
    Registriert seit
    03.12.2009
    Beiträge
    64
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    ich lese das bei Analogwertverarbeitung immer wieder, oder mein kleines Gehirn packt es nicht.
    Warum muss ich einen Integerwert erst nach Real konvertieren, dann Berechnungen in Real machen und dann wieder nach Integer konvertieren. Die obige Lösung ist meiner Meinung nach wunderbar, lediglich alles was mit Real zu tun hat raus.
    Das Ergebnis ist exakt das Gleiche, bei weniger Programm und deutlich kürzerer Rechenzeit.

    Gruss

    Oliver

  6. #6
    Registriert seit
    07.06.2011
    Beiträge
    117
    Danke
    4
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Hallo,

    der Unscale-Baustein akzeptiert nur Real-Werte. Will man den einsetzen, kommt man also um Real nicht drumrum.

    Bei eine selbstprogrammierten Scalierung muss man halt den Bereich vom Datentyp Int beachten. Bei der vorliegenden Berechnung rein mit Integerwerten würde man entweder den Bereich verlassen oder durch das Fehlen von Nachkommastellen riesen Ungenauigkeiten haben. Wenn überhaupt, dann müsste man alles in DInt berechnen, vielleicht sogar mit Faktoren. Ob das allerdings übersichtlicher ist, als mit Real-Werten zu rechnen, bezweifel ich.

    Edit:
    Ok, in dem Fall hast Du Recht. Man kann sich das DTR sparen und den Rest eigentlich auch mit DInt rechnen.
    Geändert von MRose (25.08.2013 um 19:57 Uhr)
    Mario

  7. #7
    Registriert seit
    14.10.2010
    Ort
    Telgte
    Beiträge
    654
    Danke
    97
    Erhielt 129 Danke für 99 Beiträge

    Standard

    Hi,
    habe einfach mal als Beispiel angenommen es kommt von dem PC die Zahl 91.
    Ich habe das einmal als Dint und einmal als Real berechnet.
    Bei Dint schneidest du quasi 2 Zahlen weg.
    Bei Real werden die 2 Zahlen kaufmännisch gerundet.
    Den Unterschied siehst du im Bild.
    Ob dieser Rundungsunterschied etwas ausmacht das kommt wahrscheinlich auf die Anwendung drauf an.


    Gruß, Toki
    Angehängte Grafiken Angehängte Grafiken
    Programmierumgebung: Step7 V5.5, WinCCflex2008-SP3, TIA-PortalV13, MicroWinV4.0

  8. Folgender Benutzer sagt Danke zu Toki0604 für den nützlichen Beitrag:

    klaerbaer2010 (27.08.2013)

  9. #8
    klaerbaer2010 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    03.02.2011
    Beiträge
    29
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    ich habe es mit der ersten kurzen Variante probiert das funktioinert.

    Ich habe aber heute gehört das ich den Wert teilen muss.

    Der Wert dient zur Ansteuerung von 2 Drehkolbengebläsen. Diese haben einen Frequenzumrichter.

    Wenn mein Wert zwischen 0 und 50% ist, dann läuft ein Gebläse mit 4-20mA

    Wenn wir bei 51-100% sind dann schaltet das zweite Gebläse mit 4-20mA dazu.

    Also 100% = Beide Analogausgänge mit 20mA anfahren


    Habt ihr da eine Idee? Ich dachte daran etwas mit Vergleichert aufzubauen.

    Gruß

  10. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    ?
    Zwei Analogausgänge:
    Einer 0-50% == 4-20mA, Mit MaxBegrenzung bei 50%
    Einer 51-100% == 4-20mA

  11. #10
    Registriert seit
    03.12.2009
    Beiträge
    64
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte noch doch nochmal etwas zu dem Test mit der Real und der DINT Berechnung sagen.

    Der Unterschied der Berechnung ist genau 1. Der Analogwandler wird also um diesen Wert falsch angesteuert. Richtig.
    Damit dieser falsche Wert analog eine Auswirkung hat, müsste der AD Wandler eine Auflösung von 27648 Stufen haben. Solche Wandler gibt es bestimmt, aber nicht für S7. Entweder man hat 10 Bit oder vielleicht 12 zur Verfügung. Wieviel diskrete Stufen das sind, sollte jeder der SPS programmiert ausrechnen können. Dazu kommt das industrielle Umfeld, in denen Maschienen benutzt werden. Da gibt es FU's und alle möglichen Dreckschleudern, deren Störungen schon weit mehr als die Auflösung eines 12 Bit Wandlers darstellen.

    Mit der Anwendung hat das also gar nichts zu tun, in der realen Welt gibt es diesen Unterschied nicht.

    Der einzige Grund solche Berechnungen in Real zu machen ist, das man nicht in der Lage ist, die Operationen so anzuordnen, das kein Überlauf der Akkus stattfindet. Ich habe früher dividiert, indem vorher multipliziert wurde und dann den Akku getauscht, was einer Division gleichkommt. Dann laufen Programme schnell ab. Heute schöpft man nur aus dem Vollem und wundert sich wenn man unglaubliche Zykluszeiten bekommt.
    Es gibt von Siemens CPU Daten, woraus man ersehen kann, wie lange eine Real Division dauert. Wer weiss wie das gemacht wird, weiss auch warum das solange dauert

    Hilft zwar bei dem Problem nicht weiter, ist aber eine Grundlage derProgrammiereung.
    Kleiner Tip: Wie man jetzt einem Wandler die 0..50% vorgibt und den aneren erst bei 50 % starten lässt, das ist subtrahieren und Dreisatz.


    Gruss

    Oliver

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 17.09.2012, 15:04
  2. Zugriff auf Bit aus Wort in FB-Deklaration
    Von Holger Levetzow im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.01.2010, 15:38
  3. Antworten: 38
    Letzter Beitrag: 22.03.2008, 14:15
  4. 2 versch. werte an einem analogen ausgang mit der ps3
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 01.08.2004, 19:54
  5. helligkeit von led's über analogen ausgang eine sps regeln
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 08.07.2004, 21:38

Lesezeichen

Berechtigungen

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