Encoder an Mesa-Karte 7i95

More
3 years 4 months ago #273224 by Muecke
Replied by Muecke on topic Encoder an Mesa-Karte 7i95
Ich habe ein Problem mit meinem Encoder und der HAL-Konfiguration in LinuxCNC und hoffe, dass ihr mir helfen könnt. Hier ist eine Zusammenfassung meiner Situation:

Wenn ich den Encoder drehe, ändert sich die Position der Z-Achse in LinuxCNC, was korrekt ist. Allerdings bleibt der Wert "Counts" in der HAL-Konfiguration immer bei 0 stehen.

Mein Encoder sollte jedoch bei einer Umdrehung 1024 Schritte gezählt haben, und meine Spindel hat eine Steigung von 4 mm. Der Verbauten Schrittmotoren machen 200 Vollschritte der Treiber ist auf 1/64 eingestellt, pro umdrehung solten demnach 12.800 Steps generiert werden.

Ich habe meine HAL- und INI-Dateien als Anhang beigefügt und möchte euch einen Auszug aus meiner HAL zeigen:
Code:
#******************* # AXIS Z JOINT 2 #******************* setp pid.z.Pgain [JOINT_2]P setp pid.z.Igain [JOINT_2]I setp pid.z.Dgain [JOINT_2]D setp pid.z.bias [JOINT_2]BIAS setp pid.z.FF0 [JOINT_2]FF0 setp pid.z.FF1 [JOINT_2]FF1 setp pid.z.FF2 [JOINT_2]FF2 setp pid.z.deadband [JOINT_2]DEADBAND setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT setp pid.z.error-previous-target true setp pid.z.maxerror 0.000500 # Encoder // net z-index-enable <=> pid.z.index-enable net z-enable => pid.z.enable net z-pos-cmd => pid.z.command net z-pos-fb => pid.z.feedback net z-output <= pid.z.output # Step Gen signals/setup setp [HMOT](CARD0).stepgen.04.dirsetup [JOINT_2]DIRSETUP setp [HMOT](CARD0).stepgen.04.dirhold [JOINT_2]DIRHOLD setp [HMOT](CARD0).stepgen.04.steplen [JOINT_2]STEPLEN setp [HMOT](CARD0).stepgen.04.stepspace [JOINT_2]STEPSPACE setp [HMOT](CARD0).stepgen.04.position-scale [JOINT_2]STEP_SCALE setp [HMOT](CARD0).stepgen.04.step_type 0 setp [HMOT](CARD0).stepgen.04.control-type 1 setp [HMOT](CARD0).stepgen.04.maxaccel [JOINT_2]STEPGEN_MAXACCEL setp [HMOT](CARD0).stepgen.04.maxvel [JOINT_2]STEPGEN_MAXVEL # --- Encoder feedback signals/setup --- setp [HMOT](CARD0).encoder.02.counter-mode 0 setp [HMOT](CARD0).encoder.02.filter 1 setp [HMOT](CARD0).encoder.02.index-invert 0 setp [HMOT](CARD0).encoder.02.index-mask 0 setp [HMOT](CARD0).encoder.02.index-mask-invert 0 setp [HMOT](CARD0).encoder.02.scale [JOINT_2]ENCODER_SCALE net z-pos-fb <= [HMOT](CARD0).encoder.02.position net z-pos-fb => joint.2.motor-pos-fb net z-vel-fb <= [HMOT](CARD0).encoder.02.velocity net z-index-enable joint.2.index-enable <=> [HMOT](CARD0).encoder.02.index-enable net z-pos-rawcounts <= [HMOT](CARD0).encoder.02.rawcounts # ---closedloop stepper signals--- net z-pos-cmd <= joint.2.motor-pos-cmd net z-vel-cmd <= joint.2.vel-cmd net z-output <= [HMOT](CARD0).stepgen.04.velocity-cmd # Encoder // net z-pos-fb <= [HMOT](CARD0).stepgen.04.position-fb # Encoder // net z-pos-fb => joint.2.motor-pos-fb net z-enable <= joint.2.amp-enable-out net z-enable => [HMOT](CARD0).stepgen.04.enable # ---setup home / limit switch signals--- net z-home-sw => joint.2.home-sw-in net z-neg-limit => joint.2.neg-lim-sw-in net z-pos-limit => joint.2.pos-lim-sw-in
Ich meine das die Verdrahtung in der HAL noch Fehlerhaft ist, oder ich etwas vergessen habe vom Motor auf den Encoder umzustellen. (der Encoder hat Spur A, B und Z)

Könnt ihr mir dabei helfen, das Problem zu identifizieren und eine Lösung zu finden? Ich bin für jede Unterstützung dankbar.

ps. welche Werte müsste ich im HAL-Konfiguration anzeigen lassen um Motor / Encoder / Skalirung Motor & Encoder /Wegstrecke zu überprüfen.

Gruß Mücke

 

File Attachment:

File Name: 7i95-2023-...6-09.hal
File Size:8.43 KB

 

File Attachment:

File Name: 7i95-2023-...6-09.ini
File Size:6.2 KB

Please Log in or Create an account to join the conversation.

More
3 years 4 months ago #273225 by chris@cnc
Das ist sehr seltsam. Wenn das Signal encoder.**.count nicht zählt kann sich auch nichts in der Anzeige ändern. Das gleiche wie rawcounts. Encoder rohdaten ohne Scalierung.
Deine config sieht fast so aus wie meine bis auf
net z-index-enable  <=> pid.z.index-enable
der ist bei mir auch aktiv.
Für screenshots installiere 
sudo apt install xfce4-screenshooter
damit kannst du auch Ausschnitte aufnehmen und zeigen.
 
The following user(s) said Thank You: Muecke

Please Log in or Create an account to join the conversation.

More
3 years 4 months ago #273233 by tommylight
Scale = shrit motor pulses per mm
Encoder_scale = encoder pulses per mm
1024 PPR encoder = 4096 pulse pro umdrehung.
The following user(s) said Thank You: Muecke

Please Log in or Create an account to join the conversation.

More
3 years 4 months ago #273236 by PCW
Replied by PCW on topic Encoder an Mesa-Karte 7i95
Also delete this line in your hal file

loadrt encoder num_chan=5

It may be causing confusion by creating 5 non-working software encoders
The following user(s) said Thank You: Muecke

Please Log in or Create an account to join the conversation.

More
3 years 4 months ago #273246 by Muecke
Replied by Muecke on topic Encoder an Mesa-Karte 7i95

Also delete this line in your hal file
loadrt encoder num_chan=5
It may be causing confusion by creating 5 non-working software encoders

Das habe ich gemacht.
Jetzt bekomme ich auch im COUNT etwas angezeigt. (Bild)
Frage: Ist die Basis zum Zählen 0 oder 1?
Der Mesa 7i95 hat Encoder 0 bis 5.

Scale = schritt motor pulses per mm
Encoder_scale = encoder pulses per mm
1024 PPR encoder = 4096 pulse pro umdrehung.
;-)
Ok.

Meine Daten Schrittmotor + Spindel
  • Schrittmotor: 1,8° = 200 Schritte pro Umdrehung
  • Spindel: 4mm Steigung
  • Treiber: 1/64 Mikroschritte
Berechnung:
STEP_SCALE = (200 x 64) / 4
STEP_SCALE = (12.800) / 4
STEP_SCALE = 3.200

Der Motor müsste 3.200 Steps machen um 1mm bewegung zu erzeugen?


Meine Daten: Encoder + Spindel
  • Encoder: 1.024 P/R
    Wie kommst du auf 4.096 pulse pro Umdrehung? Was bedeutet P/R ?Pulse / Rotation ?
  • Spindel: 4mm Steigung

Berechnung:
STEP_SCALE = Pulse pro Umdrehung / 4
STEP_SCALE = (1.024) / 4
STEP_SCALE = 256

oder
STEP_SCALE = Pulse pro Umdrehung / 4
STEP_SCALE = (4.096) / 4
STEP_SCALE = 1.024

Das ist sehr seltsam. Wenn das Signal encoder.**.count nicht zählt kann sich auch nichts in der Anzeige ändern. Das gleiche wie rawcounts. Encoder rohdaten ohne Scalierung.
Deine config sieht fast so aus wie meine bis auf
net z-index-enable <=> pid.z.index-enable
der ist bei mir auch aktiv.
Für screenshots installiere
sudo apt install xfce4-screenshooter
damit kannst du auch Ausschnitte aufnehmen und zeigen.
Was macht die Zeile?
net z-index-enable <=> pid.z.index-enable
Ich habe sie eingefügt, aber noch keinen Unterschied gesehen.

Allerdings habe ich die Zeile wie von PCW vorgeschlagen entfernt und bekomme etwas angezeigt.
Für Screenshots habe ich den Flameshot installiert, kann der Xfce4-Screenshooter mehr oder auch Videos aufnehmen?

Jetzt muss ich mich an die Arbeit machen und herausfinden, was die Fehlermeldungen bedeuten (wann ein Fehler auftreten soll (Dieferenz) und wie ich die Skala richtig hinbekomme und dann muss ich das an der Achse überprüfen :-).

Außerdem möchte ich mit dem HAL-Oszilloskop den Motor richtig einstellen, starten usw.
Aber das kann ich auch noch nicht, jetzt müssen erst mal die anderen Einstellungen passen.

Es ist noch ein langer Weg, habe ich das Gefühl.



 

Please Log in or Create an account to join the conversation.

More
3 years 4 months ago #273248 by PCW
Replied by PCW on topic Encoder an Mesa-Karte 7i95

Was macht die Zeile?
net z-index-enable <=> pid.z.index-enable
Ich habe sie eingefügt, aber noch keinen Unterschied gesehen.

Dies ist für die Referenzierung zum Index erforderlich, da die Encoder-Position macht bei der Indexerkennung einen Sprung auf 0. Dies informiert den PID-Regler keine Ableitungsberechnungen für FF1 oder FF2 im aktuellen Zyklus durchzuführen da sie nach diesem Sprung völlig falsch wären.
The following user(s) said Thank You: Muecke

Please Log in or Create an account to join the conversation.

Moderators: Muecke
Time to create page: 0.077 seconds
Powered by Kunena Forum