Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo, > danke für die Antwort, kann aber noch nicht ganz folgen...ich warte auf eine steigende Flanke > oder einen kurzen Impuls und setzte mein "busy". Das "busy" schaltet dann über die Funktion > "light()" das Licht ein, und der der Timeout-Timer startet. I.d.R kommt aber direkt nach der > steigenden Flanke die fallende Flanke. Dadurch wird der Timer für die Ausschaltverzögerung > gestartet. Das geschieht über detect=1. Wenn jetzt aber die steigende Flanke nur > über den Impuls erkannt wird, dann gibt es keine fallende Flanke und ich warte bis in alle Ewigkeit. > Also, irgendwie kann ich noch nicht folgen mit dem "Verodern" Hier mal der Code: > <code> > thread Monitoring > /******************************************************************************/ > /* IR-Port-Überwachung */ > /******************************************************************************/ > { > run 100; > wait (ports.get(ir) or ports.getcount(ir)>0) and !busy; //warten auf Unterbrechung > t1=system.timer(); //Zeitpunkt der steigenden Flanke in Variablen > busy=1; > wait !ports.get(ir)and busy; //warten auf Freigabe > t2=system.timer(); //Zeitpunkt der fallenden Flanke in Variablen > ports.getcount(ir); //Zähler am Port zurücksetzen > busy=0; > detect=1; //Impuls erkannt! > } > ... > function light () > { > ...... > } > if global.t2<=0 //nur wenn Timer 2 inaktiv > { > if ((check.Night() and(reed.busy or ir.busy)) or schalter.Read(0,1)) > { > time.Reset(1); //Timer zurücksetzten > global.set=1; //Licht "an" setzten > } > if check.Night() > if reed.detect or ir.detect //fallende Flanke an IR oder Reed > global.t1=global.timer1; //Timer 1 nur bei Nacht starten > reed.detect=0; //Flag zurücksetzetn > ir.detect=0; > } > if global.tflag1 or global.tflag2 or(!schalter.Read(0,1) and schalter.flag[0]) > { > time.Reset(1); > time.Reset(2); > global.set=0; //Licht "aus" setzen > schalter.Reset(0); > } > > if global.set > { > hsrel8.On(hsrel8.aussenlicht); > } > else > { > hsrel8.Off(hsrel8.aussenlicht); > } > } > </code> > > Gruß, > ChristianS. > > > > > > > Hallo, > > > ich habe die Sache jetzt umgestrickt und es funzt auch zu 98% ganz gut. Das fuchst micht > > > natürlich, da 100% das Ziel ist und es doch noch vorkommt, dass man durch die IR geht und > > > das Licht nicht einschaltet.Deshalb geht mir die Sache mit dem Zähler nicht aus dem Sinn. > > > Der ist so rattenschnell, dass selbst ein Schuss durch den Lichtstrahl, z.B. aus einer Schleuder, > > > erkannt wird. Das hätte ich nicht gedacht. > > > > > > Allerdings kann ich das in der Form nicht gebrauchen, da ich auf "fallende" und "steigende" > > > Flanke reagieren muss.. > > > Das Licht wird bei einer High-Flanke einschaltet,und bei der Low-Flanke starten ein Timer > > > der die Ausschaltverzögerung bestimmt. Da kann ich mit einem Zählimpuls erstmal nichts anfangen. > > > Außerdem messe ich noch die Zeit zwischen "High" und "Low"-Flanke, da der Lichtstrahl auch > > > unerwünscht unterbrochen werden kann, wenn z.B. Gegenstände dazwischengestellt werden, > > > oder, wie im letzten Winter, der Schnee zu hoch wird. Dann soll es später einen Timeout geben > > > und das Licht geht so lange aus, bis der Fehler behoben ist. Zusätzlich zur IR, gibt es einen > > > Reed-Kontakt an der Haustür (reed) und einen Schalter (ist ein Taster, deshalb schalter.flag) > > > der das Licht schaltet. > > > > Hallo Christian, > > so wie jetzt dein Problem verstehe reicht es doch wenn du die beiden Sachen "veroderst"... > > => bei sehr kurzen Impulsen Zählt dein Zähler => Licht für die entsprechende Zeit ein > > ODER > > => bei erkannten Flanken => Licht ein > > > > Bei blockierter LS kein Zähler und keine fallende Flanke... => kein Licht... > > > > > > nitraM
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB