|
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.M1Const 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 DolblStatus.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 Doft.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) ReturnEnd 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). DownloadPneuVac.ZIP mit dem vorgestellten Programm (und anderen) als VB 2005 und C# 2005 Version Stand : 06.11.2008 |