|
Vergleich von WinLogo mit MSWLogo
Problemstellung : Ampel für einen Fußgängerüberweg mit Bedarfssteuerung.
Verwendet wurde das parallele fischertechnik Interface 30 520(WinLogo), bzw. das serielle
30 402(MSWLogo). Schaltung als Motor (beide Pole einer Lampe an dem Motorausgang). In der
Tabelle Lösungsausschnitte der Programmiersprachen
MSWLogo 6.4(Treiber MswFish.DLL) und WinLogo 2.0(Treiber Fischer.DLL). Die vollständigen
Programme sind in Schule.ZIP zu finden. Für den Betrieb des
seriellen fischertechnik-Interfaces (30 402) für WinLogo gibt es hier einen Treiber comFish.ZIP
Am auffälligsten ist der Unterschied der Befehlworte, der zu Verwirrung beim Wechsel zwischen den Sprachen führt (MSW pr kommt von print, WinLogo DZ kommt von DruckeZeile). Auch Unterschiede bei der Behandlung von Strings [] - "" erschweren den Wechsel. Auch das if schreibt sich anders (if / ifelse - Wenn Dann). Die englische Namen der Prozeduren in MSW sind natürlich nicht erforderlich - aber ich traue den Umlauten in engl. Versionen nicht. Die Prozedur Ampel bzw aaa startet das Ampelprogramm. Der indirekte Start der MSW-Lösung, ist erforderlich, da hier die Treiber nicht in die MSWLogo-Umgebung integriert sind und zu Beginn geladen und gestartet werden müssen (es sind natürlich auch andere programmtechnische Lösungen möglich, diese ist übersichtlich). Die Fußgängerphase wird durch Schließen von E1 gestarten, solange wartet das Programm bei Auto-Grün. FussPhase steuert den Ablauf einer Fußgängerphase (mit Verzögerung bei der Anforderung der Phase, die Pausewerte sind 1/1000 (MSW) bzw 1/10 (WinLogo) Sek.) Hier sind die Unterschiede gering, da in allen Fällen fast vollständig mit den gleichen Prozeduren gearbeitet wurde (Die Ausgabe der Nachrichten hätte natürlich auch noch in ein Prozedur verlagert werden können (und sollen?)). Die Prozeduren zur Schaltung der Lampen sind trivial :
WinLogo bietet in die Sprachmenge integrierte Befehle zur Ansteuerung der Interfaces an, die auf Treiber mit vorgegebener Struktur abgebildet werden :
zB.: pr GelbAus MSWLogo bietet eine allgemeine DLL-Schnittstelle, die im Falle ftSetMotor so aussieht : to ftSetMotor :MotorNr :Direction bei der die Funktion ftSetMotor auf die in mswFish.DLL vorhandene Funktion mswSetMotor abgebildet wird. Die Prozedur YellowOff entspricht dann wieder der WinLogo Lösung : to YellowOff |