Blind_Input mit Single Click

Begonnen von WAGO_SPS, 14. Januar 2015, 17:01:01

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

WAGO_SPS

Hallo, ich hab ein Problem mit dem Baustein Blind_Input!

Ich habe diesen mit Blind_night und Blind_control_S für meine Rolladensteuerung programmiert.

Nun möchte ich die Funktion von Blind_night nutzen und die Rollos abend runter und morgens rauf fahren zu lassen.

Abends fahren meine Rollos je nach Sunset runter. Das funktioniert auch.
Nur dann hab ich das Problem das ich den Taster 3x drücken muss um den Rollo wieder händisch nach oben zu fahren.
Warum erkennt der Blind_input nicht, dass der Rollo sich unten befindet und fährt dann bei einem Tastenklick nach oben??
Der bekommt ja über die Rückführung von Blind_Control_S die aktuelle Position.
Kann ich das irgendwie einstellen.
Und im Automatikmodus fahren mir die Rollos morgens nicht hoch obwohl E_Day und E_Night True sind.

Woran liegt das?

Den Master_Mode habe ich auf False. ist das richtig oder falsch?
Anbei noch ein Screenshot.

Vielen Dank schon mal im vorraus für die Antworten.

Gruß Tobias






[gelöscht durch Administrator]

mattsches

Hallo Tobias,

du hast vergessen zu erwähnen, dass du den BLIND_INPUT mit SINGLE_SWITCH=TRUE betreibst. Da hat er tatsächlich eine Lücke, POS wird nicht ausgewertet, um die von dir gewünschte Richtungsumkehr automatisch zu machen, wenn der Laden z. B. durch den BLIND_NIGHT geschlossen wurde. Dazu könnte man in den BLIND_INPUT eine Flankenerkennung auf POS <= 0 einbauen, die dann dir := TRUE setzt.

Damit der Laden morgens automatisch hochfährt, muss am BLIND_INPUT MASTER_MODE = TRUE sein.

Gruß,
mattsches

WAGO_SPS

Hallo mattsches,

ja ich meinte eigentlich nicht Single Click sonder Single_Switch.

Okay das mit dem Master_Mode = true probier ich aus, ob die Rolladen dann hoch gehen.
Mit dem anderen komm ich nicht klar, da muss ich ja den Baustein verändern oder?
Dazu sind meine Kenntnisse etwas zu wenig.
Kann man irgendwie aus dem einen Taster eine 2 taster Ansteuerung machen die dann die Stellung erkennt und dann gleich in die andere Richtung fährt, sodass ich den 2. Taster gwasi Softwaremäßig erstelle??
Wie könnte so was aussehen?

Gruß Tobias

NightWatcher

Hängen ich mich gleich mal mit dran. Vielleicht versuchen ich die Tage mal 1-2 Sachen. Dann stelle ich nen modifizierten Baustein zur Verfügung.

mattsches

Ihr könnte es ja mal mit der angehängten Variante probieren. Hab's nicht getestet, sollte aber funktionieren.

Bei REV_POS_OPEN/CLOSED einfach die Grenzwerte eintragen, ab denen die Bewegungsrichtung für den nächsten Tastendruck entsprechend gesetzt werden soll (z. B. REV_POS_CLOSED = 5 führt dazu, dass der nächste Tastendruck ein Öffnen bewirkt, wenn der Laden zuvor im Automatimodus auf POS <= 5 gefahren wurde).

Viel Spaß!

[gelöscht durch Administrator]

WAGO_SPS

Hallo Mattches,

also ich hab deinen Baustein mal eingefügt und getestet.
Als Grenze hab ich <5 für unten und >250 für oben eingegeben.

Funktioniert leider nicht.
Verhält sich wie der alte.
Erst beim 3. Klick fährt der Rollo nach oben.
Schade!

Gruß Tobias

mattsches

Kunststück, F_ und R_TRIG verwechselt...   ::)

Probier's mal so:

rev_pos_open_fp : R_TRIG;
rev_pos_closed_fp : R_TRIG;


Rest bleibt gleich.

Gruß,
mattsches

WAGO_SPS

Hallo Mattsches,

also jetzt bin ich endlich mal zum testen gekommen.

Ja wenn ich das ändere F_ und R_TRIG, dann funktioniert es.
Vielen dank dafür!!

Wie kann ich denn den Baustein in der Bibilothek verändern?
Eigentlich müsste ich den Baustein doch nur in der Bibliothek ändern, dann sollte er das für das ganze Projekt übernehmen?
Ich habe jetzt im Moment deine Lösung als neuen Baustein eingefügt.

Wenn ich aber die Bibliothek oscat_building_100  öffnen will in Codesys, dann findet er folgende Bibliotheken nicht:

\\.psf\Home\Documents\TeamDrive Spaces\OSCAT_DEV\OSCAT_LIBRARY\oscat.lib 2.2.11 19:48:25

Online habe ich da auch nichts gefunden.
Was kann ich hier machen??


Dann hab ich noch ein Problem:
Wenn der Rollo automatisch runtergegangen ist und ich einen Handeingriff über Blind_Input mache,
dann geht er morgens nicht mehr automatisch hoch.
Wie kann man das ändern, dass er egal ob er automatisch oder per Hand geschlossen wird einfach am morgen einen Impuls zum hochfahren bekommt??



Gruß Tobias


mattsches

Hallo Tobias,

eigenartig, bei mir wird auf die oscat_basic_333.lib verwiesen. Und die findet er auch, da sie im Bibliotheks-Verzeichnis von Codesys (bzw. TwinCAT) liegt.

Normalerweise kannst du den Fehler beim Öffnen aber quittieren und dann im Bibliotheksmanager ggf. die oscat_basic (rot markiert) rausnehmen und die bei Dir installierte dafür rein.

Grundsätzlich handhabe ich das bei allerdings tatsächlich so, dass ich veränderte Bausteine unter neuem Namen im lokalen Projekt speichere. Die Bibliothek lasse ich unberührt. Grund: Dann habe ich im Zweifel immer noch die Originalversion greifbar. Wenn du einfach BLIND_INPUT mittels global suchen/ersetzen durch BLIND_INPUT_S ersetzt, wird überall der neue Baustein verwendet.

Wegen des automatischen Hochfahrens: Schau dir mal den BLIND_NIGHT an und darin den Kommentar in der zweiten Zeile. Dann sollte schnell klar sein, wie du das Verhalten wie gewünscht abändern kannst.

So ein bisschen Pfadfinderehrgeiz muss ja sein.  ;)

Gruß,
Mattsches

NightWatcher

Ich werde den Baustein auch spätestens am WE testen. Aber wenn er bei Tobias klappt, nehme ich stark an, dass er hier auch funktioniert.

@Tobias Problem, das habe ich auch, aber aus Faulheit noch nicht gelöst, da noch andere Sachen auf dem Tisch liegen.

Liegt einfach daran, dass du durch den manuellen Eingriff an PO 0 (bzw. deinen angefahrenen Wert) anliegen hast. Der Blind_Night schleift morgens einfach PI nach PO durch. Da dann dort aber eben auch 0 anliegt (durch deinen Eingriff), fährt der Rollladen nicht.

Meine Idee war einfach, dass er nachts unabhängig davon immer an PO des Blind_Input 255 anlegt. Mir ist noch kein Szenario eingefallen, dass er morgens NICHT wieder hochgehen sollte. Wenn doch, könnte man dies mit nachgeschalteten Bausteinen (z.b. SET oder Security) steuern.

mattsches

@NightWatcher: Du hast Recht, so trivial ist das gar nicht. Und die Zeile im BLIND_NIGHT, auf die ich verwiesen hatte, sollte besser drin bleiben. Wenn man den Rollladen nachts manuell hoch fährt, geht es sonst wieder runter, sobald der MANUAL_TIMEOUT rum ist. Und das möchte man in dem Fall wahrscheinlich nicht.

Knackpunkt ist der BLIND_INPUT mit seinem MASTER_MODE = TRUE. Dadurch gibt er an seinem PO immer die manuell angefahrene Position aus (was in vielen Situationen genau hilfreich ist, ich verwende ihn auch so). Letztlich muss dem BLIND_INPUT also beibringen, dass er bei Abschalten des BLIND_NIGHT seinen PO auf den gewünschten Wert setzt (vermutlich 255). Das ginge durch Abgreifen des STATUS hinter dem BLIND_NIGHT, Vergleich auf <> 141, positive Flanke (R_TRIG) und Verschalten des Ergebnisses an BLIND_INPUT.IN. An BLIND_INPUT.PI muss dann nur noch die gewünschte Position (=255).

Verwirrend? So:



Sollte eigentlich funktionieren.

[gelöscht durch Administrator]

NightWatcher

#11
Ich vermute fast, dass es nicht so einfach ist. Er würde ja nun immer den In Triggern, wenn sich der Status ändert und nicht 141 ist.

Was passiert bei deiner Schaltung, wenn du über den Blind_Input S1 oder S2 betätigst?

EDIT: Habe deine Schaltung gerade noch mal verinnerlicht. Könnte doch klappen. Habe mal wieder zu weit gedacht. Ich baue es ein, damit man es unter Real Bedingungen feststellen kann :-)

mattsches

Jau, du hast Recht, das wird wohl (leider) nicht so gehen.

Die Flankenerkennung ist nicht das Problem, der Vergleich auf <>141 bleibt true, auch wenn sich der Status von z. B. 132 auf 131 ändert. In dem Fall wird also keine positive Flanke erkannt, BLIND_INPUT.IN bleibt false. Aber der Handeingriff über S1/S2 führt ja selbst bereits dazu, dass der Status <>141 wird. Damit verpufft der Wert an BLIND_INPUT.PI. Man muss wohl doch tiefer eingreifen...

NightWatcher

Zur Info,

Ich habe den Baustein BLIND_NIGHT erweitert. Teste den heute Nacht mal und gebe morgen (hoffentlich) Feedback.

Sollte es klappen, stelle ich Ihn hier für alle zur Verfügung.

NightWatcher

@mattsches,

hast du deine Schaltung selbst mal getestet? Ich vermute, dass mein Task zu schnell läuft. Morgens geht der Rollladen nämlich NICHT hoch, nachdem ich nachts einen Manuellen Eingriff hatte.

Habe den Task nun mal auf 30ms gestellt. Mal sehen, ob das hilft.