Schrittmotor "Schritte" in millimeter umrechnen und zurück

ph4nt0m

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

hab da ein kleines problem zur berechnung der istposition vom Schrittmotor
Zur verfügung steht mir ein DINT mit Schritten des Motors.

Also ein DINT zur eingabe der Schritte und ein DINT zur ausgabe der Schritte (Aktuelle Schritte)

Anlagendaten:

Schrittmotor im halbschrittbetrieb 0,9° = 400 Schritte / Umdrehung
Vorschubkonstante = 70mm / Umdrehung

Wie genau kann man das nun in der SPS umrechnen?

Ich möchte gerne den Aktuellen fahrweg anzeigen sowie den schrittmotor eine vorgabe in mm geben die dann halt in schritte umgerechnet werden muss.

Hab da grad irgendwie grad eine blockade :(

Vielen Dank
 
intern (sps) würde ich mit den schritten arbeiten um die max. genauigkeit zu haben. zur anzeige/eingabe würde ich dann die schritte normieren zu den millimetern.
1 schritt entspricht 0,175mm.

z.b. sps 0-10000 = anzeige 0-1750mm
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ähhh ...

Nach deiner Darstellung entsprechen also 400 Schritte = 1 Umdrehung und 1 Umdrehung = 70 mm - demzufolge wäre dann 1 Schritt = 70 / 400 [mm] = 0,175 mm

Gruß
Larry
 
Ähhh ...

Nach deiner Darstellung entsprechen also 400 Schritte = 1 Umdrehung und 1 Umdrehung = 70 mm - demzufolge wäre dann 1 Schritt = 70 / 400 [mm] = 0,175 mm

Gruß
Larry


Und genau da besteht mein Problem mit der rückrechnung in Schritte :)

also wenn ich ein mm wert angebe beispiel " 1mm " oder " 1,5 mm " kommt da irgend nen komma wert raus ich muss aber immer gerade schritte haben :(
 
s. meine antwort oben

1mm läßt sich auf diese art nicht exakt steuern
annährerung: 6 schritte => 1,05mm

d.h. die eingabe 1mm wird in der sps zu 6 schritte was wiederum zur
anzeige 1,05mm wird

sollte mehr genauigkeit bzw. einfachere umrechnung notwendig sein dann empfehle ich ein anderes getriebe.
z.b. 1:7 untersetzt => 1 umdrehung (400 schritte) = 10mm
damit läßt sich dann auch 1,000 bzw 1,500 mm in eine gerade schrittanzahl auflösen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wäre das eine Lösung:

Code:
//IstSchritte -> Istposition [mm]
      L     #IstwertSchritt             // als DINT
      DTR   
      L     4.000000e+002               // 400 Inc/Umdr
      /R    
      L     7.000000e+001               // 70 mm/Umdr
      *R    
      T     #Istposition                // Istposition in mm (REAL)


//Sollposition [mm] -> SollSchritte
      L     #Sollposition               // als REAL
      L     7.000000e+001               // 70 mm/Umdr
      /R    
      L     4.000000e+002               // 400 Inc/Umdr
      *R    
      RND   
      T     #SollwertSchritt            // Sollposition in Inc (DINT)
Gruss SW-Mech
 
Hi,

ich habe oft ähnliche Anwendungsfälle und arbeite grundsätzlich im REAL-Format, so geht nichts verloren und ich bin super genau, vor allem bei unendlichen Brüchen. Nach allen Berechnungen runde ich ich wieder ins DINT.

Früher hatte ich Steuerungen (OMRON CQM1), die konnten nur DINT, da habe ich, der Genauigkeit wegen mit 100 oder 1000 multipliziert (die Kommastelle verschoben) und erst am Ende alller Berechnungen das Komma wieder zurückgeschoben (Dividiert durch 100 oder 1000 oder ...).

Grüße
Michael
 
Wäre das eine Lösung:

Code:
//IstSchritte -> Istposition [mm]
      L     #IstwertSchritt             // als DINT
      DTR   
      L     4.000000e+002               // 400 Inc/Umdr
      /R    
      L     7.000000e+001               // 70 mm/Umdr
      *R    
      T     #Istposition                // Istposition in mm (REAL)


//Sollposition [mm] -> SollSchritte
      L     #Sollposition               // als REAL
      L     7.000000e+001               // 70 mm/Umdr
      /R    
      L     4.000000e+002               // 400 Inc/Umdr
      *R    
      RND   
      T     #SollwertSchritt            // Sollposition in Inc (DINT)
Gruss SW-Mech


Funktioniert Perfekt :) Vielen Vielen Dank !

Werd mich wohl dann um eine andere übersetzung kümmern um das noch ein bisschen genauer zu bekommen :)

Solche funktionen sollte man hier irgendwo in ein Kompendium zusammenfassen! Sehr gute Arbeit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ähhh ... sorry ...

Schön wenn es jetzt perfekt funktioniert ... allerdings bewirkt der vorgeschlagene Wert keine präziseren Ergebnisse als wenn man gleich mit den aus den Einzelwerten resultierenden Faktor rechnet.
70 / 400 ergibt immer den gleichen 0,175 - ergo kann man das auch gleich als Konstante verwenden. Der Unterschied ist nur, dass die CPU diese Konstante in jedem Zyklus wieder neu berechnet.

Das Einzige, was etwas bewirkt ist das strikte Vermeiden von Type-Wechseln - also nach Möglichkeit bei einem Variablentyp bleiben und es mit dem bis zu Ende durchziehen. In diesem Fall wäre sicherlich REAL der Type der Wahl ...

Eine höhere Genauigkeit erhält man hier (und auch allgemein) nur durch eine Erhöhung der Auflösung.

Gruß
Larry
 
Zurück
Oben