controller module

Das Modul regelt die serielle Kommunikation mit dem CNC-Controller.

class controller.Controller(grundeinstellungen)[Quellcode]

Bases: object

__init__(grundeinstellungen)[Quellcode]

Der Konstruktor wird aufgerufen, wenn ein Controller-Objekt erzeugt wird und speichert unter Anderem Grundeinstellungen wie Verbindungsparameter und Korrekturfaktoren in lokale Variablen.

In ihm wird auserdem die Methode verbindung_initialisieren() aufgerufen, welche den Handshake mit dem Controller durchführt.

Parameter

grundeinstellungen (dict) – Aus dem Config-File eingelesene Grundeinstellungen des Roboters.

abtastposition_anfahren()[Quellcode]

Fährt die Abtast-Startsposition lt. Grundeinstellungen an.

Wird benötigt, wenn ein Oberflächenprofil abgetatet wird. Die Sonde des Nivellierungssensors befindet sich in dieser Position zentral über der Optik.

Bemerkung

X-, Y- und Z-Position lassen sich in den Grundeinstellungen unter den Attributen babtast_start_position_x , abtast_start_position_y und abtast_start_position_z ändern.

beladeposition_anfahren()[Quellcode]

Fährt die Beladeposition lt. Grundeinstellungen an.

Wird vor der Reinigung angefahren, damit die Optik eingelegt werden kann.

Bemerkung

X-, Y- und Z-Position lassen sich in den Grundeinstellungen unter den Attributen belade_position_x , belade_position_y und belade_position_z ändern.

controller_initialisieren()[Quellcode]

Führt eine Refernzfahrt durch und legt den Nullpunkt des Koordinatensystems fest.

Bemerkung

Der Befehl $H fährt die Schlitten zum Endtaster der jeweiligen Achse.

drehteller_ausschalten()[Quellcode]

Stoppt den Drehteller.

drehteller_einschalten(drehzahl)[Quellcode]

Schaltet den Drehteller durch Aktivierung des DC-Getriebemoters ein.

Bemerkung

Vor dem Senden an den CNC-Controller wird die Drehzahl korrigiert, damit eingestellte und tatsächliche Drehzahl übereinstimmen. Das ist Aufgrund der Untersetzungen und dem nicht-sauberen PWM-Signal des CNC-Controllers notwendig.

Parameter

drehzahl (int) – Gewünschte Drehzahl in 1/min.

gcode_senden(cmd)[Quellcode]

Übernimmt einen G-CODE und sendet diesen über eine serielle Verbindung (USB) an den CNC-Controller.

Examples

Beispiel für einen G-CODE: G01 X120.5 Y20 Z-3.25 F950

Bemerkung

Um einen Mehrfachzugriff (durch Threads) auf die Serielle- Schnittstelle zu vermeiden, wird der entsprechende Codeteil mit lock.aquire() gesperrt und mit release() wieder freigegeben.

Parameter

cmd (str) – Enthält den zu sendenden G-CODE.

Rückgabe

Gibt die Antwort des Controllers zurück.

Rückgabetyp

antwort (str)

geraet_entsperren()[Quellcode]

Hebt den Alarmstatus auf.

Bemerkung

Es wird das Zeichenkette $X an den Controller gesendet.

geraet_fortsetzen()[Quellcode]

Setzt die Fahrt fort, indem alle Schrittmotoren wieder aktiviert werden.

Bemerkung

Es wird das Zeichen ~ an den Controller gesendet.

geraet_halten()[Quellcode]

Pausiert die aktuelle Fahrt, indem alle Schrittmotoren gestoppt werden.

Beim Pausieren gehen keine Schritte verloren.

Bemerkung

Drehteller dreht sich auch beim Pausieren weiter.

geraet_softreset()[Quellcode]

Führt einen Software-Reset des CNC-Controllers durch.

Bemerkung

Es wird CTRL+X an den Controller gesendet, welches im Oktalformat  entspricht.

geraete_status()[Quellcode]

Fragt den aktuellen Maschinenstatus ab und speichert die Ergenisse in lokale Variablen.

Der Gerätestatus kann Idle, Run, Alarm usw. annehmen. Die aktuelle Position wird als X-, Y-, und Z-Koordinate gespeichert.

reinigungsposition_anfahren()[Quellcode]

Fährt die Reingung-Startsposition lt. Grundeinstellungen an.

Wird vor der Reinigung angefahren. Das Polyester-Pad befindet sich in dieser Position zentral über der Optik.

Bemerkung

X-, Y- und Z-Position lassen sich in den Grundeinstellungen unter den Attributen reinigungs_start_position_x , reinigungs_start_position_y und reinigungs_start_position_z ändern.

verbindung_initialisieren()[Quellcode]

Führt den Handshake mit dem CNC-Controller durch.

Bemerkung

Ein erfolgreicher Aufbau wir vom Controller mit der Zeichenkette Grbl 1.1f [$ for help] beantwortet.