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

Results 1 to 5 of 5

Thread: Analog-Ein und Ausgabewerte an S7/200

  1. #1
    Anonymous Gast

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich bräuchte mal etwas Hilfe. Ich habe seither immer an S7/300 programmiert und soll nun für einen Kunden eine vorhandene S7/200 umprogrammieren, weil das darauf vorhandene Programm dort nicht korrekt läuft.
    Nun habe ich einige Probleme mit analogen Ein- und Ausgabewerten, da die Siemens-Handbücher sich etwas spärlich mit dem Thema befassen:
    1. wie normalisiere ich einen Eingabewert ? Ich bekomme ein Signal 4 - 20 mA und soll dies in ein Signal 0 - 200 (Integer) umsetzen.
    2. Das Handbuch besagt, dass analoge Ein- und Ausgabebaugrupen nicht automatisch von der CPU gelesen werden. Wie kann ich sicherstellen, dass das von der CPU gemacht wird ?
    2. wie setze ich ein Ausgangssignal um ? Ich habe als Ausgabewerte Integer-Zahlen von 0 - 3000, die einem Ausgangssignal 4 - 20 mA entsprechen sollen.

    Hat mir da vielleicht jemand ein Beispielprogramm ?

    Vielen Dank schon mal im Voraus.
    Volker
    Reply With Quote Reply With Quote Answered: Analog-Ein und Ausgabewerte an S7/200  

  2. "hi volker,
    zunächst mal kannst du meines wissens nach die analogeingänge hardwareseitig mit dip-schaltern konfigurieren (die 4-20mA).
    danach nutzt du den sm0.0 ( immer ein)zum laden des analogeingangs.
    der rest ist einfacher dreisatz das wort geht bei s7 200 bis 32512 .

    also zum eingang:
    32512 dividiert durch 200 = 162,56
    analogeingang dividiert durch 162,56=dein normierter wert

    zum ausgang:
    32512 dividiert durch 3000=10,83
    integersollwert mal 10,83
    transfer nach analogausgang

    aber vorsicht ich glaube die analogausgänge bei der 200 können nur 0-20 mA.

    netzwerk1
    LD SM0.0
    MOVW +32512, #zwischenergebnis
    /I +200, #zwischenergebnis

    netzwerk2
    LD SM0.0
    MOVW AEW0, #normierterwert
    /I #zwischenergebnis, #normierterwert

    netzwerk3

    LD SM0.0
    MOVW +32512, #zwischenergebnis2
    /I +3000, #zwischenergebnis2

    netzwerk4
    LD SM0.0
    MOVW #zwischenergebnis2, #zwischenergebnis3
    *I MW2, #zwischenergebnis3

    netzwerk5
    LD SM0.0
    MOVW #zwischenergebnis3, AAW0"


  3. #2
    thomas Gast

    Default

    hi volker,
    zunächst mal kannst du meines wissens nach die analogeingänge hardwareseitig mit dip-schaltern konfigurieren (die 4-20mA).
    danach nutzt du den sm0.0 ( immer ein)zum laden des analogeingangs.
    der rest ist einfacher dreisatz das wort geht bei s7 200 bis 32512 .

    also zum eingang:
    32512 dividiert durch 200 = 162,56
    analogeingang dividiert durch 162,56=dein normierter wert

    zum ausgang:
    32512 dividiert durch 3000=10,83
    integersollwert mal 10,83
    transfer nach analogausgang

    aber vorsicht ich glaube die analogausgänge bei der 200 können nur 0-20 mA.

    netzwerk1
    LD SM0.0
    MOVW +32512, #zwischenergebnis
    /I +200, #zwischenergebnis

    netzwerk2
    LD SM0.0
    MOVW AEW0, #normierterwert
    /I #zwischenergebnis, #normierterwert

    netzwerk3

    LD SM0.0
    MOVW +32512, #zwischenergebnis2
    /I +3000, #zwischenergebnis2

    netzwerk4
    LD SM0.0
    MOVW #zwischenergebnis2, #zwischenergebnis3
    *I MW2, #zwischenergebnis3

    netzwerk5
    LD SM0.0
    MOVW #zwischenergebnis3, AAW0

  4. #3
    Join Date
    19.06.2003
    Posts
    2,299
    Danke
    85
    Erhielt 274 Danke für 179 Beiträge

    Default

    Quote Originally Posted by thomas
    hi volker,

    also zum eingang:
    32512 dividiert durch 200 = 162,56
    analogeingang dividiert durch 162,56=dein normierter wert

    zum ausgang:
    32512 dividiert durch 3000=10,83
    integersollwert mal 10,83
    transfer nach analogausgang
    Da muß man sich dann bei Integerarithmetik zwischen 10 oder 11 als Näherungswert entscheiden.
    11 wäre näher dran, aber der Bereich wird überschritten.

    Die 22x können auch floating point:
    LD SM0.0
    MOVW AEW0, LW0
    ITD LW0,LD2
    DTR LD2,LD6
    *R 162.56,LD6

    LD SM0.0
    MOVW +32512, #zwischenergebnis2
    /I +3000, #zwischenergebnis2
    Das Berechnen von Konstanten im Programm kostet unnötige Zeit. Hier übersieht man zudem leicht, daß das Ergebnis immer 10 ist, also recht weit weg vom genauen Wert 10.83.

    Wenn deine CPU nur Integer kann, läßt sich die Genauigkeit verbessern, indem man die Zahlen mit geigneten Faktoren multipliziert:
    10.83*4=43.32, 43/4=10.75, Fehler 0.08 statt 0.83.
    Wenn du nur mit 16-Bit Worten arbeiten willst/kannst rechnest Du:
    integersollwert/4 (mit rechtsschieben)
    integersollwert*43. Du verlierst hier 2 Bit Genauigkeit.
    Oder du kopierst den integersollwert zunächst in ein DWORD, multiplizierst mit 43 und teilst dann durch 4, wieder mit schieben.

  5. #4
    Anonymous Gast

    Default

    Hi Thomas, hi Zottel,

    vielen Dank für Eure schnellen Antworten. Ihr habt mir beide sehr geholfen ! Das Programm funktioniert.

    Vielleicht kann ich Euch ja auch mal bei was helfen.

    Viele Grüße
    Volker
    Reply With Quote Reply With Quote Vielen Dank für Eure schnelle Hilfe  

  6. #5
    thomas Gast

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi zottel,
    ja du hast recht und ich wieder was gelernt,danke

Similar Threads

  1. G120C Analog Ein- und Ausgang direkt auf Feldbus legen
    By Waelder in forum Antriebstechnik
    Replies: 1
    Last Post: 17.07.2018, 21:12
  2. Replies: 1
    Last Post: 28.05.2014, 10:03
  3. S7-200 und Analog Eingänge
    By MRT in forum Simatic
    Replies: 18
    Last Post: 28.06.2012, 08:48
  4. Analog Ein und Ausgänge Phoenix contact
    By Justuz in forum PHOENIX CONTACT
    Replies: 3
    Last Post: 12.03.2011, 15:32
  5. S7-200 und Analoge Ein u. Ausgänge
    By MRT in forum Simatic
    Replies: 2
    Last Post: 26.09.2005, 17:36

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •