'Änderung 1.8.2002 'Alle Manuell-Funktionen von Tastbetrieb (Funktion solange wie gedrückt) auf Impulsbetrieb umgestellt 'Steuerung für Torantrieb '************************** 'P1 = Funkschaltung 'P2 = Taster für Handschaltung ' 'P3 = Sensor "Tor auf" 'P4 = Sensor "Tor zu" ' 'P6 = NOTAUS ' 'K1 = Relais für "zufahren" 'K2 = Relais für "auffahren" 'F2 = manuell zu ( Tastfunktion ) 'F3 = manuell auf ( Tastfunktion ) 'F4 = manuell stop (Tastfunktion ) 'Änderung von 4 nach 5 'statt F1, F2 und F4 werden jetzt F2, F3 und F4 zur manuellen Steuerung benutzt 'Weil F1-Taste evtl. defekt ist. '**** Zur Simulation unter CCBasic/Win32 'Unter Ansicht die Anzeige der Digitalports aktivieren (Alt+5) 'Dort müssen die Eingangsport 1-4,6 und 9-12 geschaltet werden 'Dazu bei gedrückter Umschalttaste auf die LEDs über diesen 'Ports klicken. Anschliessend innerhalb des Digitalports-Fensters 'mit der rechten Maustaste klicken und im Popup-Menü die Option '"Als Anfangseinstellung nach Reset verwenden" anklicken. 'Nun kann das Programm kompiliert werden: Menü "Entwicklung" Option '"Compilieren". Es sollte kein Fehler gemeldet werden. 'Das Meldungsfenster schliessen! 'Das Programm dann im Menü "Simulator" mit der Option "Ausführen" 'starten. Hier kann das Programm auch angehalten werden. Oder aber 'in dem man auf die grüne LED über der 6 im Digitalportsfenster 'klickt. Dies ist der Notstop-Port 'Durch Anklicken der einzelnen LEDs kann man die verschiedenen 'Eingänge schalten und so Funktaster etc. simulieren. 'Um einen Schalter (zB Endschalter) fest einzuschalten, muss man 'bei gedrückter Umschalttaste auf eine LED klicken. 'Wenn die LED (im Digitalports-Fenster) 7 rot leuchtet, fährt das 'Tor zu. Die LED 8 zeigt Auffahren an. 'Während der Handsteuerung mit ManZu, ManAuf und ManStop werden 'keine Prüfungen auf Endschalter oder Notaus durchgeführt!!! 'Geändert 1.8.2002: 'Mit der Handsteuerung kann jederzeit gesteuert werden. Die Endschalter 'etc. werden ebenfalls abgefragt 'Definitionen: define i_funk port[1] 'Funktaster define i_taster port[2] 'Handschalter define i_torzu port[3] 'End-Schalter "Tor ist zu" define i_torauf port[4] 'End-Schalter "Tor ist auf" define i_notaus port[6] 'Notaus-Taster define o_zu port[7] 'K1 define o_auf port[8] 'K2 'define i_manzu port[9] 'Folientaster F1 define i_manzu port[10] 'Folientaster F2 define i_manauf port[11] 'Folientaster F3 define i_manstop port[12] 'Folientaster F4 define led13 port[13] define led14 port[14] define led15 port[15] define led16 port[16] 'Variablen define An_Aus Byte 'Zum Speichern der Bewegung '0=Stop, 1=Bewegen define Auf_Zu Byte 'Für Richtung 'Hiermit wird mit jedem Umschalten jeweils eine 1 addiert 'Bei 5 wird wieder auf 1 gesetzt '1 und 2 = Auf (Auffahren=1) '3 und 4 = Zu (Auffahren=0) 'Port 13-16 = LED über F1-F4 define Auffahren Byte 'Damit sieht es schöner aus 'Auffahren=0 = Zufahren, Auffahren=1 = Auffahren 'starteinstellung An_Aus=0 Auf_Zu=0 '1,2 -> Auffahren=1=Auffahren , 3,4 -> Auffahren=0=Zufahren Auffahren=1 pause 5 o_auf=0 o_zu=0 'Programmbegin 'u_ = Unterroutine 'o_ = Ouput-Port (Motoren) 'i_ = Input-Port (Taster) 'Alle Eingänge sind aktiv Low. Das heisst im offenen Zustand (nicht gedrückt/betätigt 'steht eine Eins (ON) am Port. Wenn man das Drücken einer Taste abfragen 'möchte, muss man auf Null (OFF) prüfen. 'Bei den Eingängen 1,2,6 und 9, 10 und 12 sind als Taster programmiert 'Die Endschalter an 3 und 4 sind als Schalter programmiert 'Mit NOTAUS wird gestoppt und das Programm läuft nicht mehr! 'Zum Starten muss Reset und dann Start gedrückt werden. #loop if not i_torauf and An_Aus=1 then gosub u_torauf 'Endschaltung Auf erreicht if not i_torzu and An_Aus=1 then gosub u_torzu 'Endschaltung Zu erreicht if not i_funk then gosub u_funk 'Funktaster gedrückt if not i_notaus then goto u_notaus 'Notaus gedrückt if not i_manzu then gosub u_manzu 'Manuell Zu (F2) gedrückt if not i_manauf then gosub u_manauf 'Manuell Zu (F3) gedrückt if not i_manstop and An_Aus=1 then gosub u_manstop 'Manuell Zu (F4) gedrückt if not i_taster then gosub u_funk 'Handtaster geht wie Funk goto loop #u_manstop pause 5 wait i_manstop gosub fahrstop return #u_manzu pause 5 wait i_manzu gosub fahrzu return #u_manauf pause 5 wait i_manauf gosub fahrauf return #u_notaus pause 5 wait i_notaus gosub fahrstop end 'Notaus kann nur Reset und Start wieder verlassen werden!!!! #u_funk pause 1 if i_funk then return 'Taste immer noch gedrückt?, wenn nicht dann zurück 'wait i_funk 'Warte, bis Taster losgelassen wird gosub umschalten if An_Aus=1 then gosub u_bewegen else gosub fahrstop wait i_funk return #umschalten 'Toggle An/Aus if An_Aus=1 then An_Aus=0 else An_Aus=1 'Bitweise 0011 links rollen Auf_Zu=Auf_zu + 1 if Auf_Zu>4 then Auf_Zu=1 if Auf_Zu > 2 Then Auffahren=0 else Auffahren=1 return #u_bewegen if Auffahren=1 then gosub fahrauf else gosub fahrzu return #u_torauf pause 5 'Warte, wegen Kontakprellen 5x20ms 'wait i_torauf 'Warte darauf das Taster immer noch betätigt 'Fährt das Tor gerade auf? Wenn ja, stoppen if Auffahren=1 then gosub fahrstop 'Motor steuern 'Richtung "Zufahren" vorbelegen Auf_Zu=2 'Beim nächsten Tastendruck wird um 1 erhöht und Zufahren aktiviert return #u_torzu pause 5 'wait i_torzu 'Fährt das Tor gerade zu? Wenn ja, stoppen if Auffahren=0 then gosub fahrstop 'Motor steuern Auf_Zu=4 'Siehe u_torauf return #fahrauf 'Ist das Tor schon am Endschalter? if not i_torauf then return An_Aus=1 Auffahren=1 o_zu=0 o_auf=1 return #fahrzu 'Ist das Tor schon am Endschalter? if not i_torzu then return An_Aus=1 Auffahren=0 o_zu=1 o_auf=0 return #fahrstop An_Aus=0 o_zu=0 o_auf=0 return