BLIND_INPUT, Automatik und manueller Betrieb?

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

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 10 Gäste betrachten dieses Thema.

wolfi3300

Zitat von: hugo in 29. Dezember 2007, 23:36:29
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.

Diese ganzen globalen Variablen verwende ich zur Kommunikation mit IPSYMCON, damit ich das ganze über eine Visualisierung steuern kann. Das sind virtuelle Taster und die Variablen zum Rücklesen des Jalousienstatus über MODBUS.

Weiß nicht ob man das irgendwie anders realisieren kann. Bis jetzt klappt die Kommunikation eigentlich recht gut. Bis auf die Jalousienfunktionen hab ich keine Troubles (dafür aber mit denen um so mehr *gg*)

wolfi3300

Zitat von: hugo in 29. Dezember 2007, 23:29:56
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

oha, wieder was neues. Task definieren? Das habe ich bis jetzt noch nicht. Aber irgendwie lief ja schon alles über das PLC_PRG ?? Wird das nicht von Haus aus immer wieder zyklisch abgearbeitet? - Wenn das nicht wäre, dann würden ja auch meine ganzen Lichtroutinen nicht funktionieren?

Ich glaub ich schlaf jetzt mal drüber und werd morgen wieder weiterkämpfen...

hugo

bitte fang mal ganz unten mit einer jalousie an und versuch das zum laufen zu bekommen.
baue danns chritt für schritt das ganz in dein programm ein. dann sollte sich schnell zeigen wo das problem liegt

wolfi3300

#33
Also ich habe jetzt alles rausgelöscht und nur mehr ein Blind_INPUT in der Steuerung gelassen.

Starte ich das Programm ist der Status auf 134, die Position ist 0. Danach ziehe ich UP kurz auf 1, die Jalousie fährt in Pos 255, Status ist dann 132. Timeout ist 1 Min. Danach passiert einfach nichts mehr. Ich habe keine Ahnung was ich hier noch falsch machen kann. Es geht einfach nicht. Das ist genau das Problem, mit dem ich den Thread angefangen habe, da wollte die Blind_Input auch schon nicht zurückfallen. Dann gings plötzlich und ich hing bei der BLIND_NIGHT, weil die nichts tat.

Ich hänge das Pro-File nochmal an...

[gelöscht durch Administrator]

hugo

hab dir in der taskconfiguration die entsprechende task angefügt.
ich habe getestet indem ich im programm prg_jalousieen die input mit doppelclick verändert und mit F7 geforced habe.
da funktioniert alles bestens.
ich denke das irgendwas bei deinen globalen vars schiefgeht.
häg einfach mal einen taster direkt dran ohne die globalen vars.
die labels die du bei der steuerungskonfiguration bei den inputs / outputs eingefügt hast sind bereits globale variablen. du musst nicht mehr mit at % machen !! lösche bitte mal zum testen alle globale vars

[gelöscht durch Administrator]

hugo

ich vermute mal das irgendwoher diene globalen vars kurz auf true gehen oder sowas das würde das verhalten erklären warum input nicht mehr auf auto schaltet

wolfi3300

#36
Zitat von: hugo in 30. Dezember 2007, 00:29:56
ich vermute mal das irgendwoher diene globalen vars kurz auf true gehen oder sowas das würde das verhalten erklären warum input nicht mehr auf auto schaltet

Auch das kann ich mittlerweile ausschließen. Habe jetzt nur noch 2 Eingänge von der WAGO IO an BLIND_INPUT anliegen und keine anderen Variablen mehr. Noch immer kein Timeout. Status bleibt auf 132. - Was hat es mit dieser "last_act" Variable in BLIND_INPUT auf sich? - Die ändert sich ständig. Kann es sein, dass die eigentlich still stehen sollte?

Hab ich irgendwelche Diagnosemöglichkeiten, oder kann ich nur akzeptieren, dass die Funktion einfach nicht funktioniert?

hugo

send mir nochmal deinen letzten stand wir bekommen das schon hin
mein problem ist nur ich kann es im moment nicht nachvollziehen

wolfi3300

Was so ein "Drüberschlafen" nicht alles bringen kann. Heute morgen hatte ich noch eine Idee und tatsächlich scheint es damit zusammenzuhängen...

Also:
Mir ist ja aufgefallen, dass nach dem Betätigen von BLIND_INPUT für die zuletzt betätigte Richtung der Ausgang immer auf High bleibt. - Wenn aber ein Ausgang auf HIGH ist, zählt auch diese last_act-Variable immer mit. Scheinbar denkt BLIND_INPUT dass ständig ein Tastensignal anliegt und kommt nie in den Timeout.

Mir ist weiters aufgefallen, dass BLIND_INPUT den Ausgang wieder auf Low zieht, wenn ich die selbe Richtung nocheinmal betätige. Dann stoppt auch die last_act und der Timeout wird korrekt aktiv.

Für mich sieht das aus wie ein Bug in der BLIND_INPUT, nur verstehe ich dann nicht, wie das bei anderen klappen kann?

Hier noch mal der letzte Stand als PRO-File:

[gelöscht durch Administrator]

wolfi3300

#39
Nachdem ich nun weiß, wie ich tricksen muß, um in den Automatikmodus zu gelangen, habe ich mich jetzt nochmal mit meiner ursprünglichen Steuerung auseinandergesetzt und auch versucht über das Forcen der Zeitvariable dem Problem mit BLIND_NIGHT auf die Spur zu kommen.

Ich habe es so gemacht wie du. Ich habe das Programm gestartet, Jalousie hochgefahren, Timeout abgewartet und danach die UTC Variable auf DT#2007-01-01-22:00 gesetzt. - Das sollte also zweifelsohne als Nacht durchgehen.

BLIND_NIGHT reagiert aber nicht darauf, die Jalousie wird nicht heruntergefahren. - Ein Blick auf die internen Variablen von BLIND_NIGHT zeigt mir dann die Variable "night" die auf FALSE steht? - Scheinbar erkennt BLIND_NIGHT also gar nicht, das Nacht ist und reagiert somit gar nicht? Warum kann diese Variable FALSE sein?

Überhaupt kann ich mit dem Zeiteingang machen was ich will. Das Datum wird nie in last_night oder last_day übernommen.

Ich hänge den Zustand meiner Steuerung mal als GIF an.

[gelöscht durch Administrator]

hugo

schon mal vorab eine erste antwort.
das verhalten der steuerung auf anschlag zu laufen hängt mit dem sogenannten click_mode zusammen.
wenn diese config variable auf true ist reagiert blind_input auf kurze tastendrücke indem es solange läuft bis mit einem 2ten kurzen tastendruck die bewegung abgebrochen wird.
click_mode true und click time legen dabei das verhalten fest.
das click verhalten kannst du abschalten indem du die variable click_mode auf false setzt.
allerdings scheint der baustein hier noch ein problem zu haben denn er sollte auch im click betrieb am ende abschalten und wieder den automatik modus zulassen.
das werden wir in der nächsten release korrigieren.
nähere beschreinung des click modes siehe manual

schalte bitte bei dir mal den click mode ab.

wolfi3300

Hallo!

Das mit dem Clickmode=TRUE werde ich vorerst mal so lassen. Das ganze läuft bei mir eh noch nicht echt an den Jalousien, - da muß ich dann wenn die Steuerung läuft erst noch das Haus rundherum bauen. Das wird dann so in ca. einem Jahr stehen, bis dahin ist dieser Schönheitsfehler bei BLIND_INPUT sicher auch behoben. Derweil clicke ich halt einfach in der Endposition nochmal kurz drauf.

Meiner Meinung nach wäre es gut die BLIND_INPUT auch mit einer T_UD belegbaren Variable am Eingang  wie bei BLIND_CONTROL zu versehen? Somit könnte man dann beim Funktionsblock für die Jalousienroutine einmal eine Variable mitschicken, die dann für BLIND_INPUT und BLIND_CONTROL die Zeit angibt.


hugo

die variable kannst du in st immer mitgeben, nur im grafischen editor wird die var_config nicht angezeigt und muss durch doppelclick gesetzt werden. das erhöht die übersicht im grafischen designer.
in st kannst du die variable genauso wie jede andere input variable behandeln
in der nächsten release werden wir für blind_input einen timeoput in den clcik mode einbauen

hugo

versuchs mal bitte mit der folgenden test_lib anstelle von oscat.lib

im blind_input gibt es nun einen timeout für den click mode der legt fest wann der cliock mode beendet wird wenn nur einmal eine taste gedrückt wird. er behebt also auch dein oproblem der ewigen auf oder ab

[gelöscht durch Administrator]

wolfi3300

Hallo!
Hätte versucht sie dem Projekt hinzuzufügen, nachdem ich die oscat 2.4 rausgelöscht habe. CoDeSys erkennt sie scheinbar aber nicht als korrekte Library. Es kommt eine Fehlermeldung: "Die ausgewählte Datei 'jalousie_test.lib' enthält keine gültige Bibliothek.