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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 41

Thema: Einlesen eines Analogwertes über mehrere Sekunden, anschl. speichern und anzeigen

  1. #1
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich habe folgendes Problem: Ich soll mit meiner CPU314C-2PtP einen Analogwert über mehrere Sekunden einlesen, den Maximalwert dieser Zeit speichern und am Ende des Tests (es werden insgesamt vier verschiedene Analogwerte über diesen Kanal gemessen) sollen dann die vier Werte separat angezeigt werden auf einem TP177B.

    Als Praktikant der gerade mal eine Woche mit AWL in S7-300 programmiert bis ich jetzt natürlich total überfordet.

    Ich habe das Forum nach "Analogwert einlesen" durchforstet und bin diesem FC105 Baustein begegnet. Hier zunächst die erste Frage:

    Wie kriege ich den Wert vom Messverstärker in die CPU? Resp. wie soll meine Programmierung dabei aussehen?

    Laut Siemens-Ausbildungsunterlage sollte ich folgendes tun:

    U E 0.4 //Sensor meldet "Endposition erreicht"
    CC FC105 //Bausteinaufruf

    Wundersamerweise gibt die Unterlage aber nirgends an wo und wie man von welchem Eingang aus einliest, also gehe ich davon aus dass noch mehr dahinter steckt.

    Eingang in diesem Fall ist ein Kraftsensor 0...20kN mit dafür kalibriertem Messverstärker der 0...+10V ausgibt (und dann in den entsprechenden Analogeingang meiner CPU gesteckt wird)

    Und am Ende möchte ich dann von den vier verschiedenen Messungen jeweils den Maximalwert separat gespeichert haben und dann auf dem TP177B anzeigen lassen.

    Mit Gebastel und Raten könnte es irgendwie so aussehen:

    U E 0.4 //Sensor meldet "Endposition erreicht"
    CC FC105 //Bausteinaufruf
    L PEW 6 //Ist dies der richtige (erste) Eingang der CPU314C-2PtP?
    ???

    Wie gesagt ich habe danach gesucht hier, ich habe auch alle Threads durchgesehen die mir angezeigt wurden, aber so 100% Durchblick habe ich noch immer nicht. Bloss Links zu anderen Threads posten hilft mir wahrscheinlich nicht weiter

    Danke im Voraus,
    Euer (verzweifelter) Praktikant
    Zitieren Zitieren Einlesen eines Analogwertes über mehrere Sekunden, anschl. speichern und anzeigen  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    fangen wir mal ganz langsam an. die FAQ zu dem thema hast du ja schon gelesen. da steht dann auch drinnen, wo du die adresse deines analogwertes findest, nämlich in der HW-konfig deiner station.

    den aufruf des FC105 würd ich mit CALL machen.

    die freigabe des einlesens ist soweit fast ok, bedingen kannst du den aufruf allerdings nur mit einem sprung, also:

    Code:
    *
          U     E      0.4                  //Sensor meldet "Endposition erreicht"
          SPBNB _001
          CALL  FC   105                    //Bausteinaufruf
          ...
    _001: NOP   0
    verstehe ich das richtig, dass du nur den maximalwert brauchst? da brauchst du dann zwei variablen, den wert des aktuellen zyklusses und denvergleichswert äqu. maximalwert. diesen letzten setzt du vor dem einlesen auf null. dann vergleichst du den aktuellen wert mit diesem maximalwert, wenn der aktuelle größer als der maximalwert ist, diesen dann umkopieren.

    ich denke, mit der einstellung der dauer der aufzeichnung gibt es erstmal keine probleme!?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke. Gute Idee den aktuellen Wert immer mit dem Maximalwert zu vergleichen und diesen zu überschreiben wenn der Erste grösser ist, da wäre ich jetzt auf Anhieb nicht darauf gekommen.

    Die Aufzeichnung beginnt wenn die Endposition erreicht ist ( U E 0.4 ) und endet wenn diese verlassen wird ( UN E 0.4 ).

    Aber irgendwie brauche ich dann doch noch eine Art Schleife weil ich während dieser Zeit ja wiederholt einlese?

    Irgendwas in der Art

    ...
    L 0 //0 in AKKU 1 laden
    T MD1 //0 nach Merkerdoppelwort 1 transferieren
    P000:U E 0.4 //Prüfen ob noch in Endlage
    SPBNB P001
    CALL FC 105
    L MD1
    L PEW 6 //angenommen es wäre dieser Analog-Eingang
    <I //wenn neuer Wert grösser als alter wert
    T MD1 //dann neuen Wert in MD1 schreiben
    SPA P000 //zurück zur Marke P000

    P001: NOP 0
    ...

    Und für die drei anderen Messungen dann genau der gleiche Vorgang, nur MD2 , MD3, und MD4 anstelle von MD1
    Geändert von DerPraktikant (04.12.2008 um 11:41 Uhr)

  4. #4
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    ohoh, wir haben noch viel zu tun

    als erstes: code-tags wären nett! danke...

    die schleife hast du durch die zyklische bearbeitung des programms, solange die wertskalierung aktiviert ist, wird diese jeden zyklus ausgeführt. zur freigabe der messung gehört dann noch die dauer der freigabe.

    das setzen auf null solltest du nur beim start der messung machen - stichwort flankenauswertung.

    MD1, MD2, MD3, MD4 ... owei owei ... schau dir auf jeden fall nochmal das speicherkonzept an!
    ein kurzer abriß:

    ein bit ist bestandteil von byte, word und dword
    8 bits sind ein byte
    2 byte sind ein word
    2 word sind ein dword

    und das schöne daran, sie sind bereichsübergreifend

    also das MD0 besteht aus MB0...MB3 ... also wäre das nächste freie dword das MD4, denn MD2 z.b. besteht aus MB2, MB3 (welche ja schon im MD0 drinnen sind), MB4 und MB5 bzw. MW2 und MW4 ... desweiteren empfehle ich dir immer durch zwei teilbar zu adressieren, das rechnet sich einfacher
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  5. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    DerPraktikant (04.12.2008)

  6. #5
    Registriert seit
    21.11.2007
    Beiträge
    226
    Danke
    200
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Hallo Praktikant,

    meines wissens hat der FC 105 eine EN (Freigabe zum bearbeiten des Baustens) benutz doch diesen eingang in verbindung mit dem Sensor.

    Sensor da.... Baustein FC 105 freigegeben.
    Sensor weg.. Baustein FC 105 gesperrt.

    vll hilfts dir.

    Gruß Johannes

  7. #6
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Roos Beitrag anzeigen
    meines wissens hat der FC 105 eine EN (Freigabe zum bearbeiten des Baustens) benutz doch diesen eingang in verbindung mit dem Sensor.
    nichts anderes machen wir mit dem sprung. schau dir mal deinen KUP-bausteinaufruf in AWL an
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Roos (04.12.2008)

  9. #7
    Registriert seit
    21.11.2007
    Beiträge
    226
    Danke
    200
    Erhielt 24 Danke für 21 Beiträge

    Standard

    stimmt und durch die zyklische bearbeitung des Programmes springt er bei Änderung des Sensors zur Sprungmarke _001!

    Gruß

  10. #8
    Registriert seit
    12.11.2008
    Beiträge
    65
    Danke
    43
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Aaah eben dachte ich noch ich hätte es begriffen
    Ich erlaube mir mal Deinen Beitrag auseinander zu pflücken.

    ohoh, wir haben noch viel zu tun

    als erstes: code-tags wären nett! danke...
    Meinst Du so?

    Code:
    U E O.O
    S A 4.5
    die schleife hast du durch die zyklische bearbeitung des programms, solange die wertskalierung aktiviert ist, wird diese jeden zyklus ausgeführt. zur freigabe der messung gehört dann noch die dauer der freigabe.
    Verstehe ich das richtig dass das ganze Programm eh immer durchlaufen wird bis die Abbruchbedingung kommt? Wie gesagt, für zwei der Messungen kann ich nur schwer eine Dauer festlegen, da ein Hydraulikylinder solange an einer Schubstange zieht bis die Motorkupplung an der Schubstange durchdreht. Das dauert länger bei neuen Motoren als bei alten nehme ich an.

    das setzen auf null solltest du nur beim start der messung machen - stichwort flankenauswertung.
    Habe ich doch versucht, oder? Also zumindest war es so geplant, da die Sprungmarke ja unter dem Laden des Wertes 0 in AKKU 1 steht.

    MD1, MD2, MD3, MD4 ... owei owei ... schau dir auf jeden fall nochmal das speicherkonzept an!
    ein kurzer abriß:

    ein bit ist bestandteil von byte, word und dword
    8 bits sind ein byte
    2 byte sind ein word
    2 word sind ein dword

    und das schöne daran, sie sind bereichsübergreifend

    also das MD0 besteht aus MB0...MB3 ... also wäre das nächste freie dword das MD4, denn MD2 z.b. besteht aus MB2, MB3 (welche ja schon im MD0 drinnen sind), MB4 und MB5 bzw. MW2 und MW4 ... desweiteren empfehle ich dir immer durch zwei teilbar zu adressieren, das rechnet sich einfacher
    Ja, definitiv, wer lesen kann ist klar im Vorteil Das heisst ich sollte dann eher MD0, MD4, MD8 und MD12 zum Abspeichern meiner Maximalwerte?

  11. #9
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard

    Hallo
    Zitat Zitat von DerPraktikant Beitrag anzeigen
    L 0 //0 in AKKU 1 laden
    T MD1 //0 nach Merkerdoppelwort 1 transferieren
    P000:U E 0.4 //Prüfen ob noch in Endlage
    SPBNB P001
    CALL FC 105
    L MD1
    L PEW 6 //angenommen es wäre dieser Analog-Eingang
    <I //wenn neuer Wert grösser als alter wert
    SPB P000
    T MD1 //dann neuen Wert in MD1 schreiben
    SPA P000 //zurück zur Marke P000

    P001: NOP 0
    Transfer ist vom VKE unabhängig, du hättest immer PEW 6 ins MD 1 geschrieben.
    Generell wird diese Schleife nicht funktionieren! Wenn du nur 2s in der Endlage stehst wird deine Zykluszeit über 2000ms lang --> da ist die SPS schon längst im Stop.
    MfG
    FrankW

    ....Wer lesen kann ist klar im Vorteil.....

  12. #10
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Praktikant,

    mit diesem Code schickst Du die SPS garantiert mit Zykluszeitüberschreitung in STOPP!

    Zitat Zitat von DerPraktikant Beitrag anzeigen
    L 0 //0 in AKKU 1 laden
    T MD1 //0 nach Merkerdoppelwort 1 transferieren
    P000:U E 0.4 //Prüfen ob noch in Endlage
    SPBNB P001
    CALL FC 105
    L MD1
    L PEW 6 //angenommen es wäre dieser Analog-Eingang
    <I //wenn neuer Wert grösser als alter wert
    T MD1 //dann neuen Wert in MD1 schreiben
    SPA P000 //zurück zur Marke P000

    P001: NOP 0
    Du springst immer wieder zur Marke P000 zurück. Da sich das PAE aber innerhalb eines Zykluses
    nicht ändert, kommst Du bei E 0.4 = 1 nie zur Marke P001!

    Besser wäre:
    Code:
    U E 0.4 //Prüfen ob noch in Endlage
    SPBN P001
    CALL FC 105
    L MD 0
    L PEW 6 //angenommen es wäre dieser Analog-Eingang
    <I //wenn neuer Wert grösser als alter wert
    SPB P001
    T MD 0 //dann neuen Wert in MD 0 schreiben
    
    P001: NOP 0
    Jetzt wird einmal pro Zyklus verglichen, ob sich der Wert geändert hat.

    Grüße
    Gebs

  13. Folgender Benutzer sagt Danke zu Gebs für den nützlichen Beitrag:

    DerPraktikant (04.12.2008)

Ähnliche Themen

  1. Glättung eines Analogwertes
    Von hank12 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 27.11.2014, 21:49
  2. Antworten: 8
    Letzter Beitrag: 30.03.2011, 09:46
  3. Antworten: 8
    Letzter Beitrag: 23.07.2010, 08:19
  4. Impuls für mehrere Sekunden wiederkehrend
    Von outbreak7 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 06.05.2010, 15:07
  5. REAL Wert einlesen und speichern
    Von Franzmann im Forum Simatic
    Antworten: 70
    Letzter Beitrag: 19.06.2008, 10:41

Lesezeichen

Berechtigungen

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