FM350-1 Ungenauer Zählerstand

ElJupo

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich benutze eine FM350-1 in verbindung mit einen Inkrementallgeber mit 2500 Impulsen.
Das ganze soll 2 Aufgaben erfüllen.
1. Ansteuern eines Ausgangs zu einem bestimmten Zählwert ( das funktionier auch sehr gut)

2. Erfassen der Geschwindigkeit.

Bei Punkt 2 liegt das Problem ich hatte mir das sehr einfach gedacht, FM350-1 fleißig Zählen lassen und über 100ms Weckalarm die Differenz bilden.
Leider sind die Werte überhaupt nicht gleichmässig bei gleicher Geschwindigkeit.

Ich lese den aktuellen Zählwert aus einem DB der nach der entsprechenden Siemens UDT aufgebaut ist.

Vielleicht hat ja der ein oder andere von euch Erfahrung damit und kann mir ein paar Tips geben.
 
Hallo,
das Ansteuern des Ausgangs machst du ja über die Zählerkarte selber mit deren eigenen Funktion (nehme ich mal an).
Die andere Geschichte wird sicher so sein, wie von dir geschildert.
Zur Abhilfe könntest du den OB-Aufruf beschleunigen. 100 ms sind m.E. schon sehr ungenau. Dann ... wer für denn die Reaktion auf den Zählwert-Vergleich aus ? Wahrscheinlich doch dein zyklisches (OB1-) Programm. Hier könntest du ggf. die Reaktion auch im OB35 programmieren. Du mußt dann nur berücksichtigen, dass damit noch nicht die Perepherie (also die Ausgänge) geändert sind. Das muss dann natürlich auch im OB35 passieren.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal,

über schnelleren Aufruf des OBs hab ich noch nicht nachgedacht, langsamer hatte ich ihn schon hat aber nichts gebracht (kam aus dem Verdacht, dass der Zähler DB nicht schnell genug aktualisiert wird).
Aber mal davon abgesehen wie schnell ich denn OB aufrufe müsste die Differenz des Zählwerts nicht ungefähr gleichgroß sein ?

Die Auswertung des FM350 Ausgangs erfolgt ebenfalls in einem Weckalarm OB. Der wird alle 10ms aufgerufen. Den hatte ich aber auch schon gesperrt damit er mir nicht dazwischen funkt da er eine höhere Priorität besitzt.

Besteht eigentlich rein zeitlich ein Unterschied der Aktualisierungsrate zwischen Zählerstand im DB oder direkt am Perepherieeingang?
 
Um da tiefer einsteigen zu können bräuchte ich mehr Fakten (also etwas Code aus deinem Programmm).

Aber ganz grundsätzlich :
Die Daten (in deinen DB) kommen in so oder so von der Perepherie. Dort, wo das passiert passiert auch das Einlesen und in dem Zeittakt. Wenn du das im OB1 hast hilft dir der OB35 da gar nichts mehr - das Einlesen sollte also auch schon im OB35 (am Besten direkt) erfolgen.
Ich vermute, du hast einfach ein Aufsummieren von Reaktionszeiten ...

Gruß
Larry
 
Du meinst also es wäre sinnvoller das komplette ansteuern direkt aus dem Weckalarm herraus zu realisieren?
Sprich den Steuer FC aufruf auch in den Weckalarm zu packen oder halt direkt die Perepherie dort auszulesen?
Von irgendwo muss ja angetriggert werden wann der Zählwert in den DB geschrieben wird. Erfolgt das durch aufruf des Steuer FCs?
 
Die Idee hinter dem Weckalarm war die definierte Zeit.
Die normale OB1 Zykluszeit kann ja schonmal schwanken.

Das Problem was ich habe sind ja die sehr unterschiedlichen Differenzen die ich mir nicht wirklich erklären kann.
 
Das Problem was ich habe sind ja die sehr unterschiedlichen Differenzen die ich mir nicht wirklich erklären kann.
Wieviele Impulse zählst Du denn je 100ms?
Welcher Geschwindigkeits-Differenz entspricht ein einziger Impuls mehr in den 100ms?
Vielleicht reicht ja einfach nicht die Zähler-Auflösung für genauere Berechnungen.
Gib doch mal konkrete Zahlen für Deine "sehr unterschiedlichen Differenzen".

Wie genau (mit welcher Auflösung) brauchst oder willst Du die Geschwindigkeitsanzeige?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1 Umdrehung des Gebers entspricht einer Umdrehung der Antriebsachse der Anlage. (Aussage des Kunden).
Die Anlage läuft mit 10 Umdrehungen/Minute -> 25000 Impulse/Minute.
Das würde bedeuten ich müsste alle 100ms ca 42 Impulse Differenz zählen.

Die wirkliche Differnez beträgt zwischen 40-200 Impulsen.

Ich zähle periodisch also von 0-2500 und setze dann wieder auf 0.
 
OK, bei 42 Impulsen je 100ms sollten die Rechenergebnisse um grob geschätzt max 10% schwanken.
Schwankungen von 40-200 Impulsen sind aber tatsächlich extrem.

Wo und wie ist der Geber befestigt? An der Antriebswelle oder an irgendeiner anderen Welle?
Wenn zwischen der Antriebswelle und der Geberwelle z.B. ein Intralox-Band ist, dann können solche Geschwindigkeitsschwankungen zwischen beiden Wellen vorkommen.
Also mal prüfen, ob der Geber wirklich starr mit der Antriebswelle gekoppelt ist.

Wenn das der Fall ist, dann vermute ich einen Fehler in der Berechnung der Zähler-Differenzen. So ungenau kann man den Zählerstand der 350-1 eigentlich gar nicht auslesen. Wie sieht Dein Programm an der Stelle aus?

Harald
 
Ich werd später mal gucken nach dem Code sitz gerade an nen anderen PC.
Was mich verwundert hat, als ich den OB Aufruf Testweise auf eine Sekunde gestellt habe und den Zähler DB beobachtet habe konnte ich diese abweichende Differenz feststellen und da war keine Berechnung drin.

Mal rein spekulativ, wenn der Geber nicht nur eine Umdrehung pro Umdrehung der Antriebswelle macht (so genau hatte ich mir das nicht angeguckt) kann sich das negativ auswirken? Eigentlich doch nicht weil mich doch nur die Differnez interessiert natürlich würde die Berechnugn dahinter nicht mehr stimmen aber müsste trotzdem "konstant" sein oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du meinst also es wäre sinnvoller das komplette ansteuern direkt aus dem Weckalarm herraus zu realisieren?
Sprich den Steuer FC aufruf auch in den Weckalarm zu packen oder halt direkt die Perepherie dort auszulesen?
Genau so mache ich es (allerdings bei durchaus höheren Auflösungen) zu Minimierung von Fehlern.

Von irgendwo muss ja angetriggert werden wann der Zählwert in den DB geschrieben wird. Erfolgt das durch aufruf des Steuer FCs?
Ich vermute mal : Ja.
Vermuten deshalb, da ich den mitgelieferten FC aus unterschiedlichen Gründen nicht verwende (sondern einen selbst-geschriebenen)

Ich zähle periodisch also von 0-2500 und setze dann wieder auf 0.
1.) Warum das ?
2.) Wie machst du das Rücksetzen (weil die Reset-Zeit auch ganz schön lang sein kann und du da durchaus Impulse verlieren kannst).
3.) Was machst du mit deiner Impulse/Zeit-Berechnung bei einem Reset ?

Gruß
Larry
 
Ich beschreib einfach mal kurz die gesamte Applikation vielleicht ist das besser.

Also die Maschine besteht aus einer sich kontinuierlich bewegenden Kette auf der Formen angebracht sind.
Den die Strecke die benötigt wird bis die nächste Form wieder an der selben Stelle ist wie die vorherige bezeichnen wir als 1 Takt.

Das bedeutet ein "Takt" entspricht 1 Umdrehung des Gebers.
Desweiteren wird dann an einer STelle der Anlage eine Flüssigkeit in die Form gebracht. Den Punkt an dem das Einfüllen beginnt kann der Bediener festlegen (0-2500 Impulse).
Dies wird dann in der FM350 über den Vergleichswert und setzen des Ausgangs der FM350 realisiert.
Die Vorrichtung die die Flüssigkeit einbringt bewegt sich während des Einbringens synchron mit der Form, angetrieben durch einen Hydraulikzylinder.

Ich habe aber nur Einfluss auf die Einfülleinrichtung und den Geber der Rest läuft unabhängig davon. Dort wird auch die Geschwindigkeit der Kette in Takten eingestellt.

Ich zähle von 0-2500 um den Startzeitpunkt des Einfüllens definieren zu können.
Bei der FM350 benutzte ich die Betriebsart "Periodisches Zählen" und das bis 2500 Impulse dann beginnt die FM350 von selbst wieder bei 0.

Beim automatischen Reset mache ich im Moment gar nichst nur berechne anders da ich ja einen Nulldurchgang hatte was ich daran erkenne das der IST-Zählerwert kleiner als der letzte ist.
 
Zuletzt bearbeitet:
... auf die Sache mit dem automatischen Reset kann ich gerade nicht wechseln - ich verwende immer die Betriebsart "endlos Zählen".

Aber das Alles erklärt überhaupt nicht deine Impulse-Differenz. Das muß von irgendwo anders her kommen und ist auch nicht mit meinem Vorschlag (jedenfalls wahrscheinlich nicht) zu kompensieren.
Ich denke, etwas Programmcode könnte hier doch ganz hilfreich sein ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich such jetzt Code raus aber da steht ja nicht viel drin.

Noch ne kleine Frage ich Werte im Moment nur eine Spur vom Geber aus weil er sehr Merkwürdig angeschlossen war könnte das auch Probleme Verursachen?
 
Also ich benutze bei den FM350-x auch fast immer das "endlos Zählen".
Doch wenn man "Nocken" an einer bestimmten Drehpositionen festlegen will, dann wird die Rechnerei mit "periodisch Zählen mit Hauptzählrichtung" mit Zählumfang=Impulse/Umdrehung übersichtlicher, der Zählerstand ist äquivalent zur Drehposition und man muß die Vergleichswerte zum Schalten der FM350-Ausgänge nicht in jeder Umdrehung umprogrammieren.

Ich zähle von 0-2500 um den Startzeitpunkt des Einfüllens definieren zu können.
Bei der FM350 benutzte ich die Betriebsart "Periodisches Zählen" und das bis 2500 Impulse dann beginnt die FM350 von selbst wieder bei 0.
Einen kleinen Fehler könntest Du hier schon drin haben, wenn Du die FM350-1 genau so parametriert hast.
Die FM350-1 macht erst bei Überschreiten der oberen Zählgrenze das Reset zum Ladewert. Sie zählt also von 0 bis 2500 und erst der 2501. Impuls setzt den Zähler auf 0. Nach dem 2502. Impuls steht der Zähler erst auf 1. In der Umdrehung vorher stand der Zähler nach 2 Impulsen schon auf 2. Dein Zählerstand verschiebt sich kontinuierlich um 1 Impuls je Umdrehung zur tatsächlichen Geber-Lage.

Wenn pro Maschinenumdrehung 2500 Impulse anfallen (Zählumfang), dann die obere Zählgrenze auf 2499 (Zählumfang - 1) und den Ladewert auf 0 festlegen (oder oZG auf 2500 und Ladewert auf 1).

Beim automatischen Reset mache ich im Moment gar nichst nur berechne anders da ich ja einen Nulldurchgang hatte was ich daran erkenne das der IST-Zählerwert kleiner als der letzte ist.
Durch dieses "anders berechnen" kann sich an dieser besonderen Stelle leicht ein Rechenfehler verstecken.
Eine einheitliche Berechnung der Zählerdifferenz mit integriertem Ausgleich des Zählerüberlaufs kannst Du mit dieser Formel machen:
Code:
[FONT="verdana"]Zählerdifferenz = (Zählerstand_jetzt - Zählerstand_vorher + Zählumfang) MOD Zählumfang[/FONT]
Für diese Formel ist es egal, ob von 0..2499 oder von 1..2500 oder von -1250..+1249 gezählt wird.
icon6.gif

Für "Zählumfang" müßtest Du Deine 2500 einsetzen.

Harald
 
Code:
[FONT=verdana]Zählerdifferenz = (Zählerstand_jetzt - Zählerstand_vorher + Zählumfang) MOD Zählumfang[/FONT]
Für diese Formel ist es egal, ob von 0..2499 oder von 1..2500 oder von -1250..+1249 gezählt wird.
icon6.gif

Für "Zählumfang" müßtest Du Deine 2500 einsetzen.

Harald


Danke schonmal für den Tip das macht die Rechnerei schonmal viel einfacher und das mit den Weglaufen des Zählers habe ich auch nicht bedacht. Ich werde das Morgen am Livesystem ausprobieren.
Ich habe auch eben nochmal in der Doku der FM350 recherchiert und gelesen dass der Zähler auch "weglaufen" kann wenn man nur eine Spur des Gebers auswertet.
Eventuell nehm ich da Morgen auch noch die zweite Spur dazu dafür muss nur der Stecke rumgelötet werden :(

Vielen Dank für eure Mühe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich Werte im Moment nur eine Spur vom Geber aus weil er sehr Merkwürdig angeschlossen war könnte das auch Probleme Verursachen?
Wenn man garantieren könnte, daß sich der Geber nur in eine Richtung drehen kann und auch im Stand so festgehalten wird, daß er nicht zwischen zwei Strichen pendelt, dann würde es reichen, nur eine Spur auszuwerten.

Doch besonders die Sache mit dem Pendeln zwischen Strichen bekommt man - wenn überhaupt - nur mit Gebern bis vielleicht 10 Impulse/Umdrehung hin.

Du brauchst also die zweite Geberspur zur Vermeidung von Falschzählungen im Stand oder müßtest bei jeder Umdrehung eine Referenzposition auswerten.
Das erklärt aber nicht Deine hohen Zähldifferenzen.

Wie heißt denn Dein Geber genau? Dann könnte man mal schauen, wie er angeschlossen werden muß.

Harald
 
Es ist ein GI355 von Baumer/IVO eigentlich bietet er alles was man braucht oder auch nicht braucht A / B / N und das nochmal invertiert nur leider hat da wohl ein findiges Kerlchen gespart und nur A , B invertiert und N invertiert angeschlossen.
Warum kann ich nicht sagen die alte STeuerung die das alles realisiert hat ist 25 Jahre alt und es existieren auch nicht mehr wirklich viele Unterlagen darüber.
Also schwer zu sagen wie er da ausgewertet wurde.
 
Code:
[FONT="verdana"]Zählerdifferenz = (Zählerstand_jetzt - Zählerstand_vorher + Zählumfang) MOD Zählumfang[/FONT]
Nachtrag: Diese Formel geht davon aus, daß der Zähler nur vorwärts zählt.

Wenn der Zähler auch rückwärts zählen kann, dann wäre diese Formel besser:
Code:
[FONT="Arial"]Zählerdifferenz = (Zählerstand_jetzt - Zählerstand_vorher + Zählumfang/2) MOD Zählumfang - Zählumfang/2[/FONT]
Damit erhält man die relative Zählerdifferenz -halber_Zählumfang bis +halber_Zählumfang (z.B. -1250..+1249)
(Zählumfang muß eine gerade Zahl sein, Differenz darf max knapp eine halbe Umdrehung sein)
Für die absolute Zählerdifferenz müßte man dann noch den Betrag aus der errechneten Zählerdifferenz bilden.

Harald
 
Zurück
Oben