LinuxCNC Gemeinsamer Home und Limit Switch

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • LinuxCNC Gemeinsamer Home und Limit Switch

      Hallo zusammen,

      da ich ein wenig Theater mit meinen Homeschaltern hatt eund ich im ersten Anlauf die Dokumentation nicht richtig verstande hatte, möchte ich kurz meine Lösung darlegen.

      Aufgabe:
      Gemeinsamer Home und Limitschalter (Maschine hat nur einen Schalter) je Axis
      Hinweis: Meine Schalter sind NC und demnach dauerhaft HIGH (wenn sie nichts "sehen"). Dies erfordert hier eine Invertierung. Weiterhin sind meine Limitschalter am negativen Ende der Achse.
      Dargestellt am Beispiel der X - Achse.

      In YourMachine.hal

      Source Code

      1. # We use "not" components to invert signals; for homing 3 not components are used
      2. loadrt not count=3
      3. addf not.0 servo-thread
      4. addf not.1 servo-thread
      5. addf not.2 servo-thread
      6. # --- HOME-X ---
      7. #Map control input to signal min-home-x
      8. net min-home-x <= hm2_7i76e.0.7i76.0.0.input-13 # Oder Parport, oder ...
      9. net min-home-x not.0.in
      10. #map inverted singal into neg-lim-sw-in (home is where negative axis limit is - interpreted as XYZ = 0)
      11. net min-home-x-invers not.0.out => joint.0.neg-lim-sw-in
      12. #connect home switch
      13. net min-home-x => joint.0.home-sw-in
      Display All

      in YourMachine.ini

      Source Code

      1. [AXIS_X]
      2. MAX_VELOCITY = 166.666666667
      3. MAX_ACCELERATION = 500.0
      4. MIN_LIMIT = -0.01
      5. MAX_LIMIT = 630.0
      6. [JOINT_0]
      7. TYPE = LINEAR
      8. HOME = 0.0
      9. FERROR = 10.0
      10. MIN_FERROR = 1.0
      11. MAX_VELOCITY = 166.666666667
      12. MAX_ACCELERATION = 500.0
      13. # The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
      14. # If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
      15. STEPGEN_MAXVEL = 208.33
      16. STEPGEN_MAXACCEL = 625.00
      17. # these are in nanoseconds
      18. DIRSETUP = 3000
      19. DIRHOLD = 3000
      20. STEPLEN = 3000
      21. STEPSPACE = 3000
      22. STEP_SCALE = 400.0
      23. MIN_LIMIT = -0.01
      24. MAX_LIMIT = 630.0
      25. #HOMING CONFIG
      26. #Offset is required, as otherwise limit is permanently on and machine won't move; negative Offsett moves machine towards axis positive end with this config!
      27. HOME_OFFSET = -0.50000
      28. HOME_SEARCH_VEL = 15.00000
      29. HOME_LATCH_VEL = 0.500000
      30. HOME_FINAL_VEL = 0.500000
      31. HOME_USE_INDEX = NO
      32. HOME_SEQUENCE = 1
      33. #Ignore_Limits has to be yes, otherwise machine will trigger limit violation during homing
      34. HOME_IGNORE_LIMITS = YES
      Display All
      Wichtigster Punkt:
      HOME_IGNORE_LIMITS = Yes und HOME_OFFSET ungleich 0

      Da man beim Testen gerne mal auf einen Limitswitch drauf fährt: Gmoccapy geht dann in estop, jetzt taucht im Jogfenster ein Feld auf, welches "Ignore Limits" erlaubt. Maschine wieder anschalten und vom Schalter herunterfahren... Wenn ihr euch total verfahren habt, dann hilft nur Neustart der Steuerung und Auskommentieren der Zeile für den Limitschalter in der HAL. Don't ask how I know :D :rolleyes: .

      Vielleicht hilft es hier ja jemanden.
      Viele Grüße
      Guido
    • Hallo.

      GuiHue wrote:

      Hinweis: Meine Schalter sind NC und demnach dauerhaft HIGH (wenn sie nichts "sehen"). Dies erfordert hier eine Invertierung. Weiterhin sind meine Limitschalter am negativen Ende der Achse.
      Bist Du sicher, dass es das nicht bereits "so" gibt ohne, dass man mit Funktionen im Servo-Thread was machen muss?

      Kenn mich mit Mesa-Karten nicht aus, aber zumindest am Parallel-Port kann man einfach z.B.
      net tool_sensor <= parport.0.pin-11-in-not
      benutzen, um das invertierte Signal von Eingangspin 11 zu bekommen.

      linuxcnc.org/docs/html/drivers/hostmot2.html#_pins_2 legt nahe, dass es sowas in der Art auch für Mesa-Karten gibt, wobei ich die Namensgebung dort mit Deiner nicht ganz in Einklang bringen kann.

      Edit:
      Mmmh. Bei mir noch mal nachgeschaut und ich muss gar nichts invertieren bei den Limit/Home-Switches. Beide bekommen das gleiche Signal:

      Source Code

      1. net both-x <= parport.0.pin-12-in
      2. net both-x => axis.0.home-sw-in
      3. net both-x => axis.0.neg-lim-sw-in
      4. net both-x => axis.0.pos-lim-sw-in

      Tschüss,
      Lars

      The post was edited 1 time, last by chaotix ().

    • Hi Guido,

      meine Schalter sind auch NC und ich habe auch nur einen je Achse, der sowohl Limit als auch für Referenzierung (Homing) genutzt wird. Ich glaube, Du hast es Dir da unnötig kompliziert "manuell" hingebastelt, oder ich habe irgendwas heute morgen nicht verstanden. Ich habe einfach die Config hierfür beim initialen Stepconf-Wizard erstellen lassen und nicht weiter modifiziert. Oder ist das bei MESA wirklich so doll anders?

      Source Code

      1. net max-home-y <= parport.0.pin-12-in-not
      2. net max-home-y => joint.1.home-sw-in
      3. net max-home-y => joint.1.pos-lim-sw-in
      Gruß

      Andreas
    • Ich verstehen euren Punkt. Die Not Komponente müsste unnötig sein - hatte mir im Keller das ohne Doku schnell gebastelt. Wird kommendes Wochenende geprüft.

      Beiden das gleiche Signal zu geben hatte ich versucht. Damit stand die Achse sofort im Limit (sich wenn sie weit weg war)
      Viele Grüße
      Guido

      Post by GuiHue ().

      This post was deleted by KampfHund: kann glaube ich gelöscht werden. ().
    • New

      Das -not existiert natürlich auch für Mesa Karten:). Spart 3 Not Komponenten.

      Die Invertierung brauche ich trotzdem.

      Neue Baustelle:

      Ich überlege aktuell Limitschalter auch am anderen Ende zu installieren. Ich möchte jedoch auf weitere Kabel verzichten und die zusammenzulegen. Kann linuxcnc die anhand der Fahrtrichtung der Achse unterscheiden?
      Viele Grüße
      Guido
    • New

      Jo, geht. Musst sie dann nur in Reihe bzw Parallel schalten, dann ist das ein (1) Schalter für LinuxCNC.

      Aber brauchst Du die wirklich? Eigentlich reichen Refenzierung & Soft-limits.
      Kleiner Tipp noch: Die Home-Position des Portals würde ich "hinten" definieren. Sonst fährt man jedesmal nach dem Refernzieren das Portal erstmal manuell "aus dem Weg" um vorne Aufspannen zu können ;)
      Gruß

      Andreas
    • New

      Hallo Andreas,

      ich habe Urlaub, sollte iegentlich an einem "Buch" schreiben, bin nicht daheim und kann "im Keller spielen" und komme daher auf dumme Gedanken. Diese wurden ausgelöst durch grundsätzliches Misstrauen - wobei ich mit dem Softlimit bisher kein Thema hatte.

      In meinem Fall (NC) würde ich die Sensoren wohl in Reihe schalten, so geht das Signal nicht verloren. Mal sehen ob ich das wirklich mache. Richtig ist, dasse s eigentlich nicht nötig ist.

      Mit dem Ort der Home Position: mich stört es derweil nicht einmal, da ich gut seitlich an die Maschine dran komme und "vorne" wiederrum gerne den Fräser wechsel. Die Idee ist aber nicht verkehrt!
      Viele Grüße
      Guido