PneuVacs : Kartengeber

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

Betriebsprogramm für das PneuVac Modell Kartengeber

Seitens ROBO Pro werden die Programme Kartengeber1 - 4 mitgeliefert (v1.2.1.33). Kartengeber4 ist das vollständige Betriebsprogramm für das Modell "Kartengeber und -sortierstation". Wie oben im Bild zu sehen. Mit den Programmen 1 - 3 werden einzelne Komponenten des Modells betrieben. Sie sind geeignet für das Kennenlernen der doch etwas ungewohnten Programmierung der PneuVacs, sie lebt von Pausen an der rechten Stelle und in der rechten Länge.

Hier soll die VB 2005 Version des Programms Kartengeber vorgestellt werden (in den Downloads gibt es auch noch eine funktionsgleich C# 2005 Version) :

Kartengeber4VB : Vollständiges Betriebsprogramm zum Austeilen von jeweils drei Karten an drei Spieler. Beim Start des Programms (ACTION) wird erstmal der Druckspreicher des Modells aufgeladen. Im Programmablauf wird geprüft, ob tatsächlich eine Karte gegriffen wurde. Dazu fährt der Greifer unter den Farbsensor. Karte da, wenn Farbwert > 240, sonst wird der Greifversuch wiederholt. Der festgestellte Farbwert hängt stark von der Umgebung ab, er kann über das Grenzwert-Control angepaßt werden (Eine Tischlampe sollte beim Betrieb besser ausgeschaltet werden). Ebenso liegen die Werte für die fälligen Pausen "auf der sicheren Seite", sie können über das Control Pausenzeit verändert werden.

Const motKompressor     = Out.M1

Const motDrehArm        = Out.M2

Const venArm            = Out.O5

Const venGreifer        = Out.O6

Const venVacuum         = Out.O7

Const lamLichtschranken = Out.O8

Const phoDrehEnde       = Inp.I1

Const phoKarte          = Inp.I2

Const farKarte          = Inp.A1

Konstanten zur Beschreibung der Interfacebelegung

Private Sub Action()

  Dim runde = 1

  lblStatus.Text = "Kompressor : Druckaufbau"

  Kompressor()

  pauseMSek = numPause.Value

  Farbe = numFarbe.Value

  Do

    lblStatus.Text = "Runde " & runde.ToString() & " : Karte fr 600"

    KarteGeben(600)

    lblStatus.Text = "Runde " & runde.ToString() & " : Karte fr 1300"

    KarteGeben(1300)

    lblStatus.Text = "Runde " & runde.ToString() & " : Karte fr den Dritten"

    KarteGeben(2000)

    runde += 1

  Loop Until runde > 3 Or ft.Finish()

  AufnahmePos()

End Sub

Das Hauptprogramm ist eigentlich ganz harmlos. Der Druckbehälter wird gefüllt und die Karten werden eine nach der anderen an die Positionen 600, 1300 und 2000 (Fahrzeit in mSek ab Kartenmagazin) ausgeteilt. In lblStatus wird angezeigt, was gerade läuft.

Private Sub KarteGeben(ByVal Position As Integer)

  AufnahmePos()

  KarteAufnehmen()

  ft.SetMotor(motDrehArm, Dir.Rechts)

  ft.Pause(Position)

  ft.SetMotor(motDrehArm, Dir.Aus)

  ft.Pause(pauseMSek)

  ft.SetMotor(motKompressor, Dir.Links)

  KarteAblegen()

  ft.SetMotor(motKompressor, Dir.Aus)

End Sub

In der Subroutine KarteGeben werden nacheinander die Routinen AufnahmePos (Magazin anfahren), KarteAufnehmen und KarteAblegen bemüht. Nach KarteAufnehmen wird die jeweilige Zielposition (Parameter Position) angefahren. Damit der Kompressor sich nicht überarbeitet, wird er nur bei Bedarf angeschmissen.

Private Sub KarteAufnehmen()

  Dim farbWert As Integer

  Do

    ft.SetLamp(lamLichtschranken, Dir.Ein)

    ft.Pause(pauseMSek)

    ft.WaitForInput(phoKarte, False)

    ft.SetLamp(lamLichtschranken, Dir.Aus)

    ft.SetMotor(motKompressor, Dir.Rechts)

    ft.Pause(2000)

    ft.SetLamp(venGreifer, Dir.Ein)

    ft.Pause(pauseMSek)

    ft.SetLamp(venVacuum, Dir.Ein)

    ft.Pause(pauseMSek)

    ft.SetLamp(venGreifer, Dir.Aus)

    ft.Pause(3000)

    ft.SetLamp(venArm, Dir.Ein)

    ft.SetMotor(motKompressor, Dir.Aus)

    ft.Pause(pauseMSek)

    For z As Integer = 1 To 10

      farbWert = ft.GetVoltage(farKarte)

      lblFarbe.Text = "Farbwert : " & farbWert.ToString()

      If farbWert >= Farbe Then

        ft.SetLamp(venArm, Dir.Aus)

        ft.Pause(pauseMSek)

        Return

      End If

      ft.Pause(100)

    Next z

.....

  Loop Until ft.Finish()

End Sub

Hier wird zunächst geprüft, ob überhaupt Karten im Magazin liegen (ft.WaitForInput(phoKarte, False)) - Lichtschranke am Kartenmagazin unterbrochen, dann der Greifer abgesenkt und das Vacuum eingeschaltet, Heben Greifer und Vorführung beim Farbsensor, die Prüfung kann bis zu 9mal wiederholt werden. Wenn das nichts hilft, wird die ganze Prozedur "endlos" wiederholt (bis zur Zufriedenheit oder ESC-Taste).

Download

PneuVac.ZIP mit dem vorgestellten Programm (und anderen) als VB 2005 und C# 2005 Version

Stand : 06.11.2008