Home
Einführung in die Programmierung mit
Contents
1. 2 50 ist ebenfalls ein g ltiger Ausdruck und ergibt wieder 250 Die Steueranweisung Option Explicit sollte stets als erste Anweisung ggf nach Kommentaren im Programm stehen Sie weist VBS an nur Variablen bzw Konstanten zu akzeptieren die vorher durch einen Dim Const Befehl angemeldet deklariert wurden Es ginge auch ohne in diesem Fall w rden Schreibefehler bei einer Variablen z B LangePausen statt LangePause zum Anlegen einer weiteren Variablen mit dem Anfangswert O f hren D h hie e da die oben so sch n auf 1000 initialisierte mit dem Wert 1000 besetzte Variable LangePause im Befehl Pause LangePausen zu einer Pause der L nge 0 f hren w rde d h Lampe ist gleich wieder aus Macht man den Schreibfehler schon bei KurzPause LangePausen 4 so sind alle KuzePause 0 und die gelbe Lampe leuchtet nicht mehr wahrnehmbar Da wird man recht heftig ins Gr blen kommen Schon weil man solche krummen Sachen eher der IDE als sich selber zutraut Ist ja schlie lich alles richtig VBScript Inhalt VBScript Benutzerhandbuch Grundlagen Variablen Datentypen VBScript Index Option Explicit die Programmierung mit mscFish Einf hrung in die Programmierung 12 Ein und Ausgaben I Zarmpeelesyp 22 a eat ae a OBELonFExpI rent CORS e meruen Sy nGeler a MRO E Dim LangePause KurzePause Runde LangePause 1000 EA KurzePause LangePause 4 PrintStatus Die Ampel bei der Arbeit Do Runde Runde 1
2. 5 Ebenso kann bei Anzeige Editier Modus das im Editier Feld angezeigt Anwendungsprogramm ge ndert und erg nzt werden Nach Start der IDE enth lt das Editier Feld ein kleines Beispiel Programm das man nach eigenem Bedarf ndern oder auch l schen kann Neu VBS Eigene Anwendungen kann man ber das Men Datei laden und speichern 6 Ein Klick auf den jetzt mit RUN beschrifteten Button startet die Anwendung Die Beschriftung des Buttons wechselt in HALT in der Status Zeile wird l uft angezeigt solange es nicht durch die Anwendung berschrieben wird 7 Vor dem Start der Anwendung k nnen die EA EB Felder mit numerischen Werten belegt werden Die Anwendung kann dann ber gleichnamige Funktionen darauf zugreifen 8 Das Programm kann durch Klick auf den HALT Button beendet werden Es gibt Situationen wo das nicht mehr m glich ist z B Do Loop OHNE Until Dann hilft nur noch der Weg ber den Task Manager Strg Alt Entf vorher kann die Anwendung aber noch gespeichert werden 9 W hrend des Programmablaufs k nnen Fehlermeldungen angezeigt werden Das geschieht in einer MessageBox Der Fehlertext beginnt mit Fehler in Zeile Man sollte ggf die MessageBox so verschieben da man die markierte Zeile im Editierfeld lesen kann Im Fehlertext folgt eine Nummer und dann die Beschreibung des Fehlers Die Beschreibung des Fehlers ist meist recht aussagekr ftig Allerdings kann der Grund f r die Fehlermeldung durchaus a
3. 16 03 2003 16 30 34 Siehe auch PrintStatus PrintStatus Ausgabe eines Textes in die Statuszeile der IDE PrintStatus stringausdruck Beispiel PrintStatus Temperatur amp 1000 GetAnalog aNTC 10 12 In die Statuszeile der IDE wird Temperatur 37 4 ausgegeben GetAnalog aNTC ergab den Wert 506 Siehe auch PrintLog SetCounter Setzen eines Counters SetCounter InputNr Value Siehe auch GetCounter ClearCounter ClearCounters SetLamp Setzen eines halben M Ausganges Anschlu einer Lampe oder eines Magneten an einen Kontakt eines M Ausganges und Masse Siehe auch Lampen am Interface SetLamp LampNr OnOff Siehe auch SetMotor SetMotors ClearMotors Einf hrung in die Programmierung mit mscFish Referenz 37 Beispiel Const IGruen D kelt 727 Reue gt SetLamp lGruen ftiEin Pause 2000 SetLamp lGruen ftiAus ser Lamp GSD TETEN Die gr ne Lampe an M1 vorn und Masse wird f r 2 Sekunden eingeschaltet und anschlie end die gelbe an M1 hinten SetMotor Setzen eines M Ausganges Motor SetMotor MotorNr Direction Speed Counter Die Parameter ab Speed sind optional MotorNr ftiNr Nummer des zu schaltenden M Ausganges Direction ftiDir Schaltzustand ftiLinks ftiRechts ftiEin ftiAus Speed ftiSpeed Geschwindigkeitsstufe Default ftiFull Counter ftiNr Begrenzung der Einschaltzeit Default 0 unbegrenzt Werte gt 0 geben die Anzahl Impulse an die der M Ausga
4. Const mStanze 1 mLampe 2 Const eEnde 1 ePhoto 2 eLinks 3 eRechts 4 Dimmer rO CUKRE TOn aeon LOr a PLO UKE on N Motor an M1 SetMotor mLampe ftiEin Lampe an M2 SetNMoternstenze rare in Endtaster an E1 WaitForInput eEnde Photo WiderstandanE2 setMotor mStanze ftiAus Bedientaster links an E3 Bedientaster rechts an E4 po Ti Sec Tp ernoeo Ya i Die Maschine soll ein Teil GetInput eLinks And in einem Arbeitsgang mit 4 GetInput eRechts Then H ben stanzen Sie darf TeilOK True nur starten wenn der For i 1 To EA Bediener beide Taster If GetInput ePhoto Then bet tigt und gleichzeitig SetMotor mStanze ftiEin die Lichtschranke WaitForHigh eEnde geschlossen ist Eine SetMotor mStanze ftiAus Unterbrechung der Else Lichtschranke w hrend SeeMoro OE Zo ELA eines Arbeitsgangs stoppt Pene Eoo SEMEEN C 8 A Non die Maschine mit TeilOK False Warnsignal Beep 1111 100 Beep 555 100 Beep 1111 100 Exit For Baer Next Ii reilok Then Produktion Produktion F I Bias IK e Brant scerhs Vanzehl oreeizlerre merler N amp Prod kt tio on LOC oae e Die interessantesten Punkte des Programms sind 1 Beim Start des Programms wird die Maschine auf Ausgangslage gefahren Lichtschranke an Stanze oben Produktion 0 Ein Stanzvorgang kann nur ausgel st werden wenn die Lichtschranke geschlossen ist Die Ausl sung erfolgt durch Zweihandeinr ckung eLinks und eRechts gleichzeitig Das e
5. VBScript Index Or Subanweisung Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 19 Temperatur Regelung OPtion Epli it Const mMotor 1 mLampe 2 Const aNTC 0 Dim Temperatur Do Temperatur GetAnalog aNTC If Temperatur lt EA Then SetMotor mLampe ftiAus Motor an M1 SetMotor mMotor ftiEin Lampe an M2 ElseIf Temperatur gt EB Then NTC Widerstand an EX SetMotor mLampe ftiEin SCEMO Or MOCO eI AnS Oberhalb einer End If bestimmten Temperatur Loop Until Finish schaltet die Heizung aus und die K hlung ein bei Erreichen eines unteren Grenzwertes soll die Heizung ein und die K hlung ausgeschaltet werden Als erstes wird in der Do Loop Schleife die Variable Temperatur mit dem aktuellen Wert des NTC Negative Temperature Coefficient Widerstand der bei steigender Temperatur kleinere Werte annimmt also nicht parallel zur Temperatur steigt deswegen Negative besetzt Die Werte k nnen unterschiedlich ausfallen man sollte anfangs ein wenig experimentieren der NTC zwischen Daumen und Zeigefinger genommen erw rmt sich rapide und die Werte bei EX auf dem Interface Panel ablesen Danach treffen wir wieder auf eine If Elself End If Konstruktion Wenn der Temperaturwert kleiner als der untere Wert EA ist dann ist es zu hei gt NTC es wird gek hlt Wenn dann der Temperaturwert gr er als EB ist wird wieder geheizt Dies Programm wurde mit EA
6. Finger in die laufende Maschine stecken k nnen die Abschaltung erfolgt erst nach einem Hub es wird nicht gepr ft ob die Zweihandeinr ckung vor jedem Stanzvorgang bet tigt wird ein Dauerlauf durch festgeklemmte Taster ist m glich Hier soll es aber erstmal gen gen Parkhausschranke en m zrr e e aa 4 OPELONTE PLI CIE Const mSchranke 1 mRot 2 mGruen 3 mLicht 4 Const ezu l eAuf 2 eOeffnen 3 ePhoto 4 Const szu 1 sAuf 2 Motor an M1 SetMotor mLicht ftiEin Rote Lampe an M2 SetMotor mRot Ee an Gr ne Lampe an M3 Die Lichtschranke an M4 Dainese Wo Schranke schnl iaf e ZuTaster an E1 SetMotor we cocan zu AufTaster an E2 WaitForInput ezu BedienTaster an E3 SetMotor nmselnzamike ie Rus Photowiderstand E4 Bence cece Yo Werkes aut Kulnelsa WaitForHigh eOeffnen Durch Bet tigen des Prine Terve Bi Zschronkenorrmers a Tasters E3 soll die SetMotor mochranke SAU Schranke ge ffnet werden WaitForInput eAuf Ist die Schranke offen SetMotor mSchranke ftiAus leuchtet die Ampel gr n SetMotor mRot ftiAus Erst wenn die SetMotor MOEN EEEN Lichtschranke passiert PrintStatus Warten auf Durchfahrt wurde springt die Ampel WaitForLow ePhoto auf Rot und die Schranke WaitForHigh ePhoto schlie t wieder SetMotor mGruen incl Alle SetMotor ROE iae N g WaitForTime 500 LOOP Une al Benin Das zugeh rende Programm ist eine sch ne Sammlung bekannter Elemente lediglich ein WaitForLow als Pen
7. Motoren m ssen nicht angegeben werden Bei den Return Werten ftiWait ftiNotHalt und ftiESC werden alle betroffen Motoren angehalten Beispiel Sero ror e ELMAR Brent SeEMOLOBALLIND EL rRTON E TO Do Prinestat s GetrcoauntesrlTElEe Sr Zur GetCoeu nter TEiEs Loop uk t kena E EOT More SKI OOTZE EIMA EEE E Ee Der Motor am M Ausgang M4 wird linksdrehend mit halber Geschwindigkeit f r 50 Impulse gestartet der an M3 rechtsdrehend mit voller Geschwindigkeit f r 40 Impulse Die Do Loop Schleife wartet auf das Ende der Motoren WaitForMotors Alle 100 MilliSekunden wird in der Schleife die aktuelle Position angezeigt 100 ftiTime Wenn die Position erreicht ist lt gt ftiTime ist der Auftrag abgeschlossen die Motoren haben sich selber beendet Achtung hier wurde nicht auf NotHailt ftiNotHalt oder Esc Taste ftiEsc abgefragt es k nnte also auch vor Erreichen der Zielposition abgebrochen worden sein WaitForPosDown Warten auf Erreichen einer vorgegebenen Position WaitForPosDown InputNr IstPosition ZielPosition TermInputNr Ausgegangen wird von der aktuellen Position die in IstPosition gespeichert ist es werden solange Impulse von IstPosition abgezogen bis der in ZielPosition angegebene Stand erreicht ist IstPosition enth lt dann tats chlich erreichte Position kann um einen Wert h her liegen wenn der Motor nochmal geruckt hat Alternativ wird die Methode durch E Eingang TerminputNr True beendet IstPosition un
8. Referenz 31 Befehle Allgemeines Speed Counter Abbrechbar L nger laufende Methoden Wait k nnen von au en durch Setzen der Eigenschaft NotHalt True oder durch Dr cken der Esc Taste abgebrochen werden Wird bei den betroffenen Methoden besonders angegeben NotHalt Die Eigenschaft NotHalt siehe auch Abbrechbar wird intern genutzt um langlaufende Funktionen ggf Abzubrechen NotHalt wird von Open interface auf False gesetzt Es kann im Programm z B ber einen HALT Button genutzt werden um den Programmlauf abzubrechen oder auch eine Endlosschleife z B Do Loop Until ft Finish zu beenden Soll das Programm anschlie end weiterlaufen so ist NotHalt wieder auf False zu setzen Die Geschwindigkeitssteuerung beruht auf einem zyklischen Ein und Ausschalten der betroffenen M Ausg nge Motoren im Takt des Pollintervals Dazu wird intern f r jede Geschwindigkeitsstufe eine entsprechende Schaltliste vorgehalten Die Geschwindigkeitsstufe wird durch die Parameter Speed bzw SpeedStatus f r einen bzw alle Motoren bei der Methode SetMotor s bestimmt Zu jedem E Eingang wird ein Counter gef hrt in dem die Impulse Umschalten von True auf False und umgekehrt gez hlt werden Die Counter werden bei Openinterface auf 0 gesetzt Sie werden au erdem von einigen Methoden interngenutzt SetMotor WaitForxxx Sie k nnen mit GetCounter abgefragt und mit SetCounter ClearCounter s gesetzt werden In der Regel werden
9. da nicht st ndig an der T r ger ttelt wird In der Schleife wird dann der T rmotor eingeschaltet Richtung Schlie en das wird aber gleich wieder revidiert wenn irgendetwas in die Lichtschranke Getinput ePhoto geraten ist dann wird das Unterprogramm TuerOeffnen ausgef hrt Nach der Schleife wird der T rmotor wieder ausgeschaltet Das nachfolgende If ersetzt das bisherige WaitForInput Jetzt werden der eOeffnen Taster und die Lichtschranke auf eine Anforderung zum T r ffnen abgefragt Im positiven Fall TuerOeffnen Hier also ein Beispiel f r die mehrmalige Verwendung eines Unterprogramms Sub TuerOeff fnen Normal Prine tocl 0 1Werortner K Normalzrnenerr ENE EOG AE kurwerdezge oem Beeren Else Print Loq T r z2wieschental Non SeceNoeosBEaNBezserr Rechies WaitForInput eTuerAuf SerMoror mMer TETANUS Pete ea a S Ge Ee Pause 5000 End oup Man kann einem Unterprogramm auch einen oder mehrere Parameter mitgeben um den Ablauf des Unterprogramms zu steuern Dazu mu sie die Parameter in der Sub Definitionszeile angef hrt werden formale Parameter hier Normal sie k nnen dann im Unterprogramm wie normale Variable genutzt werden hier wird unterschieden ob die T r per Anforderung oder durch Kiste in der Lichtschranke ge ffnet wurde Beim Aufruf des Unterprogramms mu dann ein entsprechender aktueller Parameter mitgegeben werden TuerOeffnen False bei der Not ffnung und TuerOeffnen True nach Anforderung
10. der default Parameter ist kann man ihn auch weglassen also WaitForInput eOeffnen Und dann geht endlich die T r f r 5 Sekunden auf FishFace Referenz WaitForInput Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 18 berwachung durch Lichtschranke SetMotor mLampe ftiEin Pause 1000 WaitForInput ePhoto True Do Do While GetInput eTuerZu BeeMoLrozmWer termanks If Not GetInput ePhoto Then TuerOeffnen Loop Se eMoror mrur FETAUS If GetInput eOeffnen Or GetInput ePhoto False Then TuerOeffnen Loop Urmel Ban Sub TuerOeffnen DerMoror Wer urr reehes WaitForInput eTuerAuf SECOLO MEUSI ss BerAus Pause 5000 End Sub Das Modell sieht sie ja vor die Lichtschranke ePhoto mLampe nun wird sie auch genutzt Das f ngt wie vom H ndetrockner gewohnt mit dem Anw rmen der Lichtschranke an Dann wird noch gewartet dass sie auch wirklich OK ist dann erst geht s mit dem gewohnten Do Loop los Es folgt dann aber gleich noch einer aber ein ungewohnter Do While GetInput eTuerZu Neu ist das While die Schleife wird solange durchlaufen wie die Bedingung eTuerZu zutrifft d h ja eigentlich Tuer in noch nicht ganz zu S o au erdem ist dies eine abweisende Schleife wenn die Bedingung nicht zutrifft d h die T r bereits geschlossen ist wird sie nicht durchlaufen die bisherigen nicht abweisenden Schleifen wurden mindestens einmal durchlaufen Das hat hier den Vorteil
11. lt 7 mscFish Interface Daten Fortname auswerten EX EY Mr mit Erweiterungsmodul E Zykluszeit ms 16 Analogbegrenzung 1000 5 1000 Zugriffsrerz gerung 10 10 200 Abbrechen DK Man sollte die Interfacewerte in der Reihenfolge der Form einstellen also zuerst den Portnamen w hlen Damit verbunden werden f r die weiteren Werte Standard Vorgaben gemacht die man nur mit Vorsicht ndern sollte EX EY Slave Zykluszeit nn Bar Bra BE a BEE BEE 100 Die LPT Werte sind vorsichtig gew hlt sie k nnen unterschritten werden Mit EX EY 20 ohne 1 Wenn man nicht vorhat Analogwerte zu messen kann man den Haken bei Auswerten EX EY deaktivieren Wird diese Option beim parallelen Universal Interface angew hlt so steigt die vorgegebene Zykluszeit d h das Zeitintervall in dem der Interface Status upgedatet wird drastisch Man sollte die Zykluszeit nur mit Vorsicht kleiner w hlen da der Rechner dabei einfrieren kann Der Erweiterungsmodul Slave Extension Module wird unterst tzt allerdings z Zt nicht im Interface Panel angezeigt Die Analogbegrenzung beeinflu t beim parallen Interface die angezeigten Analogwerte Beim LPT1 3 werden sie gestreckt d h bei gr eren Werten ber einen gr eren Anzeigebereich gedehnt Bei LPT ist die Analogbegrenzung eine Obergrenze bei der dar ber hinausgehende Werte abgeschnitten werden Die Zugriffsverz gerung ist eine Korrektur beim Zugrif
12. sie zur Positionsbestimmung eingesetzt RobMotoren Unter RobMotoren wird eine Kombination von einem M Ausgang und zwei E Eing ngen mit den Funktionen Endtaster Impulstaster verstanden die im Betrieb eine Einheit bilden Dabei mu am M Ausgang ein Motor angeschlossen sein und an den E Eing ngen Taster mit Schlie funktion Kontakte 1 3 Auf der Motorwelle mu ein Impulsr dchen montiert sein das den Impulstaster bet tigt Der Motor mu linksdrehend angeschlossen werden D h er l uft bei ftiLinks auf den Endtaster zu Folgende Kombinationen sind zul ssig Die RobMotoren k nnen ber die Methode SetMotor MotorNr Direction Speed Counter Einf hrung in die Programmierung mit mscFish Referenz 32 betrieben werden Die Methode erlaubt das simultane Anfahren vorgegebener Positionen mit bis zu 8 Motoren Bei Erreichen einer Position wird der zugeh rende Motor abgeschaltet Die Methode ist asynchron D h Das Erreichen der vorgegebenen Positionen wird von der Methode nicht abgewartet der Ausf hrungsteil der Methode l uft in einem separatem Thread Die Synchronit t zum Programm kann durch die Methode WaitForMotors wieder hergestellt werden Beispiel SS MOTTO EE EO Bere el See Me one in EM 2 Er ORA one a a S Warrer r MOCO CSS O Er entre Me Motoren M1 und M2 werden gestartet anschlie end wird auf das Erreichen der Positionen gewartet Lampen am Interface Die vier M Ausg nge des Interfaces sind prim r zum Schalte
13. 575 und EB 600 getestet FishFace Referenz GetAnalog HINWEIS Beim parallelen Universal Interface ist hier von der Standard Einstellung des Interfaces Men Extras Optionen abzuweichen Auswerten EX EY mu angekreuzt werden Die vorgegebene Zykluszeit von 100 ms sollte erstmal beibehalten werden Man sollte aber mit dem Wert experimentieren Diese drastisch h here Zykluszeit Standard ohne 8 ver ndert das Anwortverhalten des Interfaces Alternativ kann mit GetAnalogDirect gearbeitet werden dann kann die Einstellung ohne mit Zykluszeit 8 beibehalten werden Der Analogwert wird dann direkt vom Interface gelesen das Programm h lt dann an dieser Stelle ca 100 ms Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 20 Dreipunkt Regelung Bei dem vorherigen Beispiel war immer etwas los K hlen Heizen im Wechsel und trotzdem wurde die Temperatur im Versuch nur im Bereich von 575 bis 600 gehalten k nnte man das nicht auch einfach durch Abwarten erreichen Also abschalten und warten bis die Temperatur je nach Lage der Dinge von alleine wieder steigt bzw f llt Das w rde dann auch noch Energie sparen TemperaDreiTT VBS Temperaturregelung OET E PLLC TE Const mMotor 1 mLampe 2 ConsLzante zz Dim UT OT 07 FPA 2 RR A TOO OL EA I EB a 100 PrintLog Zieltemperatur amp EA PrintLog Untergrenze Di PrintLog Obergrenze a Do If Temperatur lt UT Then
14. Einf hrung in die Programmierung mit mscrFish VBScript Version Ulrich M ller Inhaltsverzeichnis bersicht 4 Allgemeines 4 Installation 4 IDE Integrated Development Environment 5 Anschlu des Interfaces 6 Einstellen der Interfacewerte T Einstellen der Programmiersprache 8 Hilfe Dokumentation 8 VBScript 8 FishFace 8 Einf hrung in die Programmierung 9 Allgemeines 9 Erste Befehle 9 Lampen 9 Schleife 10 Sch nheit Lesbarkeit 11 Variable 12 Ein und Ausgaben 13 Motoren Taster und Lichtschranken 14 Intermezzo Nocheinmal die Ampel 16 Elself und Subs 16 SetMotors 17 ber das T renschieben 18 berwachung durch Lichtschranke 19 Temperatur Regelung 20 Dreipunkt Regelung 21 Stanzmaschine 23 Parkhausschranke 24 Der Schwei roboter 26 Relatives Positionieren Asynchrones Fahren 27 Absolute Positionierung 28 Referenz 30 Allgemeines 30 Verwendete Parameterbezeichnungen 30 Symbolische Konstanten 31 Befehle 32 Allgemeines 32 Speed 32 Counter 32 RobMotoren 32 Lampen am Interface 33 Liste der Befehle 34 Anhang 42 bersicht mscFish 42 bergang zu anderen Sprachen der VB Sprachfamilie 43 Einf hrung in die Programmierung mit mscFish Inhaltsverzeichnis 2 Copyright 1998 2003 f r Software und Dokumentation Ulrich M ller D 33100 Paderborn Lange Wenne 18 Fon 05251 56873 Fax 05251 55709 eMail UM ftcomputing de HomePage www ftcomputing de Freeware Eine private nicht gewe
15. Eingang den vorgegebenen Wert annimmt WaitForlnput InputNr OnOff OnOff Boolean Endebedingung f r E Eingang InputNr Default True Siehe auch WaitForChange WaitForLow WaitForHigh Beispiel SesNoger rer AAS E Nlenl e Done inaoneue EAEN Sero CO rei E EOE Der Motor an M Ausgang M1 wird gestartet es wird auf E Eingang True gewartet dann wird der Motor wieder abgeschaltet Anfahren einer Endposition Einf hrung in die Programmierung mit mscFish Referenz 39 WaitForLow Warten auf einen True False Durchgang an einem E Eingang WaitForLow InputNr Siehe auch WaitForChange WaitForInput WaitForHigh Beispiel SECME E Final re ware SECO COR EE EM eek WaitForLow ftiEl DEENOESEE LEI NP ERONEN Eine Lichtschranke mit Lampe an M Ausgang M1 und Phototransistor an E Eingang E1 wird eingeschaltet Ein F rderband mit Motor an M2 wird gestartet es wird gewartet bis ein Teil auf dem F rderband in die Lichtschranke einf hrt sie unterbricht dann wird abgeschaltet Die Lichtschranke mu vorher True sein nicht unterbrochen WaitForMotors Warten auf ein MotorReadyEreignis oder den Ablauf von Time WaitWert WaitForMotors Time MotorNr Time Long Zeit in MilliSekunden Bei Time 0 wird endlosgewartet MotorNr ftiNr Nummern der M Ausg nge auf die gewartet werden soll Es wird auf MotorStatus ftiAus f r die angegebenen M Ausg nge gewartet MotorNr ftiM1 ftiM8 in beliebiger Reihenfolge Die nicht betroffenen
16. GetInput eFussWunsch Pause TOOOF EA SetMotor mGruen Then CEIAU Einf hrung in die Programmierung mit mscFish Then Einf hrung in die Programmierung 16 Bee Moror MCEI CELAS SeeNororneruernyarerE n Else SecNMoOrFOor meruen texrb n End If Eoop l ae Marne Sub Blinken SEMO COF MOCE LO rer Ban Pause 500 EA SerMotor mGelb TELAS Pause 400 EA End Sub Das GelbBlinken wird ber die Abfrage eines weiteren Tasters eGelbBlinken geschaltet Die vorhandene If End If Klammer wird um eine neue Klausel ein Elself erweitert Beim If wird wie bisher auf eGelbBlinken getestet wenn das nicht zutrifft eGelbBlinken hat Vorrang auf eFussWunsch und wenn das auch nichts war wird ganz normal das Auto JmGruen eingeschaltet wird jetzt also nicht mehr bei jedem Schleifendurchlauf geschaltet Das Blinken selber wird durch ein ebenfalls neues Sprachelement ein Unterprogramm Sub gesteuert In einem Unterprogramm werden logisch zusammengeh renden Befehle zusammengefa t und au erhalb des normalen Programmablaufs abgestellt Ein Unterprogramm wird durch seinen Namen aufgerufen beim If eGelbBlinken Blinken Vorteil eines Unterprogramms das eigentliche Haupt Programm wird bersichtlicher bei mehrmaligem Aufruf wenn man auch noch woanders Blinken will wird vorhander Code wiederverwendet VBScript Index If Then Else Anweisung SetMotors Die vielen SetMotor Ein und Aus sind langsam un bersichtlich mit SetM
17. Konstanten stehen f r die Bedeutung der Konstanten m M Ausgang des Interfaces c allgemeine Konstante e st nde dann f r die E Eing nge Das ist eine verbreitete Sitte deren jeweilige Form mit gro em Nachdruck vom Anwender vertreten wird diese Form ist eine Marotte des Autors Gro und Kleinschreibung ist ebenfalls eine viel diskutierte M glichkeit den Code lesbarer zu machen Hier wird konsequent die Kamel Schreibweise mit H ckern durch weitere Grof sbuchstaben im Wort angewendet VBS schluckt jede Schreibweise ist nicht case sensitiv Man sollte aber bei einer einheitlichen Schreibweise bleiben blicherweise wird der Code in Schleifen ebenfalls aus Gr nden der besseren Lesbarkeit einger ckt Zus tzlich sind noch Kommentare m glich Sie beginnen mit einem Hochkomma der Rest der Zeile wird dann von VBS nicht mehr beachtet Hier wurde ein Kommentar als Programm berschrift verwendet Man kann auch Kommentar auf den Rest einer Befehlszeile schreiben VBS ist eine zeilenorientierte Programmiersprache D h Befehle mitsamt ihren Parametern m ssen auf einer Zeile stehen Ggf kann eine Fortsetzungszeile eingef hrt werden am Zeilenende ein Leerzeichen blank und eine Underscore _ und dann weiter auf der n chsten Zeile Andere Sprachen verwenden ein Semikolon zur Begrenzung eines Befehls Beides hat seine Vor und Nachteile VBScript Index Const Anweisung Einf hrung in die Programmierung mit
18. Print o tatuo ue em 22 Ss Temperaturen SetMotor mLampe ftiEin SerMorez MOCO TELAS UT 22 Elself Temperatur lt OT Then Pring taru 2 2 2 mperarlen 27 Siemperar a ee eurewers Or pr ee EB OT Er 2er 5100 Else Print Baen T AEE a T EO e a no SetMotor mLampe ftiAus SerNoror MOEG TELENN OT EA Einer EO Gaue t Re Function Temperatur Tewo o aea OO A a aN a le Enekuneereon Hier wurden mehrere Ma nahmen in einen Schritt in ein beinahe neues Programm eingebaut 1 Zieltemperatur In EA wird jetzt eine echte Temperatur angegeben die als Mittelwert zu halten ist Die vom Mittelwert erlaubten Abweichungen werden in EB in Prozent angegeben Im Beispiel sind das EA 29 gesch tzte Grad und EB 2 2 Function Temperatur die mit GetAnalog gemessenen Werte im Bereich von 0 1000 werden in Grad umgerechnet Dazu wird ein neues Konstrukt eine Function genutzt Eine Function ist ein Unterprogramm das einen Wert als Ergebnis seines Aufrufs zur ckgibt Hier ist das die aktuelle Temperatur Der gemessene Wert GetAnalog wird erstmal umgedreht 1000 eNTC jetzt entspricht ein gr erer Wert auch einer h heren Temperatur Der ermittelte Wert wird durch 10 geteilt und dann werden nochmal 12 abgzogen das sollen dann Grad Celsius sein Der NTC wurde nicht wirklich geeicht aber die Werte sind realit tsnah im Bereich 25 35 3 Die Variablen UT und OT stehen f r untere obere zul ssige Temperatur Sie werden aus Z
19. PrintLog Runde amp Runde SeLNoBSEr merVenyererB n ESE Pange Ree SetMoESr mGelb EEAS LOO e Un eao In der neuen Fassung wird ber die Befehl EA auf das korrespondierende Feld der IDE zugegriffen und ein Faktor zu Modifikation der Ablaufzeiten ausgelesen Vorgabe ist 1 So kann man recht elegant die bisherige auf Tempo getrimmte Fassung besser den realen Bedingungen an einer Ampel anpassen bei einem Faktor 30 mu man dann genauso endlos warten wie an einer realen Ampel Mit dem Befehl PrintStatus kann in die hellblaue Statuszeile geschrieben werden Hier wird die Textkonstante Die Ampel bei der Arbeit ausgegeben Das ist eine neue Art von Konstante bisher waren nur numerische Konstanten im Spiel Textkonstanten beginnen und enden mit einem doppelten Hochkomma und k nnen alle anzeigbaren Zeichen enthalten sie m ssen auf eine Zeile passen Die neue Variable Runde soll die durchlaufenen Schleifen z hlen Deklaration oben mit Dim wie gewohnt keine Besetzung mit einem Anfangswert hier wird der Standardwert 0 genutzt Zu Beginn jeder Schleife wird dann der Wert von Runde um 1 erh ht Der Wert von Runde 1 ist ein Ausdruck der wieder Runde zugewiesen wird dadurch wird der alte Wert von Runde beim ersten Mal 0 der noch im Ausdruck galt berschrieben PrintLog schreibt dann in den bisher noch nicht genutzten Log Bereich Geschrieben wird eine Text Konstante und eine Zahl der aktuelle Wert von Runde die durch
20. Rahmen in Verbindung mit der IDE voll ausreichend Ist man aus diesem Rahmen herausgewachsen sollte man auf gr ere Sprachen der Visual Basic Sprachfamilie umsteigen Das ist problemlos m glich Siehe Anhang Installation mscFish wird in Form eines Setup Programmes mscFish30Setup EXE ausgeliefert Die Installation erfolgt weitgehend automatisch nach den blichen Regeln mscFish l uft ab Windows 98 und setzt ein installiertes Visual Basic 6 Laufzeitsystem MSVBVM60 DLL und einen installierten und aktivierten WSH Windows Scripting Host einschlie lich VBScript Runtime voraus Siehe auch Anhang bersicht mscFish Wenn ein altes Universal Interface am LPT Port betrieben werden soll ist bei der Installation EINE der LPT Optionen auszuw hlen Einf hrung in die Programmierung mit mscFish bersicht 4 IDE Integrated Development Environment bersicht lt 7 mscFish Unbekannt Datei Extras 7 I t VES Blinkende Lampe an M Interface Panel Option Explicit Const mGbelbelLampe 2 Do Bleilele BlEleliE SetMotor mGelbelLampe ftiEin ES E1 Fause 400 SetrMotor mGelbeLampe tikus Pause Z00 Loop Until Finish EnS eu ee Mid Ma U M2 U MN Ex 0000 EY 0000 Interface OK START BR ji EB ji LPT P ENDE START Die IDE gliedert sich in folgende Teile Bedienung der Gesamt IDE Buttons links unter dem Strich Kommunikation mit dem Modell ber das Interface Interface Panel Parameter
21. Word und das Men Extras Makros ist etwas umst ndlich Visual Basic 6 VB6 bietet in der preisg nstigen Einsteiger Edition ein vollwertiges professionelles Entwicklungssystem und l t sich durch die deutlich teurere Professionelle Edition noch durch weitere Funktionalit t ausstatten Visual Basic NET VB NET ist eine Sprache der NET Sprachfamilie die auf Microsofts NET Framework basiert Ein Umstieg ist besonders dann reizvoll wenn man die neue Technologie kennenlernen will Einf hrung in die Programmierung mit mscFish Anhang 43
22. as Log Fenster der IDE wird gel scht ClearLog Siehe PrintLog PrintStatus ClearMotors Abschalten aller M Ausg nge ftiAus ClearMotors Siehe auch SetMotor SetMotors SetLamp Outputs Closelnterface Schlie en der Verbindung zum Interface gt Im Betrieb mit mscFish nicht erforderlich aber beim Einsatz von VBScript Programmen au erhalb der Umgebung von mscFish ft Closelnterface Siehe auch Openinterface Einf hrung in die Programmierung mit mscFish Referenz 34 EA Auslesen des Wertes im Feld EA der IDE wert EA Beispiel AnzahlRunden EA 1 Die Variable Anzahlrunden wird mit dem numerischen Inhalt des IDE Feldes EA 1 besetzt Siehe auch EB EB Auslesen des Wertes im Feld EB der IDE wert EB Siehe auch EA Finish Feststellen eines Endewunsches NotHalt Esc Taste E Eingang Boolean Finish InputNr Siehe auch Getlnput Getlnputs Inputs Beispiel Do COOP Un ara Die Do Loop Schleife wird solange durchlaufen bis entweder NotHalt True die Esc Taste gedr ckt oder E1 True wurde GetAnalog Feststellen eines Analogwertes EX EY Es wird der intern vorliegende Wert ausgegeben AnalogScan beim Openinterface ist erforderlich AnalogWert GetAnalog AnalogNr Siehe auch GetAnalogs AnalogsEX AnalogsEY AnalogScan Openinterface Beispiel 12 INgue Sur eneibiss are An a O E lee Der aktuelle EX Wert wird in der Statuszeile angezeigt GetCounter Feststellen des Wertes des angegeb
23. ause 3000 SeEErMOFOEr mMoror Term n ftiHBalf Faser 22000 SeceMoror mMoror FeErLAus Nach dem gewohnten SetMotor kommt noch eins mit einem zus tzlichen Parameter ftiHalf Bedeutet der Motor l uft jetzt nur noch mit halber Drehzahl so zum Nachtrocknen Der Befehl SetMotor hat also einen Parameter mehr als man dachte Das funktioniert so eigentlich hat er immer drei wenn man den dritten wegl t wird das intern erkannt und er wird durch einen default Ersatz Wert hier ftiFull ersetzt Erlaubt sind hier auch die Werte O 15 f r aus ber 7 f r ftiHalf und 15 f r ftiFull Man kann also noch mehr spielen Und noch ein Nachtrag Wenn an einem M Ausgang ein Motor angeschlossen ist kann der Ausgang auch mit ftiLinks ftiEin und ftiRechts betrieben werden es kann also die Drehrichtung des Motors vorgegeben werden also der Langsamgang vielleicht ftiRechts rum Zur Drehrichtung mit ftiLinks wird die Drehrichtung bezeichnet die der Motor einnimmt wenn man beim Interface Panel auf L dr ckt Wenn das falschrum ist sollte man am Motor das Kabel umstecken Am Interface selber sollt der rote Stecker immer in der ersten Reihe also vorn stecken das schafft bersicht VBScript Inhalt VBScript Operatoren Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 15 Intermezzo Nocheinmal die Ampel Op Ionen Soleke Const mGruen 1 mGelb 2 mRot 35 Const mEFuss 4 Const eFus
24. chweiss 2 Dam RO COCE Do Home MoveTo 56 Schweissen EA EB MoveTo 144 Schweissen EA 2 EB 2 MoveTo 94 Schweissen EA EB PO PANETER ENEN Sub MoveTo ZielPos Ir Reborpos 7ZielPess Ehen SeErMCLEOLr MRObOL Str irkRechts CELP 7IelPo 2 RopoLPos Do PrintStatus RobotPos amp ZielPos GetCounter elmpuls Eoop nhie Wa TE ROEM OTOT si 00 EROL OE Ferne RobotPos ZielPos GetCounter eIlmpuls Else Sec MEOE MRODO E ELLLER Ke EELEE RODO EROS maA Te EPOS DO Pepine ratto e RODE OS aA a A T eTO o GEE OU EO e pU Loop While WaitForMotors 100 mRobot ftiTime RobotPos ZielPos GetCounter eIlmpuls ENOTE Perinestarl RODO OS S Oe RODO EOS ETOM UD Sub Schweissen Mal Dauer Dima wean E ES el Sero ror Dehwerss E EEIN Pause 100 Dauer SetMotor mSchweiss ftiAus Pause 100 Dauer Next Eimer un Sub Home Prine roco Me Eoygekhternach Hauser SerMoron MROLO Fre h nks WaitForInput eEnde SetMotor mRobot ftiAus RobotPos 0 Bernat tac Ie S End oub Das Unterprogramm MoveTo unterscheidet zun chst ob es nach links oder rechts geht Anhand dessen wird die Anzahl Impulse bestimmt die mit SetMotor zu fahren sind und dann wie gewohnt mit WaitForMotors auf die Fertigmeldung gewartet Hier wird WaitForMotors aber gesagt nicht gleich auf fertig zu warten sondern nur 100 MilliSekunden die 0 von vorher bedeutet endlos warten und dann mit einem Returncode zur ckzukehren Abgefragt Einf hrung in die Programmierun
25. d ZielPosition m ssen immer positive Werte einschl 0 enthalten Siehe auch WaitForPosUp WaitForChange Beispiel Dimni ECS RoS TETOR TSEESS1EION 12 Ser MoOLOr Ferm Terb nks Einf hrung in die Programmierung mit mscFish Referenz 40 WEBERoOrRPOSDonn Er rE STstpos eroan 0 Sella lese FerLMl gt Fernus Die aktuelle Position ist 12 IstPosition der Motor an M Ausgang M1 wird linksdrehend gestartet WaitForPosDown wartet dann auf Erreichen der Position 0 der Motor wird dann ausgeschaltet WaitForPosUp Warten auf Erreichen einer vorgegebenen Position WaitForPosUp InputNr IstPosition ZielPosition TermInputNr Ausgegangen wird von der aktuellen Position in IstPosition es werden solange Impulse auf IstPosition addiert bis der in ZielPosition angegebene Stand erreicht ist IstPosition enth lt dann tats chlich erreichte Position kann um einen Wert h her liegen wenn der Motor nochmal geruckt hat Alternativ wird die Methode durch E Eingang TermiInputNr True beendet IstPosition und ZielPosition m ssen immer positive Werte einschl 0 enthalten Siehe auch WaitForPosDown WaitForChange Beispiel Dim LetPos r eon IstPostion BeEEMOLOr Ferne ireches miete one es U ar war en zersal E 2 SC EMOL E re MI EEC EAUS Die aktuelle Position ist 0 IstPosition der Motor an M Ausgang M1 wird rechtsdrehend gestartet WaitForPosUp wartet dann auf Erreichen der Position 24 der Motor wird dann ausgeschaltet Siehe auc
26. dant zu WaitForHigh diesmal True False Durchgang hat sich eingefunden Mit der Kombination WaitForLow WaitForHigh wird kontrolliert ob ein Auto in die Lichtschranke ein und wieder ausgefahren ist Sicherheitshalber wird danach noch ein wenig gewartet Die eingestreuten PrintStatus erkl ren den weiteren Ablauf Spannend wird das wenn anstelle eines schlichten Taster Drucks ein PIN eingegeben werden mu Perne wor se ector UE POOS If WaitForCode Then Princeotatus Schranke offnet Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 24 WaitForTime 500 End If Loop UnL Klaren Function WaitForCode WaitForCode True If Secret InputBox Bitte Zugangscode eingeben _ nttParkhaus CBRD Then Exit Fonetien I ESMSGBOX orry2 des war neben ZEORCoaneelk vpRCzneie le ftParkhaus GBR vbCancel Then NotHalt True PrintLog Das Programm wurde gewaltsam beendet amp Now End If WaitForCode False Ener Biner on Function Secret PINcode Secret False If PINcode CStr Day Now 100 Month Now Then Secret True ERGARUNCE ON Anstelle des bisherigen WaitForHigh ein If WaitForCode Then das als Ergebnis ein True oder False zur ckgibt Im True Falle geht s weiter wie bisher sonst wird der Rest bersprungen und man landet wieder beim WaitForCode Die Funktion WaitForCode sieht zwar so aus wie die anderen WaitFor Funktionen damit man sie auch ernst nimmt ist aber eine Funktion di
27. das kommt sp ter Wenn man sich den Code die Befehle genau ansieht wird man zwei zus tzliche entdecken Pause ist bekannt ClearMotors l scht alle M Ausg nge M1 M4 Wenn man sie wegl f st r hrt sich ab dem zweiten Durchlauf gar nichts mehr in der Schleife alle Lampen werden st ndig wieder eingeschaltet obwohl sie ja schon an sind Mit ClearMotors ndert sich das und damit mans auch merkt die Pause VBScript Index Suchbegriff Do Loop Anweisung FishFace Referenz Finish Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 10 Sch nheit Lesbarkeit 22 2 Ampel VBS EIn a mrache Aae en Const mGruen 1 mGelb 2 mRot 3 Const cLangePause 1000 cKurzePause 300 Do DeENoOFrOLr neruem Ss TerE n Pause Change Zeile SetMotor mGruen ftiAus Berl lororRenGele ereirk n Pause ceRurzePause BeLrMoroLz MOD TEAU SEeEMOLOL MRO Fern Base CEMC ENE eE So rMoCor meL FECLETA Pause eRurzePause oe MOCO MROE ftiAus SEEMOCLOE mGelb TtiAus EO OPA EAEE N Man kann anstelle der allgemeinen symbolischen Konstanten die die Anschl sse am Interface bezeichnen eigene Konstanten einf hren die die am Interface angeschlossenen Ger te bezeichnen Hier sind das die verschiedenfarbigen Lampen mGruen mGelb mRot Und wenn man schon dabei ist auch noch cLangePause und cKurzePause f r den Pause Parameter So kann man leicht die Einschaltdauer zentral ver ndern Die kleinen Buchstaben vor den
28. den Operator Ampersand amp mit einander in geeigneter Weise zu Text verbunden werden Im Log Bereich werden die Ausgaben nicht berschrieben sondern gescrollt nach oben geschoben die jeweils letzte Zeile wird markiert und bleibt im Fenster sichtbar ber den Scrollbar rechts k nnen auch die anderen Zeilen angezeigt werden FishFace Referenz PrintStatus PrintLog Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 13 Motoren Taster und Lichtschranken Const mMotor 1 mLampe 2 Const eTaster l ePhoto I Do SetMotor MMO ON call Pause 5000 SetMotor mMotor FEIAUS Loop Until Rinio Motor an M1 g Lichtschranke M2 Lampe Der H ndetrockner soll nun so programmiert werden da E1 Phototransistor sobald die Lichtschranke unterbrochen wird der L fter ein und nach 5 Sekunden wieder ausgeschaltet wird Mit dem oben angegebenen Programm l uft der Trockner aber leider trotz Pause ewig Was fehlt ist ein Ausl ser die Lichtschranke oder ein einfacher Taster erstmal wird ein Taster an E1 probiert Do If GetInput eTaster Then SetMotor moon FEIRIN Pause 5000 SeTMOTOr mMotrtor fe iAus End If Ikoojs Unti ERIni A Als erstes f llt die neue Konstruktion If Then End IF auf Sie ist wie das schon bekannte Do Loop eine Programmklammer Hier werden die Befehle zum Schalten des Trocknermotors eingeklammert Dem If folgt eine Bedingung ganz wie beim Loop Until h
29. e gleich unten im Programm zu finden ist In WaitForCode gibt es als erstes eine Abfrage nach der PIN Das geschieht ber die System Funktion InputBox zur ckgegeben wird der eingegebene PIN Code Die Parameter von InputBox bedeuten der Reihe nach Eingabeaufforderung Text in der Titelzeile Das Ergebnis wird einer hier erstellten Function Secret bergeben diese wiederum vergleicht es mit dem intern gebildeten aktuellen PIN War der eingegebene PIN Code falsch wird mit MsgBox gemeckert Die Parameter der Mecker Spruch die Button mit denen geantwortet werden kann ein Icon mit dem die Meldung verziert wird und dann noch der Text in der Titelzeile Bei der Anwort Abbrechen Cancel wird eine Notbremse aktiviert die FishFace Eigenschaft NotHalt wird auf True gesetzt das wird dann auch noch protokolliert Die Funktion wird wie bei Antwort OK mit False verlassen In beiden F llen wird dann der nachfolgende Code bersprungen Aber im Fall NotHalt wird am Loop Ende Finish hellh rig und bricht das Programm ab Und dann w re da noch die Function Secret die die aktuelle PIN liefert und mit dem als Parameter bergebenen PIN Code aus der InputBox vergleicht ja die wird aus Tag und Monat zusammengebastelt heute war es 1303 und das war im M rz Man kann die Sache auch noch viel spannender machen FishFace Referenz WaitForLow VBScript Index InputBox Funktion MsgBox Funktion Einf hrung in die Programmierung mit mscFish Einf hrun
30. enen Counters Counter GetCounter InputNr Siehe auch SetCounter ClearCounter ClearCounters Beispiel Beipiel Printo tatuo CREM kosteten FIT Ge E ON er NEET E2 Die aktuelle Turm Position wird in der Statuszeile angezeigt Einf hrung in die Programmierung mit mscFish Referenz 35 GetIinput Feststellen des Wertes des angegebenen E Einganges Boolean GetInput InputNr Siehe auch GetlInputs Inputs Finish Beispiel Bee emp UE T riesen Else ERE Wenn der E Eingang E1 Taster PhotoTransistor Reedkontakt True ist wird der Then Zweig durchlaufen Getinputs Feststellen der Werte aller E Eing nge InputStatus GetInputs Siehe auch GetlInput Inputs Finish Beispiel Dim e ez Ce Pen ples IE Are Sl Or eT Ana AHA Pen ae Wenn die E Eing nge E1 oder E3 True sind wird der Then Zweig ausgef hrt NotHalt Anmelden eines Abbruchwunsches Auswertung durch die Wait Methoden und Finish Get Set Boolean Default False Beispiel Tr NOCE aL ENT En ELLERO Das Unterprgramm wird beendet wenn NotHalt den Wert True hat Siehe auch Finish Openinterface Herstellen der Verbindung zum Interface und Setzen Bestimmen von dazu erforderlichen Parametern Openlnterface mu deswegen als erste Methode aufgerufen werden gt Im Betrieb mit mscFish nicht erforderlich aber beim Einsatz von VBScript Programmen au erhalb der Umgebung von mscFish ft OpeniInterface PortName AnalogScan Slave Pollinterval LPTA
31. ertechnik Kastens Computing Starter No 16 553 Wenn man bereits einige fischertechnik Teile auch graue einschl fischertechnik Interface besitzt kann man die Modelle auch leicht ohne den Kasten nachbauen dann wird empfohlen die Computing Starter Bauanleitung No 30 434 Preis 7 70 bei www knobloch gmbh de zu kaufen Dort sind auch evil fehlende Teile erh ltlich Erste Befehle Lampen SEE MEOEEz Are allMl ea Pause 1000 De EMOCOr Er een Pause 1000 SerMotor TELM eillaan Pause 1000 Lampen an M1 M3 gr n gelb rot 1 Aufbau des Modells mit den Lampen an M1 M3 des Interfaces Anschlu des Interfaces an den Rechner Netzteil anschlie en Aufruf von mscFish den Interface Anschlu COM1 kontrollieren START Klicken Der Punkt neben der Anschlu Auswahl mu gr n werden A Am Interface Panel der Reihe nach mit der Maus auf die Ls klicken Die entsprechende Lampe mu leuchten Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 9 5 Den Text im Editier Feld l schen und die oben angegebenen Befehle in das Editier Feld eingeben Nochmal kontrollieren 6 RUN klicken Wenn denn doch etwas falsch eingegeben wurde kommt eine entsprechende Fehlermeldung und die schuldige Zeile wird markiert korrigieren RUN Was passiert die Lampen gehen eine nach der anderen im Abstand von einer Sekunde an Verwendet wurden dazu zwei Befehle SsetMotor zum Einscha
32. f r die Anwendung Die Felder EA und EB Anzeige und Editieren der Anwendung Editier Feld rechts oben Protokollierung des Programmablaufs Log Feld rechts unten Anzeige des Programmstatus Die Statuszeile dazwischen Laden und Speichern von Anwendungen Men Datei Dokumentation Script56 CHM f r VBScript und mscFish PDF f r FishFace z Zt als separate Dateien Se Be a ee ee Ze a 9 Fehleranzeigen ber Message Boxen Bedienung der IDE 1 Einstellen der Interface Verbindung ber das Men Extras Interface Optionen Der eingestellte Wert wird links unten ber dem ENDE Button angezeigt und bei Programmende START Button klicken Eine erfolgreiche Interface Verbindung wird ber einen gr nen Button links neben der Interface Verbindung angezeigt die Beschriftung des START Buttons wechselt in RUN in der Statuszeile steht Editier Modus Anderfalls eine MessageBox Fehler beim ffnen des Interfaces Oft ist dann das Netzteil nicht angeschlossen 4 Bei erfolgreicher Interface Verbindung kann das Interface Panel genutzt werden Get tigte E Eing nge werden in der E Zeile angezeigt Einf hrung in die Programmierung mit mscFish bersicht 5 Die Werte der Analog Eing nge in den Feldern EX und EY Die M Ausg nge k nnen durch Maus Klick auf L bzw R bedient werden Wird gleichzeitig noch die Strg Taste gedr ckt bleibt der M Ausgang dauerhaft eingeschaltet Ausschalten durch Klick auf das zugeh rende M x Feld
33. f auf das Interface bei LPT 1 3 Gr ere Werte f r schnellere Rechner Einf hrung in die Programmierung mit mscFish bersicht 7 Einstellen der Programmiersprache mscFish kann wahlweise mit JavaScript in der Microsoft Version JScript bzw VBScript betrieben werden Die Auswahl der Programmiersprache erfolgt ber das Men Extras Sprachen w mscHish Sprachen Sprachen C YBScript f mit Prefix ft Abbrechen K Das ist nur gleich nach dem Programmstart m glich Au erdem kann ausgew hlt werden ob den FishFace Befehlen ein ft vorangestellt werden mu Sinn voll ist das dann wenn das mit mscFish erstellte Programm auch au erhalb der mscFish Umgebung z B innerhalb einer HTML Seite laufen soll siehe Anhang Hilfe Dokumentation VBScript Die deutsche Hilfe Datei Script56 CHM von Microsoft enth lt im Kapitel VBScript VBScript Benutzerhandbuch eine ausf hrliche bersicht ber die kompletten M glichkeiten von VBScript und im Kapitel VBScript VBScript Sprachverzeichnis eine Referenz aller VBScript Befehle Zus tzlich im Kapitel Script Laufzeit FileSystemObject eine Beschreibung der umfangreichen M glichkeiten des Dateizugriffs Im nachfolgenden Abschnitt Einf hrung in die Programmierung wird am Ende der Kapitel auf passende Seiten der VBScript Dokumentation hingewiesen Script56 CHM ist Bestandteil von mscFish30Setup Es kann auch kostenlos von www microsoft com germany scr
34. g in die Programmierung 25 Der Schwei roboter Einf hrung in die Programmierung mit mscFish OPEN E Picit SchweissRobot1 VBS Const mRobot 1 mSchweiss 2 Const eEnde 1 eImpuls 2 Dim IstPosition DO SeEEMOEOr MRS FEILCINK S Motor an M1 Mare Bor Ira eEnde Lampe an M2 SetMotor mRobot ftiAus EndeTaster an E1 IstPosition 0 ImpulsTaster an E2 SetMotor mRobot ftiRechts Der Roboter soll drei WaitForPosUp elmpuls IstPosition 56 Positionen anfahren und SetMotor mRobot ftiAus an jeder Position eine Schweissen Schwei ung durchf hren Danach soll er in seine SetMotor mRobot ftiRechts Ausgangsposition WaitForPosUp eins Toe Poe Con AA zur ckkehren und von SetMotor mRobot fti Aus vorne beginnen Schweissen Der MorLor mol FEILIN WaitForPosDown elmpuls IstPosition 94 SetMotor RS TEINS Schweissen LOO PRUNE E a sn Sub Schweissen Dimai For 1 1 To EA BetMoror mochwerss ze k n Pause 100 Zr SetMotor mSchweiss ftiAus Pause 100 EB Next End Sub Es geht alles sch n der Reihe nach Begonnen wird mit dem Anfahren der Ausgangsposition Home Position um einen Bezugspunkt zu gewinnen Das ist IstPosition 0 Anschlie end folgen drei sehr hnliche Anweisungsbl cke mit denen die gew nschten Positionen angefahren werden Motor einschalten Richtung beachten Mit dem neuen Befehl WaitForPosUp WaitForPosDown darauf warten da die als Konstante vorgegebene Zielposition erreicht wird d h Ziel
35. g mit mscFish Einf hrung in die Programmierung 28 wird ftiTime Ablauf der vorgegebenen Zeit Es gibt auch noch ftiEnde ftiNotHalt und ftiEsc Das geschieht in einer Schleife bis die Bedingung ftiTime nicht mehr zutrifft Hier nimmt man schlicht an da alles gut gegangen ist ftiEnde Hier nocheinmal der Hinweis es kann auch auf bis zu 8 Motoren gleichzeitig gewartet werden Das Programm wird dann allerdings ein wenig komplizierter siehe FishFa30 Handbuch f r Visual Basic 6 Da hier in einer Schleife gewartet wird kann da auch etwas getan werden Hier z B die Anzeige der aktuellen Position in der Statuszeile Der Ordnung halber wird sie zum Schlu noch einmal auf Vordermann gebracht es wird ja nur alle 100 Millisekunden abgefragt Helfen tut dabei die Funktion GetCounter die den aktuellen Stand der Impulsz hlung zur ckgibt immer positiv gerechnet vom Startwert heruntergez hlt auf 0 Das Unterprogramm Schwei en wurde etwas modernisiert man die einzelnen Punkte jetzt mit unterschiedlichen Werten schwei en Die Befehle zum Anfahren der Ausgangsposition wurden in ein Unterprogramm verlagert FishFace Referenz GetCounter Jetzt k nnte man nat rlich auf die Idee kommen den Schwei sroboter durch Austausch der Lampe durch einen Photowiderstand in einen Lichtsuchroboter umzuwandeln und dann die gemessenen Lichtwerte samt Position in der Warteschleife auszugeben Einf hrung in die Programmierung mit mscFish E
36. ge Warten auf eine vorgegebene Anzahl von Impulsen WaitForChange InputNr NrOfChanges TermInputNr Der Parameter TerminputNr ist optional InputNr ftiNr E Eingang an dem die Impulse gez hlt werden NrOfChanges Long Anzahl Impulse TermInputNr ftiNr Alternatives Ende E Eingang True Intern wird Counter InputNr verwendet der zu Beginn der Methode zur ckgesetzt wird Siehe auch WaitForPositionDown WaitForPositionUp WaitForInput WaitForLow WaitForHigh Beispiel error Terre ne WarekorChongese erE2 rl er SSO EO Ae ECPM TETOR E Der M Ausgang Motor M1 wird linksdrehend geschaltet es wird auf 123 Impulse an E Eingang E2 oder E1 True gewartet der Motor wird abgeschaltet Vergleiche mit dem Beispiel bei SetMotor Hier wird das Programm angehalten solange der Motor l uft WaitForHigh Warten auf einen False True Durchgang an einem E Eing ng WaitForHigh InputNr Siehe auch WaitForLow WaitForChange WaitForlnput Beispiel Solelloeee nal ea Se CUO COR In EL var alle e Warekor Heron Er rm Bee OLOzIr BEIM redet Eine Lichtschranke mit Lampe an M Ausgang M1 und Phototransistor an E Eingang E1 wird eingeschaltet Ein F rderband mit Motor an M2 wird gestartet es wird gewartet bis ein Teil auf dem F rderband aus der Lichtschranke ausgefahren ist die Lichtschranke wird geschlossen dann wird abgeschaltet Die Lichtschranke mu vorher False sein unterbrochen WaitForlinput Warten da der angegebene E
37. h Beispiel zu WaitForPosDown hier wird in Gegenrichtung gefahren WaitForTime Anhalten des Programmablaufs WaitForTime mSek Synonym f r Pause Siehe auch Pause Beispiel Do SeEMOLOr Ss Wareksei messos SetMotors amp H4 WaLtkorfime 555 LOOP Unti E in sh In der Schleife Do Loop Until Finish wird erst M Ausgang Lampe M1 eingeschaltet und alle anderen abgeschaltet bin r 0001 dann gewartet M2 Lampe eingeschaltet Rest aus bin r 0100 und gewartet Ergebnis ein Wechselblinker Einf hrung in die Programmierung mit mscFish Referenz 41 Anhang bersicht mscFish mscFish ist eine Entwicklungumgebung f r VBScript Programme die FishFa30 DLL nutzen Sie unterst tzt die Erstellung von Anwendungen zur Steuerung von fischertechnik Modellen die ber ein fischertechnik Interface an einen Windows PC angeschlosen sind Einsetzbar auf Windows 98 Me bzw Windows NT 2000 XP mscFish besteht aus folgenden Komponenten 1 Der Entwicklungsumgebung mscFish30 EXE 2 Dem Handbuch dazu mscFish30 PDF 3 Der VBScript Dokumentation Script56 CHM Von diesen Komponenten werden folgende weitere Komponenten genutzt 1 Das Visual Basic 6 Laufzeitsystem MSVBVM60 DLL und davon abh ngige Komponenten 2 Die ActiveX Komponente FishFa30 DLL mit umFish30 DLL und weiteren Komponenten 3 Der Acrobat Reader 4 Das WSH System Der Windows Scripting Host mit seinen Komponenten 5 Ein Hilfe System f r CHM Dateien Diese K
38. ie Programmierung mit mscFish Jeweils 4 bit pro Ausgang Begonnen bei 0 3 f r M1 Werte 0000 stop 1111 full Nummer eines E Einganges mit der die Wait Methode beendet werden soll ftiNr Allgemeiner numerischer Wert R ckgabewert von WaitForMotors ftiWait Referenz 30 Die Aufrufparameter sind Werteparameter d h sie bergeben Werte geben aber keine zur ck Ausname Parameter IstPosition bei WaitForPosDown WaitForPosUp Eine Reihe von Parametern sind optional d h sie brauchen nicht angegeben werden Intern werden sie dann mit sinnvollen Werten belegt Das wird beim einzelnen Befehl beschrieben Symbolische Konstanten Um ein Programm lesbarer zu machen werden von mscFish eine Reihe von symbolischen Konstanten angeboten die in der Datei Global VBS zusammengefa t sind sie k nnen bei Bedarf ge ndert werden Die Konstanten werden unter den folgenden Oberbegriffen die nicht selber verwendet werden k nnen zusammengefa t ftiDir Angabe des Schaltzustandes Drehrichtung Ein Aus ftiLeft ftiRight ftiOff ftiOn ftiLinks ftiRechts ftiAus ftiEin ftiNr Angabe der Nummer eines Ein bzw Ausganges ftiEX ftiEY ftiE1 ftiE8 ftiM1 ftiM4 fliSpeed Angabe einer Geschwindigkeitsstufe ftiNone 0 ftiHalf 7 ftiFull 15 Zwischenwerte k nnen numerisch eingegeben werden ftiWait Returnwerte der Methode WaitForMotors ftiEnde ftiEnd ftiTime ftiNotHalt ftiEsc Einf hrung in die Programmierung mit mscFish
39. ieltemperatur EA und prozentualer Abweichung EB errechnet und gleich auch im Log Feld ausgegeben weils doch mit dem Kopfrechnen so seine Probleme hat Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 21 4 Die If Elself End If Konstruktion wurde um einen Else Zweig erweitert die zugeh renden Temperatur Abfragen wurden ge ndert und den neuen Temperaturwerten angepa t If Zu niedrige Temperatur Elself Temperatur zwischen UT und OT also im erlaubten Zielbereich Else Zu hohe Temperatur 5 Geschaltet wird wie bisher aber UT und OT werden laufend ge ndert Motto Wenn schon K hlen Heizen dann aber richtig und dann Pause Wird eine niedere Temperatur erkannt wird UT EA gesetzt um ein h heres Aufheizen bis zur Zieltemperatur zu erreichen Beim K hlen wird dann entsprechend OT auf EA abgesenkt Bei Temperaturen im Zielbereich werden UT OT wieder auf die Ausgangswerte gesetzt 6 In der StatusZeile wird die aktuelle Temperatur angezeigt verbunden mit dem Hinweis Heizt Temperatur K nhlt Ganz sch n viel Stoff f r so ein doch noch eher kleines Programm Tip Wenn einseitig nur geheizt und pausiert wird Daumen und Zeigefinger um den NTC f hren ihn zu beachtlichen Temperaturen und der Wind kommt VBScript Index Function Anweisung Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 22 Stanzmaschine i 2 SeEelnzMeselame Was Seren e ieit
40. ier ist das GetInput eTaster Dieser Befehl fragt den Eingang E1 ab wenn der geschlossen ist liefert GetInput das Ergebnis True Wahr D h der Inhalt der Klammer wird unter der Bedingung ausgef hrt da der Eingang E1 True ist Wenn man nun kurz auf den Taster Schlie er angeschlossen sind die Kontakte 1 und 3 dr ckt l uft der Motor an und tut das weitere 5 Sekunden und wird dann wieder abgeschaltet D h das gesamte Programm wartet hier ein erneutes Dr cken des Taster hat in dieser Zeit keine Wirkung Der Taster ist recht unbequem deswegen nun zur Lichtschranke SetMotor mLampe ftiEin Pause 1000 Do If GetInput ePhoto Then SetMotor MISNEONE aan Pause 5000 DeELMOTEr InMlor Or FEIAUS ENG II POOP Unta n N Vor dem Do Loop mu erstmal die Lichtschranke aktiviert werden jetzt ist der Phototransistor an E1 angeschlossen Also SetMotor mLampe ftiEin und ein wenig warten damit sich der Phototransistor an das Licht gew hnt man kann das auf dem Interface Panel kontrollieren Und dann die If Bedingung in GetInput ePhoto ndern Der Motor l uft nur leider auch schon wenn die Lichtschranke noch gar nicht unterbrochen ist Wenn man dann die Hand reinh lt bleibt der Motor nach sp testens 5 Sekunden stehen es l uft also genau umgekehrt Daran mu gedreht werden If Not GetInput ePhoto Then stellt die Bedingung auf den Kopf Das If wird jetzt ausgef hrt wenn GetInput ePhoto False liefert die Lichtschranke also u
41. inf hrung in die Programmierung 29 Referenz Allgemeines Verwendete Parameterbezeichnungen In der Referenz werden f r Parameter und Returnwerte besondere Bezeichnungen verwendet um deren Bedeutung zu charakterisieren Sie stehen gleichzeitig f r einen Vaariablentyp bzw alternativ eine Enum AnalogNr Nummer eines Analog Einganges 0 1 ftiNr AnalogWert R ckgabewert beim Auslesen von EX EY 0 1024 Counter Wert eines ImpulsCounters Direction Schaltzustand eines M Ausganges 0 2 ftiDir InputNr Nummer eines E Einganges 0 8 16 ftiNr InputStatus R ckgabewert beim Auslesen aller E Eing nge 0 amp HFFFF LampNr Nummer eines halben M Ausganges 0 8 16 ftiNr ModeStatus Status der Betriebsmodi aller M Ausg nge Jeweils 4 bit pro Ausgang Begonnen bei 0 3 f r M1 0000 normal 0001 RobMode MotorNr Nummer eines M Ausganges 0 4 3 ftiNr MotorStatus SollStatus aller M Ausg nge Jeweils 2 bit pro Ausgang Begonnen bei 0 1 f r M1 00 Aus 01 Links 10 Rechts mSek Zeitangabe in MilliSekunden NrOfehanges Anzahl Impulse OnOff Ein Ausschalten eines M Ausganges Boolean ftiDir PortName Name des w hlbaren Anschlu ports String CEPTS C OM1 COM8 PT1 zu LPT3 Position Position in Impulsen ab Endtaster Speed Geschwindigkeitsstufe mit der ein M Ausgang Motor betrieben werden soll 0 15 ftiSpeed SpeedStatus Status der Geschwindigkeiten aller M Ausg nge TermiInputNr Value WaitWert Einf hrung in d
42. ipting geladen werden Stand M rz 2003 FishFace Zu FishFace gibt es zwei im Aufbau und Inhalt recht hnliche Handb cher f r JScript VBScript im PDF Format Sie bestehen aus einem bersichtsteil einer Einf hrung in die Programmierung und einem Referenzteil f r FishFa30 DLL Einf hrung in die Programmierung mit mscFish bersicht 8 Einfuhrung in die Programmierung Allgemeines Im diesem Abschnitt wird eine einfache Einf hrung in die Programmierung gegeben Sie ist f r Programmieranf nger mit einiger Windows Erfahrung aber ohne Programmierkenntnisse gedacht Die Einf hrung erfolgt anhand von praktischen Beispielen auf eine theoretische Unterlegung wird verzichtet Ebenso auf eine komplette Darstellung der Sprache VBScript Die Einf hrung erfolgt bewu t auf der Basis von prozeduralen Elementen um die Einstiegsschwelle niedrig zu halten Eine Nutzung der OO Elemente von VBScript ist aber problemlos m glich Die Kapitel bauen aufeinander auf und nehmen im Schwierigkeitsgrad zu sie sollten deswegen nacheinander durchgearbeitet werden Bei weitergehenden Interesse kann nahtlos zu der in ausreichendem Ma e vorhandenen Computerliteratur gegegriffen werden Auf die bei Microsoft kostenlos erh ltliche VBScript Dokumentation s o wird immer wieder am Ende eines Kapitels hingewiesen sie sollte parallel zum Durcharbeiten dieses Abschnitts zu Rate gezogen werden Die Programmbeispiele beziehen sich alle auf Modelle des fisch
43. lten der Lampen und Pause zum Anhalten des Programms SetMotor hat zwei Parameter die symbolischen Konstanten ftiM1 und ftiEin Der erste steht f r den Anschlu M1 der zweite f r die Aktion Ein Aus Links Rechts drehen Bei Lampen reicht ein schlichtes ftiEin Pause hat als Parameter eine numerische Konstante eine Zahl die angibt wie lange das Programm anzuhalten ist und zwar in Millisekunden Die 1000 hier steht also f r 1 Sekunde halten Das wars denn auch schon FishFace Eine genaue Beschreibung der Befehle ist im Referenzteil zu finden Schleife Das mit den Lampen war ja ganz sch n aber auch sch n schnell zu Ende Man sollte das in einer Schleife Schweizer und sterreicher Schlaufe wiederholen Daf r gibt es den Befehl Do Loop Finish mit dem man eine Folge von anderen Befehlen einrahmen kann um sie zu wiederholen Do SEIEN SE Se nen aaa Pause OO SerMoBoSLrsre 2 Stern Pause NO SOKO COR in cal Sr ELE EN Pause 1000 ClearMotors Pause WOOO Loop Until Finish Die Schleife l uft solange Until bis die Finish Bedingung True wahr wird d h bis in der IDE auf den HALT Button oder auf der Tastatur auf die Esc Taste gedr ckt wird man k nnte auch bei Finish noch einen Taster angeben Finish ftiE8 dann w rde die Schleife auch wenn der Eingang E8 am Interface True ist weil z B ein Taster gedr ckt wurde abgebrochen Anstelle von Finish k nnen auch andere Bedingungen angegeben werden
44. mscFish Einf hrung in die Programmierung 11 Variable Einf hrung in EE pe la yBs Option Explicit Conot MGruen Dim LangePause Kane bause KurzePause Do setMotor Pause setMotor setMotor Pause setMotor setMotor Pause setMotor Pause 1 mGelb KurzePause 1000 LangePause 4 mGruen ftiEin enge Bause merien TEUS mGelb CELEDA KurzePause mGelb ftiAus mRot ie ale kengerause mGelb ERPE KurzePause Eine einfache Ampel SetMotor SetMotor Loop Unea ROE Bere mGelb ftiAus Eulmassih Konstanten enthalten einen festen Wert Variable k nnen einen ver nderlichen variablen Wert enthalten Durch nderung von Const cLangePause 1000 des vorhergehenden Beispiels in Dim LangePause erh lt man eine Variable der man noch einen Anfangswert zuweisen mu LangePause 1000 standard ist 0 wie gehabt als Konstante Der Vorteil von Variablen ist dass man diesen Wert wieder ndern kann das auch mehr oder weniger kompliziert durch Ausdr cke KurzePause LangePause 4 Der Ausdruck LangePause 4 wird hier einer weiteren Variablen KurzePause zugewiesen d h der Wert der KurzePause betr gt der LangePause Man kann nat rlich noch viel komplexere Ausdr cke bilden U a kann man alle Operatoren der Arithmetik einsetzen In Ausdr cken k nnen Variablen Konstante und Funktionen kommt sp ter eingesetzt werden Im Beispiel oben waren es die Variable LangePause und die Konstante 4 50 100
45. n man die PrintStatus und PrintLog Ausgaben des H ndetrockners entsprechend modifiziert bernehmen FishFace Referenz SetMotors ClearMotors VBScript Inhalt VBScript Prozeduren VBScript Index Subanweisungen ber das T renschieben ner V Eo Schi eserLur Oper Pong zplEre Me Const mTuer 1 mLampe 2 Const eTuerZu 1 eTuer Auf 2 eOeffnen 3 Conzerer howor 4 Do SetMotor ill FteiLIinks WaitForInput eTuerzu False Motor an M1 SetMotor mTuer ftiAus Lichtschranke M2 E4 Taster T rAuf E2 WaitForInput eOeffnen Taster T rZu E1 Taster Offnen E3 SetMotor mTuer ftiRechts WaitForInput eTuerAuf Wenn Taster E3 gedr ckt SeeNoror mirser Bea wird soll sich die T r Pause 5000 ffnen und nach f nf oo Use Male Sekunden wieder schlie en Zun chstmal wird die T r geschlossen SetMotor Das wird durch den neuen Befehl WaitForInput berwacht WaitForInput berwacht den eTuerZu Eingang am Interface und zwar darauf da der zugeh rende Taster ffnet deswegen der Parameter False Das ist zun chst etwas berraschend wenn man sich aber die baulichen Verh ltnisse und die Vorliebe f r eine Schaltung als Schlie er Kontakte 1 und 3 ansieht verst ndlich Und dann wird schon wieder gewartet auf eine Anforderung zum T r ffnen ber eOeffnen Der Taster ist wieder als Schlie er geschaltet und wird gedr ckt geschlossen deswegen wird hier auf WaitForInput eOeffnen True gewartet da True
46. n von Motoren in zwei Laufrichtungen vorgesehen Doch bietet sich zus tzlich die M glichkeit Ger te die nur ein und ausgeschaltet werden m ssen an nur einem Pol eines M Ausganges und Masse anzuschlie en Auf diese Weise ist es m glich z B acht Lampen mit einem Interface zu schalten Hief r gibt es die Methode SetLamp Sollen Lampen gemeinsam z B bei einer Verkehrampel geschaltet werden k nnen sie auch ber die Methode SetMotors geschaltet werden Dazu sind die einzelnen Lampenbits im MotorStatus zu setzen Es gibt Unterschiede zwischen den Interfaces Universal paralleles Interface im nicht geschalteten Zustand sind die Lampen aus M1 vorderer gelber Kontakt Lampe 1 hinterer oranger Kontakt Lampe 2 Intelligent serielles Interface im nicht geschalteten Zustand sind die Lampen an M1 vorderer Kontakt Lampe 1 hinterer Kontakt Lampe 2 Einf hrung in die Programmierung mit mscFish Referenz 33 Liste der Befehle Beep Ausgabe eines Tones auf dem Systemlautsprecher Beep Frequenz Dauer Frequenz Tonh he in Hz Dauer Dauer der Tones in Millisekunden Beispiel Beep 432 1000 Der Kammerton a qu kt 1 Sekunde lang auf dem Systemlautsprecher ClearCounter L schen des angegebenen Counters 0 ClearCounter InputNr Siehe auch ClearCounters GetCounter SetCounter ClearCounters L schen aller Counter 0 ClearCounters Siehe auch ClearCounter GetCounter SetCounter ClearLog D
47. nalog LPTDelay Die Parameter ab AnalogScan sind optional PortName String LPT COM1 COM8 LPT1 LPT3 Zuordnung des zuverwendeden Interfaces durch Angabe des Ports an dem es angeschlossen ist AnalogScan Boolean Angabe ob auch die Analogeing nge EX EY gepollt werden sollen Es ist dann ein h heres PolliInterval erforderlich Default False Slave Boolean Angabe ob an das prim re Interface ein weiteres angeschlossen ist Default False PolliInterval Long Angabe in mSek in welchen Intervallen auf das Interface zugegriffen werden soll Default 0 Bestimmung durch die Methode Openinterface in Abh ngigkeit vom Kontext Einf hrung in die Programmierung mit mscFish Referenz 36 LPTAnalog Long AnalogSkalierung Begrenzung des Analogwertes nach oben und damit der f r die Messung erforderlichen Zeit nur LPT Interface Default 5 LPTDelay Long Ausgabeverz gerung Bei LPT Interface auf schnellen Rechnern erforderlich Default 10 Siehe auch Closelnterface Pause Anhalten des Programmablaufs Pause mSek Siehe auch WaitForTime Beispiel SerMotor CEIM reiLinks Pause 1000 SeLrMOLOr CEIM FeriAns Der Motor am M Ausgang M1 wird f r eine Sekunde 1000 MilliSekunden eingeschaltet PrintLog Ausgabe eines Textes in das Log Feld der IDE PrintLog stringausdruck Beispiel PrintStatus Schranke ge ffnet amp Now Im Log Fenster wird ausgegeben Schranke ge ffnet
48. ng eingeschaltet sein soll Fahren eines Motors um n Impulse Siehe auch RobMotoren Siehe auch SetMotors ClearMotors SetLamp Outputs Beispiel 1 Sero Pora ren EEC RES ren Pause 1000 BecMoLor COLMO EEr EINkS S er rralalt Pause 1000 Selellloiels zr ae ENIE EA S Der Motor am M Ausgang M1 wird f r 1000 MilliSekunden linksdrehend volle Geschwindigkeit eingeschaltet und anschlie en f r 1000 mSek rechtsdrehend halbe Geschwindigkeit Beispiel 2 SeEEMorOrELrB MI erer see Der Motor am M Ausgang M1 wird f r 123 Impulse am E Eingang E2 oder E1 True mit Geschwindigkeitstufe 12 eingeschaltet Das Abschalten erfolgt selbstt tig SetMotors Setzen des Status aller M Ausg nge SetMotors MotorStatus SpeedStatus ModeStatus Die Parameter ab SpeedStatus sind optional MotorStatus Long Schaltzustand der M Ausg nge SpeedStatus Long Geschwindigkeitsstufen der M Ausg nge Default ftiFull ModeStatus Long Betriebsmodus der M Ausg nge Default 0 normal Bei ModeStatus RobMode sind vorher mit SetCounter die zugeh renden Counterst nde zu setzen Siehe auch ClearMotors SetMotor SetLamp Outputs Beispiel SerMotors SBI a LHN Pause 1000 Orear MoCOoOrS Einf hrung in die Programmierung mit mscFish Referenz 38 Der M Ausgang Motor M1 wird auf links geschaltet und gleichzeitig M4 auf rechts Alle anderen Ausg nge werden ausgeschaltet Nach 1 Sekunde werden alle M Ausg nge abgeschaltet WaitForChan
49. nterbrochen ist Verursacht wird das durch das vorangestellte NOT Jetzt geht s VBScript Inhalt Benutzerhandbuch Grundlagen Verwenden von Bedingungsanweisungen VBScript Index If Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 14 Jetzt noch einige Verzierungen SZ Z Er rEokner NV Bo e Renedeerocknerszor OPEO EPITET Const mMotor 1 mLampe 2 Const eTaster 1 ePhoto Dim Kunden Kunden 0 SetMotor mLampe ftiEin Pause 1000 Do PrintStatus Trockner bereit If Not GetInput ePhoto Then PrintStatus Trockner l uft Kunden Kunden 1 PrintLog Kunde Nr amp Kunden amp am amp Now SetMotor Nenner EE NEEN Pause 5000 SecMoRor mMekor TELAS ORE Ale LOOP Un ren Mit PrintStatus wird in der blauen Statuszeile angezeigt ob der Trockner bereit ist oder ob der Trockner l uft Au erdem wird in im Log Bereich die Nutzung des Trockner protokolliert Dazu wird eine Variable Kunden angelegt und vor dem Do Loop auf 0 initialisiert Jedesmal wenn der Motor gestartet werden soll wird Kunden 1 hochgez hlt und mit PrintLog ausgegeben Die Ausgabe wird dabei ganz raffiniert zusammengebastelt Zuerst die Textkonstante Kunde Nr dann durch amp verkn pft die aktuelle Kundenzahl dann wieder eine Textkonstante am und zum Schlu Now das Tagesdatum mit Uhrzeit das vom System bereitgestellt wird Das wars Und noch eine Spielerei CHOCO rN OCO A ENAA P
50. omponenten k nnen wie folgt bereitgestellt werden Zu 1 Ist auf den moderneren Windows System standardm ig installiert Zu 2 in mscFish30Setup EXE enthalten Zu 3 ist meistens installiert Version 4 reicht kann ggf aus dem Internet heruntergeladen werden www adobe de products acrobat readstep html Zu 4 ist meistens installiert kann ggf aus dem Internet heruntergeladen werden Ben tigt werden die Pakete scr56de exe f r Win 98 ME NT bzw scriptde exe f r Win 2000 XP www microsoft com germany scripting und dort rechts oben Windows Script 5 6 freigegeben und dann das Paket scd56de exe Stand M rz 2003 Zu 5 ist auf neueren Windows Systemen installiert Folgende Files werden als SharedFiles nach System32 installiert CMDLGDE DLL MSScript OCX COMDLG32 DLL SCRrnde DLL SCRrun DLL Einf hrung in die Programmierung mit mscFish Anhang 42 bergang zu anderen Sprachen der VB Sprachfamilie Ein bergang zu anderen Sprachen lohnt e wenn man seine Programme mit einer eigenen Oberfl che ausstatten will e wenn man komplexere Programme also ber die oben angegebenen paar Seiten hinauskommt erstellen will e Programme w nscht die ohne die IDE von mscFish laufen e oder man Wert auf eine komfortable Entwicklungsumgebung legt e und ist erforderlich wenn man Programme erstellen will die den Slave Extension Module oder mehrere Interfaces nutzen Dabei ist generell zu beachten da in diesem Fall
51. otors kann man sie zusammenfassen und alle Lampen auf einmal schalten N Bussampels3 VvBs 2 BINS onra Che Ampel Op tonv Exp verke Const mGruen amp Hl mGelb amp H4 mRot Const eFussWunsch 1 eGelbkBlinken 2 Do If GetInput eGelbBlinken Then Blinken ElseIf GetInput eFussWunsch Then Pause LO00 EA SetMotors mGelb Pause 2o ER SetMotors mRot mFuss Pause 1O00 EA SetMotors mGelb Pause 2507ER SetMotors mGruen Else SetMotors mGruen ENUA Ile COO Or e a E amp H10 mFuss amp H40 Sub Blinken SetMotors mGelb Pause 500 EA ClearMotors Pause 400 Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 17 ETGT ND Dazu mu man wissen das der Status aller M Ausg nge in einem OutputStatusword abgebildet werden kann jeweils zwei bit f r einen M Ausgang 00 00 00 00 die M Ausg nge M4 M1 sind abgeschaltet Es wird mit SetMotors an das Interface weitergegeben 00 01 00 00 amp H10 mRot in bin r Darstellung 01 00 00 00 amp H40 mFuss 01 01 00 00 mFuss ein mRot ein mGelb aus mGruen aus Dazu wurden die Lampen Konstanten entsprechend ge ndert Sie enthalten jetzt nicht mehr die Nummer des M Ausganges sondern die bit Position des M Ausganges im OutputStatusword Geschrieben wurde das in der k rzeren Hexa Darstellung m glich w re auch die dezimale Darstellung 1 4 16 und 64 die interne Darstellung ist immer bin r Wenn man das Programm noch versch nern will kan
52. position IstPosition wird Motor wieder abschalten und in Ruhe Schweissen Unterprogramm Schweissen WaitForPosUp z hlt die IstPosition solange hoch bis die Zielposition erreicht ist WaitForPosDown z hlt sie herunter Gez hlt werden Impulse am Taster elmpuls Um den Motor k mmert sich der Befehl nicht FishFace Referenz WaitForPosUp WaitForPosDown Das geht auch anders Einf hrung in die Programmierung 26 Relatives Positionieren Asynchrones Fahren De ze enwerr erobern u BE LoNn T EZO mer Conse MRODOC 1 mocher Ss Const eEnde 1 e Impuls 2 Do BeeMoror HRS OST Eur HEAKS WaitForInput eEnde SetMotor nIRoboR EReAmSs SetMotor MODOC ECER CA O EeP EO WaitForMotors 0 mRobot Schweissen SetMotor MRODSE Ser Erreche rare WaitForMotors mRobot Schweissen SetMotor MRONO LA OPE CERAR S ae e L E a WaitForMotors 0 mRobot Schweissen Eoopa ln ern Der Programmaufbau ist der gleiche aber der ach so bekannte SetMotor hat noch mehr Parameter als man so denkt SetMotor mRobot ftiRechts ftiFull 56 Die ersten Parameter sind bekannt ftiFull als Geschwindigkeitskeitsangabe ist auch schon mal vorgekommen Neu ist der letzte Parameter der gibt die Anzahl Impulse an die der Motor in die vorgegebene Richtung fahren soll Er tut das asynchron d h ohne da das Programm anh lt Deswegen das nachfolgende WaitForMotors mit dem auf das Erreichen der vorgegebenen Position gewartet wird ein Abschalten ist aber nicht e
53. rbliche Nutzung ist kostenfrei gestattet Haftung Software und Dokumentationwurden mit Sorgfalt erstellt eine Haftung wird in keiner Weise bernommen Dokumentname mscFishVBS doc Druckdatum 07 08 2003 Titelbild Einf gen Grafik AusDatei Office Fish12 WMF Einf hrung in die Programmierung mit mscFish Inhaltsverzeichnis 3 bersicht Allgemeines mscFish ist eine IDE Integrated Development Environment f r ftComputing auf Basis der Microsoft Sprachen VBScript JScript JavaScript und des ActiveX FishFa30 DLL Dabei wurden die Sprachelemente von FishFa30 DLL nahtlos in die Sprache VBScript JScript integriert In diesem Hanbuch wird der Umgang mit VBScript beschrieben Zu JScript siehe mscFish30JS PDF mscFish wurde bewu t einfach gestaltet um Programmier Anf ngern ein einfaches und in allen seinen Komponenten kostenloses Werkzeug zur Verf gung zu stellen mit dem im Selbststudium der Einstieg in die Welt der Programmierens gefunden werden kann Deshalb ist der Abschnitt Einf hrung in die Programmierung der wesentliche Teil dieses Buchs Man arbeitet ihn am besten in der vorgegebenen Reihenfolge durch Parallel dazu sollte man sich mit der Microsoft Dokumentation zu VBScript siehe Hilfe Dokumentation vertraut machen mscFish ist geeignet f r Programme im Umfang von ein paar Zeilen bis zu ein paar Seiten Die M glichkeiten der Kommunikation mit dem Bediener sind beit VBScript beschr nkt aber in diesem
54. rforderlich SetMotors setzt mit dieser Parameterliste einen RobotMotor voraus D h einen Motor mit festzugeordneten Tastern Bei M1 sind das E1 als Endtaster und E2 als Impulstaster Der Endtaster mu au erdem mit ftiLinks angefahren werden k nnen F r die weiteren Motoren gilt entsprechend M2 ES E4 M3 E5 6 WaitForMotors kann auch auf mehrere Motoren gleichzeitig warten Des OrSE ernste Reene Hr er SerMocSE rer ML Brenn real Wale RO EMOTO CS aO Eee MA Hier wird darauf gewartet da M1 123 Impuls mit ftiFull nach rechts und M4 34 Impulse mit ftiHalf nach links macht Die Positionsangaben sind relativ d h sie beziehen sich auf die aktuelle Postion Zun chst werden von IstPosition 0 ausgehend 56 Impulse nach rechts gefahren ZielPosition ist 56 dann 88 Impulse ZielPosition ist dann 56 88 144 Die n chsten 50 Impulse gehen nach links das ergibt eine ZielPosition von 144 50 94 FishFace Referenz RobMotoren SetMotor WaitForMotors Es geht aber noch einfacher auch wenns erstmal komplizierter ist Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 27 Absolute Positionierung Die hatten wir ja eigentlich schon in der ersten Version hier wird es viel komplizierter aber technisch anspruchsvoller gel st Verbunden mit einer Verlagerung in ein Unterprogramm wird die Nutzanwendung erstaunlich kurz und bersichtlich nr chwel So RODOR NV Do OPET EZP rei Const mRobot 1 mS
55. rgibt dann ein gewaltiges If bei dem die einzelnen Bedingungen durch And verkn pft sind alle Bedingungen m ssen aufeinmal wahr sein Achtung es werden hier Fortsetzungszeilen verwendet _ am Zeilenende Vor dem _ mu eine Leerstelle stehen Neu ist auch die For Next Schleife die die Anzahl der in EA vorgegebenen H be berwacht Vor jedem Hub wird die Lichtschranke nocheinmal kontrolliert und ggf kr ftig gemeckert und gehupt und mit Exit For die For Next Schleife und damit der Stanzvorgang abgebrochen Der einzelne Hub wird mit WaitForHigh kontrolliert WaitForHigh wartet dass eEnde erst auf False und dann auf True wechselt Das ist erforderlich da ein einfaches Warten auf True sofort zum Erfolg f hren kann da der Taster vom letzten Hub noch auf True steht Einf hrung in die Programmierung mit mscFish Einf hrung in die Programmierung 23 6 Nach jedem Stanzvorgang wird das Produktionsergebnis aufaddiert Es werden aber nur die erfolgreichen Stanzvorg nge gez hlt Dazu die Variable TeilOK die vor der For Next Schleife verdachtsweise auf True gesetzt wird und ggf bei Abbruch im Zuge des Meckerns auf False ge ndert wird 7 Die aktuelle Produktion wird in der Statuszeile und die Zwischenf lle werden im Log Fenster angezeigt FishFace Referenz WaitForHigh Beep VBScript Index For Next Anweisung Durchlaufen von Codeschleifen Findige Bediener werden der Sicherheitsma nahmen zum Trotz doch noch ihre
56. sWunsch 1 Do COEM COL Mensen ea If GetInput eFussWunsch Then Pause 1000 EA Lampen an M1 M4 SetMotor mGruen ftiAus gr n gelb rot Set Moor NE lo fikin Fu Gr n an der Seite D50 EA Taster 1 3 an E1 und E2 SarMoror meslo e ams See Me sera oc ee aan Pause TOOOF EA SetMotor naar ran Pause 2502ER Sol leisersnk oe ftiAus SetMotor mGelb ftiAus End If tooo Ua a S Das Programm ist weitgehend bekannt aber eine If End If Klammer ist hinzu gekommen und schon ist daraus eine Fu g ngerampel geworden GetInput eFussWunsch wartet auf das Dr cken der Tasters zur Anforderung einer Fu g ngerphase erst dann l uft es mit mGelb weiter eFussWunsch wurde vor der vorhanden Pause platziert um zu verhindern da sofort nach Ablauf einer Fu phase gleich wieder eine neue gestartet wird Was noch fehlt ist eine Fu g ngerampel da es am Interface ein wenig eng wird nur eine gr ne an M4 Das sieht dann so aus Do SEE MONO MOLUSC ea If GetInput eFussWunsch Then Pause 1000 EA SetMotor mGruen ftiAus SeENOEBOr INGE ln Frinn Pause ale SetMotor mGelb ftiAus SELL 2 IMRON Etien SetMotor mFuss ftiEin Pause TOOOFEA Ser MoOror moel FEIEN SetMotor mFuss ftiAus Pause 250r EA SC EMOCTOr MROE ftiAus Set Motor mGelb ftiAus mess KOOP nee Elself und Subs Nachts werden Ampeln oft auf Gelb Blinken umgestellt eGelbBlinken 2 Const eFussWunsch I Do If GetInput eGelbBlinken Blinken ElseIf
57. selber eine Instanz von FishFa30 DLL selber zu erstellen ist z B mit Set ft CreateObject FishFa30 FishFace Die Instanzvariable hier ft ist dann allen FishFace Befehlen voranzustellen Die Befehle die direkt auf die IDE zugreifen PrintLog PrintStatus ClearLog EA EB sind durch geeignete der jeweiligen Sprache zu ersetzen Die Befehle WaitForPosUP Down sind in WaitForPositionUP Down zu ndern Zu beachten ist das die Einarbeitung in die neue Entwicklungsumgebung Ausnahme VBScript pur einigen Aufwand verlangen wird Die Sprache Visual Basic und damit die in ihr geschriebenen Programme bleiben erhalten Beispiel f r Programme in anderen Sprachen finden sich auf www ftcomputing de VBScript pur Ist ohne Installation neuer Software m glich lohnt aber nur wenn man Programme ohne eigene Oberfl che erstellen will sie laufen dann unsichtbar im Hintergrund Zu beachten ist da sich die Befehle PrintStatus und PrinLog schlecht ersetzen lassen VBScript und HTML Wenn man Erfahrung mit der Erstellung von HTML Seiten und vielleicht auch Tools dazu hat ist es interessant Programme mit eigener HTML Oberfl che zuerstellen die die vorhandenen VBScript Routinen nutzen VBA Visual Basic for Applications Wenn auf dem Rechner bereits MS WinWord oder Excel installiert ist hat man mit VBA bereits ein vollwertiges Entwicklungssystem das auch die Entwicklung eigener Oberfl chen gestattet Lediglich der Zugang ber Win
58. uch an anderer Stelle liegen Man sollte im Zweifelsfall die Dokumentation zurate ziehen 10 Die IDE kann normalerweise ber den ENDE Button beendet werden w hrend des Programmlaufs ist er allerdings deaktiviert das Programm mu erst ber den HALT Button angehalten werden Die IDE greift beim Start einer Anwendung auf die Dateien Global VBS und Neu VBS im Progammverzeichnis zu Beide Dateien k nnen mit Vorsicht nach eigenen Bed rfnissen ge ndert werden Global VBS enth lt Konstanten die f r jede Anwendung gelten z B ftiEin ftiAus und Neu VBS enth lt das kleine Beispiel das bei Start der IDE angezeigt wird den Inhalt kann man schlicht l schen oder aber auch einen eigenen Standard Programmrahmen erfinden Anschlu des Interfaces Anschlu je nach Ger t an COM bzw LPT Stromversorgung 9V bzw 6V mit einem Netzteil das min 500mMA besser 1000 mA liefert das Netzteil sollte stabilisiert sein Die fischertechnik Netzteile erf llen meist diese Bedingungen Hinweis alte graue Motoren k nnen auch mit 9V am Intelligent Interface laufen Der Active Mode des Intelligent Interface wird nicht unterst tzt Slaves Extension Modules werden unterst tzt im Interface Panel wird z Zt aber nur das Master Interface angezeigt Einf hrung in die Programmierung mit mscFish bersicht 6 Einstellen der Interfacewerte Die Werte f r den Interfacebetrieb werden ber das Men Extras Optionen der IDE eingestellt
Download Pdf Manuals
Related Search
Related Contents
Piano Sicurezza Coordinamento "Analyzing Molecular Interactions". In: Current Protocols in WMD 1S INSTALLATION MANUAL - Custom Service Hardware Baldwin 183SPEXSPL SQR 15 SMT CP Instructions / Assembly «CME 840 VTR» Emtec 8GB Tom Safety, Operation & Maintenance Manual Manual de Copyright © All rights reserved.
Failed to retrieve file