TIA TIA Portal Analogwert über Zeit/Weg aufzeichnen

seple

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

hier zu meinem Problem:

Programmiere die Steuerung und den Antrieb eines Faltgaragentores im TIA.
Dieses Garagentor benötigt eine Momentüberwachung dieses Moment wird über einen Kraftaufnehme an der Antriebswelle gemessen.
Da das benötigte Drehmoment um das Garagentor zu schließen nicht konstant ist, würde ich das Moment über den Weg aufzeichnen, und danach eine Art Offset hinzuaddieren und sobald dieser Wert an der Gewissen Position x überschritten wird stoppt das Tor.

Der Weg wird mit einem Inkrementalgeber gemessen.

Meine Idee wäre hier den Weg auf gewisse Delta x (z.b alle 100Inkremente) aufzuteilen. Dann schreibe ich den Messenden Wert in ein Array[deltax1] usw.

Bietet hier TIA eine Art Funktionsaufzeichnung? Bin auch für andere Ideen natürlich offen
 
Hi, wenn ich das richtig verstehe möchtest du das Tor stoppen sobald ein gewisses Moment überschritten wird. Also eine Art Klemmschutz?

Ich würde den eingelesenen Wert glätten (zB mit laufender Mittelwertbildung über X Zyklen) und dann zyklisch mit dem Grenzwert vergleichen.

Wenn du den Drehmomentverlauf grafisch als Hilfe brauchst kannst du einen Trace anlegen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit dem glätten des Eingangssignals ist eine gute Idee. Jedoch ist der Grenzwert für die Abschaltung nicht konstant, sondern Abhängig vom Weg.
Hätte eben den Istwert bei der Inbetriebnahme einmal in einem Gewissen Wegintervall in ein Array gespeichert. Zu diesen Werten hätte ich einen Offset hinzuaddiert. Nun hätte ich für jedes Wegintervall einen Grenzwert.

Cool wäre natürlich eine Art Trace Funktion M(x) die ich im Programm abfragen könnte ob der Wert an der Stelle x überschritten wird oder nicht.
 
Naja, wenn er weiß das er an bestimmten Positionen mehr und an anderen weniger Nm braucht, ist es eine Posi-Abhängigkeit schon eine gute Lösung.
Die Frage ist, ob man nur einfach 3-6 Fenster mit Drehmoment XY 1-6 macht oder wirklich ein feingliedriges Array.
Das Array hat natürlich den Vorteil, das man eine Kalibrier-Fahrt machen kann.
Ein TIA-Hilfsbaustein dafür kenne ich nicht. Allerdings ist so etwas in SCL auch recht schnell geschrieben.
Wenn Du da einigermaßen fit bist, bekommst Du das auch hin.
Als Anfangs-Tipp: Arrayzeiger := IstPos / 100
Und immer schön den Arrayzeiger auf ArrayBereich checken/begrenzen.
Sonst noch mal melden.
 
Ok danke, für die Hilfe. Wäre interessant gewesen ob es dazu eine einfache Funktion gibt.
Mach den Arrayzeiger mit Modulo, also Arrayzeiger := Istposition mod 100.

Schönen Tag noch
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wie sieht denn deine ermittelte Kurve aus ?
Vielleicht ist es ja so, dass du sie als Funktion abbilden kannst ...
Ansonsten - wenn nicht - ich hatte hier für etwas Ähnliches schon mal den Weg gewählt, dass ich einfach eine Profilkurve gespeichert habe. Die später aufgezeichnete Messkurve wurde dann von dieser aufgezeichneten Kurve subtrahiert und von der Differenz hatte ich einen Absolutwert (ABS) gebildet. Nun hast du, quasi gleitend, die Abweichung von deiner Sollkurve. Mit wievielen Stützstellen du das nun umsetzt bleibt dir dabei überlassen - aber : je mehr desto genauer ...

Gruß
Larry
 
Ich weiß noch nicht genau wie die Kurve aussehen wird, gehen vom worst-case aus das sich die Kurve nicht konstant verhält und auch nicht durch eine einfache Funktion abbildbar ist.

Wie zeichne ich die Messwerte auf, damit ich diese im Programm verwenden kann? Die Trace Funktion kann ich hierzu vergessen. Was verstehst du unter Profilkurve?
 
Was soll dir denn die Funktion denn noch abnehmen?
Unter welchen Bedingungen du im Array schreibt und liest ist sowieso reine Applikation.
Und das lesen/schreiben ins Array ist ja nur ein "kleiner" Befehl.
Da bleibt für eine Funktion nicht viel über.... Und wenn: Dan würde dich die Siemens-Praktikanten Schnittstelle mehr verwirren wie helfen ...

Was Du vielleicht berücksichtigen musst (je nach Erfassungszeit/Wiederholgenauigkeit der Sensorik/Mechanik), das Du trotzdem eine Glättung braucht oder auch immer die Werte der nächsten/Vorigen 100-500 Inkremente oder so "erlaubst". Wenn da genau an einer Stelle 199 zu 201 Inc. deine Nm ansteigen ...

Noch als kleiner Tipp:
Wenn CPU-Speicherplatz kein Problem ist: Immer die letzte Fahrt(en ?) mit schreiben in ein anderes Array. Dann Kannst du bei Problemen besser Diagnose machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mach den Arrayzeiger mit Modulo, also Arrayzeiger := Istposition mod 100.
Modulo ist sicherlich schön und gut, um IndexWerte ausserhalb des Arrays zu vermeiden, ABER wie willst Du damit sicherstellen, dass die einzelnen ArrayElemente nicht mehrfach (für ganz unterschiedliche Positionen) belegt werden?
Welche PositionsWerte (von ... bis ...) kommen denn bei Deiner Mimik vor? Wäre nicht eine Skalierung + Begrenzung viel sinnvoller?

PS:
Willst Du das Moment nur in einer Richtung (z.B. nur beim Schliessen) auswerten?
Wenn nicht, dann wäre wohl 1 Array pro Richtung zweckmässig.
 
Zuletzt bearbeitet:
Das mit dem Modulo war ein Denkfehler von mir. Istposition / 100 und auf Ganzzahl runden. Ansonsten ist die Positionsabhängige Grenzwertbildung kein Problem mit dem Array. Bereite das Programm so vor. Wahrscheinlich reicht eine einfache Drehmomentenbegrenzung auch aus.
 
Beim Lesen/Überwachen passt das doch. Alle Position zwischen 1700 und 1799: Auf dieses max. Drehmoment überwachen.
Beim Schreiben/Kalibierfahrt hast Du recht. Da Kann/Muss man mehr machen. Aber z.B. Wenn in 1700-1799: Andauernd Schreiben wenn AktuellerWert > bisherGespeicherter.
 
Wie zeichne ich die Messwerte auf, damit ich diese im Programm verwenden kann?
Ich hatte angenommen, dass du dir hierzu schon Gedanken gemacht hattest - aber gut ...
Du baust dir eine Routine, die in einem von dir festgelegten Zeitintervall die x- und die y-Werte deiner Kurve in ein entsprechendes Array einliest.
Wenn dieses Array nun deine Vorgabe-Kurve sein soll dann würde ich die so aufgezeichneten Werte auf alle Fälle noch "ein bisschen" glätten.

Was verstehst du unter Profilkurve?
Das, was ich oben beschrieben habe ...

Das Vergleichen dieser Vorgabe-Kurve mit deiner aktuellen Kurve ist dann natürlich ein bisschen tricky - hier musst du dann ein bisschen Dreisatz anwenden ...
Ich vermute aber auch, dass du mit einem festen Grenzwert genauso zum Ziel kommen wirst ...

Gruß
Larry
 
Andere Größen muss man hierbei nicht berücksichtigen? Was ist z.Bsp. mit der Außentemperatur? Warum nicht gleich ein mehrdimensionales Kennfeld vorsehen ;) ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum nicht gleich ein mehrdimensionales Kennfeld vorsehen ;) ?
Vermutlich übersteht das GaragenTor die Aufnahme der Istwerte nicht, wenn die Anzahl der Dimensionen zu gross gewählt wird.
Wenn dann ein neues Tor her muss, beginnt die ganze Prozedur von vorne. Vorsicht! EndlosSchleife! ;)
 
Moin zusammen,

habe das jetzt so verstanden:
Es geht um ein Falt-Tor, das horizontal verfahren wird.

Die Drehmoment-Überwachung ist als Sicherheitsfunktion gedacht?

Dann würde ich einen Totbereich am Anfang und am Ende definieren, in dem ich das Moment nicht auswerte (Losbrechmomente). Den kann man als Zeit oder als Weg definieren, was zweckmäßiger ist.
Während des Verfahrens würde ich mir ansehen, welches die maximalen Momente sind, die während des Verfahrens auftreten und ggf. mal einen Versuch machen, welches Moment auftritt, wenn eine spontane Blockade eintritt.
Und jetzt würde ich nur noch auf Überschreitung eines Maximalmoments reagieren...

Was bringt es mir, auf verschiedene Momente über den Weg zu reagieren? Auf jede Rostflocke und jedes Sandkorn zu reagieren? Dann funktioniert das Ganze vielleicht drei Monate, danach hab ich immer wieder Ausfälle: Das müßte also dann auch noch ein selbstlernender Prozeß sein mit gleitender Maximal-Momenten-Kurve.

Seh ich das jetzt zu einfach????
Und schlußendlich: Wie machen das (andere) Hersteller solcher Torsteuerungen?

Gruß
Jens
 
"seple" hat ja eine relativ klare Programmier-Frage gestellt. (Auf jeden Fall im Verhältnis zu manch anderen Topic-Opener ..)
Jetzt gibt es höhere Kurven-Mathematik, Lästern und "Braucht man alles nicht.

 
Zuviel Werbung?
-> Hier kostenlos registrieren
"seple" hat ja eine relativ klare Programmier-Frage gestellt. ...
Stimmt:
Bietet hier TIA eine Art Funktionsaufzeichnung?
... bisher alles andere als klar beantwortet.

Jetzt gibt es höhere Kurven-Mathematik, Lästern und "Braucht man alles nicht.
Na ja, dazu wurden wir vom TE eingeladen:
Bin auch für andere Ideen natürlich offen
Der Hinweis, dass eine Formel für eine Annäherung an den tatsächlichen KurvenVerlauf oft mit wenig Aufwand ellenlange Arrays zufriedenstellend ersetzen kann, ist manchmal durchaus angebracht.
Und das Hinterfragen, ob der vorgesehene Aufwand noch in einem vertretbaren Verhältnis zum Nutzen steht, muss man manchmal auch haben, um sich nicht unnötig in Details zu verlieren. ;)
 
Ich muss Olli da zustimmen ...
Wir können Ratschläge erteilen und Tipps geben - aber entscheiden wie es dann werden soll muss der TE selber ...

Ach ja ... und ich denke auch, dass die Frage sinnvoll beantwortet worden ist ...

Gruß
Larry
 
Danke für die Hilfe. Werde am Anfang und am Ende einen Totbereich Programmieren und danach das Tor auf ein maximal Moment Begrenzen. Wenn man länger über das Problem nachdenkt erscheint es schon logisch das der Aufwand einer Positionsabhänggen Grenzwertbildung nicht dafür steht und auch nicht sinnvoll ist dieses Problem so verkomplizieren.
Trotzdem waren interessante Denkanstöße mit dabei und dazugelernt habe ich auch etwas.

Wünsche euch einen schönen Tag.
 
Zurück
Oben