Einzelnen Beitrag anzeigen

100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#42

Re: Ablauf für Fräsmaschine programmieren

  Alt 4. Okt 2008, 11:30
lol, okay so kann man platinen auch herstellen xD
Fotos wären super!

Hier mal ein Ausschnitt aus der Bedienungsanleitung:
Zitat:
Multithreading
Unter Multithreading versteht man die quasi parallele Abarbeitung mehrerer Abläufe in einem
Programm. Einer von diesen Abläufen wird Thread (engl. Faden) genannt. Beim Multithreading
wird in schnellen Abständen zwischen den verschiedenen Threads gewechselt, so daß beim
Anwender der Eindruck von Gleichzeitigkeit entsteht.
Die C-Control Pro Firmware unterstützt außer dem Hauptprogramm (Thread "0") bis zu 13
zusätzliche Threads. Beim Multithreading wird nach einer bestimmten Anzahl von verarbeiteten
Byte Instruktionen der aktuelle Thread auf den Status "inaktiv" gesetzt und der nächste
ausführbare Thread wird gesucht. Danach startet die Abarbeitung des neuen Threads. Der neue
Thread kann wieder derselbe wie vorher sein, je nachdem wie viele Threads aktiviert wurden oder
für eine Ausführung bereit sind. Das Hauptprogramm gilt als erster Thread. Daher ist Thread "0"
immer aktiv, auch wenn explizit keine Threads gestartet worden sind.
Die Priorität eines Threads kann beeinflußt werden, in dem man ändert, wie viele Bytecodes ein
Thread bis zum nächsten Threadwechsel ausführen darf (siehe Threadoptionen). Je kleiner die
Anzahl der Zyklen bis zum Wechsel, desto geringer die Priorität des Threads. Die Ausführungszeit
eines Bytecodes ist im Mittel 7-9 μsec. Bei einzelnen Bytecode Befehlen dauert es jedoch länger,
z.B. Floatingpoint Operationen.
Auch interne Interpreterfunktionen gelten als ein Zyklus. Da z.B. Serial_Read wartet, bis ein
Zeichen von der seriellen Schnittstelle ankommt, kann in Ausnahmefällen ein Zyklus sehr lange
dauern.
Ein Thread bekommt für seine lokalen Variablen soviel Platz wie ihm in den Threadoptionen des
Projekts zugewiesen wird. Eine Ausnahme ist Thread "0" (das Hauptprogramm). Dieser Thread
erhält den restlichen Speicherplatz, den die anderen Threads übrig lassen. Man sollte daher
vorher planen, wie viel Speicherplatz jeder zusätzliche Thread wirklich benötigt.
Damit zusätzliche Threads gestartet werden können muß "Multithreading" in den
Projektoptionen eingeschaltet werden, und die Parameter für die weiteren Threads in den
Threadoptionen auf korrekte Wert gesetzt werden.
Beim arbeiten mit Threads immer Thread_Delay und nicht AbsDelay benutzen. Wird trotzdem
z.B. ein AbsDelay(1000) benutzt, so tritt folgender Effekt auf: Da der Thread erst nach 5000 Zyklen
(Default Wert) zum nächsten Thread wechselt, würde der Thread 5000 * 1000ms (5000 Sek.)
laufen, bis der nächste Thread anfangen könnte zu arbeiten.
Wenn ein Thread ein Weilchen nicht gebraucht wird, kann ich den auch deaktivieren, damit keine Rechenzeit verloren geht. Aber das war nur mal eine Idee, mit Threads zu arbeiten - ob die Idee schlecht oder gut ist weiss ich noch nicht genau^^

Ausserdem bin ich mir nicht sicher, ob das mit der Kommunikation bei mir gleich funktioniert wie bei dir. Ich habe nämlich gelesen, dass intern schon eine FiFo verwendet wird, und dazu muss ich eine globale Variable zur Verfügung stellen. Ausserdem muss ich die Grösse des Empfangs- und des Sendepuffers angeben. Somit wird irgendwie das, was du machen willst, teilweise schon intern ausgeführt?!

mfg
Urban
  Mit Zitat antworten Zitat