BLIND_INPUT, Automatik und manueller Betrieb?

Begonnen von wolfi3300, 16. Dezember 2007, 18:48:14

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 7 Gäste betrachten dieses Thema.

hugo

hi ich hab mir dein projekt heute näher angesehen, konnte es aber wegen reisen  noch nicht laufen lassen.

mir ist allerdings aufgefallen das die reihenfolge der abarbeitung nicht stimmt.
rechte maustaste / reihenfolge / nach datenfluß anordnen

probier mal ob es dann läuft

wolfi3300

Hallo!

Danke für den Hinweis mit der Reihenfolge! - Ich hatte mich eh schon gewundert, was es mit den Nummern auf sich hat, habe angenommen, dass CoDeSys das  von  Haus aus alles korrekt selber macht. Habe jetzt mal in der Hilfe nachgelesen, was das eigentlich ist! - Habe die Reihenfolge jetzt mal korrigiert und werde die Steuerung über Nacht mal unangetastet lassen. Mal sehen, was dann morgen früh passiert :-)

Grüße,
Opossum


hugo

bitte beachte das deine sps uhr auf utc (weltzeit) läuft sonst stimmen die zeiten nicht.

wolfi3300

#18
Hallo!

Ja, SPS-Uhr habe ich auf UTC eingestellt.

Ich habe jetzt bei meinem Projekt 2 Jalousien drinnen, mit denen ich letzte Nacht experimentieren wollte. Ich habe die SPS mit der neuen Routine geladen und gestartet. Ich habe dann nichts mehr gemacht, als bei einer Jalousie bei Blind_Input den "in"-Eingang für die Automatik auf True gesetzt. Der andere Block blieb unangetastet.

Beide Jalousien sind jetzt um UTC 8:17 unten. sun_rise wird mit 6:48 angezeigt.

Blind_Input liefert mit "in" auf False einen Status 134, der auch nach blind_night noch ansteht. E_night und E_day sind auf True.
Beim 2. Block, wo "in" auf True ist, steht ein Status 131 an, der auch bis zur Blind_Control ansteht.

Eigentlich sollte blind_night doch die Jalousie hochfahren? Vor allem dann, wenn ich doch den "in"-Eingang eh schon auf Automatik habe?

Ich hänge mein "Projekt" mal an, vielleicht hat ja wer Lust mal einen Blick drauf zu werfen :)

[gelöscht durch Administrator]

wolfi3300

Zitat von: hugo in 20. Dezember 2007, 15:42:07
blind night fährt nur dann automatisch hoch wenn die ganze nacht keine manuelle steuerung passiert ist.
also automatisch runter und am morgen automatisch hoch
sobald in der nacht ein manueller input berührt wird geht sie auch nicht mehr automatisch hoch.

BLIND_NIGHT fährt bei mir scheinbar gar nie hoch oder runter oder sonstwohin. Wenn ich diese Funktion weglasse, würde es nichtmal auffallen. Ich habe meine Steuerung jetzt bewusst 2 Tage nicht angerührt. Da fährt nichts automatisch hoch oder runter.

Ich habe unten mal den aktuellen Zustand meiner Steuerung als Screenshot angehängt. Was passt da nicht? Die Jalousien sind um 11 Uhr vormittags unten. Dort scheinen Sie auch auf ewig zu bleiben. Es ist auch egal ob bei BLIND_INPUT der Automatik-Modus anliegt oder nicht, es passiert einfach nichts.

[gelöscht durch Administrator]

hugo

sende mir bitte mal dein aktuelles projekt ich she es mir mal an

wolfi3300

Danke, - ich hängs hier mal an!

[gelöscht durch Administrator]

hugo

so habe folgendes gemacht:

1. habe den dt_in des blind_night vom sysrtcgettime abgetrennt und auf eine variable gelegt.
2. habe dann die jalousie hochgefahren auf pos 255
3. habe dann die 2 min timeout abgewartet.
4. habe dann die uhrzeit auf 1-1-1971 um 16:00 gestellt (mit variable forcen)

danach hat blind_night die jalousie runtergefeahren und als ich auf 07:00 morgens am 3.1 gestellt habe wieder hochgefahren.

mein tipp:
bitte setzte die sysrtcgettime ausserhalb von fb_jalouse... auch die bausteine sun_time und sun_pos.
das braucht dann deutlich weniger ressourcen und die position der sonne, uhrzeit datum und die sonnenaufangs und untergangszeiten gibst du dann an die fb's entsprechend weiter.
ich vermute das bei dir die uhr oder das datum nicht richtig läuft.
überprüfe bitte deie systemuhr und datum. sie sollten auf utc (weltzeit stehen.
keine sommerzeit)!
versuche es erst einmal indem du wie ich die uhrzeit und datum manuall eingibst und dann erst über sysrtcgettime.
vorsicht wago hat verschiedene libs für 16 und 32 bit targets. hast du das sysrtcgettime aus der richtigen lib genommen? beobachte mal den ausgnag von sysrtcgettime läuft dort die zeit? und das datum
vorsicht blind_night merkt sich das datum wann er zuletzt gelaufen ist, er läuft also nur einmal pro tag deshalb ist es wichtig das auch das datum funktioniert.


wolfi3300

Hallo Hugo,

danke für deine Bemühungen. Die Uhrzeit habe ich schon gecheckt, die Variablen liegen alle mit korrekten Daten an. Die Uhrzeit läuft auch in UTC.

Ich habe jetzt wie du empfohlen hast die ganzen Uhrzeit und Sonnenberechnungsroutinen in eine eigene Funktion gepackt und beschreibe damit Variablen um das besser testen zu können.

Jetzt habe ich aber plötzlich wieder den Effekt, das BLIND_INPUT nicht mehr in den Automatikmodus zurückfällt? Ich betätige nach dem Start des Programms die UP-Taste für die Jalousie, sie fährt hoch und Status ist 132. Und obwohl ich einen Timeout von 2 Minuten eingestellt habe, ist nach 5 Minuten noch immer kein Automatik-Timeout erfolgt. Status 132 liegt noch immer an, die UP-Line ist High.

Was hält mich hier so zum Narren?  :(


hugo

bist du sicher das die programmteile auch richtig ausgeführt werden?
hast du variablennamen vartauscht? überschrieben oder doppelt verwendet?

wolfi3300

Also ich habe jetzt meine weggesicherte Steuerung wieder eingespielt bei der das mit BLIND_INPUT schon funktioniert hatte. - Geht auch nicht mehr. Der Timeout klappt nicht mehr.  ??? Steuerung sogar mit Boot-Projekt neu beschrieben, stromlos gemacht, alles. Ohne Erfolg.

Hatte das Problem ja am Anfang schon mal, das war dann plötzlich weg ohne das ich wußte warum und jetzt hab ich mir's scheinbar wieder irgendwie eingefangen?? - Timeout eingestellt auf T#5min, nach 10 min. jetzt noch immer keine Reaktion von Blind_Input.

Kann ich der Funktion irgendwie auf die Finger schauen, was da passiert? Irgendwas debuggen? 

hugo

in deinem projekt finde ich keine task? welche task hast du definiert? wie oft läuft diese task?
ansonsten fange mit dem fb_jalousie_sued an und betreibe ihn erst einmal ganz alleine
dann häng stück für stück deine teile dazu

hugo

wieso hast du eigentlich einen fb_jalousie süd und west?
das kannst du doch einfach in einem block machen und dann zwei instanzen davon erzeugen

hugo

was machst du eigentlich mit den zahllosen globalen variablen?
vorsicht wenn irgendwo diese globale variable auftaucht kann das probleme geben weil daten aus einer instanz in eine andere geschrieben werden.
auf globale variablen sollte man eigentlich verzichten koennen.
die i/O definierst du ja bereits unter der steuerungskonfiguration.

wolfi3300

mir ist aufgefallen, dass last_act in der BLIND_INPUT mitläuft, sollte das nicht ein Merker sein, der sich die letzte Betätigung merkt und dann wird die Differenz errechnet? Wenn der mitläuft könnte ich mir vorstellen, dass der Timeout nie erreicht wird... !?

ich hab da 2 Blöcke gemacht, da ich ja die Konfiguration der Jalousienausrichtung nicht von aussen mitschicken kann? Wie bringe ich sonst die Ausrichtung da rein?