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

Page 7 of 7 FirstFirst ... 567
Results 61 to 69 of 69

Thread: Istgeschwindigkeit aus FM-450

  1. #61
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    13,440
    Danke
    1,085
    Erhielt 3,960 Danke für 3,199 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn Du nicht am Anfang so falsche Informationen gestreut hättest, und die wahren Informationen erst in Beitrag #33 und #39 ans Licht kommen, dann wären wir wohl schon früher drauf gekommen, daß Dein Problem daher kommt, weil Du die Zählerstände nicht synchron zur Verarbeitungsfrequenz ausliest und insbesondere mit einer falschen/nicht eingehaltenen Meßzeit rechnest. Immer wenn die Differenzzeit (Phasenverschiebung) der nicht synchronen Zyklen (Berechnungs-Zyklus und Profibus-Zyklus) sich zu einer Zykluszeit des kürzeren Zyklus aufsummiert hat, dann bekommst Du einen Phasensprung.

    Lösungen:
    - die vermutlich einfachste und genaueste Lösung: schließe den Encoder an einer Zählerkarte im zentralen Rack an
    - oder lies den Zählerwert synchron zum Profibus-Zyklus (taktsynchron)
    - oder rechne die Schwankung des Meßintervalls heraus (ggf. runden)

    Wie schnell brauchst Du denn tatsächlich die Bandgeschwindigkeit? Alle 50 ms ist doch sicher sowieso unnötig/sinnfrei?
    Du müsstest das Meßintervall so lang machen, daß die Schwankung der Auslesefrequenz von 28 ms unter Deinen Genauigkeitsanforderungen liegt. Wenn der Rechenfehler durch den 28ms-Phasensprung auf unter 3% fallen soll, dann müßte Dein Meßintervall mindestens 1 s lang sein. Wenn Du tatsächlich nicht 1 Sekunde auf den nächsten Meßwert warten kannst, dann könntest Du die Meßintervalle ineinander "verschachteln": Du könntest z.B. alle 100ms den Zählerstand in einen 10-Werte-Ringpuffer legen, und die Differenz zum Zählerstand 1 s vorher bilden. Du könntest zusätzlich noch den Mittelwert zum vorhergehenden Meßwert oder über alle 10 Meßwerte bilden.

    Können Deine SPS CPU und deren integrierte Profibus-Schnittstelle (kein CP!) und die ET200M-Kopfstation (153-2Bxxx?) die taktsynchrone Arbeitsweise? Der von Dir verwendete FC CNT_CTRL ist dafür jedenfalls ungeeignet...

    PS: Möglicherweise kann der FC CNT_CTRL auch für FM350-1 verwendet werden. Doch wenn ich unerklärliche Probleme habe, dann halte ich mich zunächst ganz genau an die Siemens-Anleitungen. Was anderes bzw. eigene Interpretationen kann ich einbringen, wenn alles wie erwartet funktioniert.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #62
    Clyde82 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.11.2017
    Posts
    171
    Danke
    7
    Erhielt 16 Danke für 15 Beiträge

    Default

    @PN/DP
    Hast du noch nie im laufe einer Aufgabe festgestellt, dass du an einer Stelle nen Fehler gemacht oder an anderer Stelle etwas falsch interpretiert hast? Ich habe doch geschrieben, dass ich für die FM350-1 den CNT_CTL1 verwende und ich auch CNT_CTRL getestet habe. Es war auch ungünstig am Anfang des Threads die Aufrufe für die FM350-1 mit CNT_CTRL hochzuladen, weil es zur allgemeinen Verwirrung beigetragen hat. Aber ich hab sogar ein Bild gelinkt wo drinsteht, dass CNT_CTRL nicht für taktsynchron ist sondern nur CTL1 und CLT2, wo du davor noch meintest nur CTL2 wäre für taktsynchron.

    Und ja ich brauche ein schnelles Geschwindigkeitssignal. 200ms ist so ziemlich die Grenze, 50ms müssen es natürlich nicht sein.

    Und ganz ehrlich, wenn du die negative Einstellung nicht lassen kannst / willst, verzichte ich SEHR GERNE in Zukunft auf deine Hilfe.

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Zurück zum Thema.

    Ich hab mich gerade mal von der ferne eingewählt auf die SPS und wenn ich im CPU Dialog den OB61 (hab auch OB62-63 probiert) den Masterstrang 1 zuweise und den Bus auf äquidistanz stelle bekomme ich beim Übersetzen die Meldung, dass 1024 Bytes E/A überschritten sind Ich hab schon etwas gegoogelt, bisher hab ich noch keine Info gefunden, dass man bei taktsynchronem Profibus nur 1024 bytes auf der Peripherie haben darf. Jedenfalls ich geh mal gucken, irgendwie soviele Anleitungen hab ich dazu noch nicht gefunden und wenn dann ist sie für TIA und Profinet. Wenn sich aber die 1024 Bytes nicht umgehen lassen bin ich gearscht. Wir haben zwar noch einen 2ten Profibusstrang, aber der läuft über ne CP und den kann ich für die OB6X nicht mal auswählen. Ansonsten hat die CPU aber noch Profinet, vielleicht kann ich ja ethernet in den Schaltschrank vorort legen lassen, ich red mal mit der Instandhaltung.
    Last edited by Clyde82; 13.04.2019 at 14:38.
    Experten rund um das Thema Automatisierung
    sammeln sich auf diesem Discord-Server: https://discord.gg/7r72a7S

  3. #63
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    13,440
    Danke
    1,085
    Erhielt 3,960 Danke für 3,199 Beiträge

    Default

    Quote Originally Posted by Clyde82 View Post
    wo du davor noch meintest nur CTL2 wäre für taktsynchron.
    Wo habe ich behauptet, daß nur der CTL2 für taktsynchron wäre?
    Ich glaube, Dein Problem ist daß Du Texte und Anleitungen nur oberflächlich liest und irgendwas hineininterpretierst was da gar nicht steht.

    Quote Originally Posted by Clyde82 View Post
    Und ganz ehrlich, wenn du die negative Einstellung nicht lassen kannst / willst, verzichte ich SEHR GERNE in Zukunft auf deine Hilfe.
    Ich meine, die negativen "Vibrations" hast Du hier in den Thread gebracht...
    Aber OK, ich halte mich hier jetzt raus. Ist ja nicht mein Problem was da gelöst werden soll

    Daß die FM350-1 auch Geschwindigkeit/Drehzahl/Frequenzmessung kann, hast Du im Handbuch natürlich schon gelesen. Dann ist Dir sicher auch klar, daß dabei kein taktsynchroner Betrieb des Profibus notwendig ist...

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #64
    Clyde82 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.11.2017
    Posts
    171
    Danke
    7
    Erhielt 16 Danke für 15 Beiträge

    Default

    Quote Originally Posted by PN/DP View Post
    Was Siemens da im Kommentar zu Baustein-Symbolen schreibt kann besonders schick gemeint oder auch einfach undurchdacht sein ...
    Liest Du eigentlich auch die Handbücher?
    In allen mir bekannten Handbüchern zur FM450-1 wird beschrieben, daß man den FC0 CNT_CTRL verwenden soll.
    In allen mir bekannten Handbüchern zur FM350-1 wird beschrieben, daß man den FC2 CNT_CTL1 verwenden soll (oder den FC3 CNT_CTL2 in taktsynchronen OB).
    Findest Du irgendwo eine Anleitung, daß für FM350-1 der FC0 CNT_CTRL verwendet werden soll/kann?

    Also ich würde den FC0 CNT_CTRL nicht für FM350-1 verwenden solange Siemens das nicht explizit als zulässig erklärt hat.

    Harald
    Da hast du es geschrieben und so liest es sich auch und ja ich weiß, dass die auch Drehzahlmessung kann, aber leider brauch ich nunmal in erster Linie den Weg, der ist das wichtigste.
    Experten rund um das Thema Automatisierung
    sammeln sich auf diesem Discord-Server: https://discord.gg/7r72a7S

  5. #65
    Join Date
    25.06.2017
    Location
    Oerlinghausen
    Posts
    1,387
    Danke
    124
    Erhielt 239 Danke für 192 Beiträge

    Default

    Sooo, die Wogen scheinen jetzt wieder geglättet . . . dann melde ich mich mal wieder

    Habe die Tabelle aus #16 in Excel verwurstet und die TaktSynchronität nur aus den vorliegenden Daten und meiner ~28-ms-Takt-Theorie zu rekonstruieren versucht:

    Diagramm.jpg

    Die linken 3 Spalten sind die Clyde'sche Tabelle - davon wird nur die Spalte "Diff" ausgewertet.
    In Spalte "Zhl" wird der Wert aus der Spalte "Diff" mit dem vorherigen Wert der Spalte "Diff" verglichen:
    - unterschreitet der Wert 70% des vorherigen Wertes, so erscheint hier eine 1
    - sonst wird hier 2 auf den Wert "Zhl" der vorherigen Zeile addiert.
    In Spalte "Sum" erscheint der Wert aus Spalte "Diff", wenn in Spalte "Zhl" eine 1 steht, sonst wird der Wert "Diff" auf den Wert "Sum" der vorherigen Zeile addiert.
    In Spalte "Sum/Zhl" steht genau das: der Wert aus Spalte "Sum" dividiert durch den Wert aus Spalte "Zhl".
    In Spalte "Diff/2" steht nur dann der durch 2 geteilte Wert aus Spalte "Diff", wenn der Wert in Spalte "Zhl" nicht 1 ist, sonst der nicht veränderte Wert aus Spalte "Diff".

    Im oberen Diagramm sind die Spalten "Diff" bis "Diff/2" dargestellt, Spalte "Sum" ist jedoch weggelassen.
    Das untere Diagramm konzentriert sich auf die Spalten "Sum/Zhl" und "Diff/2", weil sie im Massstab des oberen Diagramms schlecht zu erkennen sind.
    "Sum/Zhl" ist das Ergebnis mit MittelwertBildung und "Diff/2" das Ergebnis ohne MittelwertBildung.
    Diese beiden Werte sind zur Geschwindigkeit proportional, aber, um die Geschwindigkeit zu berechnen, fehlt noch der genaue Wert für die Länge des ~28-ms-Taktes.

    Das Jittern in den ErgebnisSpalten "Sum/Zhl" und "Diff/2" hält sich doch so schön in Grenzen ("Sum/Zhl": ±1,6%), dass man eine brauchbare GeschwindigkeitsAnzeige erwarten kann.

    Die tatsächliche Länge des ~28-ms-Taktes lässt sich jedoch mittels der Tabelle annähern. Je länger die Tabelle von Messungen, desto besser.
    Der einzige Haken dabei ist, dass über die gesamte Länge der Messungen auch tatsächlich auswertbare Werte in Spalte "Diff" vorhanden sein müssen, weil sonst der Inhalt der Spalte "Zhl" nicht gebildet werden kann.
    Mit den derzeitigen Daten aus der obigen Tabelle zeichnet sich ab, dass der Wert bei etwas unter 28ms liegt (27,61 ms).
    Last edited by Heinileini; 14.04.2019 at 18:06.

  6. #66
    Clyde82 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.11.2017
    Posts
    171
    Danke
    7
    Erhielt 16 Danke für 15 Beiträge

    Default

    Woohoo es läuft - Ich schreib später noch genau was wir gemacht haben.
    Experten rund um das Thema Automatisierung
    sammeln sich auf diesem Discord-Server: https://discord.gg/7r72a7S

  7. #67
    Clyde82 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.11.2017
    Posts
    171
    Danke
    7
    Erhielt 16 Danke für 15 Beiträge

    Default

    So,

    wir haben heute natürlich etwas diskutiert und uns auf folgende Lösung geeignigt:

    Da wir, wie in Post #33 bereits erwähnt, auf der Karte die NICHT Signale fälschlicherweise aufgelegt hatten, haben wir diese jetzt verwendet um damit eine 2te FM350-1 zu speisen und haben diese auf Drehzahlmessung gestellt. Es schien uns die sinnvollste Lösung, da keiner Erfahrung hat mit taktsynchronem Profibus und dazu hätten wir eh etliches ändern müssen, da der entsprechende Bus wie bereits erwähnt die maximalen 1024 Byte weit überschreitet. Hätte es mit der 2ten FM nicht geklappt, hätten wir das Geberkabel in die E-Station verlängert und wären aufs Rack der CPU gegangen.

    Aber jetzt tänzelt der Istwert auch in einem Bereich +/- 0,5 m/min um den Sollwert, also genau das was wir wollten.

    Ich hab die FM auf 50ms Abtastzeit gestellt für die Drehzahlerfassung und denke ich werd das aber nochmal ändern und die auf 100ms erhöhen oder sogar auf 200ms.

    Anbei ein Bild vom Endergebnis:
    endergebnis.jpg

    Vielen Dank nochmals an die fleißigen Helfer. Da war mal wieder ein Problem, wo ich etliches gelernt habe.
    Experten rund um das Thema Automatisierung
    sammeln sich auf diesem Discord-Server: https://discord.gg/7r72a7S

  8. #68
    Join Date
    25.06.2017
    Location
    Oerlinghausen
    Posts
    1,387
    Danke
    124
    Erhielt 239 Danke für 192 Beiträge

    Default

    Moin Clyde,
    das waren mir zuviele 'hätte' und 'wäre' - ich habe nicht wirklich verstanden, was jetzt Sache ist.

    Ehe Du noch mehr herumprobierst . . . probier vielleicht erstmal folgendes.
    WeckAlarm weiterhin 50 ms, nix TaktSynchronMimik, nix extra-FM für Geschwindigkeitsmessung - also total noch Deine ursprüngliche Konfiguration.
    Ich habe versucht, meinen Excel-Ansatz in eine SCL-ähnliche Form zu giessen - Deklarationen habe ich mir erspart - ich hoffe, Du verstehst trotzdem, was ich meine.
    Die Jitterei gefällt mir besser als in Deinem letzten Diagramm (ca. Faktor 3, wenn ich mich nicht "vergaloppiert" habe).
    Der Aufwand hält sich für meinen Geschmack durchaus im Rahmen.
    Code:
    // im Anlauf der SPS (und nach Änderung eines der Parameter):   
       
        rPI     := 4.0 * Arctan(1.0);                  // Real; Berechnung von PI
        rD      := 300.0;                              // Real; Durchmesser [mm]
        rSproU  := 1000.0;                             // Real; Striche/Umdrehung
        rFproS  := 4.0;                                // Real; Flanken/Strich
        rATP    := 27.78;                              // Real; AusleseTakt(Bus) [ms]
       
        rFaktor := rPI * rD / rSproU / rFproS / rATP;  // Real; PropFaktor für Umrechnung in m/s
       
    // - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +   
       
    // im 50ms WeckAlarm (wohl gemerkt: 50 ms !!!):   
       
        // Variablen, deren Namen mit 'd' beginnen: Dint  
        // Variablen, deren Namen mit 'r' beginnen: Real  
        // Variablen, deren Namen auf 'Alt'  enden: müssen beim nächsten Aufruf   
        //           (nach 50 ms) mit unverändertem Inhalt zur Verfügung stehen  
       
        dZähler    := "PED";                           // Zählerstand einlesen - "wie auch immer"
        dDiff      := dZähler - dZählerAlt;  
        dZählerAlt := dZähler;  
       
        If dDiff * 10 < dDiffAlt * 7 Then  
            dAnzE  := 1; 
            dAnzM  := 1; 
            dSumm  := dDiff; 
        Else  
            dAnzE  := 2; 
            dAnzM  := dAnzM + 2; 
            dSumm  := dSumm + dDiff; 
        End_If;  
        dDiffAlt   := dDiff;  
       
        rDiff      := Dint_To_Real(dDiff);  
        rSumm      := Dint_To_Real(dSumm);  
        rAnzE      := Dint_To_Real(dAnzE);  
        rAnzM      := Dint_To_Real(dAnzM);  
       
        rVM        := rSumm / rAnzM * rFaktor * 60.0;  // Geschwindigkeit [m/min] (teils gemittelt)
        rVR        := rDiff / rAnzE * rFaktor * 60.0;  // Geschwindigkeit [m/min] (nicht gemittelt)

  9. #69
    Clyde82 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    21.11.2017
    Posts
    171
    Danke
    7
    Erhielt 16 Danke für 15 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey,

    die Sache mit der extra FM läuft super und hat ja bis auf die Baugruppe stecken keinen Aufwand gemacht, weil wir alles ja schon da hatten. Ich hab am Donnerstag Zeit und guck mal wie es mit deinem Baustein aussehen würde.
    Experten rund um das Thema Automatisierung
    sammeln sich auf diesem Discord-Server: https://discord.gg/7r72a7S

Similar Threads

  1. Replies: 17
    Last Post: 05.02.2019, 23:57
  2. Statusbyte PFC100 und 750-450 Modul
    By Guntron in forum WAGO
    Replies: 4
    Last Post: 01.08.2018, 23:05
  3. Replies: 23
    Last Post: 05.08.2017, 15:14
  4. MI4-450-KI1 Firmenware
    By 007helle in forum Sonstige Steuerungen
    Replies: 1
    Last Post: 02.09.2011, 13:32
  5. CLv 450 in verbindung mit ET200s SI
    By PinkPanther32 in forum Simatic
    Replies: 0
    Last Post: 15.07.2008, 10:07

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
  •