Bacnet-Objekt schaltet hin und her

Klimamensch

Level-1
Beiträge
36
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe einen Wago-Controller 750-831, mit dem ich Werte per BACnet in ein Netzwerk übergebe. Mit dem Wago BACnet Configurator überwache ich, ob die BACnet-Objekte, die von Wago-Controller erzeugt werden auch sichtbar und korrekt sind.

Nun habe ich folgendes Problem:

Ich habe einen BACNET_BINARY_VALUE, der vom Wago-Controller erzeugt wird. Im Present_Value steht eine "1", also "AN" "TRUE" oder wie auch immer man es bezeichnen möchte. Der Wert ist im Wago Bacnet Configurator lesbar, ist aber mal "1" und dann wieder "0", obwohl im Wago-Controller immer "1" steht. Das ganze wechselt ziemlich unregelmäßig hin und her. Die Phasen der "0" sind jedoch länger als die der "1".

Was passiert hier?
Wer hat eine Idee für einen Lösungsansatz?
 
Hast Du das Objekt mit einem anderen Objekt eines externen Gerätes verknüpft?
Schau Dir mal das gesamte Priority Array an, vielleicht es zyklisch überschrieben, bevor es die SPS wieder überschreibt.
Welchen Wert hast Du in relinquish default stehen?

Schöne Grüße
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eventuell schreibst du in zwei unterschiedlichen Tasks mit unterschiedlicher Zykluszeit auf die selbe Variable, was ein Flickern bewirkt.
Aktualisiert wird im Configurator aber nicht so schnell, daher wechselt der Zustand nur langsam und unregelmäßig.

Flo
 
Es ist tatsächlich so, dass die globale Variable, also das Bacnet-Objekt, mit jedem Einzelzyklus zwischen "an" und "aus" wechselt. Mein Funktionsblock gibt allerdings bei jedem Einzelzyklus den Wert "an" an das globale Bacnet-Objekt weiter.

Jedes Mal, wenn ich einen Einzelzyklus durchlaufen lasse, blinkt im WAGO Bacnet Configurator der Present_Value und das Priority_Array auf. Das ist wohl ein Zeichen für die Wert-Änderung. Im Priority-Array steht im Fall "aus" in jeder der 16 Zeilen null. Nur wenn der Fall "an" eintritt, steht in der letzten Zeile der Wert "an". Mir scheint der Fehler liegt irgendwo im Priority_Array, zumal ich noch kaum damit gearbeitet habe und mir die Funktion des Arrays noch nicht ganz klar ist.

Ich würde mich über weiter Hilfe freuen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du 16mal "null" drin stehen hast, wird der Present Value mit dem relinquish default überschrieben, hier steht vermutlich "Aus" drin.
Setze den relinquish default auf "Ein" und Du hast das Problem nicht mehr.
Spaß bei Seite das wird Dein Problem nicht lösen.

Das Problem scheint zu sein, dass der Wert den Du aus dem Programm schreibst nicht durchgehend geschrieben wird. Warum dass so ist, kann ich leider momentan nicht sagen.
Hast Du das Objekt mit einem anderen Objekt eines anderen Gerätes verbunden?
Kann er sein, dass der Present Value woanders im Programm nochmals beschrieben wird?
Wird die Task zyklisch aufgerufen?
 
Ich habe nun folgende Änderung vorgenommen, die funktioniert.

Ich wandele nun einen boolschen Wert nur noch in einen BacnetbinaryPV um und schreibe den Werte dann in den Present-Value des global definierten Bacnet_Binary_Values. Das heißt, ich schreibe mit jedem Zyklus nun kein komplett neues Bacnet-Objekt, sondern greife nur noch auf den Present_Value des bestehenden Objekts zu. Ich hoffe das ist so verständlich beschrieben.

Diese Variante funktioniert und ich werde sie nun auch so im gesamten Programm umsetzen. Warum das der Fall ist, kann ich mir aber nicht erklären.

Im Anhang findet sich noch ein Bild, das das oben Beschriebene noch mal erläutern soll.

Das Problem ist vorerst für mich abgeschlossen. Ich danke euch für eure Hilfe.
Unbenannt.JPG
 
Schön das es klappt.

Mein letztes Wago/BACnet Projekt ist schon etwas her. Ich habe damals alle Codesys-Variablen erst im BACnet Konfigurator mit den BACnet-Objekten verbunden, das war eine heiden Arbeit.
Soweit ich das erkenne erzeugst Du das BACnet Objekt schon in Codesys, das wäre die elegantere Lösung.

Warum das so nicht geklappt hat weiß ich leider auch nicht.
Aber gut das es nun so klappt.

Schöne Grüße
 
Zurück
Oben