Robot 91CS

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail
 

Profi Computing 1991 : Robot 

Das Modell Roboter aus dem Kasten Profi Computing 1991

Das Modell wurde teilweise mit moderneren Teilen aufgebaut : Intelligent Interface, 4er Impulsrad. Bei dem Armantrieb wurden die Zahnräder auf dem Welle durch Drahtstifte (Bohrung in der Achse) besonders fixiert, da sie sonst leicht ins Rutschen kommen (jetzt rutsch das Getrieberitzel ein wenig). Die Interfacebelegung wurde dem aktuellen Gebrauch angepaßt : M1 Drehkranz mit E1 Endtaster und E2 Impulstaster, M2 - E3, E4 und M3 - E5 - E6. Der Betrieb erfolgt mit C# 2005 Programmen und der Assembly  FishFace2005.DLL. Das Betriebsprogramm orientiert sich an dem Original Lucky Logic Demo Programm (Gelbe Tonne von Position 1 nach 2). Zusätzlich werden Betriebsanzeigen gemacht. Die Positionen können über die Windows Oberfläche eingestellt werden.

Das Programm Rob91 gibt es in vier verschiedenen Versionen und jeweils als C# bzw. VB 2005 Lösung :

Rob91LL : MultiThread Lösung (pro Motor ein zusätzlicher Thread) wie bei Lucky Logic. Der Betrieb der drei Motoren erfolgt wie dort teilweise simultan. Das sieht schön aus bekommt dem korrekten Griff nach der gelben Tonne aber nicht so recht, man sollte sie im passenden Augenblick anreichen.

// --- ThreadRoutine für den Drehkranz ---
private void tdExecute() {
do {
  // --- Grundstellung ----
  lblStatus.Text = "Anfahren Grundstellung";
  tdPos2.Reset();
  lblDreh.Text = "Action";
  ft.SetMotor(mDreh, cDrehRechts);
  ft.WaitForInput(eDrehEnd);
  ft.SetMotor(mDreh, Dir.Aus);
  lblDreh.Text = "EndTaster";
  tdEnd.Set();

  // --- Anfahren Position 1 -----
  lblStatus.Text = "Anfahren Position 1";
  tdEnd.Reset();
  lblDreh.Text = "Action";
  ft.SetMotor(mDreh, cDrehLinks);
  ft.WaitForChange(eDrehImpuls, DrehPos1);
  ft.SetMotor(mDreh, Dir.Aus);
  lblDreh.Text = "Position 1";
  tdPos1.Set();
  tzZu.WaitOne();
......

Hier ein Ausschnitt aus dem Führungsthread td (Thread Drehen). Hinweise zur Thread-Programmierung siehe CSThread.HTM.

Rob91FF : SingleThread Lösung über die Klasse FishFace unter Nutzung der einfachen SetMotor Methoden in Verbindung mit WaitForChange. Die Bewegungen werden meist einzeln ausgeführt um die gelbe Tonne nicht umzuwerfen.

Zange(cZangeOffen);
Arm(cArmOben);
DrehHome();
do {
  lblStatus.Text = "Zu Position 1";
  Drehen(DrehPos1);
  Arm(ArmUnten);
  Zange(ZangeZu);
  Arm(cArmOben);
  lblStatus.Text = "Zu Position 2";
  Drehen(DrehPos2);
  Arm(ArmUnten);
  Zange(cZangeOffen);
  Arm(cArmOben);
} while (!ft.Finish());

Hier die Betriebsschleife

Rob91RM : SingleThread Lösung wie Rob91FF, aber unter Nutzung der RobMotor-Funktion von SetMotor und Einsatz von WaitForMotors. So konnte der "HomeRun" voll simultan mit allen Motoren ausgeführt werden. Das Programm wurde ein wenig kürzer.

private void Drehen(int Pos){
  lblDreh.Text = "Action";
  if (Pos < DrehAktPos) ft.SetMotor(mDreh, cDrehRechts, Speed.Full, 999);
  else ft.SetMotor(mDreh, cDrehLinks, Speed.Full, Math.Abs(DrehAktPos - Pos));
  ft.WaitForMotors(0, (int)mDreh);
  DrehAktPos = Pos;
  lblDreh.Text = "Pos : " + Pos.ToString();
}
Hier die Routine zum Betrieb des Drehkranzes.

Rob91FR : SingleThread Lösung wie oben unter Einsatz der FishRobot Methode MoveTo, die die simultane Steuerung aller drei Motoren erlaubt ("HomeRun" erfolgt mit MoveHome). Es wurden sonst aber auch Einzelbewegungen eingesetzt. Wenn man's simultaner haben möchte kann man aber einfach einige MoveTo's weglassen.

lblStatus.Text = "Fährt auf Home-Position";
ft.MoveHome();
do {
  lblStatus.Text = "Fährt auf Position 1";
  ft.MoveTo(DrehPos1);
  ft.MoveTo(DrehPos1, ArmUnten);
  ft.MoveTo(DrehPos1, ArmUnten, ZangeZu);
  ft.MoveTo(DrehPos1, cArmOben);
  lblStatus.Text = "Fährt auf Position 2";
  ft.MoveTo(DrehPos2);
  ft.MoveTo(DrehPos2, ArmUnten);
  ft.MoveTo(DrehPos2, ArmUnten, cZangeOffen);
  ft.MoveTo(DrehPos2, cArmOben);
} while (!ft.Finish());

Hier die Endlos-Betriebsschleife

Downloads

Robot91.ZIP mit den C# 2005 Programmen und Robot91vb.ZIP mit den VB2005 Programmen

Zusätzlich erforderlich : cs2005Fish40Setup.EXE  

Stand : 03.04.2008