FbRetainSetpoint_BV von FUP nach ST übertragen

Beycker

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

ich bin gerade dabei meine BacNet-Kommunikation auf ST umzustellen, weil es kompakter,besser und flexibler ist.
Bei den DI; DO; AI; AO ist es mir schon gelungen und funktioniert. Hier ein kleiner Auszug:
vorher: (Etliche Netzwerke für die Eingänge)
BIalt.PNG
nacher: (5 Zeilen für alle DI)
BIneu.PNG

So, nun zu meinem Problem:
alte Variante:
BValt.jpg

die Neue Variante funktioniert noch nicht, weil ich nicht weiß wie ich den 'Object_Name' in dem struct 'BACNET_BINARY_VALUE' beschreiben soll.
meine Bemühungen enden immer mit einem fehler:

BVneu.jpg

Es ist alles noch in Testphase, daher noch keine Beschriftungen etc.

ich freue mich über jede Hilfe
 
Zuletzt bearbeitet:
Hallo Beycker,

der Aufruf des Bausteins FbRetainSetpoint_BV in einer FOR-Schleife funktioniert leider nicht bzw. ist nicht zielführend.
BACnet Objete können nicht als ARRAY deklariert werden und deshalb ist der Aufruf in einer Schleife nur über Umwege möglich.
Die solltest die Bausteine in ST für jede Instanz einzeln aufrufen (jeweisls eine Programmzeile).
Auch dadurch wird die Übersicht im Vergleich zu FUP besser.

Gruß
ClMak
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ClMak,

danke für die antwort. ich werde die BACnet Objekte nicht mehr versuchen in ein Array zu pressen.
Jedoch hab ich immer noch ein Problem:
Im FUP kann ich den Ein-/Ausgang BACNET_BINARY_VALUE einfach Beschriften und als BACNET_BINARY VALUE deklarieren. Wie funktioniert dies im ST?

var
Instantz_BV_Motor : FbRetainSetpoint_BV;
Motor : BACNET_BINARY_VALUE;
end_var

Instantz_BV_Motor. BACNET_BINARY_VALUE := Motor;


Mit dieser Variante geht es nicht :cry:
 
Danke für den Tip ClMak.
Ich hab jetzt meinen "Fehler" gefunden. Ich hab die Instanz in ein Array gepackt. Dadurch funktioniert die Eingabehilfe nicht und man steht als ST- Neuling dran und kann nichts tun.
Jetzt funktioniert alles.

Unbenannt.PNG

:D:D:D
 
Try and Error hilft. Ich übertrage nun (fast) erfolgreich boolsche Werte von einem Controller zum anderen.
(vorheriger Fehler: Ich habe meiner Variablen und die Initialisierung vertauscht :roll: )
Aber nun ein neues Phänomen:

Der Master Controller erfasst über einen DI (loop mit Array) ein Signal und sendent Es über einen BV (loop mit Array) zu einem 'Slave' Controller. Alles über BACnet.
Der 'Slave' Controller arbeitet noch nach dem alten Prinzip: Mit Bausteinen und FUP (gab noch keine Probleme).
Der Master Controller arbeiten mit einem Task der das Programm mit den DI und BV aufruft ( 50ms Zyklus).

Das Phänomen: Auf dem 'Slave' Controller steuert der BV einen DO an, der nun ein gleichmäßiges Blinken von sich gibt. Schätzungsweiße im 50 ms Rythmus.
Mit dem BACnet Configurator ist es schwer den PresentValue auszulesen, da er nur Zyklisch vom Master ausgegeben wird (kommt wohl vom loop und Task).

Wie lässt sich dem Abhilfe schaffen, oder woher kommt dieser Effekt?
 
Neue Erkenntnis: Die Blinkfrequenz ist vom Task abhängig.
Bei 250 ms ist dier BV 250ms gesetzt; 250ms zurückgesetzt; 250ms gesetzt usw.
Und das bei dauerhaftem True auf DI.
 
Zurück
Oben