Drehzahlprüfstand TX

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

Drehzahlprüfstand und VB 2008 Console

Einfache Beispiele zum Einstieg in VB 2008 .NET

Hier soll die Drehzahl [1/min] von fischertechnik-Motoren - gemessen an der Abtriebswelle - mit einem einfachen VB-Programm und dem ROBO TX Controller bestimmt werden. Das Programm wird in drei - immer ein wenig komplexeren -Varianten vorgestellt. Hinzu kommt ein Extra-Programm für den Encoder-Motor und eine Ausgabe für die ROBO I/O Extension.

Zentraler Punkt des Versuchsaufbaus ist eine Lichtschranke gebildet aus einem Photowiderstand und einer Linsenlampe, die durch ein Scheibenrad mit sechs Schlitzen (das Rad ist mit dunklem Karton abgeklebt) unterbrochen werden. Das Scheibenrad wird durch den zu untersuchenden Motor mit einer Untersetzung 
von 2 : 1 angetrieben.

Der zu untersuchende Motor ist an M1 angeschlossen, die Lampe der Lichtschranke an O3 und der Photowiderstand an C1 (Zähleingang). Mehr ist nicht.

Die Bestimmung der Drehzahl wird dann durch das Meßprogramm in einer vorgegebenen Prüfzeit von 15 Sekunden durch Zählen der Unterbrechungen der Lichtschranke durchgeführt. Am Programmende werden unterschiedliche Daten zur Messung ausgegeben.

Programm DrehzahlEinsD, der einfachste Fall :

Imports FishFaceTX
Module
DrehzahlEinsD
 
Const ImpulseUmdrehung = 6
 
Const Untersetzung     = 2
 
Const Messdauer        = 15
  Dim   tx As New FishFace()


  Sub
Main()
    tx.OpenController(
"COM4")
    tx.SetLamp(Out.O3, Dir.On)
    tx.ClearCounter(Cnt.C1)
    tx.SetMotor(Mot.M1, Dir.Left)

    tx.Pause(Messdauer * 1000)

    tx.SetMotor(Mot.M1, Dir.Off)
    tx.SetLamp(Out.O3, Dir.Off)

    Drehzahl = tx.GetCounter(Cnt.C1) / (ImpulseUmdrehung / Untersetzung) * (60 / Messdauer)
    Console.WriteLine(
"Drehzahl : " & Drehzahl & " 1/min")

    tx.CloseController()
    Console.ReadLine()
  End Sub
End
Module

Anmerkungen :
- Imports : Die FishFaceTX.DLL mit dem Namensraum gleichen Namens soll genutzt werden.
Dazu ist zusätzlich unter My Project | Verweise ein Verweis auf die genannte DLL einzurichten. Außerdem wird auf die ftMscLib.DLL und die umFish50.DLL zugegriffen, sie sollten in \Windows\System32 liegen.
- Ein VB Console-Programm kommt als Module daher
- Zu Anfang Konstanten zum Modell und zur Messung dann das ausführende Sub Main()
- Instanzierung der Klasse FishFace, die im weiteren Programm als Objekt tx genutzt wird
- tx.OpenController : Herstellen einer Verbindung zum ROBO TX Controller (COM-Namen mit Rob TX Test ermitteln und ggf. ändern).
- Einschalten der Lampe der Lichtschranke
- Zurücksetzen des Zählers für die Lichtschranke
- Starten des Motors
- Warten auf das Ende der Messung (Angabe Messdauer [sec], Pause [MilliSekunden])
- Abschalten Lampe, Motor
- Auswertung : Richtig schöne Mathematik
- tx.CloseController() : Beenden der Verbindung zum ROBO TX Controller
- ReadLine : Hält das DOS-Fenster offen, mit RETURN quittieren.

Programm DrehzahlZweiD, -EinsD mit ein paar Schnörkeln

Imports FishFaceTX
Module
DrehZwei
 
Const ImpulseUmdrehung = 6
 
Const Untersetzung     = 2
 
Const Messdauer        = 15
   Dim tx As New FishFace()
   Const Lampe As Out = Out.O3
   Const Photo As Cnt = Cnt.C1
   Const Motor As Mot = Mot.M1

  Sub
Main()

    tx.OpenController(
"COM4")
    tx.SetLamp(Lampe, Dir.On)
    tx.ClearCounter(Photo)
    tx.SetMotor(Motor, Dir.Left)

    Console.WriteLine("Messung gestartet")
    For i As Integer = 1 To Messdauer
      tx.Pause(1000)
      Console.Write(i &
"-")
    
Next
      Console.WriteLine("OK")

    tx.SetMotor(Motor, Dir.Off)
    tx.SetLamp(Lampe, Dir.Off)
    Drehzahl = tx.GetCounter(Photo) / (ImpulseUmdrehung / Untersetzung) * (60 / Messdauer)
    Console.WriteLine(
"Drehzahl : {0:##00} 1/min", Drehzahl)
    tx.CloseController()
    Console.ReadLine()
  End
Sub  
End
Module

Anmerkungen :
- Const Lampe : Bezeichnung der Anschlußbelegung des TX Controllers
- Console.WriteLine(Messung gestartet") : "Aktionsvisualisierung" : Anzeigen zur Information über den Stand der Messung. Die Messung wird hier in Häppchen von je 1 Sekunde aufgeteilt, jede Sekunde wird angezeigt.
WriteLine : Ausgabe mit Zeilenvorschub, Write ohne.

Programm DrehzahlDreiD : Weitere Versuchsdaten, Fehlerbehandlung.

Impulse = tx.GetCounter(Photo)
Drehzahl = Impulse / (ImpulseUmdrehung / Untersetzung) * (60 / Messdauer)
Console.WriteLine(
"ImpulseUmdreh. : {0:0}", ImpulseUmdrehung)
Console.WriteLine(
"Untersetzung : {0:0.00} : 1", Untersetzung)
Console.WriteLine(
"Messdauer : {0:##00} sec", Messdauer)
Console.WriteLine(
"Impulse : {0:##00}", Impulse)
Console.WriteLine(
"ImpulsInterval : {0:#0.0} msec", 1000 / Impulse * Messdauer)
Console.WriteLine(
"Drehzahl : {0:#00.0} 1/min", Drehzahl)

Anmerkungen 1 :
- Nun wird die Mathematik von -EinsD auch noch detailliert angezeigt.
{0:0.00} : Formatierte Anzeige - Parameter 0 (der erste nach dem Komma wird mit min. einer Vor- und mit zwei Nachkommastellen angezeigt

#Region "--- ProgramControl ---"
 
Sub Main()
   
Try
      tx.OpenController(
"COM4")
      Console.WriteLine(
"--- Bei der Arbeit, Abbruch ESC-Taste ---")

      Action()

Finally
      tx.CloseController()
      Console.WriteLine(
"--- FINITO : RETURN drcken ---")
      Console.Read()
Region

Anmerkung 2 :
- Der immer wiederkehrende Teil eines FishFace-Programmes wurde in eine #Region ausgegliedert. Das hat den Vorteil, das man diesen Teil als Block (Vorlage, Template) einkopieren kann. Außerdem kann man ihn durch Klick auf das Minus-Zeichen am Rande zusammenfalten.
- Die Region enthält die Sub Main() von vorher, die eigentliche Messung wurde in eine Sub Action() verpackt und von hier aufgerufen.
- Try - Catch - Finally : Man kann schlicht verschlafen, den TX Controller anzuschalten, das bekommt man hier schriftlich. Try ist dabei der Block von Anweisungen, der überwacht werden soll (Hier OpenController und Action),
Catch kümmert sich um die Sonderfälle (Exception-Handling) und bei Finally wird das erledigt, was in jedem Fall erledigt werden muß.

Version mit FishFace2005.DLL und Robo I/O-Extension. Man beachte hier wurde anstellen der 2 : 1 Untersetzung eine 4 : 1 Untersetzung eingebaut, da sonst der Counter nicht mit dem schnellen PowerMotor schwarz funktioniert.

Download 

DrehzahlVB enthält die zugehörenden VB2008-Projekte und die erforderlichen DLLs. Zusätzlich gibt es da noch DrehzahlDreiD40 : Eine Variante für VB2008 und die ROBO I/O-Extension, sowie DrehEncZwei eine Sonderausgabe von DrehzahlZweiD für den EncoderMotor bei der zusätzlich dessen Impulse bestimmt werden.

Stand : 21.01.2010