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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Ableitung und inverse Matrix in SPS programmieren

  1. #1
    Registriert seit
    23.10.2013
    Beiträge
    1
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe zwei grundlegende Fragen zur Programmierung in Structured Text nach IEC 61131-3 und freue mich über zahlreiche Unterstützung. Ich arbeite aktuell hauptsächlich mit MATLAB/Simulink, wo mir grafische Blöcke bzw. auch vorgefertigte Funktionen helfen.
    Ich möchte ein Polynomfitting (in MATLAB heißt der Befehl polyfit) mit einer beliebigen Anzahl an Polynom-Stützpunkten und einem Polynomgrad von 3-8 durchführen.

    Aus meiner Sicht brauche ich dazu hauptsächlich die Möglichkeit zur Bildung einer inversen Matrix (zur Bestimmung der Polynom-Koeffizienten) und zum Ableiten (zur Bestimmung des Wendepunkts).

    Hat jemand schon mal so etwas SPS-lauffähig umgesetzt oder weiß, wie es geht?

    LG
    Zitieren Zitieren Ableitung und inverse Matrix in SPS programmieren  

  2. #2
    Registriert seit
    09.08.2006
    Beiträge
    3.638
    Danke
    912
    Erhielt 661 Danke für 543 Beiträge

    Standard

    Naja, eine SPS ist keine Matheprogramm und auch nicht Excel...

    Ich weiss ja nicht, was Du machen willst/musst. Aber die Messreihe würd ich extern (z.B. in Matlab) Fitten, und das entstehende Polynom dann in der SPS verwenden. Ich hab grad keine Anwendung vor Augen, wo so ein Polynom in Echtzeit auf der SPS bestimmt werden sollte/kann...

    Jedenfalls kenn ich auch keine fertigen Funktionen. Wenn Du es selber machen willst: die SPS kann erstmal keine höheren algebraischen Aufgaben lösen:

    Zur Inversen Matrix hab ich auf die schnelle das hier gefunden: http://www.arndt-bruenner.de/mathe/s...ersematrix.htm

    Zum Ableiten nimmst Du Dir ein numerisches Verfahren Deiner Wahl und programmierst das für die SPS nach... (

    Aber wie hoch da die Zykluszeit wird, bzw. wie man das auf mehrere Zyklen aufteilt wird dann das spannende...

  3. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    businesskasper (25.10.2013)

  4. #3
    Registriert seit
    09.08.2006
    Beiträge
    3.638
    Danke
    912
    Erhielt 661 Danke für 543 Beiträge

    Standard

    Vielleicht ist es einfacher, gleich einen Optimierungsalgorithmus zu verwenden, welcher mit SPS-Grundrechenoperationen auskommt...

    z.B. https://de.wikipedia.org/wiki/Downhi...plex-Verfahren

    Aber welches Optimierungsverfahren ist für welche Anwendung die Beste? Darüber haben sich schon viele den Kopf zerbrochen.

    Naja, jedenfalls den Sinn, das auf ner SPS laufen zu lassen, seh ich leider immer noch nicht...

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

    businesskasper (25.10.2013)

  6. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    @Ducati:
    Ich kann jetzt zwar zu der obien Problematik noch nicht wirklich etwas beisteuern ... auf der anderen Seite habe ich hinsichtlich Berechnungen (auch komplexer Natur) noch nicht feststellen müssen, dass man da etwas mit der SPS nicht umsetzen könnte. Man muss natürlich hier in Kauf nehmen, dass durch so etwas die Dauer eines Zyklus kräftig ansteigt ... aber wenn das Konzept das hergibt ... ich muss ja zu dem Zeitpunkt einer solchen Auswertung keine zeitkritischen Maschinenfunktionen auslösen ...

    Gruß
    Larry

  7. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    businesskasper (25.10.2013)

  8. #5
    Registriert seit
    09.08.2006
    Beiträge
    3.638
    Danke
    912
    Erhielt 661 Danke für 543 Beiträge

    Standard

    Naja, solche iterativen Berechnungen dauern schon... Je nach Komplexität und geforderter Genauigkeit ("beliebige Anzahl Messwerte, Polynom 8. Grades!") können da schon mal 100000 Schleifendurchläufe notwendig sein. Wobei der TE ja nicht erwähnt hat, welchen Optimieralgorithmus er verwenden will.

    Da gibt's ja 1000de Mathematiker, welche sich mehr oder weniger effektive Algorithmen ausdenken. Man könnte ja mal schauen, wie lange Matlab mit polyfit zum Berechnen benötigt, und das dann auf die Zykluszeit der SPS versuchen hochzurechnen...

    Also umsetzbar mit einer SPS ist das sicherlich, nur die Frage mit welchem Aufwand und mit welchem Ergebnis (Genauigkeit, Berechnungsdauer)

    Gruß.

  9. Folgender Benutzer sagt Danke zu ducati für den nützlichen Beitrag:

    businesskasper (25.10.2013)

  10. #6
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Zitat Zitat von ducati Beitrag anzeigen
    Also umsetzbar mit einer SPS ist das sicherlich, nur die Frage mit welchem Aufwand und mit welchem Ergebnis (Genauigkeit, Berechnungsdauer)
    Probieren geht über Studieren!

    Ich würde mir mal Beispielcode in C ansehen. Diese kann man im ersten Schritt mal leicht nach ST/SCL portieren.
    Danach sieht man ja mal was mit der Zykluszeit los ist und ob die Genauigkeit noch akzeptabel ist.
    Danach kann man noch immer mit dem zerlegen der Schleifen beginnen damit diese auf meherere Zyklen aufgeteilt werden, und sonstige Optimierungen.

    Vielleicht hier noch was interessantes:
    http://de.wikipedia.org/wiki/Polynominterpolation
    http://www.zeiner.at/informatik/c/Matrix.html

  11. Folgender Benutzer sagt Danke zu godi für den nützlichen Beitrag:

    businesskasper (25.10.2013)

  12. #7
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Ich würde soetwas versuchen mit einem Tool, das passt und das wäre Python mit numpy. Python ist der Server und deine SPS der TCP/IP client. Der Server-Code ist nicht weiter aufwendig. Es werden etwa 30 Zeilen. Grundgedanke ist, dass du ein Kommando mit der Matrix an den Server lieferst und der Server die Inverse zurücsendet. Es würde ja auch mit RS232 gehen. Das Bestimmen einer Inversen Matrix kann zu nummerischen Instabilitäten führen, die dir ein falsches Ergebnis liefern. Da vertraue ich lieber auf externe Werkzeuge, die diese Probleme richtig behandeln.

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

    businesskasper (25.10.2013)

  14. #8
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.532
    Danke
    1.152
    Erhielt 1.253 Danke für 982 Beiträge

    Standard

    Ich würde auch den Ansatz von drfunrock vorziehen.
    Viele SPSen arbeiten nur mit 32Bit-Realzahlen. Da werden die Rundungsfehler ganz nett heftig bei iterativen Rechnungen.

    Gruß
    Dieter

  15. Folgender Benutzer sagt Danke zu Blockmove für den nützlichen Beitrag:

    businesskasper (25.10.2013)

  16. #9
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    Matrix-Rechnung mit viele Durchläufen und einfacher Genauigkeit REAL=32bit float, LREAL(ab S71200) = 64bit double
    kann ganz schön schlechte Ergebnisse liefern - besonders im Vergleich mit MATLAB - klar kann man alles portieren - aber die Präzision laesst sich
    nicht soo einfach "nachbauen", ganz davon abgesehen das die SPS keine starke FPU hat und auch nicht dafür geschaffen wurde komplexe/iterative Mathe durchzuknebeln

    ich würde eher ein kleines PC Programm schreiben und das per TCP/IP von der S7 füttern/abhorchen - dann kannst du auch deinen Code weiterverwenden
    - oder einen kleine embedded PC oder sowas an die SPS drannhängen (falls es etwas industrietauglicher sein soll)

  17. Folgende 2 Benutzer sagen Danke zu LowLevelMahn für den nützlichen Beitrag:

    businesskasper (25.10.2013),ducati (25.10.2013)

  18. #10
    Registriert seit
    09.08.2006
    Beiträge
    3.638
    Danke
    912
    Erhielt 661 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    naja, so dringend scheints den TE ja nicht zu interessieren...

Ähnliche Themen

  1. SPS 7-200 Programmieren und TP anschließen
    Von inuzukagirl im Forum Schaltschrankbau
    Antworten: 6
    Letzter Beitrag: 06.12.2012, 19:37
  2. Ableitung eines zeitlich veränderlichen Wertes bilden
    Von Draco Malfoy im Forum Programmierstrategien
    Antworten: 24
    Letzter Beitrag: 23.11.2012, 13:47
  3. inverse Encoderspuren
    Von Inematov im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 05.09.2011, 18:13
  4. Matrix Programmieren
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 24.02.2005, 14:46
  5. Antworten: 6
    Letzter Beitrag: 01.02.2005, 11:22

Lesezeichen

Berechtigungen

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