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

Ergebnis 1 bis 10 von 10

Thema: Analogeingangssignal in einen Zeitwert umwandeln

  1. #1
    Registriert seit
    01.06.2015
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich hab ein Problem bei dem ich Hilfe benötige.

    Ich muss eine Verzögerung programmieren bei der die Länge der Verzögerung über ein Poti eingestellt wird. Dazu folgender Aufbau.

    An einer S7-313C habe ich an den ersten Analogeingang mein Poti angeschlossen. Dieses ist mit 10V belegt und der Eingang an der CPU ist auch richtig eingestellt.
    Wenn ich meinen Analogeingang (EW10) überwache bekomm ich je nach Potistellung Werte zwischen 0 und 27648. Soweit denk ich ist das richtig.
    Der Eingang ist in der Symboltabelle als INT deklariert.

    Ich möchte diese Werte nun an einen TON als Zeitwert übergeben, also T#xxxms!
    Wie muss ich denn nun vorgehen damit ich diese Werte umwandeln kann? Idealerweise wäre eine Skalierung 0/0ms und 27648/2000ms.

    Google sagt mir ich soll den FC105 nutzen. Allerdings versteh ich nicht so recht wie ich diesen nutzen muss da der Wert an OUT immens groß ist. Der OUT ist mit einem MD belegt.

    Ich programmier noch nicht so lange drum würde ich mich freuen wenn mir das ganze jemand Idiotensicher erklären kann.


    Freundliche Grüße

    Edi
    Zitieren Zitieren Analogeingangssignal in einen Zeitwert umwandeln  

  2. #2
    Registriert seit
    10.07.2013
    Beiträge
    215
    Danke
    6
    Erhielt 46 Danke für 34 Beiträge

    Standard

    FC105 anklicken und auf F1 drücken das ist sehr gut erklärt.
    Geht nicht gibt's nicht

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.177
    Danke
    922
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Der FC105 liefert einen REAL-Wert, den Du für T#... erst wieder in eine Ganzzahl wandeln müsstest.
    Bei Deiner sehr einfachen Umrechnung brauchst Du aber keinen FC105. Multipliziere einfach Dein EW10 mit 1000 und dividiere danach durch 13824, dann erhältst Du die gewünschten 0...2000

    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
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.339
    Danke
    449
    Erhielt 688 Danke für 513 Beiträge

    Standard

    Zitat Zitat von Eduard Schleich Beitrag anzeigen
    Allerdings versteh ich nicht so recht wie ich diesen nutzen muss da der Wert an OUT immens groß ist. Der OUT ist mit einem MD belegt.
    Der Grund warum dein Wert so groß aussieht ist wahrscheinlich dass du den Wert als Ganzzahl beobachtest. Der FC105 gibt am OUT einen REAL (Gleitpunktzahl ) aus.

    Wenn du beim beobachten deines MDs in Programmeditor oder in der Variablentabelle die Darstellungsweise auf Gleitpunkt stellst, dann solltest du eigentlich was vernünftiges sehen. Wobei anzumerken ist das Real im Programmeditor im Exponentialformat angeziegt wird.
    Also 2000.0 = 2.000000e+003. In der Variablentabelle mit Darstellung Gleitpunkt siehst du es als 2000.0

    Den Gleitpunkt vom FC105 musst du dann z.B. mit ROUND in eine Ganzzahl wandeln und dann in eine TIME-Variable schreiben die du dann dem TON fütterst.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #5
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.339
    Danke
    449
    Erhielt 688 Danke für 513 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Multipliziere einfach Dein EW10 mit 1000 und dividiere danach durch 13824, dann erhältst Du die gewünschten 0...2000
    Das reicht natürlich auch, hier aber aufpassen dass der Eingangswert nicht <0 wird, was zb. bei 4..20mA durchaus möglich ist wenn vom Sensor z.B. nur 3.9mA daherkommen. Also am besten dafür sorgen dass das Eingangssignal nicht <0 oder >27648 wird.
    Dann würden bei deiner Rechnung nämlich negative Millisekunden rauskommen...
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  6. #6
    Eduard Schleich ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.06.2015
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Is es wirklich so einfach???

    Ok ich werd das morgen mal ausprobieren. Eigentlich ja ganz einfach. Naja, kommt Zeit, kommt Erfahrung.

    Danke euch.

  7. #7
    Registriert seit
    06.10.2003
    Beiträge
    3.409
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Naja, fast.

    Zitat Zitat von PN/DP Beitrag anzeigen
    ..Multipliziere einfach Dein EW10 mit 1000 und dividiere danach durch 13824, dann erhältst Du die gewünschten 0...2000..
    Beachte dabei dass das Ergebnis den Integer-Wertebereich überschreitet, also mit den DINT-Operationen arbeiten. Wenn negative Werte zu erwarten wären, müssten die INT mit ITD nach DINT gewandelt werden.
    Weiterhin sollte man noch beachten dass ein S7-Timer mit dem Wert T#0ms nicht ausgeführt wird. Also besser auf 1..2000ms normieren, oder einfach auf den Bereich 0..2000ms ein Millisekündchen draufrechnen.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  8. #8
    Eduard Schleich ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.06.2015
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok ich werds beachten. Morgen mal testen ob der so tut wie ich will.

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.177
    Danke
    922
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Zitat Zitat von Eduard Schleich Beitrag anzeigen
    Is es wirklich so einfach???
    Ja. Simple Ganzzahl-Mathematik. Inklusive Begrenzung auf Ergebnis T#1ms ... T#2000ms sind nur wenige Zeilen AWL nötig (kann man für mehrfach-Verwendung auch in einen parametrierbaren FC umformen):
    Code:
          L     EW    10    //Analogwert -32768..0..27648..32767
          L     14          //nach Skalierung *1000/13824 soll min. 1 rauskommen
          <I
          SPB   ckmx        //Analogwert durch Min-Wert ersetzen
          POP               //(oder TAK) Analogwert zurück in AKKU1
    ckmx: L     27648
          >I
          SPB   conv        //Analogwert durch Max-Wert ersetzen
          POP               //(oder TAK) Analogwert zurück in AKKU1
    conv: L     1000
          *D                //(oder *I) ergibt max 27648000 = DINT!
          L     13824
          /D                //muß zwingend /D sein, weil die Multiplikation einen DINT ergeben haben kann
          T     #tmp_Time   // T#1..2000ms
    In KOP/FUP wird das ganze etwas aufwendiger wegen der Typprüfung der Operanden und weil man da die Akkus nicht als Zwischenspeicher benutzen kann. Die Verschaltung der Boxen und ENO-Steuerung benötigt auch noch zusätzlichen Code.
    1-2000_KOP.jpg

    Hier der AWL-Code der KOP-Lösung (in AWL-Ansicht in ein leeres Netzwerk einfügen, dann Ansicht auf KOP oder FUP umstellen):
    Code:
          O(
          L     EW    10
          T     #tmp_INT
          SET
          SAVE
          CLR
          U     BIE
          )
          O(
          U(
          L     #tmp_INT
          L     14
          <I
          )
          SPBNB _001
          L     14
          T     #tmp_INT
          SET
          SAVE
          CLR
    _001: U     BIE
          )
          O(
          U(
          L     #tmp_INT
          L     27648
          >I
          )
          SPBNB _002
          L     27648
          T     #tmp_INT
          SET
          SAVE
          CLR
    _002: U     BIE
          )
          =     L     38.0
          U     L     38.0
          SPBNB _003
          L     #tmp_INT
          ITD
          T     #tmp_DINT
    _003: NOP   0
          U     L     38.0
          SPBNB _004
          L     #tmp_DINT
          L     L#1000
          *D
          T     #tmp_DINT
    _004: NOP   0
          U     L     38.0
          SPBNB _005
          L     #tmp_DINT
          L     L#13824
          /D
          T     #tmp_DINT
    _005: NOP   0
          U     L     38.0
          SPBNB _006
          L     #tmp_DINT
          T     #tmp_Time
    _006: NOP   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 Analogeingang auf 1..2000 skalieren  

  10. #10
    Eduard Schleich ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.06.2015
    Beiträge
    22
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusammen.

    Also ich hab es jetzt mit Hilfe des FC105 Bausteins gemacht wie Ronin oben beschrieben hatte. Ich war schon auf dem richtigen Weg nur hab ich irgendwie nicht gepeilt das das Ergebnis keine Dez-Zahl ist. Wenn man sich alles richtig anschaut und dann auch dementsprechend umwandelt gehts auf einmal. Ganz so wie´s PN/DP in der Signatur stehen hat .

    Danke an alle

    Edi

Ähnliche Themen

  1. Step 5 S5 Zeitwert KT multiplizieren
    Von kassla im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 12.02.2015, 09:26
  2. Antworten: 5
    Letzter Beitrag: 10.12.2011, 13:58
  3. Zeitwert umwandeln
    Von Hanspeter23 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 11.07.2011, 13:10
  4. Zeitwert
    Von De Hettrumer im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 07.01.2010, 21:18
  5. Zeitwert über op eingeben
    Von heini-bb im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.02.2005, 18:38

Stichworte

Lesezeichen

Berechtigungen

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