|
Die gelben Tonnen und die SäulenroboterLinks der Säulenroboter von den Industry Robots von 1998 (Intellgent Interface, COM1) und rechts der aktuelle aus Industry Robots II (ROBO Interface an USB). Das Duett : Linker Robot holt gelbe Tonne aus dem Lager (Pos1, gelber Kasten oben) und stellt sie auf den Werktisch (Pos2, gelber Kasten unten), rechter Robot holt die gelbe Tonne von Pos2 und bringt sie nach Pos3 (den Papierkorb vor dem Tisch). Von dort wird sie dann wieder ins Lager transportiert (eigenhändig). C# 2005 Programm mit FishFace2005.DLL / umFish40.DLL : Hauptthread mit Bedienoberfläche und Betrieb des Robot links. Zweiter Thread (rob2) für den Robot rechts. Um sich nicht in die Haare zu kommen synchronisieren sich die beiden Threads über AutoResetEvents (rob1Ready / rob2Ready). Ein robxReady.Set() erfolgt nach Home und nach jedem Erreichen einer Arbeitsposition (Holen1, Holen2, Bringen2, Bringen3). Der jeweils schnellere Robot wartet dann solange (robxWaitOne();) private void Action() {rob1Ready =new AutoResetEvent(false); rob2 =new Thread(new ThreadStart(Rob2Execute)); rob2.IsBackground =true; rob2Ready =new AutoResetEvent(false); rob2.Start(); lblStatus.Text ="Auf Home-Position"; ft1.MoveHome(); rob1Ready.Set();do { rob2Ready.WaitOne(); lblStatus.Text ="Holen Teile"; HolenPos1(); rob1Ready.Set(); rob2Ready.WaitOne(); lblStatus.Text ="Bringen Teile"; BringenPos2(); rob1Ready.Set(); }while (!ft1.Finish() && !ft2.Finish()); rob2.Join(); } Viel ist das alles nicht, hier das Hauptprogramm im MainThread. Im laufenden Betrieb werden anstelle der vielen Nullen die Positionswerte der beiden Robots angezeigt (Ereignisroutinen Position1 / Position2). DownloadDas zugehörende C# 2005 Projekt ist in RobDuoCS2005.ZIP gespeichert. Stand : 06.12.2008 |