Sonntag, 31. August 2014

Wartungsanzeige für Stepcraft-Maschinen in Linux-CNC

Wartungsanzeige für Stepcraft-Maschinen in Linux-CNC

Wie im Stepcraft Forum schon angedeutet, habe ich mir eine Wartungsanzeige ins Linux CNC eingebaut, die mir anzeigt, wann es Zeit für die nächste Schmierung/Ölung ist.
Screenshot Wartungsanzeige
Zuerst galt es mal zu klären, wie denn die 10 Stunden Wartungsintervall genau zu berechnen sind.
Dazu hab ich von Herrn Wedel von Stepcraft die Auskunft erhalten:
Mit Betriebsstunden ist die tatsächliche Bewegung der Maschine gemeint, da nur diese zu einem etwaigen Fett-/Ölabrieb führt. Auch wenn die Maschine längere Zeit nicht betrieben wurde, führt dies i.d.R. nicht zu einer Veränderung der Konsistenz des Schmiermittels.
 Also, brauchen wir etwas, das immer dann, wenn eine Achse in Bewegung ist, mitzählt. Der Kern des ganzen ist in der Python-Datei timelog.py, die man im Config-Verzeichnis ablegt. timelog.py fragt einmal pro Sekunde alle Achsen ab, ob ihre aktuelle Geschwindigkeit > 0 ist; falls dies der Fall ist, wird eine Sekunde zur Gesamtbetriebszeit hinzugezählt.
Das Ganze wird in eine (versteckte) Datei namens .timelog ins Home-Verzeichnis geschrieben; D.h, wenn man eine Schmierung durchgeführt hat muss man einfach diese Datei löschen, um den Wartungszeiger wieder auf 0 zu bringen.

Wie wird nun timelog.py in Axis integriert?

In meiner Fräsenkonfiguration befindet sich ja schon die Zeile:
PYVCP = laengensensor.xml

Deren Inhalt wird nun so erweitert:

<pyvcp>
    <button>
        <halpin>"set-probe-xy"</halpin>
        <text>"Längensensorposition merken"</text>
    </button>
    <button>
        <halpin>"goto-probe-xy"</halpin>
        <text>"Zur Längensensorposition"</text>
    </button>
    <button>
        <halpin>"do-the-probe"</halpin>
        <text>"Werkzeuglänge messen"</text>
    </button>
    <button>
        <halpin>"set-xy-zero"</halpin>
        <text>"X/Y auf 0 setzen"</text>
    </button>
    <hbox>
        <relief>RAISED</relief>
        <bd>3</bd>
        <meter>
            <halpin>"movetime"</halpin>
            <text>"Wartung"</text>
            <subtext>"s"</subtext>
            <size>250</size>
            <min_>0</min_>
            <max_>39600</max_>
            <majorscale>3600</majorscale>
            <minorscale>600</minorscale>
            <region1>0,32400,"green"</region1>
            <region2>32400,36000,"yellow"</region2>
            <region3>36000,39600,"red"</region3>
        </meter>
    </hbox>
</pyvcp>
Die untere hbox stellt dabei die Wartungsanzeige dar. Soweit der GUI-Teil, jetzt müssen wir noch den halpin namens "movetime" erzeugen.

Dazu braucht es eine weitere Erweiterung der Fräsenkonfiguration, diesmal im Abschnitt [HAL]:
[HAL]
HALFILE = timelog.hal
Die Datei timelog.hal ist nun dafür zuständig unser timelog.py zu laden:

loadusr -W ./timelog.py
aber damit noch nicht genug, die laengensensor.hal-Datei, welche in der Fräsenkonfiguration ja durch
die Zeile:
POSTGUI_HALFILE = laengensensor.hal
geladen wird, muss auch noch erweitert werden zu:
net set-probe-xy halui.mdi-command-00 <= pyvcp.set-probe-xy
net goto-probe-xy halui.mdi-command-01 <= pyvcp.goto-probe-xy
net do-the-probe halui.mdi-command-02 <= pyvcp.do-the-probe
net set-xy-zero halui.mdi-command-03 <= pyvcp.set-xy-zero
net maintainance_meter pyvcp.movetime <= timelog.movetime
Die unterste Zeile ist dabei jene, die unserem GUI-Widget die gemessenen Betriebszeiten zuordnet.

Eine kompletten Satz an Konfigurationsdateien mit allen beteiligten Dateien habe ich hier zum Download bereitgestellt.

Viel Erfolg beim Nachbauen.


2 Kommentare:

  1. Hallo Robert,
    danke das Due deine Erkentnisse und Modifikationen mit uns teilst. Leider funktioniert bei mir das timelog.py nicht correct. selbt beim manuellen aufrufen nicht.
    System Ubuntu 12.04 mit Kernel und Fehler :

    cnc@linuxcnc:~/linuxcnc/configs/Pauli_F207-V$ python timelog.py
    RTAPI: ERROR: could not open shared memory (errno=2)
    Speicherzugriffsfehler (Speicherabzug geschrieben)
    cnc@linuxcnc:~/linuxcnc/configs/Pauli_F207-V$ uname -a
    Linux linuxcnc 3.4-9-rtai-686-pae #1 SMP PREEMPT Debian 3.4.55-4linuxcnc i686 athlon i386 GNU/Linux

    Ne Idee woran das liegen kann?
    Gruß
    Sven

    AntwortenLöschen
    Antworten
    1. Hallo Sven, sorry für die späte Antwort, ich hatte deinen Kommentar fast übersehen.

      Also, wenn ich in meiner Testumgebung einfach nur python timelog.py ausführe, dann bekomme ich auch den RTAPI: ERROR, ich schätze mal einfach deshalb, weil er keine "Verbindung" zum LinuxCNC aufnehmen kann.

      Wenn LinuxCNC dann läuft, bekomme ich:
      rli@cncsim:~/linuxcnc/configs/sim/axis$ python timelog.py
      HAL: ERROR: duplicate component name 'timelog'
      Traceback (most recent call last):
      File "timelog.py", line 22, in
      h = hal.component("timelog")
      hal.error: Invalid argument

      Auch klar, weil ja das Module im LinuxCNC schon drin ist.

      Ich hab allerdings nicht die aktuellste Version:
      rli@cncsim:~/linuxcnc/configs/sim/axis$ uname -a
      Linux cncsim 2.6.32-122-rtai #rtai SMP Tue Jul 27 12:44:07 CDT 2010 i686 GNU/Linux

      Kann gut sein, dass sich da was am LinuxCNC geändert hat, sodass es dann nicht mehr geht.

      Löschen