Encoder an Mesa-Karte 7i95

More
08 Jun 2023 19:59 #273210 by PCW
Replied by PCW on topic Encoder an Mesa-Karte 7i95
Probably wiring or signal levels
(or 7I95 single ended vs differential encoder setting)
The following user(s) said Thank You: Muecke

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

More
08 Jun 2023 20:10 #273212 by Muecke
Replied by Muecke on topic Encoder an Mesa-Karte 7i95
ja du hast recht!

Aus HAL gelöscht
    # Encoder // net z-pos-fb     <=  [HMOT](CARD0).stepgen.04.position-fb
    # Encoder // net z-pos-fb      => joint.2.motor-pos-fb

dafür aufgenommen
    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

Jetzt wird etwas angezeigt wenn der Encoder bewegt wird.
Jetzt muss ich noch die Wärter einstellen.
 

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

More
09 Jun 2023 05:18 #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:
#*******************
#  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 KB

 

File Attachment:

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

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

More
09 Jun 2023 06:21 #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.
 
Attachments:
The following user(s) said Thank You: Muecke

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

More
09 Jun 2023 09:36 #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
09 Jun 2023 12:56 #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
09 Jun 2023 18:26 #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.



 
Attachments:

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

More
09 Jun 2023 19:19 #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.

More
09 Jun 2023 19:28 #273249 by Muecke
Replied by Muecke 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.

[/quote]Ich habe eine gewisse Vorstellung davon, was Du meinen.

Auf meinem Screenshot sind die Spuren A, B und Z (Index) zu sehen.
A und B zeigen Veränderungen an (dargestellt durch den roten bzw. gelben Punkt).
Im Gegensatz dazu scheint sich der Z (Index) nie zu ändern.
Ist es üblich, dass der Z (Index) nicht erfasst wird oder habe ich etwas missverstanden?

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

More
09 Jun 2023 19:49 #273250 by PCW
Replied by PCW on topic Encoder an Mesa-Karte 7i95
Normalerweise würden Sie nicht erwarten, das Indexsignal zu sehen, da es für LinuxCNC zu kurz ist, um es zu erkennen, es sei denn, Sie bewegen sich sehr langsam. Bei der Hardware-Encoder-Logik wird es mit der Hardware erkannt.

Sie können den Indexvorgang überprüfen, indem Sie sagen:

halcmd sets z-index-enable  true

und dann die Z-Achse verschieben, bis der Index erreicht ist. In diesem Fall sollte z-index-enable auf false gesetzt werden

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

Time to create page: 0.223 seconds
Powered by Kunena Forum