BACNet in Codesys

cas

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

ich wollte mal ein Thema zum BACNet aufmachen.

Für alle die eine Frage dazu haben oder eine Antwort kennen.

Ich beschäftige mich gerade mit BACNet und versuche eine Bib. in Codesys V2 (Beckhoff) zu entwickeln.
Man muss ja auf einiges achten. BACnet macht es einem ja nicht leicht.

Alleine die ganzen Objekte die es gibt. Wofür sind diese und muss ich diese nutzen?

Los gehts....

VG CAS
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo CAS,

die "OBJECT_NOTIFICATION_CLASS" ist die Alarmklasse.
Diese definiert wie die Alarme z.B. auf der GLT verarbeitet werden.
Als Beispiel, Alarmklasse "E-Mail" wird durch die GLT als E-Mail an den Bediener weitergleitet.
Alarmklasse "dringend" wird im Bildschirm rot eingebledet.
Alarmklasse "Wartung" wird an die dafür zuständige Mitarbeiter gemeldet, etc

BACnet ist aufwendig, das meiste macht aber Sinn.

mfg Daniel
 
Danke erstmal. Aber eine Praxisbeispiel bei Beckhoff hat wohl keiner für mich ? Keine Ahnung wie man das anwendet.

Diesen Satz habe ich als Erklärung bei Beckhoff gefunden:
Das Notification Class Objekt dient zur Konfiguration der Verteilung von Ereignismeldungen (EventNotifications).
Und was sagt mir das?


Wenn ich mir diese ganzen Properties bei den Objekten anschaue graut es mich. Effektiv kramst man sich doch nur den PresentValue raus und das reicht dann....

Hat Jemand ein Praxisprogramm ohne die TS-Bib von Beckhoff für mich ?????

VG CAS
 
Hallo Cas

Das Notification Class Objekt dient zur Konfiguration der Verteilung von Ereignismeldungen (EventNotifications).

Das ist im Grunde die saubere Formulierung meines Beispiels.
Mit Beckhoff arbeite ich nicht, deswegen kann ich Dir nicht weiterhelfen, wie das hier aufgebaut wird.
Aber da Beckhoff anscheinend bereits eine BACnet lib bietet, warum verwendest Du diese nicht?

Auch wenn meist nur der PresentValue verwendet wird, bietet BACnet doch viel mehr Möglichkeiten.
Die alle normkonform umzusetzen ist eine Mammutaufgabe. Außerdem dürfte die erste Frage bei Aufschaltung von Fremdgewerken immer die Zertifizierung sein und diese wird bei eine eigenen lib nicht möglich sein.

mfg Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

es nicht die lib die zertifiziert ist sonder der Server. Der arbeitet nur seine Objekte ab.
Für mich ist bei BACnet nur interessant der Zeitplan und die Offlinetrend-Funktion.
Den Rest brauch ich nicht.
Aber selbst der Zeitplan ist mist. Er gibt mir z.B. nicht an, in welcher Zeit er an und Aus geht. Bei einer Lüftung beispielsweise, die von 8:00 bis 17:00 Uhr laufen soll, startet bei mir schon 8 Minuten vorher die notwendigen dinge wie Klappen öffnen, Erhitzer vorbereiten usw.
Geht bei BACnet nicht:-(

Die Mammutaufgabe haben eigentlich die Hersteller der Server, alle definierten Funktionalitäten umzusetzen. Schafft keiner... Aller fallen durch den berühmten Interoperabilitätstest durch.

Kotz...
:sb7:

 
Sprichst du in den Fällen hinsichtlich Beckhoffs Umsetzung?

Aber selbst der Zeitplan ist mist. Er gibt mir z.B. nicht an, in welcher Zeit er an und Aus geht.
Du gibst doch die Schaltpunkte vor - was soll so ein Zeitplan denn ausgeben, als seine definierten Zustände?

Bei einer Lüftung beispielsweise, die von 8:00 bis 17:00 Uhr laufen soll, startet bei mir schon 8 Minuten vorher die notwendigen dinge wie Klappen öffnen, Erhitzer vorbereiten usw.
Und deine Steuerung ist hellseherisch begabt, weil Du um 8:00 "Ein" sagst, aber die Anlage vorher schon anläuft?

Geht bei BACnet nicht
Muss es ja auch nicht - wenn ich weiß, dass die Anlage 5-10 Minuten "Vorlauf" braucht, setzt man die Betriebszeiten entsprechend u. nciht auf den Punkt.

Es ist doch Hinz u. Kunz, ob ich programatisch die Anlage "heimlich" schon vorab einschalte in Abhängigkeit der ZSU-Einträge oder den Betrieber darauf hinweise, dass seine Anlage eine Anlaufzeit benötigt u. entsprechend die Zeitschaltung einzugeben ist - letzteres ist wenigsten ehrlich zum Betreiber :)
 
BACNet liefert vielseitige Möglichkeiten - die muss man erst zu nutzen wissen.

Klar steht allen voran zuerst der Hauptwert, aber zu dem bekomme ich weitere wertvolle Zusatzinfos, z.B. ob es ein Ersatzwert ist, wegen Fühlerdefekt, Reperaturmaßnahme,.... Darauf kann ich entsprechend reagieren, was mit einem reinem Werteaustausch komplizierter wäre.

Priorisierung ermöglicht mir ggfs. ein Überschreiben von Ausgangswerten - herkömmlich nicht zu schaffen - bei BACNet mit an Board.

Vlt. denkst Du noch zu bitorientiert u. willst den Nutzen noch nicht sehen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, also an dem Problem des Zeitplans halte ich weiterhin fest.

Es könnte ja auch eine Zimmerbelegung in einem Hotel sein. Da soll der Controller selber in Abhängigkeit der Istwerte (z.B. Raumtemperatur, Außentemperatur, Heizungstemperatur usw.) den richtigen Zeitpunkt errechnen, damit der Raum dann um 12.00 Uhr perfekt klimatisiert ist, wenn der Kunde einzieht. Da stellt keiner einfach mal 10:00 Uhr ein. Wird wohl schon passen. Aus Energetischer ein zwingendes muss.

Der Regler bekommt einen Sollwert und einen Istwert. Ob der Wert jetzt durch jemanden überschrieben wurde oder nicht ist denke ich egal. Wenn ich einen Wert überschreibe, muss ich einfach an die Folgen denken. Ich glaube nicht, dass es einen Regelbaustein gibt. der alle 16 Überschreibungsprioritäten auswertet und entsprechen anders handelt. Und wenn dann die Prio 15 den Wert 20 schreibt und die Prio 8 den Wert "OutofService" setzt oder umgekehrt, fängt der Regler wieder ein neues Regelkonzept an? Also daran glaube ich nicht. Das möchte ich sehen...
Zweckmäßiger und nachvollziehbar ist die einfache Methode. Der Wert ist echt oder irgendwer hat aus irgendeinem Grund den Wert verändert. Beides lässt sich eindeutig abarbeiten und im Vorfeld eindeutig definieren.
Ich kann mich noch gut an die Andover-GLT Continuum erinnern. Da gab es 255 Stufen der Berechtigung. Genutzt wurden genau die ersten 3 damit man nicht den Überblick verliert.

Alleine das Überschreiben von Ausgangswerten oder negieren von Eingangssignalen ist ein kleines Verbrechen. Wer hat sich diesen Blödsinn ausgedacht? Sicherlich jemand, der noch nie Verantwortung und Schadensersatz leiden musste, wenn die Regelung und Steuerung versagt. Wer übernimmt die Haftung der Software, wenn einfach jemand einen Ausgang einschaltet und den Frostschutz deaktiviert und Temperaturen und Drücke manipuliert und die Anlagen somit in einen gefährlichen Zustand versetzt werden?

Danke fürs lesen...
VG CAS

PS:
Wie man die "EventNotifications" anwendet weiß wohl keiner?
 
Nochmal wegen dem :
Und deine Steuerung ist hellseherisch begabt, weil Du um 8:00 "Ein" sagst, aber die Anlage vorher schon anläuft?
Ja ist Sie. Ich weis auf die Millisekunde genau, wann der Zeitplan EIN gehen wird und genauso wieder AUS gehen wird.

Im Winter z.B. werden alle notwendigen Dinge ausgeführt wie Heizungswasser Vorwärmen usw. Das dauert einige Zeit. Im Sommer brauche ich das nicht. Auch Misst bei mir der Controller, wie lange beim letzten mal die Klappen zum öffnen gebraucht haben und schalte die Klappen entsprechend dieser Zeit vor der Betriebszeit die Klappen auf AUF. Das nennt sich dann ""Intelligenz" oder Erfahrung.

Somit müsste ich bei BACNet einen Zeitplan für den Sommer und einen für den Winter haben. Oh mannnomann...
 
Es könnte ja auch eine Zimmerbelegung in einem Hotel sein. Da soll der Controller selber in Abhängigkeit der Istwerte (z.B. Raumtemperatur, Außentemperatur, Heizungstemperatur usw.) den richtigen Zeitpunkt errechnen, damit der Raum dann um 12.00 Uhr perfekt klimatisiert ist, wenn der Kunde einzieht. Da stellt keiner einfach mal 10:00 Uhr ein. Wird wohl schon passen. Aus Energetischer ein zwingendes muss.
Du sprichst hier eine prädiktive Heizungsregelung an - in deinem Beispiel fehlt die Vorhersage für AT, Solareintrag,....
Sowas wird auch nicht per ScheduleObject befehliert, der Zielzeitpunkt wird idR als Parameter übergeben.

Alleine das Überschreiben von Ausgangswerten oder negieren von Eingangssignalen ist ein kleines Verbrechen. Wer hat sich diesen Blödsinn ausgedacht? Sicherlich jemand, der noch nie Verantwortung und Schadensersatz leiden musste, wenn die Regelung und Steuerung versagt. Wer übernimmt die Haftung der Software, wenn einfach jemand einen Ausgang einschaltet und den Frostschutz deaktiviert und Temperaturen und Drücke manipuliert und die Anlagen somit in einen gefährlichen Zustand versetzt werden?
1.Wir sprechen hier von einem Protokoll für Gebäude u. nicht für Prozeßindustie/Fertigung
2.Gefährliche Eingriffe lassen sich einerseits programatisch abfangen UND
3.Sicherheitsrelevante Dinge DÜRFEN NICHT rein per SW erledigt werden.

Wer BACNet samt Steuerungssystem so implementiert, dass die obigen "Argumente" bestand werden, gefährliche Zustände so einfach hervorgerufen werden könnten, hat grundsätzlich was falsch gemacht. Gegen den Typen mit Schraubendreher, Drahtbrücken UND Laptop ist man nie gefeit.

Im Winter z.B. werden alle notwendigen Dinge ausgeführt wie Heizungswasser Vorwärmen usw. Das dauert einige Zeit. Im Sommer brauche ich das nicht.
Schon richtig, aber wie lange dauert das? 2min, 3min?
Evtl. müsste man Räume wegen Hygiene auf Freispülen - da darf man ohnehin nicht auf den Punkt starten.
Optimierung in allen Ehren, aber das juckt in der Praxis im Wahrheit niemand.

Auch Misst bei mir der Controller, wie lange beim letzten mal die Klappen zum öffnen gebraucht haben und schalte die Klappen entsprechend dieser Zeit vor der Betriebszeit die Klappen auf AUF.
Keine Ahnung, mit welchen Klappen Du zu tun hast, aber in mehr als 20 Jahren sind mir keine Klappen untergekommen, wo eine Notwendigkeit bestand, in einem Programm fortlaufend die Laufzeiten zu ermitteln u. für den nächsten Anlagenstart verarbeiten zu müssen - und selbst dann, sprächen wir hier von Sekunden bei typ. 120-180Sek (1-2%).

Wie man die "EventNotifications" anwendet weiß wohl keiner?
Event-Notification ist ein Dienst (für Betriebsmeldungen, Alarmmeldungen) - der Server sendet an seine Clients
Woher weiß er wem, wann u. warum?
Dafür gibt es ein Zusammenspiel mit den Notification-Class-Objekten u. der Recipient-List - aufgrund der Klassifizierung (Störmeldung, Alarmmeldung, mit welcher Priorität usw.) werden die Clients (die sich in der Recipient-List (Empfängerliste/Clientliste) als Empfänger eingebucht haben/abonniert) über Events z.B. Grenzwertverletzung informiert.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo. wirklich sehr gut die o.g. Infos... Aber ich und meine Kunden möchten solche Parameter nutzen und automatisch auswerten.
Durch die vielen Begründungen habe ich aber noch immer keine Notwendigkeit von BACnet gesehen. Eigentlich macht BACnet nichts anderes als das was Modbus bereits vor 30 Jahren gemacht hat. Leider wird jetzt schon ein kleiner Hochleistungscomputer benötigt, der die BACnet-Servereigenschaften unterstützt. Außerdem muß man sich um hunderte von Parametern kümmern, die eigentlich niemanden interessieren.

Mein Thema fing ja eigentlich genau damit an:
Event-Notification ist ein Dienst (für Betriebsmeldungen, Alarmmeldungen) - der Server sendet an seine Clients
Woher weiß er wem, wann u. warum?
Dafür gibt es ein Zusammenspiel mit den Notification-Class-Objekten u. der Recipient-List - aufgrund der Klassifizierung (Störmeldung, Alarmmeldung, mit welcher Priorität usw.) werden die Clients (die sich in der Recipient-List (Empfängerliste/Clientliste) als Empfänger eingebucht haben/abonniert) über Events z.B. Grenzwertverletzung informiert.​




Wäre super, wenn ich dafür ein praktisches Beispiel in Codesys bekommen könnte. Ich hab zwar begriffen wofür das sein soll, aber keine Ahnung wie man es nutzt/anwendet.
 
Durch die vielen Begründungen habe ich aber noch immer keine Notwendigkeit von BACnet gesehen. Eigentlich macht BACnet nichts anderes als das was Modbus bereits vor 30 Jahren gemacht hat. Leider wird jetzt schon ein kleiner Hochleistungscomputer benötigt, der die BACnet-Servereigenschaften unterstützt. Außerdem muß man sich um hunderte von Parametern kümmern, die eigentlich niemanden interessieren.

Ohne hier die große Grundsatzdiskussion starten zu wollen, BACnet und Modbus liegen meines Erachtens schon weit auseinander.
Die zusätzlichen Funktionen von BACnet haben schon einen Sinn. Es erfolgt halt schon viel engineering im BACnet-Objekt selbst. Bei Modbus muss dies alles mehrfach gemacht werden (auf der CPU, auf der GLT, auf Clients falls vorhanden, etc)

Wenn das Programmiersystem schon BACnet "integriet" hat und dies keinen zusätzlichen Aufwand bedeutet ist es top.
Schwierig ist es immer wenn die BACnet-Properties im Programmiersystem drumrumgebastelt werden müssen, wie etwa bei CoDeSys, dann wirds kompliziert und aufwendig.

mfg Daniel
 
Zurück
Oben