Seite 1 von 1

#1 BMI Programmierung

Verfasst: Mo 17. Okt 2011, 15:45
von tk
Hallo zusammen,

ich habe da ein Problem mit meinem Bewegungsmelder im Gäste-WC:
Irgenwie geht das Licht immer mal wieder aus. Allerdings nicht reproduzierbar.

Woran merke ich das?
1. Meine Frau kommt genervt vom Klo
2. Mein Tochter (3 Jahre) ruft vom Klo: "Huch, das Licht ist aus!".

Ich habe das Ganze wie Folgt programmiert:

Code: Alles auswählen

+--+-------+-------+-------------------+--------------------------+
| 1|B4 lang|       |                   |                          |
+--+-------+-------+-------------------+--------------------------+
| 2|       |D8 lang|                   |                          |
+--+-------+-------+-------------------+--------------------------+
| 3|       |       |C7 lang            |                          |
+--+-------+-------+-------------------+--------------------------+
| 4|       |       |                   |A1: EIN / Rampe: 1 Sek.   | Licht ein
+--+-------+-------+-------------------+--------------------------+
| 5|       |       |                   |Sperre Taste A1 für 2 sek.| Taster für A1 sperren
+--+-------+-------+-------------------+--------------------------+
| 6|       |       |D Tasten-Timer stop|                          |
+--+-------+-------+-------------------+--------------------------+
| 7|       |C8 lang|                   |                          |
+--+-------+-------+-------------------+--------------------------+
| 8|       |       |M205: A8 lang      |                          |--> auf Modul 205
+--+-------+-------+-------------------+--------------------------+
| 9|       |       |                   |R4 für 240 Sek.           | Zirkulationspumpe
+--+-------+-------+-------------------+--------------------------+
|10|       |       |M205: A8 in 1 s    |                          |--> auf Modul 205
+--+-------+-------+-------------------+--------------------------+
|11|       |       |                   |Sperre A8 für 30 min.     | Pumpe soll maximal alle 30 Min. laufen.
+--+-------+-------+-------------------+--------------------------+
|12|B4 los |       |                   |                          |
+--+-------+-------+-------------------+--------------------------+
|13|       |D8 los |                   |                          |
+--+-------+-------+-------------------+--------------------------+
|14|       |       |sende D8 in 45 sek.|                          |
+--+-------+-------+-------------------+--------------------------+
|15|       |       |                   |A1: AUS / Rampe: 1 Sek.   | Licht aus
+--+-------+-------+-------------------+--------------------------+


("B4 lang" ruft "D8 lang" und "C8 lang", "D8 lang" ruft "C7 lang" und "Timer Tabelle D stop", ...)

Ich habe den Verdacht, dass dies an "überholern" im Bus liegt. Hier ein Auszug aus meinem Protokoll (per LinHK gezogen).
Die Kommandos habe ich durch "X"e und Kommentare ersetzt, da ich die hier ja nicht posten darf:

Code: Alles auswählen

[20111016 15:56:28.599923]  >M000012.xxxxxxxxxxxxxx M012      # Taste D8 lang -> C7 lang ; Timer D stoppen
[20111016 15:56:28.623255]  >M000012.xxxxxxxxxxxxxx M012      # Taste C8 lang -> Ziel: M000205 (Zirkulationspumpe)
[20111016 15:56:28.660282]  :M000012xxxxx G004                # Meldung: BMI auf B4 ein
[20111016 15:56:28.763626]  >M000012.xxxxxxxxxxxxxx M012      # Taste D8 los -> D8 kurz in 45 sek
[20111016 15:56:28.801525]  >M000012.xxxxxxxxxxxxxx M012      # taste C7 lang -> Ausgang 1 EIN; Sperren A1 für 2 sek.
[20111016 15:56:28.900270]  >M000012.xxxxxxxxxxxxxxx M012     # Sende Tabelle D  Taste 1-8 in 0 sek. (--> Timer stop)
[20111016 15:56:29.100718]  >M000012.xxxxxxxxxxxxxx M012      # Taste D8 lang -> C7 lang ; Timer D stoppen
[20111016 15:56:29.201453]  >M000012.xxxxxxxxxxxxxx M012      # Taste C8 lang -> Ziel: M000205 (Zirkulationspumpe)
[20111016 15:56:29.400941]  >M000012.xxxxxxxxxx M012          # A1 100% in 004 (1 sek?!)
[20111016 15:56:29.601419]  >M000012.xxxxxxxxxxxxxxxx M012    # Sperre Taste A1 für 2 sek.
[20111016 15:56:30.001330]  >M000012.xxxxxxxxxxxxxx M012      # taste C7 lang -> Ausgang 1 EIN; Sperren A1 für 2 sek.
[20111016 15:56:30.200819]  >M000012.xxxxxxxxxxxxxxx M012     # Sende Tabelle D  Taste 1-8 in 0 sek. (--> Timer stop)
[20111016 15:56:30.401259]  >M000012.xxxxxxxxxxxxxxxx >M012          # A1 100% in 004 (1 sek?!)
[20111016 15:56:30.501012]  >M000012.xxxxxxxxxxxxxxxx M012    # Sperre Taste A1 für 2 sek.
[20111016 15:56:30.701462]  >M000012.xxxxxxxxxxxxxxx M012     # D8 in 45 sek
[20111016 15:56:31.081448]  :M000012xxxxx G004                # Meldung: BMI auf B4 ein
[20111016 15:57:15.698007]  >M000012.xxxxxxxxxx M012          # A1 000% in 004 (1 sek?!)         
[20111016 15:57:17.085367]  :M000012xxxxx G004                # Meldung: A1 auf 000%



Wenn ich das richtig interpretiere wird hier um 15:56:30.200819 das Kommando 6 (Tabelle D Timer stop) vor Kommando 14 (D8 in 45 sek) um 15:56:30.701462 überholt.
Kann das sein?

Was kann ich dagagen machen?

Danke,
Thorsten

#2 RE: BMI Programmierung

Verfasst: Mo 17. Okt 2011, 18:06
von Uwe
Moin Thorsten,
jedes Modul sendet pro Sekunde maximal 5 Kommandos.
Wenn du einen solchen "Schwall" auslöst, kann im ungüstigsten Fall auch mal ein Kommando untergehen.
Du wirst also das senden der Tasten etwas "entzerren" müssen - notfalls mit 'sende Taste in 1 Sek.' auf den nächsten 'Intervall' verschoben.
Du kannst aber auch Tasten in/aus einem anderen Modul senden, dann können auch von dort wieder bis zu 5 Kommandos kommen (der Bus kann ja viel mehr).

Grüße, Uwe

#3 RE: BMI Programmierung

Verfasst: Mo 17. Okt 2011, 18:12
von Niko
tk hat geschrieben:Ich habe den Verdacht, dass dies an "überholern" im Bus liegt.
Überholen geht nicht, die Datenader ist einspurig :P . Aber im Modul gab es einen Vordrängler, insofern ist Deine Vermutung schon nah dran.

[zitat]Hier ein Auszug aus meinem Protokoll (per LinHK gezogen).
Die Kommandos habe ich durch "X"e und Kommentare ersetzt, da ich die hier ja nicht posten darf:[/zitat]Ein PRO-Protokoll wäre für die Allgemeinheit (die PCK nicht fließend sprechen oder gar kein LinHK einsetzen) leichter verständlich, aber vermutlich lief die PRO dann gerade nicht. Wie eigentlich immer, wenn W ein Fehler auffällt. :lol:

[zitat]Wenn ich das richtig interpretiere wird hier um 15:56:30.200819 das Kommando 6 (Tabelle D Timer stop) vor Kommando 14 (D8 in 45 sek) um 15:56:30.701462 überholt.
Kann das sein?[/zitat]Ja, weil hier dem BMI gewissermaßen "geprellt" hat. Aus irgendwelchen Gründen hat der BMI hier sehr kurz hintereinander LANG - LOS - LANG ausgelöst. Da Du insbesondere beim LANG sehr viele Kommandos hast, dauert die Abarbeitung schon mal etwas (Faustregel: ein Modul "schafft" fünf Telegramme pro Sekunde). Wenn dann die Kommandos ungünstig gewählt sind, kommt es hier schon mal zu einem "Überholen", so dass Dein D8 LOS als letztes ausgeführt wird -- 45 Sekunden später wird es dunkel.

[zitat]Was kann ich dagagen machen?[/zitat]Die Frage wäre zunächst, ob man hier etwas zeitlich entzerren kann. Die Zirkulationspumpe kann man vielleicht auch über das Statuskommando des Ausgangs schalten. Aber in jedem Falle, sollte man das wichtigste zuerst machen. Und was ist bei einem B4 LANG das wichtigste? Dass das Licht nicht ausgeht. Also muss das Stoppen des Tasten-Timers mindestens auf der gleichen "Ebene" erfolgen, wie das "Sende-Taste-verzögert".

Ein Vorschlag für D8 LANG:
Erstbelegung: D Tasten-Timer stoppen
Zweitbelegung: Tasten C7 und C8 LANG aufrufen (geht mit einem Kommando)

Schöne Grüße
Niko, der sicher auch noch ein paar solcher "Bugs" in der Parametrierung hat (aber wenigstens bei den BMIs sind sie weg)

#4 RE: BMI Programmierung

Verfasst: Mo 17. Okt 2011, 21:40
von tk
Hallo,

Uwe hat geschrieben:jedes Modul sendet pro Sekunde maximal 5 Kommandos.


ach so, das erklärt einiges...

Niko hat geschrieben:Ein Vorschlag für D8 LANG:
Erstbelegung: D Tasten-Timer stoppen
Zweitbelegung: Tasten C7 und C8 LANG aufrufen (geht mit einem Kommando)


ja, ich habe da mal bei einem Bierchen optimiert:

Code: Alles auswählen

+--+-------+-------------------+--------------------------+
| 1|B4 lang|                   |                          |
+--+-------+-------------------+--------------------------+
| 2|       |C8 lang ; D8 lang  |                          |
+--+-------+-------------------+--------------------------+
| 3|       |                   |A1: EIN / Rampe: 1 Sek.   | Licht ein
+--+-------+-------------------+--------------------------+
| 4|       |                   |205: C8 lang              | Zirkulationspumpe
+--+-------+-------------------+--------------------------+
| 5|       |                   |Sperre Taste A1 für 2 sek.| Taster für A1 sperren
+--+-------+-------------------+--------------------------+
| 6|       |D Tasten-Timer stop|                          |
+--+-------+-------------------+--------------------------+
| 7|B4 los |                   |                          |
+--+-------+-------------------+--------------------------+
| 8|       |sende D8 in 45 sek.|                          |
+--+-------+-------------------+--------------------------+
| 9|       |                   |A1: AUS / Rampe: 1 Sek.   | Licht aus
+--+-------+-------------------+--------------------------+


Mal sehen, ob es besser wird. Ich werde bei Gelegenheit mal berichten.

Danke für die schnellen Antworten.

Gruß,
Thorsten

#5 RE: BMI Programmierung

Verfasst: Di 5. Feb 2013, 12:29
von tk
Hi,

tk hat geschrieben:Mal sehen, ob es besser wird. Ich werde bei Gelegenheit mal berichten.


die Gelegenheit ist da:
Fuktioniert alles super :thumbup:

Gruß,
Thorsten