Einleitung BA

TS8040 | TwinCAT Building Automation

Einleitung

Die Grundvoraussetzung, um die hohen Anforderungen an die Gebäudeautomation, wie Komfort, Energieeinsparung, geringe Investitionsund Betriebskosten und ein schneller Return-of-Investment, zu erfüllen, ist ein durchgängiges, aufeinander abgestimmtes Steuerungssystem für die Automation aller technischen Ausbaugewerke. Mit TwinCAT Building Automation hat Beckhoff ein Softwareprodukt entwickelt, das die Engineeringzeit reduziert und alle wesentlichen Funktionen für alle Gewerke einer modernen Gebäudeautomation integriert. Umfangreiche Softwarebibliotheken und Supplements setzen den Gedanken des modularen Beckhoff-Automatisierungsbaukastens auch auf der Softwareebene fort. Die neue Softwaresuite umfasst im Wesentlichen drei Grundfunktionen:

  1. TwinCAT BA PLC Libraries: Basisfunktionen für alle Gewerke.
  2. TwinCAT BA PLC Templates: Funktionsvorlagen für alle Gewerke.
  3. TwinCAT BA Project Builder: Konfigurationstool, das Templates, Hardware und BACnet-Objekte miteinander verknüpft.


Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Deshalb ist die Dokumentation nicht in jedem Fall vollständig auf die Übereinstimmung mit den beschriebenen Leistungsdaten, Normen oder sonstigen Merkmalen geprüft.
Falls sie technische oder redaktionelle Fehler enthält, behalten wir uns das Recht vor, Änderungen jederzeit und ohne Ankündigung vorzunehmen.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE®, XFC® und XTS® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, DE102004044764, DE102007017835
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


Zielgruppen

Diese Software ist für Gebäudeautomations-Systempartner der Beckhoff Automation GmbH & Co. KG. Die Systempartner sind tätig in dem Bereich Gebäudeautomation und beschäftigen sich mit Errichtung, Inbetriebsetzung, Erweiterung, Wartung und Service von mess-, steuer- und regelungstechnischen Anlagen der technischen Gebäudeausrüstung.


Setup

Systemvoraussetzungen

  • Beckhoff TwinCAT PLC (V2.11 oder höher)
  • .NET Framework (V4.0 oder höher)

Installation

  1. Ausführen der *.exe Datei des TwinCAT Supplements.
  2. Klicken Sie auf Weiter, lesen Sie die Lizenz Vereinbarung sorgfältig, akzeptieren Sie diese und klicken auf Weiter.
  3. Tragen Sie den Benutzernamen, Name der Firma und die Seriennummer ein.
  4. Klicken Sie auf Installieren zum Starten der Installation.

Deinstallation

  1. Öffnen Sie die Systemsteuerung und wählen Programme und Funktionen aus.
  2. Wählen Sie TwinCAT Building Automation aus und klicken auf Deinstallieren.
  3. Zum Starten der Deinstallation mit Ja bestätigen.


Anforderungsprofil

Für den Nutzer werden die folgenden Grundkenntnisse vorausgesetzt.

  • TwinCAT PLC Control
  • TwinCAT System Manager
  • PC und Netzwerkkenntnisse
  • Aufbau und Eigenschaften der Beckhoff Embedded-PC und deren Busklemmensystem
  • Kenntnisse in Heizungs-, Lüftungs-, Klima-, Sanitäranlagen sowie der Raumautomation
  • Einschlägige Sicherheitsvorschriften der technischen Gebäudeausrüstung


Hardwareanforderungen

Die Software ist auf allen PC basierenden Hardware-Plattformen einsetzbar. Ideale Zielplattform für die Anwendungen der Heizungs-, Lüftungs-, Klima- und Sanitärtechnik sind die Embedded PC´s der Baureihe CX.


Einleitung BA PLC Library

TS8040 | TwinCAT Building Automation: PLC Libraries

Einleitung (in Bearbeitung)

Komfort, Energieeinsparung, geringe Investitions- und Betriebskosten und somit ein schneller Return Of Investment sind die hochgesteckten Ziele eines Gebäudeautomationssystems. Eine Grundvoraussetzung dafür ist ein durchgängiges, aufeinander abgestimmtes Steuerungssytem für die Automation aller technischen Ausbaugewerke.

Durch den Einsatz der TcBA-Bibliothek sind alle SPS-Programme von der Heizungszentrale über die Vollklimaanlage bis hin zu den Raumautomationsfunktionen mit TwinCAT PLC Control programmierbar und stehen innerhalb der Gebäudeautomationsbibliotheken als Bausteine zur Verfügung.

Dem Beckhoff Systemintegrator wird damit ein großes Spektrum an etablierten und geprüften Funktionen zur Verfügung gestellt. Dieses erleichtert die Implementierung der komplexen und interoperablen Gebäudeautomationsfunktionen und senkt den Engineering Aufwand. Zusätzlich werden die Lebenszykluskosten des Systems reduziert, weil sich der Aufwand für die Wartung und Instandhaltung auf ein und die selbe Programmiersoftware und Hardwareplattform konzentriert.

Mit den Raumautomationsfunktionen für die Klimatisierung, die Beleuchtung und den Sonnenschutz ist es möglich Systeme zu errichten, welche den höchsten Energieeffizienzstandard der EN 15232 Klasse A erreichen.

Zudem bietet die objektorientierte Kapselung der Gebäudeautomationsfunktionen die folgenden Vorteile:

  • Schnelle Erstellung der Anlagenprogramme.
  • Schnelle Parametrierung und Inbetriebnahme der Anlagen.
  • Gewährleistung eines stets sehr hohen Anlagenfunktionsumfang.
  • Gute Lesbarkeit der Programme (Voraussetzung für eine langjährige Wartbarkeit und Erweiterbarkeit der Anlagen).
  • Gute Wiederverwendbarkeit einmal erstellter Vorlagen für Anlagen oder Anlagenbaugruppen.
  • Leichte Einarbeitung des Personals.
  • Leichte Erweiterung und Änderung bereits existierender Anlagen.
  • Vorgaben für eine klare objektorientierte Struktur zur Erstellung von Visualisierungsobjekten in MMI- und SCADA-Systemen.
  • Bessere Dokumentierbarkeit der Programme.


Einbindung in TwinCAT

TS8040 | TwinCAT Building Automation: PLC Libraries

Einbindung in TwinCAT (in Bearbeitung ...)


Allgemeine Informationen

Weitere erforderliche Bibliotheken

Für PC-Systeme (x86) und Embedded-PCs (CXxxxx):

  • Standard.lib
  • TcBase.lib
  • TcSystem.lib
  • TcUtilities.lib
  • TcTestAndSet.lib
  • TcBACnetRev12.lib

Für Busklemmen-Controller der Serie BCxx00, BCxx50, BCxx20, BC9191 und BXxx00:

  • nicht verfügbar

Hinweis 		Speicherauslastung
Durch Einbinden der Bibliothek wird bereits SPS-Programmspeicher verbraucht. Abhängig vom Applikationsprogramm kann daher der verbleibende Speicher nicht ausreichend sein.


Übersicht Funktionsbausteine

BACnet

Name | Beschreibung
FB_BACnetAI1201 | Analog-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetAI1203 | Analog-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetAO1201 | Analog-Output. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetAO1203 | Analog-Output. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetAV1201 | Analog-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetAV1202 | Analog-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Mittlere Version.
FB_BACnetAV1203 | Analog-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetAV1204 | Analog-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetBI1201 | Binary-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetBI1203 | Binary-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetBI1205 | Binary-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetBO1201 | Binary-Output. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetBO1202 | Binary-Output. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Mittlere Version.
FB_BACnetBO1203 | Binary-Output. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetBO1205 | Binary-Output. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetBV1201 | Binary-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetBV1202 | Binary-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Mittlere Version.
FB_BACnetBV1203 | Binary-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetBV1204 | Binary-Value. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetCAL1201 | Kalender. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus.
FB_BACnetLoop1201 | PID-Regler. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetLoop1202 | PID-Regler. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetLoopSeq1201 | PID-Sequenz-Regler. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetLoopSeq1202 | PID-Sequenz-Regler. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetMI1203 | Multistate-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus.
FB_BACnetMO1202 | Multistate-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetMO1203 | Multistate-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetMV1201 | Multistate-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Kleine Version.
FB_BACnetMV1202 | Multistate-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Mittlere Version.
FB_BACnetMV1203 | Multistate-Input. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus. Große Version.
FB_BACnetSchedB1201 | Zeitplan mit booleschen Ausgabewerten. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus.
FB_BACnetSchedR1201 | Zeitplan mit REAL-Ausgabewerten. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus.
FB_BACnetSchedUdi1201 | Zeitplan mit Ganzzahl-Ausgabewerten. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus.
FB_BACnetTLog1201 | Trend-Log. BACnet-Objekt-generierender Funktionsbaustein zur zusätzlichen Parametrierung aus der SPS heraus.

Steuerung

Name | Beschreibung
FB_BA_Anlg3Pnt | Analogwert zu Dreipunkt-Wandler
FB_BA_ICtrlStp |
FB_BA_RampLmt | Rampenbegrenzung
FB_BA_SldgLmtMonit | gleitende Grenzwertüberwachung
FB_BA_StpDly | verzögerte Ausgabe von Schaltstufen
FB_BA_Swi2P | Zweipunktschalter
FB_BA_Swi2P_Dly | Zweipunktschalter mit zeitlicher Verzögerung.
FB_BA_SwiHys2P | Zweipunktschalter um einen Schaltpunkt
FB_BA_SwiHys2P_Dly | Zweipunktschalter um einen Schaltpunkt mit zeitlicher Verzögerung.
FB_BA_SwiMonit | Überwachung von Endlagenschaltern, z.B. bei einer Zweipunktklappe

Regelung

Name | Beschreibung
FB_BA_FltrPT1 | Filter erster Ordnung
FB_BA_PIDCtrl | Universeller PID-Regler
FB_BA_PISync1201 | PI-Synchronisation von zwei Reglern des Typs FB_BACnetLoop1201
FB_BA_PISync1202 | PI-Synchronisation von zwei Reglern des Typs FB_BACnetLoop1202
FB_BA_PWM | Puls-Weiten-Modulations-Baustein
FB_BA_SeqCtrl | Sequenzregler, einleitende Erläuterungen zu Sequenzreglern siehe hier.
FB_BA_SeqLink | Sequenzregler-Steuerbaustein

Mathematische Funktionen

Name | Beschreibung
FB_BA_Chrct02 | Linearinterpolation für 2 Stützstellen
FB_BA_Chrct04 | Linearinterpolation für 4 Stützstellen
FB_BA_Chrct07 | Linearinterpolation für 7 Stützstellen
FB_BA_Chrct32 | Linearinterpolation für 32 Stützstellen
FB_BA_TiAvrg | zeitlich arithmetischer Mittelwert

Meldungen

Name | Beschreibung
FB_BA_Alarm | Alarmsammelbaustein mit zuschaltbarem Alarmspeicher und interner Quittierung
FB_BA_AlarmPlt | Funktionsbaustein sammelt die Alarme einer Anlage ein und bündelt diese zu einem Sammelalarm
FB_BA_Alm | Alarmbaustein mit zuschaltbarem Alarmspeicher und Quittierung
FB_BA_AlmColt04 | Alarmsammelbaustein, 4 Alarme
FB_BA_AlmColt08 | Alarmsammelbaustein, 8 Alarme
FB_BA_AlmColt12 | Alarmsammelbaustein, 12 Alarme
FB_BA_AlmColt16 | Alarmsammelbaustein, 16 Alarme
FB_BA_ComnMsg | Bildung von Sammelmeldungen
FB_BA_ComnMsgTermt | globaler Sammelbaustein von Sammelmeldungen (FB_BA_ComnMsg)

Operatoren

Name | Beschreibung
FB_BA_DMUX_XX | Demultiplexer-Bausteine
FB_BA_MMux_XX | Funktionsbaustein schaltet in Abhängigkeit eines Selektors und der entsprechenden Eingangs-Selektorbedingung einen Eingangswert auf den Ausgang
FB_BA_MultiCalc_XX | Multi-Kalkulations-Bausteine
FB_BA_MUX_XX | Multiplexer-Bausteine
FB_BA_PrioSwi_XX | Prioritätenschalter

Anlagensteuerung

Name | Beschreibung
FB_BA_AntBlkg | Blockierschutz von Pumpen oder Stellantrieben
FB_BA_DHW2P | Steuerung der Ladung eines Warmwasserspeichers mittels eines Zweipunkt-Reglers
FB_BA_FIFO04 | Folgesteuerung von bis zu vier Aggregaten
FB_BA_FIFO08 | Folgesteuerung von bis zu acht Aggregaten
FB_BA_FnctSel | Funktionsanwahl (Heizen und/oder Kühlen) in einen Zwei- oder Vierleiternetz
FB_BA_FrstPrtc | Überwachung Frostalarm und Noterhitzung
FB_BA_HX | Berechnung Taupunkttemperatur, spezifische Enthalpie und die absolute Feuchte
FB_BA_LglPrev | Funktionsbaustein zur Desinfektion des Brauchwassers und zum Abtöten von Legionellen
FB_BA_LmtCtrl | Funktionsbaustein zur Ermittlung der Grenzwerte und dessen Freigabe
FB_BA_NgtCol | Sommernachtkühlung
FB_BA_RcvMonit | Funktionsbaustein zur Berechnung des Wirkungsgrades einer Energie-Rückgewinnung
FB_BA_RmTAdj | Anpassung des Raumtemperatursollwertes
FB_BA_SpRmT | Anpassung des Raumtemperatursollwertes
FB_BA_SpSupVis | Funktionsbaustein zur Verarbeitung und Kontrolle des unteren und oberen Sollwertes einer Zuluftfeuchte- oder Zulufttemperaturregelung
FB_BA_StepCtrl08 | Schrittkettenbaustein, 8 Schritte
FB_BA_StepCtrl12 | Schrittkettenbaustein, 12 Schritte

Raumfunktionen Verschattung

Übersicht Verschattungskorrektur

Verschattungskorrektur: Grundlagen und Definitionen

Übersicht Sonnenschutzautomatik

Sonnenschutz: Grundlagen und Definitionen

Name | Beschreibung
FB_BA_BldPosEntry | Sonnenschutzfunktion: Eingabe von Jalousiepositionen.
FB_BA_BrtnsHysDly | Schwellwertschalter für Helligkeit
FB_BA_CalcSunPos | Berechnung Sonnenstand
FB_BA_FcdElemEntry | Verschattungskorrektur: Eingabe von Fassadenelementen per Baustein.
FB_BA_InRngAzm | Überprüfung gültiger Sonnenstand Sonnenrichtungsbereich (Azimuthwinkel)
FB_BA_InRngElv | Überprüfung gültiger Sonnenstand Sonnenhöhenbereich (Elevationswinkel)
FB_BA_RdFcdElemLst | Verschattungskorrektur: Eingabe von Fassadenelementen per Datenliste (csv).
FB_BA_RdShdObjLst | Verschattungskorrektur: Eingabe von Verschattungsobjekten per Datenliste (csv).
FB_BA_RolBldActr | Rollladen-Aktor
FB_BA_ShdCorr | Verschattungskorrektur-Baustein
FB_BA_ShdObjEntry | Verschattungskorrektur: Eingabe von Verschattungsobjekten per Baustein.
FB_BA_SunBldActr | Jalousie-Aktor
FB_BA_SunBldPosDly | Einschaltverzögerung von Jalousien/Jalousiegruppen
FB_BA_SunBldEvt | Ausgabe eines vorgegebenen prozentualen Jalousieposition und -stellung
FB_BA_SunBldPrioSwi4 | Prioritätssteuerung, 4 Eingänge
FB_BA_SunBldPrioSwi8 | Prioritätssteuerung, 8 Eingänge
FB_BA_SunBldScn | Handbedienung mit Szenenanwahl und -programmierung
FB_BA_SunBldSwi | Handbedienung
FB_BA_SunBldTwiLgtAuto | Dämmerungsautomatik
FB_BA_SunBldWthrPrtc | Witterungsschutz-Funktion
FB_BA_SunPrtc | Sonnenschutzfunktion, siehe Übersicht Sonnenschutzautomatik (Verschattungskorrektur)

Spezial

Name | Beschreibung
FB_BA_Blink | Einfacher Oszillator-Baustein

System

Name | Beschreibung
FB_BA_CnvtTiSt | Umwandlung Jahr, Monat, Tag, Stunde, Minute und Sekunde in Zeitstruktur
FB_BA_ExtTiSt | Umwandlung Zeitstruktur in Jahr, Monat, Tag, Stunde, Minute und Sekunde
FB_BA_GetTime | Interne Uhr mit Zeitinformationen - synchronisierbar mit Systemzeit
FB_BA_SetTime | Setzen der Systemzeit

Übersicht Aufzählungen und Strukturen

Name | Beschreibung
E_BA_AlmSta | Enumerator Status der Alarmmeldungen
E_BA_PosMod | Enumerator zur Definition des Positioniermodus
E_BA_ShdObjType | Enumerator zur Auswahl des Verschattungsobjekt-Typs
ST_BA_BldPosTab | Struktur der Stützpunkteinträge für die Höhenverstellung der Jalousie
ST_BA_Cnr | Information über Fenster-Eckpunkte
ST_BA_ComnMsg | Struktur des Kommunikationstelegrammes an die Bausteine FB_BA_ComMsg
ST_BA_ComnMsgTermt | Struktur des Kommunikationstelegrammes an die Bausteine FB_BA_ComMsgTermt
ST_BA_FcdElem | Listeneintrag eines Fassadenelementes (Fenster).
ST_BA_SeqLink | Struktur des Daten- und Befehlsaustausches zwischen dem Steuerbaustein FB_BA_SeqLink und den Sequenzreglern FB_BA_SeqCtrl.
ST_BA_ShdObj | Listeneintrag eines Verschattungsobjektes
ST_BA_SpRmT | Raum-Temperatursollwerte
ST_BA_SunBld | Struktur des Jalousie-Positioniertelegramms
ST_BA_SunBldScn | Tabelleneintrag einer Jalousie-Szene


FB_BACnetAI1201

BACnet Analog-Input.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Input-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleine" Version.
Alternativ stehe die Version

  • FB_BACnetAI1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnLimEn | Freigabe zum Beschreiben des Bitmusters der Grenzwert-Freigaben |
stLimEn | Property-Wert Bitmuster Grenzwert-Freigaben | Limit-Enable (52)
bEnLmtVal | Freigabe zum Beschreiben der Grenzwerte |
rHiLmt | Property-Wert HighLimit | HighLimit (45)
rLoLmt | Property-Wert LowLimit | LowLimit (59)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)

Ein-Ausgänge

VAR_INPUT

usiRawValSta : USINT;
iRawVal      : INT;
bEnEvtEn     : BOOL;
stEvtEn      : ST_BACnet_EventTransitionBits;
bEnLimEn     : BOOL;
stLimEn      : ST_BACnet_LimitEnable;
bEnLmtVal    : BOOL;
rHiLmt       : REAL;
rLoLmt       : REAL;
bEnTiDly     : BOOL;
udiTiDly     : UDINT;

usiRawValSta: Eingang zur Verbindung mit dem Statusbyte (State) der Klemme.

iRawVal: Eingang zur Verbindung mit dem Datenwort (Data In) der Klemme.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnLimEn / stLimEn: Freigabe/Property-Wert Bitmuster LimitEnable.

bEnLimVal: Freigabe Beschreiben High- und Low-Limit.

rHiLmt: Property-Wert High-Limit.

rLoLmt: Property-Wert Low-Limit.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

VAR_OUTPUT

rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOoServ  : BOOL;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rPrVal: Aktueller Wert des Analog-Input-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Input-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Input-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Input-Objekts an.

dwObjId: BACnet-Objekt-ID des Analog-Input-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAI1203

BACnet Analog-Input.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Input-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ stehe die Version

  • FB_BACnetAI1201

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnLimEn | Freigabe zum Beschreiben des Bitmusters der Grenzwert-Freigaben |
stLimEn | Property-Wert Bitmuster Grenzwert-Freigaben | Limit-Enable (52)
bEnLmtVal | Freigabe zum Beschreiben der Grenzwerte |
rHiLmt | Property-Wert HighLimit | HighLimit (45)
rLoLmt | Property-Wert LowLimit | LowLimit (59)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

usiRawValSta : USINT;
iRawVal      : INT;
bEnEvtEn     : BOOL;
stEvtEn      : ST_BACnet_EventTransitionBits;
bEnLimEn     : BOOL;
stLimEn      : ST_BACnet_LimitEnable;
bEnLmtVal    : BOOL;
rHiLmt       : REAL;
rLoLmt       : REAL;
bEnTiDly     : BOOL;
udiTiDly     : UDINT;
bEnNotiCla   : BOOL;
udiNotiCla   : UDINT;

usiRawValSta: Eingang zur Verbindung mit dem Statusbyte (State) der Klemme.

iRawVal: Eingang zur Verbindung mit dem Datenwort (Data In) der Klemme.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnLimEn / stLimEn: Freigabe/Property-Wert Bitmuster LimitEnable.

bEnLimVal: Freigabe Beschreiben High- und Low-Limit.

rHiLmt: Property-Wert High-Limit.

rLoLmt: Property-Wert Low-Limit.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOoServ  : BOOL;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rPrVal: Aktueller Wert des Analog-Input-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Input-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Input-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Input-Objekts an.

dwObjId: BACnet-Objekt-ID des Analog-Input-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAO1201

BACnet Analog-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleine" Version.
Alternativ steht die Version

  • FB_BACnetAO1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
rValPrioA   : REAL;
usiPrioA    : USINT;
bOvrrd      : BOOL;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM4602 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

VAR_OUTPUT

iRawIoPrVal : INT;
rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOvrrd   : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

iRawIoPrVal: Ausgang zur Verbindung mit dem Datenwort (Data Out) der analogen Ausgangs-Klemme.

rPrVal: Aktueller Wert des Analog-Output-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Analog-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Analog-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAO1203

BACnet Analog-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ steht die Version

  • FB_BACnetAO1201
  • FB_BACnetAO1205

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
rValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
rValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
rValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnLimEn | Freigabe zum Beschreiben des Bitmusters der Grenzwert-Freigaben |
stLimEn | Property-Wert Bitmuster Grenzwert-Freigaben | Limit-Enable (52)
bEnLmtVal | Freigabe zum Beschreiben der Grenzwerte |
rHiLmt | Property-Wert HighLimit | HighLimit (45)
rLoLmt | Property-Wert LowLimit | LowLimit (59)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
rValPrioA   : REAL;
usiPrioA    : USINT;
bEnPrioB    : BOOL;
rValPrioB   : REAL;
usiPrioB    : USINT;
bEnPrioC    : BOOL;
rValPrioC   : REAL;
usiPrioC    : USINT;
bEnPrioD    : BOOL;
rValPrioD   : REAL;
usiPrioD    : USINT;
bOvrrd      : BOOL;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnLimEn    : BOOL;
stLimEn     : ST_BACnet_LimitEnable;
bEnLmtVal   : BOOL;
rHiLmt      : REAL;
rLoLmt      : REAL;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

rValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

rValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

rValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM4602 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnLimEn / stLimEn: Freigabe/Property-Wert Bitmuster LimitEnable.

bEnLimVal: Freigabe Beschreiben High- und Low-Limit.

rHiLmt: Property-Wert High-Limit.

rLoLmt: Property-Wert Low-Limit.

VAR_OUTPUT

iRawIoPrVal : INT;
rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOvrrd   : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

iRawIoPrVal: Ausgang zur Verbindung mit dem Datenwort (Data Out) der analogen Ausgangs-Klemme.

rPrVal: Aktueller Wert des Analog-Output-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Analog-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Analog-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAO1205

BACnet Analog-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ steht die Version

  • FB_BACnetAO1201
  • FB_BACnetAO1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
rValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
rValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
rValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnLimEn | Freigabe zum Beschreiben des Bitmusters der Grenzwert-Freigaben |
stLimEn | Property-Wert Bitmuster Grenzwert-Freigaben | Limit-Enable (52)
bEnLmtVal | Freigabe zum Beschreiben der Grenzwerte |
rHiLmt | Property-Wert HighLimit | HighLimit (45)
rLoLmt | Property-Wert LowLimit | LowLimit (59)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
rValPrioA   : REAL;
usiPrioA    : USINT;
bEnPrioB    : BOOL;
rValPrioB   : REAL;
usiPrioB    : USINT;
bEnPrioC    : BOOL;
rValPrioC   : REAL;
usiPrioC    : USINT;
bEnPrioD    : BOOL;
rValPrioD   : REAL;
usiPrioD    : USINT;
bOvrrd      : BOOL;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnLimEn    : BOOL;
stLimEn     : ST_BACnet_LimitEnable;
bEnLmtVal   : BOOL;
rHiLmt      : REAL;
rLoLmt      : REAL;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

rValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

rValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

rValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM4602 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnLimEn / stLimEn: Freigabe/Property-Wert Bitmuster LimitEnable.

bEnLimVal: Freigabe Beschreiben High- und Low-Limit.

rHiLmt: Property-Wert High-Limit.

rLoLmt: Property-Wert Low-Limit.

VAR_OUTPUT

rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOvrrd   : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rPrVal: Aktueller Wert des Analog-Output-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Analog-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Analog-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAV1201

BACnet Analog-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleinste" Version.
Alternativ stehen die Versionen

  • FB_BACnetAV1202
  • FB_BACnetAV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA  : BOOL;
rValPrioA : REAL;
usiPrioA  : USINT;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

VAR_OUTPUT

rPrVal    : REAL;
stStaFlg  : ST_BACnet_StatusFlags;
dwObjId   : DWORD;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

rPrVal: Aktueller Wert des Analog-Value-Objektes - direkt aus dem BACnet eingelesen.

stStaFlg: Ausgabestruktur des BACnet-Status.

dwObjId: BACnet-Objekt-ID des Analog-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAV1202

BACnet Analog-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "mittlere" Version.
Alternativ stehen die Versionen

  • FB_BACnetAV1201
  • FB_BACnetAV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnRlqshDef | Freigabe zum Beschreiben des Relinquish-Defaults |
rRlqshDef | zu schreibender Wert auf das Property Relinquish-Default | Relinquish-Default (104)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnLimEn | Freigabe zum Beschreiben des Bitmusters der Grenzwert-Freigaben |
stLimEn | Property-Wert Bitmuster Grenzwert-Freigaben | Limit-Enable (52)
bEnLmtVal | Freigabe zum Beschreiben der Grenzwerte |
rHiLmt | Property-Wert HighLimit | HighLimit (45)
rLoLmt | Property-Wert LowLimit | LowLimit (59)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
rValPrioA   : REAL;
usiPrioA    : USINT;
bEnRlqshDef : BOOL;
rRlqshDef   : REAL;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnLimEn    : BOOL;
stLimEn     : ST_BACnet_LimitEnable;
bEnLmtVal   : BOOL;
rHiLmt      : REAL;
rLoLmt      : REAL;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnRlqshDef / rRlqshDef: Freigabe/Property-Wert Relinquish-Default.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnLimEn / stLimEn: Freigabe/Property-Wert Bitmuster LimitEnable.

bEnLimVal: Freigabe Beschreiben High- und Low-Limit.

rHiLmt: Property-Wert High-Limit.

rLoLmt: Property-Wert Low-Limit.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOvrrd   : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rPrVal: Aktueller Wert des Analog-Value-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Value-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Analog-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Analog-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAV1203

BACnet Analog-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "größte" Version.
Alternativ stehen die Versionen

  • FB_BACnetAV1201
  • FB_BACnetAV1202

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
rValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
rValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
rValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnRlqshDef | Freigabe zum Beschreiben des Relinquish-Defaults |
rRlqshDef | zu schreibender Wert auf das Property Relinquish-Default | Relinquish-Default (104)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnLimEn | Freigabe zum Beschreiben des Bitmusters der Grenzwert-Freigaben |
stLimEn | Property-Wert Bitmuster Grenzwert-Freigaben | Limit-Enable (52)
bEnLmtVal | Freigabe zum Beschreiben der Grenzwerte |
rHiLmt | Property-Wert HighLimit | HighLimit (45)
rLoLmt | Property-Wert LowLimit | LowLimit (59)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
rValPrioA   : REAL;
usiPrioA    : USINT;
bEnPrioB    : BOOL;
rValPrioB   : REAL;
usiPrioB    : USINT;
bEnPrioC    : BOOL;
rValPrioC   : REAL;
usiPrioC    : USINT;
bEnPrioD    : BOOL;
rValPrioD   : REAL;
usiPrioD    : USINT;
bEnRlqshDef : BOOL;
rRlqshDef   : REAL;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnLimEn    : BOOL;
stLimEn     : ST_BACnet_LimitEnable;
bEnLmtVal   : BOOL;
rHiLmt      : REAL;
rLoLmt      : REAL;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

rValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

rValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

rValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bEnRlqshDef / rRlqshDef : Freigabe/Property-Wert Relinquish-Default.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnLimEn / stLimEn: Freigabe/Property-Wert Bitmuster LimitEnable.

bEnLimVal: Freigabe Beschreiben High- und Low-Limit.

rHiLmt: Property-Wert High-Limit.

rLoLmt: Property-Wert Low-Limit.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

rPrVal      : REAL;
bHiLmt      : BOOL;
bLoLmt      : BOOL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOvrrd   : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rPrVal: Aktueller Wert des Analog-Value-Objektes - direkt aus dem BACnet eingelesen.

bHiLim: Meldung oberer Grenzwert erreicht.

bLoLim: Meldung unterer Grenzwert erreicht.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Value-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Analog-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Analog-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetAV1204

BACnet Analog-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Analog-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleinste" Version.
Alternativ stehen die Versionen

  • FB_BACnetAV1201
  • FB_BACnetAV1202
  • FB_BACnetAV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
rValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA  : BOOL;
rValPrioA : REAL;
usiPrioA  : USINT;

bEnPrioA: Freigabe zum Beschreiben.

rValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

VAR_OUTPUT

rPrVal      : REAL;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rPrVal: Aktueller Wert des Analog-Value-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Analog-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Analog-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Analog-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Analog-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBI1201

BACnet Binary-Input.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Input-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ steht die Version

  • FB_BACnetBI1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)

Ein-Ausgänge

VAR_INPUT

bVal          : BOOL;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;

bVal: Eingang zur Verbindung mit dem Eingangsbit (Input) der Klemme.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaOoServ       : BOOL;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Input-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Input-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Input-Objekts an.

dwObjId: BACnet-Objekt-ID des Binary-Input-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBI1203

BACnet Binary-Input.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Input-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ steht die Version

  • FB_BACnetBI1201

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)
bEnElapActvTi | Freigabe zum Beschreiben der abgelaufenen Aktiv-Zeit |
udiElapActvTi | Property-Wert abgelaufene Aktiv-Zeit | ElapsedActiveTime (33)

Ein-Ausgänge

VAR_INPUT

bVal          : BOOL;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;
bEnNotiCla    : BOOL;
udiNotiCla    : UDINT;
bEnElapActvTi : BOOL;
udiElapActvTi : UDINT;

bVal: Eingang zur Verbindung mit dem Eingangsbit (Input) der Klemme.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnElapActvTi / udiElapActvTi: Freigabe/Property-Wert abgelaufene Aktiv-Zeit.

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaOoServ       : BOOL;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Input-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Input-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Input-Objekts an.

dwObjId: BACnet-Objekt-ID des Binary-Input-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBI1205

BACnet Binary-Input.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Input-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ steht die Version

  • FB_BACnetBI1201
  • FB_BACnetBI1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)
bEnElapActvTi | Freigabe zum Beschreiben der abgelaufenen Aktiv-Zeit |
udiElapActvTi | Property-Wert abgelaufene Aktiv-Zeit | ElapsedActiveTime (33)

Ein-Ausgänge

VAR_INPUT

bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;
bEnNotiCla    : BOOL;
udiNotiCla    : UDINT;
bEnElapActvTi : BOOL;
udiElapActvTi : UDINT;

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnElapActvTi / udiElapActvTi: Freigabe/Property-Wert abgelaufene Aktiv-Zeit.

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaOoServ       : BOOL;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Input-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Input-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Input-Objekts an.

dwObjId: BACnet-Objekt-ID des Binary-Input-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBO1201

BACnet Binary-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleinste" Version.
Alternativ stehen die Versionen

  • FB_BACnetBO1202
  • FB_BACnetBO1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA      : BOOL;
bValPrioA     : BOOL;
usiPrioA      : USINT;
bOvrrd        : BOOL;
bEnFdbVal     : BOOL;
bFdbVal       : BOOL;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;
bEnNotiCla    : BOOL;
udiNotiCla    : UDINT;
bEnElapActvTi : BOOL;
udiElapActvTi : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM2652 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

bEnFdbVal / bFdbVal: Freigabe/Property-Wert Feedback-Value. Dieser Wert wird aus der PLC heraus auf das Property FeedbackValue (Property Id 40) geschrieben, jedoch nicht per ADS, sondern per zyklischem Interface.
Es dient einer Rückmelde-Überwachung: Ist bEnFdbVal auf TRUE gesetzt, so muss an bFdbVal innerhalb der Zeit, die im BACnet unter TIME-Delay (Property Id 113) eingetragen ist, den gleichen Wert haben, wie der Ausgang Present-Value. Ansonsten wird im EventState (Property Id 36) durch den Eintrag "offnormal" eine Rückmelde-Diskrepanz angezeigt. Ist bEnFdbVal auf FALSE gesetzt, so wird intern bFdbVal gleich dem Present-Value gesetzt, und es kann so niemals zu einer Rückmeldediskrepanz kommen.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnElapActvTi / udiElapActvTi: Freigabe/Property-Wert abgelaufene Aktiv-Zeit.

VAR_OUTPUT

bRawIoPrVal      : BOOL;
bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOvrrd        : BOOL;
bStaOoServ       : BOOL;
udiStaElapActvTi : UDINT;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bRawIoPrVal: Ausgabewert an die digitale Ausgangs-Klemme.

bPrVal: Aktueller Wert des Binary-Output-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Output-Objekts an.

udiStaElapActvTi: Zeigt die verstrichene aktiv-Zeit des Binary-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBO1202

BACnet Binary-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "mittlere" Version.
Alternativ stehen die Versionen

  • FB_BACnetBO1201
  • FB_BACnetBO1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
bValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
bValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
bValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)

Ein-Ausgänge

VAR_INPUT

bEnPrioA      : BOOL;
bValPrioA     : BOOL;
usiPrioA      : USINT;
bEnPrioB      : BOOL;
bValPrioB     : BOOL;
usiPrioB      : USINT;
bEnPrioC      : BOOL;
bValPrioC     : BOOL;
usiPrioC      : USINT;
bEnPrioD      : BOOL;
bValPrioD     : BOOL;
usiPrioD      : USINT;
bOvrrd        : BOOL;
bEnFdbVal     : BOOL;
bFdbVal       : BOOL;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

bValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

bValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

bValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM2652 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

bEnFdbVal / bFdbVal: Freigabe/Property-Wert Feedback-Value. Dieser Wert wird aus der PLC heraus auf das Property FeedbackValue (Property Id 40) geschrieben, jedoch nicht per ADS, sondern per zyklischem Interface.
Es dient einer Rückmelde-Überwachung: Ist bEnFdbVal auf TRUE gesetzt, so muss an bFdbVal innerhalb der Zeit, die im BACnet unter TIME-Delay (Property Id 113) eingetragen ist, den gleichen Wert haben, wie der Ausgang Present-Value. Ansonsten wird im EventState (Property Id 36) durch den Eintrag "offnormal" eine Rückmelde-Diskrepanz angezeigt. Ist bEnFdbVal auf FALSE gesetzt, so wird intern bFdbVal gleich dem Present-Value gesetzt, und es kann so niemals zu einer Rückmeldediskrepanz kommen.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

VAR_OUTPUT

bRawIoPrVal      : BOOL;
bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOvrrd        : BOOL;
bStaOoServ       : BOOL;
udiStaTiDly      : UDINT;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bRawIoPrVal: Ausgabewert an die digitale Ausgangs-Klemme.

bPrVal: Aktueller Wert des Binary-Output-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Output-Objekts an.

udiStaTiDly: Zeigt den aktuell parametrierten TimeDelay (Property Id 113) an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBO1203

BACnet Binary-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "größte" Version.
Alternativ stehen die Versionen

  • FB_BACnetBO1201
  • FB_BACnetBO1202
  • FB_BACnetBO1205

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
bValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
bValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
bValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)

Ein-Ausgänge

VAR_INPUT

bEnPrioA      : BOOL;
bValPrioA     : BOOL;
usiPrioA      : USINT;
bEnPrioB      : BOOL;
bValPrioB     : BOOL;
usiPrioB      : USINT;
bEnPrioC      : BOOL;
bValPrioC     : BOOL;
usiPrioC      : USINT;
bEnPrioD      : BOOL;
bValPrioD     : BOOL;
usiPrioD      : USINT;
bOvrrd        : BOOL;
bEnFdbVal     : BOOL;
bFdbVal       : BOOL;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

bValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

bValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

bValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM2652 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

bEnFdbVal / bFdbVal: Freigabe/Property-Wert Feedback-Value. Dieser Wert wird aus der PLC heraus auf das Property FeedbackValue (Property Id 40) geschrieben, jedoch nicht per ADS, sondern per zyklischem Interface.
Es dient einer Rückmelde-Überwachung: Ist bEnFdbVal auf TRUE gesetzt, so muss an bFdbVal innerhalb der Zeit, die im BACnet unter TIME-Delay (Property Id 113) eingetragen ist, den gleichen Wert haben, wie der Ausgang Present-Value. Ansonsten wird im EventState (Property Id 36) durch den Eintrag "offnormal" eine Rückmelde-Diskrepanz angezeigt. Ist bEnFdbVal auf FALSE gesetzt, so wird intern bFdbVal gleich dem Present-Value gesetzt, und es kann so niemals zu einer Rückmeldediskrepanz kommen.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

VAR_OUTPUT

bRawIoPrVal      : BOOL;
bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOvrrd        : BOOL;
bStaOoServ       : BOOL;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bRawIoPrVal: Ausgabewert an die digitale Ausgangs-Klemme.

bPrVal: Aktueller Wert des Binary-Output-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBO1205

BACnet Binary-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "größte" Version.
Alternativ stehen die Versionen

  • FB_BACnetBO1201
  • FB_BACnetBO1202
  • FB_BACnetBO1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
bValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
bValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
bValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)

Ein-Ausgänge

VAR_INPUT

bEnPrioA      : BOOL;
bValPrioA     : BOOL;
usiPrioA      : USINT;
bEnPrioB      : BOOL;
bValPrioB     : BOOL;
usiPrioB      : USINT;
bEnPrioC      : BOOL;
bValPrioC     : BOOL;
usiPrioC      : USINT;
bEnPrioD      : BOOL;
bValPrioD     : BOOL;
usiPrioD      : USINT;
bOvrrd        : BOOL;
bEnFdbVal     : BOOL;
bFdbVal       : BOOL;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

bValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

bValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

bValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bOvrrd: An diesem Eingang kann das Eingangssignal einer lokale Vorrangbedienung z.B. von einem KM2652 angelegt werden. Steht dieser Eingang dann auf "TRUE", so wird das im BACnet angezeigt.

bEnFdbVal / bFdbVal: Freigabe/Property-Wert Feedback-Value. Dieser Wert wird aus der PLC heraus auf das Property FeedbackValue (Property Id 40) geschrieben, jedoch nicht per ADS, sondern per zyklischem Interface.
Es dient einer Rückmelde-Überwachung: Ist bEnFdbVal auf TRUE gesetzt, so muss an bFdbVal innerhalb der Zeit, die im BACnet unter TIME-Delay (Property Id 113) eingetragen ist, den gleichen Wert haben, wie der Ausgang Present-Value. Ansonsten wird im EventState (Property Id 36) durch den Eintrag "offnormal" eine Rückmelde-Diskrepanz angezeigt. Ist bEnFdbVal auf FALSE gesetzt, so wird intern bFdbVal gleich dem Present-Value gesetzt, und es kann so niemals zu einer Rückmeldediskrepanz kommen.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOvrrd        : BOOL;
bStaOoServ       : BOOL;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Output-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBV1201

BACnet Binary-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleinste" Version.
Alternativ stehen die Versionen

  • FB_BACnetBV1202
  • FB_BACnetBV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA  : BOOL;
bValPrioA : BOOL;
usiPrioA  : USINT;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

VAR_OUTPUT

bPrVal    : BOOL;
stStaFlg  : ST_BACnet_StatusFlags;
dwObjId   : DWORD;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

bPrVal: Aktueller Wert des Binary-Value-Objektes - direkt aus dem BACnet eingelesen.

stStaFlg: Ausgabestruktur des BACnet-Status.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBV1202

BACnet Binary-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "mittlere" Version.
Alternativ stehen die Versionen

  • FB_BACnetBV1201
  • FB_BACnetBV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)
bEnElapActvTi | Freigabe zum Beschreiben der abgelaufenen Aktiv-Zeit |
udiElapActvTi | Property-Wert abgelaufene Aktiv-Zeit | ElapsedActiveTime (33)

Ein-Ausgänge

VAR_INPUT

bEnPrioA      : BOOL;
bValPrioA     : BOOL;
usiPrioA      : USINT;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;
bEnNotiCla    : BOOL;
udiNotiCla    : UDINT;
bEnElapActvTi : BOOL;
udiElapActvTi : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnElapActvTi / udiElapActvTi: Freigabe/Property-Wert abgelaufene Aktiv-Zeit.

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOvrrd        : BOOL;
bStaOoServ       : BOOL;
udiStaElapActvTi : UDINT;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Value-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Value-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Value-Objekts an.

udiStaElapActvTi: Zeigt die verstrichene aktiv-Zeit des Binary-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBV1203

BACnet Binary-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "größte" Version.
Alternativ stehen die Versionen

  • FB_BACnetBV1201
  • FB_BACnetBV1202

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
bValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
bValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
bValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)
bEnElapActvTi | Freigabe zum Beschreiben der abgelaufenen Aktiv-Zeit |
udiElapActvTi | Property-Wert abgelaufene Aktiv-Zeit | ElapsedActiveTime (33)

Ein-Ausgänge

VAR_INPUT

bEnPrioA      : BOOL;
bValPrioA     : BOOL;
usiPrioA      : USINT;
bEnPrioB      : BOOL;
bValPrioB     : BOOL;
usiPrioB      : USINT;
bEnPrioC      : BOOL;
bValPrioC     : BOOL;
usiPrioC      : USINT;
bEnPrioD      : BOOL;
bValPrioD     : BOOL;
usiPrioD      : USINT;
bEnEvtEn      : BOOL;
stEvtEn       : ST_BACnet_EventTransitionBits;
bEnTiDly      : BOOL;
udiTiDly      : UDINT;
bEnNotiCla    : BOOL;
udiNotiCla    : UDINT;
bEnElapActvTi : BOOL;
udiElapActvTi : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

bValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

bValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

bValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnElapActvTi / udiElapActvTi: Freigabe/Property-Wert abgelaufene Aktiv-Zeit.

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOvrrd        : BOOL;
bStaOoServ       : BOOL;
udiStaElapActvTi : UDINT;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Value-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Value-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Value-Objekts an.

udiStaElapActvTi: Zeigt die verstrichene aktiv-Zeit des Binary-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetBV1204

BACnet Binary-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Binary-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleinste" Version.
Alternativ stehen die Versionen

  • FB_BACnetBV1201
  • FB_BACnetBV1202
  • FB_BACnetBV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
bValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA  : BOOL;
bValPrioA : BOOL;
usiPrioA  : USINT;

bEnPrioA: Freigabe zum Beschreiben.

bValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

VAR_OUTPUT

bPrVal           : BOOL;
bStaInAlm        : BOOL;
bStaFlt          : BOOL;
bStaOoServ       : BOOL;
udiActvPrio      : UDINT;
dwObjId          : DWORD;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

bPrVal: Aktueller Wert des Binary-Value-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Binary-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Binary-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetCAL1201

BACnet Kalender.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Calendar-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.

Die Parametrierung des Objektes erfolgt dabei entweder aus dem BACnet heraus oder per Kommentarzeilen im PLC-Deklarationsteil.

Ein-Ausgänge

VAR_OUTPUT

bPrVal    : BOOL;
dwObjId   : DWORD;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

bPrVal: Ein TRUE an diesem Ausgang zeigt an, dass das aktuelle Datum innerhalb der parametrierten Perioden liegt.

dwObjId: BACnet-Objekt-ID des Calendar-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetLoop1201

Universeller BACnet PID-Regler (große Version).

Funktionsbeschreibung

Dieser Baustein bildet den Baustein FB_BA_PIDCtrl als Loop-Objekt im BACnet ab. Das Loop-Objekt auf der BACnet-Seite hat dabei im Wesentlichen die Aufgabe, Parameter und Werte aus der PLC heraus darzustellen und in die PLC zu übertragen. Die Reglerlogik liegt allein in der PLC im untergeordneten FB_BA_PIDCtrl. Es ist möglich, die wesentlichen Parameter von beiden Seiten - PLC und BACnet - zu verändern wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnActn | Freigabe zum Beschreiben des ReglerWirksinns |
bActn | Property-Wert ReglerWirksinn bActn=TRUE, BACnet direct → ReglerWirksinn: E=X-W (Kühlen) bActn=FALSE, BACnet reverse → ReglerWirksinn: E=W-X (Heizen) | Action (2)
bEnPropConst | Freigabe zum Beschreiben der Proportionalitätskonstante (K-Faktor) |
rPropConst | Property-Wert Proportionalitätskonstante (K-Faktor) | ProporttionalConstant (93)
bEnIntgConst | Freigabe zum Beschreiben der Integrationszeit (I-Anteil) |
rIntgConst | Property-Wert Integrationszeit [s] (I-Anteil) | IntegralConstant (49)
bEnDervConst | Freigabe zum Beschreiben der Vorhaltezeit (D-Anteil) |
rDervConst | Property-Wert Vorhaltezeit [s] (D-Anteil) | DerivativeConstant (26)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnErrLmt | Freigabe zum Beschreiben des Meldewertes "Maximalwert Regelabweichung" |
rErrLmt | Property-Wert Meldewert "Maximalwert Regelabweichung" | ErrorLimit (34)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)
bEnMinOut | Freigabe zum Beschreiben der Minimalausgabe am Reglerausgang |
rMinOut | Property-Wert Minimalausgabe am Reglerausgang | MinimumOutput (68)
bEnMaxOut | Freigabe zum Beschreiben der Maximalausgabe am Reglerausgang |
rMaxOut | Property-Wert Maximalausgabe am Reglerausgang | MaximumOutput (61)

Ein-Ausgänge

VAR_INPUT

bEn          : BOOL;
bEnActn      : BOOL;
bActn        : BOOL;
bEnPropConst : BOOL;
rPropConst   : REAL;
bEnIntgConst : BOOL;
rIntgConst   : REAL;
bEnDervConst : BOOL;
rDervConst   : REAL;
bEnEvtEn     : BOOL;
stEvtEn      : ST_BACnet_EventTransitionBits;
bEnErrLmt    : BOOL;
rErrLmt      : REAL;
bEnTiDly     : BOOL;
udiTiDly     : UDINT;
bEnNotiCla   : BOOL;
udiNotiCla   : UDINT;
bEnMinOut    : BOOL;
rMinOut      : REAL;
bEnMaxOut    : BOOL;
rMaxOut      : REAL;
bSync        : BOOL;
lrSync       : LREAL;
lrNz         : LREAL;
udiDampConst : UDINT;
udiMinToMax  : UDINT;
udiMaxToMin  : UDINT;
uiCycCl      : UINT;

bEn: Regleraktivierung.

bEnActn / bActn: Freigabe/Property-Wert Reglerwirksinn: „direct“ oder „reverse“.

bEnPropConst / rPropConst: Freigabe/Property-Wert Proportionalitätskonstante (K-Faktor).

bEnIntgConst / rIntgConst: Freigabe/Property-Wert Integrationszeit [s] (I-Anteil).

bEnDervConst / rDervConst: Freigabe/Property-Wert Vorhaltezeit [s] (D-Anteil).

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnErrLmt / rErrLmt: Freigabe/Property-Wert Meldewert Maximalausgabe.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnMinOut / rMinOut: Freigabe/Property-Wert Maximalausgabe am Reglerausgang.

bEnMaxOut / rMaxOut: Freigabe/Property-Wert Minimalausgabe am Reglerausgang.

bSync: Setzen des Ausganges auf lrSync.

lrSync: Synchronisationswert, auf den die Stellgröße bei einer steigenden Flanke am Eingang bSync gesetzt wird.

lrNz: neutrale Zone.

udiDampConst: Dämpfungszeit des D-Anteiles [s].

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrMinOut auf rMaxOut.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrMaxOut auf rMinOut.

uiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall =1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_OUTPUT

rPrVal     : REAL;
rX         : REAL;
rW         : REAL;
bStaActn   : BOOL;
rStaYMin   : REAL;
rStaYMax   : REAL;
bStaOvrrd  : BOOL;
bStaOoServ : BOOL;
bStaFlt    : BOOL;
bStaInAlm  : BOOL;
bOpLp      : BOOL;
bOthFlt    : BOOL;
stStaFlg   : ST_BACnet_StatusFlags;
dwObjId    : DWORD;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

rPrVal: Stellwert - Reglerausgang.

rX: Aktuell gültiger Istwert aus dem BACnet gelesen.

rW: Aktuell gültiger Sollwert aus dem BACnet gelesen.

bStaActn: Zeigt den Zustand des Wirksinns an.

bStaYMin: Zeigt den unteren Wert der Regler-Ausgangsbegrenzung an.

bStaYMax: Zeigt den oberen Wert der Regler-Ausgangsbegrenzung an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Loop-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Loop-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Loop-Objekts an.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Loop-Objekts an.

bOpLp: Zeigt den Zustand „OpenLoop“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

bOthFlt: Zeigt den Zustand „OtherFault“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

stStaFlg: Ausgabestruktur des BACnet-Status.

dwObjId: BACnet-Objekt-ID des Loop-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetLoop1202

Universeller BACnet PID-Regler. Im Vergleich zum FB_BACnetLoop1201 lässt dieser Baustein das Beschreiben folgender BACnet-Properties aus der SPS heraus nicht zu:

  • Notification Class
  • Minimum Output
  • Maximum Output

Funktionsbeschreibung

Dieser Baustein bildet den Baustein FB_BA_PIDCtrl als Loop-Objekt im BACnet ab. Das Loop-Objekt auf der BACnet.Seite hat dabei im Wesentlichen die Aufgabe, Parameter und Werte aus der PLC heraus darzustellen und in die PLC zu übertragen. Die Reglerlogik liegt allein in der PLC im untergeordneten FB_BA_PIDCtrl. Es ist möglich, die wesentlichen Parameter von beiden Seiten - PLC und BACnet - zu verändern wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnActn | Freigabe zum Beschreiben des ReglerWirksinns |
bActn | Property-Wert ReglerWirksinn bActn=TRUE, BACnet direct → ReglerWirksinn: E=X-W (Kühlen) bActn=FALSE, BACnet reverse → ReglerWirksinn: E=W-X (Heizen) | Action (2)
bEnPropConst | Freigabe zum Beschreiben der Proportionalitätskonstante (K-Faktor) |
rPropConst | Property-Wert Proportionalitätskonstante (K-Faktor) | ProporttionalConstant (93)
bEnIntgConst | Freigabe zum Beschreiben der Integrationszeit (I-Anteil) |
rIntgConst | Property-Wert Integrationszeit [s] (I-Anteil) | IntegralConstant (49)
bEnDervConst | Freigabe zum Beschreiben der Vorhaltezeit (D-Anteil) |
rDervConst | Property-Wert Vorhaltezeit [s] (D-Anteil) | DerivativeConstant (26)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnErrLmt | Freigabe zum Beschreiben des Meldewertes "Maximalwert Regelabweichung" |
rErrLmt | Property-Wert Meldewert "Maximalwert Regelabweichung" | ErrorLimit (34)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)

Ein-Ausgänge

VAR_INPUT

bEn          : BOOL;
bEnActn      : BOOL;
bActn        : BOOL;
bEnPropConst : BOOL;
rPropConst   : REAL;
bEnIntgConst : BOOL;
rIntgConst   : REAL;
bEnDervConst : BOOL;
rDervConst   : REAL;
bEnEvtEn     : BOOL;
stEvtEn      : ST_BACnet_EventTransitionBits;
bEnErrLmt    : BOOL;
rErrLmt      : REAL;
bEnTiDly     : BOOL;
udiTiDly     : UDINT;
bSync        : BOOL;
lrSync       : LREAL;
lrNz         : LREAL;
udiDampConst : UDINT;
udiMinToMax  : UDINT;
udiMaxToMin  : UDINT;
uiCycCl      : UINT;

bEn: Regleraktivierung.

bEnActn / bActn: Freigabe/Property-Wert Reglerwirksinn: „direct“ oder „reverse“.

bEnPropConst / rPropConst: Freigabe/Property-Wert Proportionalitätskonstante (K-Faktor).

bEnIntgConst / rIntgConst: Freigabe/Property-Wert Integrationszeit [s] (I-Anteil).

bEnDervConst / rDervConst: Freigabe/Property-Wert Vorhaltezeit [s] (D-Anteil).

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnErrLmt / rErrLmt: Freigabe/Property-Wert Meldewert Maximalausgabe.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bSync: Setzen des Ausganges auf lrSync.

lrSync: Synchronisationswert, auf den die Stellgröße bei einer steigenden Flanke am Eingang bSync gesetzt wird.

lrNz: neutrale Zone.

udiDampConst: Dämpfungszeit des D-Anteiles [s].

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrMinOut auf rMaxOut.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrMaxOut auf rMinOut.

uiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall =1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_OUTPUT

rPrVal     : REAL;
rX         : REAL;
rW         : REAL;
bStaActn   : BOOL;
rStaYMin   : REAL;
rStaYMax   : REAL;
bStaOvrrd  : BOOL;
bStaOoServ : BOOL;
bStaFlt    : BOOL;
bStaInAlm  : BOOL;
bOpLp      : BOOL;
bOthFlt    : BOOL;
stStaFlg   : ST_BACnet_StatusFlags;
dwObjId    : DWORD;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

rPrVal: Stellwert - Reglerausgang.

rX: Aktuell gültiger Istwert aus dem BACnet gelesen.

rW: Aktuell gültiger Sollwert aus dem BACnet gelesen.

bStaActn: Zeigt den Zustand des Wirksinns an.

bStaYMin: Zeigt den unteren Wert der Regler-Ausgangsbegrenzung an.

bStaYMax: Zeigt den oberen Wert der Regler-Ausgangsbegrenzung an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Loop-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Loop-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Loop-Objekts an.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Loop-Objekts an.

bOpLp: Zeigt den Zustand „OpenLoop“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

bOthFlt: Zeigt den Zustand „OtherFault“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

stStaFlg: Ausgabestruktur des BACnet-Status.

dwObjId: BACnet-Objekt-ID des Loop-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetLoopSeq1201

BACnet Sequenz-Regler.

Funktionsbeschreibung

Dieser Baustein bildet den Baustein FB_BA_SeqCtrl als Loop-Objekt im BACnet ab. Das Loop-Objekt auf der BACnet-Seite hat dabei im Wesentlichen die Aufgabe, Parameter und Werte aus der PLC heraus darzustellen und in die PLC zu übertragen. Die Reglerlogik liegt allein in der PLC im internen FB_BA_SeqCtrl. Es ist möglich, die wichtigsten Parameter von beiden Seiten - PLC und BACnet - zu verändern wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

Wie bei dem "normalen" Sequenzregler vom Typ FB_BA_SeqCtrl, welcher eine reine PLC-Lösung darstellt, funktioniert die BACnet-Version ebenfalls nur mit einem Sequenz-Link-Baustein FB_BA_SeqLink.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnActn | Freigabe zum Beschreiben des ReglerWirksinns |
bActn | Property-Wert ReglerWirksinn bActn=TRUE, BACnet direct → ReglerWirksinn: E=X-W (Kühlen) bActn=FALSE, BACnet reverse → ReglerWirksinn: E=W-X (Heizen) | Action (2)
bEnPropConst | Freigabe zum Beschreiben der Proportionalitätskonstante (K-Faktor) |
rPropConst | Property-Wert Proportionalitätskonstante (K-Faktor) | ProporttionalConstant (93)
bEnIntgConst | Freigabe zum Beschreiben der Integrationszeit (I-Anteil) |
rIntgConst | Property-Wert Integrationszeit [s] (I-Anteil) | IntegralConstant (49)
bEnDervConst | Freigabe zum Beschreiben der Vorhaltezeit (D-Anteil) |
rDervConst | Property-Wert Vorhaltezeit [s] (D-Anteil) | DerivativeConstant (26)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnErrLmt | Freigabe zum Beschreiben des Meldewertes "Maximalwert Regelabweichung" |
rErrLmt | Property-Wert Meldewert "Maximalwert Regelabweichung" | ErrorLimit (34)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)
bEnMinOut | Freigabe zum Beschreiben der Minimalausgabe am Reglerausgang |
rMinOut | Property-Wert Minimalausgabe am Reglerausgang | MinimumOutput (68)
bEnMaxOut | Freigabe zum Beschreiben der Maximalausgabe am Reglerausgang |
rMaxOut | Property-Wert Maximalausgabe am Reglerausgang | MaximumOutput (61)

Ein-Ausgänge

VAR_INPUT

bEn          : BOOL;
usiMyNum     : USINT;
bEnActn      : BOOL;
bActn        : BOOL;
bEnPropConst : BOOL;
rPropConst   : REAL;
bEnIntgConst : BOOL;
rIntgConst   : REAL;
bEnDervConst : BOOL;
rDervConst   : REAL;
bEnEvtEn     : BOOL;
stEvtEn      : ST_BACnet_EventTransitionBits;
bEnErrLmt    : BOOL;
rErrLmt      : REAL;
bEnTiDly     : BOOL;
udiTiDly     : UDINT;
bEnNotiCla   : BOOL;
udiNotiCla   : UDINT;
bEnMinOut    : BOOL;
rMinOut      : REAL;
bEnMaxOut    : BOOL;
rMaxOut      : REAL;
bSync        : BOOL;
lrYSeqInit   : LREAL;
lrSync       : LREAL;
lrNz         : LREAL;
udiDampConst : UDINT;
udiMinToMax  : UDINT;
udiMaxToMin  : UDINT;
uiCycCl      : UINT;

usiMyNum: Ordnungszahl des Sequenzreglers.

bEn: Regleraktivierung.

bEnActn / bActn: Freigabe/Property-Wert ReglerWirksinn: „direct“ oder „reverse“.

bEnPropConst / rPropConst: Freigabe/Property-Wert Proportionalitätskonstante (K-Faktor).

bEnIntgConst / rIntgConst: Freigabe/Property-Wert Integrationszeit [s] (I-Anteil).

bEnDervConst / rDervConst: Freigabe/Property-Wert Vorhaltezeit [s] (D-Anteil).

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnErrLmt / rErrLmt: Freigabe/Property-Wert Meldewert Maximalausgabe.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

bEnMinOut / rMinOut: Freigabe/Property-Wert Maximalausgabe am Reglerausgang.

bEnMaxOut / rMaxOut: Freigabe/Property-Wert Minimalausgabe am Reglerausgang.

lrYSeqInit: Start-Synchronisationswert. Ist dieser Regler derjenige, der bei Aktivierung der Regelsequenz als erster freigegeben wird, so wird dieser Regler mit diesem Wert am Ausgang gestartet.

bSync: Setzen des Ausganges auf lrSync.

lrSync: Synchronisationswert, auf den die Stellgröße bei einer steigenden Flanke am Eingang bSync gesetzt wird.

lrNz: neutrale Zone.

udiDampConst: Dämpfungszeit des D-Anteiles [s].

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrMinOut auf rMaxOut.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrMaxOut auf rMinOut.

uiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall =1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_OUTPUT

rPrVal          : REAL;
rX              : REAL;
rW              : REAL;
bStaSeqCtrlActv : BOOL;
bStaActn        : BOOL;
rStaYMin        : REAL;
rStaYMax        : REAL;
bStaOvrrd       : BOOL;
bStaOoServ      : BOOL;
bStaFlt         : BOOL;
bStaInAlm       : BOOL;
bOpLp           : BOOL;
bOthFlt         : BOOL;
stStaFlg        : ST_BACnet_StatusFlags;
dwObjId         : DWORD;
bErr            : BOOL;
udiErrId        : UDINT;
udiErrArg       : UDINT;

rPrVal: Stellwert - Reglerausgang.

rX: Aktuell gültiger Istwert aus dem BACnet gelesen.

rW: Aktuell gültiger Sollwert aus dem BACnet gelesen.

bStaSeqCtrlActv: Sequenzregler ist freigegeben und betriebsbereit (nicht im Fehlerzustand).

bStaActn: Zeigt den Zustand des Wirksinns an.

bStaYMin: Zeigt den unteren Wert der Regler-Ausgangsbegrenzung an.

bStaYMax: Zeigt den oberen Wert der Regler-Ausgangsbegrenzung an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Loop-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Loop-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Loop-Objekts an.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Loop-Objekts an.

bOpLp: Zeigt den Zustand „OpenLoop“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

bOthFlt: Zeigt den Zustand „OtherFault“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

stStaFlg: Ausgabestruktur des BACnet-Status.

dwObjId: BACnet-Objekt-ID des Loop-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
stSeqLink : ST_BA_SeqLink;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

stSeqLink: Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern und dem Steuerbaustein FB_BA_SeqLink.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetLoopSeq1202

BACnet Sequenz-Regler. Im Vergleich zum FB_BACnetLoopSeq1201 lässt dieser Baustein das Beschreiben folgender BACnet-Properties aus der SPS heraus nicht zu:

  • Notification Class
  • Minimum Output
  • Maximum Output

Funktionsbeschreibung

Dieser Baustein bildet den Baustein FB_BA_SeqCtrl als Loop-Objekt im BACnet ab. Das Loop-Objekt auf der BACnet-Seite hat dabei im Wesentlichen die Aufgabe, Parameter und Werte aus der PLC heraus darzustellen und in die PLC zu übertragen. Die Reglerlogik liegt allein in der PLC im internen FB_BA_SeqCtrl. Es ist möglich, die wichtigsten Parameter von beiden Seiten - PLC und BACnet - zu verändern wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

Wie bei dem "normalen" Sequenzregler vom Typ FB_BA_SeqCtrl, welcher eine reine PLC-Lösung darstellt, funktioniert die BACnet-Version ebenfalls nur mit einem Sequenz-Link-Baustein FB_BA_SeqLink.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnActn | Freigabe zum Beschreiben des ReglerWirksinns |
bActn | Property-Wert ReglerWirksinn bActn=TRUE, BACnet direct → ReglerWirksinn: E=X-W (Kühlen) bActn=FALSE, BACnet reverse → ReglerWirksinn: E=W-X (Heizen) | Action (2)
bEnPropConst | Freigabe zum Beschreiben der Proportionalitätskonstante (K-Faktor) |
rPropConst | Property-Wert Proportionalitätskonstante (K-Faktor) | ProporttionalConstant (93)
bEnIntgConst | Freigabe zum Beschreiben der Integrationszeit (I-Anteil) |
rIntgConst | Property-Wert Integrationszeit [s] (I-Anteil) | IntegralConstant (49)
bEnDervConst | Freigabe zum Beschreiben der Vorhaltezeit (D-Anteil) |
rDervConst | Property-Wert Vorhaltezeit [s] (D-Anteil) | DerivativeConstant (26)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnErrLmt | Freigabe zum Beschreiben des Meldewertes "Maximalwert Regelabweichung" |
rErrLmt | Property-Wert Meldewert "Maximalwert Regelabweichung" | ErrorLimit (34)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)

Ein-Ausgänge

VAR_INPUT

usiMyNum     : USINT;
bEn          : BOOL;
bEnActn      : BOOL;
bActn        : BOOL;
bEnPropConst : BOOL;
rPropConst   : REAL;
bEnIntgConst : BOOL;
rIntgConst   : REAL;
bEnDervConst : BOOL;
rDervConst   : REAL;
bEnEvtEn     : BOOL;
stEvtEn      : ST_BACnet_EventTransitionBits;
bEnErrLmt    : BOOL;
rErrLmt      : REAL;
bEnTiDly     : BOOL;
udiTiDly     : UDINT;
lrYSeqInit   : LREAL;
bSync        : BOOL;
lrSync       : LREAL;
lrNz         : LREAL;
udiDampConst : UDINT;
udiMinToMax  : UDINT;
udiMaxToMin  : UDINT;
uiCycCl      : UINT;

usiMyNum: Ordnungszahl des Sequenzreglers.

bEn: Regleraktivierung.

bEnActn / bActn: Freigabe/Property-Wert ReglerWirksinn: „direct“ oder „reverse“.

bEnPropConst / rPropConst: Freigabe/Property-Wert Proportionalitätskonstante (K-Faktor).

bEnIntgConst / rIntgConst: Freigabe/Property-Wert Integrationszeit [s] (I-Anteil).

bEnDervConst / rDervConst: Freigabe/Property-Wert Vorhaltezeit [s] (D-Anteil).

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnErrLmt / rErrLmt: Freigabe/Property-Wert Meldewert Maximalausgabe.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

lrYSeqInit: Start-Synchronisationswert. Ist dieser Regler derjenige, der bei Aktivierung der Regelsequenz als erster freigegeben wird, so wird dieser Regler mit diesem Wert am Ausgang gestartet.

bSync: Setzen des Ausganges auf lrSync.

lrSync: Synchronisationswert, auf den die Stellgröße bei einer steigenden Flanke am Eingang bSync gesetzt wird.

lrNz: neutrale Zone.

udiDampConst: Dämpfungszeit des D-Anteiles [s].

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrMinOut auf rMaxOut.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrMaxOut auf rMinOut.

uiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall =1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_OUTPUT

rPrVal          : REAL;
rX              : REAL;
rW              : REAL;
bStaSeqCtrlActv : BOOL;
bStaActn        : BOOL;
rStaYMin        : REAL;
rStaYMax        : REAL;
bStaOvrrd       : BOOL;
bStaOoServ      : BOOL;
bStaFlt         : BOOL;
bStaInAlm       : BOOL;
bOpLp           : BOOL;
bOthFlt         : BOOL;
stStaFlg        : ST_BACnet_StatusFlags;
dwObjId         : DWORD;
bErr            : BOOL;
udiErrId        : UDINT;
udiErrArg       : UDINT;

rPrVal: Stellwert - Reglerausgang

rX: Aktuell gültiger Istwert aus dem BACnet gelesen.

rW: Aktuell gültiger Sollwert aus dem BACnet gelesen.

bStaSeqCtrlActv: Sequenzregler ist freigegeben und betriebsbereit (nicht im Fehlerzustand).

bStaActn: Zeigt den Zustand des Wirksinns an.

bStaYMin: Zeigt den unteren Wert der Regler-Ausgangsbegrenzung an.

bStaYMax: Zeigt den oberen Wert der Regler-Ausgangsbegrenzung an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Loop-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Loop-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Loop-Objekts an.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Loop-Objekts an.

bOpLp: Zeigt den Zustand „OpenLoop“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

bOthFlt: Zeigt den Zustand „OtherFault“ des Loop-Objekt-Properties “Reliability” (Zuverlässigkeit) an.

stStaFlg: Ausgabestruktur des BACnet-Status.

dwObjId: BACnet-Objekt-ID des Loop-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
stSeqLink : ST_BA_SeqLink;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

stSeqLink: Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern und dem Steuerbaustein FB_BA_SeqLink.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetMI1203

BACnet Multistate-Input.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Multistate-Input-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

udiInPrVal  : UDINT
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

udiInPrVal: Eingabewert von der Hardware. Der Wertebereich der Status ist 1 bis 1000. Unter Umständen müssen die Eingangssignale der Hardware (z.B. n digitale Eingänge für einen Drehschalter) durch eine Logik so vorkodiert, dass Werte im Rahmen des gültigen Bereiches dargestellt werden.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

udiPrVal       : UDINT;
bStaInAlm      : BOOL;
bStaFlt        : BOOL;
bStaOvrrd      : BOOL;
bStaOoServ     : BOOL;
udiNumOfSta    : UDINT;
dwObjId        : DWORD;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

udiPrVal: Aktueller Wert des Multistate-Input-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Multistate-Input-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Multistate-Input-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Analog-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Multistate-Input-Objekts an.

udiNumOfSta: Zeigt die eingestellte Anzahl der Status an (NumberOfStates, Property Id 74).

dwObjId: BACnet-Objekt-ID des Multistate-Input-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetMO1202

BACnet Multistate-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Multistate-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleine" Version.
Alternativ stehen die Versionen

  • FB_BACnetMO1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
udiValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
udiValPrioA : UDINT;
usiPrioA    : USINT;
bEnFdb      : BOOL;
udiFdbVal   : UDINT;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

udiValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnFdbVal / udiFdbVal: Freigabe/Property-Wert Feedback-Value. Dieser Wert wird aus der PLC heraus auf das Property FeedbackValue (Property Id 40) geschrieben, jedoch nicht per ADS, sondern per zyklischem Interface.
Es dient einer Rückmelde-Überwachung: Ist bEnFdbVal auf TRUE gesetzt, so muss an udiFdbVal innerhalb der Zeit, die im BACnet unter TIME-Delay (Property Id 113) eingetragen ist, den gleichen Wert haben, wie der Ausgang Present-Value. Ansonsten wird im EventState (Property Id 36) durch den Eintrag "offnormal" eine Rückmelde-Diskrepanz angezeigt. Ist bEnFdbVal auf FALSE gesetzt, so wird intern udiFdbVal gleich dem Present-Value gesetzt, und es kann so niemals zu einer Rückmeldediskrepanz kommen.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

udiPrVal       : UDINT;
bStaInAlm      : BOOL;
bStaFlt        : BOOL;
bStaOvrrd      : BOOL;
bStaOoServ     : BOOL;
udiActvPrio    : UDINT;
udiNumOfSta    : UDINT;
dwObjId        : DWORD;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

udiPrVal: Aktueller Wert des Multistate-Output-Objektes - direkt aus dem BACnet eingelesen. Dieser Wert bedarf u.U. einer nachfolgenden Logik, wenn er mit einer Hardware verknüpft werden soll (Anzeigetafel, etc.).

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Multistate-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Multistate-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Multistate-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Multistate-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

udiNumOfSta: Zeigt die eingestellte Anzahl der Status an (NumberOfStates, Property Id 74).

dwObjId: BACnet-Objekt-ID des Multistate-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetMO1203

BACnet Multistate-Output.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Multistate-Output-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "große" Version.
Alternativ stehen die Versionen

  • FB_BACnetMO1202

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
udiValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
udiValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
udiValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
udiValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
udiValPrioA : UDINT;
usiPrioA    : USINT;
bEnPrioB    : BOOL;
udiValPrioB : UDINT;
usiPrioB    : USINT;
bEnPrioC    : BOOL;
udiValPrioC : UDINT;
usiPrioC    : USINT;
bEnPrioD    : BOOL;
udiValPrioD : UDINT;
usiPrioD    : USINT;
bEnFdb      : BOOL;
udiFdbVal   : UDINT;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

udiValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

udiValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

udiValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

udiValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bEnFdbVal / udiFdbVal: Freigabe/Property-Wert Feedback-Value. Dieser Wert wird aus der PLC heraus auf das Property FeedbackValue (Property Id 40) geschrieben, jedoch nicht per ADS, sondern per zyklischem Interface.
Es dient einer Rückmelde-Überwachung: Ist bEnFdbVal auf TRUE gesetzt, so muss an udiFdbVal innerhalb der Zeit, die im BACnet unter TIME-Delay (Property Id 113) eingetragen ist, den gleichen Wert haben, wie der Ausgang Present-Value. Ansonsten wird im EventState (Property Id 36) durch den Eintrag "offnormal" eine Rückmelde-Diskrepanz angezeigt. Ist bEnFdbVal auf FALSE gesetzt, so wird intern udiFdbVal gleich dem Present-Value gesetzt, und es kann so niemals zu einer Rückmeldediskrepanz kommen.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

udiPrVal       : UDINT;
bStaInAlm      : BOOL;
bStaFlt        : BOOL;
bStaOvrrd      : BOOL;
bStaOoServ     : BOOL;
udiActvPrio    : UDINT;
udiNumOfSta    : UDINT;
dwObjId        : DWORD;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

udiPrVal: Aktueller Wert des Multistate-Output-Objektes - direkt aus dem BACnet eingelesen. Dieser Wert bedarf u.U. einer nachfolgenden Logik, wenn er mit einer Hardware verknüpft werden soll (Anzeigetafel, etc.).

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Multistate-Output-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Multistate-Output-Objekts an.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Multistate-Output-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Multistate-Output-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

udiNumOfSta: Zeigt die eingestellte Anzahl der Status an (NumberOfStates, Property Id 74).

dwObjId: BACnet-Objekt-ID des Multistate-Output-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetMV1201

BACnet Multistate-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Multistate-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "kleinste" Version.
Alternativ stehen die Versionen

  • FB_BACnetMV1202
  • FB_BACnetMV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
udiValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
udiValPrioA : UDINT;
usiPrioA    : USINT;

bEnPrioA: Freigabe zum Beschreiben.

udiValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

VAR_OUTPUT

udiPrVal    : UDINT;
bStaInAlm   : BOOL;
bStaFlt     : BOOL;
bStaOoServ  : BOOL;
udiActvPrio : UDINT;
udiNumOfSta : UDINT;
dwObjId     : DWORD;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

udiPrVal: Aktueller Wert des Multistate-Value-Objektes - direkt aus dem BACnet eingelesen.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Multistate-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Multistate-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Multistate-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

udiNumOfSta: Zeigt die eingestellte Anzahl der Status an (NumberOfStates, Property Id 74).

dwObjId: BACnet-Objekt-ID des Multistate-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetMV1202

BACnet Multistate-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Multistate-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "mittlere" Version.
Alternativ stehen die Versionen

  • FB_BACnetMV1201
  • FB_BACnetMV1203

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
udiValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnRlqshDef | Freigabe zum Beschreiben des Relinquish-Defaults |
udiRlqshDef | zu schreibender Wert auf das Property Relinquish-Default | Relinquish-Default (104)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
udiValPrioA : UDINT;
usiPrioA    : USINT;
bEnRlqshDef : BOOL;
udiRlqshDef : UDINT;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

udiValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnRlqshDef / udiRlqshDef: Freigabe/Property-Wert Relinquish-Default.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

udiPrVal       : UDINT;
udiStaRlqshDef : UDINT;
bStaInAlm      : BOOL;
bStaFlt        : BOOL;
bStaOoServ     : BOOL;
udiActvPrio    : UDINT;
udiNumOfSta    : UDINT;
dwObjId        : DWORD;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

udiPrVal: Aktueller Wert des Multistate-Value-Objektes - direkt aus dem BACnet eingelesen.

udiStaRlqshDef: Zeigt den Zustand des Relinquish-Default an.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Multistate-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Multistate-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Multistate-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

udiNumOfSta: Zeigt die eingestellte Anzahl der Status an (NumberOfStates, Property Id 74).

dwObjId: BACnet-Objekt-ID des Multistate-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetMV1203

BACnet Multistate-Value.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Multistate-Value-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.
Bei diesem Baustein handelt es sich vom Funktionsumfang her um um die "größte" Version.
Alternativ stehen die Versionen

  • FB_BACnetMV1201
  • FB_BACnetMV1202

zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnPrioA | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioA eingetragen ist |
udiValPrioA | zu schreibender Wert | Priority-Array (87)
usiPrioA | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioB | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioB eingetragen ist |
udiValPrioB | zu schreibender Wert | Priority-Array (87)
usiPrioB | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioC | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioC eingetragen ist |
udiValPrioC | zu schreibender Wert | Priority-Array (87)
usiPrioC | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnPrioD | Freigabe zum Beschreiben des Priority-Arrays auf die Priorität, welche unter usiPrioD eingetragen ist |
udiValPrioD | zu schreibender Wert | Priority-Array (87)
usiPrioD | Auswahl der zu beschreibenden Priorität (1..16) im Priority-Array |
bEnRlqshDef | Freigabe zum Beschreiben des Relinquish-Defaults |
udiRlqshDef | zu schreibender Wert auf das Property Relinquish-Default | Relinquish-Default (104)
bEnEvtEn | Freigabe zum Beschreiben des Bitmusters EventEnable |
stEvtEn | Property-Wert Bitmuster EventEnable | EventEnable (35)
bEnTiDly | Freigabe zum Beschreiben der Meldeverzögerung [s] |
udiTiDly | Property-Wert Meldeverzögerung [s] | TimeDelay (113)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnPrioA    : BOOL;
udiValPrioA : UDINT;
usiPrioA    : USINT;
bEnPrioB    : BOOL;
udiValPrioB : UDINT;
usiPrioB    : USINT;
bEnPrioC    : BOOL;
udiValPrioC : UDINT;
usiPrioC    : USINT;
bEnPrioD    : BOOL;
udiValPrioD : UDINT;
usiPrioD    : USINT;
bEnRlqshDef : BOOL;
udiRlqshDef : UDINT;
bEnEvtEn    : BOOL;
stEvtEn     : ST_BACnet_EventTransitionBits;
bEnTiDly    : BOOL;
udiTiDly    : UDINT;
bEnNotiCla  : BOOL;
udiNotiCla  : UDINT;

bEnPrioA: Freigabe zum Beschreiben.

udiValPrioA: Wert, der in das Priority-Array auf die Priorität usiPrioA geschrieben wird.

usiPrioA: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioB: Freigabe zum Beschreiben.

udiValPrioB: Wert, der in das Priority-Array auf die Priorität usiPrioB geschrieben wird.

usiPrioB: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioC: Freigabe zum Beschreiben.

udiValPrioC: Wert, der in das Priority-Array auf die Priorität usiPrioC geschrieben wird.

usiPrioC: Auswahl der zu beschreibenden Priorität (1..16).

bEnPrioD: Freigabe zum Beschreiben.

udiValPrioD: Wert, der in das Priority-Array auf die Priorität usiPrioD geschrieben wird.

usiPrioD: Auswahl der zu beschreibenden Priorität (1..16).

bEnRlqshDef / udiRlqshDef: Freigabe/Property-Wert Relinquish-Default.

bEnEvtEn / stEvtEn: Freigabe/Property-Wert Bitmuster EventEnable.

bEnTiDly / udiTiDly: Freigabe/Property-Wert Meldeverzögerung [s].

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

udiPrVal       : UDINT;
udiStaRlqshDef : UDINT;
bStaInAlm      : BOOL;
bStaFlt        : BOOL;
bStaOoServ     : BOOL;
udiActvPrio    : UDINT;
udiNumOfSta    : UDINT;
dwObjId        : DWORD;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

udiPrVal: Aktueller Wert des Multistate-Value-Objektes - direkt aus dem BACnet eingelesen.

udiStaRlqshDef: Zeigt den Zustand des Relinquish-Default an.

bStaInAlm: Zeigt den Zustand des Statusflags „InAlarm“ des Multistate-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Multistate-Value-Objekts an.

bStaOoServ: Zeigt den Zustand des Statusflags „OutOfService“ des Multistate-Value-Objekts an.

udiActvPrio: Zeigt an, welche Priorität die aktive ist.

udiNumOfSta: Zeigt die eingestellte Anzahl der Status an (NumberOfStates, Property Id 74).

dwObjId: BACnet-Objekt-ID des Multistate-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetSchedB1201

BACnet Scheduler vom Ausgabetyp BOOL.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Scheduler-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung. Der Ausgabetyp des Objektes ist vom Typ BOOL.

Die Parametrierung des Objektes erfolgt dabei entweder aus dem BACnet heraus oder per Kommentarzeilen im PLC-Deklarationsteil.

Ein-Ausgänge

VAR_OUTPUT

bPrVal     : BOOL;
bStaOoServ : BOOL;
bStaFlt    : BOOL;
dwObjId    : DWORD;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

bPrVal: Ausgabewert des Zeitplans in Anhängigkeit des aktuell eingestellten Datums/Uhrzeit und der Zeitplaneinträge.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Value-Objekts an.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetSchedR1201

BACnet Scheduler vom Ausgabetyp REAL.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Scheduler-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung. Der Ausgabetyp des Objektes ist vom Typ REAL.

Die Parametrierung des Objektes erfolgt dabei entweder aus dem BACnet heraus oder per Kommentarzeilen im PLC-Deklarationsteil.

Ein-Ausgänge

VAR_OUTPUT

rPrVal     : REAL;
bStaOoServ : BOOL;
bStaFlt    : BOOL;
dwObjId    : DWORD;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

rPrVal: Ausgabewert des Zeitplans in Anhängigkeit des aktuell eingestellten Datums/Uhrzeit und der Zeitplaneinträge.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Value-Objekts an.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetSchedUdi1201

BACnet Scheduler vom Ausgabetyp UDINT.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Scheduler-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zu Verfügung. Der Ausgabetyp des Objektes ist vom Typ UDINT.

Die Parametrierung des Objektes erfolgt dabei entweder aus dem BACnet heraus oder per Kommentarzeilen im PLC-Deklarationsteil.

Ein-Ausgänge

VAR_OUTPUT

udiPrVal   : UDINT;
bStaOoServ : BOOL;
bStaFlt    : BOOL;
dwObjId    : DWORD;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

udiPrVal: Ausgabewert des Zeitplans in Anhängigkeit des aktuell eingestellten Datums/Uhrzeit und der Zeitplaneinträge.

bStaOvrrd: Zeigt den Zustand des Statusflags „Overridden“ des Binary-Value-Objekts an.

bStaFlt: Zeigt den Zustand des Statusflags „Fault“ des Binary-Value-Objekts an.

dwObjId: BACnet-Objekt-ID des Binary-Value-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BACnetTLog1201

BACnet Trend-Log.

Funktionsbeschreibung

Dieser Baustein generiert ein BACnet-Trend-Log-Objekt und stellt innerhalb der PLC Schreibe- und Lesevariablen für das Objekt zur Verfügung.

Es ist möglich, die Parameter, welche von der PLC aus beschreibbar sind, auch von der BACnet-Seite her zu beschreiben, wobei die letzte Änderung immer die gültige ist. Die Übertragung dieser Parameter erfolgt aus der PLC heraus per ADS und in die PLC hinein per zyklischem Interface. PLC-seitig haben alle Parameter zusätzlich einen Enable-Eingang: Ist der betreffende Enable-Eingang erstmalig gesetzt (steigende Flanke), so wird der am Parameter-Eingang stehende Wert in jedem Fall übertragen, im weiteren Verlauf – bei gesetztem Enable – nur noch bei Werteänderung, um so den ADS-Verkehr zu mindern. Ist der Enable-Eingang nicht gesetzt, so erfolgt keine Übertragung.

PLC-Variable | Bemerkung | BACnet-Property (Property ID)
bEnNotiCla | Freigabe zum Beschreiben der Meldeklasse |
udiNotiCla | Property-Wert Meldeklasse | NotificationClass (17)

Ein-Ausgänge

VAR_INPUT

bEnNotiCla    : BOOL;
udiNotiCla    : UDINT;

bEnNotiCla / udiNotiCla: Freigabe/Property-Wert Meldeklasse.

VAR_OUTPUT

udiRecCnt : UDINT;
dwObjId   : DWORD;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

udiRecCnt: Anzahl der geloggten Werte (Property ID 141).

dwObjId: BACnet-Objekt-ID des Trend-Log-Objektes.

bErr: Zeigt allgemein einen Fehler im Baustein an. Die Ursache kann in BACnet, im ADS-Datenaustausch oder auch an falscher Parametrierung liegen.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

stComnMsg : ST_BA_ComnMsg;
fbDvc     : FB_BACnet_Device;

stComnMsg: Referenz auf die Verbindungsstruktur zum Melde-Sammelbaustein FB_BA_ComMsg.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Anlg3Pnt

Der Funktionsbaustein ist für die Ansteuerung von Dreipunktstellantrieben zur Betätigung von Ventilen oder Klappen vorgesehen.

Funktionsbeschreibung

Der Baustein wandelt ein stetiges Stellsignal für die Positionierung des Stellantriebs in die binären Befehle für das Auf- und Zufahren um.

Ist die Abweichung zwischen dem Positionssollwert lrIn und dem errechneten Positionsistwert lrPos des Stellorgans größer als der mit der Variable lrHys/2 eingestellte Schwellwert, dann beginnt der Funktionsbaustein abhängig von dem Betrag der Regelabweichung durch Schalten der Ausgänge bOpn oder bCls die Position zu korrigieren:

 | bOpn | bCls
lrIn - lrPos > lrHys/2 | TRUE | FALSE
lrIn - lrPos < - lrHys/2 | FALSE | TRUE

Die Eingabe lrIn wird intern automatisch auf den Bereich von 0..100% begrenzt.

Eine steigende Flanke an bRef löst einen Referenzierbefehl (Setzen der errechneten Istposition auf lrRefVal) aus.

Falls der Antrieb über Endlagenschalter verfügt, können diese auch direkt mittels Digitaleingang erfasst und zur Referenzierung an bRef verwendet werden.

Ein-/Ausgänge

VAR_INPUT

lrIn     : LREAL;
lrHys    : LREAL;
udiTiCls : UDINT;
udiTiOpn : UDINT;
bRef     : BOOL;
lrRefVal : LREAL;

lrIn: Sollwert für die Position des Stellantriebs [0 - 100%].

lrHys: Hysterese für die Position des Stellantriebs [0 - 100%].

udiTiCls: Fahrzeit des Stellantriebs von auf nach zu [ms].

udiTiOpn: Fahrzeit des Stellantriebs von zu nach auf [ms].

bRef: Flanke referenziert den internen Positionsspeicher des Antriebs auf Wert von lrRefVal [0 - 100%].

lrRefVal: Wert für die Referenzierung des Stellantrieb mit bRef [0 - 100%].

VAR_OUTPUT

bCls     : BOOL;
bOpn     : BOOL;
lrPos    : LREAL;

bCls: Ausgang für das Zufahren des Stellantriebs.

bOpn: Ausgang für das Auffahren des Stellantriebs.

lrPos: aktuelle errechnete Position des Stellantriebs [0 - 100%].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_ICtrlStp

IN VORBEREITUNG !!!!

Integralstufenschalter

Funktionsbeschreibung

YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

Fehlerbehandlung

Die Eingabewerte für lrX[n+1] müssen immer mindestens um den Betrag von 0.0000001 größer als von lrX[n] sein.
Im Fehlerfall zeigt die Variable udiErrId an, an welchem Punkt der Kennlinie die Werte nicht monoton steigend sind.

Ein-/Ausgänge

VAR_INPUT

bEn           : BOOL;
rSp           : REAL;
rX            : REAL;
bActn         : BOOL;
udiNumOfStp   : UDINT;
udiStartStp   : UDINT;
bStpUp        : BOOL;
bStpDwn       : BOOL;
bEnManStp     : BOOL;
udiManStp     : UDINT;
rSpHysHi      : REAL;
rSpHysLo      : REAL;
udiTiDlyStpHi : UDINT;
udiTiDlyStpLo : UDINT;
rIntgHi       : REAL;
rIntgLo       : REAL;
udiTiIntgHi   : UDINT;
udiTiIntgLo   : UDINT;
bBlkg         : BOOL;
bRst          : BOOL;

bEn: Freigabe des Bausteins.

rSp: Sollwert.

rX: Istwert.

bActn : Wirksinn; TRUE = Kühlbetrieb = direct, FALSE = Heizbetrieb = reverse.

udiNumOfStp: Anzahl Schritte.

udiStartStp: Startschritt wenn der Baustein frei gegeben wurde bEn.

bStpUp: Mit einer steigenden Flanke erhöht sich udiStep um 1.

bStpDwn: Mit einer steigenden Flanke erniedrigt sich udiStep um 1.

bEnManStp: Freigabe manuelle Vorgabe von udiStep durch udiManStp.

udiManStp: Manuelle Vorgabe von udiStp.

rSpHysHi: Sollwert Hysterese hoch, ist rX > rSp + rSpHysHi, so startet die Integration.

rSpHysLo: Sollwert Hysterese niedrig, ist rX < rSp + rSpHysLo, so startet die Integration.

udiTiDlyStpHi: Zeitverzögerung um udiStep um 1 zu erhöhen oder erniedrigen in Abhängigkeit von bActn, wenn rI_Ctrl = rIntgHi ist.

udiTiDlyStpLo: Zeitverzögerung um udiStep um 1 zu erhöhen oder erniedrigen in Abhängigkeit von bActn, wenn rI_Ctrl = rIntgLo ist.

rIntgHi: Vorgabe Integral hoch. Ist rI_Ctrl = rIntgHi und udiTiDlyStpHi ist abgelaufen, so erhöht oder erniedrigt sich udiStp in Abhängigkeit von bActn um 1.

rIntgLo: Vorgabe Integral niedrig. Ist rI_Ctrl = rIntgLo und udiTiDlyStpLo ist abgelaufen, so erhöht oder erniedrigt sich udiStp in Abhängigkeit von bActn um 1.

udiTiIntgHi: Integrationszeit hoch, Vorschlag 60sec.

udiTiIntgLo: Integrationszeit niedrig, Vorschlag 60sec.

bBlkg: TRUE heisst, dass udiStp = udiNumOfStp ist, FALSE bedeutet, dass der Baustein normal arbeitet.

bRst: Reset im Fehlerfall.

VAR_OUTPUT

udiStp           : UDINT;
rI_Ctrl          : REAL;
udiRemTiDlyStpHi : UDINT;
udiRemTiDlyStpLo : UDINT;
bSpHi            : BOOL;
bSpLo            : BOOL;
rE               : REAL;
rSpHi            : REAL;
rSpLo            : REAL;
bUp              : BOOL;
bDwn             : BOOL;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

udiStp: Stufenangabe von 0 bis udiNumOfStp. Mit jeder Änderung von udiStp wird die Integration neu gestartet.

rI_Ctrl: Anzeige Integration.

udiRemTiDlyStpHi: Anzeige Ablauf Zeitverzögerung udiTiDlyStpHi.

udiRemTiDlyStpLo: Anzeige Ablauf Zeitverzögerung udiTiDlyStpLo.

bSpHi: TRUE bedeutet, dass rSpHi überschritten ist.

bSpLo: TRUE bedeutet, dass rSpHi unterschritten ist.

rE: rE = rSp - rX.

rSpHi: rSpHi = rSp + rSpHysHi

rSpLo: rSpLo = rSp - rSpHysLo.

bUp: TRUE heisst, dass udiStp um 1 erhöht wurde.

bDwn: TRUE heisst, dass udiStp um 1 erniedrigt wurde.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_RampLmt

Rampenbegrenzung.

Funktionsbeschreibung

Der Funktionsbaustein limitiert die Anstiegs- bzw. Abfallgeschwindigkeit eines Eingangssignals.
Beim Anstieg von rIn wird der Ausgang rOut auf die Steigung von (rHi-rLo)/udiTiUp begrenzt.
Beim Abfallen von rIn wird der Ausgang rOut auf die Steigung von (rHi-rLo)/udiTiDwn begrenzt.

Ein-/Ausgänge

VAR_INPUT

bEn         : BOOL;
bEnRamp     : BOOL;
rIn         : REAL;
rHi         : REAL;
rLo         : REAL;
udiTiUp     : UDINT;
udiTiDwn    : UDINT;

bEn: Freigabe Baustein, wenn FALSE, dann ist rOut = 0.0.

bEnRamp: Freigabe Rampenbegrenzung, wenn FALSE, dann ist rOut = rIn.

rIn: Eingangswert der Rampenfunktion

rHi: Obere Stützstelle zur Berechnung der Rampen.

rLo: untere Stützstelle zur Berechnung der Rampen. rHi muss größer als rLo sein, ansonsten wird ein Fehler ausgegeben!

udiTiUp: Anstiegszeit [s].

udiTiDwn: Abfallzeit [s]

VAR_OUTPUT

rOut        : REAL;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

rOut: durch die Rampen steigungs-begrenztes Ausgangssignal

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SldgLmtMonit

Funktionsbaustein für eine gleitende Grenzwertüberwachung

Funktionsbeschreibung

Der Funktionsbaustein kann für eine gleitende Grenzwertüberwachung einegesetzt werden. Dieses kann eine Funktionsüberwachung eines Regelventils durch Vergleich des Stellausgangs und der Stellungsrückmeldung sein.

Wichtig ist, dass rHiLmt nicht größer gleich rLoLmt sein darf. Ist dieses der Fall, dann ist rOutHiLmt = rHiLmt und rOutLoLmt = rHiLmt - 0,05.

Diagramm 1

Ein-/Ausgänge

VAR_INPUT

bEn             : BOOL;
rX              : REAL;
rHiLmt          : REAL;
rLoLmt          : REAL;
udiTiDlyHiLmt   : UDINT;[s]
udiTiDlyLoLmt   : UDINT;[s]

bEn: Freigabe Baustein

rX: Istwert

rHiLmt: Oberer Grenzwert. rOutHiLmt = rHiLmt

rLoLmt: Unterer Grenzwert. rOutLoLmt = rLoLmt

udiTiDlyHiLmt : Ist rX größer rOutHiLmt und die Zeitverzögerung udiTiDlyHiLmt abgelaufen, so wird bQ gesetzt, siehe Diagramm 1.

udiTiDlyLoLmt : Ist rX kleiner rOutLoLmt und die Zeitverzögerung udiTiDlyLoLmt abgelaufen, so wird bQ gesetzt, siehe Diagramm 1 .

VAR_OUTPUT

bQ               : BOOL;
rOutHiLmt        : REAL;
rOutLoLmt        : REAL;
udiRemTiDlyHiLmt : UDINT;[s]
udiRemTiDlyLoLmt : UDINT;[s]

bQ: Grenzwertüberwachung ist frei gegeben. bQ kann nur über bEn = FALSE zurück gesetzt werden.

rOutHiLmt: Ausgabe oberer Grenzwert

rOutLoLmt : Ausgabe unterer Grenzwert

udiRemTiDlyHiLmt : Countdown der Verzögerung udiTiDlyHiLmt

udiRemTiDlyLoLmt : Countdown der Verzögerung udiTiDlyLoLmt

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_StpDly

Dieser Baustein dient zur verzögerten Ausgabe von Schaltstufen.

Funktionsbeschreibung

Die Funktion wird über den Eingang bEn aktiviert. Ist dies der Fall, die Zahl die am Eingang udiValI anliegt verzögert am den Ausgang udiValQ ausgegeben. Ist die Zahl am Eingang größer als die am Ausgang, so verzögert sich die erneute Ausgabe um udiDlyStpUp [s], ist sie kleiner, dann um udiDlyStpDwn.

Hinweis: Ändert sich während des Timerablaufs nach oben die Zahl am Ausgang auch weiter nach oben, so wird der Zeitgeber NICHT erneut gestartet. Das Gleiche gilt für den Ablauf nach unten. Der jeweilige Schaltzyklus gilt als abgeschlossen, wenn der dazugehörige Countdown abgelaufen ist oder wenn während des Ablaufes am Eingang (wieder) die gleiche Zahl, wie am Ausgang anliegt.

Steht bEn auf FALSE, so wird der Eingangswert udiValI unverzögert an udiValQ ausgegeben.

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
udiValI      : UDINT;
udiDlyStpUp  : UDINT;
udiDlyStpDwn : UDINT;

bEn: Ein TRUE-Signal an diesem Eingang aktiviert den Baustein. Der Wert am Eingang udiVall wird nur noch verzögert an udiValQ ausgegeben. Steht bEn auf FALSE, so wird der Eingangswert udiValI unverzögert ausgegeben.

udiValI: Eingangswert.

udiDlyStpUp: Verzögerungszeit zum Hochschalten [s].

udiDlyStpDwn: Verzögerungszeit zum Herunterschalten [s].

VAR_OUTPUT

udiValQ        : UDINT;
udiRemTiDlyUp  : UDINT;
udiRemTiDlyDwn : UDINT;

udiValQ: Ausgangswert.

udiRemTiDlyUp: Countdown zum Hochschalten [s].

udiRemTiDlyDwn: Countdown zum Herunterschalten [s].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Swi2P

Zweipunktschalter.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_Swi2P ist ein Zweipunktschalter mit einem Ein- und einem Ausschaltpunkt.

Eine generelle Freigabe des Funktionsbausteins erfolgt am Eingang bEn. Solange bEn FALSE ist ist der Ausgang bQ FALSE. Der Wirksinn des Bausteins hängt von der relativen Lage des Einschaltpunktes und des Ausschaltpunktes ab.

Ist der Einschaltpunkt größer als der Ausschaltpunkt dann ist der Wirksinn direkt bzw. gleichläufig (Kühlbetrieb).

Ist der Ausschaltpunkt größer als der Einschaltpunkt dann ist der Wirksinn direkt bzw. gegenläufig (Heizbetrieb).

Ein-/Ausgänge

VAR_INPUT

bEn    : BOOL;
rIn    : REAL;
rOn    : REAL;
rOff   : REAL;

bEn: generelle Freigabe des Funktionsbausteins.

rIn: Eingangswert.

rOn: Einschaltpunkt.

rOff: Ausschaltpunkt.

VAR_OUTPUT

bQ     : BOOL;

bQ: Steuerausgang.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Swi2P_Dly

Zweipunktschalter mit zeitlicher Verzögerung.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_Swi2P_Dly ist ein Zweipunktschalter mit einem Ein- und einem Ausschaltpunkt. Im Gegensatz zum FB_BA_Swi2P wird hier eine Änderung des Ausgangssignals zeitlich verzögert.
Eine generelle Freigabe des Funktionsbausteins erfolgt am Eingang bEn. Solange bEn FALSE ist ist der Ausgang bQ FALSE. Der Wirksinn des Bausteins hängt von der relativen Lage des Einschaltpunktes und des Ausschaltpunktes ab.

Ist der Einschaltpunkt größer als der Ausschaltpunkt dann ist der Wirksinn direkt bzw. gleichläufig (Kühlbetrieb).

Ist der Ausschaltpunkt größer als der Einschaltpunkt dann ist der Wirksinn direkt bzw. gegenläufig (Heizbetrieb).

Ein-/Ausgänge

VAR_INPUT

bEn       : BOOL;
rIn       : REAL;
rOn       : REAL;
rOff      : REAL;
udiDlyOn  : UDINT;
udiDlyOff : UDINT;

bEn: generelle Freigabe des Funktionsbausteins.

rIn: Eingangswert.

rOn: Einschaltpunkt.

rOff: Ausschaltpunkt.

udiDlyOn: Einschaltverzögerung [s].

udiDlyOff: Ausschaltverzögerung [s].

VAR_OUTPUT

bQ             : BOOL;
udiRemTiDlyOn  : UDINT;
udiRemTiDlyOff : UDINT;

bQ: Steuerausgang.

udiRemTiDlyOn: Countdown Einschaltverzögerung [s].

udiRemTiDlyOff: Countdown Ausschaltverzögerung [s].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SwiHys2P

Zweipunktschalter um einen Schaltpunkt.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_SwiHys2P ist ein Zweipunktschalter mit eistellbarer Hysterese und Hystereseoffset.

Eine generelle Freigabe des Funktionsbausteins erfolgt am Eingang bEn. Bei gesperrten Funktionsbaustein ist der Ausgang bQ FALSE. Am Eingang rSp wird der Sollwert für den Zweipunktschalter angeschlossen. Der Wirksinn des Bausteins hängt von der Eingangsvariablen bActn ab.

Die aktiven Schaltpunkte ergeben sich aus dem Sollwert, der Hysterese und dem Offset für die Hysterese. Diese werden an den Ausgängen rSwiHi und rSwiLo ausgegeben.

  • Der obere Schaltpunkt ergibt sich aus rSp + rHys/2 + rHysOffs.
  • Der untere Schaltpunkt ergibt sich aus rSp - rHys/2 + rHysOffs.

Ist bActn TRUE ergibt sich ein direkter bzw. gleichläufiger Wirksinn (Kühlbetrieb).

Ist bActn FALSE ergibt sich ein indirekter bzw. gegenläufiger Wirksinn (Heizbetrieb).

Ein-/Ausgänge

VAR_INPUT

bEn      : BOOL;
rIn      : REAL;
rSp      : REAL;
rHys     : REAL;
rHysOffs : REAL;
bActn    : BOOL;

bEn: generelle Freigabe des Funktionsbausteins.

rIn: Eingangswert.

rSp: Sollwerteingang.

rHys: Hysterese.

rHysOffs: Offset für die Hysterese.

bActn: Wirksinn.

VAR_OUTPUT

bQ:            BOOL;
rSwiHi:        REAL;
rSwiLo:        REAL;

bQ: Ausgang.

rSwiHi: oberer Schaltpunkt.

rSwiLo: unterer Schaltpunkt.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SwiHys2P_Dly

Zweipunktschalter um einen Schaltpunkt mit zeitlicher Verzögerung.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_SwiHys2P_Dly ist ein Zweipunktschalter mit Hysterese. Im Gegensatz zum FB_BA_SwiHys2P wird hier eine Änderung des Ausgangssignals zeitlich verzögert.

Eine generelle Freigabe des Funktionsbausteins erfolgt am Eingang bEn. Bei gesperrten Funktionsbaustein ist der Ausgang bQ FALSE. Am Eingang rSp wird der Sollwert für den Zweipunktschalter angeschlossen. Der Wirksinn des Bausteins hängt von der Eingangsvariablen bActn ab.

Die aktiven Schaltpunkte ergeben sich aus dem Sollwert, der Hysterese und dem Offset für die Hysterese. Diese werden an den Ausgängen rSwiHi und rSwiLo ausgegeben.

  • Der obere Schaltpunkt ergibt sich aus rSp + rHys/2 + rHysOffs.
  • Der untere Schaltpunkt ergibt sich aus rSp - rHys/2 + rHysOffs.

Ist bActn TRUE ergibt sich ein direkter bzw. gleichläufiger Wirksinn (Kühlbetrieb).

Ist bActn FALSE ergibt sich ein indirekter bzw. gegenläufiger Wirksinn (Heizbetrieb).

Ein-/Ausgänge

VAR_INPUT

bEn       : BOOL;
rIn       : REAL;
rSp       : REAL;
rHys      : REAL;
rHysOffs  : REAL;
udiDlyOn  : UDINT;
udiDlyOff : UDINT;
bActn     : BOOL;

bEn: generelle Freigabe des Funktionsbausteins.

rIn: Eingangswert.

rSp: Sollwerteingang.

rHys: Hysterese.

rHysOffs: Offset für die Hysterese.

udiDlyOn: Einschaltverzögerung [s].

udiDlyOff: Ausschaltverzögerung [s].

bActn: Wirksinn.

VAR_OUTPUT

bQ:            BOOL;
rSwiHi:        REAL;
rSwiLo:        REAL;

bQ: Ausgang.

rSwiHi: oberer Schaltpunkt.

rSwiLo: unterer Schaltpunkt.

udiRemTiDlyOn: Countdown Einschaltverzögerung [s].

udiRemTiDlyOff: Countdown Ausschaltverzögerung [s].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SwiMonit

Dieser Baustein dient zur Überwachung von Endlagenschaltern, z.B. bei einer Zweipunktklappe

Funktionsbeschreibung

Der Funktionsbaustein besteht aus 2 Schritten um einen Endlagenschalter zu überwachen.
Schritt 1 beinhaltet die Überwachung während der Fahrzeit des Aktors.
Schritt 2 überwacht den geöffneten Zustand des Aktors.

Die Funktion wird über den Eingang bEn aktiviert. Ist bEn FALSE, so sind die Ausgänge bErrOpn/bErrSwi ebenfalls FALSE.

Schritt 1: Steht am Eingang bIn steht ein TRUE an, dann läuft die Verfahrzeit des Aktors udiTiAct/udiRT_TiAct ab. Steht innerhalb dieser Zeit am Eingang bSwi kein TRUE an, so wird über den Ausgang bErrOpn eine Störung angezeigt. Wird bSwi aber innerhalb der Zeitangabe udiTiAct TRUE, so ist Schritt 1 abgearbeitet und Schritt 2 wird aktiv.

Schritt 2: bIn und bSwi sind TRUE. Wird bIn FALSE, so wird Schritt 1 wieder aktiv. Wird bSwi FALSE und innerhalb der Zeitangabe udiTiDlyMonitSwi/udiRT_TiDlyMonitSwi nicht wieder TRUE, so wird über den Ausgang bErrSwi eine Störung angezeigt.

Die Störungen bErrOpn/bErrSwi werden zurück gesetzt, wenn entweder bEn oder bIn FALSE sind.

Ein-/Ausgänge

VAR_INPUT

bEn                : BOOL;
bIn                : BOOL;
bSwi               : BOOL;
udiTiAct           : UDINT;
udiTiDlyMonitSwi   : UDINT;

bEn: Ein TRUE-Signal an diesem Eingang aktiviert den Baustein. Der Wert am Eingang udiVall wird nur noch verzögert an udiValQ ausgegeben. Steht bEn auf FALSE, so wird der Eingangswert udiValI unverzögert ausgegeben.

bIn: Die Ansteuerung des Aktors muss an diesem Eingang angelegt werden.

bSwi: Endlagenschalter Aktor

udiTiAct: Verfahrzeit des Aktors [s].

udiTiDlyMonitSwi: Verzögerungszeit des Endlagenschalters im geöffneten Zustand [s]. Die Zeit wird aktiv, wenn bIn TRUE ist und der Endlagenschalter bSwi seinen Zustand von TRUE nach FALSE ändert.

VAR_OUTPUT

bErrOpn              : BOOL;
bErrSwi              : BOOL;
udiRT_TiAct          : UDINT;
udiRT_TiDlyMonitSwi  : UDINT;

bErrOpn: Störung Schritt 1 Endlagenschalter hat während des Verfahrens nicht die Endlage erreicht

bErrSwi: Störung Schritt 2 Endlagenschalter bzw. der Aktor hat im geöffneten Zustand seine Endlage verlassen

udiRT_TiAct: Countdown um den Ausgang bErrOpn zu setzen [s]. Die Vorgabe kommt von udiTiAct.

udiRT_TiDlyMonitSwi: Countdown zum um den Ausgang bErrSwi zu setzen [s]. Die Vorgabe kommt von udiTiDlyMonitSwi.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_FltrPT1

Filter erster Ordnung.

Ein-/Ausgänge

VAR_INPUT

lrIn         : LREAL;
udiDampConst : UDINT;
bSetActl     : BOOL;

lrIn: Eingangssignal

udiDampConst: Filterzeitkonstante [s].

bSetActl: Eine steigende Flanke an diesem Eingang setzt den Ausgangswert lrOut auf den Eingangswert lrIn.

VAR_OUTPUT

lrOut            : LREAL;

lrOut: gefiltertes Ausgangssignal.

Hinweis: Beim ersten Aufruf des Bausteines (Systemstart) wird der Ausgang lrOut einmalig automatisch gleich dem Eingang lrIn gesetzt.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_PIDCtrl

Universeller PID-Regler.

Funktionsbeschreibung

Passiv-Verhalten (bEn = FALSE oder bErr = TRUE)

Die Ausgänge werden wie folgt gesetzt:

lrY | 0,0
lrE | 0,0
bAct | FALSE
b2PtAct | FALSE
bARW | FALSE
bMinLim | FALSE
bMaxLim | FALSE
bIncLim | FALSE
bDecLim | FALSE
Im Fehlerfall steht bErr auf TRUE - udiErrId und udiErrArg beschreiben den Fehler. Die internen Werte für P-, I-, und D-Anteil werden auf 0 gesetzt, ebenso die Werte für den I- und D-Anteil vom vorhergehenden Zyklus. Damit wird die Stellgröße bei einem Neustart im ersten Zyklus "sauber", das heißt ohne Vergangenheitswerte berechnet.

Aktiv-Verhalten (bEn = TRUE und bErr = FALSE)

Im ersten Zyklus werden I- und D-Anteil wie bereits erwähnt ohne Vergangenheitswerte berechnet und somit "sauber" aufgestartet. Ein positives Signal an bSync setzt den I-Anteil so, dass die Stellgröße den Wert lrSync annimmt. Diese Methode kann, wenn bEn und bSync gleichzeitig gesetzt werden, zum Setzen eines Initialwertes genutzt werden, von dem aus die Regelung "losläuft". Ist der I-Anteil nicht aktiv, so wird der D-Anteil entsprechend gesetzt. Zu beachten ist, dass intern nur die steigende Flanke von bSync ausgewertet wird, handelt es sich doch um eine Setz-Aktion. Für ein erneutes Synchronisieren, etwa auf einen Übergabewert, muss am Eingang bSync ein erneutes TRUE-Signal angelegt werden. Ist der I-Anteil aktiv so sorgt der Regler dafür, dass dieser fest gehalten wird, sollte sich der Reglerausgang lrY an den Grenzen lrYMin oder lrYMax befinden und noch weiter fallen bzw. steigen wollen. Dieses Verfahren wird Anti-Wind-Up genannt unt trägt dafür Sorge, dass der I-Anteil immer nur so groß ist, dass die Stellgröße bei entsprechender Regelabweichung sofort wieder Werte innerhalb der Grenzen annehmen kann, ohne dass ein zu groß gewordener Integralanteich zunächst noch abgebaut werden muss.

Wirksinn

Mit bActn = FALSE wird der Wirksinn des Reglers so umgekehrt , dass eine Regelabweichung kleiner als 0 eine Stellgrößenänderung ins Positive bewirkt. Dies wird dadurch erreicht, dass die Regelabweichung negativ berechnet wird:

bActn | rXW (Regelabweichung) | Wirksinn
TRUE | lrX-lrW (Istwert-Sollwert) | direkt (Kühlen)
FALSE | lrW-lrX (Sollwert-Istwert) | indirekt (Heizen)

Anti-Reset-Windup bei Erreichen des Maximal- bzw Minimalwertes

Erreicht der Regler am Ausgang seine Obergrenze und ist die Regelabweichung weiterhin positiv, so wird der Integralanteil sich so lange weiter erhöhen, bis die Regelabweichung wieder kleiner oder gleich Null ist. Dies kann dazu führen, dass sich unnötigerweise ein sehr hoher Integralanteil aufbaut, der bei einer Vorzeichenänderung der Regelabweichung erst wieder abgebaut werden muss und das Regelverhalten träge macht. Das gleiche gilt auch bei Erreichen des Minimalwertes am Ausgang bei einer weiterhin negativen Regelabweichung. Um diesem vorzubeugen wird, sobald einer der beiden Fälle eintritt, der I-Anteil nicht neu berechnet, sondern auf dem Wert des vorhergehenden SPS-Zyklus gehalten. Tritt eine Vorzeichenumkehr ein, also Maximalwert erreicht und Regelabweichung kleiner als 0.0 bzw. Minimalwert erreicht und Regelabweichung größer als 0.0, so wird der I-Anteil wieder berechnet.

Steigungsbegrenzung

Ist der Regler schneller eingestellt, als das Stellglied, so kann dieses dem Regler nicht folgen, was zu einem Schwingverhalten führen kann. Daher gibt es die Möglichkeit die Steigung der Stellgröße zu begrenzen.

Als Maß dafür gelten die Zeiten:

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrYMin auf lrYMax.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrYMax auf lrYMin.

Hieraus lässt sich jeweils die maximale Änderung pro SPS-Zyklus - das maximale Inkrement oder Dekrement - errechnen. Ist die berechnete Änderung des Stellsignals über einen SPS-Zyklus nun höher als die durch udiMinToMax bzw. udiMaxToMin eingestellte, so wird das Stellsignal lediglich um das maximale Inkrement oder Dekrement erhöht bzw erniedrigt. Der I-Anteil wird dabei intern auf dieselbe Art nachgeführt ( I-Anteil des letzten SPS-Zyklus + maximales Inkrement bzw. I-Anteil des letzten SPS-Zyklus - maximales Dekrement).

Neutrale Zone

Ein Wert von lrNZ > 0.0 gibt die Funktion der neutralen Zone frei. Ist der Absolutwert der Regelabweichung dann kleiner als 1/2 lrNZ, so ist die Neutrale Zone aktiv und P-, I- und D-Anteil werden nicht weiter berechnet, was zu einem gleich bleibenden Stellsignal führt. Erst wenn die Regelabweichung wieder größer wird, werden die Anteile neu berechnet und das Ausgangssignal des Reglers ändert sich wieder.

Durch diese Funktion sollen unnötig viele Stellimpulse vermieden werden.

Zweipunkt-Regelverhalten

Sind die Regelparameter lrKp, udiTn, udiTv und udiTd auf 0 gesetzt, so hat der Regler per Definition ein Zweipunkt-Verhalten.
Die neutrale Zone lrNZ definiert dabei die Hysterese. Das Schalten auf den Maximalwert am Ausgang lrY erfolgt grundsätzlich, wenn die Regelabweichung lrE größer als die Hälfte des Hysteresewertes lrNZ ist - auf den Minimalwert wird immer dann geschaltet, wenn die Regelabweichung lrE kleiner als die negative Hälfte der Hysterese lrNZ wird:

Aus der unterschiedlichen Berechnung der Regelabweichung bei direktem und indirektem Wirksinn ergibt sich dann folgendes Schaltverhalten bezogen auf den Istwert lrX:

  • direkter Wirksinn (Kühlen): Regelabweichung = Istwert-Sollwert lrE = lrX-lrW
  • indirekter Wirksinn (Heizen): Regelabweichung = Istwert-Sollwert lrE = lrW-lrX

Autokorrektur von Parametern

Bei einigen Parametern macht es Sinn, sie automatisch zu korrigieren bzw. zu begrenzen, ohne eine Fehlermeldung auszugeben, da die Erwartung des Anwenders eindeutig vorhersehbar ist:

  • lrSync > lrYMax -> lrSync := lrYMax
  • lrSync < lrMin -> lrSync := lrMin
  • uiCycCl = 0 -> uiCycCl := 1

Ein-Ausgänge

VAR_INPUT

bEn         : BOOL;
bActn       : BOOL;
bSync       : BOOL;
lrSync      : LREAL;
lrW         : LREAL;
lrX         : LREAL;
lrNZ        : LREAL;
lrYMin      : LREAL;
lrYMax      : LREAL;
lrKp        : LREAL;
udiTn       : UDINT;
udiTv       : UDINT;
udiTd       : UDINT;
udiMinToMax : UDINT;
udiMaxToMin : UDINT;
uiCycCl     : UINT;

bEn: Regleraktivierung.

bActn: Wirksinn des Reglers.

bSync / lrSync: Synchronisationsbefehl: Ausgangswert lrY auf lrSync setzen.

lrW: Sollwert.

lrX: Istwert.

lrNZ: neutrale Zone.

lrYMin: Untere Ausgabebegrenzung des Reglers.

lrYMax: Obere Ausgabebegrenzung des Reglers.

lrKp: Reglerverstärkung. Wirkt nur auf den P-Anteil.

udiTn: Nachstellzeit des I-Anteiles [ms] . Ein Nullwert an diesem Parameter schaltet den I-Anteil ab.

udiTv: Vorhaltezeit des D-Anteiles [ms] . Ein Nullwert an diesem Parameter schaltet den D-Anteil ab.

udiTd: Dämpfungszeit des D-Anteiles [ms] .

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrYMin auf lrYMax.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrYMax auf lrYMin.

uiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall=1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_OUTPUT

lrY        : LREAL;
lrE        : LREAL;
bAct       : BOOL;
b2PtAct    : BOOL;
bARW       : BOOL;
bMinLim    : BOOL;
bMaxLim    : BOOL;
bDecLim    : BOOL;
bIncLim    : BOOL;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

lrY: Stellgröße. Bereich durch lrYMin und lrYMax eingeschränkt.

lrE: Regelabweichung (Die Berechnung ist abhängig vom Wirksinn).

bAct: Der Regler ist aktiv, das heißt freigegeben (bEn = TRUE) und nicht im Fehlerzustand (bErr = FALSE).

bARW: Anti-Reset-Windup-Funktion ist aktiv.

b2PtAct: Zweipunkt-Verhalten des Reglers ist aktiv.

bMaxLim: Die Stellgröße hat ihren oberen Grenzwert erreicht.

bMinLim: Die Stellgröße hat ihren unteren Grenzwert erreicht.

bDecLim: Die Stellgrößen-Steigung hat ihren Grenzwert für das maximale Abfallen erreicht, siehe udiMaxToMin (VAR_INPUT).

bIncLim: Die Stellgrößen-Steigung hat ihren Grenzwert für den maximale Anstieg erreicht, siehe udiMinToMax (VAR_INPUT).

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_PISync1201

Parameter-Synchronisation für 2 Regler vom Typ FB_BACnetLoop1201. Dieser Baustein kann beispielsweise zum Abgleich der Führungsregler dienen, welche zur Erzeugung der Zuluftsollwerte für einen raumlufttechnische Anlage mit einem Luftkühler und einem Lufterhitzer eingesetzt werden.

Funktionsbeschreibung

Dieser Baustein synchronisiert automatisch die P- und I- Parameter sowie den minimalen und maximalen Ausgabewert lrYMin und lrYMax von 2 Reglern des Typs FB_BACnetLoop1201. Es ist dabei egal, wo die Änderung stattfindet: An einem der beiden Regler in der PLC oder im BACnet.

Der Baustein erkennt automatisch eine Änderung und überträgt diese dann per ADS an den jeweilig anderen Regler. Zu diesem Zweck müssen beide Regler über die IN-OUT-Variablen fbCtrl1 und fbCtrl2 am Baustein referenziert werden - fbDvc ist die Referenz auf das BACnet-Device unter dem beide Bausteine laufen.

Ein-Ausgänge

VAR_IN_OUT

fbCtrl1     : FB_BACnetLoop1201;
fbCtrl2     : FB_BACnetLoop1201;
fbDvc       : FB_BACnet_Device;

fbCtrl1: Referenz auf den Regler Nr. 1 des Parameterabgleichs.

fbCtrl2: Referenz auf den Regler Nr. 2 des Parameterabgleichs.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_PISync1202

Parameter-Synchronisation für 2 Regler vom Typ FB_BACnetLoop1202. Dieser Baustein kann beispielsweise zum Abgleich der Führungsregler dienen, welche zur Erzeugung der Zuluftsollwerte für einen raumlufttechnische Anlage mit einem Luftkühler und einem Lufterhitzer eingesetzt werden.

Funktionsbeschreibung

Dieser Baustein synchronisiert automatisch die P- und I- Parameter sowie den minimalen und maximalen Ausgabewert lrYMin und lrYMax von 2 Reglern des Typs FB_BACnetLoop1202. Es ist dabei egal, wo die Änderung Stattfindet: An einem der beiden Regler in der PLC oder im BACnet.

Der Baustein erkennt automatisch eine Änderung und überträgt diese dann per ADS an den jeweilig anderen Regler. Zu diesem Zweck müssen beide Regler über die IN-OUT-Variablen fbCtrl1 und fbCtrl2 am Baustein referenziert werden - fbDvc ist die Referenz auf das BACnet-Device unter dem beide Bausteine laufen.

Ein-Ausgänge

VAR_IN_OUT

fbCtrl1     : FB_BACnetLoop1202;
fbCtrl2     : FB_BACnetLoop1202;
fbDvc       : FB_BACnet_Device;

fbCtrl1: Referenz auf den Regler Nr. 1 des Parameterabgleichs.

fbCtrl2: Referenz auf den Regler Nr. 2 des Parameterabgleichs.

fbDvc: Referenz auf den Baustein des BACnet-Device-Objektes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_PWM

Puls-Weiten-Modulations-Baustein.

Funktionsbeschreibung

Der Funktionsbaustein errechnet aus einem analogen Eingangssignal rIn (0..100%, intern fest begrenzt) und einer Periodendauer udiPrd [s] eine Ein- und eine Ausschaltzeit rTiOn und rTiOff [s].

Dabei entspricht:

  • 100% am Eingang einer Einschaltzeit rTiOn von der gesamten Periodendauer udiPrd und einer Ausschaltzeit rTiOff von 0s
  • 0% am Eingang einer Einschaltzeit rTiOn von 0s und einer Ausschaltzeit rTiOff von der gesamten Periodendauer udiPrd.

Darüber hinaus gibt es die Möglichkeit über udiMinOnTi [s] die Einschaltdauer nach unten hin zu begrenzen, um Schäden an Antrieben durch zu kurze Stellimpulse zu vermeiden.
Ein Eingangssignal von 0% jedoch wird die Einschaltzeit immer auf 0s setzen.

Schaltverhalten

  1. Ein FALSE-Signal am Eingang bEn setzt den Baustein außer Funktion und bQ auf FALSE. Es werden lediglich die Ein-und Ausschaltzeiten kontinuierlich berechnet und an den Ausgängen rActTiOn/rActTiOff [s] angezeigt.
  2. Eine steigende Flanke am Eingang bEn aktiviert den Baustein: Er springt zunächst in einen Entscheidungs-Schritt. Je nach vorherigem Zustand vom Schaltausgang bQ wird nun in den umschaltenden Schritt gesprungen, es sei denn, der Eingang rIn steht auf 0.0. Dann erfolgt ein Sprung in den Aus-Schritt (bQ=FALSE).
  3. In dem jeweils aktiven Schritt (EIN oder AUS) läuft nun ein Countdown-Timer mit dem aktuell errechneten Startwert ab, der sich aus dem Puls-Pause-Verhältnis ergibt. Der Ein- bzw. Aus-Schritt wird mit der errechneten Zeit durchlaufen, egal, ob sich währenddessen das Puls-Pause-Verhältnis ändert. Der jeweilige Countdown wird an den Ausgängen udiRemTiOn/udiRemTiOff in vollen Sekunden angezeigt.
  4. Nach Ablauf des Ein- bzw. des Aus-Schrittes erfolgt ein Rücksprung in den Entscheidungsschritt (Punkt 2).

Ein-Ausgänge

VAR_INPUT

bEn        : BOOL;
rIn        : REAL;
udiPrd     : UDINT;
udiMinOnTi : UDINT;

bEn : Aktivierung der Puls-Weiten-Modulation.

rIn: Eingangssignal, intern auf 0..100% fest begrenzt.

udiPrd: Periodenzeit [s].

udiMinOnTi: Minimale Einschaltzeit [s].

VAR_OUTPUT

bOut        : BOOL;
bMinOnTi    : BOOL;
rActTiOn    : REAL;
rActTiOff   : REAL;
udiRemOnTi  : UDINT;
udiRemOffTi : UDINT;

bOut: PWM-Ausgang.

bMinOnTi: Informationsausgang, dass das Eingangssignal so niedrig ist, dass mit der minimalen Einschaltzeit begrenzt wird.

rActTiOn: Informationsausgang: errechnete Einschaltzeit.

rActTiOff: Informationsausgang: errechnete Ausschaltzeit.

udiRemOnTi: Countdown Einschalttimer.

udiRemOffTi: Countdown Ausschalttimer.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SeqCtrl

PID-Regler als Bestandteil einer Sequenz. Dieser Regler ist in seinen Funktionalitäten identisch mit dem FB_BA_PIDCtrl. Er wird jedoch, wenn er durch bEn=TRUE freigegeben ist, über eine übergeordneten Kontrollbaustein FB_BA_SeqLink gesteuert.

Der Datenaustausch zwischen dem Steuerbaustein FB_BA_SeqLink und den Sequenzreglern FB_BA_SeqCtrl erfolgt über die Strukturvariable stSeqLink.

Funktionsbeschreibung

Heiz- Kühlfolge

Die Reglersequenz ist so zu konzipieren, dáß die Sequenzregler mit niedriger Ordnungszahl zum Heizen und die mit höherer zum Kühlen zu nutzen sind. Dabei ist nur ein Wechsel zulässig:

  • Sequenzregler n (usiMyNum=n, bActn=TRUE)
  • Sequenzregler n+1 (usiMyNum=n+1, bActn=FALSE)

Möglich ist aber auch die ausschließliche Programmierung von Kühl- bzw. Heizreglern.

Eine Parametrierung, die dieser Konvention widerspricht wird erkannt und als Fehler am Steuerbaustein FB_BA_SeqLink angezeigt.

Reglerausgabe

Während der Steuerbaustein FB_BA_SeqLink vorgibt, welcher Sequenzregler aktiv ist, entscheidet jeder Sequenzregler selbst, was er am Steuerausgang lrY ausgibt. Da jeder Sequenzregler über die In-Out-Variable stSeqLink über den Zustand der anderen Regler Bescheid weiß kann er 4 Fälle unterscheiden:

  1. Der Sequenzregler erkennt, dass er selbst und alle anderen Sequenzregler nicht freigegeben sind, sei es durch fehlende Freigaben (bEn) am Eingang oder durch einen erkannten Felhler am Steuerbaustein FB_BA_SeqLink
    -> Der Sequenzregler deaktiviert seinen internen PID-Regler und gibt am Steuerausgang lrY 0.0 aus.
  2. Der Sequenzregler erkennt, dass er freigegeben und er selbst vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt ist
    -> Der Sequenzregler aktiviert seinen internen PID-Regler. Dessen Ausgangssignal wird am Steuerausgang lrY ausgegeben.
  3. Der Sequenzregler erkennt, dass er freigegeben ist, jedoch ist ein Sequenzregler höherer Ordnungszahlt vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt
    -> Der Sequenzregler deaktiviert seinen internen PID-Regler. Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er seinen Minimalwert lrYMin am Steuerausgang lrY ausgeben. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so gibt er seinen Maximalwert lrYMax am Steuerausgang lrY aus.
  4. Der Sequenzregler erkennt, dass er freigegeben ist, jedoch ist ein Sequenzregler niedrigerer Ordnungszahlt vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt
    -> Der Sequenzregler deaktiviert seinen internen PID-Regler. Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er seinen Maximalwert lrYMax am Steuerausgang lrY ausgeben. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so gibt er seinen Minimalwert lrYMin am Steuerausgang lrY aus.

Synchronisation

Wird ein Sequenzregler von der übergeordneten Steuerung aktiv geschaltet, so erfolgt immer eine Synchonisation, d.h. der Regler beginnt mit einem festen Startwert am Ausgang lrY. Dabei werden 3 Fälle unterschieden:

  1. Die gesamte Sequenzregleung wurde gerade über den Eingang bEn der übergeordneten Steuerung FB_BA_SeqLink eingeschaltet. Der Regler, mit der Ordnungszahlt usiStartSeq am Eingang von ist FB_BA_SeqLink ist der Startregler.
    -> Der Sequenzregler wird mit dem Wert, der an seinem Eingang lrYSeqInit eingetragen ist, synchronisiert.
  2. Der Sequenzregler, der gerade aktiviert wurde, hatte einen Regler höherer Ordnungszahl als "Vorgänger"
    -> Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er mit seinem seinen Minimalwert lrYMin synchronisiert. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so ist der Synchronisationswert sein Maximalwert lrYMax.
  3. Der Sequenzregler, der gerade aktiviert wurde, hatte einen Regler niedrigerer Ordnungszahl als "Vorgänger"
    -> Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er mit seinem seinen Maximalwert lrYMax synchronisiert. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so ist der Synchronisationswert sein Minimalwert lrYMin.

Jeder Sequenzregler kann auch Über Wertvorgabe lrSync und Aktivierung bSync extra synchronisiert werden, wenn er gerade von der übergeordneten Steuerung aktiv gesetzt ist. Ein ständiges TRUE-Signal am Eingang bSync (etwa durch Versehen) wird intern durch Flankenbildung abgefangen und behindert dadurch nicht die oben beschriebene Synchronisation bei Aktiv-Setzung.

Startverhalten

Um ein "vernünftiges" Einregeln der gesamten Regelsequenz zu ermöglichen, wird der Startregler mindestens für die Zeit udiIniswiOvrDly [s], welche am Baustein FB_BA_SeqLink eingetragen ist, aktiv gehalten, d.h. in dieser Zeit findet kein Umschalten auf eine anderen Regler dieser Sequenz statt.
Der Ausgang lrY des Startreglers wird einmalig auf seinen Wert lrYSeqInit synchronisiert.

Ein-Ausgänge

VAR_INPUT

bEn          : BOOL;
usiMyNum     : USINT;
bActn        : BOOL;
bSync        : BOOL;
lrSync       : LREAL;
lrYSeqInit   : LREAL;
lrW          : LREAL;
lrX          : LREAL;
lrNZ         : LREAL;
lrYMin       : LREAL;
lrYMax       : LREAL;
lrKp         : LREAL;
udiTn        : UDINT;
udiTv        : UDINT;
udiTd        : UDINT;
udiMinToMax  : UDINT;
udiMaxToMin  : UDINT;
uiCycCl      : UINT;

bEn: Aktivierung des Sequenzreglers

usiMyNum: Ordnungszahl des Sequenzreglers.

bActn: Wirksinn-Umkehrung des Reglers. Bei Heiz-Kühleinsatz: bActn=FALSE entspricht Heizbetrieb, bActn=TRUE entspricht Kühlbetrieb.

bSync / lrSync: Synchronisationsbefehl: Ausgangswert lrY auf lrSync setzen

lrYSeqInit: Startwert des Reglers nach dem Neustart der gesamten Regelsequenz.

lrW: Sollwert

lrX: Istwert

lrNZ: neutrale Zone

lrYMin: Untere Ausgabebegrenzung des Reglers [%]. Wählbarer Bereich: 0..100%.

lrYMax: Obere Ausgabebegrenzung des Reglers [%]. Wählbarer Bereich: 0..100%.

lrKp: Reglerverstärkung. Wirkt nur auf den P-Anteil.

udiTn: Nachstellzeit des I-Anteiles [ms] . Ein Nullwert an diesem Parameter schaltet den I-Anteil ab.

udiTv: Vorhaltezeit des D-Anteiles [ms] . Ein Nullwert an diesem Parameter schaltet den D-Anteil ab.

udiTd: Dämpfungszeit des D-Anteiles [ms] .

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrYMin auf lrYMax.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrYMax auf lrYMin.

uiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall=1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_IN_OUT

stSeqLink : ST_BA_SeqLink;

stSeqLink: Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern und dem Steuerbaustein FB_BA_SeqLink.

Hinweis: Tragen mehrere Sequenzregler dieselbe Nummer (usiMyNum), so wird dies erkannt und als Fehler sowohl am Sequenzregler als auch am Steuerbaustein FB_BA_SeqLink ausgegeben.

VAR_OUTPUT

lrY        : LREAL;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

lrY: Stellgröße. Bereich: 0..100%, soweit nicht weiter durch lrYMin und lrYMax eingeschränkt.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SeqLink

Dieser Baustein stellt die übergeordnete Steuereinheit dar, die vorgibt, welcher Sequenzregler gerade aktiv ist.

Der Datenaustausch zwischen dem Steuerbaustein FB_BA_SeqLink und den Sequenzreglern FB_BA_SeqCtrl erfolgt über die Strukturvariable stSeqLink.

Funktionsbeschreibung

Startverhalten

Eine TRUE-Signal am Eingang bEn aktiviert die komplette Sequenzregelung. Der Baustein wird zunächst denjenigen Sequenzregler aktiv schalten, welcher an usiStartSeq benannt ist. Alle anderen Sequenzregler richten Ihren Ausgabewert nach der Rangordnung des aktiven Reglers, siehe FB_BA_SeqCtrl. Der Startregler wird beim Sequenz-Start einmalig auf seinen Wert lrSyncVal gesetzt.
Um ein "vernünftiges" Einregeln der gesamten Regelsequenz zu ermöglichen, wird der Startregler mindestens für die Zeit udiIniSwiOvrDly lang aktiv gehalten, d.h. in dieser Zeit findet kein Umschalten auf eine anderen Regler dieser Sequenz statt.

Umschaltverhalten

Erreicht ein Sequenzregler seinem Maximal- oder Minimalwert, so wird je nach Regler-Wirksinn auf den nächsten Regler in der Rangfolge umgeschaltet, sofern der Istwert den Sollwert des nächsten Reglers unterschreitet bzw. überschreitet.
Dabei werden 4 Fälle unterschieden:

  • Der noch aktive Regler hat direkten Wirksinn (Kühlen) und befindet sich auf seinem Maximalwert: Es wird in der Rangfolge der nächst höhere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers überschreitet.
  • Der noch aktive Regler hat direkten Wirksinn (Kühlen) und befindet sich auf seinem Minimalwert: Es wird in der Rangfolge der nächst niedrigere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers unterschreitet.
  • Der noch aktive Regler hat indirekten Wirksinn (Heizen) und befindet sich auf seinem Maximalwert: Es wird in der Rangfolge der nächst niedrigere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers unterschreitet.
  • Der noch aktive Regler hat indirekten Wirksinn (Heizen) und befindet sich auf seinem Minimalwert: Es wird in der Rangfolge der nächst höhere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers überschreitet.

Abschaltverhalten

Wird einem Regler der Sequenz seine Freigabe weggenommen oder geht er in Störung, so ist er für die gesamte Sequenz nicht mehr verfügbar.
Handelt es sich dabei nicht um den vorher aktiven Regler, so kann es, je nachdem welche Stellgröße dieser Regler ausgegeben hat, zu einer Temperaturänderung kommen, die durch die Reglersequenz nach Möglichkeit wieder ausgeglichen wird.
Handelt es sich jedoch um den aktiven Regler, dessen Freigabe weg genommen wird, so muss auf den nächst "sinnvollen" umgeschaltet werden. Der Sequenz-Link-Baustein geht dabei nach folgenden Regeln vor:

  • Der gerade deaktivierte Regler hatte direkten Wirksinn (Kühlen)

    1. Es gibt einen betriebsbereiten Regler mit höherer Ordnungszahl → auf den nächst höheren betriebsbereiten Regler schalten
    2. Es gibt nur einen betriebsbereiten Regler mit niedrigerer Ordnungszahl → auf den nächst niedrigeren betriebsbereiten Regler schalten
    3. Es gibt keinen betriebsbereiten Regler mehr → Störmeldung

  • Der gerade deaktivierte Regler hatte indirekten Wirksinn (Heizen)

    1. Es gibt einen betriebsbereiten Regler mit niedrigerer Ordnungszahl → auf den nächst niedrigeren betriebsbereiten Regler schalten
    2. Es gibt nur einen betriebsbereiten Regler mit höherer Ordnungszahl → auf den nächst höheren betriebsbereiten Regler schalten
    3. Es gibt keinen betriebsbereiten Regler mehr → Störmeldung

Zuschaltverhalten

Wird ein Regler der Sequenz hinzugefügt, so ist er in jedem Fall zunächst inaktiv und wird, je nach Wirksinn und Positionierung im Sinne der Sequenzreihenfolge, seinen Minimal- bzw. Maximalwert ausgeben. Die daraus resultierende Temperaturänderung wird durch die Reglersequenz nach Möglichkeit wieder ausgeglichen.

Fehlererkennung

Folgende Fehler werden durch den Sequenz-Link-Baustein erkannt:

  1. es existieren mindestend zwei Regler mit derselben Ordnungszahl, die der Sequenz zugeordnet sind
  2. es wurde in der Reglerfolge mehr als nur ein Wechsel von indirektem auf direkten Wirksinn (Heizen auf Kühlen) festgestellt
  3. in der Reglerfolge sind die Sollwerte der Regler nicht monoton steigend
  4. der Regler, welcher durch den Eingang usiStartSeq als Startregler definiert wurde, existiert nicht bzw. ist nicht dieser Sequenz zugeordnet (es wird dann der nächstgültige Regler gewählt).
  5. es wurde ein Startregler mit der Ordnungszahl 0 bzw. größer der maximal zulässigen Anzahl Regler festgelegt (es wird dann der nächstgültige Regler gewählt).

Nur der erste Fehler lässt den Sequenz-Link-Baustein in Störung gehen bzw. sperrt seine Abarbeitung (bSeqActv=FALSE). Keiner der zugehörigen Regler ist dann mehr aktiv und alle Regler geben die Stellgröße "0" aus. Der Baustein ist nicht aktiv:
Alle anderen Fehler werden zwar auch durch bErr=TRUE angezeigt, haben jedoch eine Fehlernummer (udiErrId), die sie lediglich als Warnung kennzeichnen.

Ein-Ausgänge

VAR_INPUT

bEn             : BOOL;
usiStartCtrl    : USINT;
udiIniSwiOvrDly : UDINT;
lrX             : LREAL

bEn: Aktivierung des Sequenzreglers.

usiStartSeq: Ordnungszahl des Sequenzreglers, welcher bei der Gesamt-Aktivierung der Start-Regler sein soll.

udiIniSwiOvrDly: Der erste Regler bleibt für mindestens diese Zeit [s] in der Sequenz aktiv, bevor andere Kriterien (siehe unten "Umschaltverhalten") auf einen anderen Regler schalten lassen.

lrX: Istwert der Regelung.

VAR_IN_OUT

stSeqLink : ST_BA_SeqLink;

stSeqLink: Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern und dem Steuerbaustein FB_BA_SeqLink . Über diese Struktur empfängt der Sequenz-Link-Baustein alle relevanten Daten der Sequenzregler und teilt diesen gleichzeitig mit, welcher der aktive ist.

Hinweis: Tragen mehrere Sequenzregler dieselbe Nummer (usiMyNum), so wird dies erkannt und als Fehler sowohl am Sequenzregler als auch am Steuerbaustein ausgegeben.

VAR_OUTPUT

usiCurCtrl            : USINT;
bSeqActv              : BOOL;
bNotRead              : BOOL;
bNoneOp               : BOOL;
udiRemTiIniSwiOvrDly  : UDINT;
bErr                  : BOOL;
udiErrId              : UDINT;
udiErrArg             : UDINT;

usiCurCtrl: Ordnungszahl des aktuell aktiven Sequenzreglers. Ist keiner aktiv, so wird hier 0 ausgegeben.

bSeqActv: Der Sequenzbaustein ist freigegeben (bEn) und hat keinen abschaltenden Fehler, siehe Fehlererkennung.

bNotRead: Jeder Sequenzregler übermittelt dem Steuerbaustein Daten über die Struktur stSeqLink. Solange noch keine Daten übermittelt wurden - dies ist beim Einschalten der SPS der Fall - steht dieser Ausgang auf TRUE.

bNoneOp: Dieser Ausgang wird auf TRUE geschaltet, wenn keiner der Sequenzregler seine eigene Freigabe (bEn=TRUE) hat.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind. Dieser Baustein stellt im Fehlerfall seine Abarbeitung u.U. nicht ein, siehe Fehlererkennung.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Chrct02

Lineare Interpolation mit 2 Stützstellen.

Funktionsbeschreibung

Der Baustein FB_BA_Chrct02 stellt eine Linear-Interpolation mit 2 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Kennlinie wird durch die Stützpunkte [lrX1/lrY1] und [lrX2/lrY2] bestimmt. Wenn die Eingangsvariable bLmt TRUE ist, wird lrY von lrY01 und lrY02 begrenzt. Bei bLmt gleich FALSE erfolgt keine Begrenzung von lrY.

Fehlerbehandlung

Die Eingabewerte für lrX[n+1] müssen immer mindestens um den Betrag von 0.0000001 größer als von lrX[n] sein.
Im Fehlerfall zeigt die Variable udiErrId an, an welchem Punkt der Kennlinie die Werte nicht monoton steigend sind.

Ein-/Ausgänge

VAR_INPUT

lrX   : LREAL;
lrX01 : LREAL;
lrX02 : LREAL;
lrY01 : LREAL;
lrY02 : LREAL;
bLmt  : BOOL;

lrX: Eingangswert der Kennlinie.

lrX01: X-Wert für Stützpunkt P1.
lrX02: X-Wert für Stützpunkt P2.

lrY01: Y-Wert für Stützpunkt P1.
lrY02: Y-Wert für Stützpunkt P2.

bLmt: Begrenzung des Ausgangswertes lrY.

VAR_OUTPUT

lrY       : LREAL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

lrY: Errechneter Ausgangswert der Kennlinie.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Chrct04

Lineare Interpolation mit 4 Stützstellen.

Funktionsbeschreibung

Der Baustein FB_BA_Chrct04 stellt eine Linear-Interpolation mit 4 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Kennlinie wird durch die Stützpunkte [lrX1/lrY1] bis [lrX4/lrY4] bestimmt. Wenn die Eingangsvariable bLmt TRUE ist, wird lrY von lrY01 und lrY04 begrenzt. Bei bLmt gleich FALSE erfolgt keine Begrenzung von lrY.

Fehlerbehandlung

Die Eingabewerte für lrX[n+1] müssen immer mindestens um den Betrag von 0.0000001 größer als von lrX[n] sein.
Im Fehlerfall zeigt die Variable udiErrId an, an welchem Punkt der Kennlinie die Werte nicht monoton steigend sind.

VAR_INPUT

lrX   : LREAL;
lrX01 : LREAL;
lrX02 : LREAL;
lrX03 : LREAL;
lrX04 : LREAL;
lrY01 : LREAL;
lrY02 : LREAL;
lrY03 : LREAL;
lrY04 : LREAL;
bLmt  : BOOL;

lrX: Eingangswert der Kennlinie.

lrX01: X-Wert für Stützpunkt P1.
lrX02: X-Wert für Stützpunkt P2.
lrX03: X-Wert für Stützpunkt P3.
lrX04: X-Wert für Stützpunkt P4.

lrY01: Y-Wert für Stützpunkt P1.
lrY02: Y-Wert für Stützpunkt P2.
lrY03: Y-Wert für Stützpunkt P3.
lrY04: Y-Wert für Stützpunkt P4.

bLmt: Begrenzung des Ausgangswertes lrY.

Ein-/Ausgänge

VAR_OUTPUT

lrY       : LREAL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

lrY: Errechneter Ausgangswert der Kennlinie.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Chrct07

Lineare Interpolation mit 7 Stützstellen.

Funktionsbeschreibung

Der Baustein FB_BA_Chrct07 stellt eine Linear-Interpolation mit 7 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Kennlinie wird durch die Stützpunkte [lrX1/lrY1] bis [lrX7/lrY7] bestimmt. Wenn die Eingangsvariable bLmt TRUE ist, wird lrY von lrY01 und lrY07 begrenzt. Bei bLmt gleich FALSE erfolgt keine Begrenzung von lrY.

Fehlerbehandlung

Die Eingabewerte für lrX[n+1] müssen immer mindestens um den Betrag von 0.0000001 größer als von lrX[n] sein.
Im Fehlerfall zeigt die Variable udiErrId an, an welchem Punkt der Kennlinie die Werte nicht monoton steigend sind.

Ein-/Ausgänge

VAR_INPUT

lrX   : LREAL;
lrX01 : LREAL;
lrX02 : LREAL;
lrX03 : LREAL;
lrX04 : LREAL;
lrX05 : LREAL;
lrX06 : LREAL;
lrX07 : LREAL;
lrY01 : LREAL;
lrY02 : LREAL;
lrY03 : LREAL;
lrY04 : LREAL;
lrY05 : LREAL;
lrY06 : LREAL;
lrY07 : LREAL;
bLmt  : BOOL;

lrX: Eingangswert der Kennlinie.

lrX01: X-Wert für Stützpunkt P1.
lrX02: X-Wert für Stützpunkt P2.
lrX03: X-Wert für Stützpunkt P3.
lrX04: X-Wert für Stützpunkt P4.
lrX05: X-Wert für Stützpunkt P5.
lrX06: X-Wert für Stützpunkt P6.
lrX07: X-Wert für Stützpunkt P7.

lrY01: Y-Wert für Stützpunkt P1.
lrY02: Y-Wert für Stützpunkt P2.
lrY03: Y-Wert für Stützpunkt P3.
lrY04: Y-Wert für Stützpunkt P4.
lrY05: Y-Wert für Stützpunkt P5.
lrY06: Y-Wert für Stützpunkt P6.
lrY07: Y-Wert für Stützpunkt P7.

bLmt: Begrenzung des Ausgangswertes lrY.

VAR_OUTPUT

lrY       : LREAL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

lrY: Errechneter Ausgangswert der Kennlinie.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Chrct32

Lineare Interpolation mit bis zu 32 Stützstellen (parametrierbar).

Funktionsbeschreibung

Der Baustein FB_BA_Chrct32 stellt eine Linear-Interpolation mit bis zu 32 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Stützstellen werden hier, anders als bei den "kleineren" Interpolationsbausteinen FB_BA_Chrct02, FB_BA_Chrct04 und FB_BA_Chrct07 der Übersicht halber über Feldvariablen [arrX[1]/arrY[1] bis [arrX[n]/arrY[n]] bestimmt. Wenn die Eingangsvariable bLmt TRUE ist, wird lrY von arrY[1] und arrY[n] begrenzt. Bei bLmt gleich FALSE erfolgt keine Begrenzung von lrY.

Fehlerbehandlung

Die Eingabewerte für lrX[n+1] müssen immer mindestens um den Betrag von 0.0000001 größer als von lrX[n] sein.
Im Fehlerfall zeigt die Variable udiErrId an, an welchem Punkt der Kennlinie die Werte nicht monoton steigend sind.

Der Parameter für die Anzahl der Stützstellen, iNumOfElem, muss im Bereich 2..32 liegen.

Ein-/Ausgänge

VAR_INPUT

lrX        : LREAL;
arrX       : ARRAY [1..gBA_cChrct32_NumOfElem] OF LREAL;
arrY       : ARRAY [1..gBA_cChrct32_NumOfElem] OF LREAL;
iNumOfElem : INT;
bLmt       : BOOL;

lrX: Eingangswert der Kennlinie

arrX : Feld mit den X-Werten für die Stützpunkte.

iNumOfElem: Anzahl der Stützstellen - diese Wert muss im Bereich von 2-32 liegen, ansonsten wird ein Fehler ausgegeben.

arrY : Feld mit den Y-Werten für die Stützpunkte.

bLmt: Begrenzung des Ausgangswertes lrY.

VAR_OUTPUT

lrY       : LREAL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

lrY: Errechneter Ausgangswert der Kennlinie.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_TiAvrg

Mittelwertbildung über ein Zeitintervall.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_TiAvrg errechnet den zeitlich arithmetischen Mittelwert eines aufgenommenen Analogwertes. Dazu werden zeitlich diskret Werte in einen FIFO-Speicher hineingeschrieben. udiIntval gibt das Zeitintervall [s] an, in dem die Werte aufgenommen und in den FIFO geschrieben werden. Das Schreiben der Werte erfolgt jedoch nur wenn der Eingang bEnAvrg = TRUE ist. Mit der Variablen udiNumOfElem wird die größer des FIFO-Speichers bestimmt. Diese ist auf 1..256 begrenzt. Bei einem Eintrag außerhalb dieser Grenzen wird die Anzahl automatisch auf einen Defaultwert von 48 gesetzt. Die tatsächliche Anzahl wird zur Kontrolle am Ausgang udiStaNumOfElem ausgegeben.
Der Funktionsbaustein kann zum Beispiel für die Berechnung einer mittleren Außentemperatur im stündlichen Tagesmittel verwendet werden. In dem Fall wäre udiNumOfElem = 24 und udiIntval = 3600 Sekunden. bEn ist die allgemeine Freigabe des Funktionsbausteins. Bei bEn = FALSE wird der FIFO-Speicher innerhalb des Funktionsbaustein komplett gelöscht und es werden keine Daten aufgezeichnet.

Beispiel:

udiNumOfElem = 5

Der rosa eingefärbte Bereich kennzeichnet die Phase, in der bEnAvrg auf FALSE gesetzt ist. Es werden keine Werte in den FIFO geschrieben und der Ausgangswert lrOut gehalten.

 | 1. Zyklus |  | 2. Zyklus |  | 3. Zyklus |  | 4. Zyklus
 | lrIn | lrOut | lrIn | lrOut | lrIn | lrOut | lrIn | lrOut
t0 | 2 | 2/1 = 2 | 6 | (4+6+7+7+6)/5 = 6 | 1 | (7+6+5+4+1)/5 = 4.6 | 3 | lrIn = 3
t1 | 4 | (2+4)/2 = 3 | 5 | (6+7+7+6+5)/5 = 6.25 | 2 | (6+5+4+1+2)/5 = 3.6 | 1.5 | lrIn = 1.5
t2 | 6 | (2+4+6)/3 = 4 | 4 | (7+7+6+5+4)/5 = 5.8 | 4 | (5+4+1+2+4)/5 = 3.2 |  |
t3 | 7 | (2+4+6+7)/4 = 4.75 | 2 | (7+7+6+5+4)/5 =5.8 | 5 | (4+1+2+4+5)/5 = 3.2 |  |
t4 | 7 | (2+4+6+7+7)/5 = 5.2 | 1 | (7+7+6+5+4)/5 =5.8 | 4 | (1+2+4+5+4)/5 = 3,2 |  |

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
bEnAvrg      : BOOL;
lrIn         : LREAL;
udiIntval    : UDINT;
udiNumOfElem : UDINT;

bEn: Freigabe des Bausteins.

bEnAvrg: Freigabe der Mittelwertbildung, bEnAvrg = TRUE zeichnet auf, bei bEnAvrg = FALSE bleibt der errechnete Wert am Ausgang.

lrIn: Eingangswert zur Mittelwertbildung.

udiIntVal: Zeitintervall [s] für das Schreiben neuer Werte in den FIFO.

udiNumOfElem: Größe des FIFO-Wertespeichers. Eine Änderung setzt die vorangegangene Mittelwertbildung zurück. Die Anzahl der Werte ist auf 1..256 automatisch begrenzt.

VAR_OUTPUT

lrOut           : LREAL;
lrMax           : LREAL;
lrMin           : LREAL;
udiStaNumOfElem : UDINT;

lrOut: Mittelwert.

lrMax: größter Wert im FIFO-Speicher.

lrMin: kleinster Wert im FIFO-Speicher.

udiStaNumOfElem: Anzahl der Einträge im Speicher.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Alarm

Alarmsammelbaustein mit zuschaltbarem Alarmspeicher und interner Quittierung.
Der Impuls der Quitterung wird im FB_BA_AlarmPlt erzeugt und intern an die Alarmsammelbausteine einer Anlage durch gereicht.

Ein-/Ausgänge

VAR_INPUT

bEvt         : BOOL;
sMsgTxt      : STRING;
byPrio       : BYTE;
byPltId      : BYTE;
bAckReq      : BOOL;

bEvt: Eingang zum Erfassen des Alarms.

sMsgTxt: Eingabefeld für Meldetext (konfigurierbar über Project-Builder oder Excel-Import)

byPrio: Bestimmt die Aktion, die beim Eingehen das Alarms bezogen auf die Steuerung der jeweiligen Anlage ausgelöst werden soll.
byPrio = 0 = keine Meldung = ALM_PRIO_EMPTY
byPrio = 1 = diverse Meldungen = ALM_PRIO_NOTE
byPrio = 2 = Warnung = ALM_PRIO_WARNING
byPrio = 3 = Alarm ohne Abschaltung = ALM_PRIO_ALARM
byPrio = 4 = Alarm mit Abschaltung = ALM_PRIO_CRITICAL , setzt den Ausgang bCriticalAlm vom Funktionsbaustein AlarmPlt in Template BAC_PltIniAlm_01.

byPltId: Nummer der zugehörigen Anlage. Wichtig: Alle Templates einer Anlage müssen der gleichen Anlagennummer in der PLC zugewiesen sein!

bAckReq: TRUE = quittierpflichtig. Ist der Alarm quittierplichtig erlischt dieser in der Alarmliste nur nach einer Alarmquittierung des Anlagenbetreibers.

VAR_OUTPUT

bQ           : BOOL;
eState       : E_BA_AlmSta;
bAckFlg      : BOOL;

bQ: Alarmausgang

eState: Enumerator Status der Alarmmeldungen

bAckFlg: Bei einer ausgelösten Quittierung steht dieser Ausgang für einen Zyklus an. Der Impuls kann zum Quittieren von Störungen genutzt werden. Der Impuls der Quitterung wird im FB_BA_AlarmPlt erzeugt und intern an die Alarmsammelbausteine einer Anlage durch gereicht.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AlarmPlt

Der Funktionsbaustein sammelt die Alarme einer Anlage ein und bündelt diese zu einem Sammelalarm.
Erzeugt werden die Alarme innerhalb der anlagenzugehörigen Templates durch den Baustein FB_BA_Alarm.
Die Zuordnung der Alarme zu einer Anlage erfolgt über die Anlagennummer.
Die Priorisierung bzw. Wertigkeit der Alarme erfolgt im Alarmausgabebaustein FB_BA_Alarm durch der Eingang byPrio.

Wichtig ist, dass der Alarmsammler FB_BA_AlarmPlt und die Alarmausgabebausteine FB_BA_Alarm innerhalb der Templates einer Anlage auf die gleiche Anlagennummer eingestellt sind!

 Die Angennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Ein-/Ausgänge

VAR_INPUT

byPltId      : BYTE;
sName        : STRING;
bAckn        : BOOL;

byPltId: Nummer der zugehörigen Anlage. Wichtig: Alle Templates einer Anlage müssen der gleichen Anlagennummer in der PLC zugewiesen sein!

sName: Eingabefeld für die Anlagenbezeichnung (konfigurierbar über Project-Builder oder Excel-Import)

bAckn: Eingang für die Alarmquittierung der Anlage. Diese Quittierung wird intern an die Alarmausgabebausteine FB_BA_Alarm durch gereicht.

VAR_OUTPUT

bCriticalAlm : BOOL;
bNewAlm      : BOOL;
bInAlm       : BOOL;

bCriticalAlm: Kritischer Alarm. Dieser wird in den Templates für das Abschalten einer Anlage genutzt. Dazu muss in dem Alarmausgabebausteine FB_BA_Alarm der Eingang byPrio den Wert 4 haben.

bNewAlm: Zeigt die Neuwertmeldung eines Alarms an.

bInAlm: Zeigt an, dass ein Alarm ansteht.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Alm

Alarmbaustein mit zuschaltbarem Alarmspeicher und Quittierung.

Funktionsbeschreibung

ohne Alarmspeicher (bRstReqd = FALSE)

  • T1: Der Baustein ist nicht aktiviert (bEn=FALSE). Eine Meldung am Eingang bIn hat keinerlei Auswirkung auf den Alarmausgang bQ.
  • T2: Der Baustein ist aktiviert (bEn=TRUE). Der Alarmausgang bQ bleibt immer so lange gesetzt, wie die Meldung am Eingang bIn ansteht.

mit Alarmspeicher (bRstReqd = TRUE)

  • T1: Der Baustein ist nicht aktiviert (bEn=FALSE). Eine Meldung am Eingang bIn hat keinerlei Auswirkung auf den Alarmausgang bQ.
  • T2: Der Baustein ist aktiviert (bEn=TRUE). Eine steigende Flanke am Meldeeingang bIn setzt den Alarmausgang bQ. Dieser kann durch eine steigende Flanke am Reset-Eingang bRst zurück gesetzt werden, jedoch nur, wenn die Meldung an bIn nicht mehr ansteht.
  • T3: Alarmmeldungen an bQ stehen grundsätzlich nur so lange an, wie der Baustein an bEn freigegeben ist.

Ein-/Ausgänge

VAR_INPUT

bEn         : BOOL;
bIn         : BOOL;
bRstReqd    : BOOL;
bRst        : BOOL;

bEn: Freigabe des Funktionsbausteins.

bIn: Meldeeingang.

bRstReqd: Aktivierung Alarmspeicher (Quittierpflichtigkeit).

bRst: Reset Alarm.

VAR_OUTPUT

bQ    : BOOL;

bQ: Alarmausgang.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AlmColt04

Alarmsammelbaustein, 4 Alarme.

Funktionsbeschreibung

Dieser Baustein stellt eine Alarmsammlung von bis zu 4 Einzel-Alarmen dar. Jeder dieser Einzel-Alarme bIn01..bIn04 wird bausteinintern mit einem FB_BA_Alm behandelt und hat entsprechend die Wahl zur Alarmspeicherung an den Eingängen bIn01RstReqd..bIn04RstReqd. Die Status der 4 Einzel-Alarme werden jeweils an den Ausgängen bQ01 bis bQ04 ausgegeben.

Der Ausgang des Sammelalarms bAlm ergibt sich aus einer ODER-Verknüpfung der einzelnen Alarme und kann dementsprechend auch unqiuttiert gehen, wenn kein Einzel-Alarm mit Quittierpflichtigkeit parametriert wurde. Ist hingegen über die Eingänge bIn01RstReqd..bIn04RstReqd eine Alarmspeicherung angewählt, so können die Einzelalarme sowie der Sammelalarm global über den Eingang bRst zurück gesetzt werden. Wie in FB_BA_Alm bereits erwähnt, kann ein Alarm natürlich nur dann zurück gesetzt werden, wenn seine Auslösemeldung an bIn nicht mehr existiert.

Der Ausgang bAlmNew wird immer dann gesetzt, wenn an den Eingängen bIn01..bIn04 ein erneutes Meldeereignis auftritt. Er ist in jedem Fall - unabhängig von den Parametrierungen an bIn01RstReqd..bIn04RstReqd - speichernd und wird nur durch eine steigende Flanke an bRst bis zum nächsten Meldeereignis zurück gesetzt.

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
bIn01        : BOOL;
bIn01RstReqd : BOOL;
bIn02        : BOOL;
bIn02RstReqd : BOOL;
bIn03        : BOOL;
bIn03RstReqd : BOOL;
bIn04        : BOOL;
bIn04RstReqd : BOOL;

bEn: Freigabe des Funktionsbausteins.

bIn01: Alarmeingang 1.
bIn01RstReqd: Quittierpflichtigkeit Alarm am Eingang 1.

bIn02: Alarmeingang 2.
bIn02RstReqd: Quittierpflichtigkeit Alarm am Eingang 2.

bIn03: Alarmeingang 3.
bIn03RstReqd: Quittierpflichtigkeit Alarm am Eingang 3.

bIn04: Alarmeingang 4.
bIn04RstReqd: Quittierpflichtigkeit Alarm am Eingang 4.

bRst: Rücksetzen aller als quittierpflichtig parametrierten Alarme sowie der Sammelalarme bAlm und bAlmNew.

VAR_OUTPUT

bAlm    : BOOL;
bAlmNew : BOOL;
bQ01    : BOOL;
bQ02    : BOOL;
bQ03    : BOOL;
bQ04    : BOOL;

bAlm: Sammelalarm - ODER-Verknüpfung der Einzel-Alarme an den Eingängen.

bAlmNew: Merker neues Alarmereignis.

bQ01: Alarmausgang 1.

bQ02: Alarmausgang 2.

bQ03: Alarmausgang 3.

bQ04: Alarmausgang 4.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AlmColt08

Alarmsammelbaustein, 8 Alarme.

Funktionsbeschreibung

Dieser Baustein stellt eine Alarmsammlung von bis zu 8 Einzel-Alarmen dar. Jeder dieser Einzel-Alarme bIn01..bIn08 wird bausteinintern mit einem FB_BA_Alm behandelt und hat entsprechend die Wahl zur Alarmspeicherung an den Eingängen bIn01RstReqd..bIn08RstReqd. Die Status der 8 Einzel-Alarme werden jeweils an den Ausgängen bQ01 bis bQ08 ausgegeben.

Der Ausgang des Sammelalarms bAlm ergibt sich aus einer ODER-Verknüpfung der einzelnen Alarme und kann dementsprechend auch unqiuttiert gehen, wenn kein Einzel-Alarm mit Quittierpflichtigkeit parametriert wurde. Ist hingegen über die Eingänge bIn01RstReqd..bIn08RstReqd eine Alarmspeicherung angewählt, so können die Einzelalarme sowie der Sammelalarm global über den Eingang bRst zurück gesetzt werden. Wie in FB_BA_Alm bereits erwähnt, kann ein Alarm natürlich nur dann zurück gesetzt werden, wenn seine Auslösemeldung an bIn nicht mehr existiert.

Der Ausgang bAlmNew wird immer dann gesetzt, wenn an den Eingängen bIn01..bIn08 ein erneutes Meldeereignis auftritt. Er ist in jedem Fall - unabhängig von den Parametrierungen an bIn01RstReqd..bIn08RstReqd - speichernd und wird nur durch eine steigende Flanke an bRst bis zum nächsten Meldeereignis zurück gesetzt.

Ein-Ausgänge

VAR_INPUT

bEn          : BOOL;
bIn01        : BOOL;
bIn01RstReqd : BOOL;
bIn02        : BOOL;
bIn02RstReqd : BOOL;
bIn03        : BOOL;
bIn03RstReqd : BOOL;
bIn04        : BOOL;
bIn04RstReqd : BOOL;
bIn05        : BOOL;
bIn05RstReqd : BOOL;
bIn06        : BOOL;
bIn06RstReqd : BOOL;
bIn07        : BOOL;
bIn07RstReqd : BOOL;
bIn08        : BOOL;
bIn08RstReqd : BOOL;

bEn: Freigabe des Funktionsbausteins.

bIn01: Alarmeingang 1.
bIn01RstReqd: Quittierpflichtigkeit Alarm am Eingang 1.

bIn02: Alarmeingang 2.
bIn02RstReqd: Quittierpflichtigkeit Alarm am Eingang 2.

bIn03: Alarmeingang 3.
bIn03RstReqd: Quittierpflichtigkeit Alarm am Eingang 3.

bIn04: Alarmeingang 4.
bIn04RstReqd: Quittierpflichtigkeit Alarm am Eingang 4.

bIn05: Alarmeingang 5.
bIn05RstReqd: Quittierpflichtigkeit Alarm am Eingang 5.

bIn06: Alarmeingang 6.
bIn06RstReqd: Quittierpflichtigkeit Alarm am Eingang 6.

bIn07: Alarmeingang 7.
bIn07RstReqd: Quittierpflichtigkeit Alarm am Eingang 7.

bIn08: Alarmeingang 8.
bIn08RstReqd: Quittierpflichtigkeit Alarm am Eingang 8.

bRst: Rücksetzen aller als quittierpflichtig parametrierten Alarme sowie der Sammelalarme bAlm und bAlmNew.

VAR_OUTPUT

bAlm    : BOOL;
bAlmNew : BOOL;
bQ01    : BOOL;
bQ02    : BOOL;
bQ03    : BOOL;
bQ04    : BOOL;
bQ05    : BOOL;
bQ06    : BOOL;
bQ07    : BOOL;
bQ08    : BOOL;

bAlm: Sammelalarm - ODER-Verknüpfung der Einzel-Alarme an den Eingängen.

bAlmNew: Merker neues Alarmereignis.

bQ01: Alarmausgang 1.

bQ02: Alarmausgang 2.

bQ03: Alarmausgang 3.

bQ04: Alarmausgang 4.

bQ05: Alarmausgang 5.

bQ06: Alarmausgang 6.

bQ07: Alarmausgang 7.

bQ08: Alarmausgang 8.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AlmColt12

Alarmsammelbaustein, 12 Alarme.

Funktionsbeschreibung

Dieser Baustein stellt eine Alarmsammlung von bis zu 12 Einzel-Alarmen dar. Jeder dieser Einzel-Alarme bIn01..bIn12 wird bausteinintern mit einem FB_BA_Alm behandelt und hat entsprechend die Wahl zur Alarmspeicherung an den Eingängen bIn01RstReqd..bIn12RstReqd. Die Status der 12 Einzel-Alarme werden jeweils an den Ausgängen bQ01 bis bQ12 ausgegeben.

Der Ausgang des Sammelalarms bAlm ergibt sich aus einer ODER-Verknüpfung der einzelnen Alarme und kann dementsprechend auch unqiuttiert gehen, wenn kein Einzel-Alarm mit Quittierpflichtigkeit parametriert wurde. Ist hingegen über die Eingänge bIn01RstReqd..bIn12RstReqd eine Alarmspeicherung angewählt, so können die Einzelalarme sowie der Sammelalarm global über den Eingang bRst zurück gesetzt werden. Wie in FB_BA_Alm bereits erwähnt, kann ein Alarm natürlich nur dann zurück gesetzt werden, wenn seine Auslösemeldung an bIn nicht mehr existiert.

Der Ausgang bAlmNew wird immer dann gesetzt, wenn an den Eingängen bIn01..bIn12 ein erneutes Meldeereignis auftritt. Er ist in jedem Fall - unabhängig von den Parametrierungen an bIn01RstReqd..bIn12RstReqd - speichernd und wird nur durch eine steigende Flanke an bRst bis zum nächsten Meldeereignis zurück gesetzt.

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
bIn01        : BOOL;
bIn01RstReqd : BOOL;
bIn02        : BOOL;
bIn02RstReqd : BOOL;
bIn03        : BOOL;
bIn03RstReqd : BOOL;
bIn04        : BOOL;
bIn04RstReqd : BOOL;
bIn05        : BOOL;
bIn05RstReqd : BOOL;
bIn06        : BOOL;
bIn06RstReqd : BOOL;
bIn07        : BOOL;
bIn07RstReqd : BOOL;
bIn08        : BOOL;
bIn08RstReqd : BOOL;
bIn09        : BOOL;
bIn09RstReqd : BOOL;
bIn10        : BOOL;
bIn10RstReqd : BOOL;
bIn11        : BOOL;
bIn11RstReqd : BOOL;
bIn12        : BOOL;
bIn12RstReqd : BOOL;

bEn: Freigabe des Funktionsbausteins.

bIn01: Alarmeingang 1.
bIn01RstReqd: Quittierpflichtigkeit Alarm am Eingang 1.

bIn02: Alarmeingang 2.
bIn02RstReqd: Quittierpflichtigkeit Alarm am Eingang 2.

bIn03: Alarmeingang 3.
bIn03RstReqd: Quittierpflichtigkeit Alarm am Eingang 3.

bIn04: Alarmeingang 4.
bIn04RstReqd: Quittierpflichtigkeit Alarm am Eingang 4.

bIn05: Alarmeingang 5.
bIn05RstReqd: Quittierpflichtigkeit Alarm am Eingang 5.

bIn06: Alarmeingang 6.
bIn06RstReqd: Quittierpflichtigkeit Alarm am Eingang 6.

bIn07: Alarmeingang 7.
bIn07RstReqd: Quittierpflichtigkeit Alarm am Eingang 7.

bIn08: Alarmeingang 8.
bIn08RstReqd: Quittierpflichtigkeit Alarm am Eingang 8.

bIn09: Alarmeingang 9.
bIn09RstReqd: Quittierpflichtigkeit Alarm am Eingang 9.

bIn10: Alarmeingang 10.
bIn10RstReqd: Quittierpflichtigkeit Alarm am Eingang 10.

bIn11: Alarmeingang 11.
bIn11RstReqd: Quittierpflichtigkeit Alarm am Eingang 11.

bIn12: Alarmeingang 12.
bIn12RstReqd: Quittierpflichtigkeit Alarm am Eingang 12.

bRst: Rücksetzen aller als quittierpflichtig parametrierten Alarme sowie der Sammelalarme bAlm und bAlmNew.

VAR_OUTPUT

bAlm    : BOOL;
bAlmNew : BOOL;
bQ01    : BOOL;
bQ02    : BOOL;
bQ03    : BOOL;
bQ04    : BOOL;
bQ05    : BOOL;
bQ06    : BOOL;
bQ07    : BOOL;
bQ08    : BOOL;
bQ09    : BOOL;
bQ10    : BOOL;
bQ11    : BOOL;
bQ12    : BOOL;

bAlm: Sammelalarm - ODER-Verknüpfung der Einzel-Alarme an den Eingängen.

bAlmNew: Merker neues Alarmereignis.

bQ01: Alarmausgang 1.

bQ02: Alarmausgang 2.

bQ03: Alarmausgang 3.

bQ04: Alarmausgang 4.

bQ05: Alarmausgang 5.

bQ06: Alarmausgang 6.

bQ07: Alarmausgang 7.

bQ08: Alarmausgang 8.

bQ09: Alarmausgang 9.

bQ10: Alarmausgang 10.

bQ11: Alarmausgang 11.

bQ12: Alarmausgang 12.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AlmColt16

Alarmsammelbaustein, 16 Alarme.

Funktionsbeschreibung

Dieser Baustein stellt eine Alarmsammlung von bis zu 16 Einzel-Alarmen dar. Jeder dieser Einzel-Alarme bIn01..bIn16 wird bausteinintern mit einem FB_BA_Alm behandelt und hat entsprechend die Wahl zur Alarmspeicherung an den Eingängen bIn01RstReqd..bIn16RstReqd. Die Status der 16 Einzel-Alarme werden jeweils an den Ausgängen bQ01 bis bQ16 ausgegeben.

Der Ausgang des Sammelalarms bAlm ergibt sich aus einer ODER-Verknüpfung der einzelnen Alarme und kann dementsprechend auch unqiuttiert gehen, wenn kein Einzel-Alarm mit Quittierpflichtigkeit parametriert wurde. Ist hingegen über die Eingänge bIn01RstReqd..bIn16RstReqd eine Alarmspeicherung angewählt, so können die Einzelalarme sowie der Sammelalarm global über den Eingang bRst zurück gesetzt werden. Wie in FB_BA_Alm bereits erwähnt, kann ein Alarm natürlich nur dann zurück gesetzt werden, wenn seine Auslösemeldung an bIn nicht mehr existiert.

Der Ausgang bAlmNew wird immer dann gesetzt, wenn an den Eingängen bIn01..bIn16 ein erneutes Meldeereignis auftritt. Er ist in jedem Fall - unabhängig von den Parametrierungen an bIn01RstReqd..bIn16RstReqd - speichernd und wird nur durch eine steigende Flanke an bRst bis zum nächsten Meldeereignis zurück gesetzt.

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
bIn01        : BOOL;
bIn01RstReqd : BOOL;
bIn02        : BOOL;
bIn02RstReqd : BOOL;
bIn03        : BOOL;
bIn03RstReqd : BOOL;
bIn04        : BOOL;
bIn04RstReqd : BOOL;
bIn05        : BOOL;
bIn05RstReqd : BOOL;
bIn06        : BOOL;
bIn06RstReqd : BOOL;
bIn07        : BOOL;
bIn07RstReqd : BOOL;
bIn08        : BOOL;
bIn08RstReqd : BOOL;
bIn09        : BOOL;
bIn09RstReqd : BOOL;
bIn10        : BOOL;
bIn10RstReqd : BOOL;
bIn11        : BOOL;
bIn11RstReqd : BOOL;
bIn12        : BOOL;
bIn12RstReqd : BOOL;
bIn13        : BOOL;
bIn13RstReqd : BOOL;
bIn14        : BOOL;
bIn14RstReqd : BOOL;
bIn15        : BOOL;
bIn15RstReqd : BOOL;
bIn16        : BOOL;
bIn16RstReqd : BOOL;
bRst         : BOOL;

bEn: Freigabe des Funktionsbausteins.

bIn01: Alarmeingang 1.
bIn01RstReqd: Quittierpflichtigkeit Alarm am Eingang 1.

bIn02: Alarmeingang 2.
bIn02RstReqd: Quittierpflichtigkeit Alarm am Eingang 2.

bIn03: Alarmeingang 3.
bIn03RstReqd: Quittierpflichtigkeit Alarm am Eingang 3.

bIn04: Alarmeingang 4.
bIn04RstReqd: Quittierpflichtigkeit Alarm am Eingang 4.

bIn05: Alarmeingang 5.
bIn05RstReqd: Quittierpflichtigkeit Alarm am Eingang 5.

bIn06: Alarmeingang 6.
bIn06RstReqd: Quittierpflichtigkeit Alarm am Eingang 6.

bIn07: Alarmeingang 7.
bIn07RstReqd: Quittierpflichtigkeit Alarm am Eingang 7.

bIn08: Alarmeingang 8.
bIn08RstReqd: Quittierpflichtigkeit Alarm am Eingang 8.

bIn09: Alarmeingang 9.
bIn09RstReqd: Quittierpflichtigkeit Alarm am Eingang 9.

bIn10: Alarmeingang 10.
bIn10RstReqd: Quittierpflichtigkeit Alarm am Eingang 10.

bIn11: Alarmeingang 11.
bIn11RstReqd: Quittierpflichtigkeit Alarm am Eingang 11.

bIn12: Alarmeingang 12.
bIn12RstReqd: Quittierpflichtigkeit Alarm am Eingang 12.

bIn13: Alarmeingang 13.
bIn13RstReqd: Quittierpflichtigkeit Alarm am Eingang 13.

bIn14: Alarmeingang 14.
bIn14RstReqd: Quittierpflichtigkeit Alarm am Eingang 14.

bIn15: Alarmeingang 15.
bIn15RstReqd: Quittierpflichtigkeit Alarm am Eingang 15.

bIn16: Alarmeingang 16.
bIn16RstReqd: Quittierpflichtigkeit Alarm am Eingang 16.

bRst: Rücksetzen aller als quittierpflichtig parametrierten Alarme sowie der Sammelalarme bAlm und bAlmNew.

VAR_OUTPUT

bAlm    : BOOL;
bAlmNew : BOOL;
bQ01    : BOOL;
bQ02    : BOOL;
bQ03    : BOOL;
bQ04    : BOOL;
bQ05    : BOOL;
bQ06    : BOOL;
bQ07    : BOOL;
bQ08    : BOOL;
bQ09    : BOOL;
bQ10    : BOOL;
bQ11    : BOOL;
bQ12    : BOOL;
bQ13    : BOOL;
bQ14    : BOOL;
bQ15    : BOOL;
bQ16    : BOOL;

bAlm: Sammelalarm - ODER-Verknüpfung der Einzel-Alarme an den Eingängen.

bAlmNew: Merker neues Alarmereignis.

bQ01: Alarmausgang 1.

bQ02: Alarmausgang 2.

bQ03: Alarmausgang 3.

bQ04: Alarmausgang 4.

bQ05: Alarmausgang 5.

bQ06: Alarmausgang 6.

bQ07: Alarmausgang 7.

bQ08: Alarmausgang 8.

bQ09: Alarmausgang 9.

bQ10: Alarmausgang 10.

bQ11: Alarmausgang 11.

bQ12: Alarmausgang 12.

bQ13: Alarmausgang 13.

bQ14: Alarmausgang 14.

bQ15: Alarmausgang 15.

bQ16: Alarmausgang 16.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_ComnMsg

Bildung von Sammelmeldungen.

Funktionsbeschreibung

Die Funktionsbausteine FB_BA_ComnMsg und FB_BA_ComnMsgTermt dienen zur Bildung von Sammelmeldungen in der Anlagenebene und in der Controllerebene. Die Informationen der BACnet-Objekte werden in der Struktur ST_BA_ComnMsg an die Funktionsbausteine ST_BA_ComnMsg übertragen. Mit der Variablen stOut werden die Sammelmeldungen der Anlagen an den Funktionsbaustein FB_BA_ComnMsgTermt weiter geleitet. Hier sind alle Meldungen der BACnet-Objekte eines BACnet-Controllers zusammengefast.

Fehlerbehandlung:

Jedes BACnet-Objekt reserviert sich im ersten Zyklus nach einem Neustart der Steuerung ein Feld in einem eindimensionalen Array innerhalb der Meldestruktur ST_BA_ComnMsg. Die größe des Arrays ist mit der globalen Konstante gBa_cMaxArrComnMsg festgelegt. Die Standardeinstellung dieser Konstante ist 256. Falls mehr als 256 BACnet-Objekte an eine Instanz von FB_BA_ComnMsg angeschlossen werden, muss diese erhöht werden. Die Weiterleitung der Meldungen an den FB_BA_ComnMsgTermt ist innerhalb der Struktur ST_BA_ComnMsgTermt auf 64 festgelegt. Für eine Erhöhung muss die Konstante gBa_cMaxArrComnMsgTermt vergrößert werden.

Ein-Ausgänge

VAR_IN_OUT

stIn     : ST_BA_ComnMsg;
stTermt  : ST_BA_ComnMsgTermt;

stIn: Datenstruktur zum Anschluss der BACnet-Objekte in der Anlagenebene.

stOut: Datenstruktur zur Weitergabe der Sammelmeldungen von der Anlagenebene an den Funktionsbaustein FB_BA_ComnMsgTermt.

VAR_OUTPUT

iId            : INT;
bInAlm         : BOOL;
bFlt           : BOOL;
bOvrrd         : BOOL;
bOoServ        : BOOL;
bHiLmt         : BOOL;
bLoLmt         : BOOL;
udiHiActvPrio  : UDINT;
arrActvPrio    : ARRAY [1..16] OF BOOL;
iMaxNumOfEntry : INT;
iNumOfEntry    : INT;
dwObjId        : DWORD;
eObjType       : E_BACnetObjectType;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

iId: Die Kennzeichnung des zuletzt an den FB_BA_ComnMsgTermt gesendeten Informations-Telegramms (stTermt.arrData[iId])

bInAlm: Das zuletzt sendende BACnet-Objekt ist im Status Alarm.

bFlt: Das zuletzt sendende BACnet-Objekt ist im Status Fault.

bOvrrd: Beim zuletzt sendenden BACnet-Objekt ist die lokale mechanische Vorrangbedienung aktiviert.

bOoServ: Das zuletzt sendende BACnet-Objekt ist "out of service".

bHiLmt: Beim zuletzt sendenden BACnet-Objekt ist das Hi-Limit überschritten.

bLoLmt: Beim zuletzt sendenden BACnet-Objekt ist das Lo-Limit unterschritten.

udiHiActvPrio: gibt die höchste geschriebene Priorität aller BACnet-Objekte an.

arrActvPrio: Das Array gibt eine Übersicht der aktiven Prioritäten aller angeschlossenen BACnet-Objekte.

iMaxNumOfEntry: Zeigt an wie viele BACnet-Objekte an den Funktionsbaustein angeschlossen werden können.

iNumOfEntry: Zeigt an wie viele BACnet-Objekte an den Funktionsbaustein angeschlossen sind.

dwObjId: Die Id des Objektes, welches zuletzt in den Fehlerzustand gegangen ist.

eObjType: Der Objekttyp des Objektes, welches zuletzt in den Fehlerzustand gegangen ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_ComnMsgTermt

Bildung von Sammelmeldungen.

Funktionsbeschreibung

Die Funktionsbausteine FB_BA_ComnMsg und FB_BA_ComnMsgTermt dienen zur Bildung von Sammelmeldungen in der Anlagenebene und in der Controllerebene.

Die Informationen der BACnet-Objekte werden in der Struktur ST_BA_ComnMsg an die Funktionsbausteine FB_BA_ComnMsg übertragen.Mit der Variablen stOut werden die Sammelmeldungen der Anlagen an den Funktionsbaustein FB_BA_ComnMsgTermt weiter geleitet. Hier sind alle Meldungen der BACnet-Objekte eines BACnet-Controllers zusammengefast.

Fehlerbehandlung:

Jedes BACnet-Objekt reserviert sich im ersten Zyklus nach einem Neustart der Steuerung ein Feld in einem eindimensionalen Array innerhalb der Meldestruktur ST_BA_ComnMsg. Die Größe des Arrays ist mit der globalen Konstante gBa_cMaxArrComnMsg festgelegt. Die Standardeinstellung dieser Konstante ist 256. Falls mehr als 256 BACnet-Objekte an eine Instanz von FB_BA_ComnMsg angeschlossen werden, muss diese erhöht werden. Die Weiterleitung der Meldungen an den FB_BA_ComnMsgTermt ist innerhalb der Struktur ST_BA_ComnMsgTermt auf 64 festgelegt. Für eine Erhöhung muss die Konstante gBa_cMaxArrComnMsgTermt vergrößert werden.

Ein-Ausgänge

VAR_IN_OUT

      stIn     : ST_BA_ComnMsgTermt;

stIn: Datenstruktur zur Entgegennahme der Sammelmeldungen von der Anlagenebene an den Funktionsbaustein FB_BA_ComnMsgTermt.

VAR_OUTPUT

bInAlm         : BOOL;
bFlt           : BOOL;
bOvrrd         : BOOL;
bOoServ        : BOOL;
bHiLmt         : BOOL;
bLoLmt         : BOOL;
udiHiActvPrio  : UDINT;
arrActvPrio    : ARRAY [1..16] OF BOOL;
iMaxNumOfEntry : INT;
iNumOfEntry    : INT;
dwObjId        : DWORD;
eObjType       : E_BACnetObjectType;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

bInAlm: Das zuletzt sendende BACnet-Objekt ist im Status Alarm.

bFlt: Das zuletzt sendende BACnet-Objekt ist im Status Fault.

bOvrrd: Beim zuletzt sendenden BACnet-Objekt ist die lokale mechanische Vorrangbedienung aktiviert.

bOoServ: Das zuletzt sendende BACnet-Objekt ist "out of service".

bHiLmt: Beim zuletzt sendenden BACnet-Objekt ist das Hi-Limit überschritten.

bLoLmt: Beim zuletzt sendenden BACnet-Objekt ist das Lo-Limit unterschritten.

udiHiActvPrio: gibt die höchste geschriebene Priorität aller BACnet-Objekte an.

arrActvPrio: Das Array gibt eine Übersicht der aktiven Prioritäten aller angeschlossenen BACnet-Objekte.

iMaxNumOfEntry: Zeigt an wie viele BACnet-Objekte an den Funktionsbaustein angeschlossen werden können.

iNumOfEntry: Zeigt an wie viele BACnet-Objekte an den Funktionsbaustein angeschlossen sind.

eObjType: Der Objekttyp des Objektes, welches zuletzt in den Fehlerzustand gegangen ist.

dwObjId: Die Id des Objektes, welches zuletzt in den Fehlerzustand gegangen ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_DMUX_XX

Die Demultiplexer-Bausteine existieren für verschiedene Variablentypen ( BOOL, INT, LREAL, REAL, USINT, UINT und UDINT) und in verschiedenen Ausgangsgrößen (5, 9, 13 und 17), haben jedoch alle die gleiche Funktionalität.
Exemplarisch wird hier der Baustein FB_BA_DMUX_LR16 beschrieben.

Funktionsbeschreibung

Der Funktionsbaustein gibt im aktivierten Zustand (bEn=TRUE) den Wert am Eingang lrIn an demjenigen Ausgang lrQ01..lrQ16 aus dessen Nummer am Eingang udiSel eingetragen ist. Alle anderen Ausgänge werden auf 0 gesetzt (bei den booleschen Demultiplexern auf FALSE).

Beispiel:

Eingänge | Ausgänge
bEn = TRUE | lrQ00 = 0.0
udiSel = 5 | lrQ01 = 0.0
lrIn = 32.5 | lrQ02 = 0.0
 | lrQ03 = 0.0
 | lrQ04 = 0.0
 | lrQ05 = 32.5
 | lrQ06 = 0.0
 | lrQ07 = 0.0
 | lrQ08 = 0.0
 | lrQ09 = 0.0
 | lrQ10 = 0.0
 | lrQ11 = 0.0
 | lrQ12 = 0.0
 | lrQ13 = 0.0
 | lrQ14 = 0.0
 | lrQ15 = 0.0
 | lrQ16 = 0.0

Ist der eingetragene Wert an udiSel größer als die Anzahl der Ausgänge, so wird am "höchsten" Ausgang der Wert von lrIn ausgegeben:

Eingänge | Ausgänge
bEn = TRUE | lrQ00 = 0.0
udiSel = 25 | lrQ01 = 0.0
rIn = 32.5 | lrQ02 = 0.0
 | lrQ03 = 0.0
 | lrQ04 = 0.0
 | lrQ05 = 0.0
 | lrQ06 = 0.0
 | lrQ07 = 0.0
 | lrQ08 = 0.0
 | lrQ09 = 0.0
 | lrQ10 = 0.0
 | lrQ11 = 0.0
 | lrQ12 = 0.0
 | lrQ13 = 0.0
 | lrQ14 = 0.0
 | lrQ15 = 0.0
 | lrQ16 = 32.5

Bei bEn=FALSE wird an allen Ausgängen 0.0 bzw. FALSE bei den booleschen Demultiplexernausgegeben.

Ein-/Ausgänge

VAR_INPUT

bEn    : BOOL;
udiSel : UDINT;
lrIn   : LREAL;

bEn: Aktivierung der Bausteinfunktion.

udiSel: Nummer des Ausgangs lrQ00...lrQ16, der den Wert des Eingangs lrIn annehmen soll.

lrIn: Wert, der zur Ausgabe kommen soll.

VAR_OUTPUT

lrQ00 : LREAL;
lrQ01 : LREAL;
lrQ02 : LREAL;
lrQ03 : LREAL;
lrQ04 : LREAL;
lrQ05 : LREAL;
lrQ06 : LREAL;
lrQ07 : LREAL;
lrQ08 : LREAL;
lrQ09 : LREAL;
lrQ10 : LREAL;
lrQ11 : LREAL;
lrQ12 : LREAL;
lrQ13 : LREAL;
lrQ14 : LREAL;
lrQ15 : LREAL;
lrQ16 : LREAL;

lrQ00...lrQ16: Wertausgänge.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_MMUX_XX

Der Funktionsbaustein schaltet in Abhängigkeit eines Selektors und der entsprechenden Eingangs-Selektorbedingung einen Eingangswert auf den Ausgang.

Die Multiplexer-Bausteine existieren für verschiedene Variablentypen ( BOOL, INT, LREAL, REAL, USINT, UINT und UDINT) und in verschiedenen Eingangsgrößen (4, 8, 12, 16 und 24), haben jedoch alle die gleiche Funktionalität.
Exemplarisch wird hier der Baustein FB_BA_MMUX_R16 beschrieben.

Funktionsbeschreibung

Der Funktionsbaustein schaltet im aktivierten Zustand (bEn=TRUE) in Abhängigkeit eines Selektors udiSel und der entsprechenden Eingangs-Selektorbedingung udiEnxx einen von den Eingangswerten rValxx auf den Ausgang rVal.
Wenn mehrere Eingangs-Selektorbedingungen udiEn01...udiEn16 gleich sind und der Selektor udiSel einer Bedingung entspricht, dann wird der Eingangwert rVal01...rVal16 der tiefsten aktiven Selektorbedingung auf den Ausgang rVal geschaltet. udiEn01 ist die tiefste, udiEn16 die höchste Selektorbedingung.

Die Ausgangsvariable bQ zeigt an, dass der Selektor udiSel mit einer Eingangs-Selektorbedingung udiEnxx übereinstimmt.

Die Ausgangsvariable udiActvPrio zeigt die aktive Selektorbedingung an.

Ist keine Selektorbedingung aktiv, so wird rReplVal an rVal ausgegeben. bQ ist dann FALSE und udiActvPrio zeigt eine 0 an.

Beispiel:

Eingänge |  | Ausgang
Variable | Wert | Variable | Wert
bEn | TRUE | bQ | TRUE
udiSel | 5 | rVal | 1,123
udiEn01 | 4 | udiActvPrio | 7
rVal01 | 123 |  |
udiEn02 |  |  |
rVal02 |  |  |
udiEn03 | 3 |  |
rVal03 | 321 |  |
udiEn04 |  |  |
rVal04 |  |  |
udiEn05 | 8 |  |
rVal05 | 345 |  |
udiEn06 |  |  |
rVal06 |  |  |
udiEn07 | 5 |  |
rVal07 | 1,123 |  |
udiEn08 |  |  |
rVal08 |  |  |
udiEn09 | 5 |  |
rVal09 | 5,4321 |  |
udiEn10 |  |  |
rVal10 |  |  |
udiEn11 |  |  |
rVal11 |  |  |
udiEn12 |  |  |
rVal12 |  |  |
udiEn13 |  |  |
rVal13 |  |  |
udiEn14 |  |  |
rVal14 |  |  |
udiEn15 |  |  |
rVal15 |  |  |
udiEn16 |  |  |
rVal16 |  |  |
rReplVal |  |  |

Ein-/Ausgänge

VAR_INPUT

bEn           : BOOL;
udiSel        : UDINT;
udiEn01       : UDINT;
rVal01        : REAL;
udiEn02       : UDINT;
rVal02        : REAL;
udiEn03       : UDINT;
rVal03        : REAL;
udiEn04       : UDINT;
rVal04        : REAL;
udiEn05       : UDINT;
rVal05        : REAL;
udiEn06       : UDINT;
rVal06        : REAL;
udiEn07       : UDINT;
rVal07        : REAL;
udiEn08       : UDINT;
rVal08        : REAL;
udiEn09       : UDINT;
rVal09        : REAL;
udiEn10       : UDINT;
rVal10        : REAL;
udiEn11       : UDINT;
rVal11        : REAL;
udiEn12       : UDINT;
rVal12        : REAL;
udiEn13       : UDINT;
rVal13        : REAL;
udiEn14       : UDINT;
rVal14        : REAL;
udiEn15       : UDINT;
rVal15        : REAL;
udiEn16       : UDINT;
rVal16        : REAL;

bEn: Aktivierung der Bausteinfunktion.

udiSel: Selektor

udiEn01..udiEn16: Eingangs-Selektorbedingung

rVal01...rVal16: Eingangswerte, aus denen gewählt werden soll.

rReplVal: Ersatzwert, wenn keine Eingangs-Selektorbedingung aktiv ist

VAR_OUTPUT

bQ            : BOOL;
rVal          : REAL;
udiActvPrio   : UDINT;

bQ: Ist TRUE, wenn der Selektor udiSel mit einer Eingangs-Selektorbedingung udiEnxx übereinstimmt.

rVal: Wert der gewählten Eingangs-Selektorbedingung.

udiActvPrio: Zeigt an welche Eingangs-Selektorbedingung aktiv ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_MultiCalc_XX

Die Multi-Kalkulations-Bausteine existieren für verschiedene Variablentypen ( LREAL, REAL, INT, UINT und UDINT) und in verschiedenen Eingangsgrößen (4 und 8), haben jedoch alle die gleiche Funktionalität.
Exemplarisch wird hier der Baustein FB_BA_UDI08 beschrieben.

Funktionsbeschreibung

Der Funktionsbaustein ermittelt im aktivierten Zustand (bEn=TRUE) aus den 8 Eingangswerten udi01...udi08 folgendes:

  • den Maximalwert von allen Eingängen udiMax

  • den Eingang, an dem dieser Maximalwert anliegt udiMinActv

  • den Minimalwert von allen Eingängen udiMin

  • den Eingang, an dem dieser Minimalwert anliegt udiMinActv

  • den Mittelwert aller Eingänge rAvrg

  • die Summe aller Eingänge rSum

  • die Differenz zwischen dem Maximal- und Minimalwert udiDiff

Sollen nicht alle Eingänge zur Berechnung kommen, so lässt sich die Anzahl durch einen Eintrag an udiNum einschränken: mit udiNum=6 beispielsweise werden die Berechnungen nur für die Eingänge udi01...udi06 durchgeführt.
Ein Eintrag größer als 8 wird automatisch auf 8 limitiert, ein Eintrag kleiner als 1 automatisch auf 1.

Beispiel:

Eingänge | Ausgang
bEn = TRUE | udiMax = 32
udi01 = 32 | udiMaxActv = 1
udi02 = 17 | udiMin = 5
udi03 = 5 | udiMinActv = 3
udi04 = 9 | rAvrg = 18.5
udi05 = 16 | rSum = 111
udi06 = 32 | udiDiff = 27
udi07 = 25 |
udi08 = 44 |
udiNum = 6 |

Bei bEn=FALSE wird an allen Ausgängen 0 ausgegeben.

Ein-/Ausgänge

VAR_INPUT

bEn    : BOOL;
udi01  : UDINT;
udi02  : UDINT;
udi03  : UDINT;
udi04  : UDINT;
udi05  : UDINT;
udi06  : UDINT;
udi07  : UDINT;
udi08  : UDINT;
udiNum : UDINT;

bEn: Aktivierung der Bausteinfunktion.

udi01...udi08: Eingangswerte, aus denen berechnet werden soll.

udiNum: Anzahl der Eingangswerte, mit denen gerechnet wird.

VAR_OUTPUT

udiMax     : UDINT;
udiMaxActv : UDINT;
udiMin     : UDINT;
udiMinActv : UDINT;
rAvrg      : REAL;
rSum       : REAL;
udiDiff    : UDINT;

udiMax: Maximalwert von allen Eingängen.

udiMaxActv: Eingang, an dem der Maximalwert anliegt.

udiMin: Minimalwert von allen Eingängen.

udiMinActv: Eingang, an dem der Minimalwert.

rAvrg: Mittelwert aller Eingänge.

rSum: Summe aller Eingänge.

udiDiff: Differenz zwischen dem Maximal- und Minimalwert.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_MUX_XX

Die Multiplexer-Bausteine existieren für verschiedene Variablentypen ( BOOL, INT, LREAL, REAL, USINT, UINT und UDINT) und in verschiedenen Eingangsgrößen (5, 9, 13 und 17), haben jedoch alle die gleiche Funktionalität.
Exemplarisch wird hier der Baustein FB_BA_MUX_LR16 beschrieben.

Funktionsbeschreibung

Der Funktionsbaustein gibt im aktivierten Zustand (bEn=TRUE) denjenigen Eingangswert lrIn00..lrIn16 am Ausgang lrQ aus, dessen Nummer am Eingang udiSel eingetragen ist.

Beispiel:

Eingänge | Ausgang
bEn = TRUE | lrQ = 16.5
udiSel = 5 |
lrIn00 = 15.9 |
lrIn01 = 32.5 |
lrIn02 = 17.4 |
lrIn03 = 5.84 |
lrIn04 = 9.56 |
lrIn05 = 16.5 |
lrIn06 = 32.781 |
lrIn07 = 25.4 |
lrIn08 = 44.5 |
lrIn09 = 66.1 |
lrIn10 = 45.5 |
lrIn11 = 83.3 |
lrIn12 = 54.56 |
lrIn13 = 33.8 |
lrIn14 = 98.5 |
lrIn15 = 71.3 |
lrIn16 = 2.3 |

Ist der eingetragene Wert an udiSel größer als die Anzahl der Eingänge, so wird der "höchstrangige" Eingang an lrQ ausgegeben:

Eingänge | Ausgang
bEn = TRUE | lrQ = 2.3
udiSel = 25 |
lrIn00 = 15.9 |
lrIn01 = 32.5 |
lrIn02 = 17.4 |
lrIn03 = 5.84 |
lrIn04 = 9.56 |
lrIn05 = 16.5 |
lrIn06 = 32.781 |
lrIn07 = 25.4 |
lrIn08 = 44.5 |
lrIn09 = 66.1 |
lrIn10 = 45.5 |
lrIn11 = 83.3 |
lrIn12 = 54.56 |
lrIn13 = 33.8 |
lrIn14 = 98.5 |
lrIn15 = 71.3 |
lrIn16 = 2.3 |

Bei bEn=FALSE wird am Ausgang lrQ 0.0 bzw. FALSE bei den booleschen Multiplexernausgegeben.

Ein-/Ausgänge

VAR_INPUT

bEn    : BOOL;
udiSel : UDINT;
lrIn00 : LREAL;
lrIn01 : LREAL;
lrIn02 : LREAL;
lrIn03 : LREAL;
lrIn04 : LREAL;
lrIn05 : LREAL;
lrIn06 : LREAL;
lrIn07 : LREAL;
lrIn08 : LREAL;
lrIn09 : LREAL;
lrIn10 : LREAL;
lrIn11 : LREAL;
lrIn12 : LREAL;
lrIn13 : LREAL;
lrIn14 : LREAL;
lrIn15 : LREAL;
lrIn16 : LREAL;

bEn: Aktivierung der Bausteinfunktion.

udiSel: Nummer des Eingangs, dessen Wert am Ausgang lrQ ausgegeben werden soll.

lr00...lr16: Eingangswerte, aus denen gewählt werden soll.

VAR_OUTPUT

lrQ   : UDINT;

lrQ: Wert des gewählten Eingangs.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_PrioSwi_XX

Die Prioritätenschalter existieren für verschiedene Variablentypen ( BOOL, INT, LREAL, REAL, USINT, UINT und UDINT) und in verschiedenen Ausgangsgrößen (4, 8, 12 und 16 bzw. 24), haben jedoch alle die gleiche Funktionalität.
Exemplarisch wird hier der Baustein FB_BA_PrioSwi_LR08 beschrieben.

Funktionsbeschreibung

Zur Selektion verschiedener Werte stehen Prioritätenschalter zur Verfügung. Zum Ausgang lrVal wird derjenige Wert mit der höchsten Priorität durchgeschaltet dessen Eingang bEnxx TRUE ist.

Beispiel:

Eingänge | Ausgänge
bEn01 = FALSE | bQ = TRUE
lrVal01 = 32.5 | lrVal = 5.84
bEn02 = FALSE | udiActvPrio = 3
lrVal02 = 17.4 |
bEn03 = TRUE |
lrVal03 = 5.84 |
bEn04 = TRUE |
lrVal04 = 9.56 |
bEn05 = FALSE |
lrVal05 = 16.5 |
bEn06 = TRUE |
lrVal06 = 32.781 |
bEn07 = FALSE |
lrVal07 = 25.4 |
bEn08 = TRUE |
lrVal08 = 44.5 |

Ist keine der Prioritäten freigegeben, so fällt der Ausgang bQ auf FALSE. An den Ausgängen lrVal und udiActvPrio wird jeweils 0 ausgegeben. Bei einen booleschen Prioritätenschalter wird an dem Ausgang bVal dann FALSE ausgegeben.

Eingänge | Ausgänge
bEn01 = FALSE | bQ = FALSE
lrVal01 = 32.5 | lrVal = 0.0
bEn02 = FALSE | udiActvPrio = 0
lrVal02 = 17.4 |
bEn03 = FALSE |
lrVal03 = 5.84 |
bEn04 = FALSE |
lrVal04 = 9.56 |
bEn05 = FALSE |
lrVal05 = 16.5 |
bEn06 = FALSE |
lrVal06 = 32.781 |
bEn07 = FALSE |
lrVal07 = 25.4 |
bEn08 = FALSE |
lrVal08 = 44.5 |

Ein-/Ausgänge

VAR_INPUT

bEn01   : BOOL;
lrVal01 : LREAL;
bEn02   : BOOL;
lrVal02 : LREAL;
bEn03   : BOOL;
lrVal03 : LREAL;
bEn04   : BOOL;
lrVal04 : LREAL;
bEn05   : BOOL;
lrVal05 : LREAL;
bEn06   : BOOL;
lrVal06 : LREAL;
bEn07   : BOOL;
lrVal07 : LREAL;
bEn08   : BOOL;
lrVal08 : LREAL;

bEn01...bEn08: Freigabe des Prioritätswertes.

lrVal01...lrVal08: Prioritätswert.

VAR_OUTPUT

bQ          : BOOL;
lrVal       : LREAL;
udiActvPrio : UDINT;

bQ: Ausgabe, ob überhaupt eine Priorität freigegeben ist.

lrVal: Ausbabe des Wertes der aktuellen (höchsten) Priorität, die freigegeben ist.

udiActvPrio: aktuelle (höchste) Priorität, die freigegeben ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AntBlkg

Blockierschutz für Pumpen und Stellantrieben.

Funktionsbeschreibung

Dieser Funktionsbaustein verhindert das Blockieren von Pumpen oder Stellantrieben nach längeren Zeiten ohne Bewegung durch die Ausgabe eines Einschaltimpulses.
Die maximale Dauer des Stillstands bis zur Ausgabe eines Impulses wird durch den Wert der Variablen udiTiOffMin bestimmt. Zur Erfassung der Stillstandzeit muss der Eingang bFdb mit der Betriebsrückmeldung des Aggregates verbunden werden. Die Länge des Impulses wird mit der Variablen udiTiImplLngt parametriert. Falls die Blockierschutzimpulse nicht in Abhängigkeit der Stillstandszeiten, sondern zyklisch von einem Zeitschaltplan ausgehen sollen, ist hierfür der Eingang bExe zu verwenden. Bei einer steigenden Flanke an bExe wird unmittelbar ein Impuls an bQ ausgegeben. Eine Impulsausgabe erfolgt generell nur wenn der Funktionsbaustein an bEn frei geschaltet ist.

Ein-/Ausgänge

VAR_INPUT

bEn           : BOOL;
bFdb          : BOOL;
bExe          : BOOL;
udiTiOffMin   : UDINT;
udiTiImplLngt : UDINT;

bEn: Freigabe des Funktionsbausteins.

bFdb: Eingang zum Anschluss des Feedbacksignals eines Motors oder Ventils.

bExe: Steigende Flanke forciert die Ausgabe eines Impulses.

udiTiOffMin: Mindestausschaltzeit [s]: nach dem Ablauf der Zeit von udiTiOffMin ohne Bewegung des Aggregates erfolgt die Ausgabe eines Impulses.

udiTiImplLngt: Länge des Blockieschutzimpulses [s] an bQ.

VAR_OUTPUT

bQ             : BOOL;
udiRTiOffMin   : UDINT;
udiRTiImplLngt : UDINT;

bQ: Ausgang zur Ausgabe des Impulses.

udiRTiOffMin: Verbleibende Zeit [s] bis zur Ausgabe des nächsten Impulses bei andauerndem Stillstand.

udiTiImplLngt: Verbleibende Restzeit [s] des Impulses an bQ.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_DHW2P

Warmwasserspeicher-Steuerung.

Funktionsbeschreibung

Der Funktionsbaustein steuert die Ladung eines Warmwasserspeichers mittels eines Zweipunkt-Reglers. An dem Eingang bEn wird die Speicherladung frei gegeben. Bei aktiver Speicherladung ist der Ausgang bLd TRUE. Mit der Variablen rSp wird dem Funktionsbaustein der Sollwert für die Brauchwassertemperatur übergeben. An dem Eingang rTMin wird eine Minimalauswahl, am Eingang rTMax eine Maximalauswahl aller Temperaturfühler des Warmwasserspeichers angeschlossen.
Bedingt durch die Temperaturschichtung im Warmwasserspeicher ist der oberste Fühler in allgemeinen der mit der höchsten Temperatur und der untere derjenige mit der niedrigsten.

Die Speicherladung kann mittels der Variablen bKepFul in zwei Arten erfolgen:

bKepFul = FALSE

Die Ladung wird angefordert wenn rTMax unter dem Wert von rSp-rSpHys liegt. Die Ladung wird deaktiviert wenn rTMin über dem Sollwert von rSp liegt.
Dadurch, dass im allgemeinen der oberste Fühler die höchste Temperatur misst, erfolgt eine Einschaltung der Speicherladung deshalb erst bei entladenem Warmwasserspeicher.

bKepFul = TRUE

Die Ladung wird angefordert wenn rTMin unter dem Wert von rSp-rSpHys liegt. Die Ladung wird deaktiviert wenn rTMin wieder über dem Sollwert ist.
Durch die Minimalauswahl aller Speichertemperaturen, wird der kälteste Punkt des Speichers für die Regelung verwendet. Eine Nachladung erfolgt sobald der Speicher nicht mehr ganz gefüllt ist.

Ein-/Ausgänge

VAR_INPUT

bEn     : BOOL;
rSp     : REAL;
rSpHys  : REAL;
rTMax   : REAL;
rTMin   : REAL;
bKepFul : BOOL;

bEn: Freigabe Boiler Ladung.

rSp: Temperatursollwert des Brauchwassers [°C].

rSpHys: Hysterese, empfohlen 1°K bis 5°K.

rTMax: Maximalauswahl aller Speichertemperaturfühler [°C].

rTMin: Minimalauswahl aller Speichertemperaturfühler [°C].

bKepFul: Steuertemperaturanwahl:

FALSE = mit rTMax wird wird bLd gefordert, mit rTMin ausgeschaltet

TRUE = rTMin allein steuert das Ein-Ausschalten von bLd

VAR_OUTPUT

bLd    : BOOL;
rSpOut : REAL;

bLd: Freigabe des Ladebetriebes.

rSpOut: Sollwertweitergabe an Ladeschaltung:

  • rSpOut = rSp (Eingang) wenn der Baustein aktiviert ist

  • rSpOut = 0 wenn der Baustein nicht aktiviert ist

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_FIFO04

Folgesteuerung von bis zu vier Aggregaten

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_FIFO04 ermöglicht eine Folgesteuerung von bis zu vier Aggregaten mit automatischem Wechsel der Einschaltreihenfolge nach Betriebsstunden.
Der Funktionsbaustein steht in zwei Ausführungen zur Verfügung: für eine Sequenz von vier und von acht Aggregaten.

In der Abfolge haben die Aggregate mit den wenigen Betriebsstunden Vorrang vor den mit vielen Betriebsstunden.

Eine steigende Flanke an bChg erzwingt einen Folgewechsel. Die Aggregate mit den geringsten Betriebsstunden werden in der FIFO nach vorne gesetzt und somit vorrangig eingeschaltet.
In der Folge werden nur Aggregate eingetragen, welche an den Eingängen bEn01..bEn04 frei gegeben sind. udiNum gibt die Anzahl der angeforderten Aggregate an.
An den Eingängen udiActvTi01 bis udiActvTi04 werden die Betriebsstunden der Aggregate eingetragen. Werden diese Eingänge alle konstant auf Null gesetzt, erfolgt der Folgewechsel nur in Abhängigkeit von bChg zyklisch gesteuert.
Dabei fällt immer das erste Aggregat aus dem FIFO heraus, die anderen werden aufgeschoben, und das erste Aggregat hinten in dem FIFO wieder angehängt. Somit rotieren die Aggregate in ihrer Folge.
Werden am Eingang udiNum mehr Aggregate angefordert als an den Eingängen bEn01 bis bEn04 zur Verfügung stehen, wird dieses an bErr mit einem TRUE signalisiert.

Fehlerbehandlung

Werden am Eingang udiNum mehr Aggregate angefordert als an den Eingängen bEn01 bis bEn04 zur Verfügung stehen, wird dieses an bErr mit einem TRUE signalisiert.

Ein-/Ausgänge

VAR_INPUT

bEn         : BOOL;
udiNum      : UDINT;
bChg        : BOOL;
bEn01       : BOOL;
bEn02       : BOOL;
bEn03       : BOOL;
bEn04       : BOOL;
udiActvTi01 : UDINT;
udiActvTi02 : UDINT;
udiActvTi03 : UDINT;
udiActvTi04 : UDINT;

bEn: Freigabe des Bausteins..

udiMyNum: Anzahl der Aggregate.

bChg: Folgewechsel erzwingen.

bEn01...bEn04: Freigabe Aggregat 1...Freigabe Aggregat 4.

udiActvTi01...udiActvTi04: Betriebsstunden Aggregat 1...Betriebsstunden Aggregat 4.

VAR_OUTPUT

bQ01        : BOOL;
bQ02        : BOOL;
bQ03        : BOOL;
bQ04        : BOOL;
udiNextOn   : UDINT;
udiNextOff  : UDINT;
arrFIFO     : ARRAY [1..4] OF UDINT;
udiNumOfEn  : UDINT;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

bQ01...bQ04: Schaltet Aggregat 1..4.

udiNextOn: Nummer des Aggregates, welches als nächstes eingeschaltet wird.

udiNextOff: Nummer des Aggregates, welches als nächstes eingeschaltet wird.

arrFIFO: FIFO-Speicher als Feld.

udiNumOfEn: Anzahl Teilnehmer in Abhängigkeit der einzelnen Freigaben.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_FIFO08

Folgesteuerung von bis zu acht Aggregaten.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_FIFO08 ermöglicht eine Folgesteuerung von bis zu acht Aggregaten mit automatischem Wechsel der Einschaltreihenfolge nach Betriebsstunden.
Der Funktionsbaustein steht in zwei Ausführungen zur Verfügung: für eine Sequenz von vier und von acht Aggregaten.

In der Abfolge haben die Aggregate mit den wenigen Betriebsstunden Vorrang vor den mit vielen Betriebsstunden.

Eine steigende Flanke an bChg erzwingt einen Folgewechsel. Die Aggregate mit den geringsten Betriebsstunden werden in der FIFO nach vorne gesetzt und somit vorrangig eingeschaltet.
In der Folge werden nur Aggregate eingetragen, welche an den Eingängen bEn01..bEn08 frei gegeben sind. udiNum gibt die Anzahl der angeforderten Aggregate an.
An den Eingängen udiActvTi01 bis udiActvTi08 werden die Betriebsstunden der Aggregate eingetragen. Werden diese Eingänge alle konstant auf Null gesetzt, erfolgt der Folgewechsel nur in Abhängigkeit von bChg zyklisch gesteuert.
Dabei fällt immer das erste Aggregat aus dem FIFO heraus, die anderen werden aufgeschoben, und das erste Aggregat hinten in dem FIFO wieder angehängt. Somit rotieren die Aggregate in ihrer Folge.
Werden am Eingang udiNum mehr Aggregate angefordert als an den Eingängen bEn01 bis bEn08 zur Verfügung stehen, wird dieses an bErr mit einem TRUE signalisiert.

Fehlerbehandlung

Werden am Eingang udiNum mehr Aggregate angefordert als an den Eingängen bEn01 bis bEn08 zur Verfügung stehen, wird dieses an bErr mit einem TRUE signalisiert.

Ein-/Ausgänge

VAR_INPUT

bEn         : BOOL;
udiNum      : UDINT;
bChg        : BOOL;
bEn01       : BOOL;
bEn02       : BOOL;
bEn03       : BOOL;
bEn04       : BOOL;
bEn05       : BOOL;
bEn06       : BOOL;
bEn07       : BOOL;
bEn08       : BOOL;
udiActvTi01 : UDINT;
udiActvTi02 : UDINT;
udiActvTi03 : UDINT;
udiActvTi04 : UDINT;
udiActvTi05 : UDINT;
udiActvTi06 : UDINT;
udiActvTi07 : UDINT;
udiActvTi08 : UDINT;

bEn: Freigabe des Bausteins..

udiMyNum: Anzahl der Aggregate.

bChg: Folgewechsel erzwingen.

bEn01...bEn08: Freigabe Aggregat 1...Freigabe Aggregat 8.

udiActvTi01...udiActvTi08: Betriebsstunden Aggregat 1...Betriebsstunden Aggregat 8.

VAR_OUTPUT

bQ01        : BOOL;
bQ02        : BOOL;
bQ03        : BOOL;
bQ04        : BOOL;
bQ05        : BOOL;
bQ06        : BOOL;
bQ07        : BOOL;
bQ08        : BOOL;
udiNextOn   : UDINT;
udiNextOff  : UDINT;
arrFIFO     : ARRAY [1..8] OF UDINT;
udiNumOfEn  : UDINT;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

bQ01...bQ08: Schaltet Aggregat 1..8.

udiNextOn: Nummer des Aggregates, welches als nächstes eingeschaltet wird.

udiNextOff: Nummer des Aggregates, welches als nächstes eingeschaltet wird.

arrFIFO: FIFO-Speicher als Feld.

udiNumOfEn: Anzahl Teilnehmer in Abhängigkeit der einzelnen Freigaben.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_FnctSel

Automatische Anwahl Hieiz- oder Kühlregler.

Funktionsbeschreibung

Der Funktionsbaustein dient der Heiz-Kühlreglerfreigabe für einen Raum als Teil einer klimatechnischen Anlage. Dabei spielt die Art des Verteilungsnetzes eine große Rolle: handelt es sich um ein Zweileitersystem, so können alle Räume der Anlage immer nur entweder beheizt oder gekühlt werden. In einem Vierleitersystem hingegen kann die Klimatisierung der Räume bedarfsgerecht erfolgen, d.h. ein Teil der Räume kann beheizt, der andere von derselben Anlage gekühlt werden.
Der Funktionsbaustein, der wie bereits erwähnt pro Raum Anwendung findet, wählt damit je nach vorhandenem Rohrleitungssystem seine Regler unterschiedlich an:

Zweileiternetz

Das Zweileitersystem ist angewählt, wenn der Baustein am Eingang bPipeSys einen FALSE-Eintrag hat. Da alle Räume der Anlage nur entweder beheizt oder gekühlt werden können, wird die Anwahl von zentraler Stelle für alle Räume gleich über den Eingang bMedium vorgegeben. Ist bMedium FALSE, so wird der Raum-Heizregler angewählt - ist der Eingang TRUE, so ist es der Kühlregler. Die Reglerfreigaben bEnHtg und bEnCol werden immer gegenseitig verzögert um uiChgOvrDly [s] ausgegeben, das heißt: erst wenn die Freigabe Kühlen bEnCol für uiChgOvrDly auf FALSE stand, kann die Freigabe Heizen gegeben werden und umgekehrt. Zusätzlich zum Ablauf dieser Umschaltzeit wird darauf geachtet, dass der abzuschaltende Regler 0.0 ausgibt. Dies geschieht durch Rückmeldung an den Eingängen lrCtrlValHtg und lrCtrlValCol. So wird ein drastischer Wechsel von Heizen auf Kühlen und umgekehrt vermieden.

Vierleiternetz

Das Vierleitersystem ist angewählt, wenn der Baustein am Eingang bPipeSys einen TRUE-Eintrag hat. Die Regleranwahl kann nun für alle Räume nach Bedarf unterschiedlich sein und richtet sich daher nach der Raumtemperatur lrRmT und den eingestellten Sollwerten lrSpHtg für Heizen und lrSpCol für Kühlen. Übersteigt die Raumtemperatur den Kühlsollwert, so wird der Kühlregler freigegeben (bEnCol), fällt sie unter den Heizsollwert, wird der Heizregler freigegeben (bEnHtg). Befindet sich die Temperatur zwischen beiden Sollwerten, so sind beide Regler abgeschaltet (energieneutrale Zone). Auch hier werden die Reglerfreigaben bEnHtg und bEnCol immer gegenseitig verzögert um uiChgOvrDly [s] ausgegeben (siehe Zweileiternetz) und zusätzlich zum Ablauf dieser Umschaltzeit darauf geachtet, dass der abzuschaltende Regler 0.0 ausgibt. Dies geschieht durch Rückmeldung an den Eingängen lrCtrlValHtg und lrCtrlValCol. So wird ein drastischer Wechsel von Heizen auf Kühlen und umgekehrt vermieden, sollte die Umschaltzeit nicht ausreichend hoch bemessen sein.

Taupunktwächter (bDewPnt)

In beiden Systemen - Zwei- und Vierleiter - hat der Taupunktwächter die Aufgabe das Kühlen unmittelbar zu verriegeln. Da es sich hierbei um eine Sicherheitsfunktion handelt, ist der betreffende Eingang bDewPnt nach dem Ruhestromprinzip, also invertiert ausgelegt: bDewPnt = FALSE: Kühlregler ist verriegelt.

Programmablauf

Der Baustein kennt 3 Zustände:

  1. Warten auf Freigabe Heizen bzw. Kühlen
  2. Freigabe Heizen
  3. Freigabe Kühlen

Im ersten Schritt wartet der Baustein auf die Erfüllung der Bedingungen, die für das Heizen bzw. das Kühlen notwendig sind:

Heizen | Kühlen
Ausgabe Kühlregler = 0 (lrCtrlValCol) | Ausgabe Heizregler = 0 (lrCtrlValHtg)
Raumtemperatur (lrRmT) < Sollwert Heizen (lrSpHtg) | Raumtemperatur (lrRmT) > Sollwert Kühlen (lrSpCol)
Reglerfreigabe Kühlen (bEnCol) steht mindestens für die Umschaltzeit udiChgOvrDel [s] auf FALSE | Reglerfreigabe Heizen (bEnHtg) steht mindestens für die Umschaltzeit udiChgOvrDel [s] auf FALSE
Vierleitersystem ist angewählt (bPipesys=TRUE) ODER Zweileitersystem ist angewählt und es steht Heizmedium an (bPipeSys=FALSE AND bMedium=FALSE) | Vierleitersystem ist angewählt (bPipesys=TRUE) ODER Zweileitersystem ist angewählt und es steht Kühlmedium an (bPipeSys=FALSE AND bMedium=TRUE)
 | Der Taupunktwächter (Ruhestromprinzip) spricht nicht an (bDewPnt=TRUE)

Ist nun eine Bedingungskette erfüllt, springt der Baustein in den jeweiligen Zustand Heizen oder Kühlen und beendet diesen erst, wenn der entsprechende Regler am Bausteineingang (lrCtrlValHtg/lrCtrlValCol) 0 ausgibt. Damit ist sicher gestellt, dass immer nur ein Regler im Eingriff ist, auch wenn eine zu hohe Reglerausgabe, z.B. Heizen, u.U. ein kurzfristiges Kühlen erforderlich machen würde (Überschwingen). Das Heizen, bzw. Kühlen wird dann erst abgeschlossen , wenn kein Bedarf mehr ansteht.

Allerdings gibt es 3 Ausnahmen, bei denen das Heizen bzw. Kühlen unmittelbar unterbrochen wird:

  1. Im Zweileitersystem (bPipeSys=FALSE) wird geheizt (bEnHtg), es wurde jedoch auf Kühlmedium umgestellt bMedium=TRUE
  2. Im Zweileitersystem (bPipeSys=FALSE) wird gekühlt (bEnCol), es wurde jedoch auf Heizmedium umgestellt bMedium=FALSE
  3. Im Külhbetrieb (Zwei- oder Vierleitersystem) hat der Taupunktwächter angesprochen (bDewPnt=FALSE)

In diesen Fällen werden die Heiz- und Kühlfreigaben weg genommen und zurück in den Wartezustand gesprungen.

Bedarfsmitteilung (udiReqdMedium)

Um der Anlage mitzuteilen, wie der aktuelle Bedarf an Wärme oder Kühlung ist, wird am Bausteinausgang, also pro Raum, in Abhängigkeit der Ist- und Solltemperatur eine Bedarfskennung ausgegeben. Diese kann zentral gesammelt und ausgewertet werden. Die Auswertung erfolgt immer, also unabhängig vom vorhandene Netzsystem (Zwei- oder Vierleiter).

udiReqdMedium | Medium | Raumtemperatur
1 | kein Medium ist angefordert | rTRm > SpHtg UND rRTm < SpCol
2 | Heizmedium ist angefordert | rTRm < SpHtg
3 | Kühlmedium ist angefordert | rTRm > SpCol

Fehlerbehandlung

Der Heiz-Sollwert darf nicht größer oder gleich dem Kühl-Sollwert sein, da damit ein Temperaturbereich entstehen würde, in dem gleichzeitig Heiz- und Kühlbedarf entsteht. Da der Baustein jedoch immer nur eine Freigabe, Heizen oder Kühlen ausgibt, ist der Fall anlagentechnisch unbedenklich. Es wird für diesen Fall nur eine Warnmeldung (bErr=TRUE, udiErrId=gBA_WarnIdFnctSel) ausgegeben - der Baustein unterbricht seine Abarbeitung nicht.

Ein-/Ausgänge

VAR_INPUT

bPipeSys       : BOOL;
bMedium        : BOOL;
bDewPnt        : BOOL;
lrRmT          : LREAL;
lrSpHtg        : LREAL;
lrSpCol        : LREAL;
lrCtrlValHtg   : LREAL;
lrCtrlValCol   : LREAL;
udiChgOvrDel  : UINT;

bPipeSys: bei Zweileitersystem ist bPipeSys FALSE, bei Vierleitersystem TRUE.

bMedium: aktuelle Versorgung des gesamten Zweileiternetzes mit Kühl- oder Heizmittel. Wenn Heizmedium ansteht ist bMedium FALSE.

bDewPnt: Taupunktwächter im Ruhestromprinzip (negative Logik): wenn bDewPnt = FALSE, dann wird der Kühlregler gesperrt.

lrTRm: Raumtemperatur.

lrSpHtg: Heiz-Sollwert.

lrSpCol: Kühl-Sollwert.

lrCtrlValHtg: aktueller Ausgabewert vom Heizregler. Wird intern als Umschaltkriterium von Heizen auf Kühlen verwendet: lrCtrlValHtg muss 0 sein.

lrCtrlValCol: aktueller Ausgabewert vom Kühlregler. Wird intern als Umschaltkriterium von Kühlen auf Heizen verwendet: lrCtrlValCol muss 0 sein.

udiChgOvrDel: Umschaltverzögerung [s] von Heizen auf Kühlen und umgekehrt.

VAR_OUTPUT

bEnHtg               : BOOL;
bEnCol               : BOOL;
udiReqdMedium        : UDINT;
udiRemTiChgOvrDlyHtg : UDINT;
udiRemTiChgOvrDlyCol : UDINT;
bErr                 : BOOL;
udiErrId             : UDINT;
udiErrArg            : UDINT;

bEnHtg: Freigabe des Reglers Heizen.

bEnCol: Freigabe des Reglers Kühlen.

udiReqdMedium:

udiReqdMedium | Medium | Raumtemperatur
1 | kein Medium ist angefordert | rTRm > SpHtg UND rRTm < SpCol
2 | Heizmedium ist angefordert | rTRm < SpHtg
3 | Kühlmedium ist angefordert | rTRm > SpCol

udiRemTiChgOvrDlyHtg: Countdown [s] Umschaltverzögerung von Kühlen auf Heizen.

udiRemTiChgOvrDlyCol: Countdown [s] Umschaltverzögerung von Heizen auf Kühlen.

bErr: Bei fehlerhafter Abarbeitung, bzw. bei Warnzuständen wird dieser Ausgang auf TRUE gesetzt.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 ab Build 2244 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_FrstPrtc

Überwachung Frostalarm und Noterhitzung mit 2 Zeitüberwachungen: T1 Alarm geht wieder und T2 Alarm kommt nicht erneut.

Funktionsbeschreibung

Der Funktionsbaustein dient zur Frostüberwachung eines Heizregister in einer raumlufttechnischen Anlage.

Frostgefahr steht an, wenn der Eingang bFrst TRUE ist. Der Frostalarm muss im Anlagenprogramm so verknüpft werden, dass die Anlage sofort abschaltet, das Erhitzerventil öffnet und die Erhitzerpumpe eingeschaltet wird.

Bei Frostgefahr wird der Ausgang bOn gesetzt und der Timer T1 gestartet. Ist nach Ablauf von udiT1 (Sekunden) nach wie vor Frostgefahr (bFrst=TRUE) dann bleibt bOn gesetzt. Ein Rücksetzen kann nur an dem Eingang bRst erfolgen.

Erlischt der Frostalarm durch das Aufheizen des Heizregisters innerhalb des Zeitraums von udiT1 (bFrst=FALSE), so erfolgt ein automatischer Neustart der Anlage. Für den Anlagenneustart wird bOn FALSE und am Ausgang bHWRst wird ein Impuls zur Quittierung einer Selbsthaltungsschaltung im Schaltschrank ausgegeben. Mit dem Neustart wird der Timer T2 gestartet. Erfolgt innerhalb des Zeitraums von udiT2 (Sekunden) erneut ein Frostalarm wird die Anlage endgültig verriegelt. bOn bleibt so lange gesetzt bis der Frostalarm beseitigt und an bRst quittiert ist.

Falls die Frostalarme aufeinander folgend, aber immer mit einem Zeitversatz größer als die Zeit von udiT2 erfolgen, würde theoretisch beliebig oft automatisch neu gestartet werden. Um dieses zu vermeiden werden die Neustarts innerhalb des Bausteins gezählt. Mit udiAlmCnt ist die Zahl der möglichen automatischen Neustarts zwischen 0 und 4 einstellbar.

Eine Quittierung am Eingang bRst setzt den Alarmspeicher innerhalb des Bausteins auf Null zurück.

Beispiel:

t0 = Frostalarm an Eingang bFrst, Alarmmeldung an Ausgang bOn, Starten des Timers T1 (udiT1 [s])
t1 = Frostalarm erloschen, Rücksetzen von bOn, Ausgabe Hardwareimpuls, Starten von Timer T2 (udiT2 [s]), Anlagenneustart
t2 = Erneuter Frostalarm innerhalb von T2, Alarmmeldung an bOn, Starten des Timers T1, verriegeln des Frostalarms
t3 = Frostalarm geht.
t4 = Quittierung des Alarms an bRst, Rücksetzen von bOn.

Ein-/Ausgänge

VAR_INPUT

bFrst     : BOOL;
udiT1     : UDINT;
udiT2     : UDINT;
udiAlmCnt : UDINT;
bRst      : BOOL;

bFrst: Anschluss für die Frostereignisse luft- und wasserseitig.

udiT1: Timer zur Verzögerung von Neustarts [s].

udiT2: Timer Überwachungszeit [s].

udiAlmCnt: Maximale Zahl der automatischen Anlagenneustarts ohne Rücksetzen. Die maximal mögliche Eingabe ist 4 und wird intern begrenzt.

bRst: Rücksetzen bzw. quittieren des Frostalarms.

VAR_OUTPUT

bOn       : BOOL;
bHWRst    : BOOL;
udiRemTi1 : UDINT;
udiRemTi2 : UDINT;
bAlmLck   : BOOL;
udiStaCnt : UDINT;

bOn: Frostalarm aktiv.

bHWRst: Ausgabe eines Impulses zur Quittierung der Frostschutzhardware.

udiRemTi1: Verbleibende Zeit bis Anlagenneutstart nach Frostalarm.

udiRemTi2: Verbleibende Überwachungszeit.

bAlmLck: Alarm Lock - gespeicherter Alarm.

udiStaCnt: Status Counter – akt. Anzahl nicht quittierter Fehlstarts.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_HX

Enthalpieberechnung.

Funktionsbeschreibung

Mit diesem Funktionsbaustein werden die Taupunkttemperatur, die spezifische Enthalpie und die absolute Feuchte berechnet. Für die Berechnung der Größen werden die Temperatur, die relative Feuchte und der barometrische Luftdruck benötigt.
Die Enthalpie ist ein Maß für die Energie eines thermodynamischen Systems.

Ein-/Ausgänge

VAR_INPUT

rT      : REAL;
rHumRel : REAL;
rAP     : REAL;

rT: Temperatur [°C].

rHumRel: Relative Feuchte [%].

rAP: Hydrostastischer Luftdruck 1013.25 hPa.

VAR_OUTPUT

lrHumAbs : LREAL;
lrDewPnt : LREAL;
lrE      : LREAL;
lrDHA    : LREAL;
lrSpecV  : LREAL;
lrTWet   : LREAL;

lrHumAbs: Absolute Feuchte g Wasser je kg trockener Luft [g/Kg].

lrDewPnt: Taupunkttemperatur [°C].

lrE: Enthalpie [kJ/kg].

lrDHA: Dichte feuchter Luft ρ [kg Gemisch/m³].

lrSpecV: spezifisches Volumen [ m³/kg].

lrTWet: Feuchtkugeltemperatur [°C].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_LglPrev

Legionellenschutz.

Funktionsbeschreibung

Der Funktionsbaustein dient zur Desinfektion des Brauchwassers und zum Abtöten von Legionellen. Die Freigabe des Desinfektionsbetriebes erfolgt an dem Eingang bEnLglPrev durch die Anschaltung eines Zeitschaltprogrammes. Zu empfehlen ist die Desinfektion mindestens einmal in der Woche nachts durchzuführen. Die Temperatur sollte mindestens 70°C sein. Das Einschaltintervall an bEnLglPrev muss dafür ausreichend lang gewählt werden. Der Ausgang bLd aktiviert dabei die Speicherladung.
Bei Warmwasserspeichern mit zwei Temperaturfühler muss an rTMin eine Min-Auswahl beider Fühler angeschlossen werden.
Überschreitet rTMin den Wert von rSp, wird ein Überwachungstimer mit einer Zeit von udiTi [s] gestartet. Bleibt die minimale Speichertemperaur rTMin bis zum Ablauf des Timers oberhalb von rSp-rSpHys ist eine ausreichende Aufheizung des Speichers erfolgt. Bei einer vorhandenen Zirkulation muss der Ausgang bLd mit der Freigabe der Zirkulationspumpe verknüpft sein damit auch die Wasserleitung innerhalb des Brauchwassersystems desinfiziert wird. Ist die Temperatur jedoch während es Desinfektionsprozesses unter rSp-rSpHys gefallen muss der Desinfektionsprozess neu gestartet werden bis die Zeit von udiTi einmal komplett abgelaufen ist. Bei einer erfolgreichen Desinfektion wird der Ausgang bLd zurück gesetzt.
Wurde während der Bausteinaktivierung (bEnLglPrev) kein vollständiger Desinfektionsprozess abgeschlossen, wird dieses mit dem Ausgang bAlm signalisiert. Der Ausgang muss mit dem Eingang bRst zurückgesetzt werden.

Erläuterung zur Grafik:

t0 Starten des Legionellenprogramms und Schalten des Ausgangs bLd. Aufheizen der Warmwasserspeichers.

t1 Der Speicher hat die Temperatur rSp erreicht. Der Timer für die Aufheizzeit wird gestartet.

t2 Die minimale Speichertemperatur ist unterhalb von rSp-rSpHys gefallen. Der Timer für die Aufheizzeit wird wieder zurück gesetzt.

t3 Die Temperatur steigt erneut über rSp und der Aufheiztimer wird wieder gestartet.

t4 Die Minimale Speichertemperatur war über den Zeitraum von udiTi hinweg oberhalb der Grenze rSp-rSpHys, die Desinfektion war erfolgreich. bLd wird zurück gesetzt und der Warmwasserspeicher geht wieder in den Normalbetrieb.

Ein-/Ausgänge

VAR_INPUT

bEnLglPrev : BOOL;
rTMin      : REAL;
rSp        : REAL;
rSpHys     : REAL;
udiTi      : UDINT;
bRst       : BOOL;

bEnLglPrev: Freigabe des Desinfektionsbetriebes über ein Zeitschaltprogamm.

rTMin: Minimale Speichertemperatur [°C]. Minimalauswahl von Temperaturfühler oben und Temperaturfühler unten.

rSp: Sollwert Desinfektion [°C].

rSpHys: Temperaturspreizung [°K] untere Grenze - wird immer absolut gerechnet.

udiTi: Überwachungszeitraum [s].

bRst: Rücksetzen des Legionellenalarms;

VAR_OUTPUT

bLd     : BOOL;
rSpOut  : REAL;
udiRTi  : UDINT;
udiSta  : UDINT;

bLd: Anti-Legionellenbetrieb aktiv.

rSpOut: Sollwertweitergabe an Ladeschaltung:

  • rSp (Eingang) wenn der Baustein aktiviert ist
  • 0 wenn der Baustein nicht aktiviert ist

udiRTi: Countdown Desinfektions-Betriebstimer.

udiSta: Status Desinfektionsprogramm:

  1. Der Desinfektionsbetrieb war erfolgreich.

  2. Die Desinfektion ist erfolgreich abgeschlossen. Zum Abschluss und für eine neue Aktivierung der Legionellenvorsorge muss bEnLglPrev FALSE sein.

  3. Der Desinfektionsbetrieb ist aktiv.

  4. Desinfektion war nicht erfolgreich. Alarm steht an.

  5. Desinfektion war nicht erfolgreich, der Alarm wurde quittiert.

  6. Bedeutet ein Neustart der Steuerung bzw. es wurde noch kein Legionellenbetrieb angefordert.

bAlm: Temperatursollwert wurde nicht durchgängig über den Zeitraum von udiTime hinweg erreicht, so dass eine ausreichende Desinfektion nicht gewährleiste ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_LmtCtrl

Baustein zur Ermittlung der Grenzwerte und dessen Freigabe

Funktionsbeschreibung

Der Funktionsbaustein dient zur Ermittlung von Grenzwerten (rHiLmt / rLoLmt) in Abhängigkeit der eingestellten Betriebsart und dessen Freigabe (bQ).
Der Funktionsbaustein kann für folgende Bedingungen eingesetzt werden, z.B. bei einem Anlagenstillstand, im Moment des Starts und bis zum eingeregelten Zustand einer Anlage. In diesen Phasen soll das Melden z.B. eines Loop-Objektes unterdrückt werden damit keine falschen Meldungen an die MBE gesendet werden. Erst wenn die RLT-Anlage vollständig hochgefahren ist und die Regelung sich eingependelt hat, soll das Melden des Loop-Objektes freigegeben werden.

Wichtig ist, dass bQ nur über bEn = FALSE zurück gesetzt werden kann.

Diagramm 1

Diagramm 2

Ein-/Ausgänge

VAR_INPUT

bEn           : BOOL;
rSp           : REAL;
rX            : REAL;
udiOpMod      : UDINT;
rHiVal        : REAL;
rLoVal        : REAL;
udiTiSttDly   : UDINT;[s]
udiTiSttAuto  : UDINT;[s]

bEn: Freigabe Baustein. Ist bQ = TRUE, so kann der Ausgang nur zurück gesetzt werden, wenn bEn auf FALSE gesetzt wird.

rSp: Sollwert

rX: Istwert

udiOpMod: Vorgabe Betriebsart. Es kann zwischen 3 Betriebsarten gewählt werden. Daraus resultiert dann

udiOpMod = 1 = fest/fixed: rHiLmt = rHiVal und rLoLmt := rLoVal.Wichtig ist, dass rLoVal nicht größer gleich rHiVal sein darf. Ist dieses der Fall, dann ist rHiLmt=rHiVal und rLoLmt:=rHiVal- 0,05

udiOpMod = 2 = gleitend absolut/sliding absolut: Es wird über die Funktion ABS der Absolutwert für die beiden Eingangsvariablen rHiVal / rLoVal bestimmt. rHiLmt = rSp + rHiVal und rLoLmt = rSp - rLoVal

udiOpMod = 3 = gleitend prozentual/sliding percent: Es wird über die Funktion ABS der Absolutwert für die beiden Eingangsvariablen rHiVal / rLoVal bestimmt. Die Formeln zur Bestimmung der Grenzwerte lauten: rHiLmt = rSp + ABS(((rSp x rHiVal) / 100)); rLoHiLmt = rSp - ABS(((rSp x rLoVal) / 100))

rHiVal: Oberer Wert zur Berechnung des oberen Grenzwertes rHiLmt. Die Berechnung des oberen Grenzwert ist abhängig von der Betriebsart udiOpMod.

rLoVal: Unterer Wert zur Berechnung des unteren Grenzwertes rLoLmt. Die Berechnung des unteren Grenzwert ist abhängig von der Betriebsart udiOpMod.

udiTiSttDly: Startverzögerung für bQ, wenn Funktion erfüllt ist, siehe Diagramm 1.

udiTiSttAuto: Automatische Startverzögerung. Ist bEn = TRUE, so wird bQ nach Ablauf der automatischen Zeitverzögerung TRUE, siehe Diagramm 2.

VAR_OUTPUT

bQ               : BOOL;
rHiLmt           : REAL;
rLoLmt           : REAL;
udiRemTiSttDly   : UDINT;
udiRemTiSttAuto  : UDINT;

bQ: Grenzwertüberwachung ist frei gegeben. bQ kann nur über bEn = FALSE zurück gesetzt werden.

rHiLmt: Oberer Grenzwert für die Freigabe der Grenzwertüberwachung. Der Wert ist abhängig von der Betriebsart udiOpMod

rLoLmt : Unterer Grenzwert für die Freigabe der Grenzwertüberwachung. Der Wert ist abhängig von der Betriebsart udiOpMod

udiRemTiSttDly: Countdown der Startverzögerung udiTiSttDly

udiRemTiSttAuto: Countdown der Automatischen Startverzögerung udiTiSttAuto

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_NgtCol

Sommernachtskühlung.

Funktionsbeschreibung

Dieser Funktionsbaustein wird verwendet um nachts mit kühler Außenluft die tags zuvor aufgeheizten Räume herunter zu kühlen. Die Funktion der Sommernachtkühlung dient zur Verbesserung der Luftqualität und zur Einsparung elektrischer Energie. In den ersten Stunden des nächsten Sommertages wird elektrische Energie zur Kälteerzeugung gespart.

Durch Parametrierung des Funktionsbausteins FB_BA_NgtCol werden die Startbedingungen für die Sommernachtkühlung definiert. Der Baustein kann verwendet werden, um motorisch betätigte Fenster zu öffnen oder Klimaanlagen außerhalb ihrer normalen Betriebszeiten in den Sommernachtkühlbetrieb zu schalten.

Folgende Bedingungen müssen für die Aktivierung der Sommernachtkühlung erfüllt sein:

  • Der Baustein selbst ist aktiviert (bEn = TRUE).
  • Die Außentemperatur ist nicht zu niedrig (rTOts > rTOtsLoLmt).
  • Die Außentemperatur ist im Vergleich zur Raumtemperatur ausreichend niedrig (rTRm - rTOts) > rSwiOnDiffT.
  • Die Raumtemperatur ist so hoch, so dass es sich lohnt die Sommernachtkühlung einzuschalten. rTRm > rSpRm + rTRmHys.

Bei den folgenden Bedingungen wird die Sommernachtkühlung deaktiviert:

  • Der Baustein selbst ist deaktiviert (bEn = FALSE).
  • Die Außentemperatur ist zu niedrig (rTOts < rTOtsLoLmt).
  • Die Außentemperatur ist im Vergleich zur Raumtemperatur zu hoch (rTRm - rTOts) < rSwiOffDiffT.
  • Die Raumtemperatur ist niedriger als der Sollwert. rTRm≤rSpRm.

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
rTOts        : REAL;
rTRm         : REAL;
rSpRm        : REAL;
rTOtsLoLmt   : REAL;
rTOtsHys     : REAL;
rTRmHys      : REAL;
rSwiOnDiffT  : REAL;
rSwiOffDiffT : REAL;

bEn: Freigabe des Funktionsbausteins.

rTOts: Außentemperatur [°C].

rTRm: Außentemperatur [°C].

rSpRm: Raumtemperatur-Sollwert.

rTOtsLoLmt: Untere Grenze der Außentemperatur [°C], verhindert ein zu starkes Auskühlen.

rTOtsHys: Hysterese für die minimale Außentemperatur [°K]. Diese Hysterese, welche nach unten hin intern auf 0.5 °K begrenzt ist, soll ein Flattern von bQ verhindern, falls die Außentemperatur genau um den Wert von rTOtsLoLmt pendelt. .

rTRmHys: Hysterese für die Raumtemperatur [°K]. Diese Hysterese, welche nach unten hin intern auf 0.5 °K begrenzt ist, soll ein unnötiges Schwanken von bQ verhindern, falls die Raumtemperatur genau um den Sollwert rSpRm pendelt. .

rSwiOnDiffT: Differenz zwischen der Raumtemperatur und der Außentemperatur ab der die Sommernachtkühlung frei gegeben wird [°K].

rSwiOffDiffT: Differenz zwischen der Raumtemperatur und der Außentemperatur ab der die Sommernachtkühlung gesperrt wird [°K].

VAR_OUTPUT

bQ  : BOOL;

bQ: Sommernachtkühlung Ein.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_RcvMonit

Funktionsbaustein zur Berechnung des Wirkungsgrades einer Energie-Rückgewinnung.

Funktionsbeschreibung

Der Baustein benötigt zur Berechnung des Wirkungsgrades (der sogenannten Rückwärmzahl) folgende Temperaturmesswerte:

  • Außenlufttemperatur rTOts
  • Fortlufttemperatur rTExh
  • Lufttemperatur der Energie-Rückgewinnung im Zuluftkanal (alternativ: im Abluftkanal) rTAftRcv

Der Baustein nimmt nun alle 10s die Temperatur-Messwerte auf und bildet aus jeweils 6 Werten den minütlichen Mittelwert. Danach wird beurteilt, ob die Anlage sich in einem eingeregelten, "stabilen" Zustand befindet:

  • Die aufgenommenen Temperaturen Außenluft, Fortluft und Luft nach Energierückgewinnung sind annähernd konstant, d.h. keiner der 6 Einzelwerte weich mehr als 0,5°K vom jeweiligen Mittelwert ab.
  • Die Temperaturdifferenz Außenluft zu Fortluft beträgt mindestens 5°K.

Ist dies der Fall, so wird dieser Messzyklus mit einem TRUE-Signal am Ausgang bStblOp quittiert und der ermittelte Wirkungsgrad an rEffc ausgegeben. Ist der Zustand hingegen nicht "stabil", so erscheint am Ausgang bStblOp ein FALSE-Signal unf rEffc wird auf 0 gesetzt.

In jedem Fall jedoch wird jeder Mess- und Auswerte-Zyklus mit einem Trigger (ein Ein-PLC-Zyklus langes TRUE-Signal) an bNewVal als beendet gekennzeichnet.

Freigabe (bEn) und Reset (bRst)

Der Baustein arbeitet nur dann, wenn ein TRUE-Signal an bEn anliegt. ansonsten stoppt er seine Abarbeitung und alle Ausgänge werden auf FALSE bzw 0.0 gesetzt.

Während der Abarbeitung kann ein Mess-und Auswertezyklus jederzeit durch ein TRUE-Signal an bRst abgebrochen werden. Alle Ausgänge werden auf FALSE bzw. 0.0 gesetzt und der Messzyklus startet automatisch neu.

Auswahl des Temperaturwertes "nach Rückgewinnung" (bSnsRcvTExh)

Ein FALSE-Eintrag an bSnsRcvTExh bedeutet, dass zur Berechnung des Wirkungsgrades die Temperaturmessung nach der Wärmerückgewinnung im Zuluftkanal verwendet wird .
Soll hingegen die Temperaturmessung nach der Wärmerückgewinnung im Abluftkanal angewendet werden, so muss an bSnsRcvTExh ein TRUE angelegt werden.

Grenzwertüberschreitung (rContrVar, rLmtEffc, bLmtRchd)

Eine Grenzwertüberschreitung liegt dann vor, wenn der ermittelte Wirkungsgrad kleiner ist als der eingetragene Grenzwert rLmtEffc und gleichzeitig der Stellgröße für die Wärmerückgewinnung bei 100% liegt. Dazu muss die Stellgröße mit dem Eingang rContrVar verbunden werden.
Die Meldung der Grenzwertüberschreitung lässt sich durch einen Eintrag an udiLmtVioDly verzögern: Liegen die beiden Kriterien, Überschreitung und Übersteuerung länger ald udiLmtVioDly [s] vor, so wird dieses mit einem TRUE-Signal an bLmtRchd angezeigt. Das Auftreten lässt sich am Countdown-Ausgang udiRemTiLmtRchd verfolgen.
Eine aufgetretene Warnmeldung erlischt, wenn ein kompletter Messzyklus "gute" Werte erbringt oder bei einer steigenden Flanke an bRst bzw einer Deaktivierung des Bausteines.

Hinweis: Diese Warnmeldung kann nur zustande kommen, wenn die Anlage in einen stabilen Betrieb ist (bStblOp=TRUE).

Berücksichtigung Temperaturanstieg der Abluft durch Ventilatormotor (rTIncFan)

Es ist möglich, dass die Abluft durch einen Ventilatormotor erwärmt und die Messung damit verfälscht wird. Diese Temperaturerhöhung kann durch den Parameter rTIncFan angegeben werden. Intern wird dann die gemessene Ablufttemperatur um diesen Wert gemindert.

Ein-/Ausgänge

VAR_INPUT

bEn          : BOOL;
bRst         : BOOL;
rContrVar    : REAL;
rTOts        : REAL;
rTExh        : REAL;
rTAftRcv     : REAL;
bSnsRcvTExh  : BOOL;
rTIncFan     : REAL;
rLmtEffc     : REAL;
udiLmtVioDly : UDINT;

bEn: Freigabe des Bausteines.

bRst: Reset - alle ermittelten Werte werden gelöscht.

rContrVar: Stellgröße für die Wärmerückgewinnung, d.h. ihr Istwert.

rTOts: Außentemperatur.

rTExh: Fortlufttemperatur.

rTAftRcv: Temperatur nach Energierückgewinnung.

bSnsRcvTExh: Messort Temperatur nach Energierückgewinnung: FALSE -> im Zuluftkanal (SupplyAir) - TRUE -> im Abluftkanal (ExhaustAir).

rTIncFan: Temperaturanstieg durch Ventilator.

rLmtEffc: Wirkungsgrad Grenzwert.

udiLmtVioDly: Zeitverzögerung Grenzwertüberschreitung [s].

VAR_OUTPUT

rEffc            : REAL;
bStblOp          : BOOL;
bNewVal          : BOOL;
bLmtRchd         : BOOL;
udiRemTiLmtRchd  : UDINT;

rEffc: Effektivität

bStblOp: Stabiler Betrieb.

bNewVal: Ausgabetrigger neuer Wert rEffc.

bLmtRchd: Grenzwert erreicht

udiRemTiLmtRchd: Countdown Timer Grenzwert erreicht

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_RmTAdj

Anpassung Raumtemperatur-Sollwerte.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_RmTAdj dient der Anpassung des Raumtemperatursollwertes vom Nutzer im Raum. Er Verschiebt die Sollwerte am Eingang des Funktionsbausteins in Abhängigkeit eines Offsets rRmTAdj, wie in der folgenden Skizze dargestellt. Am Eingang Offset kann für die Sollwertkorrektur z.B. der Wert eines Widerstandspotentiometers, oder eines Busfähigen Feldbusgerätes angeschlossen sein.

Ist der Enstellwert rRmTAdj größer als Null, so wird eine Raumtemperatur-Erwärmung gewüscht: Der Wert Comfort Heatingt wird um den Wert rRmTAdj angehoben. Gleichzeitig werden auch die Werte Comfort Cooling und Precomfort Cooling erhöht, um für die erwünschte höhere Raumtemperatur weder unmittelbar, noch im Voraus kühlen zu müssen. Ist der Wert rRmTAdj hingegen kleiner als Null, so wird eine Raumtemperatur-Absenkung erwünscht. Analog zum Erwärmungsfall werden nun die Werte Comfort Cooling, Comfort Heating und PreComfort Heating um den Wert rRmTAdj herabgesetzt.

Auto-Korrektur

Die Temperaturanpassung ist dazu gedacht, die Werte in kleinem Rahmen zu beeinflussen. Natürlich können beliebige Eingangswerte eingegeben werden. Eine Heizungsanlage wird jedoch nur dann sinnvoll funktionieren, wenn die Sollwerte in folgender Reihenfolge aufsteigende Werte besitzen:

  • Protection Heating
  • Economy Heating
  • Precomfort Heating
  • Comfort Heating
  • Comfort Cooling
  • Precomfort Cooling
  • Economy Cooling
  • Protection Cooling

Die Auto-Korrektur arbeitet nach dem Prinzip, dass beginnend mit dem Wert Economy Heating geprüft wird, ob dieser Wert kleiner als der niedrigere, in diesem Fall Protection Heating ist. Ist das der Fall, wird der Wert Economy Heating dem Wert Protection Heating gleich gesetzt. Es folgt dann die Prüfung, ob der Wert Precomfort Heating kleiner ist als Economy Heating und so weiter bis zur Prüfung, ob Protection Cooling kleiner ist als Economy Cooling. Sind ein oder mehrere Werte korrigiert worden, so wird dies am Ausgang bValCorr mit einem TRUE-Signal angezeigt.

Ein-Ausgänge

VAR_INPUT

lrRmTAdj : LREAL;
stSp    : ST_BA_SpRmT;

lrRmTAdj: Raumtemperatur-Verschiebungswert

stSp : Eingabe-Struktur der Sollwerte

VAR_OUTPUT

bValCorr       : BOOL;
lrPrPrtcHtg    : LREAL;
lrPrEcoHtg     : LREAL;
lrPrPreCmfHtg  : LREAL;
lrPrCmfHtg     : LREAL;
lrPrPrtcCol    : LREAL;
lrPrEcoCol     : LREAL;
lrPrPreCmfCol  : LREAL;
lrPrCmfCol     : LREAL;
stPrSp         : ST_BA_SpRmT;

bValCorr: Autokorrektur der Werte wurde durchgeführt, siehe oben.

lrPrPrtcHtg: Resultierender Sollwert Protection Heating.

lrPrEcoHtg: Resultierender Sollwert Economy Heating.

lrPrPreCmfHtg: Resultierender Sollwert PreComfort Heating.

lrPrCmfHtg: Resultierender Sollwert Comfort Heating.

lrPrCmfCol: Resultierender Sollwert Comfort Cooling.

lrPrPreCmfCol: Resultierender Sollwert PreComfort Cooling.

lrPrEcoCol: Resultierender Sollwert Economy Cooling.

lrPrPrtcCol : Resultierender Sollwert Protection Cooling.

stPrSp: Zusammengefasste Ausgabe der resultierenden Werte in einer Struktur

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SpRmT

Bildung Raumtemperatur-Sollwerte.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_SpRmT weist den Energieniveaus Protection, Economy, PreComfort und Comfort jeweils einen Sollwert für den Kühl- und Heizbetrieb zu.
Die folgende Grafik beschreibt das Verhalten des Funktionsbausteins, wobei die eingetragenen Werte als Beispiel zu sehen sind:

Die Comfort- und PreComfort-Werte des Heizbetriebes werden mit dem Wert lrShiftHeating als zentrale Sollwertverschiebung beaufschlagt. Unabhängig davon wird noch Winterkompensation lrWinCpsn hinzuaddiert.
Für den Kühlbetrieb gilt analog: Die Comfort- und PreComfort-Werte werden mit dem Wert lrShiftCooling und unabhängig davon mit dem Wert der Sommerkompensation lrSumCpsn beaufschlagt.

Auto-Korrektur

Die Sollwert-Verschiebung ist dazu gedacht, die Werte in kleinem Rahmen zu beeinflussen. Natürlich können beliebige Eingangswerte eingegeben werden. Eine Heizungsanlage wird jedoch nur dann sinnvoll funktionieren, wenn die Sollwerte in folgender Reihenfolge aufsteigende Werte besitzen:

  • Protection Heating
  • Economy Heating
  • Precomfort Heating
  • Comfort Heating
  • Comfort Cooling
  • Precomfort Cooling
  • Economy Cooling
  • Protection Cooling

Die Auto-Korrektur arbeitet nach dem Prinzip, dass beginnend mit dem Wert Economy Heating geprüft wird, ob dieser Wert kleiner als der niedrigere, in diesem Fall Protection Heating ist. Ist das der Fall, wird der Wert Economy Heating dem Wert Protection Heating gleich gesetzt. Es folgt dann die Prüfung, ob der Wert Precomfort Heating kleiner ist als Economy Heating und so weiter bis zur Prüfung, ob Protection Cooling kleiner ist als Economy Cooling. Sind ein oder mehrere Werte korrigiert worden, so wird dies am Ausgang bValCorr mit einem TRUE-Signal angezeigt.

Ein-Ausgänge

VAR_INPUT

lrPrtcHtg   : LREAL;
lrEcoHtg    : LREAL;
lrPreCmfHtg : LREAL;
lrCmfHtg    : LREAL;
lrCmfCol    : LREAL;
lrPreCmfCol : LREAL;
lrEcoCol    : LREAL;
lrPrtcCol   : LREAL;
lrShiftHtg  : LREAL;
lrShiftCol  : LREAL;
lrSumCpsn   : LREAL;
lrWrWinCpsn : LREAL;

bValCorr: Autokorrektur: mindestens einer der resultierenden Sollwerte wurde so angepasst, dass die Werte weiterhin monoton steigend sind.

lrPrtcHtg : Basis-Sollwert Protection Heating.

lrEcoHtg: Basis-Sollwert Economy Heating.

lrPreCmfHtg: Basis-Sollwert PreComfort Heating.

lrCmfHtg: Basis-Sollwert Comfort Heating.

lrCmfCol: Basis-Sollwert Comfort Cooling.

lrPreCmfCol: Basis-Sollwert PreComfort Cooling.

lrEcoCol: Basis-Sollwert Economy Cooling.

lrPrtcCol : Basis-Sollwert Protection Cooling.

lrShiftHtg : Sollwertverschiebung Heizen.

lrShiftCol: Sollwertverschiebung Kühlen.

lrSumCpsn: Wert Sommerkompensation

lrWinCpsn: Wert Winterkompensation

VAR_OUTPUT

lrPrPrtcHtg    : LREAL;
lrPrEcoHtg     : LREAL;
lrPrPreCmfHtg  : LREAL;
lrPrCmfHtg     : LREAL;
lrPrPrtcCol    : LREAL;
lrPrEcoCol     : LREAL;
lrPrPreCmfCol  : LREAL;
lrPrCmfCol     : LREAL;
stPrSp         : ST_BA_SpRmT;

lrPrPrtcHtg : Resultierender Sollwert Protection Heating.

lrPrEcoHtg: Resultierender Sollwert Economy Heating.

lrPrPreCmfHtg: Resultierender Sollwert PreComfort Heating.

lrPrCmfHtg: R Resultierender Sollwert Comfort Heating.

lrPrCmfCol: Resultierender Sollwert Comfort Cooling.

lrPrPreCmfCol: Resultierender Sollwert PreComfort Cooling.

lrPrEcoCol: Resultierender Sollwert Economy Cooling.

lrPrPrtcCol : Resultierender Sollwert Protection Cooling.

stPrSp: Zusammengefasste Ausgabe der resultierenden Werte in einer Struktur

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SpSupvis

Funktionsbaustein zur Verarbeitung und Kontrolle des unteren und oberen Sollwertes einer Zuluftfeuchte- oder Zulufttemperaturregelung.

Funktionsbeschreibung

Überprüfung und Limitierung der Sollwerte

Der Funktionsbaustein limitiert den oberen Sollwert rSpHi so, dass er nicht unter den unteren Sollwert rSpLo hinaus geschoben werden kann. Darüber hinaus werden die Sollwerte nach oben oder unten von rSpMax und rSpMin begrenzt. Dabei darf rSpMax nicht kleiner sein als rSpMin - dieses wird als Fehler angesehen und ausgegeben.

Der Abstand zwischen den Sollwerten beschreibt eine Energieneutrale Zone. Bei der Verwendung in einer Zuluftregelung würde innerhalb der Neutralen Zone nicht geheizt und nicht gekühlt werden.

Die überprüften und u.U. limitierten Sollwerte werden am Bausteinausgang als rPrSpHi und rPrSpLo (Present Setpoint) ausgegeben.

Sollwert für Wärmerückgewinnung

Für eine Wärmerückgewinnung wird der Sollwert rSpRcv wahlweise aus dem Mittelwert des oberen und unteren Sollwertes, rSoHi und rSpLo berechnet oder aber in Abhängigkeit vom Wirksinn der WRG.
Die Methode wird durch die Eingangsvariable bSlcnSpRcv definiert:

b SlcnSpRcv | rSpRcv
TRUE | Mittelwert aus rSpLo und rSpHi
FALSE | Wirksinnabhängig, definiert durch Eingang bActRcv

Im Falle der Wirksinnabhängigen Definition des Sollwertes gi lt dann:

bActRcv | Wirksinn | rSpRcv
TRUE | direkt (Kühlen) | lrSpHi
FALSE | indirekt (Heizen) | lrSpLo

Wärmerückgewinnung (WRG)

Ein-Ausgänge

VAR_INPUT

bEn        : BOOL;
rSpHi      : REAL;
rSpLo      : REAL;
rSpMax     : REAL;
rSpMin     : REAL;
bActnRcv   : BOOL;
bSlcnSpRcv : BOOL;

bEn : Bausteinfreigabe. Wenn bEn = FALSE, stehen alle Ausgabeparameter auf 0.0.

rSpHi: Zu überprüfender Eingabewert des oberen Sollwertes.

rSpLo: Zu überprüfender Eingabewert des unteren Sollwertes.

rSpMax: Maximaler Sollwert.

rSpMin: Minimaler Sollwert.

bActnRcv: Wirkrichtung der nach geschalteten Wärmerückgewinnung.

bSlcnSpRcv: Sollwert-Wahl der nach geschalteten Wärmerückgewinnung.

VAR_OUTPUT

rPrSpHi   : REAL;
rPrSpLo   : REAL;
rSpRcv    : REAL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

rPrSpHi: Ausgabewert des oberen Sollwertes.

rPrSpLo: Ausgabewert des unteren Sollwertes.

rSpRcv: Ausgabewert resultierenden Sollwertes für die Wärmerückgewinnung.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_StepCtrl08

Schaltstufenbaustein, 8-fach.

Funktionsbeschreibung

Der Funktionsbaustein dient zur Ausgabe sequenziell folgender Steuerungsbefehle. Eine typische Anwendung dieses Bausteins ist der Startvorgang einer raumlufttechnischen Anlage. bEn ist für die generelle Freigabe des Funktionsbausteins. Bei bEn = FALSE werden alle Ausgänge von bQ01 bis bQ08 auf FALSE gesetzt. Das Starten der Steuersequenz erfolgt am Eingang bEvt01. Nach dem Ablauf des Timers udiDlyOn01 wird der zugehörige Ausgang bQ01 gesetzt. Weitere Stufen schalten nach einer steigenden Flanke an den Eingängen bEvt02 bis bEvt08 jeweils Zeitverzögert über die Timer udiDlyOn02 bis udiDlyOn08 zu. Wird bEvt01 bei hochgelaufener Steuerkette FALSE dann schalte die Steuersequenz in umgekehrter Reihenfolge zurück. Das Abschalten der Ausgänge wird durch die Timer udiDlyOff01 bis udiDlyOff08 verzögert.

Die Ausgänge bUp und bDwn zeigen an ob sich die Steuerkette im absteigenden oder fallenden Zustand befindet. Die Variable udiActvEvt zeigt an in welchen Schritt sich die Steuerkette aktuell befindet. Dabei bedeutet "0", dass die Schrittkette nicht aktiv ist. Für die Verwendung mit einem BACnet-Multistate-Output-Objekt, welches keine "0" anzeigen kann, steht der Ausgang udiStep zur Verfügung, der den Ausgang udiActvEvt+1 darstellt.

udiRemTiDlyOn zeigt beim Hochschalten der Steuerkette die verbleibenden Zeit bis zum nächsten Schritt an. udiRemTiDlyOff zeigt beim Runterschalten der Steuerkette die verbleibende Zeit bis zum Umschalten in den nächst niedrigeren Schritt an.

Beispiel

t0 Einschalten der Schrittkette
t1 Einschalten Schritt 1 udiDlyOn01 = t1 - t0
t2 Ereignis Freigabe Schritt 2, Einschalten Schritt 2, udiDlyOn02 = 0
t3 Ereignis Freigabe Schritt 3, Einschalten Schritt 3, udiDlyOn03 = 0
t4 Ereignis Freigabe Schritt 4, Einschalten Schritt 4, udiDlyOn04 = 0
t5 Ereignis Freigabe Schritt 5, Einschalten Schritt 5, udiDlyOn05 = 0
t6 Abschalten der Schrittkette, Abschalten Schritt 5, Abschalten Schritt 4; udiDlyOff05 = 0, udiDlyOff04 = 0
t7 Abschalten Schritt 3, udiDlyOff03 = t7 -t6
t8 Abschalten Schritt 2, udiDlyOff02 = t8 -t7
t9 Abschalten Schritt 1, udiDlyOff01 = t9 -t8

Ein-/Ausgänge

VAR_INPUT

bEn         : BOOL;
bEvt01      : BOOL;
udiDlyOn01  : UDINT;
udiDlyOff01 : UDINT;
bEvt02      : BOOL;
udiDlyOn02  : UDINT;
udiDlyOff02 : UDINT;
bEvt03      : BOOL;
udiDlyOn03  : UDINT;
udiDlyOff03 : UDINT;
bEvt04      : BOOL;
udiDlyOn04  : UDINT;
udiDlyOff04 : UDINT;
bEvt05      : BOOL;
udiDlyOn05  : UDINT;
udiDlyOff05 : UDINT;
bEvt06      : BOOL;
udiDlyOn06  : UDINT;
udiDlyOff06 : UDINT;
bEvt07      : BOOL;
udiDlyOn07  : UDINT;
udiDlyOff07 : UDINT;
bEvt08      : BOOL;
udiDlyOn08  : UDINT;
udiDlyOff08 : UDINT;

bEn: Freigabe des Funktionsbausteins.

bEvt01: Einschalten der Steuerkette.

udiDlyOn01: Einschaltverzögerung für Ausgang bQ01 [s].

udiDlyOff01: Ausschaltverzögerung für Ausgang bQ01 [s].

bEvt02: Weiterschaltbefehl Schritt 2.

udiDlyOn02: Einschaltverzögerung für Ausgang bQ02 [s].

udiDlyOff02: Ausschaltverzögerung für Ausgang bQ02 [s].

bEvt03: Weiterschaltbefehl Schritt 3.

udiDlyOn03: Einschaltverzögerung für Ausgang bQ03 [s].

udiDlyOff03: Ausschaltverzögerung für Ausgang bQ03 [s].

bEvt04: Weiterschaltbefehl Schritt 4.

udiDlyOn04: Einschaltverzögerung für Ausgang bQ04 [s].

udiDlyOff04: Ausschaltverzögerung für Ausgang bQ04 [s].

bEvt05: Weiterschaltbefehl Schritt 5.

udiDlyOn05: Einschaltverzögerung für Ausgang bQ05 [s].

udiDlyOff05: Ausschaltverzögerung für Ausgang bQ05 [s].

bEvt06: Weiterschaltbefehl Schritt 6.

udiDlyOn06: Einschaltverzögerung für Ausgang bQ06 [s].

udiDlyOff06: Ausschaltverzögerung für Ausgang bQ06 [s].

bEvt07: Weiterschaltbefehl Schritt 7.

udiDlyOn07: Einschaltverzögerung für Ausgang bQ07 [s].

udiDlyOff07: Ausschaltverzögerung für Ausgang bQ07 [s].

bEvt08: Weiterschaltbefehl Schritt 8.

udiDlyOn08: Einschaltverzögerung für Ausgang bQ08 [s].

udiDlyOff08: Ausschaltverzögerung für Ausgang bQ08 [s].

VAR_OUTPUT

bQ01           : BOOL;
bQ02           : BOOL;
bQ03           : BOOL;
bQ04           : BOOL;
bQ05           : BOOL;
bQ06           : BOOL;
bQ07           : BOOL;
bQ08           : BOOL;
bUp            : BOOL;
bDwn           : BOOL;
udiActvEvt     : UDINT;
udiRemTiDlyOn  : UDINT;
udiRemTiDlyOff : UDINT;

bQ01: Schritt 1 Ein.

bQ02: Schritt 2 Ein.

bQ03: Schritt 3 Ein.

bQ04: Schritt 4 Ein.

bQ05: Schritt 5 Ein.

bQ06: Schritt 6 Ein.

bQ07: Schritt 7 Ein.

bQ08: Schritt 8 Ein.

bUp: Steuerkette ist im aufsteigenden Zustand.

bDwn: Steuerkette ist im fallenden Zustand.

udiActvEvt: aktiver Schritt, Anzeige 0..8, wobei "0" für eine nicht aktive Schrittkette steht.

udiRTiDlyOn: Restzeit bis zum Hochschalten in den nächsten Schritt [s].

udiRTiDlyOff: Restzeit bis zum Runterschalten in den vorherigen Schritt [s].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_StepCtrl12

Schaltstufenbaustein, 12-fach.

Funktionsbeschreibung

Der Funktionsbaustein dient zur Ausgabe sequenziell folgender Steuerungsbefehle. Eine typische Anwendung dieses Bausteins ist der Startvorgang einer raumlufttechnischen Anlage. bEn ist für die generelle Freigabe des Funktionsbausteins. Bei bEn = FALSE werden alle Ausgänge von bQ01 bis bQ12 auf FALSE gesetzt. Das Starten der Steuersequenz erfolgt am Eingang bEvt01. Nach dem Ablauf des Timers udiDlyOn01 wird der zugehörige Ausgang bQ01 gesetzt. Weitere Stufen schalten nach einer steigenden Flanke an den Eingängen bEvt02 bis bEvt12 jeweils Zeitverzögert über die Timer udiDlyOn02 bis udiDlyOn12 zu. Wird bEvt01 bei hochgelaufener Steuerkette FALSE dann schalte die Steuersequenz in umgekehrter Reihenfolge zurück. Das Abschalten der Ausgänge wird durch die Timer udiDlyOff01 bis udiDlyOff12 verzögert.

Die Ausgänge bUp und bDwn zeigen an ob sich die Steuerkette im absteigenden oder fallenden Zustand befindet. Die Variable udiActvEvt zeigt an in welchen Schritt sich die Steuerkette aktuell befindet. Dabei bedeutet "0", dass die Schrittkette nicht aktiv ist. Für die Verwendung mit einem BACnet-Multistate-Output-Objekt, welches keine "0" anzeigen kann, steht der Ausgang udiStep zur Verfügung, der den Ausgang udiActvEvt+1 darstellt.

udiRemTiDlyOn zeigt beim Hochschalten der Steuerkette die verbleibenden Zeit bis zum nächsten Schritt an. udiRemTiDlyOff zeigt beim Runterschalten der Steuerkette die verbleibende Zeit bis zum Umschalten in den nächst niedrigeren Schritt an.

Beispiel

t0 Einschalten der Schrittkette
t1 Einschalten Schritt 1, udiDlyOn01 = t1 - t0
t2 Ereignis Freigabe Schritt 2, Einschalten Schritt 2, udiDlyOn02 = 0
t3 Ereignis Freigabe Schritt 3, Einschalten Schritt 3, udiDlyOn03 = 0
t4 Ereignis Freigabe Schritt 4, Einschalten Schritt 4, udiDlyOn04 = 0
t5 Ereignis Freigabe Schritt 5, Einschalten Schritt 5, udiDlyOn05 = 0
t6 Abschalten der Schrittkette, Abschalten Schritt 5, Abschalten Schritt 4; udiDlyOff05 = 0, udiDlyOff04 = 0
t7 Abschalten Schritt 3, udiDlyOff03 = t7 -t6
t8 Abschalten Schritt 2, udiDlyOff02 = t8 -t7
t9 Abschalten Schritt 1, udiDlyOff01 = t9 -t8

Ein-/Ausgänge

VAR_INPUT

bEn         : BOOL;
bEvt01      : BOOL;
udiDlyOn01  : UDINT;
udiDlyOff01 : UDINT;
bEvt02      : BOOL;
udiDlyOn02  : UDINT;
udiDlyOff02 : UDINT;
bEvt03      : BOOL;
udiDlyOn03  : UDINT;
udiDlyOff03 : UDINT;
bEvt04      : BOOL;
udiDlyOn04  : UDINT;
udiDlyOff04 : UDINT;
bEvt05      : BOOL;
udiDlyOn05  : UDINT;
udiDlyOff05 : UDINT;
bEvt06      : BOOL;
udiDlyOn06  : UDINT;
udiDlyOff06 : UDINT;
bEvt07      : BOOL;
udiDlyOn07  : UDINT;
udiDlyOff07 : UDINT;
bEvt08      : BOOL;
udiDlyOn08  : UDINT;
udiDlyOff08 : UDINT;
bEvt09      : BOOL;
udiDlyOn09  : UDINT;
udiDlyOff09 : UDINT;
bEvt10      : BOOL;
udiDlyOn10  : UDINT;
udiDlyOff10 : UDINT;
bEvt11      : BOOL;
udiDlyOn11  : UDINT;
udiDlyOff11 : UDINT;
bEvt12      : BOOL;
udiDlyOn12  : UDINT;
udiDlyOff12 : UDINT;

bEn: Freigabe des Funktionsbausteins

bEvt01: Einschalten der Steuerkette

udiDlyOn01: Einschaltverzögerung für Ausgang bQ01 [s]

udiDlyOff01: Ausschaltverzögerung für Ausgang bQ01 [s]

bEvt02: Weiterschaltbefehl Schritt 2

udiDlyOn02: Einschaltverzögerung für Ausgang bQ02 [s]

udiDlyOff02: Ausschaltverzögerung für Ausgang bQ02 [s]

bEvt03: Weiterschaltbefehl Schritt 3

udiDlyOn03: Einschaltverzögerung für Ausgang bQ03 [s]

udiDlyOff03: Ausschaltverzögerung für Ausgang bQ03 [s]

bEvt04: Weiterschaltbefehl Schritt 4

udiDlyOn04: Einschaltverzögerung für Ausgang bQ04 [s]

udiDlyOff04: Ausschaltverzögerung für Ausgang bQ04 [s]

bEvt05: Weiterschaltbefehl Schritt 5

udiDlyOn05: Einschaltverzögerung für Ausgang bQ05 [s]

udiDlyOff05: Ausschaltverzögerung für Ausgang bQ05 [s]

bEvt06: Weiterschaltbefehl Schritt 6

udiDlyOn06: Einschaltverzögerung für Ausgang bQ06 [s]

udiDlyOff06: Ausschaltverzögerung für Ausgang bQ06 [s]

bEvt07: Weiterschaltbefehl Schritt 7

udiDlyOn07: Einschaltverzögerung für Ausgang bQ07 [s]

udiDlyOff07: Ausschaltverzögerung für Ausgang bQ07 [s]

bEvt08: Weiterschaltbefehl Schritt 8

udiDlyOn08: Einschaltverzögerung für Ausgang bQ08 [s]

udiDlyOff08: Ausschaltverzögerung für Ausgang bQ08 [s]

bEvt09: Weiterschaltbefehl Schritt 9

udiDlyOn09: Einschaltverzögerung für Ausgang bQ09 [s]

udiDlyOff09: Ausschaltverzögerung für Ausgang bQ09 [s]

bEvt10: Weiterschaltbefehl Schritt 10

udiDlyOn10: Einschaltverzögerung für Ausgang bQ10 [s]

udiDlyOff10: Ausschaltverzögerung für Ausgang bQ10 [s]

bEvt11: Weiterschaltbefehl Schritt 11

udiDlyOn11: Einschaltverzögerung für Ausgang bQ11 [s]

udiDlyOff11: Ausschaltverzögerung für Ausgang bQ11 [s]

bEvt12: Weiterschaltbefehl Schritt 12

udiDlyOn12: Einschaltverzögerung für Ausgang bQ12 [s]

udiDlyOff12: Ausschaltverzögerung für Ausgang bQ12 [s]

VAR_OUTPUT

bQ01           : BOOL;
bQ02           : BOOL;
bQ03           : BOOL;
bQ04           : BOOL;
bQ05           : BOOL;
bQ06           : BOOL;
bQ07           : BOOL;
bQ08           : BOOL;
bQ09           : BOOL;
bQ10           : BOOL;
bQ11           : BOOL;
bQ12           : BOOL;
bUp            : BOOL;
bDwn           : BOOL;
udiActvEvt     : UDINT;
udiRemTiDlyOn  : UDINT;
udiRemTiDlyOff : UDINT;

bQ01: Schritt 1 Ein.

bQ02: Schritt 2 Ein.

bQ03: Schritt 3 Ein.

bQ04: Schritt 4 Ein.

bQ05: Schritt 5 Ein.

bQ06: Schritt 6 Ein.

bQ07: Schritt 7 Ein.

bQ08: Schritt 8 Ein.

bQ09: Schritt 9 Ein.

bQ10: Schritt 10 Ein.

bQ11: Schritt 11 Ein.

bQ12: Schritt 12 Ein.

bUp: Steuerkette ist im aufsteigenden Zustand.

bDwn: Steuerkette ist im fallenden Zustand.

udiActvEvt: aktiver Schritt, Anzeige 0..12, wobei "0" für eine nicht aktive Schrittkette steht.

udiRTiDlyOn: Restzeit bis zum Hochschalten in den nächsten Schritt [s]

udiRTiDlyOff: Restzeit bis zum Runterschalten in den vorherigen Schritt [s]

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


TS8040 | TwinCAT Building Automation: PLC Libraries

Übersicht Verschattungskorrektur


Verschattungskorrektur: Grundlagen und Definitionen

Die Verschattungskorrektur ist in Verbindung mit der Sonnenautomatik oder Lamellennachführung nutzbar. Die Funktion prüft, ob ein Fenster oder eine Gruppe von Fenstern, die z.B. einem Raum zugeordnet sind, temporär durch umliegende Bebauung oder eigene Gebäudeteile verschattet werden. Für Fenster, welche im Schatten umliegender Gebäude oder Bäume stehen ist ein Sonnenschutz nicht notwendig, unter Umständen sogar störend. Die Verschattungskorrektur ermittelt anhand von eingetragenen Daten der Fassade und ihrer Umgebung, welche Teile der Fassade verschattet werden. Damit ist es dann möglich, für einzelne Fenster oder Fenstergruppen zu entscheiden, ob der Sonnenschutz aktiv sein soll.
Neben dem aktuellen Sonnenstand hängt die Verschattung der einzelnen Fenster von drei Dingen ab:

  • der Ausrichtung der Fassade
  • der Lage der Fenster
  • der Positionierung der Verschattungsobjekte

Die folgenden Abbildungen sollen diese Zusammenhänge erläutern und die einzutragenden Parameter vorstellen.

Ausrichtung der Fassade

Betrachtung von oben

Für die reine Betrachtung des Schattenwurfes auf die Fassade ist letztendlich ein zweidimensionales Koordinatensystem erforderlich, daher wurden die x- und y-Achse auf die Fassade gelegt. Der Nullpunkt liegt dabei im Fußpunkt links unten, so als würde man die Fassade von vorne betrachten. Zur Bemessung der verschattenden Objekte kommt dann noch die Z-Komponente hinzu. Deren Achse weist von der Fassade weg und hat denselben Nullpunkt, wie die x- und y-Achse.

Der horizontale Sonnenstand (Azimutwinkel) ist auf der Nordhalbkugel per Definition von der Nordrichtung aus bemessen. Die Fassadenausrichtung richtet sich ebenfalls nach der Nordrichtung, wobei die Blickrichtung aus einem Fenster der Fassade gilt:

Blickrichtung | Fassadenausrichtung
Nord | β=0°
Ost | β=90°
Süd | β=180°
West | β=270°

Auf der Südhalbkugel ist der Sonnenverlauf anders herum: Sie geht zwar auch im Osten auf, hat ihren Mittagsstand jedoch im Norden. Die Fassadenausrichtung wird diesem Verlauf angepasst:

Blickrichtung | Fassadenausrichtung
Süd | β=0°
Ost | β=90°
Nord | β=180°
West | β=270°

Die weiteren Ausführungen beziehen sich jedoch der Einfachheit halber nur auf die Anwendung auf der Nordhalbkugel. Die Berechnungen auf der Südhalbkugel gestalten sich analog und werden bei der Parametrierung des Bausteines FB_BA_ShdCorr (Verschattungskorrektur) durch einen booleschen Eingang, bSouth, aktiviert

Die beiden folgenden Abbildungen sollen die Lage des Ursprungspunktes P0 sowie die Ausrichtung des Koordinatensystems weiter verdeutlichen:

Betrachtung von der Seite

Anhand dieser Abbildung lässt sich auch der Elevationswinkel (Sonnenhöhe) darstellen: per Definition ist dieser bei Sonnenaufgang 0° (horizontaler Lichteinfall) und kann maximal 90° erreichen, dies jedoch nur an Orten innerhalb des nördlichen und südlichen Wendekreises.

Betrachtung von vorne

Hier ist die Lage des Koordinatenursprungs, P0, am linken unteren Fußpunkt der Fassade noch einmal besonders deutlich. Darüber hinaus ist die x-y-Ausrichtung dargestellt, die später für den Eintrag der Fensterelemente wichtig ist.

Lage der Fenster

Die Lage der Fenster wird durch die Angabe ihres linken unteren Eckpunktes in Bezug auf das Fassaden-Koordinatensystems definiert. Da ein Fenster plan auf der Fassade liegt, ist die Eingabe auf die x- und die y-Koordinate beschränkt.

Zusätzlich sind die Breite und die Höhe anzugeben.

Aus den eingetragenen Werten wird intern die Lage jedes Fenstereckpunktes auf der Fassade ermittelt. Ein Fenster gilt dann als verschattet, wenn alle Eckpunkte im Schatten liegen.

Positionierung der Verschattungsobjekte

Bei der Beschreibung der Verschattungsobjekte wird zwischen eckigen Objekten (Gebäude, Pfeiler) und Objekten, die annähernd kugelförmig sind (z.B. Bäume), unterschieden. Eckige Objekte lassen sich ihrem Schattenwurf nach in viereckige Schatten werfende Fassaden unterteilen, wobei überlegt werden muss, welche über den Tag hinweg den Hauptschatten werfen:

Morgens/Mittags

Morgens und Mittags würde der geworfene Schatten hauptsächlich durch die Seiten S1 und S4 gegeben sein, eine Betrachtung von S2 und S3, sollten sie nicht höher sein, wäre nicht nötig.

Nachmittags/Abends

Am Nachmittag und am Abend lässt sich der Summen-Schatten allein durch die Betrachtung von S1 und S2 ermitteln. Es reicht also in diesem Fall S1,S2 und S4als Schattenwerfer anzugeben. Die Eingabe erfolgt dabei anhand der vier Eckpunkte bzw. deren Koordinaten in Bezug auf den Fassaden-Nullpunkt:

In dieser Skizze sind wegen der Draufsicht nur die oberen Punkte, P2 und P3 dargestellt. Der untere Punkt P1 liegt unter P2 und P4 unter P3.

Die Eingabe von verschattenden Kugelelementen erfolgt durch die Eingabe des Kugelmittelpunktes und des Radius:

Kugelelemente

Eine "Einteilung" des Kugelelementes, wie beim eckigen Gebäude, ist freilich nicht notwendig, da der Schattenwurf einer Kugel sich nur in seiner Richtung, nicht aber in seiner Größe ändert.


TS8040 | TwinCAT Building Automation: PLC Libraries

Übersicht Sonnenschutzautomatik


Sonnenschutz: Grundlagen und Definitionen

Direkter Einfall von Tageslicht wird von in Räumen befindlichen Personen als störend angesehen. Auf der anderen Seite jedoch empfindet der Mensch das natürliche Licht als angenehmer im Vergleich zum künstlichen Licht. Zwei Möglichkeiten des Blendschutzes sollen hier vorgestellt werden:

  • Lamellennachführung
  • Höhenverstellung

Lamellennachführung

Eine Jalousie mit Lamellen, welche sich nachführen lassen bietet hier die Möglichkeit eines intelligenten Sonnenschutzes. Dabei wird die Stellung der Lamellen zyklisch dem aktuellen Sonnenstand angepasst, so dass kein direktes Tageslicht durch die Jalousien fällt, jedoch möglichst viel diffuses Tageslicht genutzt werden kann.

Die Abbildung zeigt, dass gestreutes Licht von unten noch einfallen kann, während vom direkten Tageslicht gerade nichts mehr, bzw. theoretisch nur noch ein Strahl hindurch tritt. Zur Berechnung des Lamellenwinkels sind folgende Parameter notwendig:

  • die aktuelle Sonnenhöhe (Elevationswinkel)
  • der Sonnenstand , d.h. der Azimutwinkel
  • die Fassadenausrichtung
  • die Lamellenbreite
  • die Lamellenabstand

Aus den ersten drei der oben genannten Parametern errechnet sich der effektive Elevationswinkel:
Sind Fassadenausrichtung und Sonnenstand (Azimut) gleich, so ist der effektive Winkel gleich dem aktuellen Elevationswinkel.
Fällt die Sonne jedoch von der Sonnenrichtung aus gesehen schräg auf die Fassade, so ist bei gleichem Elevationswinkel der effektive Winkel größer.

Die folgenden drei Bilder zeigen den Zusammenhang zwischen effektivem Elevationswinkel und den Jalousiemaßen und wie sich der resultierende Lamellenwinkel λ ändert:

Höhenverstellung

Bei einem hohen Sonnenstand in der Mittagszeit dringen die direkten Sonnenstrahlen nicht in die volle Tiefe des Raumes ein. Wenn direkte Sonnenstrahlen im Bereich der Fensterbrüstung als unkritisch betrachtet werden, kann die Höhe des Sonnenschutzes automatisch so angepasst werden, dass die Sonnenstrahlen immer nur bis zu einer unkritischen Tiefe in den Raum eindringen.

Um zu jedem Zeitpunkt die entsprechende Jalousiehöhe berechnen zu können, die sicherstellt, dass die Sonneneinstrahlung einen gewissen Wert nicht überschreitet, sind folgende Werte nötig.

Zur Berechnung der jeweiligen Jalousiehöhe erforderlich:

  • Sonnenhöhe (Elevation)
  • Fensterhöhe
  • Abstand Fenster zum Boden

Die folgende Abbildung veranschaulicht, wo diese Parameter einzuordnen sind:

Einfluss der Fassadenneigung

Bei den beiden beschriebenen Methoden des Sonnenschutzes wurde davon ausgegangen, dass die Fassade und damit die Fenster senkrecht zum Boden stehen. Bei einer geneigten Fassade jedoch ändert sich der Lichteinfall, so dass dieser Einfluss mit berücksichtigt wird. Die Fassadenneigung wird wie folgt definiert:


FB_BA_BldPosEntry

Dieser Baustein dient zur Eingabe von Stützstellen für den Baustein FB_BA_SunPrtc, sollte dieser im Modus der Höhenpositionierung mit Hilfe einer Tabelle betrieben werden, siehe E_BA_PosMod.

Funktionsbeschreibung

Der Baustein FB_BA_SunPrtc bietet neben den Betriebsarten "fixe Jalousiehöhe" und "maximaler Lichteinfall" auch die Möglichkeit, die Jalousiehöhe per Tabelleneinträge in Abhängigkeit von der Sonnenhöhe zu steuern. Durch die Eingabe mehrerer Stützpunkte wird linear interpoliert die betreffende Jalousiehöhe zum entsprechenden Sonnenstand errechnet. Da falsch eingetragene Werte jedoch zu Fehlfunktionen beim FB_BA_SunPrtc führen können ist diesem der Baustein FB_BA_BldPosEntry voranzustellen. Es lassen sich vier Stützpunkte an diesem Baustein parametrieren, wobei ein fehlender Eintrag als Nulleintrag gewertet wird.
Der Baustein sortiert die eingegebenen Werte nicht selbstständig, sondern achtet darauf, dass die eingetragenen Sonnenstände der jeweiligen Stützstellen in aufsteigender Reihenfolge eingegeben wurden. Unbeabsichtigt fehlerhafte Einträge fallen dadurch schneller auf.
Die gewählten Werte für lrSunElv1 .. lrSunElv4 müssen auch eindeutig sein, es darf beispielsweise nicht gelten:
[ lrSunElv1 = 10 ; rBldPos1 = 50] und gleichzeitig [lrSunElv2 = 10 ; rBldPos2 = 30 ].
Das würde bedeuten, dass für ein und denselben Wert zwei verschiedene Zielwerte bestünden, was keinen eindeutigen funktionalen Zusammenhang bilden lässt.
Darüber hinaus müssen die Einträge für Sonnenstand und Jalousiehöhe im gültigen Bereich liegen. Das bedeutet mathematisch, dass folgende Bedingungen erfüllt sein müssen:
  • lrSunElv1 < lrSunElv2 < lrSunElv3 < lrSunElv4 - (Werte aufsteigend und ungleich)
  • 0 ≤ rSunElv ≤ 90 ( [°] - Gültigkeitsbereich Quellwerte)
  • 0 ≤ rBldPos ≤ 100 (in Prozent - Gültigkeitsbereich Zielwerte)

Der Baustein überprüft die eingetragenen Werte auf diese Bedingungen hin und gibt bei Nicht-Erfüllen einen Fehlercode aus. Zusätzlich wird der Ausgang bValid auf FALSE gesetzt.
Des Weiteren sorgt der Baustein selbstständig für ein Ausfüllen der Randbereiche: Intern wird ein weiterer Stützpunkt bei rSunElv = 0 mit rBldPos1 und ein weiterer oberhalb von lrSunElv4 bei rSunElv = 90 mit rBldPos4 aufgestellt. Damit wird sichergestellt, dass für alle gültigen Eingabewerte 0 ≤rSunElv ≤ 90 ein sinnvoller Zielwert vorhanden ist ohne dass ein Eintrag für rSunElv = 0 und rSunElv = 90 vom Anwender zwingend vergeben werden muss:

Die tatsächliche Anzahl an Stützstellen, welche an den Baustein FB_BA_SunPrtc übergeben wird, erhöht sich damit auf 6, siehe ST_BA_BldPosTab.

Die Interpolation der Werte erfolgt im Blendschutz-Baustein.

Ein-/Ausgänge

VAR_INPUT

lrSunElv1 : LREAL;
lrPos1    : LREAL;
lrSunElv2 : LREAL;
lrPos2    : LREAL;
lrSunElv3 : LREAL;
lrPos3    : LREAL;
lrSunElv4 : LREAL;
lrPos4    : LREAL;

lrSunElv1: Sonnenstand des 1. Stützpunktes (0°..90°).

rBldPos1: Jalousieposition (Grad der Schließung) des 1. Stützpunktes (0%..100%).

lrSunElv2: Sonnenstand des 2. Stützpunktes (0°..90°).

rBldPos2: Jalousieposition (Grad der Schließung) des 2. Stützpunktes (0%..100%).

lrSunElv3: Sonnenstand des 3. Stützpunktes (0°..90°).

rBldPos3: Jalousieposition (Grad der Schließung) des 3. Stützpunktes (0%..100%).

lrSunElv4: Sonnenstand des 4. Stützpunktes (0°..90°).

rBldPos4: Jalousieposition (Grad der Schließung) des 4. Stützpunktes (0%..100%).

VAR_OUTPUT

bValid        : BOOL;
uiErrorId     : UDINT;
stBldPosTab   : ST_BA_BldPosTab;

stBldPosTab: Übergabestruktur der Stützstellen, siehe ST_BA_BldPosTab.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_BrtnsHysDly

Helligkeits-Schwellwertschalter.

Funktionsbeschreibung

Dieser Baustein stellt einen Schwellwertschalter für Helligkeit dar. Das Ein- bzw. Ausschaltverhalten kann zusätzlich zeitlich verzögert werden.

Ein-/Ausgänge

VAR_INPUT

lrBrtns     : LREAL;
lrOnVal     : LREAL;
lrOffVal    : LREAL;
udiOnDly    : UDINT;
udiOffDly   : UDINT;

lrBrtns: Außenhelligkeit [lx].

lrOnVal: Einschaltschwellwert [lx]. Dieser muss größer sein als der Ausschaltschwellwert usiOffValue.

lrOffVal: Ausschaltschwellwert [lx]. Dieser muss kleiner sein als der Einschaltschwellwert usiOnValue.

udiOnDly: Einschaltverzögerung [s].

udiOffDly: Ausschaltverzögerung [s].

VAR_OUTPUT

bOut      : BOOL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

bOut: Binärer verzögerter Ausgang des Schwellwertschalters.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_CalcSunPos

Berechnung des Sonnenstandes durch die Angabe von Datum, Uhrzeit, geographischer Länge und geographischer Breite.

Funktionsbeschreibung

Der Sonnenstand für einen gegebenen Zeitpunkt lässt sich nach gängigen Methoden mit definierter Genauigkeit berechnen. Für Anwendungen mit mäßigen Anforderungen genügt der hier vorliegende Baustein. Als Grundlage wurde hierfür der SUNAE-Algorithmus verwendet, der einen günstigen Kompromiss zwischen Genauigkeit und Rechenaufwand darstellt.

Der Stand der Sonne an einem festen Beobachtungsort wird normalerweise mit zwei Winkelangaben bestimmt. Die eine gibt die Höhe über dem Horizont an, wobei 0° bedeutet, dass sich die Sonne in der Horizontalebene des Standortes befindet und ein Wert von 90°, dass sie sich senkrecht über dem Beobachter befindet. Die andere Winkelangabe gibt die Richtung an, in der die Sonne steht. Bei dem SUNAE-Algorithmus wird unterschieden, ob der Beobachter auf der nördlichen (Längengrad > 0) oder auf der südlichen (Längengrad < 0) Erdhalbkugel steht. Ist der Beobachtungspunkt auf der nördlichen Erdhalbkugel, so wird ein Wert von 0° für die nördliche Sonnenrichtung zugeordnet und läuft dann im Uhrzeigersinn um den Kompass, d.h. 90° ist Osten, 180° ist Süden, 270° Westen etc. Ist der Beobachtungspunkt auf der südlichen Erdhalbkugel, so entspricht 0° der südlichen Richtung und verläuft dann entgegen dem Uhrzeigersinn, d.h. 90° ist Osten, 180° ist Norden, 270° Westen etc.

Bei der Angabe der Uhrzeit muss die Zeit als koordinierte Weltzeit (UTC, Universal Time Coordinated - im älteren Sprachgebrauch auch GMT, Greenwich-Mean-Time) angegeben werden.

Die geographische Breite ist die im Winkelmaß (also [°]) angegebene nördliche oder südliche Entfernung eines Ortes der Erdoberfläche vom Äquator. Die Breite kann Werte von 0° (am Äquator) bis ±90° (an den Polen) annehmen. Dabei gibt ein positives Vorzeichen die nördliche Richtung und ein negatives Vorzeichen die südliche Richtung an. Die geographische Länge ist ein Winkel, der ausgehend vom Nullmeridian 0° (künstlich festgelegte Nord-Süd-Linie) Werte bis ±180° annehmen kann. Ein positives Vorzeichen gibt die Länge in östlicher Richtung und ein negatives Vorzeichen in westlicher Richtung an. Beispiele:

Ort | geographische Länge | geographische Breite
Syndey, Australien | 151,2° | -33,9°
New York, USA | -74,0° | 40,7°
London, England | -0,1° | 51,5°
Moskau, Russland | 37,6° | 55,7°
Peking, China | 116,3° | 39,9°
Dubai, Vereinigte Arabische Emirate | 55,3° | 25,4°
Rio de Janeiro, Brasilien | -43,2° | -22,9°
Hawai, USA | -155,8° | 20,2°
Verl, Deutschland | 8,5° | 51,9°

Gibt der Baustein FB_BA_CalcSunPos für die Sonnenhöhe lrSunElv einen negativen Wert zurück, so ist die Sonne nicht sichtbar. Dieses kann zur Bestimmung von Sonnenaufgang und Sonnenuntergang genutzt werden.

Ein-/Ausgänge

VAR_INPUT

lrDegLngd    : LREAL;
lrDegLatd    : LREAL;
stUTC        : TIMESTRUCT;

lrDegLngd: geographische Länge [°].

lrDegLatd: geographische Breite [°].

stUTC: Eingabe der aktuellen Uhrzeit als koordinierte Weltzeit. Mit Hilfe des Bausteines FB_BA_GetTime kann diese Zeit aus einem Zielsystem gelesen werden.

VAR_OUTPUT

lrSunAzm     : LREAL;
lrSunElv     : LREAL;

lrSunAzm: Sonnenrichtung (nördliche Erdhalbkugel: 0° Norden ... 90° Osten ... 180° Süden ... 270° Westen ... / südliche Erdhalbkugel: 0° Süden ... 90° Osten ... 180° Norden ... 270° Westen ...).

lrSunElv: Sonnenhöhe (0° horizontal ... 90° senkrecht).

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_FcdElemEntry

Dieser Baustein dient zur Verwaltung aller Fassadenelemente (Fenster) einer Fassade, welche global in einer Liste von Fassadenelementen hinterlegt ist. Er soll die Eingabe der Elementinformationen - auch im Hinblick auf die Nutzung der Target-Visualisierung - erleichtern. Eine schematische Darstellung der Objekte mit Beschreibung der Koordinaten ist unter Verschattungskorrektur: Grundlagen und Definitionen gegeben.

Funktionsbescheibung

Die Deklaration der Fassadenelemente erfolgt in den globalen Variablen als zweidimensionales Feld über die Fensterspalten (Columns) und -reihen (Rows):
VAR_GLOBAL
     arrFcdElem : ARRAY[1..gBA_cMaxColumnFcd, 1..gBA_cMaxRowFcd] OF ST_BA_FcdElem;
END_VAR

Jedes einzelne Element arrFcdElem[x,y] trägt die Informationen für jeweils ein Fassadenelement (ST_BA_FcdElem). Dazu gehören die Gruppenzugehörigkeit, die Abmessungen (Breite, Höhe) und die Koordinaten der Eckpunkte. Der Baustein greift dabei über die IN-OUT-Variable arrFcdElem direkt auf dieses Feld zu.

Anmerkung: Die Tatsache, dass die Koordinaten der Eckpunkte C2 bis C4 Ausgangswerte sind, ergibt sich daraus, dass sie aus den Eingabeparametern gebildet werden und für die Verwendung in einer Visualisierung zur Verfügung stehen sollen:

Alle Angaben [m]!

lrCnr2X = lrCnr1X
lrCnr2Y = lrCnr1Y + lrWdwHght (Fensterhöhe)
lrCnr3X = lrCnr1X + lrWdwWdth (Fensterbreite)
lrCnr3Y = lrCnr2Y
lrCnr4X = lrCnr1X + lrWdwWdth (Fensterbreite)
lrCnr4Y = lrCnr1Y

Die Verwendung des Bausteines erfolgt in drei Schritten:

  • Auslesen
  • Ändern
  • Schreiben

Auslesen

Mit den Einträgen an iColumn und iRow wird das entsprechende Element aus der Liste, arrFcdElem[iColumn,iRow], ausgewählt. Eine steigende Flanke an bRd liest folgende Daten aus dem Listenelement aus:

  • usiGrp Gruppenzugehörigkeit,
  • lrCnr1X X-Koordinate des Eckpunktes1 [m]
  • lrCnr1Y Y-Koordinate des Eckpunktes1 [m]
  • lrWdwWdth Fensterbreite [m]
  • lrWdwHght Fensterhöhe [m]

Diese werden dann den entsprechenden Eingangsvariablen des Bausteines zugewiesen, der daraus nach dem oben erläuterten Zusammenhang die Koordinaten der Eckpunkte C2-C4 als Ausgangsvariablen errechnet. Wichtig ist hierbei, dass im Schritt des Auslesens die Eingangswerte nicht überschrieben werden. So lassen sich alle Werte zunächst in einer Visualisierung anzeigen.

Ändern

In einem nächsten Programmschritt können dann die aufgeführten Eingabewerte verändert werden. Die eingegebenen Werte werden dabei ständig auf Plausibilität überprüft. Der Ausgang bErr zeigt an, ob die Werte gültig sind (bErr=FALSE). Sollte dies nicht der Fall sein, wird am Ausgang udiErrId/udiErrArg ein entsprechender Fehlercode ausgegeben. Siehe auch unten "Fehler (bErr=TRUE)".

Schreiben

Mit einer positiven Flanke an bWrt werden die parametrierten Daten in das Listenelement mit dem Index nId geschrieben, unabhängig davon, ob sie gültige Werte darstellen oder nicht. Daher ist innerhalb der Elementstruktur ST_BA_FcdElem ebenfalls ein Plausibilitätsbit bVld vorhanden, das genau diese Information an den Baustein FB_BA_ShdCorr weiterreicht und dort Fehlberechnungen vorbeugt.

Diese Vorgehensweise soll nur als Vorschlag angesehen werden. Es ist natürlich auch möglich, den Baustein ganz normal in einem Schritt zu parametrieren und die eingetragenen Werte mit einer steigenden Flanke an bWrt in das entsprechende Listenelement zu schreiben.

Fehler (bErr=TRUE)

Der Baustein FB_BA_ShdCorr, welcher beurteilt, ob alle Fenster einer Gruppe verschattet sind, wird nur dann seine Aufgabe ausführen, wenn alle Fenster der betrachteten Gruppe gültige Einträge haben.
Das bedeutet:

  • usiGrp muss größer als 0 sein
  • lrCnr1X muss größer oder gleich 0.0 sein
  • lrCnr1Y muss größer oder gleich 0.0 sein
  • lrWdwWdth muss größer als 0 sein
  • lrWdwHght muss größer als 0 sein

Ist eines dieser Kriterien nicht erfüllt, so wird dies als Falscheingabe interpretiert und der Fehlerausgang bErr am Bausteinausgang von FB_BA_FcdElemEntry gesetzt. Innerhalb des Fensterelementes ST_BA_FcdElem wird das Plausibilitätsbit bVld auf FALSE gesetzt.
Sind hingegen alle Einträge eines Fassadenelementes Null, wird es als gültiges, gewollt ausgelassenes Fassadenelement angesehen:

Bei einer Fassade von 6x4 Fenstern wären hier die Elemente Fenster (2,1), Fenster (3,5) und Fenster (4,4) Leerelemente.

Ein-Ausgänge

VAR_INPUT

iColumn      : INT;
iRow         : INT;
bWrt         : BOOL;
bRd          : BOOL;
usiGrp       : USINT;
lrCnr1X      : LREAL;
lrCnr1Y      : LREAL;
lrWdwWdth    : LREAL;
lrWdwHght    : LREAL;

iColumn: Spalten-Index des gewählten Elementes auf der Fassade. Dies bezieht sich auf die Auswahl eines Feldelementes des unter der IN-OUT-Variablen arrFcdElem angelegten Arrays.

iRow: dto. Reihen-Index. iRow und iColumn dürfen nicht Null sein! Das ergibt sich aus der Felddefinition, welche jeweils mit 1 beginnt, siehe oben.

bRd: Mit einer positiven Flanke an diesem Eingang werden die Informationen des gewählten Elementes, arrFcdElem[iColumn,iRow] in den Baustein gelesen und den Eingangsvariablen usiGrp bis lrWdwHght zugewiesen. Daraus ergeben sich dann die Ausgangsvariablen lrCnr2X bis lrCnr4Y. Sind zu Zeitpunkt des Auslesens schon Daten an den Eingängen usiGrp bis lrWdwHght angelegt, so werden die zuvor ausgelesenen Daten sofort mit diesen überschrieben.

bWrt: Eine positive Flanke schreibt die eingegebenen sowie errechneten Werte in das gewählte Feldelement arrFcdElem[iColumn,iRow].

usiGrp: Gruppenzugehörigkeit.

lrCnr1X: X-Koordinate des Eckpunktes1 [m].

lrCnr1Y: Y-Koordinate des Eckpunktes1 [m].

lrWdwWdth: Fensterbreite [m].

lrWdwHght: Fensterhöhe [m].

Ein-/Ausgänge

VAR_OUTPUT

lrCnr2X   : LREAL;
lrCnr2Y   : LREAL;
lrCnr3X   : LREAL;
lrCnr3Y   : LREAL;
lrCnr4X   : LREAL;
lrCnr4Y   : LREAL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

lrCnr2X: Ermittelte X-Koordinate des Eckpunktes 2 des Fensters [m]. Siehe "Anmerkung" oben.

lrCnr2Y: Ermittelte Y-Koordinate des Eckpunktes 2 des Fensters [m]. Siehe "Anmerkung" oben.

lrCnr3X: Ermittelte X-Koordinate des Eckpunktes 3 des Fensters [m]. Siehe "Anmerkung" oben.

lrCnr3Y: Ermittelte Y-Koordinate des Eckpunktes 3 des Fensters [m]. Siehe "Anmerkung" oben.

lrCnr4X: Ermittelte X-Koordinate des Eckpunktes 4 des Fensters [m]. Siehe "Anmerkung" oben.

lrCnr4Y: Ermittelte Y-Koordinate des Eckpunktes 4 des Fensters [m]. Siehe "Anmerkung" oben.

bErr: Ergebnis Kontrolle für die eingegebenen Werte.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

arrFcdElem : ARRAY[1..gBA_cMaxColumnFcd, 1..gBA_cMaxRowFcd] OF ST_BA_FcdElem;

arrFcdElem: Liste von Fassadenelementen.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_InRngAzm

Dieser Baustein prüft, ob der aktuelle Azimutwinkel (horizontaler Sonnenstand) innerhalb der eingetragenen Grenzen liegt. Wie in der Übersicht erkennbar, gibt der Baustein eine zusätzliche Bewertung, ob der Sonnenschutz einer Fenstergruppe aktiviert werden soll. Daher gelten die Betrachtungen im weiteren Text immer für eine Fenstergruppe.

Funktionsbeschreibung

Eine glatte Fassade wird von der Sonne immer in einem Azimutwinkel von Fassadenausrichtung-90°... Fassadenausrichtung+90° bestrahlt.

Hat die Fassade jedoch seitliche Vorsprünge, so wird dieser Bereich eingeschränkt. Diese Einschränkung lässt sich mit Hilfe dieses Bausteines überprüfen. Dabei spielt aber auch die Lage der Fenstergruppe auf der Fassade eine Rolle. Liegt sie zentral, so ergibt sich folgende Situation (Die Werte sind dabei nur beispielhaft):

Für eine Gruppe am Rand andern sich die Werte:

Der Anfang des Bereiches lrSttRng darf dabei größer sein als das Ende lrEndRng, es wird dann über 0° hinaus betrachtet:.

Beispiel:

lrAzm | 10.0°
lrSttRng | 280.0°
lrEndRng | 20.0°
bOut | TRUE

Der betrachtete Bereich darf jedoch nicht größer als 180° oder gleich 0° sein, dieses wäre unrealistisch. Derartige Eingaben ergeben einen Fehler am Ausgang bErr - der Prüfausgang bOut wird dabei zusätzlich auf FALSE gesetzt.

Ein-/Ausgänge

VAR_INPUT

lrAzm    : LREAL;
lrSttRng : LREAL;
lrEndRng : LREAL;

lrAzm: Aktueller Azimutwinkel.

lrSttRng: Bereichsanfang [°].

lrEndRng: Bereichsende [°].

VAR_OUTPUT

bOut       : BOOL;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

bOut: Das Fassadenelement liegt in der Sonne wenn der Ausgang TRUE ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_InRngElv

Dieser Baustein prüft, ob der aktuelle Elevationswinkel (vertikaler Sonnenstand) innerhalb der eingetragenen Grenzen liegt. Wie in der Übersicht erkennbar, gibt der Baustein eine zusätzliche Bewertung, ob der Sonnenschutz einer Fenstergruppe aktiviert werden soll. Daher gelten die Betrachtungen im weiteren Text immer für eine Fenstergruppe.

Funktionsbeschreibung

Eine normale senkrechte Fassade wird von der Sonne immer in einem Elevationswinkel von 0° bis maximal 90° bestrahlt.

Hat die Fassade jedoch Vorsprünge, so wird dieser Bereich eingeschränkt. Diese Einschränkung lässt sich mit Hilfe dieses Bausteines überprüfen. Dabei spielt aber auch die Lage der Fenstergruppe auf der Fassade eine Rolle. Liegt sie im unteren Bereich, so ergibt sich folgende Situation (Die Werte sind dabei nur beispielhaft):

Für eine Gruppe unterhalb des Vorsprunges ändern sich die Werte:

Die untere Betrachtungsgrenze, lrLoLmt, darf dabei nicht größer oder gleich der oberen, lrHiLmt, sein. Derartige Eingaben ergeben einen Fehler am Ausgang bErr - der Prüfausgang bOut wird dabei zusätzlich auf FALSE gesetzt.

Ein-/Ausgänge

VAR_INPUT

lrElv   : LREAL;
lrLoLmt : LREAL;
lrHiLmt : LREAL;

lrElv: Aktueller Elevationswinkel [°].

lrLoLmt: Unterer Grenzwert [°].

lrHiLmt: Oberer Grenzwert [°].

VAR_OUTPUT

bOut      : BOOL;
bErr      : BOOL;
udiErrId  : UDINT;
udiErrArg : UDINT;

bOut: Das Fassadenelement liegt in der Sonne

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_RdFcdElemLst

Mit Hilfe dieses Bausteines lassen sich Daten für Fassadenelemente (Fenster) aus einer vordefinierten Excel-Tabelle im csv-Format in die Liste der Fassadenelemente importieren. Zusätzlich werden die importierten Daten auf Plausibilität überprüft und Fehler in eine Log-Datei geschrieben.

Funktionsbeschreibung

Excel-Tabelle

Das folgende Beispiel zeigt die Excel-Tabelle mit den Einträgen der Fensterelemente.
Alle Textfelder sind frei beschreibbar, wichtig sind die grün markierten Felder, wobei dort jede Zeile einen Datensatz kennzeichnet.
Folgende Regeln sind zu beachten:

  • Ein Datensatz muss immer mit einem '@' beginnen.
  • Die Indizes IndexColumn und IndexRow müssen innerhalb der definierten Grenzen liegen, siehe Liste von Fassadenelementen. Mit diesen Indizes wird direkt beschrieben, in welches Fassadenelement der Liste arrFcdElems die Daten des Satzes hineingelegt werden.
  • Fensterbreite und Fensterhöhe müssen größer Null sein
  • Die Eck-Koordinaten P1x und P1y müssen größer oder gleich Null sein.
  • Jedes Fensterelement muss einer Gruppe 1..255 zugeordnet sein.
  • Die Gesamtgröße der Tabelle darf systembedingt 65534 Bytes nicht überschreiten.
  • Die Tabelle muss in Excel als Dateityp "CSV (Trennzeichen-getrennt) (*.csv)" abgespeichert worden sein.

Es ist nicht notwendig, alle Fensterelemente zu beschreiben, die per Definition bzw. Deklaration möglich wären. Bevor die neue Liste eingelesen wird, löscht der Baustein die gesamte alte Liste im Programm. Alle Elemente, welche dann nicht durch Einträge in der Excel-Tabelle beschrieben werden, haben reine Null-Einträge und sind dadurch als nicht-vorhanden gekennzeichnet und auch nicht auswertbar, da der Baustein zur Verschattungskorrektur, FB_BA_ShdCorr, Elemente mit Gruppeneintrag '0' nicht annimmt.

Log-Datei

Bei jedem Start des Lesebausteines wird die Logdatei neu beschrieben und der alte Inhalt gelöscht. Ist die Log-Datei nicht vorhanden, so wird sie zunächst automatisch erstellt. Die Log-Datei enthält dann entweder eine OK Meldung oder eine Auflistung aller aufgetretenen Fehler. Fehler, welche mit dem Öffnen, Beschreiben oder Schließen der Logdatei selbst in Zusammenhang stehen, können nicht mitgeschrieben werden. Daher sind immer auch die Ausgänge udiErrId / udiErrArg des Lesebausteines zu beachten, welche den letzten Fehlercode anzeigen. Da im Ablauf des Lesens die Log-Datei immer als Letztes geschlossen wird, ist ein entsprechender Hinweis im Fehlerfall gewährleistet.

Programmbeispiel

In diesem Beispiel wird bei PLC-Start die Variable bInit zunächst auf TRUE gesetzt. Damit erhält der Eingang bStt am Baustein fbReadFacadeElementList einmalig eine steigende Flanke, welcher den Lesevorgang auslöst. Gelesen wird die Datei "FacadeElements.csv", welche sich im Ordner "C:\Projekte\" befindet. In demselben Ordner wird dann die Logdatei "Logfile.txt" hinterlegt. Ist diese Logdatei noch nicht vorhanden wird sie erstellt, andernfalls wird der bestehende Inhalt überschrieben. Das Lesen und Schreiben erfolgt auf demselben Rechner, auf dem sich auch die PLC befindet. Das wird durch den Eingang sNetID = '' (=lokal) definiert. Alle Daten werden in die im Programm deklarierte Liste arrFcdElem geschrieben. Solange gelesen und geschrieben wird ist der Ausgang bBusy auf TRUE. Der zuletzt auftretende Fehler in Bezug auf das Dateihandling wird an udiErrId / udiErrArg angezeigt, bErr steht dann auf TRUE. Wird hingegen ein Fehler im Datensatz erkannt wird dies an bErrDataSet angezeigt umd in der Log-Datei näher beschrieben. Die Anzahl der gefundenen und gelesenen Datenzeilen wird an uiAmtSetsRd zur Kontrolle angezeigt.

In die folgende Excel Liste wurden die markierten Fehler "eingebaut". Dadurch ergibt sich das gezeigte Log-File:

Der erste Fehler ist im Datensatz 2 und ein Index-Fehler, da "0" nicht erlaubt ist.
Der nächste Fehler in Datensatz 6 wurde nach Validierung der Daten mit dem intern genutzten Baustein FB_BA_ShdObjEntry gefunden und daher näher mit einer Fehlernummer versehen, welche unter Fehlercodes näher aufgeschlüsselt wird. Der dritte und der vierte Fehler trat ebenfalls nach der internen Validierung auf.

Wichtig hierbei ist, dass sich die Datensatz-Nummern (hier 22 und 24) nic ht nach den eingetragenen Nummern in der Liste, sondern nach den tatsächlichen laufenden Nummern richten: eingelesen wurden hier lediglich 30 Datensätze.

Ein-/Ausgänge

VAR_INPUT

bStt      : BOOL;
sDataFile : STRING;
sLogFile  : STRING;
sNetId    : T_AmsNetId;;

bStt: Eine TRUE-Flanke an diesem Eingang startet den Lesevorgang.

sDataFile: Enthält den Pfad- und Dateinamen der zu öffnenden Daten-Datei. Diese muss in Excel als Dateityp "CSV (Trennzeichen-getrennt) (*.csv)" abgespeichert worden sein. Öffnet man die Datei mit einem einfachen Text-Editor, so müssen die Werte durch Semikola getrennt dargestellt sein. Beispiel für einen Eintrag: sDataFile:= 'C:\Projekte\FacadeElements.csv'

sLogFile: dto. Log-File für die auflaufenden Fehler. Diese Datei wird bei jeder neuen Bausteinaktivierung überschrieben, so dass nur aktuelle Fehler enthalten sind.

sNetId: Hier kann ein String mit der AMS Net Id des TwinCAT-Rechners angegeben werden, auf dem die Dateien geschrieben/gelesen werden sollen. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

Hinweis: Die Speicherung der Daten kann nur auf dem Steuerungsrechner selbst und den Rechnern erfolgen, die mit dem Steuerungsrechner per ADS verbunden sind. Verweise auf lokale Festplatten dieser Rechner sind möglich, nicht jedoch auf verbundene Netzwerkfestplatten.

VAR_OUTPUT

bBusy       : BOOL;
uiAmtSetsRd : UINT;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;
bErrDataSet : BOOL;

bBusy: Dieser Ausgang steht auf TRUE, solange Elemente aus der Datei ausgelesen werden.

uiAmtSetsRd: Anzahl der gelesenen Datensätze.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn ein Datei-Schreib- bzw. Lesefehler aufgetreten ist.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

bErrDataSet: Dieser Ausgang wird auf TRUE geschaltet, wenn die gelesenen Datensätze fehlerhaft sind. Nähere Einzelheiten werden in die Log-Datei geschrieben.

VAR_IN_OUT

arrFcdElem : ARRAY[1..gBA_cMaxColumnFcd, 1..gBA_cMaxRowFcd] OF ST_BA_FcdElem;

arrFcdElem: Liste von Fassadenelementen.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_RdShdObjLst

Mit Hilfe dieses Bausteines lassen sich Daten für Verschattungsobjekte aus einer vordefinierten Excel-Tabelle im csv-Format in die Liste der Verschattungsobjekte importieren. Zusätzlich werden die importierten Daten auf Plausibilität überprüft und Fehler in eine Log-Datei geschrieben.

Funktionsbeschreibung

Excel-Tabelle

Das folgende Beispiel zeigt die Excel-Tabelle mit den Einträgen der Fensterelemente.
Alle Textfelder sind frei beschreibbar, wichtig sind die grün markierten Felder, wobei dort jede Zeile einen Datensatz kennzeichnet. Je nachdem ob es sich um den Typ Viereck oder Kugel handelt, haben die Spalten G bis J eine unterschiedliche Bedeutung. Die Spalten K bis M sind bei Kugeln freizulassen. Bezüglich der Vierecks-Koordinaten werden nur die relevanten Daten eingegeben und die restlichen intern berechnet, siehe FB_BA_ShdObjEntry.
Folgende Regeln sind zu beachten:

  • Ein Datensatz muss immer mit einem '@' beginnen.
  • Die Monatseinträge dürfen nicht 0 und größer 12 sein, andernfalls sind alle Kombinationen möglich.
    Beispiele:
    Beginn=1, Ende=1: Verschattung im Januar.
    Beginn=1, Ende=5: Verschattung von Anfang Januar bis Ende Mai.
    Beginn=11, Ende=5: Verschattung von Anfang November bis Ende Mai (des folgenden Jahres).
  • Fensterbreite und Fensterhöhe müssen größer Null sein
  • Die z-Koordinaten P1z und P3z bzw. Mz müssen größer Null sein.
  • Der Radius muss größer Null sein.
  • Die Gesamtgröße der Tabelle darf systembedingt 65534 Bytes nicht überschreiten.
  • Die Tabelle muss in Excel als Dateityp "CSV (Trennzeichen-getrennt) (*.csv)" abgespeichert worden sein.

Es ist nicht notwendig, alle Verschattungsobjekte, welche pro Fassade möglich sind, zu beschreiben. Nur die, die in der Liste aufgeführt werden, kommen letztendlich zum Tragen.

Log-Datei

Bei jedem Start des Lesebausteines wird die Logdatei neu beschrieben und der alte Inhalt gelöscht. Ist die Log-Datei nicht vorhanden, so wird sie zunächst automatisch erstellt. Die Log-Datei enthält dann entweder eine OK Meldung oder eine Auflistung aller aufgetretenen Fehler. Fehler, welche mit dem Öffnen, Beschreiben oder Schließen der Logdatei selbst in Zusammenhang stehen, können nicht mitgeschrieben werden. Daher sind immer auch die Ausgänge udiErrId / udiErrArg des Lesebausteines zu beachten, welche den letzten Fehlercode anzeigen. Da im Ablauf des Lesens die Log-Datei immer als Letztes geschlossen wird, ist ein entsprechender Hinweis im Fehlerfall gewährleistet.

Programmbeispiel

In diesem Beispiel wird bei PLC-Start die Variable bInit zunächst auf TRUE gesetzt. Damit erhält der Eingang bStt am Baustein fbReadShadingObjects einmalig eine steigende Flanke, welche den Lesevorgang auslöst. Gelesen wird die Datei "ShadingObjects.csv", welche sich im Ordner "C:\Projekte\" befindet. In demselben Ordner wird dann die Logdatei "Logfile.txt" hinterlegt. Ist diese Logdatei noch nicht vorhanden wird sie erstellt, andernfalls wird der bestehende Inhalt überschrieben. Das Lesen und Schreiben erfolgt auf demselben Rechner, auf dem sich auch die PLC befindet. Das wird durch den Eingang sNetID = '' (=lokal) definiert. Alle Daten werden in die im Programm deklarierte Liste arrShdObj geschrieben. Solange gelesen und geschrieben wird ist der Ausgang bBusy auf TRUE. Der zuletzt auftretende Fehler in Bezug auf das Dateihandling wird an udiErrId / udiErrArg angezeigt, bErr steht dann auf TRUE. Wird hingegen ein Fehler im Datensatz erkannt wird dies an bErrDataSet angezeigt umd in der Log-Datei näher beschrieben. Die Anzahl der gefundenen und gelesenen Datenzeilen wird an uiAmtSetsRd zur Kontrolle angezeigt.

In die folgende Excel Liste wurden die markierten Fehler eingebaut. Dadurch ergibt sich das gezeigte Log-File:

Der erste Fehler ist im Datensatz 3 und ein Typ-Fehler, da "2" nicht definiert ist.
Der nächste Fehler in Datensatz 6 wurde nach Validierung der Daten mit dem intern genutzten Baustein FB_BA_ShdObjEntry gefunden und daher näher mit einer Fehlernummer versehen, welche unter Fehlercodes näher aufgeschlüsselt wird. Der dritte Fehler trat ebenfalls nach der internen Validierung auf.

Wichtig hierbei ist, dass sich die Datensatz-Nummer (hier 11) nicht nach der eingetragenen Nummer in der Liste, sondern nach der tatsächlichen laufenden Nummer richtet: eingelesen wurden hier lediglich 16 Datensätze.

Ein-/Ausgänge

VAR_INPUT

bStt      : BOOL;
sDataFile : STRING;
sLogFile  : STRING;
sNetId    : T_AmsNetId;;

bStt: Eine TRUE-Flanke an diesem Eingang startet den Lesevorgang.

sDataFile: Enthält den Pfad- und Dateinamen der zu öffnenden Daten-Datei. Diese muss in Excel als Dateityp "CSV (Trennzeichen-getrennt) (*.csv)" abgespeichert worden sein. Öffnet man die Datei mit einem einfachen Text-Editor, so müssen die Werte durch Semikola getrennt dargestellt sein. Beispiel für einen Eintrag: sDataFile:= 'C:\Projekte\ShadingObjects.csv'

sLogFile: dto. Log-File für die auflaufenden Fehler. Diese Datei wird bei jeder neuen Bausteinaktivierung überschrieben, so dass nur aktuelle Fehler enthalten sind.

sNetId: Hier kann ein String mit der AMS Net Id des TwinCAT-Rechners angegeben werden, auf dem die Dateien geschrieben/gelesen werden sollen. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

Hinweis: Die Speicherung der Daten kann nur auf dem Steuerungsrechner selbst und den Rechnern erfolgen, die mit dem Steuerungsrechner per ADS verbunden sind. Verweise auf lokale Festplatten dieser Rechner sind möglich, nicht jedoch auf verbundene Netzwerkfestplatten.

VAR_OUTPUT

bBusy       : BOOL;
uiAmtSetsRd : UINT;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;
bErrDataSet : BOOL;

bBusy: Dieser Ausgang steht auf TRUE, solange Elemente aus der Datei ausgelesen werden.

uiAmtSetsRd: Anzahl der gelesenen Datensätze.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn ein Datei-Schreib- bzw. Lesefehler aufgetreten ist.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

bErrDataSet: Dieser Ausgang wird auf TRUE geschaltet, wenn die gelesenen Datensätze fehlerhaft sind. Nähere Einzelheiten werden in die Log-Datei geschrieben.

VAR_IN_OUT

arrShdObj: ARRAY[1..gBA_cMaxShdObj] OF ST_BA_ShdObj;

arrShdObj: Liste der Verschattungsobjekte.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_RolBldActr

Dieser Baustein dient zur Positionierung einer Rolladen-Jalousie über zwei Ausgänge: Hoch- und Herunterfahren. Über das Positioniertelegramm stSunBld kann die Jalousie auf eine beliebige Position gesteuert werden. Darüber hinaus beinhaltet das Positioniertelegramm stSunBld auch Handbefehle, mit denen die Jalousie individuell auf bestimmte Positionen bewegt werden kann. Diese Handbefehle werden von dem Baustein FB_BA_SunBldSwi angesteuert.

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld.
TYPE ST_BA_SunBld:
STRUCT
     lrPos            : LREAL;
     lrAngl           : LREAL;
     bManUp           : BOOL;
     bManDwn          : BOOL;
     bManMod          : BOOL;
     bActv            : BOOL;
END_STRUCT
END_TYPE

Die aktuelle Höhenposition und der Lamellenwinkel werden dabei nicht durch einen zusätzlichen Encoder eingelesen, sondern intern durch die Laufzeit der Jalousie ermittelt.
Durch die beiden unterschiedlichen Laufzeitparameter udiTiUp (Laufzeit Jalousie hoch [ms]) und udiTiDwn (Laufzeit Jalousie herunter [ms]) wird den unterschiedlichen Fahrcharakteristiken Rechnung getragen.

Der Baustein steuert die Jalousie grundsätzlich über die Informationen, aus dem Positioniertelegramm stSunBld. Ist der Automatikmodus aktiv (bManMod=FALSE), so wird immer die aktuelle Position angefahren, wobei Änderungen sofort berücksichtigt werden. Im Handbetrieb (bManMod=TRUE) steuern die Befehle bManUp und bManDwn die Jalousie.

Referenzieren

Ein sicheres Referenzieren ist gegeben, wenn die Jalousie länger als ihre komplette Hochlaufzeit nach oben hin angesteuert wird. Die Position ist dann auf jeden Fall "0" . Da eine Jalousiepositionierung ohne Encoder naturgemäß immer fehlerbehaftet ist, ist es wichtig möglichst oft automatisch zu referenzieren: jedes mal, wenn die Position "0" angefahren werden soll, fährt die Jalousie zunächst ganz normal mit kontinuierlicher Positionsberechnung nach oben. Erreicht sie den errechneten Positionswert 0%, so wird der Ausgang bUp noch einmal für die weiterhin gehalten und zwar noch einmal für die komplette Hochlaufzeit + 5s.
Aus Gründen der Flexibilität gibt es nun zwei Möglichkeiten, den Referenziervorgang zu unterbrechen: Bis zum Erreichen der errechneten 0%-Position wird eine Positionsänderung immer noch angenommen und ausgeführt, nach Erreichen dieser 0%-Position kann die Jalousie noch mit dem Handbefehl "herunterfahren" anders bewegt werden. Diese beiden sinnvollen Einschränkungen machen es nötig, dass der Nutzer selbst dafür Sorge trägt, die Jalousie so oft wie möglich sicher referenzieren zu lassen.

Beim Neustart der Anlage referenziert der Baustein in jedem Fall. Die abgeschlossene Initial-Referenzierung wird durch ein TRUE-Signal an Ausgang bInitRefCmpl angezeigt. Auch die Initial-Referenzierung kann durch einen Handbefehl "herunterfahren" vorzeitig abgeschlossen werden.

Ein-/Ausgänge

VAR_INPUT

bEn            : BOOL;
stSunBld       : ST_BA_Sunblind;
udiTiUp        : UDINT;
udiTiDwn       : UDINT;

bEn: Freigabeeingang für den Baustein. Solange dieser Eingang auf TRUE steht, nimmt der Aktorbaustein Befehle entgegen und arbeitet, wie oben beschrieben. Ein FALSE-Signal an diesen Eingang setzt die Steuerausgänge bUp und bDwn zurück und der Funktionsbaustein verharrt in einem Ruhezustand.

stSunBld: Positioniertelegramm, siehe ST_BA_SunBld.

udiTiUp: Komplette Hochfahrzeit [ms].

udiTiDwn: Komplette Zeit zum Herunterfahren in ms.

VAR_OUTPUT

bUp            : BOOL;
bDwn           : BOOL;
lrActlPos      : LREAL;
udiRefTi       : UDINT;
bInitRefCompl  : BOOL;
bRef           : BOOL;
bBusy          : BOOL;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

bUp: Steuerausgang Jalousie hoch.

bDwn: Steuerausgang Jalousie herunter.

lrActlPos: Aktuelle Position in Prozent.

udiRefTi: Referenzier-Countdown-Anzeige [s].

bInitRefCompl: Initial-Referenziervorgang abgeschlossen.

bRef: Die Jalousie befindet sich in der Referenzierung, d.h. für die die komplette Hochlaufzeit + 5s wird der Ausgang bUp gesetzt. Nur ein Handbefehl "herunter" kann die Jalousie in Gegenrichtung bewegen und diesen Modus beenden.

bBusy: Ein Positionier- oder Referenziervorgang findet statt.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_ShdCorr

Funktionsbaustein zur Verschattungsbeurteilung einer Fenstergruppe auf einer Fassade.

Funktionsbeschreibung

Der Baustein FB_BA_ShdCorr berechnet für eine Gruppe von Fenstern, ob sich diese im Schatten von umliegenden Objekten befindet. Mit dem Ergebnis, welches am Ausgang bGrpNotShdd ausgegeben wird, kann beurteilt werden, ob ein Sonnenschutz für diese Fenstergruppe sinnvoll ist.
Dabei greift der Baustein auf zwei zu definierende Listen zu:

  • Die Parameter, welche die Verschattungselemente beschreiben, die für die Fassade maßgeblich sind, auf der sich die Fenstergruppe befindet.. Diese Liste der Verschattungsobjekte wird als Eingangsvariable arrShdObj an den Baustein angelegt, da die Informationen lediglich gelesen werden.
  • Die Daten der Elemente (Fenster) der Fassade, in der sich die zu betrachtende Gruppe befindet. Auf diese Liste der Fassadenelemente wird über die IN-OUT-Variable arrFcdElem zugegriffen, da nicht nur die Koordinaten der Fenster gelesen werden, sondern von dem Baustein FB_BA_ShdCorr in diese Liste auch jeweils die Verschattungsinformation für jede Fensterecke hinterlegt wird. Diese Information kann so in weiteren Teilen des Applikationsprogrammes genutzt werden.

Anhand der Fassadenausrichtung (lrFcdOrtn), der Sonnenrichtung (lrAzm) und der Sonnenhöhe (lrElv) kann dann für jeden Eckpunkt eines Fensters errechnet werden, ob sich dieser im Bereich eines Schattens befindet. Eine Gruppe von Fenstern gilt dann als komplett verschattet, wenn alle Eckpunkte verschattet sind.

Dabei gilt auf der Nordhalbkugel für die Fassadenausrichtung (Blick aus dem Fenster):

Blickrichtung | Fassadenausrichtung
Nord | β=0°
Ost | β=90°
Süd | β=180°
West | β=270°

Der Baustein führt seine Berechnungen nur dann durch, wenn die Sonne tatsächlich auf die Fassade scheint. Betrachtet man die in der Einleitung vorgestellte Zeichnung, so ist dies gegeben wenn gilt:

Fassadenausrichtung < Azimutwinkel < Fassadenausrichtung + 180°

Darüber hinaus ist eine Berechnung auch dann nicht nötig, wenn die Sonne noch nicht aufgegangen ist, die Sonnenhöhe (Elevation) also unter 0° liegt. In beiden Fällen wird der Ausgang bFcdSunlit auf FALSE gesetzt.

Für die Südhalbkugel ändern sich die Verhältnisse. Es gilt für die Fassadenausrichtung (Blick aus dem Fenster):

Blickrichtung | Fassadenausrichtung
Süd | β=0°
Ost | β=90°
Nord | β=180°
West | β=270°

Auch ändert sich die interne Berechnung Fassade zu Sonnenstrahl:

Zur Unterscheidung der Verhältnisse - Nord- oder Südhalbkugel - ist der Eingangsparameter bSouth auf FALSE zu setzen (Nordhalbkugel) oder auf TRUE (Südhalbkugel)

Ein-/Ausgänge

VAR_INPUT

stTiActl   : TIMESTRUCT;
lrFcdOrtn  : LREAL;
lrAzm      : LREAL;
lrElv      : LREAL;
bSouth     : BOOL;
usiGrpID   : USINT;
arrShdObj  : ARRAY[1..gBA_cMaxShdObj] OF ST_BA_ShdObj;

stTiActl: Eingabe der aktuellen Uhrzeit - hier die Ortszeit, da mithilfe dieser Zeit die verschattenden Monate berücksichtigt werden. Bei Verwendung der UTC-Zeit (bzw. GMT) kann, je nach Lage auf der Erde, der Monat mitten am Tag "umspringen".

lrFcdOrtn: Fassadenausrichtung, siehe Abbildung oben.

lrAzm: Sonnenrichtung zum Betrachtungszeitpunkt [°].

lrElv: Sonnenhöhe zum Betrachtungszeitpunkt [°].

bSouth: FALSE: Berechnungen beziehen sich auf Verhältnisse der Nordhalbkugel - TRUE: auf Südhalbkugel

usiGrpId: Betrachtete Fenstergruppe. Die Gruppe 0 ist hierbei für nicht verwendete Fensterelemente reserviert, siehe FB_BA_FcdElemEntry. Ein 0-Eintrag würde zu einer Fehlerausgabe führen (bErr=TRUE). Der Baustein wird dann nicht weiter abgearbeitet und bGrpNotShdd auf FALSE gesetzt.

arrShdObj: Liste der Verschattungsobjekte.

VAR_OUTPUT

bGrpNotShdd : BOOL;
bFcdSunlit  : BOOL;
bErr        : BOOL;
udiErrId    : UDINT;
udiErrArg   : UDINT;

bGrpNotShdd : Steht auf TRUE, solange die Fenstergruppe als nicht verschattet errechnet wird.

bFcdSunlit: Dieser Ausgang ist dann auf TRUE gesetzt, wenn die Sonne auf die Fassade scheint. Siehe Beschreibung oben.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

arrFcdElem     : ARRAY[1..gBA_cMaxColumnFcd, 1..gBA_cMaxRowFcd] OF ST_BA_FcdElem;

arrFcdElem: Liste der Fassadenelemente.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_ShdObjEntry

Dieser Baustein dient zur Verwaltung aller Verschattungselemente einer Fassade, welche global in einer Liste von Verschattungselementen hinterlegt ist. Er soll die Eingabe der Elementinformationen - auch im Hinblick auf die Nutzung der Target-Visualisierung - erleichtern. Eine schematische Darstellung der Objekte mit Beschreibung der Koordinaten ist unter Verschattungskorrektur: Grundlagen und Definitionen gegeben.

Funktionsbeschreibung

Die Deklaration der Verschattungselemente erfolgt in der globalen Variable:

VAR_GLOBAL
     arrShadingObject : ARRAY[1..iShadingObjects] OF ST_BA_ShdObj;
END_VAR

Jedes einzelne Element arrShadingObject[1] bis arrShadingObject[gBA_cMaxShdObj] trägt die Informationen für jeweils ein Verschattungselement (ST_BA_ShdObj). Dies sind neben dem gewählten Verschattungstyp (Viereck oder Kugel) die jeweils dazugehörigen Koordinaten. Im Falle eines Vierecks sind es die Eckpunkte (lrP1x, lrP1y, lrP1z), (lrP2x, lrP2y, lrP2z),(lrP3x, lrP3y, lrP3z) und (lrP4x, lrP4y, lrP4z) und im Falle einer Kugel der Mittelpunkt (lrMx, lrMy, lrMz) und der Radius lrRads. Zusätzlich kann über die Eingänge usiBegMth und usiEndMth die Phase der Verschattung definiert werden, was bei Objekten, wie z.B. Bäume, die im Winter kein Laub tragen, wichtig ist.

Der Baustein greift dabei über die IN-OUT-Variable arrShadingObject direkt auf das Feld dieser Informationen zu.

Anmerkung: Die Tatsache, dass die Viereckskoordinaten lrP2x, lrP2z, lrP4x, lrP4y, und lrP4z Ausgangswerte sind, ergibt sich daraus, dass sie aus den Eingabeparametern gebildet werden:

      lrP2x = lrP1x; lrP2z = lrP1z;
lrP4x = lrP3x; lrP4y = lrP1y;
lrP4z = lrP3z;

Das schränkt die Eingabe eines Vierecks soweit ein, dass die seitlichen Kanten senkrecht auf dem Boden stehen (lrP2x = lrP1x und lrP4x = lrP3x), dass das Viereck keine Neigung hat (lrP2z = lrP1z und lrP4z = lrP3z) und nur nach "oben" also in positive y-Richtung eine unterschiedliche Höhe haben kann (lrP4y = lrP1y).

Die Verwendung des Bausteines erfolgt in drei Schritten:

  • Auslesen
  • Ändern
  • Schreiben

Auslesen

Mit dem Eintrag an iId wird das entsprechende Element aus der Liste, arrShadingObject[iId], ausgewählt. Eine steigende Flanke an bRd liest die Daten aus. Diese Werte werden den Ein- und Ausgangsvariablen des Bausteines zugewiesen. Es handelt sich hierbei um die Eingangswerte lrP1x, lrP1y, lrP1z, lrP2y, lrP3x, lrP3y, lrP3z, lrMx, lrMy, lrMz, rRadius und dem Objekt-Enumerator eType und um die Ausgangswerte lrP2x, lrP2z, lrP4x, lrP4y, und lrP4z. Wichtig ist hierbei, dass im Schritt des Auslesens die Eingangswerte nicht überschrieben werden. So lassen sich alle Werte zunächst in einer Visualisierung anzeigen.

Ändern

In einem nächsten Programmschritt können dann die aufgeführten Eingabewerte verändert werden. Sollte am Eingang eType über den Wert "eObjectTypeTetragon" die Verwendung eines Vierecks vorgewählt sein, ergeben sich die Ausgangswerte lrP2x, lrP2z, lrP4x, lrP4y, und lrP4z aus den eingegebenen Koordinaten des Vierecks, siehe oben.

Die eingegebenen Werte werden ständig auf Plausibilität überprüft. Der Ausgang bErr zeigt an, ob die Werte gültig sind (bErr=FALSE). Sollte dies nicht der Fall sein, wird am Ausgang udiErrId/udiErrArg ein entsprechender Fehlercode ausgegeben.
Wird ein Viereck definiert, müssen lediglich die Eingänge lrP1x, lrP1y, lrP1z, lrP2y, lrP3x, lrP3y und lrP3z beschrieben werden, die Eingänge lrMx, lrMy, lrMz und lrRads brauchen nicht verknüpft zu werden. Im Falle einer Kugeldefinition müssen nur lrMx, lrMy, lrMz und lrRads beschrieben werden und die Viereckkoordinaten können unverknüpft bleiben

Schreiben

Mit einer positiven Flanke an bWrt werden die parametrierten Daten in das Listenelement mit dem Index iId geschrieben, unabhängig davon, ob sie gültige Werte darstellen oder nicht. Daher ist innerhalb der Elementstruktur ST_BA_ShdObj ein Plausibilitätsbit bVld vorhanden, das genau diese Information an den Baustein FB_BA_ShdCorr weiterreicht und dort Fehlberechnungen vorbeugt.

Diese Vorgehensweise soll nur als Vorschlag angesehen werden. Es ist natürlich auch möglich, den Baustein ganz normal in einem Schritt zu parametrieren und die eingetragenen Werte mit einer steigenden Flanke an bWrt in das entsprechende Listenelement zu schreiben.

Ein-/Ausgänge

VAR_INPUT

iId                : INT;
bRd                : BOOL;
bWrt               : BOOL;
lrP1x              : LREAL;
lrP1y              : LREAL;
lrP1z              : LREAL;
lrP2y              : LREAL;
lrP3x              : LREAL;
lrP3y              : LREAL;
lrP3z              : LREAL;
lrMx               : LREAL;
lrMy               : LREAL;
lrMz               : LREAL;
lrRads             : LREAL;
usiBegMth          : USINT;
usiEndMth          : USINT;
eType              : E_BA_ShdObjType;

iId: Index des gewählten Elementes. Dies bezieht sich auf die Auswahl eines Feldelementes des unter der IN-OUT-Variablen arrShdObj angelegten Arrays. iId darf nicht Null sein! Das ergibt sich aus der Felddefinition, welche mit 1 beginnt, siehe oben.

bRd: Mit einer positiven Flanke an diesem Eingang werden die Informationen des gewählten Elementes, arrShdObj[iId] in den Baustein gelesen und den Eingangsvariablen lrP1x bis eType sowie den Ausgangsvariablen lrP2x bis lrP4z zugewiesen. Sind zu diesem Zeitpunkt schon Daten an den Eingängen lrP1x bis eType angelegt, so werden die zuvor ausgelesenen Daten sofort mit diesen überschrieben.

bWrt: Eine positive Flanke schreibt die an den Eingängen lrP1x bis eType angelegten sowie die ermittelten und den Ausgängen lrP2x bis lrP4z zugewiesenen Werte in das gewählte Feldelement arrShdObj[iId].

lrP1x: X-Koordinate des Punktes 1 des Verschattungselementes (Viereck) [m].

lrP1y: Y-Koordinate des Punktes 1 des Verschattungselementes (Viereck) [m].

lrP1z: Z-Koordinate des Punktes 1 des Verschattungselementes (Viereck) [m].

lrP2y: Y-Koordinate des Punktes 2 des Verschattungselementes (Viereck) [m].

lrP3x: X-Koordinate des Punktes 3 des Verschattungselementes (Viereck) [m].

lrP3y: Y-Koordinate des Punktes 3 des Verschattungselementes (Viereck) [m].

lrP3z: Z-Koordinate des Punktes 3 des Verschattungselementes (Viereck) [m].

lrMx: X-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) [m].

lrMy: Y-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) [m].

lrMz: Z-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) [m].

lrRads: Radius des Verschattungselementes (Kugel) [m].

usiBegMth: Anfang der Verschattungsperiode (Monatszahl).

usiEndMth: Ende der Verschattungsperiode (Monatszahl).

eType: Gewählter Elementtyp: Viereck oder Kugel. Siehe E_BA_ShdObjType.

Bemerkung zur Verschattungsperiode:

Die Monatseinträge dürfen nicht 0 und größer 12 sein, andernfalls sind alle Kombinationen möglich.
Beispiele:
Beginn=1, Ende=1: Verschattung im Januar.
Beginn=1, Ende=5: Verschattung von Anfang Januar bis Ende Mai.
Beginn=11, Ende=5: Verschattung von Anfang November bis Ende Mai (des folgenden Jahres).

VAR_OUTPUT

lrP2x       : LREAL;
lrP2z       : LREAL;
lrP4x       : LREAL;
lrP4y       : LREAL;
lrP4z       : LREAL;
bErr        : BOOL;
udiErrId    : UDINT;

lrP2x: Ermittelte X-Koordinate des Punktes 2 des Verschattungselementes (Viereck) [m]. Siehe "Anmerkung" oben.

lrP2z: Ermittelte Z-Koordinate des Punktes 2 des Verschattungselementes (Viereck) [m]. Siehe "Anmerkung" oben.

lrP4x: Ermittelte X-Koordinate des Punktes 4 des Verschattungselementes (Viereck) [m]. Siehe "Anmerkung" oben.

lrP4y: Ermittelte Y-Koordinate des Punktes 4 des Verschattungselementes (Viereck) [m]. Siehe "Anmerkung" oben.

lrP4z: Ermittelte Z-Koordinate des Punktes 4 des Verschattungselementes (Viereck) [m]. Siehe "Anmerkung" oben.

bErr: Ergebnis der Plausibilitätskontrolle für die eingegebenen Werte. In Bezug auf ein Viereck ist verlangt, dass der Innenwinkel 360° beträgt und die Punkte in einer Ebene liegen und vor der betrachteten Fassade liegen. Bei einer Kugel muss der Mittelpunkt ebenfalls vor der Fassade liegen und der Radius muss größer Null sein.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

VAR_IN_OUT

arrShdObj : ARRAY[1..gBA_cMaxShdObj] OF ST_BA_ShdObj;

arrShdObj: Liste der Verschattungsobjekte.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldActr

Dieser Baustein dient zur Positionierung einer Lamellen-Jalousie über zwei Ausgänge: hoch- und herunterfahren. Über das Positioniertelegramm stSunBld kann die Jalousie auf eine beliebige (Höhen-) Position und einen Lamellenwinkel gefahren werden. Darüber hinaus beinhaltet das Positioniertelegramm stSunBld auch Handbefehle, mit denen die Jalousie individuell auf bestimmte Stellungen bewegt werden kann. Diese Handbefehle werden von dem Baustein FB_BA_SunBldSwi angesteuert.

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld.
TYPE ST_BA_SunBld:
STRUCT
     lrPos            : LREAL;
     lrAngl           : LREAL;
     bManUp           : BOOL;
     bManDwn          : BOOL;
     bManMod          : BOOL;
     bActv            : BOOL;
END_STRUCT
END_TYPE

Die aktuelle Höhenposition und der Lamellenwinkel werden dabei nicht durch einen zusätzlichen Encoder eingelesen, sondern intern durch die Laufzeit der Jalousie ermittelt. Der Berechnung liegt folgendes Fahrprofil zugrunde (von der höchsten und niedrigsten Position der Jalousie aus betrachtet):

Fahrprofil abwärts:

Nähere Erläuterung zu den Begriffen "Umkehrlose" und "Umschwenken", hier in der Abwärtsbewegung:

Die Jalousie beschreibt ihre Abwärtsbewegung normalerweise mit dem Lamellentiefpunkt nach außen gerichtet, wie in Bild 3.
Befindet sich die Jalousie in einer Ausgangsstellung mit dem Tiefpunkt nach innen (d.h. nach Abschluss einer Aufwärtsbewegung), so vergeht bei einer erneuten Abwärtsfahrt eine gewisse Zeit bis die Lamellen vom "Tiefpunkt innen" bis zu "Tiefpunkt außen" zu schwenken beginnen. Während dieser Zeit ändert sich der Lamellenwinkel nicht, die Jalousie fährt nur herunter (Bild1 und Bild2). Diese Zeit ist ein wichtiger Parameter zur Bewegungsberechnung und wird am Baustein unter udiBckLshTiDwn [ms] eingetragen. Da man an einem x-beliebigen Punkt nach einer beliebig langen Jalousiebewegung nicht weiß, ob schon etwas von der Umkehrlosen ausgefahren wurde, misst man die Umkehrlose der Abwärtsbewegung bzw. deren Ausfahrzeit am Sichersten, wenn die Jalousie zunächst ganz nach oben gefahren wurde. Ein weiterer wichtiger Parameter ist die Zeitspanne des darauf folgenden Umschwenkens der Lamellen von "Tiefpunkt innen" bis zu "Tiefpunkt außen". Diese Zeit ist als udiTurnTiDwn [ms] am Baustein einzutragen.

Fahrprofil aufwärts:

Nähere Erläuterung zu den Begriffen "Umkehrlose" und "Umschwenken", hier in der Aufwärtsbewegung:

Dieser Sachverhalt ist analog zur oben beschriebenen Abwärtsbewegung: Die Jalousie beschreibt ihre Aufwärtsbewegung normalerweise mit dem Lamellentiefpunkt nach innen gerichtet, wie in Bild 3.
Befindet sich die Jalousie in einer Ausgangsstellung mit dem Tiefpunkt nach außen (d.h. nach Abschluss einer Abwärtsbewegung), so vergeht bei einer erneuten Aufwärtsfahrt eine gewisse Zeit bis die Lamellen vom "Tiefpunkt außen" bis zu "Tiefpunkt innen" zu schwenken beginnen. Während dieser Zeit ändert sich der Lamellenwinkel nicht, die Jalousie fährt nur herauf (Bild1 und Bild2). Auch diese Zeit ist ein wichtiger Parameter zur Bewegungsberechnung und wird am Baustein unter udiBckLshTiUp [ms] eingetragen. Da man an einem x-beliebigen Punkt nach einer beliebig langen Jalousiebewegung nicht weiß, ob schon etwas von der Umkehrlosen ausgefahren wurde, misst man die Umkehrlose der Aufwärtsbewegung bzw. deren Ausfahrzeit am Sichersten, wenn die Jalousie zunächst ganz nach unten gefahren wurde. Ein weiterer wichtiger Parameter ist die Zeitspanne des darauf folgenden Umschwenkens der Lamellen von "Tiefpunkt außen" bis zu "Tiefpunkt innen". Diese Zeit ist als udiTurnTiUp [ms] am Baustein einzutragen.

Parametrierung

Zur Berechnung der (Höhen-)Position und des Lamellenwinkels sind nun jeweils für die Auf- und Abwärtsbewegung folgende Zeiten zu ermitteln:

  • die Verfahrdauer der Umkehrlose (udiBckLshTiUp / udiBckLshTiDwn [ms])
  • die Verfahrdauer des Umschwenkens (udiTurnTiUp / udiTurnTiDwn [ms])
  • die Gesamt-Verfahrdauer (udiTiUp / udiTiDwn [ms])

Des Weiteren sind zur Berechnung erforderlich:

  • der höchste Lamellenwinkel nach einem Umschwenken nach oben (lrAnglLmtUp [°])
  • der niedrigste Lamellenwinkel nach einem Umschwenken nach unten (lrAnglLmtDwn [°])

Der Lamellenwinkel λ ist dabei durch eine gedachte Gerade durch die Endpunkte der Lamelle zur Horizontalen definiert.

Funktionsweise

Der Baustein steuert die Jalousie grundsätzlich über die Informationen, aus dem Positioniertelegramm stSunBld. Ist der Automatikmodus aktiv (bManMod=FALSE), so wird immer die aktuelle Position und Lamellenwinkel angefahren, wobei Änderungen sofort berücksichtigt werden. Die Positionierung auf die Höhe hat dabei Vorrang: Es wird zunächst die eingegebene Höhe und danach der Lamellenwinkel angefahren. Aus Gründen der Einfachheit bleibt dabei der Positionsfehler durch das Winkel-Verfahren unberücksichtigt. Im Handbetrieb (bManMod=TRUE) steuern die Befehle bManUp und bManDwn die Jalousie. Bei einem Wechsel vom Hand- in den Automatikmodus wird in jedem Fall ein Automatik-Fahrbefehl ausgelöst.

Referenzieren

Ein sicheres Referenzieren ist gegeben, wenn die Jalousie länger als ihre komplette Hochlaufzeit nach oben hin angesteuert wird. Die Position ist dann auf jeden Fall "0" und der Lamellenwinkel auf seinem Maximum. Da eine Jalousiepositionierung ohne Encoder naturgemäß immer fehlerbehaftet ist, ist es wichtig möglichst oft automatisch zu referenzieren: jedes mal, wenn die Position "0" angefahren werden soll (der Winkel spielt dabei keine Rolle) fährt die Jalousie zunächst ganz normal mit kontinuierlicher Positionsberechnung nach oben. Erreicht sie den errechneten Positionswert 0%, so wird der Ausgang bUp gehalten und zwar noch einmal für die komplette Hochlaufzeit + 5s.
Aus Gründen der Flexibilität gibt es nun zwei Möglichkeiten, den Referenziervorgang zu unterbrechen: Bis zum Erreichen der errechneten 0%-Position wird eine Positionsänderung immer noch angenommen und ausgeführt, nach Erreichen dieser 0%-Position kann die Jalousie noch mit dem Handbefehl "herunterfahren" anders bewegt werden. Diese beiden sinnvollen Einschränkungen machen es nötig, dass der Nutzer selbst dafür Sorge trägt, die Jalousie so oft wie möglich sicher referenzieren zu lassen.

Beim Neustart der Anlage referenziert der Baustein in jedem Fall. Die abgeschlossene Initial-Referenzierung wird durch ein TRUE-Signal an Ausgang bInitRefCmpl angezeigt. Die Initial-Referenzierung kann durch einen Handbefehl "herunterfahren" nicht vorzeitig abgeschlossen werden.

Zielgenauigkeit

Da der Baustein die Position der Jalousie alleine über Laufzeiten ermittelt, spielt die Zykluszeit der SPS-Task eine entscheidende Rolle bei der Positioniergenauigkeit. Besteht beispielsweise eine Umschwenkzeit von 1s für einen Lamellen-Winkelbereich von -70° bis 10°, so liegt bei einer Zykluszeit von 50ms die Genauigkeit bei +/-4°.

Ein-/Ausgänge

VAR_INPUT

bEn             : BOOL;
stSunbld        : ST_BA_SunBld;
udiTiUp         : UDINT;
udiTiDwn        : UDINT;
udiTurnTiUp     : UDINT;
udiTurnTiDwn    : UDINT;
udiBckLshTiUp   : UDINT;
udiBckLshTiDwn  : UDINT;
lrAnglLmtUp     : LREAL;
lrAnglLmtDwn    : LREAL;

bEn: Freigabeeingang für den Baustein. Solange dieser Eingang auf TRUE steht, nimmt der Aktorbaustein Befehle entgegen und arbeitet, wie oben beschrieben. Ein FALSE-Signal an diesen Eingang setzt die Steuerausgänge bUp und bDwn zurück und der Funktionsbaustein verharrt in einem Ruhezustand.

stSunbld: Positioniertelegramm, siehe ST_BA_SunBld.

udiTiUp: Komplette Hochfahrzeit [ms].

udiTiDwn: Komplette Zeit zum Herunterfahren [ms].

udiTurnTiUp: Zeit zum Umschwenken der Lamellen in obere Richtung [ms].

udiTurnTiDwn: Zeit zum Umschwenken der Lamellen in untere Richtung [ms].

udiBckLshTiUp: Zeit zum Ausfahren der Umkehrlose in obere Richtung [ms].

udiBckLshTiDwn: Zeit zum Ausfahren der Umkehrlose in untere Richtung [ms].

lrAnglLmtUp: Höchste Stellung der Lamellen [°].

Diese Stellung ist erreicht, wenn die Jalousie ganz hochgefahren ist.

Der Lamellenwinkel λ, so wie er einleitend definiert ist, ist dann typischerweise größer Null.

lrAnglLmtDwn: Niedrigste Stellung der Lamellen [°].

Diese Stellung ist erreicht, wenn die Jalousie ganz heruntergefahren ist.

Der Lamellenwinkel λ, so wie er einleitend definiert ist, ist dann typischerweise kleiner Null.

VAR_OUTPUT

bUp           : BOOL;
bDwn          : BOOL;
lrActlPos     : LREAL;
lrActlAngl    : LREAL;
bRef          : BOOL;
bInitRefCompl : BOOL;
bRef          : BOOL;
bBusy         : BOOL;
bErr          : BOOL;
udiErrId      : UDINT;
udiErrArg     : UDINT;

bUp: Steuerausgang Jalousie hoch.

bDwn: Steuerausgang Jalousie herunter.

lrActlPos: Aktuelle Position in Prozent.

lrActlAngl: Aktueller Lamellenwinkel [°].

bRef: Die Jalousie befindet sich in der Referenzierung, d.h. für die die komplette Hochlaufzeit + 5s wird der Ausgang bUp gesetzt. Nur ein Handbefehl "herunter" kann die Jalousie in Gegenrichtung bewegen und diesen Modus beenden.

udiRefTi: Referenzier-Countdown-Anzeige [s].

bInitRefCompl: Initial-Referenziervorgang abgeschlossen.

bBusy: Ein Positionier- oder Referenziervorgang findet statt.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldPosDly

Dieser Baustein verzögert Positionsänderungen von Automatik-Befehlen.

Funktionsbeschreibung

Wenn durch ein Ereignis, zum Beispiel Wetterschutz, zu viele Jalousieantriebe gleichzeitig gestartet werden, kann es sein, dass die Summe der hohen Motor-Anzugsströme Sicherungen auslösen. Es ist daher wünschenswert, die Jalousieantriebe kurz hintereinander zu starten um den Gesamtstrom zu minimieren.

Dieser Baustein gibt Automatikbefehle vom Eingangstelegramm stIn verzögert an das Ausgangstelegramm stOut weiter. Er beachtet dazu drei Fälle

  1. die Jalousieposition lrPos hat sich im Automatikmodus verändert (bManMode=FALSE im Telegramm stIn)
  2. der Lamellenwinkel lrAngl hat sich im Automatikmodus verändert (bManMode=FALSE im Telegramm stIn)
  3. der Hand-Modus wurde gerade verlassen, d.h. der Automatikmodus gerade aktiv (fallende Flanke bManMode im Telegramm stIn)

Das Ausgangstelegramm stOut, ist immer eine direkte Kopie des Eingangstelegramms stIn. In diesen drei Fällen jedoch werden im Ausgangstelegramm stOut für die Zeit von uiDly [ms]

  • bManMode = TRUE
  • bManUp = FALSE
  • bManDwn = FALSE

gesetzt. Dadurch wird die über den Baustein FB_BA_SunBldActr angesteuerte Jalousie für den Zeitraum der Verzögerung auf ihrer Position gehalten. Jede weitere Änderung nach den oben genannten Kriterien innerhalb der Verzögerungszeit startet den Zeitgeber neu.

Ein Wechsel auf Hand im Eingangstelegramm (bManMode = TRUE) jedoch löscht den Warte-Timer unmittelbar. Das (Hand-)Telegramm wird unverzögert durchgereicht. So werden nur Automatiktelegramme verzögert.

Anwendung

Vorzugsweise direkt vor dem Jalousie-Aktorbaustein:

Ein-/Ausgänge

VAR_INPUT

stIn      : ST_BA_Sunblind;
uiDly     : UINT;

stIn: Eingangs-Positioniertelegramm, siehe ST_BA_SunBld.

uiDly: Verzögerungszeit des Aktiv-Bits im Positioniertelegramm [ms].

VAR_OUTPUT

stOut     : ST_BA_Sunblind;

stOut: Ausgangs-Positioniertelegramm, siehe ST_BA_SunBld.

udiRemTiDly: Anzeigeausgang abgelaufene Verzögerungszeit [s].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldEvt

Dieser Baustein dient zur Positions- und Winkelvorgabe bei einem beliebigen Ereignis. Sie kann beispielsweise genutzt werden, um eine Parkposition anzufahren oder im Wartungsfall die Jalousie hochfahren zu lassen.

Funktionsbeschreibung

Die Funktion wird über den Eingang bEn aktiviert. Ist dies der Fall, so wird der Aktiv-Merker im Positioniertelegramm (bActv in stSunBld) am Ausgang stSunBld gesetzt und die an den In-Out-Variablen eingetragenen Werte lrPos für die Jalousiehöhe [%] und lrAngl für den Lamellenwinkel [°] in diesem Telegramm weiter gereicht. Ist die Funktion durch Rücksetzen von bEn nicht mehr aktiv, so wird der Aktiv-Merker im Positioniertelegramm stSunBld wird zurück und die Positionen für Höhe und Winkel auf "0" gesetzt. Nutzt man den Prioritätenbaustein, so kann dann eine Funktion niedrigerer Priorität die Steuerung übernehmen.

Ein-/Ausgänge

VAR_INPUT

bEn       : BOOL;
lrPos     : LREAL;
lrAngl    : LREAL;

bEn: Ein TRUE-Signal an diesem Eingang aktiviert den Baustein und übergibt die eingetragenen Sollwerte im Positioniertelegramm ST_BA_SunBld zusammen mit dem Aktivmerker. Ein FALSE-Signal setzt den Aktivmerker wieder zurück, sowie Position und Winkel auf Null.

lrPos: Höhenposition der Jalousie [%] im Falle einer Aktivierung.

lrAngl: Lamellenwinkel der Jalousie [°] im im Falle einer Aktivierung.

VAR_OUTPUT

stSunBld   : ST_BA_SunBld;
bActv      : BOOL;

bActv: Entspricht dem booleschen Wert bActv im Jalousie-Telegramm ST_BA_SunBld und dient zur reinen Anzeige, ob der Baustein ein aktives Telegramm sendet.

stSunBld: Ausgabestruktur der Jalousiestellungen, siehe ST_BA_SunBld

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldPrioSwi4

Prioritätssteuerung für bis zu 4 Positioniertelegramme (stSunBld_Prio1 ... stSunBld_Prio4) des Typs ST_BA_SunBld.

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld.
TYPE ST_BA_SunBld:
STRUCT
     lrPos            : LREAL;
     lrAngl           : LREAL;
     bManUp           : BOOL;
     bManDwn          : BOOL;
     bManMod          : BOOL;
     bActv            : BOOL;
END_STRUCT
END_TYPE

An diesem Baustein lassen sich bis zu 4 Positioniertelegramme verschiedener Steuerbausteine anlegen. Dabei hat das Telegramm an stSunBld_Prio1 die höchste und das an stSunBld_Prio4 die niedrigste Priorität. Das aktive Telegramm der höchsten Priorität wird am Ausgang stSunBld ausgegeben. "Aktiv" bedeutet, dass innerhalb der Struktur des Positioniertelegramms die Variable bActv gesetzt ist.

Hinweis: Diese Baustein ist so zu programmieren, dass immer eines der angelegten Telegramme aktiv ist. Sollte dies nicht der Fall sein, so wird am Ausgang ein Leertelegramm ausgegeben, d.h. lrPos=0, lrAngl=0, bManUp=FALSE, bManDwn=FALSE, bManMod=FALSE, bActv=FALSE. Da der Jalousiebaustein FB_BA_SunBldActr bzw. der Rollladenbaustein FB_BA_RolBldActr seinerseits nicht auf den Merker bActv achtet, würde dieses Telegramm als Fahrbefehl auf Position "0", also vollständig geöffnet, gewertet werden. Das Fehlen eines aktiven Telegramms stellt damit kein Sicherheitsrisiko für die Jalousie dar.

Ein-/Ausgänge

VAR_INPUT

stSunBld_Prio1  : ST_BA_SunBld;
stSunBld_Prio2  : ST_BA_SunBld;
stSunBld_Prio3  : ST_BA_SunBld;
stSunBld_Prio4  : ST_BA_SunBld;

stSunBld_Prio1..stSunBld_Prio4: Zur Auswahl stehende Positioniertelegramme. Dabei hat stSunBld_Prio1 die höchste und stSunBld_Prio4 die niedrigste Priorität.

VAR_OUTPUT

stSunBld    : ST_BA_SunBld;
udiActvPrio : UDINT;

stSunBld: Resultierendes Positioniertelegramm.
udiActvPrio: Aktives Positioniertelegramm. Ist keines aktiv, so wird "0" ausgegeben.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldPrioSwi8

Prioritätssteuerung für bis zu 8 Positioniertelegramme (stSunBld_Prio1 ... stSunBld_Prio8) des Typs ST_BA_SunBld.

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld.
TYPE ST_BA_SunBld:
STRUCT
     lrPos            : LREAL;
     lrAngl           : LREAL;
     bManUp           : BOOL;
     bManDwn          : BOOL;
     bManMod          : BOOL;
     bActv            : BOOL;
END_STRUCT
END_TYPE

An diesem Baustein lassen sich bis zu 8 Positioniertelegramme verschiedener Steuerbausteine anlegen. Dabei hat das Telegramm an stSunBld_Prio1 die höchste und das an stSunBld_Prio8 die niedrigste Priorität. Das aktive Telegramm der höchsten Priorität wird am Ausgang stSunBld ausgegeben. "Aktiv" bedeutet, dass innerhalb der Struktur des Positioniertelegramms die Variable bActv gesetzt ist.

Hinweis: Diese Baustein ist so zu programmieren, dass immer eines der angelegten Telegramme aktiv ist. Sollte dies nicht der Fall sein, so wird am Ausgang ein Leertelegramm ausgegeben, d.h. lrPos=0, lrAngl=0, bManUp=FALSE, bManDwn=FALSE, bManMod=FALSE, bActv=FALSE. Da der Jalousiebaustein FB_BA_SunBldActr bzw. der Rollladenbaustein FB_BA_RolBldActr seinerseits nicht auf den Merker bActv achtet, würde dieses Telegramm als Fahrbefehl auf Position "0", also vollständig geöffnet, gewertet werden. Das Fehlen eines aktiven Telegramms stellt damit kein Sicherheitsrisiko für die Jalousie dar.

Ein-/Ausgänge

VAR_INPUT

stSunBld_Prio1  : ST_BA_SunBld;
stSunBld_Prio2  : ST_BA_SunBld;
stSunBld_Prio3  : ST_BA_SunBld;
stSunBld_Prio4  : ST_BA_SunBld;
stSunBld_Prio5  : ST_BA_SunBld;
stSunBld_Prio6  : ST_BA_SunBld;
stSunBld_Prio7  : ST_BA_SunBld;
stSunBld_Prio8  : ST_BA_SunBld;

stSunBld_Prio1..stSunBld_Prio8: Zur Auswahl stehende Positioniertelegramme. Dabei hat stSunBld_Prio1 die höchste und stSunBld_Prio8 die niedrigste Priorität.

VAR_OUTPUT

stSunBld    : ST_BA_SunBld;
udiActvPrio : UDINT;

stSunBld: Resultierendes Positioniertelegramm.
udiActvPrio: Aktives Positioniertelegramm. Ist keines aktiv, so wird "0" ausgegeben.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldScn

Dieser Baustein stellt eine Erweiterung der Handbedienung FB_BA_SunBldSwi um eine Szenen-Speicher- und Aufruf-Funktionalität dar. Damit lässt sich die Jalousieansteuerung FB_BA_SunBldActr bzw. die Rollladenansteuerung FB_BA_RolBldActr sowohl im Handbedienmodus ansteuern, als auch zuvor gespeicherte Positionen (Szenen) direkt anfahren. Es können bis zu 21 Szenen gespeichert werden.

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld.
TYPE ST_BA_SunBld:
STRUCT
     lrPos            : LREAL;
     lrAngl           : LREAL;
     bManUp           : BOOL;
     bManDwn          : BOOL;
     bManMod          : BOOL;
     bActv            : BOOL;
END_STRUCT
END_TYPE

Betriebsweise

Der Funktionsbaustein steuert über die Befehlseingänge bUp und bDwn den Jalousiebaustein FB_BA_SunBldActr bzw. den Rollladenbaustein FB_BA_RolBldActr im Handbetrieb an, wobei bUp Vorrang hat. Die Befehle werden an die jeweiligen Kommandos bManUp und bManDwn des Positioniertelegramms weiter gereicht. Ist ein Befehlseingang länger als die eingetragene Zeit udiSwiOvrTi [ms] aktiviert, so geht der entsprechende Steuerbefehl in Selbsthaltung. Ein erneutes Aktivieren eines Befehlseinganges löscht diese Selbsthaltung wieder.
Eine steigende Flanke an bSavScn speichert die aktuelle Position und den Lamellenwinkel in die unter udiSlcdScn angewählte Szene. Dieser Vorgang ist jederzeit möglich, auch während einer aktiven Positionierung. Mit bClScn wird die angewählte Szene aufgerufen, das heißt, die gespeicherten Werte von Position und Winkel angefahren.

Verknüpfung an Jalousiebaustein

Der Szenenanwahlbaustein kann, wie der "normale" Handbedienbaustein FB_BA_SunBldSwi, entweder über eine voran gestellte Prioritätssteuerung FB_BA_SunBldPrioSwi4 bzw. FB_BA_SunBldPrioSwi8 oder aber direkt an den Jalousiebaustein angeschlossen werden. Die Verbindung erfolgt dabei über das Positioniertelegramm stSunBld. Des weiteren benötigt der Szenenbaustein die aktuelle Positionen aus dem Jalousiebaustein der Referenz-Jalousie:

Verwendung einer Prioritätssteuerung:

Direkte Beschaltung:

Ein-/Ausgänge

VAR_INPUT

bEn           : BOOL;
bUp           : BOOL;
bDwn          : BOOL;
udiSwiOvrTi   : UDINT;
udiSlcdScn    : UDINT;
bClScn        : BOOL;
bSavScn       : BOOL;
lrSpPos       : LREAL;
lrSpAngl      : LREAL;

bEn: Steht dieser Eingang auf FALSE, so ist der Baustein ohne Funktion. Im Positioniertelegramm stSunBld werden für Position und Winkel jeweils 0 ausgegeben - bManualMode und bActv stehen jeweils auf FALSE. Das bedeutet für eine Beschaltung mit Prioritätssteuerung, dass eine andere Funktionalität die Jalousieansteuerung übernimmt. Eine direkte Beschaltung hingegen lässt die Jalousie direkt auf Position 0, also ganz nach oben fahren, da der Aktorbaustein das Bit bActv selbst nicht auswertet.

bUp: Befehlseingang Jalousie hoch.

bDwn: Befehlseingang Jalousie herunter.

udiSwiOvrTi: Zeit [ms] bis bei dauerhaft aktiviertem Befehlseingang der entsprechende Handbefehl im Positioniertelegramm stSunBld in Selbsthaltung geht.

udiSlcdScn: Angewählte Szene, welche entweder gespeichert (bSaveScene) oder aufgerufen (bInvokeScene) werden soll.

bClScn: Angewählte Szene aufrufen.

bSavScn: Angewählte Szene speichern.

lrSpPos: Sollposition [%], welche in der gewählten Szene gesichert werden soll. Ist mit der Ist-Position des Aktorbausteins FB_BA_SunBldActr bzw. FB_BA_RolBldActr der Referenz-Jalousie/Rolllade zu verknüpfen, um dadurch eine vorher manuell angefahrene Position speichern zu können.

lrSpAngl: dto. Lamellenwinkel [°].

VAR_IN_OUT

arrSunBldScn : ARRAY[0..cMaxSunBldScn] OF ST_BA_SunBldScn;

arrSunBldScn: Tabelle mit den Szeneneinträgen vom Typ ST_BA_SunBldScn. Es können bis zu 21 Szenen gespeichert werden (0..20).

VAR_OUTPUT

stSunBld       : ST_BA_SunBld;
bActv          : BOOL;
lrActlScnPos   : LREAL;
lrActlScnAngl  : LREAL;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

stSunBld: Positioniertelegramm, siehe ST_BA_SunBld.

bActv: Entspricht dem booleschen Wert bActv im Jalousie-Telegramm ST_BA_SunBld und dient zur reinen Anzeige, ob der Baustein ein aktives Telegramm sendet.

lrActlScnPos: Zeigt die gespeicherte relative Jalousiehöhenposition [%] der aktuell angewählten Szene an.

lrActlScnAngl: dto. Lammellenwinkel [°].

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Hinweis Sollte ein Fehler anstehen, so wird diese Automatik deaktiviert und Position und Winkel auf 0 gesetzt. Das bedeutet, dass bei Verwendung einer Prioritätssteuerung automatisch eine andere Funktion niedrigerer Priorität (siehe Übersicht) die Steuerung der Jalousie übernimmt. Bei direkter Beschaltung hingegen wird die Jalousie auf Position/Winkel 0 fahren.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldSwi

Mit Hilfe dieses Bausteines lassen sich die Jalousieansteuerung FB_BA_SunBldActr bzw. die Rollladensteuerung FB_BA_RolBldActr im Handbedienmodus ansteuern. Die Verbindung erfolgt dabei über das Positioniertelegramm stSunBld entweder direkt oder mit einer zusätzlichen Prioritätssteuerung.

Funktionsbeschreibung

Struktur des Jalousie-Positioniertelegramms stSunBld.
TYPE ST_BA_SunBld:
STRUCT
     lrPos            : LREAL;
     lrAngl           : LREAL;
     bManUp           : BOOL;
     bManDwn          : BOOL;
     bManMod          : BOOL;
     bActv            : BOOL;
END_STRUCT
END_TYPE

Betrieb

Der Funktionsbaustein steuert über die Befehlseingänge bUp und bDwn den Jalousiebaustein FB_BA_SunBldActr bzw. den Rollladenbaustein FB_BA_RolBldActr im Handbetrieb an, wobei bUp Vorrang hat. Die Befehle werden an die jeweiligen Kommandos bManUp und bManDwn des Positioniertelegramms weiter gereicht. Ist ein Befehlseingang länger als die eingetragene Zeit udiSwiOvrTi [ms] aktiviert, so geht der entsprechende Steuerbefehl in Selbsthaltung. Ein erneutes Aktivieren eines Befehlseinganges löscht diese Selbsthaltung wieder.

Verknüpfung an Jalousiebaustein

Der Handbedienbaustein kann entweder über eine voran gestellte Prioritätssteuerung FB_BA_SunBldPrioSwi4 bzw. FB_BA_SunBldPrioSwi8 oder aber direkt an den Jalousiebaustein angeschlossen werden. Die Verbindung erfolgt dabei über das Positioniertelegramm stSunBld.

Verwendung einer Prioritätssteuerung:

Direkte Beschaltung:

Ein-/Ausgänge

VAR_INPUT

bEn               : BOOL;
bUp               : BOOL;
bDwn              : BOOL;
udiSwiOvrTi       : UDINT;

bEn: Steht dieser Eingang auf FALSE, so ist der Baustein ohne Funktion. Im Positioniertelegramm stSunBld werden für Position und Winkel jeweils 0 ausgegeben - bManMod und bActv stehen jeweils auf FALSE. Das bedeutet für eine Beschaltung mit Prioritätssteuerung, dass eine andere Funktionalität die Jalousieansteuerung übernimmt. Eine direkte Beschaltung hingegen lässt die Jalousie direkt auf Position 0, also ganz nach oben fahren, da der Aktorbaustein das Bit bActv selbst nicht auswertet.

bUp: Befehlseingang Jalousie hoch.

bDwn: Befehlseingang Jalousie herunter.

udiSwiOvrTi: Zeit [ms] bis bei dauerhaft aktiviertem Befehlseingang der entsprechende Handbefehl im Positioniertelegramm stSunBld in Selbsthaltung geht.

VAR_OUTPUT

stSunBld   : ST_BA_SunBld;
bActv      : BOOL;

stSunBld: Positioniertelegramm, siehe ST_BA_SunBld.

bActv: Entspricht dem booleschen Wert bActv im Jalousie-Telegramm ST_BA_SunBld und dient zur reinen Anzeige, ob der Baustein ein aktives Telegramm sendet.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldTwiLgtAuto

Dieser Baustein steuert die Jalousie, sollte die Außenhelligkeit einen Grenzwert unterschritten haben.

Funktionsbeschreibung

Die Dämmerungsautomatik arbeitet mit einer Werte- und einer zeitlichen Hysterese: Unterschreitet der Außenhelligkeitswert lrBrtns [lux] für die Zeit udiActvDly [s] den Wert lrActvVal [lux], so ist der Baustein aktiv und wird die an den IN-Variablen angegebenen Jalousiepositionen lrPosTwiLgt (Höhe [%]) und lrAnglTwiLgt (Lamellenwinkel [°]) am Ausgang im Positioniertelegramm stSunBld bereitstellen. Überschreitet die Außenhelligkeit hingegen für die Zeit udiDctvDly [s] den Wert lrDctvVal [lux], so ist die Automatik nicht mehr aktiv. Der Aktiv-Merker im Positioniertelegramm stSunBld wird zurück und die Positionen für Höhe und Winkel auf "0" gesetzt. Eine Funktion niedrigerer Priorität kann dann die Steuerung übernehmen.

Ein-/Ausgänge

VAR_INPUT

bEn               : BOOL;
lrBrtns           : LREAL;
lrActvVal         : LREAL;
lrDctvVal         : LREAL;
udiActvDly        : UDINT;
udiDctvDly        : UDINT;
lrPosTwiLgt       : LREAL;
lrAnglTwiLgt      : LREAL;

bEn: Steht dieser Eingang auf FALSE, so ist der Baustein ohne Funktion. Im Positioniertelegramm stSunBld werden für Position und Winkel jeweils 0 ausgegeben und bActv steht auf FALSE. Das bedeutet, dass über die Prioritätssteuerung eine andere Funktionalität die Jalousieansteuerung übernimmt.

lrBrtns: Außenhelligkeit [lx].

lrActvVal: Aktivierungsgrenzwert [lx].

lrDctvVal: Deaktivierungsgrenzwert [lx].

udiActvDly: Aktivierungsverzögerung [s].

udiDctvDly: Deaktivierungsverzögerung [s].

lrPosTwiLgt: Höhenposition der Jalousie [%], sollte die Dämmerungsautomatik aktiv sein.

lrAnglTwiLgt: Lamellenwinkel der Jalousie [°], sollte die Dämmerungsautomatik aktiv sein.

VAR_OUTPUT

stSunBld       : ST_BA_SunBld;
bActv          : BOOL;
udiRemTiActv   : UINT;
udiRemTiDctv   : UINT;
bErr           : BOOL;
udiErrId       : UDINT;
udiErrArg      : UDINT;

stSunBld: Ausgabestruktur der Jalousiestellungen, siehe ST_BA_SunBld.

bActv : Entspricht dem booleschen Wert bActv im Jalousie-Telegramm ST_BA_SunBld und dient zur reinen Anzeige, ob der Baustein ein aktives Telegramm sendet.

udiRemTiActv: Zeigt die verbleibende Zeit an nach Unterschreitung des Schaltwertes lrActvVal bis zur Aktivierung der Automatik [s] an. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

udiRemTiDctv: Zeigt die verbleibende Zeit an nach Überschreitung des Schaltwertes lrDctvVal bis zur Abschaltung der Automatik [s] an. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Hinweis Sollte ein Fehler anstehen, so wird diese Automatik deaktiviert und Position und Winkel auf 0 gesetzt. Das bedeutet, dass bei Verwendung einer Prioritätssteuerung automatisch eine andere Funktion niedrigerer Priorität (siehe Übersicht) die Steuerung der Jalousie übernimmt. Bei direkter Beschaltung hingegen wird die Jalousie auf Position/Winkel 0 fahren.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunBldWthrPrtc

Der Witterungsschutz hat bei der Jalousiesteuerung die höchste Priorität (siehe Übersicht) und soll sicherstellen, dass die Jalousie weder durch Eis, noch durch Wind beschädigt wird.

Funktionsbeschreibung

Die Witterungsschutzautomatik hat die Aufgabe, die Jalousie vor zwei unmittelbar bevorstehenden Gefahren zu schützen und sie dafür in eine sichere Position zu fahren:

  • Vereisung: Eine bevorstehende Vereisung wird dadurch erkannt, dass während einer Niederschlagserkennung an bRainSns die gemessene Außentemperatur lrOtsT unterhalb des Frost-Grenzwertes lrFrstT liegt. Dieses Ereignis wird intern gespeichert und bleibt dann solange bestehen, bis sichergestellt ist, dass das Eis wieder abgetaut ist. Dazu muss die Außentemperatur den Frost-Grenzwert für die eingetragene Enteisungszeit udiDeiceTi [s] überschritten haben. Aus Sicherheitsgründen wird das Vereisungsereignis persistent, also über einen SPS-Ausfall hinweg gespeichert. Fällt die Steuerung also während einer Ver- bzw. Enteisungsperiode aus, so gilt die Jalousie nach Wiederanlauf der Steuerung als neu vereist und der Enteisungszeitmesser startet von Neuem.
  • Sturm: Liegt die gemessene Windgeschwindigkeit für die Zeit udiDlyStrmOn [s] über dem Wert lrWndSpdStrmOn, so wird davon ausgegangen, dass ein Sturm unmittelbar bevor steht. Erst wenn die Windgeschwindigkeit den Wert lrWndSpdStrmOff für die Zeit udiDlyStrmOff [s] unterschreitet, gilt der Sturm als abgeflaut und das Fahren der Jalousie als sicher. Aus Sicherheitsgründen wird auch das Sturm-Ereignis persistent gespeichert. Fällt die Steuerung also während eines Sturmes aus, so wird nach Wiederanlauf der Steuerung Abflau-Zeitgeber von Neuem gestartet.

In beiden Gefahr-Fällen wird die Jalousie in die Schutzposition gefahren die durch lrPosProt (Höhenposition in Prozent) und lrAnglProt (Lamellenwinkel [°]) vorgegeben wird.

Ein-/Ausgänge

VAR_INPUT

bEn             : BOOL;
lrWndSpd        : LREAL;
lrOtsT          : LREAL;
bRainSns        : BOOL;
lrFrstT         : LREAL;
lrWndSpdStrmOn  : LREAL;
lrWndSpdStrmOff : LREAL;
udiDeiceTi      : UINT;
udiDlyStrmOn    : UDINT;
udiDlyStrmOff   : UDINT;
lrPosProt       : LREAL;
lrAnglProt      : LREAL;

bEn: Steht dieser Eingang auf FALSE, so ist der Baustein ohne Funktion. Im Positioniertelegramm stSunBld werden für Position und Winkel jeweils 0 ausgegeben und bActv steht auf FALSE. Das bedeutet, dass über die Prioritätssteuerung eine andere Funktionalität die Jalousieansteuerung übernimmt.

lrWndSpd: Windgeschwindigkeit. Die Einheit der Eingabe ist beliebig, jedoch ist es wichtig, dass es keine Werte kleiner als 0 gibt, und die Werte mit zunehmender Geschwindigkeit größer werden.

lrOtsT: Außentemperatur [°C].

bRainSns: Eingang für einen Niederschlagssensor.

lrFrstT: Vereisungstemperatur-Grenzwert [°] Celsius. Dieser Wert darf nicht größer als 0 sein. Anderenfalls wird ein Fehler ausgegeben.

lrWndSpdStrmOn: Windgeschwindigkeits-Grenzwert zur Aktivierung des Sturmalarmes. Dieser Wert darf nicht kleiner als 0 sein und muss oberhalb des Wertes für die Deaktivierung liegen. Anderenfalls wird ein Fehler ausgegeben. Die Einheit der Eingabe muss die gleiche sein wie die des Einganges lrWndSpd. Ein Wert größer als dieser Grenzwert löst nach der eingetragenen Zeit udiDlyStrmOn den Alarm aus.

lrWndSpdStrmOff: Windgeschwindigkeits-Grenzwert zur Deaktivierung des Sturmalarmes. Dieser Wert darf nicht kleiner als 0 sein und muss unterhalb des Wertes für die Aktivierung liegen. Anderenfalls wird ein Fehler ausgegeben. Die Einheit der Eingabe muss die gleiche sein wie die des Einganges lrWndSpd. Ein Wert kleiner oder gleich diesem Grenzwert setzt nach der eingetragenen Zeit udiDlyStrmOff den Alarm zurück.

udiDeiceTi: Zeit zum Abtauen der Jalousie nach Vereisung [s]. Danach wird der Vereisungsalarm zurück gesetzt.

udiDlyStrmOn: Verzögerungszeit zur Auslösung des Sturmalarmes [s].

udiDlyStrmOff: Verzögerungszeit zum Rücksetzen des Sturmalarmes [s].

lrPosProt: Höhenposition der Jalousie [%] im Schutzfall.

lrAnglProt: Lamellenwinkel der Jalousie [°] im Schutzfall.

VAR_OUTPUT

stSunBld         : ST_BA_SunBld;
bActv            : BOOL;
bIceAlm          : BOOL;
udiRemTiIceAlm   : UDINT;
bStrmAlm         : BOOL;
udiRemTiStrmDetc : UDINT;
udiRemTiStrmAlm  : UDINT;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;

stSunBld: Ausgabestruktur der Jalousiestellungen, siehe ST_BA_SunBld.

bActv: Entspricht dem booleschen Wert bActv im Jalousie-Telegramm ST_BA_SunBld und dient zur reinen Anzeige, ob der Baustein ein aktives Telegramm sendet.

bIceAlm: Zeigt den Vereisungsalarm an.

udiRemTiIceAlm: Bei aufkommenden Vereisungsfall (bIceAlm=TRUE) wird dieser Sekundenzähler auf die Enteisungszeit gesetzt. Sobald die Temperatur über dem eingetragenen Frostpunkt (lrFrstT) liegt, werden hier die verbleibenden Sekunden bis zur Entwarnung (bIceAlm=FALSE) angezeigt. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

bStrmAlm: Zeigt den Sturmalarm an.

udiRemTiStrmDetc: Im unkritischen Fall zeigt dieser Sekundenzähler konstant die Alarmverzögerungszeit udiDlyStrmOn an. Liegt die gemessene Windstärke lrWndSpd über dem Aktivierungsgrenzwert lrWndSpdStrmOn, so werden die Sekunden bis zum Alarm herunter gezählt. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

udiRemTiStrmAlm: Sobald der Sturmalarm ausgelöst wird, zeigt dieser Sekundenzähler zunächst konstant die Deaktivierungsverzögerungszeit udiDlyStrmOff des Sturmalarmes an. Sinkt die gemessene Windstärke lrWndSpd unter den Deaktivierungsgrenzwert lrWndSpdStrmOff, so werden die Sekunden bis zur Entwarnung (bStrmAlm=FALSE) herunter gezählt. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Hinweis Sollte ein Fehler anstehen, so wird diese Automatik deaktiviert und Position und Winkel auf 0 gesetzt. Das bedeutet, dass bei Verwendung einer Prioritätssteuerung automatisch eine andere Funktion niedrigerer Priorität (siehe Übersicht) die Steuerung der Jalousie übernimmt. Bei direkter Beschaltung hingegen wird die Jalousie auf Position/Winkel 0 fahren.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SunPrtc

Baustein zur Blendschutzsteuerung mit Hilfe einer Lamellen-Jalousie.

Funktionsbeschreibung

Der Blendschutz wird durch die Variation des Lamellenwinkels und durch die Position der Jalousiehöhe realisiert.

Der Lamellenwinkel wird in Abhängigkeit des Sonnenstandes so eingestellt, dass direkte Blendung unterbunden, aber trotzdem ein maximaler Einfall natürlichen Lichts möglich ist.

Für das Variieren der Jalousiehöhe stehen drei verschieden Betriebsarten zur Verfügung.

  1. Die Jalousie fährt bei aktiven Sonnenschutz in eine fest vorgegebene Höhe. Der Wert für die Höhe wird mit der Variablen lrFixPos vorgegeben.
  2. Die Position der Jalousie wird in Abhängigkeit des Sonnenstandes variiert. Die Position wird in der Tabelle (stBldPosTab) vorgegeben. Siehe auch Beschreibung des FB_BA_BldPosEntry.
  3. Die höher der Jalousie wird anhand der Fenstergeometrie so berechnet, dass die Sonnenstrahlen bis zu einer vorgegebenen Tiefe in den Raum einfallen. Die Einfalltiefer der Sonnenstrahlen wird mit der Variablen lrMaxLgtIndc definiert.

Damit das Neupositionieren des Lamellenwinkels nicht zu häufig erfolgt, kann mittels der Variablen udiPosIntval eine Zeitintervall bestimmt werden, innerhalb dessen keine Anpassung des Lamellenwinkels erfolgt. Um trotdem eine Blendwirkung auszuschließen, wird der Winkel immer so weite geändert, dass er bis zum Ablauf des Zeitintervalls ausreicht.

Für die Positionierung der Jalousie und der Einstellung des Lamellenwinkels müssen die folgenden Bedingungen erfüllt sein.
1. Der Eingang bEn muss TRUE sein.
2. Die Sonne muss aufgegangen sein. (Elevation > 0)
3 Der Baustein ist richtig Parametriet (bErr=False)

Der Baustein FB_BA_SunPrtc ermöglicht einen Blendschutz auf 2 verschiede parallel arbeitende Weisen:

  • Lamellennachführung, so dass das direkt einfallende Licht durch den heruntergelassenen Teil der Jalousie gerade nicht mehr hindurch treten kann.
  • Steuerung der Jalousiehöhe, mit 3 verschiedenen Möglichkeiten ( Einstellbar über den Enumerator an ePosMod) :
    1) fixe Jalousiehöhe, d.h. keine Änderung (voreingestellt)
    2) Jalousiehöhe in Abhängigkeit des Sonnenstandes, definiert über eine Tabelle (stBldPosTab), siehe auch Beschreibung des FB_BA_BldPosEntry
    3) maximal erwünschter Lichteinfall

Anhand der eingetragenen Parameter, welche weiter unten beschrieben werden, errechnet der Baustein die notwendige Lamellenstellung und Jalousie-Position und übergibt sie in die Ausgabestruktur stSunBld. Die Ausgabe erfolgt freilich nicht kontinuierlich, da eine ständige Jalousiebewegung als störend empfunden werden würde. Am Eingang udiPosIntval lässt sich in Minuten einstellen, in welchem Abstand neue Positionswerte ausgegeben werden sollen.
Jedoch muss zwischen zwei Positionierzeitpunkten die Verschattungskriterien immer erfüllt sein: kein direktes Licht darf durch die Lamellen treten und der erwünschte Lichteinfall durch die Jalousiehöhe muss begrenzt bleiben, geht man zunächst davon aus, dass die Jalousienhöhe über den Modus "maximal erwünschter Lichteinfall" gesteuert wird. Daher werden intern zwei Jalousie- und Lamellenstellungen errechnet: die für den jetzigen und die für den nächsten Schaltpunkt. Diejenige Stellung, bei der die Jalousie mehr geschlossen ist, ist dann die gültige.

Die Positionierung in Intervallen beginnt genau dann, wenn folgende 3 Bedingungen erfüllt sind:

  • der Eingang bEn muss auf TRUE stehen.
  • der Baustein darf nicht durch falsche Parametrierung im Fehlerzustand sein (bErr=TRUE).
  • die Sonne muss aufgegangen sein, d.h. die Sonnenhöhe (Elevation) muss größer 0° sein. Hierbei handelt es sich um eine interne Sicherheitsabfrage, da die Begrenzung auf min. 0° vom Anwender eigentlich über die Programmierung des Einganges bEn erfolgen soll, siehe Übersicht Sonnenschutzautomatik (Verschattungskorrektur).

Sind diese 3 Bedingungen nicht erfüllt, so wird in der Positionierstruktur das Aktiv-Bit (bActv) auf FALSE, die Jalousiehöhe auf 0% und der Lamellenwinkel auf 0% gestellt.

Fehlerbehandlung

Folgende Fehleingaben werden erkannt:

Immer:

  • Die Dauer des Positionierintervalls ist gleich Null oder überschreitet 720 min.
  • Der eingetragene Längengrad ist nicht im gültigen Bereich von -180°..180°.
  • Der eingetragene Breitengrad ist nicht im gültigen Bereich von -90°..90°.
  • Der eingetragene Wert für die Fassadenneigung lrFcdAngl ist ausserhalb des gültigen Bereiches von -90°..90°.
  • Der Wert für den Lamellenabstand (lrLamDstc) ist größer oder gleich dem Wert für die Lamellenbreite (lrLamWdth). Dies stellt keine "gültige" Jalousie dar, da die Lamellen nicht vollständig schliessen könnten. Mathematisch gesehen würde dieses zu Fehlern führen.
  • Der eingetragene Wert für den Lamellenabstand lrLamDstc ist gleich Null.
  • Der eingetragene Wert für die Lamellenbreite lrLamWdth ist gleich Null.

Nur wenn Positionierung "fixe Jalousiehöhe" angewählt - ePosMod=ePosModFix:

  • Der eingetragene Wert für die fixe Jalousiehöhe (lrFixPos) ist größer als 100 oder kleiner als 0.

Nur wenn Positionierung "maximaler Lichteinfall" angewählt - ePosMod=ePosModMaxIndc:

  • Das Bit "Werte gültig" (bVld) in der Positioniertabelle stBldPosTab ist nicht gesetzt - ungültige Werte: siehe FB_BA_BldPosEntry.

Nur wenn Positionierung "maximaler Lichteinfall" angewählt - ePosMod=ePosModMaxIndc.

  • Der eingetragene Wert für die Fensterhöhe lrWdwHght ist kleiner oder gleich Null.
  • Der eingetragene Abstand Fensterunterkante zu Boden lrDstcWdwFlr ist kleiner Null.
  • Der eingetragene Wert für den maximal gewünschen Lichteinfall lrMaxLgtIndc ist kleiner oder gleich Null.

Ein-/Ausgänge

VAR_INPUT

bEn           : BOOL;
stUTC         : TIMESTRUCT;
udiPosIntval  : UDINT;
lrDegLngd     : LREAL;
lrDegLatd     : LREAL;
lrFcdOrtn     : LREAL;
lrFcdAngl     : LREAL;
lrLamWdth     : LREAL;
lrLamDstc     : LREAL;
lrFixPos      : LREAL;
lrMaxLgtIndc  : LREAL;
lrWdwHght     : LREAL;
lrDstcWdwFlr  : LREAL;
stBldPosTab   : ST_BA_BldPosTab;
ePosMod       : E_BA_PosMod;

bEn: Wenn dieser Eingang auf FALSE gesetzt wird, ist die Positionierung nicht aktiv, d.h. in der Positionier-Struktur stSunBld vom Typ ST_BA_SunBld wird das aktiv-Bit (bActv) zurückgesetzt und der Baustein selbst verharrt in einem Stillstands-Modus. Ist der Baustein hingegen aktiviert, so ist das aktiv-Bit auf TRUE und der Baustein gibt in der Positionierstruktur zu den entsprechenden Zeiten seine Stellwerte durch (rPos ,rAngl).

stUTC: Eingabe der aktuellen Uhrzeit als koordinierte Weltzeit (UTC, Universal Time Coordinated - im älteren Sprachgebrauch auch GMT, Greenwich-Mean-Time). Mit Hilfe des Bausteines FB_BA_GetTime kann diese Zeit aus einem Zielsystem gelesen werden.

udiPosIntval: Positionierintervall in Minuten - Zeitspanne zwischen zwei Ausgaben von Jalousiestellungen. Gültiger Bereich: 1min..720min.

lrDegLngd: Geographische Länge (Längengrad) [°]. Gültiger Bereich: -180°..180°.

lrDegLatd: Geographische Breite (Breitengrad) [°]. Gültiger Bereich: -90°..90°.

lrFcdOrtn: Fassadenausrichtung [°]:

Dabei gilt auf der Nordhalbkugel für die Fassadenausrichtung (Blick aus dem Fenster):

Blickrichtung | Fassadenausrichtung
Nord | β=0°
Ost | β=90°
Süd | β=180°
West | β=270°

Für die Südhalbkugel gilt hingegen:

Blickrichtung | Fassadenausrichtung
Süd | β=0°
Ost | β=90°
Nord | β=180°
West | β=270°

lrFcdAngl: Fassadenneigung [°]. Siehe Fassadenneigung.

lrLamWdth: Breite der Lamellen in mm, siehe Skizze.

lrLamDstc: Lamellenabstand in mm, siehe Skizze.

lrFixPos: Fixe (konstante) Jalousiehöhe [0..100%]. Gültig, wenn ePosMod = ePosModFix (siehe Enumerator E_BA_PosMod).

lrMaxLgtIndc: Maximal gewünschter Lichteinfall in mm gemessen ab Außenseite der Wand (siehe Höhenverstellung) Mit Hilfe der Parameter lrWdwHght und lrDstcWdwFlr wird in Abhängigkeit des Sonnenstandes errechnet, wie hoch die Jalousie stehen muss, damit der Lichteinfall den Wert lrMaxLgtIndc nicht überschreitet. Gültig, wenn ePosMod = ePosModeMaxIncidence (siehe Enumerator E_BA_PosMod).

lrWdwHght: Fensterhöhe in mm zur Errechnung des der Jalousiehöhe wenn der Modus des "Maximal gewünschter Lichteinfalls" gewählt ist.

lrDstcWdwFlr: Abstand Boden - Fenstersims in mm zur Errechnung des der Jalousiehöhe wenn der Modus des "Maximal gewünschter Lichteinfalls" gewählt ist.

stBldPosTab: Tabelle von 6 Stützpunkten, davon 4 parametrierbar, aus denen dann durch lineare Interpolation eine Jalousieposition in Abhängigkeit des Sonnenstandes gegeben wird. Gültig, wenn ePosMod = ePosModFix (siehe Enumerator E_BA_PosMod). Weitere Beschreibung siehe FB_BA_BldPosEntry.

ePosMod: Auswahl des Positioniermodus, siehe Enumerator E_BA_PosMod.

VAR_OUTPUT

stSunBld    : ST_BA_SunBld;
bActv       : BOOL;
bErr        : BOOL;
udiErrorId  : UDINT;
udiErrArg   : UDINT;

stSunBld: Ausgabestruktur der Jalousiestellungen, siehe ST_BA_SunBld

bActv: Der Baustein ist im aktiv-Zustand, das heißt, es liegt kein Fehler an, der Baustein ist freigegeben und der Sonnenstand befindet sich im eingetragenen Fassadenbereich (die Fassade wird beschienen).

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Hinweis Sollte ein Fehler anstehen, so wird diese Automatik deaktiviert und Position und Winkel auf 0 gesetzt. Das bedeutet, dass bei Verwendung einer Prioritätssteuerung automatisch eine andere Funktion niedrigerer Priorität (siehe Übersicht) die Steuerung der Jalousie übernimmt. Bei direkter Beschaltung hingegen wird die Jalousie auf Position/Winkel 0 fahren.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_LgtSwi

Schalt- und Dimmbaustein - Funktion für zwei Lichttaster.

Funktionsbeschreibung

Dieser Baustein ist ein kombinierter Schalter/Dimmer.

Für das zentrale Einschalten an bOn sind verschiedene Modi (eOnMod) definiert und über diesen Enumerator-Eingang wählbar:

  • eBA_ClMaxVal : Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Maximalwert gestellt.
  • eBA_ClMinVal : Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Minimalwert gestellt.
  • eBA_ClOnVal : Das Licht wird unmittelbar auf den am Eingang lrOnVal anstehenden Wert gestellt.
  • eBA_ClRstVal : Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Reset-Wert gestellt. Dies ist der Wert, der dort vor dem letzten Ausschalten gültig war. Anwendungsbeispiel: Wenn in einem Konferenzraum nach einer Präsentation das Licht wieder eingeschaltet wird.

Alle weiteren Befehle siehe unten.

Der Baustein sendet seine Kommandos über das Befehlstelegramm stLgtCmd.

Ein-/Ausgänge

VAR_INPUT

bSwi         : BOOL;
bSwiUp       : BOOL;
bSwiDwn      : BOOL;
udiSwiOvrTi  : UDINT;
bUp          : BOOL;
bDwn         : BOOL;
bOn          : BOOL;
bOff         : BOOL;
eOnMod       : E_BA_LgtOnMode;
lrOnValue    : LREAL;
bClMinVal    : BOOL;
bClMaxVal    : BOOL;
bSetValDct   : BOOL;
lrSetValDct  : LREAL;
lrActlLgtLvl : LREAL;

bSwi: Schaltereingang Ein/Aus, Auf-Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand aus oder ein. Ein langer Tastendruck dimmt das Licht abwechselnd auf oder ab. Das Aufdimmen endet bei Erreichen des Maximalwertes, das Abdimmen bei Erreichen des Minimalwertes. Eine automatische Dimmrichtungsumkehr erfolgt nicht. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiUp: Schaltereingang Ein/Aus, Aufdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand aus oder ein. Ein langer Tastendruck dimmt das Licht auf. Das Aufdimmen endet bei Erreichen des Maximalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiDwn: Schaltereingang Ein/Aus, Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand aus oder ein. Ein langer Tastendruck dimmt das Licht ab. Das Abdimmen endet bei Erreichen des Minimalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Maximalwert geschaltet und dann abgedimmt.

udiSwiOvrTi: Umschaltzeit [ms] zwischen Tastendruckerkennung kurz und lang und damit zwischen Schalten und Dimmen.

bUp: Aufdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bDwn: Abdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bOn: zentrales Einschalten. Der Einschaltwert richtet sich nach der Auswahl an eOnMod, s.u..

bOff: zentrales Ausschalten.

eOnMod: Auswahl Einschaltwert (E_BA_LgtOnMode).

lrOnVal: Einschaltwert, wenn ein zentraler Einschaltbefehl über bOn kommt und an eOnMod der Modus eBA_ClOnVal angewählt ist.

bClMinVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Minimalwert zu schalten.

bClMaxVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Maximalwert zu schalten.

bSetValDct/lrSetValDct: Der Lichtaktor-Baustein bekommt den Befehl auf den Wert lrSetValDct zu schalten. Hinweis: dieser Wert wird am Lichtaktor noch mit dem Wert lrLgtOffset beaufschlagt.

lrActlLgtLvl: Dieser Eingang dient zur Umschalt- (Toggle-) Beurteilung. Bei einer Gruppe von Lampen empfiehlt es sich entweder den Mittelwert aller Aktoren oder den Lichtwert des Gruppenmasters anzulegen.

VAR_OUTPUT

stLgtCmd : ST_BA_LgtCmd;

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_CnstLgtCtrl

Konstantlichtregelung für einen Raum.

Funktionsbeschreibung

Dieser Baustein ist ein kombinierter Schalter/Dimmer mit einem zusätzlichen Konstantlichtregel-Modus. Die Konstantlichtregelung arbeitet intern mit einem PI-Regler.

Für das zentrale Einschalten an bOn sind verschiedene Modi (eOnMod) definiert und über diesen Enumerator-Eingang wählbar:

  • eBA_ClMaxVal : Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Maximalwert gestellt.
  • eBA_ClMinVal : Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Minimalwert gestellt.
  • eBA_ClOnVal : Das Licht wird unmittelbar auf den am Eingang lrOnVal anstehenden Wert gestellt.
  • eBA_ClRstVal := Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Reset-Wert gestellt. Dies ist der Wert, der dort vor dem letzten Ausschalten gültig war. Anwendungsbeispiel: Wenn in einem Konferenzraum nach einer Präsentation das Licht wieder eingeschaltet wird.

Alle weiteren Befehle siehe unten.

Der Baustein sendet seine Kommandos über das Befehlstelegramm stLgtCmd.

Ein-/Ausgänge

VAR_INPUT

bEnCtrl        : BOOL;
eSttUpCtrlMod  : E_BA_CtrlSttupMod;
lrSttUpCtrlVal : LREAL;
lrSp           : LREAL;
lrContrVar     : LREAL;
lrKp           : LREAL;
udiTn          : UDINT;
lrNz           : LREAL;
bSwi           : BOOL;
bSwiUp         : BOOL;
bSwiDwn        : BOOL;
udiSwiOvrTi    : UDINT;
bUp            : BOOL;
bDwn           : BOOL;
bOn            : BOOL;
bOff           : BOOL;
eOnMod         : E_BA_LgtOnMode;
lrOnValue      : LREAL;
bClMinVal      : BOOL;
bClMaxVal      : BOOL;
bSetValDct     : BOOL;
lrSetValDct    : LREAL;
lrActlLgtLvl   : LREAL;

bEnCtrl: Eine positive Flanke an diesem Eingang schaltet die Regelung aktiv. Himweis: werden die Schalteingänge bSwi...bSetValDct betätigt, so wird die Regelung wieder deaktiviert, egal ob am Eingang bEnCtrl ein TRUE-Signal anliegt.

eSttUpCtrlMod/lrSttUpCtrlVal: Gibt an, mit welchem Wert der Regler aufstarten soll: siehe E_BA_CtrlSttupMod.

lrSp: Sollwert-Eingang [lx].

lrContrVar: Istwert-Eingang [lx].

lrKp: Verstärkungsfaktor des internen PI-Reglers.

udiTn: Nachstellzeit (Integrationszeit) des internen PI-Reglers [ms].

lrNz: Neutrale Zone: Ist die Absolutwert der Regelabweichung kleiner als lrNz/2, so stoppt der Regler intern seine Stellgrößenberechnung, bleibt jedoch weiterhin aktiv.

bSwi: Schaltereingang Ein/Aus, Auf-Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand aus oder ein. Ein langer Tastendruck dimmt das Licht abwechselnd auf oder ab. Das Aufdimmen endet bei Erreichen des Maximalwertes, das Abdimmen bei Erreichen des Minimalwertes. Eine automatische Dimmrichtungsumkehr erfolgt nicht. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiUp: Schaltereingang Ein/Aus, Aufdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand aus oder ein. Ein langer Tastendruck dimmt das Licht auf. Das Aufdimmen endet bei Erreichen des Maximalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiDwn: Schaltereingang Ein/Aus, Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand aus oder ein. Ein langer Tastendruck dimmt das Licht ab. Das Abdimmen endet bei Erreichen des Minimalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Maximalwert geschaltet und dann abgedimmt.

udiSwiOvrTi: Umschaltzeit [ms] zwischen Tastendruckerkennung kurz und lang und damit zwischen Schalten und Dimmen.

bUp: Aufdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bDwn: Abdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bOn: zentrales Einschalten. Der Einschaltwert richtet sich nach der Auswahl an eOnMod, s.u..

bOff: zentrales Ausschalten.

eOnMod: Auswahl Einschaltwert (E_BA_LgtOnMode).

lrOnVal: Einschaltwert, wenn ein zentraler Einschaltbefehl über bOn kommt und an eOnMod der Modus eBA_ClOnVal angewählt ist.

bClMinVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Minimalwert zu schalten.

bClMaxVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Maximalwert zu schalten.

bSetValDct/lrSetValDct: Der Lichtaktor-Baustein bekommt den Befehl auf den Wert lrSetValDct zu schalten. Hinweis: dieser Wert wird am Lichtaktor noch mit dem Wert lrLgtOffset beaufschlagt.

lrActlLgtLvl: Dieser Eingang dient zur Umschalt- (Toggle-) Beurteilung. Bei einer Gruppe von Lampen empfiehlt es sich entweder den Mittelwert aller Aktoren oder den Lichtwert des Gruppenmasters anzulegen.

VAR_OUTPUT

bCtrlActv : BOOL;
lrCtrlVal : LREAL;
stLgtCmd  : ST_BA_LgtCmd;

bCtrlActv: Die Konstantlichtregelung ist aktiv.

lrCtrlVal: Im Befehlstelegramm stLgtCmd (vom Typ ST_BA_LgtCmd) aktuell ausgegebener Wert.

lrSyncVal: Zur Kontrolle : Durch den Modus eSttUpCtrlMod (siehe Eingänge) aktuell gewählter Aufstartwert.

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd..

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_AnlgLgtActr

Funktionsbaustein zum Ansteuern eines analogen Lichtaktors, beispielsweise über eine KL2751.

Funktionsbeschreibung

Der Baustein empfängt seine Kommandos über das Befehlstelegramm stLgtCmd.
Als konventioneller Analog-Ansteuerungsbaustein besitzt er Lichtwert-Ausgänge als LREAL-Wert [0..100%], als INT-Wert [0..32767] und als booleschen Wert (EIN/AUS), der bei bestimmten Lampenarten das Schalten eines AUS-Relais ermöglicht.

Ein-/Ausgänge

VAR_INPUT

lrSttupCtrlVal : LREAL;
lrMinCtrlVal   : LREAL;
lrMaxCtrlVal   : LREAL;
lrLgtOffset    : LREAL;
udiDimTi       : UDINT;
udiBlinkTi     : UDINT;
udiOffDly      : UDINT;
stLgtCmd       : ST_BA_LgtCmd;

lrSttupCtrlVal : Lichtwert nach Neustart. [lrMinCtrlVal..lrMaxCtrlVal]. Dieser Wert wird nur im ersten Aufruf-Zyklus übernommen.

lrMinCtrlVal: Minimaler Lichtausgabewert. [1..lrMaxCtrlVal]. Eine Änderung dieses Wertes wirkt unmittelbar.

lrMaxCtrlVal: Maximaler Lichtausgabewert. [lrMinCtrlVal..100%]. Eine Änderung dieses Wertes wirkt unmittelbar.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dieser Effekt ist nur in Verbindung mit dem Befehl bSetCtrlValDct der Kommandostruktur stLgtCmd wirksam. In diesem Fall wird der Lichtaktor auf den Wert lrSetCtrlValDct+lrLgtOffset gesetzt. Derr Wert kann dabei nicht den eingestellten Maximalwert überschreiten bzw. den Minimalwert unterschreiten. Ein Abschalten jedoch ist möglich, wenn lrSetCtrlValDct+lrLgtOffset kleiner oder gleich Null ist.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird.

udiBlinkTi / udiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet, kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit udiBlinkTi [ms] wird das Licht ausgeschaltet und danach für die Zeit udiOffDly [ms] noch einmal eingeschaltet.

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd.

VAR_OUTPUT

lrActlLgtLvl    : LREAL;
iActlLgtLvl     : INT;
bLgt            : BOOL;
lrActlMinCtrlVal: LREAL;
bMinCtrlValRchd : BOOL;
lrActlMaxCtrlVal: LREAL;
bMaxCtrlValRchd : BOOL;
lrRstVal        : LREAL;
bErr            : BOOL;
udiErrId        : UDINT;
udiErrArg       : UDINT;

lrActlLgtLvl: Aktuelle Stellgröße [0..100%]. Berechnung siehe unten.

iActlLgtLvl: Aktuelle Stellgröße [0..32767].

bLgt: Aktuelle Stellgröße (EIN / AUS).

lrActlMinCtrlVal: Aktueller Min-Wert. (Über Eingang oder Kommandostruktur beschrieben).

bMinCtrlValRchd: Der Aktor hat seinen Minimalwert erreicht.

lrActlMaxCtrlVal: Aktueller Max-Wert. (Über Eingang oder Kommandostruktur beschrieben).

bMaxCtrlValRchd: Der Aktor hat seinen Maximalwert erreicht.

lrRstVal: Letzter Wert vor Aus als Wiedereinschaltwert, d.h. vor dem Ausschalten wird der aktuelle Stellwert hier gespeichert.

bErr: Lichtbaustein im Fehlerzustand.

udiErrId / udiErrArg: Fehlernummer und -argument zur Bestimmung der Ursache, siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_DALILgtActr

Funktionsbaustein zum Ansteuern eines DALI-Lichtaktors.

Funktionsbeschreibung

Der Baustein empfängt seine Kommandos über das Befehlstelegramm stLgtCmd.
Als Licht-Ansteuerungsbaustein für das DALI-Subsystem besitzt er als IN-OUT-Variable eine Referenz auf die Befehlsspeicher-Struktur stDALICmdBuf.

Ein-/Ausgänge

VAR_INPUT

byShrtAdr          : BYTE;
byGrpAdr           : BYTE;
eMod               : BOOL;
lrSttupCtrlVal     : LREAL;
lrMinCtrlVal       : LREAL;
lrMaxCtrlVal       : LREAL;
lrLgtOffset        : LREAL;
uiDimTi            : UINT;
uiBlinkTi          : UINT;
uiOffDly           : UINT;
uiPollActLgtLvl    : UINT;
bReinit            : BOOL;
stLgtCmd           : ST_BA_LgtCmd;

byShrtAdr : Kurzadresse des anzusprechenden DALI-Vorschaltgerätes. Diese Adresse muss im gültigen Bereich von 0..63 sein, da der Baustein ein vorhandenes Vorschaltgerät braucht um die Status abzufragen. Bei einer ungültigen Adresse wird der Baustein nicht ausgeführt und ein entsprechender Fehlercode ausgegeben. Die Kurzadresse bezieht sich auf die DALI-Befehle, welche sich durch die Eingänge an diesem Baustein ergeben:

  • lrSttupCtrlVal (Lichtwert nach Neustart)
  • lrMinCtrlVal (Setzen minimaler Lichtausgabewert)
  • lrMaxCtrlVal (Setzen maximaler Lichtausgabewert)
  • uiDimTi (Definieren der Dimmrampe -> Änderung FadeRate)

byGrpAdr: Gruppenadresse. Wird nur berücksichtigt, wenn das Vorschaltgerät durch diesen Baustein als Master betrieben wird: eMod=eBA_DALIModGrpMst oder eMod=eBA_DALIModGrpSgl.

eMod: Auswahl über das Einzel-/Gruppen bzw. Master-/Slaveverhalten des Bausteins, siehe E_BA_DALIMod .

lrSttupCtrlVal : Lichtwert nach Neustart.

lrMinCtrlVal: Minimaler Lichtausgabewert. [0..100%]. Eine Änderung am Bausteineingang bewirkt eine Umparametrierung (Kurzadresse) im Vorschaltgerät. Dort wird es nach unten hin auf den physikalischen Min-Wert und nach oben hin auf den Maximalwert begrenzt.

lrMaxCtrlVal: Maximaler Lichtausgabewert. [0..100%]. Eine Änderung am Bausteineingang bewirkt eine Umparametrierung (Kurzadresse) im Vorschaltgerät. Dort wird es nach unten hin auf den physikalischen Min-Wert begrenzt.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dies kann in einer Lampen-Gruppenschaltung bei den Leuchten sinnvoll sein, die in der Nähe von Tageslicht liegen und weniger hell sein müssen, als die Lampen, welche die dunklen Bereiche des Raumes ausleuchten. Der Lichtwert kann durch diesen Parameter jedoch nicht über lrMaxCtrlVal oder unter lrMinCtrlVal gesteuert werden.
Dieser Offset wirkt sich nur auf Befehle aus, welche über die Kommandostruktur als bSetCtrlValDct an den Baustein gelangen.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird. Wird bausteinintern auf eine DALI-FadeRate umgerechnet und im Vorschaltgerät abgespeichert.

uiBlinkTi / uiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit uiBlinkTi [s] wird das Licht ausgeschaltet und danach für die Zeit uiOffDly [s] noch einmal eingeschaltet.

uiPollActLgtLvl: Zykluszeit [s], mit der im Hintergrund der aktuelle Istwert (ACTUAL DIM LEVEL) ausgelesen wird. Damit das Dimmen der Lampen nicht gestört wird, wird das Auslesen immer in der niedrigsten Priorität durchgeführt. Wird der Wert auf 0 gesetzt, so wird das Auslesen gesperrt. Zusätzlich zum aktuellen Lichtwert wird auch das Statusbyte des Vorschaltgerätes ausgelesen und an den Ausgang byDALIDevSta geschrieben.

bReInit: Flankengesteuerter Eingang: startet die Initialisierung des Bausteines erneut.

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd..

VAR_OUTPUT

lrActlLgtLvl     : LREAL;
byActlLgtLvl     : BYTE;
bLgt             : BOOL;
lrActlMinCtrlVal : LREAL;
bMinCtrlValRchd  : BOOL;
lrActlMaxCtrlVal : LREAL;
bMaxCtrlValRchd  : BOOL;
lrRstVal         : LREAL;
byActlFadeRate   : BYTE;
byPhysMinVal     : BYTE;
byActlMinCtrlVal : BYTE;
byActlMaxCtrlVal : BYTE;
bInitDevice      : BOOL;
bBlinkSeqStarted : BOOL;
bActionBusy      : BOOL;
bErr             : BOOL;
udiErrId         : UDINT;
udiErrArg        : UDINT;
byDALIDevSta     : BYTE;

lrActlLgtLvl: Aktueller Lichtausgabewert [0..100%].

byActlLgtLvl: Aktueller Lichtausgabewert [0..254].

bLgt: Licht ist ein- oder ausgeschaltet.

lrActlMinCtrlVal: Aktuell gültiger Minimalwert. Die Ausgabe dieses Wertes wird nur in der Initialisierungsphase des Bausteines und damit des betreffenden Vorschaltgerätes durch eine QueryMinLevel-Abfrage verifiziert. Im weiteren Verlauf wird der Wert an diesem Ausgang ausgegeben, der über den Bausteineingang bzw. über die Kommandostruktur in das Vorschaltgerät einprogrammiert wird. In diesem kann eine Begrenzung auf den physikalischen Min-Wert oder auf den Max-Wert stattfinden.

bMinCtrlValRchd: Der Aktor hat seinen Minimalwert erreicht.

lrActlMaxCtrlVal: Aktuell gültiger Maximalwert. Die Ausgabe dieses Wertes wird nur in der Initialisierungsphase des Bausteines und damit des betreffenden Vorschaltgerätes durch eine QueryMinLevel-Abfrage verifiziert. Im weiteren Verlauf wird der Wert an diesem Ausgang ausgegeben, der über den Bausteineingang bzw. über die Kommandostruktur in das Vorschaltgerät einprogrammiert wird. In diesem kann eine Begrenzung auf den Min-Wert oder auf 100% stattfinden.

bMaxCtrlValRchd: Der Aktor hat seinen Maximalwert erreicht.

lrRstVal: In dieser Variable wir der Lichtwert vor Ausschalten gesichert. Über den Befehl bClRstVal in der Kommandostruktur kann dieser Wert wieder hergestellt werden. Anwendungsbeispiel: Wenn in einem Konferenzraum nach einer Präsentation das Licht wieder eingeschaltet wird.

byActlFadeRate: Aktuell gültige DALI-FadeRate, welche sich aus der Dimmzeit (Eingang uiDimTi) ergibt.

byPhysMinVal: Während der Initialisierungsphase des Bausteines ausgelesener physikalischer Minimalwert [1..254].

byActlMinCtrlVal: siehe lrActlMinCtrlVal. Von [0..100%] auf den Wertebereich von [0..254] umgerechnet.

byActlMaxCtrlVal: siehe lrActlMaxCtrlVal. Von [0..100%] auf den Wertebereich von [0..254] umgerechnet.

bInitDevice: Lichtbaustein in der Initialisierungsphase: Es werden folgende Aktionen ausgeführt:

  • Die am Eingang anliegende Lichtrampe (uiDimTi) wird als DALI-FadeRate in das Vorschaltgerät (Kurzadresse) einprogrammiert.
  • Der am Eingang anliegende Mindestwert (lrMinCtrlVal) wird als DALI-MinValue in das Vorschaltgerät (Kurzadresse) einprogrammiert.
  • Der am Eingang anliegende Maximalwert (lrMaxCtrlVal) wird als DALI-MaxValue in das Vorschaltgerät (Kurzadresse) einprogrammiert.
  • Der physikalische Mindestwert des DALI-Vorschaltgerätes wird gelesen und am Bausteinausgang ausgegeben.
  • Der tatsächlich gültige Mindestwert des DALI-Vorschaltgerätes wird gelesen und am Bausteinausgang ausgegeben.
  • Der tatsächlich gültige Maximalwert des DALI-Vorschaltgerätes wird gelesen und am Bausteinausgang ausgegeben.
  • Das Vorschaltgerät (Kurzadresse) wird auf den am Eingang anliegende Startwert (lrSttupCtrlVal) gesetzt.
  • Der tatsächlich gültige Lichtausgabewert des DALI-Vorschaltgerätes wird gelesen und am Bausteinausgang ausgegeben.

bBlinkSeqStarted: Die Blinksequenz wurde gestartet.

bActionBusy: Ein DALI-Befehl wird ausgeführt.

bErr: Lichtbaustein im Fehlerzustand.

udiErrId / udiErrArg: Fehlernummer und -argument zur Bestimmung der Ursache, siehe Fehlercodes.

byDALIDevSta: Statusbyte des DALI-Vorschaltgerätes. Wird zusammen mit der automatischen Abfrage des Lichtwertes im Hintergrund ausgelesen, siehe Eingang uiPollActLgtLvl.

VAR_IN_OUT

stDALICmdBuf : ST_DALIV2CommandBuffer;

stDALICmdBuf: Referenz auf die Befehlsspeicher-Struktur stDALICmdBuf.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBASubsystems-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_Blink

Einfacher Oszillator-Baustein.

Funktionsbeschreibung

Dieser Baustein ist ein Oszillator mit einstellbarer Puls- und Pausenzeit, udiTiOn und udiTiOff [s]. Er wird mit einem TRUE-Signal an bEn freigegeben und beginnt mit der Puls-Phase.

udiTiNextSwi ist ein Countdown [s] zum nächsten Wechsel von bQ.

Ein-Ausgänge

VAR_INPUT

bEn         : BOOL;
udiTiOn     : UDINT;
udiTiOff    : UDINT;

bEn: Bausteinfreigabe.

udiTiOn: Puls-Zeit [s].

udiTiOff: Pausenzeit [s].

VAR_OUTPUT

bQ            : BOOL;
udiTiNextSwi  : UDINT;

bQ: Oszillatorausgang.

udiTiNextSwi: Countdown bis zum nächsten Wechsel von bQ [s].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_CnvtTiSt

Zusammenfügen einer Zeitstruktur.

Funktionsbeschreibung

Mit dem Funktionsbaustein FB_BA_CnvtTiSt können die verschiedenen Bestandteile einer Zeitstruktur zu dieser selbst zusammen gefasst werden.
Hinweis: Der Baustein verfügt über keine Überprüfung fehlerhafter Eingaben, etwa eine Stundeneingabe von 99, da diese Überprüfung sinnvollerweise in den angeschlossenen Bausteinen erfolgt, die ihrerseits die Zeitstruktur ohnehin überprüfen müssen. Die zulässigen Grenzen werden hier jedoch bei der Variablenerläuterung aufgezeigt.

VAR_INPUT

wYear         : WORD;
wMonth        : WORD;
wDay          : WORD;
wHour         : WORD;
wMinute       : WORD;
wSecond       : WORD;
wMilliseconds : WORD;

wYear: Das Jahr (1970..2106).

wMonth: Der Monat (1..12).

wDay: Der Tag im Monat (1..31).

wHour: Die Stunde (0..23).

wMinute: Die Minuten (0..59).

wSecond s: Die Sekunden (0..59).

wMillisecond: Die Millisekunden (0..999).

VAR_OUTPUT

stTi      : TIMESTRUCT;

stTi: Ausgabe: Zeitstruktur

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_ExtTiSt

Zeit-Struktur-Auflösung.

Funktionsbeschreibung

Der Funktionsbaustein FB_BA_ExtTiSt löst eine Zeitstruktur in die verschiedenen Bestandteile auf, um sie so etwa für Zeitbedingungen nutzbar zu machen.

Ein-/Ausgänge

VAR_INPUT

stTi      : TIMESTRUCT;

stTi: Eingabe: Zeitstruktur

VAR_OUTPUT

wYear         : WORD;
wMonth        : WORD;
wDay          : WORD;
wHour         : WORD;
wMinute       : WORD;
wSecond       : WORD;
wMilliseconds : WORD;

wYear: Das Jahr (1970..2106).

wMonth: Der Monat (1..12).

wDay: Der Tag im Monat (1..31).

wHour: Die Stunde (0..23).

wMinute: Die Minuten (0..59).

wSecond ys: Die Sekunden (0..59).

wMillisecond: Die Millisekunden (0..999).

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_GetTime

Systemzeit auslesen.

Funktionsbeschreibung

Mit diesem Funktionsbaustein kann eine interne Uhr (Real Time Clock RTC) in der TwinCAT SPS realisiert werden. Die RTC-Uhr wird mit der Freigabe des Funktionsbausteines über bEn mit der aktuellen NT-Systemzeit initialisiert. Es wird ein Systemtakt der CPU benutzt um die aktuelle RTC-Zeit zu berechnen. Der Funktionsbaustein muss in jedem Zyklus der SPS einmal aufgerufen werden, damit die aktuelle Zeit berechnet werden kann. Intern wird in dem Funktionsbaustein eine Instanz der Funktionsbausteine NT_GetTime, FB_GetTimeZoneInformation und RTC_EX2 aufgerufen. Die Ausgabe der Zeit erfolgt an den Ausgängen stSysTi für die gelesene Systemzeit und stUtcTi für die koordinierte Weltzeit (Coordinated Universal Time). Diese wird intern aus der Systemzeit und der Zeitzone ermittelt. Ist die Systemzeit und/oder die Zeitzone fehlerhaft eingegeben worden, so wird auch die UTC-Zeit nicht richtig sein.

Die Systemzeit wird über den einzustellenden Timer (udiUpdRTC [sec]) zyklisch ausgelesen und damit die interne RTC-Uhr synchronisiert. In demselben Zyklus werden auch die Zeitinformationen (Zeitzone, Zeitverschiebung zu UTC und Sommer-/ Winterzeit) ausgelesen. Der Ausgang udiRemTiUpd zeigt die verbleibenden Sekunden bis zum nächsten Lesezyklus. Die ausgegebenen Zeitstrukturen stSysTi und stUtcTi können mit Hilfe des Bausteines FB_BA_ExtTiSt weiter in die Bestandteile - Tag, Monat, Stunde, Minute etc. - aufgelöst werden.

Hinweise zum Lese-/ Wartezyklus 		Während des Lesezyklus fallen die Ausgänge bRdySysTi und bRdyTiZoInfo auf FALSE, der Enumerator eTiZId zeigt 0 = eTimeZoneID_Unknown. Wurde erfolgreich gelesen, so gehen die Ausgänge wieder auf TRUE bzw. zeigen die jeweilige Information Sommer- oder Winterzeit an, sofern sie verfügbar ist. War das Lesen nicht erfolgreich - es wird intern 5s lang auf eine Antwort gewartet - so bleiben die Ausgänge auf FALSE bzw. 0 stehen und ein erneuter Wartezyklus bis zum nächsten Lesezyklus wird gestartet. Im Fehlerfall wird die interne RTC-Uhr zwar nicht synchronisiert und kann immer noch eine richtige Zeit anzeigen, die Zeitinformationen jedoch können fehlerhaft sein und damit auch die UTC-Zeit. Fehler während des Lesezyklus schlagen sich in jedem Fall in der Anzeige an bErr und udiErrId / udiErrArg nieder.
Der Countdown-Ausgang wird erst dann neu gestartet, wenn der Wartezyklus beginnt.

Ein-Ausgänge

VAR_INPUT

bEn       : BOOL;
sNetId    : T_AmsNetId;;
udiUpdRtc : UDINT;
bUpdRtc   : BOOL;

bEn: Freigabe des Bausteins. Ist bEn = TRUE, so wird die RTC-Uhr mit der NT-Systemzeit initialisiert.

sNetId : Hier kann die AmsNetId des TwinCAT-Rechners angegeben werden dessen NT-Systemzeit als Zeitbasis gelesen werden soll. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

udiUpdRtc: Zeitangabe [s], mit der die RTC-Uhr mit der NT-Systemzeit regelmäßig synchronisiert wird. Diese Zeitangabe Dieser Wert wird intern auf ein Minimum von 5s begrenzt, um die Abarbeitung der internen Bausteine zu gewährleisten.

bUpdRtc: Parallel zu der Zeitangabe tGetSystemTime kann die RTC-Uhr über eine positive Flanke an diesem Eingang synchronisiert werden.

VAR_OUTPUT

bRdySysTi    : BOOL;
bRdyTiZoInfo : BOOL;
bRdyRTC      : BOOL;
udiRemTiUpd  : UDINT;
stSysTi      : TIMESTRUCT;
stUTC        : TIMESTRUCT;
dtSysTi      : DT;
dtUTC        : DT;
eTiZId       : E_TimeZoneID;
bErr         : BOOL;
udiErrId     : UDINT;
udiErrArg    : UDINT;

bRdySysTi: Die Systemzeit wurde erfolgreich aus dem Zielsystem gelesen.

bRdyTiZoInfo: Die zusätzlichen Zeitinformationen (Zeitzone, Zeitverschiebung zu UTC und Sommer-/ Winterzeit) wurden erfolgreich gelesen.

bRdyRTC: Wurde der Funktionsbaustein mindestens ein Mal initialisiert, so wird dieser Ausgang gesetzt. Ist dieser Ausgang gesetzt, dann sind die Werte für das Datum, Uhrzeit und Millisekunden an den Ausgängen gültig.

udiRemTiUpd: Countdown zur nächsten Synchronisation bzw. Aktualisierung der Zeitinformationen.

stSysTi: Systemzeit des ausgelesenen Zielsystems. Die Zeitstruktur kann mit Hilfe des Bausteines FB_BA_ExtTiSt weiter in die Bestandteile - Tag, Monat, Stunde, Minute etc. - aufgelöst werden. Hinweis: Ist der Baustein nicht aktiviert (bEn=FALSE), so zeigen der Ausgang stSysTi in seinen Teilelementen (Tag Monat, etc.) jeweils 0 an.

stUTC: Koordinierte Weltzeit. Diese wird intern aus der Systemzeit und den gelesenen Zeitinformationen des Zielsystems ermittelt. Die Zeitstruktur kann mit Hilfe des Bausteines FB_BA_ExtTiSt weiter in die Bestandteile - Tag, Monat, Stunde, Minute etc. - aufgelöst werden. Hinweis: Ist der Baustein nicht aktiviert (bEn=FALSE), so zeigen der Ausgang stUTC in seinen Teilelementen (Tag Monat, etc.) jeweils 0 an.

dtSysTi / dtUTC: Wie stSysTi / stUTC, jedoch im DATE-AND-TIME-Format: Jahr-Monat-Tag-Stunden-Minuten-Sekunden. Hinweis: Ist der Baustein nicht aktiviert (bEn=FALSE), so zeigen die Ausgänge dtSysTi und dtUTC jeweils DT#1970-01-01-00:00 an, da dies die Untergrenze ist und es den Nullen in der Strukturdarstellung von stSysTi / stUTC entspricht.

eTiZId: Enumerator zur Sommer-/ Winterzeitinformation.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


FB_BA_SetTime

Systemzeit setzen.

Funktionsbeschreibung

Mit dem Funktionsbaustein FB_BA_SetTime kann die lokale NT-Systemzeit und das Datum eines TwinCAT-Systems gesetzt werden (die lokale NT-Systemzeit wird in der Taskleiste eingeblendet). Die Systemzeit wird über die Struktur stSysTi vorgegeben.
Intern wird in dem Funktionsbaustein eine Instanz des Funktionsbausteins NT_SetLocalTime aus der TcUtilities-Bibliothek aufgerufen.

Hinweis Die lokale NT-Systemzeit können Sie auch mit der Hilfe des SNTP-Protokolls mit einer Referenzzeit synchronisieren. Mehr Informationen dazu finden Sie im Beckhoff Information System unter: Beckhoff Information System > Embedded-PC > Betriebssysteme > CE > SNTP: Simple Network Time Protocol

Ein-/Ausgänge

VAR_INPUT

bSet         : BOOL;
sNetId       : T_AmsNetId;
stSysTi      : TIMESTRUCT;
udiTiOut     : UDINT;

bSet: Aktivierung des Funktionsbausteins mit einer steigenden Flanke.

sNetId: Hier kann die AmsNetId des TwinCAT-Rechners angegeben werden dessen lokale NT-Systemzeit gesetzt werden soll. Für den lokalen Rechner kann auch ein Leerstring sNetId := ''; angegeben werden.

stS ysTi Struktur mit der neuen lokalen NT-Systemzeit. Ist die Zeit als Struktur nicht vorhanden, so empfiehlt sich die Verwendung des Bausteines FB_BA_CnvtTiSt, welcher die Teilvariablen von Datum und Uhrzeit in einer Struktur zusammen führt.

udiTiOut: Gibt die Timeout-Zeit [s] an, die bei der Ausführung nicht überschritten werden darf.

VAR_OUTPUT

bBusy                   : BOOL;
bError                  : BOOL;
udiErrorId              : UDINT;
bInvalidParameter       : BOOL;

bBusy: Bei der Aktivierung des Funktionsbausteins über eine steigende Flanke an bSetLocalTime wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError: Sollte ein Fehler bei der Übertragung der NT-Systemzeit erfolgen, dann wird dieser Ausgang gesetzt. bError wird mit der Aktivierung des Funktionsbaustein über die Eingangsvariable bSetLocalTime zurück gesetzt.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn entweder die zu übertragene Systemzeit fehlerhaft ist, siehe unten oder aber ein ADS-Fehler in der Übertragung stattfindet. Beide Fehlerarten schlagen sich in einer eindeutigen Beschreibung der Ausgangsvariablen udiErrId / udiErrArg nieder.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Grenzen der Zeitvorgabe

Die angelegte Zeitstruktur stSysTi wird bausteinintern auf Grenzen geprüft:

Jahr: 1970..2106 - dieser Bereich bezieht sich auf den maximal darstellbaren Jahres-Zeitbereich im TWINCat-System

Monat: 1..12

Monatstag: 1..28/29/30/31, je nach Monat und Schaltjahr - beides wird ermittelt und berücksichtigt

Stunde: 0..23

Minute: 0..59

Sekunde: 0..59

Millisekunde: 0..999

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


E_BA_AlmSta

Enumerator Status der Alarmmeldungen.

TYPE E_BA_AlmSta :
(
     E_BA_AlmSta_UNKOWN        := 0,
     E_BA_AlmSta_OK            := 1,
     E_BA_AlmSta_TRIGGERED     := 2,
     E_BA_AlmSta_GONE          := 3,
     E_BA_AlmSta_ACKNOWLEDGED  := 4,
     E_BA_AlmSta_OFFLINE       := 5
);
END_TYPE

E_BA_AlmSta_UNKOWN: Der Alarm wurde keiner Anlage zugewiesen

E_BA_AlmSta_OK: Es steht kein Alarm an

E_BA_AlmSta_TRIGGERED: Ein Alarm wurde ausgelöst

E_BA_AlmSta_GONE: Der Alarm ist gegangen

E_BA_AlmSta_ACKNOWLEDGED: Der Alarm wurde quittiert, steht aber noch an

E_BA_AlmSta_OFFLINE:

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


E_BA_PosMod

Enumerator zur Definition des Positioniermodus.

TYPE E_BA_PosMod :
(
     ePosModFix := 0,
     ePosModTab,
     ePosModMaxIndc
);
END_TYPE

ePosModFix: Die Jalousiehöhe nimmt einen festen Wert ein, welcher am Baustein FB_BA_SunPrtc über den Wert lrFixPos eingestellt wird [%].

ePosModTab: Die Höhenpositionierung erfolgt mit Hilfe einer Tabelle von 6 Stützpunkten, davon 4 parametrierbar. Aus diesen Punkten wird dann durch lineare Interpolation eine Jalousieposition in Abhängigkeit des Sonnenstandes errechnet. Weitere Beschreibung siehe FB_BA_BldPosEntry.

ePosModMaxIndc: Die Positionierung erfolgt unter Angabe des maximal gewünschten Lichteinfalles.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


E_BA_ShdObjType

Enumerator zur Auswahl des Verschattungsobjekt-Typs.

TYPE E_BA_ShdObjType :
(
     eObjTypeTetragon  := 0,
     eObjTypeGlobe     := 1
);
END_TYPE

eObjTypeTetragon: Objekttyp ist ein Viereck.

eObjTypeGlobe: Objekttyp ist eine Kugel.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_BldPosTab

Struktur der Stützpunkteinträge für die Höhenverstellung der Jalousie.

TYPE ST_BA_BldPosTab:
STRUCT
     lrSunElv    : ARRAY[0..5] OF LREAL;
     lrBlindPos  : ARRAY[0..5] OF LREAL;
     bValid      : BOOL;
     byDummy     : ARRAY[1..3] OF BYTE;
END_STRUCT
END_TYPE

lrSunElv / lrBlindPos: Die 6 Stützstellen welche übergeben werden, wobei die Array-Elemente 0 und 5 die oben erwähnten automatisch generierten Rand-Elemente darstellen.

bValid: Gültigkeitsflag für den Baustein FB_BA_SunPrtc. Wird vom Baustein FB_BA_BldPosEntry auf TRUE gesetzt, wenn die eingegebenen Daten den beschriebenen Gültigkeitskriterien entsprechen.

byDummy: Unbenutzte Füllvariablen zur Herstellung einer 4-Byte-Anordnung. Diese Anordnung ist dann wichtig, wenn diese Struktur Teil eines Datenaustauschs zwischen Controllern unterschiedlicher Architektur (ARM/I486) ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_Cnr

Information über Fenster-Eckpunkte.

TYPE ST_BA_Cnr :
STRUCT
     lrX      : LREAL;
     lrY      : LREAL;
     bShdd    : BOOL;
     byDummy  : ARRAY[1..3] OF BYTE;
END_STRUCT
END_TYPE

lrX: X-Koordinate des Fensters (auf der Fassade).

lrY: Y-Koordinate des Fensters (auf der Fassade).

bShdd: Information, ob dieser Eckpunkt verschattet ist: bShdd=TRUE: Eckpunkt ist verschattet.

byDummy: Unbenutzte Füllvariablen zur Herstellung einer 4-Byte-Anordnung. Diese Anordnung ist dann wichtig, wenn diese Struktur Teil eines Datenaustauschs zwischen Controllern unterschiedlicher Architektur (ARM/I486) ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_ComnMsg

Struktur des Kommunikationstelegrammes an die Bausteine vom Typ FB_BA_ComMsg.

TYPE ST_BA_ComnMsg :
STRUCT
   arrData      : ARRAY [1..gBa_cMaxArrComnMsg] OF ST_BA_ComnMsgData;
   iCntEntryArr : INT;
   bDummy01     : BOOL;
   bDummy02     : BOOL;
END_STRUCT
END_TYPE

TYPE ST_BA_ComnMsgData :
STRUCT
   arrActvPrio : ARRAY [1..16] OF BOOL;
   udiActvPrio : UDINT;
   dwObjId     : DWORD;(*neu*)
   eObjType    : E_BACnetObjectType;
   iId         : INT;
   bAck        : BOOL;
   bInAlm      : BOOL;
   bOoServ     : BOOL;
   bOvrrd      : BOOL;
   bFlt        : BOOL;
   bHiLmt      : BOOL;
   bLoLmt      : BOOL;
   bErr        : BOOL;
END_STRUCT
END_TYPE

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_ComnMsgTermt

Struktur des Kommunikationstelegrammes an die Bausteine vom Typ FB_BA_ComMsgTermt.

TYPE ST_BA_ComnMsgTermt :
STRUCT
   arrData      : ARRAY [1..gBa_cMaxArrComnMsgTermt] OF ST_BA_ComnMsgTermtData;
   iCntEntryArr : INT;
   bDummy01     : BOOL;
   bDummy02     : BOOL;
END_STRUCT
END_TYPE

TYPE ST_BA_ComnMsgTermtData :
STRUCT
   arrActvPrio : ARRAY [1..16] OF BOOL;
   udiActvPrio : UDINT;
   iId         : INT;
   bAck        : BOOL;
   bInAlm      : BOOL;
   bOoServ     : BOOL;
   bOvrrd      : BOOL;
   bFlt        : BOOL;
   bHiLmt      : BOOL;
   bLoLmt      : BOOL;
   bErr        : BOOL;
END_STRUCT
END_TYPE

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_FcdElem

Listeneintrag eines Fassadenelementes (Fenster).

TYPE ST_BA_FcdElem:
STRUCT
    lrWdwWdth : LREAL;
    lrWdwHght : LREAL;
    stCnr     : ARRAY [1..4] OF ST_BA_Cnr;
    usiGrp    : USINT;
    bVld      : BOOL;
    byDummy   : ARRAY[1..2] OF BYTE;
END_STRUCT
END_TYPE

lrWdwWdth: Breite des Fensters.

lrWdwHght: Höhe des Fensters.

stCnr: Koordinaten der Fenster-Eckpunkte und Information, ob dieser Eckpunkt verschattet ist, siehe ST_BA_Cnr.

bVld: Plausibilität der eingetragenen Daten: bVld=TRUE: Daten sind plausibel.

usiGrp: Gruppenzugehörigkeit des Elementes.

byDummy: Unbenutzte Füllvariablen zur Herstellung einer 4-Byte-Anordnung. Diese Anordnung ist dann wichtig, wenn diese Struktur Teil eines Datenaustauschs zwischen Controllern unterschiedlicher Architektur (ARM/I486) ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_SeqLink / ST_BA_SeqLinkData

Struktur des Daten- und Befehlsaustausches zwischen dem Steuerbaustein FB_BA_SeqLink und den Sequenzreglern FB_BA_SeqCtrl.

Diese Struktur ist pro Sequenzregelung einmal anzulegen:

stSeqLink : ST_BA_SeqLink;

Innerhalb dieser Struktur ist automatisch eine weitere Feldstruktur deklariert, über die der Sequenz-Link-Baustein auf der einen Seite und die einzelnen Sequenzregler auf der anderen alle relevanten Daten miteinander austauschen. Jeder Sequenzregler schreibt dabei seine Daten in das seiner Ordnungszahl (Eintrag am Eingang usiMyNum am Sequenzreglerbaustein) entsprechende Feldelement. An den Bausteinen angelegt wird immer die komplette Struktur mit allen Feldelementen.

Die Strukturen haben den folgenden Aufbau:

TYPE ST_BA_SeqLink :
STRUCT
  arrSeqLinkData : ARRAY[1..cMaxSeqCtrl] OF ST_BA_SeqLinkData;
  bSeqActv       : BOOL;
  usiCurSeq      : USINT;
  byDummy        : ARRAY[1..2] OF BYTE;
END_STRUCT
END_TYPE

bSeqActv: Die Sequenzregelung ist freigegeben und aktiv.

usiCurSeq: vom FB_BA_SeqLink: Vorgabe aktueller Sequenzregler.

byDummy: Unbenutzte Füllvariablen zur Herstellung einer 4-Byte-Anordnung. Diese Anordnung ist dann wichtig, wenn diese Struktur Teil eines Datenaustauschs zwischen Controllern unterschiedlicher Architektur (ARM/I486) ist.

TYPE ST_BA_SeqLinkData:
STRUCT
  lrY         : LREAL;
  lrYMin      : LREAL;
  lrYMax      : LREAL;
  lrW         : LREAL;
  bActn       : BOOL;
  bOp         : BOOL;
  bPresence   : BOOL;
  bErrDouble  : BOOL;
  usiCurSeq   : USINT;
  byDummy     : ARRAY[1..3] OF BYTE;
END_STRUCT
END_TYPE

lrY: vom FB_BA_SeqCtrl: Übermittlung aktueller Stellwert.

lrYMin: vom FB_BA_SeqCtrl: Übermittlung minimaler Stellwert.

lrYMax: vom FB_BA_SeqCtrl: Übermittlung maximaler Stellwert.

lrW: vom FB_BA_SeqCtrl: Übermittlung aktueller Sollwert.

bActn: vom FB_BA_SeqCtrl: Übermittlung Wirksinn invers (bActn = FALSE: Heizbetrieb - bActn = TRUE: Kühlbetrieb).

bOp: vom FB_BA_SeqCtrl:Sequenzregler ist freigegeben, d.h. sein Eingang bEn ist auf TRUE gesetzt.

bPresence: vom FB_BA_SeqCtrl: Prüfbit, s.u..

bErrDouble: vom FB_BA_SeqCtrl: Fehler beim Prüfen der Nummern: es existieren mindestens 2 Sequenzregler gleicher Ordnungszahl usiMyNum.

usiCurSeq: vom FB_BA_SeqLink: Vorgabe aktueller Sequenzregler.

byDummy: Unbenutzte Füllvariablen zur Herstellung einer 4-Byte-Anordnung. Diese Anordnung ist dann wichtig, wenn diese Struktur Teil eines Datenaustauschs zwischen Controllern unterschiedlicher Architektur (ARM/I486) ist.

Bemerkung zum Prüfbit:

Jeder Sequenzcontroller setzt in der für ihn gültigen seiner Struktur das bPresence-Flag. Ist dieses jedoch schon gesetzt, so muss usiMyNum zwangsläufig doppelt vergeben worden sein, greifen doch zwei Sequenzregler auf dieselbe Struktur zu. Der Sequenz-Link-Baustein setzt alle Prüfbits nach Auswertung wieder zurück, so dass dieser Test zyklisch erfolgt. Dadurch kann ein Fehler automatisch per online-change behoben, bzw. auch neue Sequenzregler hinzugefügt werden

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_ShdObj

Listeneintrag eines Verschattungsobjektes.

TYPE ST_BA_ShdObj :
STRUCT
     lrP1x          : LREAL;
     lrP1y          : LREAL;
     lrP1z          : LREAL;
     lrP2x          : LREAL;
     lrP2y          : LREAL;
     lrP2z          : LREAL;
     lrP3x          : LREAL;
     lrP3y          : LREAL;
     lrP3z          : LREAL;
     lrP4x          : LREAL;
     lrP4y          : LREAL;
     lrP4z          : LREAL;
     lrMx           : LREAL;
     lrMy           : LREAL;
     lrMz           : LREAL;
     lrRads         : LREAL;
     usiBegMth      : USINT;
     usiEndMth      : USINT;
     eType          : E_BA_ShdObjType;
     bVld           : BOOL;
END_STRUCT
END_TYPE

lrP1x .. lrP4z: Eckkoordinaten. Nur von Bedeutung, wenn das Element ein Viereck ist.

lrMx .. lrMz: Mittelpunktkoordinaten. Nur von Bedeutung, wenn das Element eine Kugel ist.

lrRads: Radius der Kugel. Nur von Bedeutung, wenn das Element eine Kugel ist.

usiBegMth: Anfang der Verschattungsperiode (Monatszahl).

usiEndMth: Ende der Verschattungsperiode (Monatszahl).

eType: Objekttyp, siehe E_BA_ShdObjType.

bVld: Plausibilität der Daten: bVld=TRUE: Daten sind plausibel.

Bemerkung zur Verschattungsperiode:

Die Monatseinträge dürfen nicht 0 und größer 12 sein, andernfalls sind alle Kombinationen möglich.

Beispiele:

Beginn=1, Ende=1: Verschattung im Januar.
Beginn=1, Ende=5: Verschattung von Anfang Januar bis Ende Mai.
Beginn=11, Ende=5: Verschattung von Anfang November bis Ende Mai (des folgenden Jahres).

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_SpRmT

Raum-Temperatursollwerte.

TYPE ST_BA_SpRmT :
STRUCT
   lrPrtcHtg    : LREAL := 12.0;
   lrEcoHtg     : LREAL := 15.0;
   lrPreCmfHtg  : LREAL := 19.0;
   lrCmfHtg     : LREAL := 21.0;
   lrPrtcCol    : LREAL := 40.0;
   lrEcoCol     : LREAL := 35.0;
   lrPreCmfCol  : LREAL := 28.0;
   lrCmfCol     : LREAL := 24.0;
END_STRUCT
END_TYPE

Die Werte in der Struktur sind mit den Voreinstellwerten deklariert.

Die Variablen haben folgende Bedeutung:

lrPrtcHtg: Protection Heating.

lrEcoHtg: Economy Heating.

lrPreCmfHtg: Pre-Comfort Heating.

lrCmfHtg: Comfort Heating.

lrPrtcCol: Protection Cooling.

lrEcoCol: Economy Cooling.

lrPreCmfCol: Pre-Comfort Cooling.

lrCmfCol: Comfort Cooling.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_Sunbld

Struktur des Jalousie-Positioniertelegramms.

TYPE ST_BA_SunBld:
STRUCT
     lrPos           : LREAL;
     lrAngl          : LREAL;
     bManUp          : BOOL;
     bManDwn         : BOOL;
     bManMod         : BOOL;
     bActv           : BOOL;
END_STRUCT
END_TYPE

lrPos: Übergebene Jalousiehöhe [%].

lrAngl: Übergebene Lamellenstellung [°].

bManUp: Handbefehl: Jalousie hoch.

bManDwn: Handbefehl: Jalousie herunter.

bManMod: TRUE: Der Handbedienmodus ist aktiv. FALSE: Der Automatikmodus ist aktiv.

bActv: Der Absender des Telegramms ist aktiv. Dieses Bit wird nur von der Prioritätssteuerung FB_BA_SunBldPrioSwi4 bzw. FB_BA_SunBldPrioSwi8 ausgewertet. Die Sonnenschutzaktoren FB_BA_SunBldActr und FB_BA_RolBldActr beachteten es nicht.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_SunBldScn

Tabelleneintrag einer Jalousie-Szene.

TYPE ST_BA_SunBldScn:
STRUCT
     lrPos     : LREAL;
     lrAngl    : LREAL;
END_STRUCT
END_TYPE

lrPos: Jalousiehöhe [%].

lrAngl: Lamellenstellung [°].

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


E_BA_CtrlSttupMod

Gibt an, mit welchem Lichtwert die Konstantlichtregelung aufstarten soll.

TYPE E_BA_CtrlSttupMod :
(
eBA_SttMaxVal := 0,
eBA_SttMinVal := 1,
eBA_SttDctVal := 2
);
END_TYPE

eBA_SttMaxVal: Startet mit dem Maximalwert.

eBA_SttMinVal: Startet mit dem Minimalwert.

eBA_SttDctVal: Startet mit dem Wert, der unter lrSttDctVal angegeben ist.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


E_BA_OnMod

Beschreibt das Einschaltverhalten über den Befehl bOn bzw. über Kurzklick an den Eingängen bSwi, bSwiUp und bSwiDwn.

TYPE E_BA_OnMod :
(
eBA_ClMaxVal := 0,
eBA_ClMinVal := 1,
eBA_ClOnVal  := 2,
eBA_ClRstVal := 3
);
END_TYPE

eBA_ClMaxVal: Schaltet den Lichtaktor auf den Maximalwert.

eBA_ClMinVal: Schaltet den Lichtaktor auf den Minimalwert.

eBA_ClOnVal: Schaltet den Lichtaktor auf den Wert lrOnVal.

eBA_ClRstVal: Schaltet den Lichtaktor auf den Wert, den der Schaltaktor vor dem letzten Ausschalten innehatte.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_LgtCmd

Befehlstelgramm von den Licht-Schaltfunktionen an die Lichtaktoren.

TYPE ST_BA_LgtCmd :
STRUCT
     bOff            : BOOL;
     bClMinCtrlVal   : BOOL;
     bClMaxCtrlVal   : BOOL;
     bClOnVal        : BOOL;
     lrOnVal         : LREAL;
     bClRstVal       : BOOL;
     bSetCtrlValDct  : BOOL;
     lrSetCtrlValDct : LREAL;
     bChgMaxCtrlVal  : BOOL;
     lrChgMaxCtrlVal : LREAL;
     bChgMinCtrlVal  : BOOL;
     lrChgMinCtrlVal : LREAL;
     bDimUp          : BOOL;
     bDimDwn         : BOOL;
     bStepUp         : BOOL;
     bStepDwn        : BOOL;
END_STRUCT
END_TYPE

bOff: Schaltet den Lichtaktor unmittelbar aus.

bClMinCtrlVal: Schaltet den Lichtaktor auf den Minimalwert.

bClMaxCtrlVal: Schaltet den Lichtaktor auf den Maxiimalwert.

bCalOnVal / lrOnVal: Schaltet den Lichtaktor auf den gewählten On-Value.

bClRstCtrlVal: Schaltet den Lichtaktor auf den Wert, den der Schaltaktor vor dem letzten Ausschalten innehatte.

bSetCtrlValDct / lrSetCtrlValDct : Schaltet den Lichtaktor auf den Wert lrSetCtrlValDct.

bChgMaxCtrlVal / lrChgMaxCtrlVal: Gibt dem Lichtaktor einen neuen Maximalwert lrChgMaxCtrlVal vor.

bChgMinCtrlVal / lrChgMinCtrlVal: Gibt dem Lichtaktor einen neuen Maximalwert lrChgMinCtrlVal vor.

bDimUp: statisches Signal zum Hochdimmen, bei DALI-Lichtaktoren wird hiermit alle 200ms der Befehl "UP" ausgegeben.

bDimDwn: statisches Signal zum herunterdimmen, bei DALI-Lichtaktoren wird hiermit alle 200ms der Befehl "DOWN" ausgegeben.

bStepUp: Schaltet den Lichtwert um einen Schritt höher. Bei DALI-Lichtaktoren wird hiermit EIN Schritt herauf gesetzt, was dem DALI-Befehl "STEP UP" entspricht. Bei analogen Lichtaktoren entspricht dies einem Erhöhen um (100/254) %.

bStepDwn: Schaltet den Lichtwert um einen Schritt herunter. Bei DALI-Lichtaktoren wird hiermit EIN Schritt herunter gesetzt, was dem DALI-Befehl "STEP DOWN" entspricht. Bei analogen Lichtaktoren entspricht dies einem Absenken um (100/254) %

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


E_BA_DALIMod

Vorgabe der Funktionsweise des DALI-Lichtaktorbausteines.

TYPE E_BA_DALIMod :
(
eBA_DALIModGrpMst := 0,
eBA_DALIModGrpSlv := 1,
eBA_DALIModGrpSgl := 2,
eBA_DALIModSglDvc := 3
);
END_TYPE

eBA_DALIModGrpMst: Master einer Gruppe mit ein oder mehreren Lichtaktoren, welche Slaves (eBA_DALIModGrpSlv) darstellen. Der Master schaltet die Gruppenbefehle durch, die Parametrierung über die Lichtaktoreingänge jedoch wird für alle Greäte individuell ausgeführt.

eBA_DALIModGrpSlv: Slave einer Gruppe mit ein oder mehreren Lichtaktoren, welche Slaves (eBA_DALIModGrpSlv) darstellen. Der Master schaltet die Gruppenbefehle durch, die Parametrierung über die Lichtaktoreingänge jedoch wird für alle Greäte individuell ausgeführt.

eBA_DALIModGrpSgl: Master einer Gruppe, bei denen die Slaves nicht als Bausteine aufgeführt werden. Der Master schaltet die Gruppenbefehle durch, die Parametrierung über die Lichtaktoreingänge wird für alle Geräte als Gruppenbefehl des Masters ausgeführt.

eBA_DALIModSglDvc: Ein Lichtaktorbaustein schaltet ein DALI-Gerät über eine Kurzadresse.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


Fehlercodes

ErrId (hex) Warnung | ErrId (hex) stoppender Fehler | ErrArg | Beschreibung
0x0 | 0x0 |  | Kein Fehler
0x40008001 | 0x80008001 | 1 | Der untere Grenzwert der Stellgröße lrMinOut ist größer als der obere Grenzwert lrMaxOut
 |  | 2 | Der Wert der neutralen Zone (lrNz) darf nicht kleiner als 0.0 sein
 |  | 3 | Der Wert der Proportionalitätskonstanten (lrKp) darf nicht kleiner als 0.0 sein
0x40008002 | 0x80008002 | 1 | Eine Reglerordnungszahl usiMyNum ist doppelt vergeben
 |  | 2 | Eine Reglerordnungszahl usiMyNum ist größer als die maximal erlaubte Anzahl gBA_cMaxSeqCtrl.
 |  | 3 | Der untere Grenzwert der Stellgröße lrMinOut ist größer als der obere Grenzwert lrMaxOut.
 |  | 4 | Der Wert der neutralen Zone (lrNz) darf nicht kleiner als 0.0 sein.
 |  | 5 | Der Wert der Proportionalitätskonstanten (lrKp) darf nicht kleiner als 0.0 sein.
 |  | 6 | Die Reglerordnungszahl usiMyNum eines freigegebenen Reglers ist 0. Das ist nur für nicht verwendete und damit nicht freigegebene Regler erlaubt.
0x40008003 | 0x80008003 | 1 | Dem SequenzLink wurde mitgeteilt, dass eine Reglerordnungszahl usiMyNum ist doppelt vergeben worden ist.
 |  | 2 | Doppelter Wirksinn-Wechsel in der Reglersequenz..
 |  | 3 | In der Reglersequenz hat ein Regler höherer Ordnungszahl einen geringeren Sollwert als sein "Vorgänger". Es erfolgt keine Korrektur - die Regesequenz läuft mit den eingegebenen Parametern.
 |  | 4 | Der Sequenzregler, der als Startregler definiert ist (usiSttCtrl) ist gar nicht parametriert, d.h. vorhanden. Es wird der Regler mit der geringsten Ordnungszahl als Startregler verwendet.
 |  | 5 | Die Ordnungszahl des Start-Reglers ist höher als die maximal erlaubte Anzahl an Reglern oder Null. Es wird der Regler mit der geringsten Ordnungszahl als Startregler verwendet.
 |  | 6 | Der Sequenzregler, der als Startregler definiert ist (usiSttCtrl) ist nicht frei gegeben, d.h. vorhanden. Es wird der Regler mit der geringsten Ordnungszahl als Startregler verwendet.
0x40008004 | 0x80008004 | 1 | Der untere Grenzwert der Stellgröße lrMinOut ist größer als der obere Grenzwert lrMaxOut
0x40008005 | 0x80008005 | 1 | Das minimale Eingangssignal lrMinIn ist größer als das maximale Eingangssignal lrMaxIn
0x40008010 | 0x80008010 | 1 | Wrong Mapping, das Mapping zum BACnet Device ist fehlerhaft und muss überprüft werden
 |  | 2 | Operational, das BACnet Device ist nicht betriebsfähig
0x40008011 | 0x80008011 | 1 | Falsche Eingabe Priorität A, PrioA darf nicht <1 oder =6 oder >16 sein
 |  | 2 | Falsche Eingabe Priorität A, PrioA darf nicht <1 oder >16 sein
 |  | 3 | Falsche Eingabe Priorität B, PrioB darf nicht <1 oder =6 oder >16 sein
 |  | 4 | Falsche Eingabe Priorität B, PrioB darf nicht <1 oder >16 sein
 |  | 5 | Falsche Eingabe Priorität C, PrioC darf nicht <1 oder =6 oder >16 sein
 |  | 6 | Falsche Eingabe Priorität C, PrioC darf nicht <1 oder >16 sein
 |  | 7 | Falsche Eingabe Priorität D, PrioD darf nicht <1 oder =6 oder >16 sein
 |  | 8 | Falsche Eingabe Priorität D, PrioD darf nicht <1 oder >16 sein
0x40008011 | 0x80008011 | 1 | Falsche Eingabe Priorität A, PrioA darf nicht <1 oder =6 oder >16 sein
0x40008013 | 0x80008013 | ADS-Nr | ADS-Fehler FB_BACnet_WriteProp. Der Baustein wird weiter abgearbeitet.
0x40008014 | 0x80008014 | ADS-Nr | ADS-Fehler FB_BACnet_ReadProp. Der Baustein wird weiter abgearbeitet.
0x40008015 | 0x80008015 | 1 | Die Struktur ST_BA_ComnMsg ist überfüllt. Es sind zu viele Einträge von den einzelen BACnet Objekten in die Struktur Common Message getätigt worden. Abhilfe durch neuen FB_BA_ComnMsg.
 |  | 2 | Die Struktur ST_BA_ComnMsgTermt ist überfüllt. Es sind zu viele Einträge von den Auswertebausteinen FB_BA_ComnMsg in die Struktur Common Message Terminated getätigt worden. Abhilfe durch neuen FB_BA_ComnMsgTermt und globaler Struktur
0x40008016 | 0x80008016 | 1 | Falsche Eingabe PresentValue Priorität A, PrioA darf nicht < 1 OR > NumberOfState sein
 |  | 2 | Falsche Eingabe PresentValue Priorität B, PrioB darf nicht < 1 OR > NumberOfState sein
 |  | 3 | Falsche Eingabe PresentValue Priorität C, PrioC darf nicht < 1 OR > NumberOfState sein
 |  | 4 | Falsche Eingabe PresentValue Priorität D, PrioD darf nicht < 1 OR > NumberOfState sein
0x40008017 | 0x80008017 | Lokalität | Zeigt die Id des FB_BA_ComnMsg-Funktionsbaustein an wo der Fehler anliegt
0x40008018 | 0x80008018 | 1 | Falsche Eingabe Relinquish Default, darf nicht < 1 oder > NumberOfStates sein
 |  | 2 | Falsche Eingabe HighLimit/LowLimit, HighLimit ist kleiner = LowLimit
 |  | 3 | FB_BACSChrct: Falsche Angabe usiNumOfPnt
0x40008019 | 0x80008019 | Lokalität | Zeigt das Feld im Array an wo der Fehler zu suchen ist. Die Einträge in das Array arrX müssen so aussehen: arr[1] > arrX[2] > arrX[n] ODER arr[1] < arrX[2] < arrX[n]
0x40008020 | 0x80008020 | 1 | Welches Objekt einen Fehler hat, wird mit den beiden Ausgängen dwObjId / eObjType angezeigt
0x40008021 | 0x80008021 | 1 | lr01 überschreitet den Bereich von LREAL
 |  | 2 | Addition lr01/lr02 überschreitet den Bereich von LREAL
 |  | 3 | Addition lr01/lr02/lr03 überschreitet den Bereich von LREAL
 |  | 4 | Addition lr01/lr02/lr03/lr04 überschreitet den Bereich von LREAL
 |  | 5 | Addition lr01/lr02/lr03/lr04/lr05 überschreitet den Bereich von LREAL
 |  | 6 | Addition lr01/lr02/lr03/lr04/lr05/lr06 überschreitet den Bereich von LREAL
 |  | 7 | Addition lr01/lr02/lr03/lr04/lr05/lr06/lr07 überschreitet den Bereich von LREAL
 |  | 8 | Addition lr01/lr02/lr03/lr04/lr05/lr06/lr07/lr08 überschreitet den Bereich von LREAL
 |  | 9 | Differenz MAX zu MIN überschreitet den Bereich von LREAL
0x40008027 | 0x80008027 | Lokalität | udiErrArg Zeigt die Variable lrX0x an wo der Fehler zu suchen ist. Folgende Reihenfolge muss eingehalten werden: lrX01 > lrX02 > lrXn ODER lrX01 < lrX02 < lrXn
0x40008028 | 0x80008028 | 1 | Falsche Eingabe PresentValue, darf nicht <1 oder >udiNumOfSta (NumberOfStates) sein
0x4000802F | 0x8000802F | 1 | Setpoint Heating ist größer oder gleich Setpoint Cooling
0x40008030 | 0x80008030 | 1 | Falscher Parameter udiNum > udiNumOfEn
0x40008030 | 0x80008030 | 1 | Fehler intern MEMSET
 |  | 2 | Fehler intern tTaskCycleTime
 |  | 3 | Fehler intern tCtrlCycleTime
 |  | 4 | Fehler intern InvalidParam_tTi
 |  | 5 | Fehler intern InvalidParam_fBaseTime
 |  | 6 | Fehler intern Error_MEMCPY
0x40008033 | 0x80008033 | 1 | Falscher Parameter udiNumOfStep
0x40008034 | 0x80008034 | ADS-Nr | ADS-Fehler beim Lesen der Zeit
0x40008035 | 0x80008035 | ADS-Nr | ADS-Fehler beim Setzen der Zeit
0x40008036 | 0x80008036 | 1 | Fehler Bereichsüberschreitung Jahr
 |  | 2 | Fehler Bereichsüberschreitung Monat
 |  | 3 | Fehler Bereichsüberschreitung Monatstag
 |  | 4 | Fehler Bereichsüberschreitung Stunde
 |  | 5 | Fehler Bereichsüberschreitung Minute
 |  | 6 | Fehler Bereichsüberschreitung Sekunde
 |  | 7 | Fehler Bereichsüberschreitung Millisekunde
0x40008100 | 0x80008100 | 1 | Die x-Werte (Elevationswerte) in der Tabelle sind entweder nicht in aufsteigender Reihenfolge oder doppelt vorhanden.
 |  | 2 | Ein eingetragener Elevationswert ist ausserhalb des gültigen Bereiches von 0°..90°.
 |  | 3 | Ein eingetragener Positionswert ist ausserhalb des gültigen Bereiches von 0%..100%.
0x40008101 | 0x80008101 | 1 | Der Einschalthysteresewert lrOnVal ist kleiner oder gleich dem Ausschalthysteresewert lrOffVal.
 |  | 2 | Der Einschalthysteresewert lrOnVal oder der Ausschalthysteresewert lrOffVal ist kleiner Null.
0x40008102 | 0x80008102 | 1 | Parameterfehler: lrSttRng=lrEndRng.
 |  | 2 | Parameterfehler: lrSttRng bzw. rEndRng kleiner 0° oder größer 360°.
 |  | 3 | Parameterfehler: Die Differenz von lrSttRng und lrEndRng ist größer als 180Grad. Für die Betrachtung des Sonneneinfalles auf eine Fassade ist dieser Bereich zu groß gewählt.
0x40008103 | 0x80008103 | 1 | Parameterfehler: lrHiLmt kleiner oder gleich rLoLmt.
 |  | 2 | Parameterfehler: lrLoLmt ist kleiner 0° oder lrHiLmt ist größer 90°.
0x40008104 | 0x80008104 | 1 | Die Gesamt-Hoch- oder Herunterfahrzeit (udiTiUp/udiTiDwn) ist Null.
0x40008105 | 0x80008105 | 1 | Parameterfehler: Rolladenhöhe ist kleiner oder gleich 0.
 |  | 2 | Parameterfehler: Hoch/Herunter-Timer = 0.
 |  | 3 | Parameterfehler: Turning/Wendetimer = 0.
 |  | 4 | Parameterfehler: Lamellenwinkelgrenzen: Die obere Grenze ist kleiner oder gleich der Unteren (lrAnglLmtUp<=lrAnglLmtDwn).
 |  | 5 | Einer der Hysterese-Offset-Werte für das Nachpositionieren, lrHysIncPos oder lrHysIncAngl, ist kleiner Null
0x40008106 | 0x80008106 | 1 | Die eingetragene Szenen-Nummer udiSlcdScn ist höher als die maximal zulässige Anzahl an Szenen.
 |  | 2 | Der Positionssollwert lrSpPos ist größer als 100 oder kleiner als 0.
0x40008107 | 0x80008107 | 1 | Die über die Struktur stRmTSp übertragenen Sollwerte sind nicht in aufsteigender Reihenfolge. Richtig: stRmTSp.rPreCmfHtg <= stRmTSp.rCmfHtg <= stRmTSp.rCmfCol <= stRmTSp.rPreCmfCol.
 |  | 2 | Der Einschalthysteresewert lrBrtnsActvVal ist kleiner oder gleich dem Ausschalthysteresewert lrBrtnsDctvVal.
 |  | 3 | Die Jalousieposition im Heizfall lrPosHtg ist größer als die im Kühlfall lrPosCol. Dies macht keinen Sinn.
 |  | 4 | Einer der Schaltwerte, lrBrtnsActvVal oder lrBrtnsDctvVal, ist kleiner als 0.
 |  | 5 | Einer der Positionssollwerte, lrPosHtg oder lrPosCol, ist größer als 100 oder kleiner als 0.
0x40008108 | 0x80008108 | 1 | Der Einschalthysteresewert lrActvVal ist größer oder gleich dem Ausschalthysteresewert lrDctvVal.
 |  | 2 | Einer der Schaltwerte, lrActvVal oder lrDctvVal, ist kleiner als 0.
 |  | 3 | Der Positionssollwert lrPosTwiLgt ist größer als 100 oder kleiner als 0.
0x40008109 | 0x80008109 | 1 | Die eingetragene Frosttemperatur liegt über 10°C.
 |  | 2 | Die eingetragene Windgeschwindigkeit zum Ausschalten des Alarmes ist größer oder gleich der zum Einschalten.
 |  | 3 | Die eingetragene Windgeschwindigkeit zum Ein- bzw. zum Ausschalten des Alarmes ist kleiner als 0.
 |  | 4 | Der Positionssollwert lrPosProt ist größer als 100 oder kleiner als 0.
0x4000810A | 0x8000810A | 1 | Die Dauer des Positionierintervalls ist gleich Null oder überschreitet 720 min.
 |  | 2 | Der eingetragene Längengrad ist nicht im gültigen Bereich von -180°..180°.
 |  | 3 | Der eingetragene Breitengrad ist nicht im gültigen Bereich von -90°..90°.
 |  | 4 | Der eingetragene Wert für die Fassadenneigung lrFcdAngl ist ausserhalb des gültigen Bereiches von -90°..90°.
 |  | 5 | Der Wert für den Lamellenabstand (lrLamDstc) ist größer oder gleich dem Wert für die Lamellenbreite (lrLamWdth). Dies stellt keine "gültige" Jalousie dar, da die Lamellen nicht vollständig schließen könnten. Mathematisch gesehen würde dieses zu Fehlern führen.
 |  | 6 | Der eingetragene Wert für den Lamellenabstand lrLamDstc ist gleich Null.
 |  | 7 | Der eingetragene Wert für die Lamellenbreite lrLamWdth ist gleich Null.
 |  | 8 | Der eingetragene Wert für die fixe Jalousiehöhe (lrFixPos) ist größer als 100 oder kleiner als 0. Gleichzeitig ist Positionierung "fixe Jalousiehöhe" angewählt - ePosMod=ePosModFix.
 |  | 9 | Das Bit "Werte gültig" (bVld) in der Positioniertabelle stBldPosTab ist nicht gesetzt - ungültige Werte: siehe FB_BA_BldPosEntry. Gleichzeitig ist Positionierung "Tabelle" angewählt - ePosMod=ePosModTab.
 |  | 10 | Der eingetragene Wert für die Fensterhöhe lrWdwHght ist kleiner oder gleich Null. Gleichzeitig ist Positionierung "maximaler Lichteinfall" angewählt - ePosMod=ePosModMaxIndc.
 |  | 11 | Der eingetragene Abstand Fensterunterkante zu Boden lrDstcWdwFlr ist kleiner Null. Gleichzeitig ist Positionierung "maximaler Lichteinfall" angewählt - ePosMod=ePosModMaxIndc.
 |  | 12 | Der eingetragene Wert für den maximal gewünschten Lichteinfall lrMaxLgtIndc ist kleiner oder gleich Null. Gleichzeitig ist Positionierung "maximaler Lichteinfall" angewählt - ePosMod=ePosModMaxIndc.
0x40008120 | 0x80008120 | 1 | Indexfehler! iColumn und/oder iRow liegen außerhalb der zulässigen Grenzen 1..gBA_cMaxColumnFcd bzw. 1..gBA_cMaxRowFcd. Siehe Liste der Fassadenelemente.
 |  | 2 | Der Gruppenindex ist 0, gleichzeitig ist jedoch ein anderer Eintrag des Fassadenelementes ungleich Null. Nur wenn alle Einträge eines Fassadenelementes Null sind, wird es als gültiges, gewollt ausgelassenes Fassadenelement angesehen, ansonsten jedoch als Fehleingabe interpretiert.
 |  | 3 | Die X-Komponente ersten Eckpunktes (Corner1) ist kleiner Null.
 |  | 4 | Die Y-Komponente ersten Eckpunktes (Corner1) ist kleiner Null.
 |  | 5 | Die Fensterbreite ist kleiner oder gleich Null.
 |  | 6 | Die Fensterhöhe ist kleiner oder gleich Null.
0x40008121 | 0x80008121 | 1 | Fehler beim Lesen der Daten-Datei: Datei ist zu groß (Anzahl Bytes größer als cMaxDataFileSize)
0x40008122 | 0x80008122 | ADS-Nr | Dateihandling-Fehler: Open Logfile
0x40008123 | 0x80008123 | ADS-Nr | Dateihandling-Fehler: Open Datafile
0x40008124 | 0x80008124 | ADS-Nr | Dateihandling-Fehler: Read Datafile
0x40008125 | 0x80008125 | ADS-Nr | Dateihandling-Fehler: Write Logfile
0x40008126 | 0x80008126 | ADS-Nr | Dateihandling-Fehler: Close Datafile
0x40008127 | 0x80008127 | ADS-Nr | Dateihandling-Fehler: Write Logfile
0x40008128 | 0x80008128 | ADS-Nr | Dateihandling-Fehler: Close Logfile
0x40008129 | 0x80008129 | 1 | Fehler beim Lesen der Daten-Datei: Datei ist zu groß (Anzahl Bytes größer als cMaxDataFileSize)
0x4000812A | 0x8000812A | ADS-Nr | Dateihandling-Fehler: Open Logfile
0x4000812B | 0x8000812B | ADS-Nr | Dateihandling-Fehler: Open Datafile
0x4000812C | 0x8000812C | ADS-Nr | Dateihandling-Fehler: Read Datafile
0x4000812D | 0x8000812D | ADS-Nr | Dateihandling-Fehler: Write Logfile
0x4000812E | 0x8000812E | ADS-Nr | Dateihandling-Fehler: Close Datafile
0x4000812F | 0x8000812F | ADS-Nr | Dateihandling-Fehler: Write Logfile
0x40008130 | 0x80008130 | ADS-Nr | Dateihandling-Fehler: Close Logfile
0x40008131 | 0x80008131 | 1 | Der Index der zu betrachtenden Fenstergruppe usiGrpId ist 0.
 |  | 2 | Ein Element der Fensterliste, arrFcdElem[i,j], ist nicht gültig. Siehe Aisgänge iErrIdx_I und iErrIdx_J.
0x40008132 | 0x80008132 | 1 | Indexfehler! iId liegt außerhalb der zulässigen Grenzen 1..gBA_cMaxShdObj.
 |  | 2 | Die Summe der Winkel des Vierecks ist nicht 360°. Das bedeutet, dass die Eckpunkte nicht in der Reihenfolge P1, P2, P3 und P4 sondern P1, P3, P2 und P4 sind. Dies ergibt ein über Kreuz geschlagenes Viereck.
 |  | 3 | Die Eckpunkte des Vierecks liegen nicht auf der selben Ebene.
 |  | 4 | Die z-Komponente von P1 ist kleiner Null. Damit läge dieser Eckpunkt hinter der Fassade.
 |  | 5 | Die z-Komponente von P3 ist kleiner Null. Damit läge dieser Eckpunkt hinter der Fassade.
 |  | 6 | P1 ist gleich P2. Damit ist das eingetragene Objekt kein Viereck.
 |  | 7 | P1 ist gleich P3. Damit ist das eingetragene Objekt kein Viereck.
 |  | 8 | P1 ist gleich P4. Damit ist das eingetragene Objekt kein Viereck.
 |  | 9 | P2 ist gleich P3. Damit ist das eingetragene Objekt kein Viereck.
 |  | 10 | P2 ist gleich P4. Damit ist das eingetragene Objekt kein Viereck.
 |  | 11 | P3 ist gleich P4. Damit ist das eingetragene Objekt kein Viereck.
 |  | 12 | Der eingetragene Radius ist gleich Null.
 |  | 13 | Die z-Komponente des Kugelmittelpunktes ist kleiner Null. Damit läge dieser Punkt hinter der Fassade.
 |  | 14 | Fehler Objekttyp eType - weder Viereck noch Kugel.
 |  | 15 | Fehler Monatseingabe.
0x40008200 | 0x80008200 | 1 | DALI-Parameter "lrMinCtrlVal" (minimaler Lichtausgabewert) unterhalb oder gleich Null. Der Wert wurde automatisch auf 1.0 korrigiert.
 |  | 2 | DALI-Parameter "lrMaxCtrlVal" (minimaler Lichtausgabewert) oberhalb 100.0. Der Wert wurde automatisch auf 100.0 korrigiert.
 |  | 3 | DALI-Parameter "lrMaxCtrlVal" (minimaler Lichtausgabewert) unterhalb oder gleich Null. Der Wert wurde automatisch auf 1.0 korrigiert.
 |  | 4 | DALI-Parameter "lrMinCtrlVal" (minimaler Lichtausgabewert) oberhalb 100.0. Der Wert wurde automatisch auf 100.0 korrigiert.
 |  | 5 | DALI-Parameter "lrMaxCtrlVal" (minimaler Lichtausgabewert) unterhalb "lrMinCtrlVal". Der Wert wurde automatisch auf "lrMinCtrlVal" korrigiert.
0x40008201 | 0x80008201 | DALI-ErrId | Trägt das direkt herausgeführte Fehlerargument aus der Errorcode-Liste der Bibliothek DALIV2, siehe TcPlcLibDALIV2_Errorcodes.
0x40008202 | 0x80008202 | 1 | Ungültige Kurzadresse, oberhalb 63.
 |  | 2 | Ungültige Gruppenadresse, oberhalb 15.


Einleitung BA PLC Templates

TS8040 | TwinCAT Building Automation: PLC Templates

Einleitung

Die TwinCAT BA PLC Templates bestehen aus fertigen TwinCAT Programmbausteinen für Sensoren und Aktoren, für komplette Baugruppen, sowie für Anlagenteile oder ganze Anlagen der Heizungs-, Klima- und Lüftungstechnik und der Raumautomation. Im Gegensatz zu einer regulären SPS-Bibliothek, werden TwinCAT BA PLC Templates als Programmbausteine in die SPS-Programme importiert. Notwendige Anpassungen kann der Systemintegrator bei Bedarf selber durchführen. Darüber hinaus besteht die Möglichkeit, eigene TwinCAT BA PLC Templates zu erstellen. Besondere Werkzeuge sind hierfür nicht notwendig.


Übersicht PLC Templates

Anlageninitialisierung

Name | Beschreibung
BAC_PltIniAlm_01 | Sammlung und Quittierung aller Alarme einer Anlage
BAC_PltIniComnMsg_01 |

Klimaanlage

Aggregat | Name | Beschreibung
Energierückgewinnung | BAC_AC_ErcT_PID_01 | Sequenzregler Energierückgewinnung Temperatur
Kühler | BAC_AC_ColT_PID_01 | Sequenzregler für einen Kühler Temperatur
Mischluft | BAC_AC_MixAT_PID_01 | Sequenzregler Mischluftklappensteuerung
Nacherhitzer | BAC_AC_ReHtr_PID_01 | Sequenzregler Nacherhitzer
Vorerhitzer | BAC_AC_PreHtr_PID_01 | Sequenzregler Vorerhitzer

Start | Beschreibung
BAC_StartOpMod_01 | Startprogramm Lüftung Betriebsart
BAC_StartPltStpT_01 | Schrittweises Anfahren eine RLT-Anlage ohne Be- und Entfeuchtung.
BAC_StartSeqT_01 | Starten und Steuern der Zuluftsequenzregelung einer RLT-Anlage ohne Be- und Entfeuchtung
BAC_StartSumNgtCol | Sommernachtkühlung

Universal

 | Name | Beschreibung
Frequenzumformer | BAC_Uni_FC_xxxxxxxxx | Ansteuerung eines Frequenzumrichters
Klappe | BAC_Uni_Dmp_xxxxxx | Ansteuerung eines stetigen Klappenantriebs
 | BAC_Uni_Dmp2P_xxxxx | Ansteuerung einer Zweipunktklappe
Motor | BAC_Uni_Mot1st_xxxxxxxx | Ansteuerung eines einstufigen Motors
Pumpe | BAC_Uni_Pu1st_xxxxxx | Ansteuerung einer einstufigen Pumpe
Ventil | BAC_Uni_Vlv_xxxxxxx | Ansteuerung eines stetigen Regelventils
 | BAC_Uni_Vlv3P_xxxxxxx | Ansteuerung eines Dreipunktventils

Raumfunktionen Beleuchtung

Name | Beschreibung
BAC_RC_AnlgLgtActr | Template zur Ansteuerung eines analogen Lichtaktors
BAC_RC_CnstLgtCtrl | Template für eine Konstantlichtregelung
BAC__RC_DALI_EM_DT | Dauertest (Duration-Test) von DALI-Notbeleuchtungsgeräten
BAC_RC_DALI_EM_FT | Funktionstest (Function-Test) von DALI-Notbeleuchtungsgeräten
BAC_RC_DALILgtActr | Template zum Ansteuern eines DALI-Lichtaktors
BAC_RC_DALIMSensor02 | Template zum Auslesen eines DALI-Sensors MSensor02 der Firma Tridonic
RC_AnlgLgtActr | Template zur Ansteuerung eines analogen Lichtaktors
RC_DALI | Template für die generelle Nutzung von DALI
RC_DALI_Com | Template zur Kommunikation einer DALI-Linie in der SPS mit einer DALI-Klemme im TwinCAT System Manager
RC_DALI_EM_DT | Dauertest (Duration-Test) von DALI-Notbeleuchtungsgeräten
RC_DALI_EM_FT | Funktionstest (Function-Test) von DALI-Notbeleuchtungsgeräten
RC_DALI_EM_LogFile | Abspeichern der Testergebnisse der Notbeleuchtungstests in einer Datei
RC_DALILgtActr | Template zum Ansteuern eines DALI-Lichtaktors
RC_LgtSwi | Lichtschalter-Template

Übersichtsbilder

Topologie konventionelle DALI-Beleuchtung
Topologie DALI-Notbeleuchtung

Raumfunktionen Verschattung

Name | Beschreibung
BAC_RC_SunBldActr | Jalousie-Aktorfunktion mit zwei internen BACnet-BO-Objekten zur Ansteuerung der Jalousie
BAC_RC_SunBldZone | Zusammenfassung der Hand-/Automatik-Funktionen für eine (Raum-)Zone
BAC_RC_SunCalc | Sonnenstandsberechnung
BAC_RC_SunFcd | Sammeln von Fassaden-spezifischen Informationen / Bereitstellung von Schutz- und Automatikfunktionen
RC_SunBldActr | Jalousie-Aktorfunktion
RC_SunBldSwi | Jalousie-Schaltfunktion

Raumfunktionen Heizen/Kühlen

Name | Beschreibung
BAC_RC_HtgColContin2Pi | Template für ein Zweileitersystem mit zwei kontinuierlichen Reglern für Heizen und Kühlen
BAC_RC_HtgColContin4Pi | Template für ein Vierleitersystem mit zwei kontinuierlichen Reglern für Heizen und Kühlen
BAC_RC_HtgColPWM2Pi | Template für ein Zweileitersystem mit zwei Pulsweiten-modulierten Reglern für Heizen und Kühlen
BAC_RC_HtgColPWM4Pi | Template für ein Vierleitersystem mit zwei Pulsweiten-modulierten Reglern für Heizen und Kühlen
BAC_RC_HtgPWM | Baustein mit pulsweiten-moduliertem Regler für Heizen
BAC_RC_SpRmT | Ausgabe Raumsollwerte
BAC_RC_SpZoneT | Zonenweise Sollwertfestlegung


BAC_PltIniAlm_01

Template zur Sammlung und Quittierung der Alarme einer Anlage

Funktionsbeschreibung

Das Template BAC_PltIniAlm_01 sammelt die Alarme einer Anlage und bildet daraus einen Sammelalarm. Kritische Alarme werden angezeit und können zur Anlagenabschaltung mit dem Anlagenstartprogramm verknüft werden.

Wichtig ist, dass der Alarmsammler AlarmPlt (siehe Programmbeschreibung) und die Alarmausgabebausteine FB_BA_Alarm innerhalb der Templates einer Anlage auf die gleiche Anlagennummer eingestellt sind!

Schnittstelle

VAR_OUTPUT

bAlmShutOff:BOOL;
bRst:BOOL;

bAlmShutOff: Ein anlagenabschalternder Alarm ist aktiv.

bRst: Bei einer ausgelösten Quittierung steht dieser Ausgang für einen Zyklus an. Der Impuls kann zum Quittieren von Störungen genutzt werden.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Analgennummer für den Alarmsammler AlarmPlt (siehe Programmbeschreibung)

Programmbeschreibung

Instanz | Typ | Aufgabe
Rst | FB_BACnetBV1204 | BV-Objekt zur lokalen Quittierung des Anlagensammelalarms.
Rst_rtrig | R_TRIG | Der Baustein Rst_rtrig wertet die steigende Flanke der lokalen Quittierng vom BV-Objekt Rst aus.
 | OR | Die Oderverknüpfung fast die lokale Quittierung vom BACnet-Objekt und die globale Störmeldungsquittierung zusammen
AlarmPlt | FB_BA_AlarmPlt | Der Funktionsbaustein AlarmPlt ist der zentrale Baustein dieses Templates. Er sammelt die Alarme einer Anlage ein und bündelt diese zu einem Sammelalarm. Erzeugt werden die Alarme innerhalb der anlagenzugehörigen Tempates durch den Baustein FB_BA_Alarm. Die Zurodnung der Alarme zu einer Anlage erfolgt über die Anlagennummer. Wichtig ist, dass der Alarmsammler AlarmPlt und die Alarmausgabebausteine FB_BA_Alarm innerhalb der Templates einer Anlage auf die gleiche Anlagennummer eingestellt sind! Die Anlagennummer PLT_NUM kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.
PrioSwi | FB_BA_PrioSwi_B04 | Bei einem nicht quittierten Alarm wird der Ausgang bNewAlarm des Funktionsbausteins AlarmPlt TRUE. In diesem Fall wird vom Prioritätenschalter PrioSwi ein Blinksignal an den Ausgang bVal druchgeschaltet. Ein neuer nicht quittierter Alarm steht an. (Neuwertmeldung). Bei einem anstehenden aber quittierten Alarm wird vom Prioritätenschalter ein TRUE durchgeschaltet. Der Ausgang bVal ist dauerhaft an.
AlmInd | FB_BACnetBV1204 | Anzeige der Sammelalarme einer Anlage mit Neuwertmeldung.


BAC_AC_ErcT_PID_01

Sequenzregler Energierückgewinnung

Funktionsbeschreibung

Das Template BAC_AC_ErcT_PID_01 ist der Sequenzregler für eine Energierückgewinnung.

Schnittstelle

VAR_INPUT

rX         : REAL;
rW         : REAL;
bDeHum     : BOOL;
bSync      : BOOL;
rFdb       : REAL;
rExtAT     : REAL;
udiPltStp  : UDINT;
udiOpMod   : UDINT;

rX: Istwert der Zulufttemperatur

rW: Sollwert der Zulufttemperatur

bDeHum: Entfeuchtung aktiv, Sperrung der Freigabe des Zulufttemperaturregler

bSync: Eingang für die Synchronisation des Reglers

rFdb: Stellungsrückmeldung Aktor

rExtAT: Ablufttemperatur

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rY        : REAL;
bEn       : BOOL;
bActn     : BOOL;

rY: Ausgabe der Stellgröße

bEn: Freigabe der Regelung Energierückgewinnung

bActn: Wirksinn des Zuluftreglers, wird benötigt für die Sollwertstrategie; TRUE = Direct = Kühlen; FALSE = Reverse = Heizen

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Struktur zur Kommunikation mit dem Sequenzlinker im Template BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Istwert-Eingang des BACnet-Loop-Objektes
W | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Sequenzreglers in Abhängigkeit der Anlagenbetriebsart.
udiOpMod |  | Freigabe | Bemerkung
OPMOD_AC_MANON | Hand ein | TRUE | Die Anlage ist manuell über den Anlagenwahlschalter eingeschaltet
OPMOD_AC_ON | Ein | TRUE | Die Anlage läuft im Automatikbetrieb über das Zeitschaltprogramm
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | TRUE | Die Anlage läuft in der Betriebsart Überhitzungsschutz
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | TRUE | Die Anlage läuft in der Betriebsart Auskühlschutz
OPMOD_AC_FORCVENT | Zwangsbelüftung | TRUE | Die Anlage läuft in der Betriebsart Die Anlage läuft in der Betriebsart Zwangsbelüftung
En FB_BACnetBV1204 Das BV-Objekt dient zur Steuerung der Reglerfreigabe und zur Anzeige in der MBE.
Die Freigabe des Reglers erfolgt in Abhängigkeit der Anlagenbetriebsart.
AND | Durch das kleine Netzwerk bestehend aus den zwei AND-Bausteinen wird die Energierückgewinnung im Heizfall (bQ von FB FB_BA_Swi2P = FALSE) und gleichzeitigen Entfeuchtebetrieb der RLT-Anlage ( bDeHum = TRUE) gesperrt.
Actn FB_BA_Swi2P Der Funktionsbaustein FB_BA_Swi2P bestimmt den Wirksinn des Sequenzreglers.
Ist die Subtraktion von der Außentemperatur und der Ablufttemperatur < - 0,25, dann ist der Ausgang des Funktionsbausteins Actn FALSE.
Der Wirksinn des Loop-Objektes ist damit indirekt und die Energierückgewinnung befindet sich im Heizbetrieb.
Ist die Subtraktion von der Außentemperatur und der Ablufttemperatur > + 0,25, dann ist der Ausgang des Funktionsbausteins Actn TRUE.
Der Wirksinn des Loop-Objektes ist damit direkt und die Energierückgewinnung befindet sich im Kühlbetrieb.
Die Hystere zwischen - 0.25 und + 0,25 des Funktionsbausteins Actn verhindert ein häufiges Umschalten des Reglerwirksinns bei annähernd gleicher Außen- und Ablufttemperatur.
EnEvtEn FB_BA_LmtCtrl Das BACnet-Loop-Objekt PID überwacht die Funktion der Regelung in dem es den Sollwert W und den Istwert X miteinander vergleicht. Ist die Abweichung W-X größer als das Property ErrorLimit, dann sendet das Loop-Objekt eine Meldung an die MBE.

Beim Anlagenstillstand, im Moment des Starts und bis zum eingeregelten Zustand der Anlage wird das Melden des Loop-Objketes unterdrückt, damit keine falschen Meldungen an die MBE gesendet werden. Erst wenn die RLT-Anlage vollständig hochgefahren ist und die Regelung sich eingependelt hat, wird das Melden des Loop-Objektes freigegeben. Zusätzlich wird das Melden aktiviert, wenn die Regelung nach langer Zeit nicht in dem vom Property ErrorLimit definierten Bereich um den Sollwert gelangt ist.

Die Freigabe des objektinternen Meldens erfolgt indem auf die BACnetEventTransitionBits des Loop-Objektes geschrieben wird.

Für die Freigabe des Meldens vom Loop-Objekt müssen die folgenden Bedingungen erfüllt sein:

1.
Das Anlagenstartprogramm BAC_StartPltStpT_01 hat die Überwachung der Regelung und die Grenzwertüberwachung der Fühler freigegeben
udiPltStp >= PLTSTP_AC_ENLMTMONIT
und
Die Energierückgewinnung ist der aktive Regler in der Regelsequnez. stSeqLink.usiCurCtrl = SEQNUM_T_ERC
und
Die Zulufttemperatur hat sich dem Sollwert so weit angenähert, dass sie sich in einem Bereich zwischen rSp - ErrorLimit und rSp + ErrorLimit eingependelt hat.
und
Die Zulufttemperatur muss mindestens für die Dauer von EnEvtEn_udiTiSttDly innerhalb des Bereiches von rSp - ErrorLimit und rSp + ErrorLimit verblieben sein.

2.
Der Timer EnEvtEn_udiTiSttAuto ist abgelaufen und die Regelung hat Ihren Sollwertbereich nicht erreicht.
F_BA_EvtTrans | schreibt auf die BACnetEventTransitionBits to_offnormal, to_fault und to_normal des Loop-Objektes. Dazu muss der Eingang bEnEvtEn = TRUE sein
PID | FB_BACnetLoopSeq1202 | Sequenzregler Zulufttemperatur Energierückgewinnung.
rtrigSync R_TRIG Bei einer steigenden Flanke am Eingang bSync wird das Loop-Objekt auf den Wert von lrSync aufsynchronisiert.
Wenn der Aktor der Energierückgewinnung durch Schreiben einer höheren Priorität auf das zugehörige AO-Objekt, von der MBE oder durch Betätigen der örtlichen Vorrangbedienung übersteuert wurde, weicht die aktuelle Position des Aktors von dem Ausgang des Loop-Objektes ab. Mit den Variablen bSync und rFdbVlv kann die Synchronität zwischen der Position des Aktors und dem Regler wieder hergestellt werden.
Y | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_ExhADmp2P_xx

Baugruppe Fortluftklappe

Funktionsbeschreibung

Das Template BAC_AC_ExhADmp2P_xx ist für die Ansteuerung und Überwachung einer Fortluftklappe mit einem Federrücklaufantrieb und Endlagenkontrolle. Die Ansteuerung der Klappe erfolgt mit einem binären Ausgang.

Hinweis Die Ausgangsvariable bOpn gibt nur dann den tatsächlichen Zustand der Klappe aus, wenn in dem eingesetzten Template die Rückmeldung des Endlagenschalters SwiOpn vorhanden ist.

Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bOpn = TRUE.
Dieses hat zur Folge haben, dass in dem Startprogramm einer Lüftungsanlage eine Verzögerungszeit zum Auffahren der Klappe angegeben werden muss.

Das Template BAC_AC_ExhADmp2P_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Klappen werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | mechanische Vorrangbedienung Rückmeldung Handschalter | mechanische Vorrangbedienung Rückmeldung Relaisausgang | Endlage Auf | Endlage Zu
Instanz | LocSwi | FdbOut | SwiOpn | SwiCls
Datenpunkt Typ | BI | BI | BI | BI
 | 8 | 4 | 2 | 1
BAC_AC_ExhADmp2P_15 | 1 | 1 | 1 | 1

Schnittstelle

VAR_INPUT

udiPltStp  : UDINT;
udiOpMod   : UDINT;

udiPltStp: Schritte beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

bOpn      : BOOL;

bOpn: Endlage Offen der Klappe ist erreicht.
Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bOpn = TRUE.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
SwiOpn | FB_BACnetBI1203 | X | BI-Objekt für den Anschluss des Endlagenschalters Offen
SwiCls | FB_BACnetBI1203 | X | BI-Objekt für den Anschluss des Endlagenschalters Zu
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung der Klappe von der MBE oder einem lokalen Bediendisplay
LocSwi | FB_BACnetBI1203 | X | BI-Objekt für für die Rückmeldung einer mechanischen Vorrangbedienung. (Hand/Not-Bedienebene)
FdbOut | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Relais
TiOpn | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe des Wertes für die Auffahrzeit
TiCls | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe des Wertes für die Zufahrzeit
OpModSfty FB_BA_MMUX_B04 Der Multiplexer definiert die Priorität Safty/Sicherheit der Fortluftklappe in Abhängigkeit der Anlagenbetriebsart udiOpMod
udiOpMod |  | Zustand Klappe | Bemerkung
OPMOD_AC_SMEXTTPRG | Entrauchung Programm | Öffnen |
OPMOD_AC_SMEXTTSUA | Entrauchung Zuluft | Schliessen |
OPMOD_AC_SMEXTTEXHA | Entrauchung Fortluft | Öffnen |
OPMOD_AC_FIRE | Feuer | Schliessen |
OpModDst FB_BA_MMUX_B08 Der Multiplexer definiert die Priorität Disturbance/Störung der Fortluftklappe in Abhängigkeit der Anlagenbetriebsart udiOpMod
udiOpMod |  | Zustand Klappe | Bemerkung
OPMOD_AC_FORCVENT | Zwangsbelüftung | Öffnen |
OPMOD_AC_EMERG | Notfall | Schliessen |
OPMOD_AC_FRST | Frost | Schliessen |
OPMOD_AC_CENTSWIOFF | Zentralabschaltung | Schliessen |
OPMOD_AC_ALM | Störung | Schliessen |
OpModPrio
RSOpMod 		FB_BA_MMUX_B08
RS 		Der Multiplexer definiert die Anlagenbetriebsart udiOpMod.
 Die Funktion RSOpMod soll verhindern, dass die Luftklappe im laufenden Prozess/Ventilatoren bei einem Wechsel der Betriebsart sofort schließt. Vom Startprogramm her ist es so vorgesehen, dass bei einem Wechsel der Betriebsart die Anlage herunter fährt und dann neu startet.
udiOpMod |  | Zustand Klappe | Bemerkung
OPMOD_AC_MANON | Hand ein | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_ON | Ein | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_NGTCOL | Nachtkühlung | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
BO FB_BACnetBO1203 BO-Objekt für die Ansteuerung der Klappe
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | siehe Multiplexer OpModSfty udiOpMod | siehe Multiplexer OpModSfty Zustand Klappe |
PRIO_DISTURBANCE (3) | siehe Multiplexer OpModDst udiOpMod | siehe Multiplexer OpModDst Zustand Klappe |
PRIO_LOCAL (8) | Das OR-Modul bündelt Ereignisse welche das Schreiben auf die Priorität Manuelle Übersteuerung (Local) des nachgeschalteten BO-Objektes aktiviert. Ereignisse: 1. Das MV-Objekt hat den Wert OPMOD_MAN_OFF (Hand Aus) 2. Das MV-Objekt hat den Wert OPMOD_MAN_STP01(Hand Ein) | Öffnen, wenn OpMod_udiPrVal = OPMOD_MAN_STP01 Ansonsten schliessen |
PRIO_PROGRAM (15) | TRUE | Wenn der Anlagenschritt udiPltStp >= PLTSTP_AC_DMP ist, dann soll die Klappe öffnen |
MoveCtrlOpn | FB_BA_SwiMonit | X | Funktionsbaustein welcher die Endlage Auf der Klappe überwacht
MoveCtrlCls | FB_BA_SwiMonit | X | Funktionsbaustein welcher die Endlage Zu der Klappe überwacht
AlmFnct FB_BA_Alarm x Der Funktionsbaustein AlmFnct erfasst das Ereignis der Überwachung der Endlagenschalter.
Aktionen, die nach dem Eingang der Endlagenschalterstörung erfolgen soll, können im Template am Funktionsbaustein AlmFnct parametriert werden.
Alm | FB_BACnetBV1204 | x | BV-Objekt zur Anzeige der Klappenstörung in der MBE


BAC_AC_OuADmp2P_xx

Baugruppe Aussenluftklappe

Funktionsbeschreibung

Das Template BAC_AC_OuADmp2P_xx ist für die Ansteuerung und Überwachung einer Aussenluftklappe mit einem Federrücklaufantrieb und Endlagenkontrolle. Die Ansteuerung der Klappe erfolgt mit einem binären Ausgang.

Hinweis Die Ausgangsvariable bOpn gibt nur dann den tatsächlichen Zustand der Klappe aus, wenn in dem eingesetzten Template die Rückmeldung des Endlagenschalters SwiOpn vorhanden ist.

Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bOpn = TRUE.
Dieses hat zur Folge haben, dass in dem Startprogramm einer Lüftungsanlage eine Verzögerungszeit zum Auffahren der Klappe angegeben werden muss.

Das Template BAC_AC_OuADmp2P_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Klappen werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | mechanische Vorrangbedienung Rückmeldung Handschalter | mechanische Vorrangbedienung Rückmeldung Relaisausgang | Endlage Auf | Endlage Zu
Instanz | LocSwi | FdbOut | SwiOpn | SwiCls
Datenpunkt Typ | BI | BI | BI | BI
 | 8 | 4 | 2 | 1
BAC_AC_OuADmp2P_15 | 1 | 1 | 1 | 1

Schnittstelle

VAR_INPUT

udiPltStp  : UDINT;
udiOpMod   : UDINT;

udiPltStp: Schritte beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

bOpn      : BOOL;

bOpn: Endlage Offen der Klappe ist erreicht.
Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bOpn = TRUE.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
SwiOpn | FB_BACnetBI1203 | X | BI-Objekt für den Anschluss des Endlagenschalters Offen
SwiCls | FB_BACnetBI1203 | X | BI-Objekt für den Anschluss des Endlagenschalters Zu
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung der Klappe von der MBE oder einem lokalen Bediendisplay
LocSwi | FB_BACnetBI1203 | X | BI-Objekt für für die Rückmeldung einer mechanischen Vorrangbedienung. (Hand/Not-Bedienebene)
FdbOut | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Relais
TiOpn | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe des Wertes für die Auffahrzeit
TiCls | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe des Wertes für die Zufahrzeit
OpModSfty FB_BA_MMUX_B04 Der Multiplexer definiert die Priorität Safty/Sicherheit der Aussenluftklappe in Abhängigkeit der Anlagenbetriebsart udiOpMod
udiOpMod |  | Zustand Klappe | Bemerkung
OPMOD_AC_SMEXTTPRG | Entrauchung Programm | Öffnen |
OPMOD_AC_SMEXTTSUA | Entrauchung Zuluft | Schliessen |
OPMOD_AC_SMEXTTEXHA | Entrauchung Aussenluft | Öffnen |
OPMOD_AC_FIRE | Feuer | Schliessen |
OpModDst FB_BA_MMUX_B08 Der Multiplexer definiert die Priorität Disturbance/Störung der Aussenluftklappe in Abhängigkeit der Anlagenbetriebsart udiOpMod
udiOpMod |  | Zustand Klappe | Bemerkung
OPMOD_AC_FORCVENT | Zwangsbelüftung | Öffnen |
OPMOD_AC_EMERG | Notfall | Schliessen |
OPMOD_AC_FRST | Frost | Schliessen |
OPMOD_AC_CENTSWIOFF | Zentralabschaltung | Schliessen |
OPMOD_AC_ALM | Störung | Schliessen |
OpModPrio
RSOpMod 		FB_BA_MMUX_B08
RS 		Der Multiplexer definiert die Anlagenbetriebsart udiOpMod.
 Die Funktion RSOpMod soll verhindern, dass die Luftklappe im laufenden Prozess/Ventilatoren bei einem Wechsel der Betriebsart sofort schließt. Vom Startprogramm her ist es so vorgesehen, dass bei einem Wechsel der Betriebsart die Anlage herunter fährt und dann neu startet.
udiOpMod |  | Zustand Klappe | Bemerkung
OPMOD_AC_MANON | Hand ein | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_ON | Ein | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_NGTCOL | Nachtkühlung | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | Klappe schliesst erst, wenn der Anlagenschritt udiPltStp < PLTSTP_AC_DMP nicht mehr gefordert ist |
BO FB_BACnetBO1203 BO-Objekt für die Ansteuerung der Klappe
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | siehe Multiplexer OpModSfty udiOpMod | siehe Multiplexer OpModSfty Zustand Klappe |
PRIO_DISTURBANCE (3) | siehe Multiplexer OpModDst udiOpMod | siehe Multiplexer OpModDst Zustand Klappe |
PRIO_LOCAL (8) | Das OR-Modul bündelt Ereignisse welche das Schreiben auf die Priorität Manuelle Übersteuerung (Local) des nachgeschalteten BO-Objektes aktiviert. Ereignisse: 1. Das MV-Objekt hat den Wert OPMOD_MAN_OFF (Hand Aus) 2. Das MV-Objekt hat den Wert OPMOD_MAN_STP01(Hand Ein) | Öffnen, wenn OpMod_udiPrVal = OPMOD_MAN_STP01 Ansonsten schliessen |
PRIO_PROGRAM (15) | TRUE | Wenn der Anlagenschritt udiPltStp >= PLTSTP_AC_DMP ist, dann soll die Klappe öffnen |
MoveCtrlOpn | FB_BA_SwiMonit | X | Funktionsbaustein welcher die Endlage Auf der Klappe überwacht
MoveCtrlCls | FB_BA_SwiMonit | X | Funktionsbaustein welcher die Endlage Zu der Klappe überwacht
AlmFnct FB_BA_Alarm x Der Funktionsbaustein AlmFnct erfasst das Ereignis der Überwachung der Endlagenschalter.
Aktionen, die nach dem Eingang der Endlagenschalterstörung erfolgen soll, können im Template am Funktionsbaustein AlmFnct parametriert werden.
Alm | FB_BACnetBV1204 | x | BV-Objekt zur Anzeige der Klappenstörung in der MBE


BAC_AC_ColT_01

Aufruftemplate eines Kaltwasser-Luftkühler

Anwendung

Das Template BAC_AC_ColT_01 dient zur Steuerung und Regelung eines Kaltwasser-Luftkühler.

Die wesentlichen Aufgaben des Templates sind:

  • Regelung der Zulufttemperatur
  • Freigabe der Kühlerpumpe
  • Ansteuerung des Regelventils

Schnittstelle

Anlagenschema

VAR_INPUT

rSuAT          : REAL;
rSpCol         : REAL;
udiPltStp      : UDINT;
udiOpMod       : UDINT;

rSuAT: Eingangsvariable an der die Zulufttemperatur angelegt wird. Die Zulufttemperatur ist die Regelgröße des Zuluftreglers PID.

rSpCol: Eingangsvariable an der der Zulufttemperatursollwert angelegt wird. Der Zulufttemperatursollwert ist der Sollwert des Zuluftreglers PID.

udiPltStp: Schritte beim Anfahren der RLT-Anlage. Siehe BAC_StartPltStpT_01

udiOpMod: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Datenstrukur zur Kommunikation der Sequenzregler (PID) einer Anlage mit dem Sequenzlinker. Siehe BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
ValueEnPu | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Einschaltpunktes der Pumpe in Abhängigkeit der Stellung des Regelventils. Ist das Regelventil mehr als der Present Value von ValueEnPu geöffnet, schaltet die Kühlerpumpe ein. Unterhalb von 0,5% schaltet die Pumpe wieder aus.
PID | BAC_AC_ColT_PID_01 | Template Zulufttemperaturregelung, Sequenzregler
HysEnPu | FB_BA_Swi2P | Der Funktionsbaustein HysEnPu ist ein Zweipunktschalter und schaltet die Kühlerpumpe in Abhängigkeit einer Hysterese ein und aus. Die Stellgröße für das Regelventil dient als Eingangsgröße für den Zweipunktschalter.
Vlv | BAC_Uni_Vlv_13 | Template zur Ansteuerung eines stetigen Ventils
Pu | BAC_Uni_Pu1st_61 | Template zur Ansteuerung einer einstufigen Pumpe

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_ColT_PID_01

Sequenzregler für einen Kühler

Funktionsbeschreibung

Das Template BAC_AC_ColT_PID_01 ist der Sequenzregler für einen Kühler ohne Entfeuchtung. .

Schnittstelle

VAR_INPUT

rX         : REAL;
rW         : REAL;
bSync      : BOOL;
rFdbVlv    : REAL;
udiPltStp  : UDINT;
udiOpMod   : UDINT;

rX: Istwert der Zulufttemperatur

rW: Sollwert der Zulufttemperatur

bSync: Eingang für die Synchronisation des Reglers

rFdbVlv: Stellungsrückmeldung des Ventils

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rY        : REAL;

rY: Ausgabe der Stellgröße für das Regelventil

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Struktur zur Kommunikation mit dem Sequenzlinker im Template BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Istwert-Eingang des BACnet-Loop-Objektes
W | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Sequenzreglers in Abhängigkeit der Anlagenbetriebsart.
udiOpMod |  | Freigabe | Bemerkung
OPMOD_AC_MANON | Hand ein | TRUE | Die Anlage ist manuell über den Anlagenwahlschalter eingeschaltet
OPMOD_AC_ON | Ein | TRUE | Die Anlage läuft im Automatikbetrieb über das Zeitschaltprogramm
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | TRUE | Die Anlage läuft in der Betriebsart Überhitzungsschutz
En FB_BACnetBV1204 Das BV-Objekt dient zur Anzeige und Aktivierung der Reglerfreigabe in der MBE oder in einen lokalen Bediendisplay.
Die Freigabe des Reglers erfolgt in Abhängigkeit der Anlagenbetriebsart.
EnEvtEn FB_BA_LmtCtrl Das BACnet-Loop-Objekt PID überwacht die Funktion der Regelung in dem es den Sollwert W und den Istwert X miteinander vergleicht. Ist die Abweichung W-X größer als das Property ErrorLimit, dann sendet das Loop-Objekt eine Meldung an die MBE.

Beim Anlagenstillstand, im Moment des Starts und bis zum eingeregelten Zustand der Anlage wird das Melden des Loop-Objketes unterdrückt, damit keine falschen Meldungen an die MBE gesendet werden. Erst wenn die RLT-Anlage vollständig hochgefahren ist und die Regelung sich eingependelt hat, wird das Melden des Loop-Objektes freigegeben. Zusätzlich wird das Melden aktiviert, wenn die Regelung nach langer Zeit nicht in dem vom Property ErrorLimit definierten Bereich um den Sollwert gelangt ist.

Die Freigabe des objektinternen Meldens erfolgt indem auf die BACnetEventTransitionBits des Loop-Objektes geschrieben wird.

Für die Freigabe des Meldens vom Loop-Objekt müssen die folgenden Bedingungen erfüllt sein:

1.
Das Anlagenstartprogramm BAC_StartPltStpT_01 hat die Überwachung der Regelung und die Grenzwertüberwachung der Fühler freigegeben
udiPltStp >= PLTSTP_AC_ENLMTMONIT
und
Der Kühlerregler ist der aktive Regler in der Regelsequnez. stSeqLink.usiCurCtrl = SEQNUM_T_COL
und
Die Zulufttemperatur hat sich dem Sollwert so weit angenähert, dass sie sich in einem Bereich zwischen rSp - ErrorLimit und rSp + ErrorLimit eingependelt hat.
und
Die Zulufttemperatur muss mindestens für die Dauer von EnEvtEn_udiTiSttDly innerhalb des Bereiches von rSp - ErrorLimit und rSp + ErrorLimit verblieben sein.

2.
Der Timer EnEvtEn_udiTiSttAuto ist abgelaufen und die Regelung hat Ihren Sollwertbereich nicht erreicht.
F_BA_EvtTrans | schreibt auf die BACnetEventTransitionBits to_offnormal, to_fault und to_normal des Loop-Objektes. Dazu muss der Eingang bEnEvtEn = TRUE sein
PID | FB_BACnetLoopSeq1202 | Sequenzregler Zulufttemperatur Kühler.
rtrigSync R_TRIG Bei einer steigenden Flanke am Eingang bSync wird das Loop-Objekt auf den Wert von lrSync aufsynchronisiert.
Wenn das Regelventil des Kühlers durch Schreiben einer höheren Priorität auf das zugehörige AO-Objekt von der MBE oder durch Betätigen der örtlichen Vorrangbedienung übersteuert wurde, weicht die aktuelle Position des Regelventils von dem Ausgang des Loop-Objektes ab. Mit den Variablen bSync und rFdbVlv kann die Synchronität zwischen der Position des Regelventils und dem Regler wieder hergestellt werden.
Y | FB_BACnetAV1204 | Dass AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_MixAT_PID_01

Sequenzregler Mischluftklappensteuerung

Funktionsbeschreibung

Das Template BAC_AC_MixAT_PID_01 ist der Sequenzregler für eine Mischluftklappensteuerung.

Schnittstelle

VAR_INPUT

rX         : REAL;
rW         : REAL;
bSync      : BOOL;
rFdb       : REAL;
rExtAT     : REAL;
udiPltStp  : UDINT;
udiOpMod   : UDINT;

rX: Istwert der Zulufttemperatur

rW: Sollwert der Zulufttemperatur

bSync: Eingang für die Synchronisation des Reglers

rFdb: Stellungsrückmeldung Umluftklappe

rExtAT: Ablufttemperatur

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rY        : REAL;

rY: Ausgabe der Stellgröße

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Struktur zur Kommunikation mit dem Sequenzlinker im Template BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Istwert-Eingang des BACnet-Loop-Objektes
W | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Sequenzreglers in Abhängigkeit der Anlagenbetriebsart.
udiOpMod |  | Freigabe | Bemerkung
OPMOD_AC_MANON | Hand ein | TRUE | Die Anlage ist manuell über den Anlagenwahlschalter eingeschaltet
OPMOD_AC_ON | Ein | TRUE | Die Anlage läuft im Automatikbetrieb über das Zeitschaltprogramm
En FB_BACnetBV1204 Das BV-Objekt dient zur Steuerung der Reglerfreigabe und zur Anzeige in der MBE.
Die Freigabe des Reglers erfolgt in Abhängigkeit der Anlagenbetriebsart.
Actn FB_BA_Swi2P Der Funktionsbaustein FB_BA_Swi2P bestimmt den Wirksinn des Sequenzreglers.
Ist die Subtraktion von der Ablufttemperatur und der Außentemperatur < - 0,25, dann ist der Ausgang des Funktionsbausteins Actn FALSE.
Der Wirksinn des Loop-Objektes ist damit indirekt und die Mischluftklappensteuerung befindet sich im Heizbetrieb.
Ist die Subtraktion von der Ablufttemperatur und der Außentemperatur > + 0,25, dann ist der Ausgang des Funktionsbausteins Actn TRUE.
Der Wirksinn des Loop-Objektes ist damit direkt und die Mischluftklappensteuerung befindet sich im Kühlbetrieb.
Die Hystere zwischen - 0.25 und + 0,25 des Funktionsbausteins Actn verhindert ein häufiges Umschalten des Reglerwirksinns bei annähernd gleicher Außen- und Ablufttemperatur.
EnEvtEn FB_BA_LmtCtrl Das BACnet-Loop-Objekt PID überwacht die Funktion der Regelung in dem es den Sollwert W und den Istwert X miteinander vergleicht. Ist die Abweichung W-X größer als das Property ErrorLimit, dann sendet das Loop-Objekt eine Meldung an die MBE.

Beim Anlagenstillstand, im Moment des Starts und bis zum eingeregelten Zustand der Anlage wird das Melden des Loop-Objketes unterdrückt, damit keine falschen Meldungen an die MBE gesendet werden. Erst wenn die RLT-Anlage vollständig hochgefahren ist und die Regelung sich eingependelt hat, wird das Melden des Loop-Objektes freigegeben. Zusätzlich wird das Melden aktiviert, wenn die Regelung nach langer Zeit nicht in dem vom Property ErrorLimit definierten Bereich um den Sollwert gelangt ist.

Die Freigabe des objektinternen Meldens erfolgt indem auf die BACnetEventTransitionBits des Loop-Objektes geschrieben wird.

Für die Freigabe des Meldens vom Loop-Objekt müssen die folgenden Bedingungen erfüllt sein:

1.
Das Anlagenstartprogramm BAC_StartPltStpT_01 hat die Überwachung der Regelung und die Grenzwertüberwachung der Fühler freigegeben
udiPltStp >= PLTSTP_AC_ENLMTMONIT
und
Der Mischluftklappenregler ist der aktive Regler in der Regelsequnez. stSeqLink.usiCurCtrl = SEQNUM_T_MIX
und
Die Zulufttemperatur hat sich dem Sollwert so weit angenähert, dass sie sich in einem Bereich zwischen rSp - ErrorLimit und rSp + ErrorLimit eingependelt hat.
und
Die Zulufttemperatur muss mindestens für die Dauer von EnEvtEn_udiTiSttDly innerhalb des Bereiches von rSp - ErrorLimit und rSp + ErrorLimit verblieben sein.

2.
Der Timer EnEvtEn_udiTiSttAuto ist abgelaufen und die Regelung hat Ihren Sollwertbereich nicht erreicht.
F_BA_EvtTrans | schreibt auf die BACnetEventTransitionBits to_offnormal, to_fault und to_normal des Loop-Objektes. Dazu muss der Eingang bEnEvtEn = TRUE sein
PID | FB_BACnetLoopSeq1202 | Sequenzregler Zulufttemperatur Mischluftklappensteuerung
rtrigSync R_TRIG Bei einer steigenden Flanke am Eingang bSync wird das Loop-Objekt auf den Wert von lrSync aufsynchronisiert.
Wenn die Umluftklappe der Mischluftklappensteuerung durch Schreiben einer höheren Priorität auf das zugehörige AO-Objekt von der MBE oder durch Betätigen der örtlichen Vorrangbedienung übersteuert wurde, weicht die aktuelle Position der Klappe von dem Ausgang des Loop-Objektes ab. Mit den Variablen bSync und rFdb kann die Synchronität zwischen der Position der Umluftklappe und dem Regler wieder hergestellt werden.
Y | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_ReHtr_01

Aufruftemplate eines Nacherhitzers

Anwendung

Das Template BAC_AC_ReHtr_01 dient zur Steuerung und Regelung eines Nacherhitzers.

Die wesentlichen Aufgaben des Templates sind:

  • Regelung der Zulufttemperatur
  • Freigabe der Pumpe
  • Ansteuerung des Regelventils

Schnittstelle

Anlagenschema

VAR_INPUT

rSuAT          : REAL;
rSpHtg         : REAL;
udiPltStp      : UDINT;
udiOpMod       : UDINT;
bWthTLmttCrit  : BOOL;

rSuAT: Eingangsvariable an der die Zulufttemperatur angelegt wird. Die Zulufttemperatur ist die Regelgröße des Zuluftreglers SuA_PID.

rSpHtg: Eingangsvariable an der der Zulufttemperatursollwert angelegt wird. Der Zulufttemperatursollwert ist der Sollwert des Zuluftreglers SuA_PID.

udiPltStp: Schritte beim Anfahren der RLT-Anlage. Siehe BAC_StartPltStpT_01

udiOpMod: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

bWthTLmtCrit: Eingangsvariable Witterungstemperatur kritisch. Siehe BAC_StartSeqT_01

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Datenstrukur zur Kommunikation der Sequenzregler (SuA_PID) einer Anlage mit dem Sequenzlinker. Siehe BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
ValueEnPu | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Einschaltpunktes der Pumpe in Abhängigkeit der Stellung des Regelventils. Ist das Regelventil mehr als der Present Value von ValueEnPu geöffnet, schaltet die Erhitzerpumpe ein. Unterhalb von 0,5% schaltet die Pumpe wieder aus.
SuA_PID | BAC_AC_PreHtr_PID_01 | Template Zulufttemperaturregelung, Sequenzregler
HysEnPu | FB_BA_Swi2P | Der Funktionsbaustein HysEnPu ist ein Zweipunktschalter und schaltet die Erhitzerpumpe in Abhängigkeit einer Hysterese ein und aus. Die Stellgröße für das Regelventil dient als Eingangsgröße für den Zweipunktschalter.
 | OR | Die Pumpe wird aus dem Programm heraus entweder vom Zweipunktschalter HysEnPu ODER von der Eingangsvariable Witterungstemperatur kritisch bWthTLmtCrit eingeschaltet.
Vlv | BAC_Uni_Vlv_13 | Template zur Ansteuerung eines stetigen Ventils
Pu | BAC_Uni_Pu1st_61 | Template zur Ansteuerung einer einstufigen Pumpe

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_ReHtr_PID_01

Sequenzregler für einen Nacherhitzer

Funktionsbeschreibung

Das Template BAC_AC_ReHtr_PID_01 ist der Sequenzregler für einen Nacherhitzer.

Schnittstelle

VAR_INPUT

rX         : REAL;
rW         : REAL;
bSync      : BOOL;
rFdbVlv    : REAL;
udiPltStp  : UDINT;
udiOpMod   : UDINT;

rX: Istwert der Zulufttemperatur

rW: Sollwert der Zulufttemperatur

bSync: Eingang für die Synchronisation des Reglers

rFdbVlv: Stellungsrückmeldung des Ventils

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rY        : REAL;

rY: Ausgabe der Stellgröße für das Regelventil

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Struktur zur Kommunikation mit dem Sequenzlinker im Template BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Istwert-Eingang des BACnet-Loop-Objektes
W | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Sequenzreglers in Abhängigkeit der Anlagenbetriebsart.
udiOpMod |  | Freigabe | Bemerkung
OPMOD_AC_MANON | Hand ein | TRUE | Die Anlage ist manuell über den Anlagenwahlschalter eingeschaltet
OPMOD_AC_ON | Ein | TRUE | Die Anlage läuft im Automatikbetrieb über das Zeitschaltprogramm
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | TRUE | Die Anlage läuft in der Betriebsart Auskühlschutz
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Loop-Objkets in Abhängigkeit der Anlagenbetriebsart.

Die Freibabe des Nacherhitzers erfolgt bei den Betriebsarten:
1. udiEN02 = OPMOD_AC_MANON (Die Anlage ist manuell über den Anlagenwahlschalter eingeschaltet)
2. udiEN04 = OPMOD_AC_ON (Die Anlage läuft im Automatikbetrieb über das Zeitschaltprogramm)
3. udiEN06 = OPMOD_AC_COLDWNPRTC (Die Anlage läuft in der Betriebsart Auskühlschutz)
En FB_BACnetBV1204 Das BV-Objekt dient zur Anzeige und Aktivierung der Reglerfreigabe in der MBE oder in einen lokalen Bediendisplay.
Die Freigabe des Reglers erfolgt in Abhängigkeit der Anlagenbetriebsart.
EnEvtEn FB_BA_LmtCtrl Das BACnet-Loop-Objekt PID überwacht die Funktion der Regelung in dem es den Sollwert W und den Istwert X miteinander vergleicht. Ist die Abweichung W-X größer als das Property ErrorLimit, dann sendet das Loop-Objekt eine Meldung an die MBE.

Beim Anlagenstillstand, im Moment des Starts und bis zum eingeregelten Zustand der Anlage wird das Melden des Loop-Objketes unterdrückt, damit keine falschen Meldungen an die MBE gesendet werden. Erst wenn die RLT-Anlage vollständig hochgefahren ist und die Regelung sich eingependelt hat, wird das Melden des Loop-Objektes freigegeben. Zusätzlich wird das Melden aktiviert, wenn die Regelung nach langer Zeit nicht in dem vom Property ErrorLimit definierten Bereich um den Sollwert gelangt ist.

Die Freigabe des objektinternen Meldens erfolgt indem auf die BACnetEventTransitionBits des Loop-Objektes geschrieben wird.

Für die Freigabe des Meldens vom Loop-Objekt müssen die folgenden Bedingungen erfüllt sein:

1.
Das Anlagenstartprogramm BAC_StartPltStpT_01 hat die Überwachung der Regelung und die Grenzwertüberwachung der Fühler freigegeben
udiPltStp >= PLTSTP_AC_ENLMTMONIT
und
Der Nacherhitzerregler ist der aktive Regler in der Regelsequnez. stSeqLink.usiCurCtrl = SEQNUM_T_REHTR
und
Die Zulufttemperatur hat sich dem Sollwert so weit angenähert, dass sie sich in einem Bereich zwischen rSp - ErrorLimit und rSp + ErrorLimit eingependelt hat.
und
Die Zulufttemperatur muss mindestens für die Dauer von EnEvtEn_udiTiSttDly innerhalb des Bereiches von rSp - ErrorLimit und rSp + ErrorLimit verblieben sein.

2.
Der Timer EnEvtEn_udiTiSttAuto ist abgelaufen und die Regelung hat Ihren Sollwertbereich nicht erreicht.
F_BA_EvtTrans | schreibt auf die BACnetEventTransitionBits to_offnormal, to_fault und to_normal des Loop-Objektes. Dazu muss der Eingang bEnEvtEn = TRUE sein
PID | FB_BACnetLoopSeq1202 | Sequenzregler Zulufttemperatur Nacherhitzer.
rtrigSync R_TRIG Bei einer steigenden Flanke am Eingang bSync wird das Loop-Objekt auf den Wert von lrSync aufsynchronisiert.
Wenn das Regelventil des Nacherhitzers durch Schreiben einer höheren Priorität auf das zugehörige AO-Objekt von der MBE oder durch Betätigen der örtlichen Vorrangbedienung übersteuert wurde, weicht die aktuelle Position des Regelventils von dem Ausgang des Loop-Objektes ab. Mit den Variablen bSync und rFdbVlv kann die Synchronität zwischen der Position des Regelventils und dem Regler wieder hergestellt werden.
Y | FB_BACnetAV1204 | Dass AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_PreHtr_01

Aufruftemplate eines Warmwasserlufterhitzer

Anwendung

Das Template BAC_AC_PreHtr_01 dient zur Steuerung, Regelung und der Frostüberwachung eines Warmwasserlufterhitzers.

Die wesentlichen Aufgaben des Templates sind:

  • Regelung der Zulufttemperatur
  • Regelung der Rücklauftemperatur des Warmwasserlufterhitzers
    • Vorspülen während des Anlagenstarts der Lüftungsanlage
    • Regelung der Rücklauftemperatur auf den Frostschutzsollwert SpFrstPrt
  • Steuerung der Frostschutzes
    • Frostschutzthermostat in der Zuluft nach dem Erhitzer, integriert in dem Template FrstPrt
    • Frostschutztemperatur in der Zuluft nach dem Erhitzer, integriert in dem Template FrstPrt
    • Rücklauftemperatur des Wasserlufterhitzers
  • Freigabe der Erhitzerpumpe
  • Ansteuerung des Regelventils

Im Entfeuchtungsfall kann der Zuluftregler PID_SuA über die Eingangsvariable bDeHum gesperrt werden

Schnittstelle

Anlagenschema

VAR_INPUT

rSuAT          : REAL;
rSpHtg         : REAL;
bDeHum         : BOOL;
udiPltStp      : UDINT;
udiOpMod       : UDINT;
bWthTLmttCrit  : BOOL;

rSuAT: Eingangsvariable an der die Zulufttemperatur angelegt wird. Die Zulufttemperatur ist die Regelgröße des Zuluftreglers SuA_PID.

rSpHtg: Eingangsvariable an der der Zulufttemperatursollwert angelegt wird. Der Zulufttemperatursollwert ist der Sollwert des Zuluftreglers SuA_PID.

bDeHum: Eingangsvariable an der die Betriebsmeldung für den Entfeuchtebetrieb angelegt wird.
Ist der Entfeuchtebetrieb aktiv, so wird der Zulufttemperaturregler SuA_PID gesperrt und somit aus der Sequenzregelung heraus genommen.

udiPltStp: Über die Eingangsvariable werden dem Template die Anlagenschritte der RLT-Anlage zugeführt aus dem Anlagenstartteil BAC_StartPltStpT_01. Die Anlagenschritte geben das Vorspülen des Lufterhitzers über den Rücklauftemperaturegler RetWtr_PID frei. Ist dieses abgeschlossen, so wird der Zulufttemperaturregler SuA_PID frei gegeben.

udiOpMod: Über die Eingangsvariable werden dem Zulufttemperaturregler SuA_PID die Anlagenbetriebsart vorgegeben aus dem Anlagenstartteil BAC_StartOpMod_01.

bWthTLmtCrit: Eingangsvariable an der die Betriebsmeldung Witterungstemperatur kritisch angelegt wird. Die Betriebsmeldung ensteht in dem Anlagenstartteil BAC_StartSeqT_01
Hat die Witterungstemperatur einen bestimmten Wert unterschritten bzw. ist aktiv, so werden folgende Zustände in dem Template aktiv:

  • Einschaltung Erhitzerpumpe, Pumpenzwangslauf
  • Freigabe Regler Rücklauftemperatur RetWtr_PID
  • Während des Anlagenstarts ist der Vorspülbetrieb aktiv

VAR_OUTPUT

bFrst      : BOOL;
bPreriRdy  : BOOL;

bFrst: Die Ausgangsvariable zeigt den Status Frostschutz des Warmwasserlufterhitzers an. Das Template FrstPrt ist für die Frostschutzüberwachung zuständig.
Die ausgelöste Frostschutzfunktion wird in dem Anlagenstartteil BAC_StartOpMod_01 für das Stoppen der Anlage verwendet.

bPreriRdy: Die Ausgangsvariable zeigt den Status des Vorspülprozesses an. Dieser wird durch den Funktionsbaustein HysPreri oder der Eingangsvariable bWthTLmtCrit bestimmt und im Anlagenstartteil BAC_StartPltStpT_01 für das Anfahren der Lüftungsanlage verarbeitet.

VAR_IN_OUT

stSeqLink    : ST_BA_SeqLink;

stSeqLink: Datenstrukur zur Kommunikation der Sequenzregler (SuA_PID) einer Anlage mit dem Sequenzlinker. Siehe BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM     : BYTE := 10;

PLT_NUM: Über die Anlagennummer werden den zur Anlage zugehörigen Anlagen-Templates mitgeteilt welche Alarme und BACnet-Funktionsbausteine ausgewertet werden sollen.

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
RetWtrT | FB_BACnetAI1203 | Rücklauftemperatur des Warmwasserlufterhitzers. Diese dient als Regelgröße der Rücklauftemperaturregelung RetWtr_PID und zur Steuerung des Vorspülprozesses ob dieser abgeschlossen ist.
AlmRetWtrT | FB_BA_Alarm | Der Alarmsammelbaustein nimmt die Störung des Rücklauftemperaturfühlers RetWtrT auf und gibt diese weiter an den Anlagen-Alarmsammler BAC_PltIniAlm_01.
SpFrstPrt | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Sollwertes Frostschutz. für den Rücklauftemperaturregler RetWtr_PID.
ValueEnPu | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Einschaltpunktes der Pumpe in Abhängigkeit der Stellung des Regelventils. Der Wert ist limitiert auf ein Minimum von 0.5 und ein Maximum von 20%.
SuA_PID | BAC_AC_PreHtr_PID_01 | Template Zulufttemperaturregelung. Die Temperaturregelung erfolgt stetig mittels eines PID-Sequenzreglers
RetWtr_PID BAC_PID_01 Template Rücklauftemperaturregelung des Warmwasserlufterhitzers.
Es ist zuständig für das Vorspülen des Heizregisters während des Anlagenstarts der Lüftungsanlage und der Regelung der Rücklauftemperatur auf den Frostschutzsollwert SpFrstPrt.
Die Rücklauftemperaturregelung wird bei niedrigen Aussentemperaturen durch die Eingangsvariable bWthTLmtCrit frei gegeben.

Freigabe
  • Über die Eingangsvariable bWthTLmtCrit
Sollwert
  • Während des Vorspülbetriebes bekommt der Regler seinen Sollwert aus dem Template SpPreri. Ansonsten wird der Sollwert über das AV-Objekt SpFrstPrt vorgegeben
SpPreri BAC_Scale_02 Template zur Berechnung der Vorspültemperatur in Abhängigkeit der Aussentemperatur für die Rücklauftemperaturregelung.
Beim Anfahren der RLT-Anlage wird bei niedriegen Außentemperaturen zunächst das Heizregister mit warmen Wasser vorgespült bevor die Klappen der RLT-Anlage öffnen und die Ventilatoren eingeschaltet werden. Das Vorspülen des Heizregisters ist abgeschlossen, wenn am Rücklauftemperaturfühler RetWtrT die Vorspültemperatur SpPreri erreicht ist.
Das Vorspülen der Anlage wird durch die Eingangsvariable bWthTLmtCrit frei gegeben.
HysPreri FB_BA_Swi2P Der Funktionsbaustein HysPreri schaltet beim Erreichen der Vorspültemperatur SpPreri die Variable bPreriRdy auf TRUE. Damit wird dem Anlagenstartprogramm mitgeteilt, dass der Vorspülprozess abgeschlossen ist.
Ist die Außentemperatur oberhalb eines kritischen Bereiches, so wird die Variable bPreriRdy durch bWthTLmtCrit sofort gesetzt ohne dass der Vorspülprozess abgeschlossen sein muss. Damit erfolgt bei höheren Außentemperaturen ein Anlagenstart der RLT-Anlage ohne das Vorspülen des Heizregisters.
FrstPrt BAC_FrstPrt_01 Template für den wasser- und luftseitigen Frostschutz.
Der Frostfall tritt ein bei den folgenden Bedingungen:
  • Ansprechen des Frostschutzthermostaten
  • Unterschreitung des LowLimit der Lufttemperatur hinter dem Heizregister
  • Unterschreitung des LowLimit der Rücklauftemperatur (RetWtr.bLoLmt = TRUE)

Im Frostschutzfall wird die Ausgangsvariable bFrst gesetzt und somit dem Anlagenstartprogramm mitgeteilt. Es wird die raumlufttechnische Anlage schrittweise herunter gefahren.

Ausserdem wird im Frostschutzfall die Erhitzerpumpe eingeschaltet und Ventil aufgefahren.
HysEnPu | FB_BA_Swi2P | Der Funktionsbaustein HysEnPu ist ein Zweipunktschalter und schaltet die Erhitzerpumpe in Abhängigkeit einer Hysterese ein und aus. Die Stellgröße für das Regelventil dient als Eingangsgröße für den Zweipunktschalter.
Vlv | BAC_Uni_Vlv_13 | Template zur Ansteuerung eines stetigen Ventils
Pu | BAC_Uni_Pu1st_61 | Template zur Ansteuerung einer einstufigen Pumpe
>=, <=, AND, SEL | Der Wert dieses Netzwerkes gibt den Sollwert für die Rücklauftemperaturregelung des Warmwasserluifterhitzers RetWtr_PID vor.
SUB | Der Wert der Subtraktion ist der untere Schaltpunkt des Zweipunktschalters HysPreri
MAX | MAX-Auswahl der Stellsignale Zulufttemperaturregelung SuA_PID und Rücklauftemperaturregelung RetWtr_PID.
LIMIT | Limitierung des Einschaltpunktes der Pumpe ValueEnPu
OR | Gibt den Status des Vorspülens durch HysPreri oder bWthTLmtCrit aus
OR | Gibt den Einschaltbefehl für die Pumpe von der Ventilstellung oder bWthTLmtCrit durch

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_PreHtr_PID_01

Sequenzregler für einen Vorerhitzer

Funktionsbeschreibung

Das Template BAC_AC_PreHtr_PID_01 ist der Sequenzregler für einen Vorerhitzer.

Schnittstelle

VAR_INPUT

rX         : REAL;
rW         : REAL;
bSync      : BOOL;
rFdbVlv    : REAL;
bDeHum     : BOOL;
udiPltStp  : UDINT;
udiOpMod   : UDINT;

rX: Istwert der Zulufttemperatur

rW: Sollwert der Zulufttemperatur

bSync: Eingang für die Synchronisation des Reglers

rFdbVlv: Stellungsrückmeldung des Ventils

bDeHum: Entfeuchtung aktiv, Sperrung der Freigabe des Zulufttemperaturregler

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMode: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rY        : REAL;

rY: Ausgabe der Stellgröße für das Regelventil

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Struktur zur Kommunikation mit dem Sequenzlinker im Template BAC_StartSeqT_01

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Istwert-Eingang des BACnet-Loop-Objektes
W | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Sequenzreglers in Abhängigkeit der Anlagenbetriebsart.
udiOpMod |  | Freigabe | Bemerkung
OPMOD_AC_MANON | Hand ein | TRUE | Die Anlage ist manuell über den Anlagenwahlschalter eingeschaltet
OPMOD_AC_ON | Ein | TRUE | Die Anlage läuft im Automatikbetrieb über das Zeitschaltprogramm
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | TRUE | Die Anlage läuft in der Betriebsart Auskühlschutz
En FB_BACnetBV1204 Das BV-Objekt dient zur Anzeige und Aktivierung der Reglerfreigabe in der MBE oder in einen lokalen Bediendisplay.
Die Freigabe des Reglers erfolgt in Abhängigkeit der Anlagenbetriebsart.
AND | Der AND-Baustein verriegelt die Freigabe des Sequenzreglers im Entfeuchtebetrieb. Die Umschaltung vom Vorerhitzer auf den Nacherhitzer erfolgt im Template BAC_StartSeqT_01 durch den Sequenzlinker.
EnEvtEn FB_BA_LmtCtrl Das BACnet-Loop-Objekt PID überwacht die Funktion der Regelung in dem es den Sollwert W und den Istwert X miteinander vergleicht. Ist die Abweichung W-X größer als das Property ErrorLimit, dann sendet das Loop-Objekt eine Meldung an die MBE.

Beim Anlagenstillstand, im Moment des Starts und bis zum eingeregelten Zustand der Anlage wird das Melden des Loop-Objketes unterdrückt, damit keine falschen Meldungen an die MBE gesendet werden. Erst wenn die RLT-Anlage vollständig hochgefahren ist und die Regelung sich eingependelt hat, wird das Melden des Loop-Objektes freigegeben. Zusätzlich wird das Melden aktiviert, wenn die Regelung nach langer Zeit nicht in dem vom Property ErrorLimit definierten Bereich um den Sollwert gelangt ist.

Die Freigabe des objektinternen Meldens erfolgt indem auf die BACnetEventTransitionBits des Loop-Objektes geschrieben wird.

Für die Freigabe des Meldens vom Loop-Objekt müssen die folgenden Bedingungen erfüllt sein:

1.
Das Anlagenstartprogramm BAC_StartPltStpT_01 hat die Überwachung der Regelung und die Grenzwertüberwachung der Fühler freigegeben
udiPltStp >= PLTSTP_AC_ENLMTMONIT
und
Der Erhitzerregler ist der aktive Regler in der Regelsequnez. stSeqLink.usiCurCtrl = SEQNUM_T_PREHTR
und
Die Zulufttemperatur hat sich dem Sollwert so weit angenähert, dass sie sich in einem Bereich zwischen rSp - ErrorLimit und rSp + ErrorLimit eingependelt hat.
und
Die Zulufttemperatur muss mindestens für die Dauer von EnEvtEn_udiTiSttDly innerhalb des Bereiches von rSp - ErrorLimit und rSp + ErrorLimit verblieben sein.

2.
Der Timer EnEvtEn_udiTiSttAuto ist abgelaufen und die Regelung hat Ihren Sollwertbereich nicht erreicht.
F_BA_EvtTrans | schreibt auf die BACnetEventTransitionBits to_offnormal, to_fault und to_normal des Loop-Objektes. Dazu muss der Eingang bEnEvtEn = TRUE sein
PID | FB_BACnetLoopSeq1202 | Sequenzregler Zulufttemperatur Vorerhitzer.
rtrigSync R_TRIG Bei einer steigenden Flanke am Eingang bSync wird das Loop-Objekt auf den Wert von lrSync aufsynchronisiert.
Wenn das Regelventil des Vorerhitzers durch Schreiben einer höheren Priorität auf das zugehörige AO-Objekt von der MBE oder durch Betätigen der örtlichen Vorrangbedienung übersteuert wurde, weicht die aktuelle Position des Regelventils von dem Ausgang des Loop-Objektes ab. Mit den Variablen bSync und rFdbVlv kann die Synchronität zwischen der Position des Regelventils und dem Regler wieder hergestellt werden.
Y | FB_BACnetAV1204 | Dass AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_FrstPrt_01

Funktionsbeschreibung

Das Template realisiert die Frostüberwachung eines Heizregister in einer raumlufttechnischen Anlage.
Der Frostfall tritt ein bei den folgenden Bedingungen:
  • Ansprechen des Frostschutzthermostaten FrstThermostat
  • Unterschreitung des LowLimit der Lufttemperatur hinter dem Heizregister FrstT
  • Die Eingangsvariable bIn ist gesetzt

Im Frostschutzfall wird die Ausgangsvariable bQ gesetzt.

Schnittstelle

Anlagenschema

VAR_INPUT

bIn       : BOOL;

bIn: An die Eingangsvariable kann von ausserhalb eine zusätzliche Frostfall Bedingung angelegt werden

VAR_OUTPUT

bQ        : BOOL;

bQ: Die Ausgangsvariable zeigt an, dass der Frostalarm ist aktiv

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
FrstThermostat | FB_BACnetBI1203 | BI-Objekt Frostschutzthermostat, siehe Anlagenschema FrstTh
FrstT | FB_BACnetAI1203 | AI-Objket zeigt die Lufttemperatur hinter dem Heizregister an, siehe Anlagenschema FrstT
FrstPrtcDlyRebt | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Frostschutztimers T1 ( Zeit innerhalb dessen der Frostschutzalarm wieder erloschen sein muss)
FrstPrtcTiMonit | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Frostschutztimers T2 ( Zeitintervall innerhalb dessen kein weiterer Frostalarm erfolgen darf ohne das dieser manuell quittiert werden muss)
FrstPrtcAlmCnt | FB_BACnetAV1204 | AV-Objekt zur Eingabe der maximalen Zahl der automatischen Anlagenneustarts nach eintreten des Frostfalls
FrstPrtcFnct | FB_BA_FrstPrtc | Der Funktionsbaustein ist das Kernstuck der Frostschutzüberwachung.
FrstPrtcInd | FB_BACnetBV1204 | BV-Objekt zur Anzeige des Frostalarms


BAC_AC_Sp_01

Aufruftemplate für eine Temperatur-Kaskadenregelung

Funktionsbeschreibung

Das Aufruftemplate beinhaltet einen PID-Führungsregler für eine Raumtemperaturregelung mittels Raum-Zuluft-Kaskade.
Es liefert einen einfachen Zulufttemperatur-Sollwert. Die Sollwertverschiebung ist abhängig von der Aussentemperatur.

Schnittstelle

VAR_INPUT

rRmT         : REAL;
udiPltStp    : UDINT;
rPrSpCol     : UDINT;

rRmT: Eingangsvariable an der die Raumtemperatur angelegt wird. Die Raumtemperatur ist die Regelgröße der PID-Führungsregler. Ist keine Raumtemperatur vorhanden, so kann die Ablufttemperatur einer Lüftungsanlage als Regelgröße genommen werden.

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMod: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rPrSpHtg     : REAL;
rPrSpErc     : REAL;
rPrSpCol     : REAL;

rPrSpHtg: Errechneter Sollwert der Zulufttemperatur für das Heizen

rPrSpErc: Errechneter Sollwert der Zulufttemperatur für die Energierückgewinnung

rPrSpCol: Errechneter Sollwert der Zulufttemperatur für das Kühlen

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X1
X2 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X2
X3 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X3
X4 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X4
Y1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y1
Y2_3 | FB_BACnetAV1204 | Eingabe des Wertes für die Stützpunkte Y2/Y3
Y4 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y4
Scale | FB_BA_Chrct04 | Der Funktionsbaustein berechnet die Sollwertkennlinie für den aktuelle Zulufttemperatur in Abhängigkeit der Aussentemperatur
SpPID | BAC_PID_01 | Template PID-Regler. Es beinhaltet den Führungsregler für eine Raumtemperaturregelung mittels Raum-Zuluft-Kaskade. Es liefert den einfachen Zulufttemperatur-Sollwert.
SpMux FB_BA_MMUX_R04 Der Multiplexer definiert den Sollwert in Abhängigkeit der Anlagenbetriebsart in bestimmten Fällen.
udiOpMod |  | Sollwert | Bemerkung
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | rYMax, Oberer Sollwert der Regler-Ausgangsbegrenzung des Templates BAC_PID_01 |
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | rYMin, Unterer Sollwert der Regler-Ausgangsbegrenzung des Templates BAC_PID_01 |
PrSp | FB_BACnetAV1204 | Ausgabe des errechneten, einfachen Zulufttemperatur-Sollwertes. Dieser wird an den Ausgängen rPrSpHtg, rPrSpErc und rPrSpCol ausgegeben.

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_Sp_02

Aufruftemplate für eine Temperatur-Kaskadenregelung

Funktionsbeschreibung

Das Aufruftemplate beinhaltet 2 PID-Führungsregler für eine Raumtemperaturregelung mittels Raum-Zuluft-Kaskade.
Es liefert die Sollwerte für die Aggregate Vorerhitzer und Kühler unter Einbezug der Sommer-/Winterkompensation. Der Sollwert für die Energierückgewinnung wird in Abhängigkeit deren Wirksinns bestimmt.

Schnittstelle

VAR_INPUT

rRmT         : REAL;
bErcActn     : BOOL;
udiPltStp    : UDINT;
rPrSpCol     : UDINT;

rRmT: Eingangsvariable an der die Raumtemperatur angelegt wird. Die Raumtemperatur ist die Regelgröße der PID-Führungsregler. Ist keine Raumtemperatur vorhanden, so kann die Ablufttemperatur einer Lüftungsanlage als Regelgröße genommen werden.

bErcActn: Eingangsvariable an der der Wirksinn der Energierückgewinnung angelegt wird. In Abhängigkeit des Wirksinns wird der Sollwert für die Energierückgewinnung bestimmt.

udiPltStp: Schritt beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

udiOpMod: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

VAR_OUTPUT

rPrSpHtg     : REAL;
rPrSpErc     : REAL;
rPrSpCol     : REAL;

rPrSpHtg: Errechneter Sollwert der Zulufttemperatur für das Heizen

rPrSpErc: Errechneter Sollwert der Zulufttemperatur für die Energierückgewinnung

rPrSpCol: Errechneter Sollwert der Zulufttemperatur für das Kühlen

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
SpColX1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X1 der Sommerkompensation für den Sollwert Kühlen.
SpColX2 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X2 der Sommerkompensation für den Sollwert Kühlen.
SpColY1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y1 der Sommerkompensation für den Sollwert Kühlen.
SpColY2 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y2 der Sommerkompensation für den Sollwert Kühlen.
ScaleSpCol | FB_BA_Chrct02 | Der Funktionsbaustein ermittelt den Sommerkompensationswert für den Sollwert Kühlen.
SpHtgX1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X1 der Winterkompensation für den Sollwert Heizen.
SpHtgX2 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X2 der Winterkompensation für den Sollwert Heizen.
SpHtgY1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y1 der Winterkompensation für den Sollwert Heizen.
SpHtgY2 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y2 der Winterkompensation für den Sollwert Heizen.
ScaleSpHtg | FB_BA_Chrct02 | Der Funktionsbaustein ermittelt den Winterkompensationswert für den Sollwert Heizen.
OpModPrio FB_BA_MMUX_B08 Der Multiplexer definiert die Freigabebedingungen des Templates Kaskadenregelung SpCasCtrlT in Abhängigkeit der Anlagenbetriebsart.
udiOpMod |  | Freigabe Kaskadenregelung | Bemerkung
OPMOD_AC_SMEXTTPRG | Entrauchung Programm | TRUE |
OPMOD_AC_SMEXTTSUA | Entrauchung Zuluft | TRUE |
OPMOD_AC_SMEXTTEXHA | Entrauchung Fortluft | TRUE |
OPMOD_AC_FORCVENT | Zwangsbelüftung | TRUE |
OPMOD_AC_MANON | Hand ein | TRUE |
OPMOD_AC_ON | Ein | TRUE |
SpCasCtrlT | BAC_CasCtrlT_01 | Template Kaskadenregelung. Es beinhaltet die beiden PID-Führungsregler für eine Raumtemperaturregelung mittels Raum-Zuluft-Kaskade und liefert die Sollwerte für die Aggregate Vorerhitzer und Kühler
OpModSpHtgMux FB_BA_MMUX_R04 Der Multiplexer definiert den Sollwert Heizen PrSpHtg in Abhängigkeit der Anlagenbetriebsart in bestimmten Fällen.
udiOpMod |  | Sollwert | Bemerkung
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | rYMax, Oberer Sollwert der Regler-Ausgangsbegrenzung des Templates Kaskadenregelung |
OpModSpColMux FB_BA_MMUX_R04 Der Multiplexer definiert den Sollwert Kühlen PrSpCol in Abhängigkeit der Anlagenbetriebsart in bestimmten Fällen.
udiOpMod |  | Sollwert | Bemerkung
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | rYMin, Unterer Sollwert der Regler-Ausgangsbegrenzung des Templates Kaskadenregelung |
SelSpErc | FB_BACnetBV1204 | Auswahl Strategie Sollwert Energierückgewinnung. TRUE: Mittelwert aus PrSpHtg und PrSpCol; FALSE: Wirksinnabhängig, definiert durch den Eingang bErcActn des Funktionsbausteins SpSupVis
SpSupVis | FB_BA_SpSupVis | Funktionsbaustein zur Verarbeitung und Kontrolle der Sollwerte einer Zulufttemperaturregelung/Raum-Zuluft-Kaskade
OpModSpErcMux FB_BA_MMUX_R04 Der Multiplexer definiert den Sollwert Energierückgewinnung PrSpErc in Abhängigkeit der Anlagenbetriebsart in bestimmten Fällen..
udiOpMod |  | Sollwert | Bemerkung
OPMOD_AC_COLDWNPRTC | Stützbetrieb,Auskühlschutz | rYMax, Oberer Sollwert der Regler-Ausgangsbegrenzung des Templates Kaskadenregelung |
OPMOD_AC_OVRHTGPRTC | Überhitzungsschutz | rYMin, Unterer Sollwert der Regler-Ausgangsbegrenzung des Templates Kaskadenregelung |
PrSpCol | FB_BACnetAV1204 | Ausgabe des errechneten Zulufttemperatur-Sollwertes Kühlen
PrSpHtg | FB_BACnetAV1204 | Ausgabe des errechneten Zulufttemperatur-Sollwertes Heizen
PrSpErc | FB_BACnetAV1204 | Ausgabe des errechneten Zulufttemperatur-Sollwertes für die Energierückgewinnung

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_AC_Sp_03

Funktionsbeschreibung

Das Template BAC_Sp_03 bildet einen einfachen Zulufttemperatur-Sollwert. Das Template kann in einer Anlage als Variante an Stelle eines Kaskadenführungsreglers (BAC_AC_Sp_01 / BAC_AC_Sp_02) für eine reine Zuluftsequenzregelung eingesetzt werden. Es bildet die Sollwerte für die Zuluft-Temperaturregelungen in den einzelnen Aggregaten (Vorerhitzer, Kühler, Energierückgewinnung).

Die Sollwertkennlinie für die aktuelle Zulufttemperatur wird im Funktionsbaustein Scale berechnet. Die Kennlinie wird durch die Stützpunkte [X1/Y1] bis [X4/Y4] bestimmt. Die Sollwertverschiebung ist abhängig von der Aussentemperatur.

Schnittstelle

VAR_OUTPUT

rPrSpHtg     : REAL;
rPrSpErc     : REAL;
rPrSpCol     : REAL;

rPrSpHtg: Errechneter Sollwert der Zulufttemperatur für das Heizen

rPrSpErc: Errechneter Sollwert der Zulufttemperatur für die Energierückgewinnung

rPrSpCol: Errechneter Sollwert der Zulufttemperatur für das Kühlen

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X1
X2 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X2
X3 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X3
X4 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt X4
Y1 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y1
Y2_3 | FB_BACnetAV1204 | Eingabe des Wertes für die Stützpunkte Y2/Y3
Y4 | FB_BACnetAV1204 | Eingabe des Wertes für den Stützpunkt Y4
Scale | FB_BA_Chrct04 | Der Funktionsbaustein Scale ist das Kernstück dieses Sollwert-Templates. Der Funktionsbaustein berechnet die Sollwertkennlinie für die aktuelle Zulufttemperatur in Abhängigkeit der Aussentemperatur
PrSp | FB_BACnetAV1204 | Ausgabe des errechneten Zulufttemperatur-Sollwertes

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_CasCtrl_01

TS8040 | TwinCAT Building Automation: PLC Templates

BAC_CasCtrlT_01

Funktionsbeschreibung

Das Template ist eine PID-Führungsregelung für eine Raum-Zuluft-Kaskadenregelung.
Es liefert die Zuluftsollwerte für das Heizen und Kühlen. Für jeden der Zuluftsollwerte gibt es einen Führungsregler.
Das Template kann für eine Temperatur-Kaskadenregelung eingesetzt werden.

Schnittstelle

VAR_INPUT

bEn        : BOOL;
rX         : REAL;
rW_Htg     : REAL;
rW_Col     : REAL;

bEn: Freigabe

rX: Istwert

rW_Htg: Sollwert heizen

rW_Col: Sollwert kühlen

VAR_OUTPUT

rY_Htg     : REAL;
rY_Col     : REAL;
rYMax      : REAL;
rYMin      : REAL;

rY_Htg: Zuluftsollwert heizen

rY_Col: Zuluftsollwert kühlen

rYMax: Oberer Sollwert der Regler-Ausgangsbegrenzung

rYMin: Unterer Sollwert der Regler-Ausgangsbegrenzung

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Istwert-Eingang der BACnet-Loop-Objekte
W_Htg | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes PID_Htg
W_Col | FB_BACnetAV1204 | Das AV-Objekt ist referenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes PID_Col
En | FB_BACnetBV1204 | Das BV-Objekt dient zur Anzeige und Aktivierung der Reglerfreigabe in der MBE oder in einen lokalen Bediendisplay. Die Freigabe des Reglers erfolgt in Abhängigkeit der Eingangsvariable bEn.
PID_Htg | FB_BACnetLoop1201 | Führungsregler Sollwert heizen
PID_Col | FB_BACnetLoop1201 | Führungsregler Sollwert kühlen
rtrigSync | R_TRIG | Nach Erhalt der Reglerfreigabe bEn werden durch eine steigenden Flanke ausgelöst durch rtrigSync die beiden Führungsregler auf die Eingangssollwerte W_Htg_rPrVal / W_Col_rPrVal aufsynchronisiert.
PID_Htg | FB_BACnetLoop1201 | Führungsregler Sollwert heizen
PID_Col | FB_BACnetLoop1201 | Führungsregler Sollwert kühlen
Y_Htg | FB_BACnetAV1204 | Zuluftsollwert heizen. Das AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes PID_Htg
Y_Col | FB_BACnetAV1204 | Zuluftsollwert kühlen. Das AV-Objekt ist referenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes PID_Col
TLogY_Htg | FB_BACnetAV1204 | Trendaufzeichnung des Zuluftsollwertes heizen Y_Htg
TLogY_Col | FB_BACnetAV1204 | Trendaufzeichnung des Zuluftsollwertes kühlen Y_Col
PID_Sync | FB_BA_PISync1201 | Der Funktionsbaustein führt eine Parameter-Synchronisation der beiden Führungsregler PID_HTG / PID_COL durch
tonDlySp | TON SEL SEL | Netzwerk zur Ausgabe der Sollwerte an die Ausgänge des Templates Nach Erhalt der Freigabe bEn werden um eine Sekunde verzögert tonDlySp die Sollwerte der Führungsregler an den Ausgängen des Templates ausgegeben rY_Htg / rY_Col. Im nicht freigegebenen Zustand der Anlage werden die Eingangssollwerte des Templates ausgegeben.

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_StartOpMod_01

Startprogramm Lüftung Betriebsart

Funktionsbeschreibung

Das Template BAC_StartOpMod_01 priorisiert verschiedene Ereignisse oder Befehle einer raumlufttechnischen Anlage, wie zum Bespiel Brandalarm, Anforderung vom Zeitschaltplan oder die Anforderung vom Anlagenwahlschalter und schreibt eine resultierende Betriebsart bzw. einen resultierenden Anlagenstatus auf die Variable udiOpMod.
Innerhalb der Aggregate wird in Abhängigkeit von udiOpMod individuell reagiert, so daß sich die gesamte Anlage entsprechend der jeweils gültigen Betriebsart einstellt.

Beispiel: 1
Das Mischluftsystem BAC_AC_MixAT_01 fährt bei udiOpMod im Betriebsmodus Sommernachtkühlung (udiOpMod = 11) auf eine Außenluftrate von 100%.

Beispiel: 2
Der Zuluft- und Abluftventilator schaltet bei einer Zwangsbelüftung ein. Geregelte Ventilatoren fahren auf eine Drehzahl von 100%.

Die folgenden Anlagenzustände bzw. Betriebsarten sind über die Variable udiOpMod beschrieben:

udiOpMod |  |  | Bemerkung
OPMOD_AC_OFF | 1 | Aus//Off |
OPMOD_AC_ON | 2 | Ein//On |
OPMOD_AC_EMERG | 3 | Notfall//Emergency |
OPMOD_AC_MANOFF | 4 | Hand aus//Manual off |
OPMOD_AC_MANON | 5 | Hand ein//Manual on |
OPMOD_AC_FRST | 6 | Frost//Frost |
OPMOD_AC_SMEXTTPRG | 7 | Entrauchung Programm//Smoke extraction programm |
OPMOD_AC_SMEXTTSUA | 8 | Entrauchung Zuluft//Smoke extraction supply |
OPMOD_AC_SMEXTTEXHA | 9 | Entrauchung Fortluft//Smoke extraction exhaust |
OPMOD_AC_FIRE | 10 | Feuer//Fire |
OPMOD_AC_NGTCOL | 11 | Nachtkühlung//Night cooling |
OPMOD_AC_COLDWNPRTC | 12 | Stützbetrieb,Auskühlschutz//Cool down protection |
OPMOD_AC_OVRHTGPRTC | 13 | Überhitzungsschutz//Over heating protection |
OPMOD_AC_ALM | 14 | Störung//Alarm |
OPMOD_AC_FORCVENT | 15 | Zwangsbelüftung//Forced ventilation |
OPMOD_AC_CENTSWIOFF | 16 | Zentralabschaltung//Central switch-off |

Schnittstelle

VAR_INPUT

bFrst		: BOOL;
bAlmShutOff	: BOOL;
bNgtCol		: BOOL;
bColDwnPrtc	: BOOL;
bOvrHtgPrtc	: BOOL;

bFrst: Eingang zur Beschaltung des Zustands Frostschutzbetrieb vom Frostschutzprogramm des Lufterhitzers.

bAlmShutOff: Eingang zur Anschaltung eines Sammelalarms. TRUE am Eingang führt zur Anlagenabschaltung.

bNghCol: Eingang zur Anschaltung des Programms Nachtkühlung

bColDwnPrtc: Eingang zur Anschaltung des Programms Auskühlschutz

bOvrHtgPrtc: Eingang zur Anschaltung des Programms Überhitzungsschutz

VAR_OUTPUT

udiOpMod		: UDINT;

udiOpMod: Ausgabe der akuellen Anlagenbetriebsart.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
OpMod | FB_BACnetMV1201 | Das BACnet-MV-Objekt dient als Anlagenwahlschalter. Mit dem MV-Objekt kann die Anlage unabhängig von den Automatikprogrammen ein- und ausgeschaltet werden.
Sched | FB_BACnetSchedB1201 | BACnet-Scheduler zur Festlegung der Anlagenbetriebszeiten
FireDetc | FB_BACnetBI1203 | BI-Objekt zur Erfassung des Ereignisses Feueralarm
SmExttSuA | FB_BACnetBI1203 | BI-Objekt zur Erfassung der Anforderung Entrauchung mit Zuluft
SmExttExhA | FB_BACnetBI1203 | BI-Objekt zur Erfassung der Anforderung Entrauchung mit Abluft
EmgOff | FB_BACnetBI1203 | BI-Objekt zur Erfassung des Ereignisses Not-Aus
ForcVent | FB_BACnetBI1203 | BI-Objekt zur Erfassung des Ereignisses Zwangsbelüftung
CentSwiOff | FB_BACnetBI1203 | BI-Objekt zur Erfassung des Ereignisses Zentralaus
OpModPrio | FB_BA_PrioSwi_UDI24 | Der Funktionsbaustein erfasst alle Befehle, priorisiert diese und gibt das Ergebnis am Ausgang udiVal aus.
OpModInd | FB_BACnetMV1201 | Das BACnet-MV-Objekt zeigt die aktuell gültige Anlagenbetriebsart an.

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_StartPltStpT_01

Schrittweises Anfahren eine RLT-Anlage ohne Be- und Entfeuchtung.

Funktionsbeschreibung

Das Template BAC_StartPltStpT_01 ist zuständig für das schrittweise Anfahren eine RLT-Anlage ohne Be- und Entfeuchtung.

Die Schritte beim Anlagenstart werden durch die Variable udiPltStp beschrieben. Die Schritte werden an alle Aggregate der Anlage übertragen, so dass jedes Aggregat in den Anfahrbetrieb der RLT-Anlagen eingebunden ist.

Die folgenden Anlagenschritte werden über die Variable udiPltStp beschrieben:

udiPltStp |  |  | Bemerkung
PLTSTP_AC_OFF | 1 | Aus//Off |
PLTSTP_AC_PRERI | 2 | Vorspülen//pre-rinse |
PLTSTP_AC_DMP | 3 | Klappe//Damper |
PLTSTP_AC_FANSUA | 4 | Zuluftventilator//Fan supply air |
PLTSTP_AC_FANEXTA | 5 | Abluftventilator//Fan extract air |
PLTSTP_AC_ENTEMPCTRL | 6 | Freigabe Temperaturregelung,Sequenz Link//Enable temperature control, Sequence link |
PLTSTP_AC_ENHUMCTRL | 7 | Freigabe Feuchteregelung, Sequenz Link//Enable humidity control, Sequence link |
PLTSTP_AC_ENLMTMONIT | 8 | Freigabe Grenzwertüberwachung//Enable limit monitoring |
PLTSTP_AC_ON | 9 | Ein//On |

Schnittstelle

VAR_INPUT

udiOpMod        : UDINT;
bExhADmpOpn     : BOOL;
bOuADmpOpn      : BOOL;
bPreriRdy       : BOOL;
bMixADmpAvail   : BOOL;

udiOpMod: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

bOuADmpOpn: Rückmeldung Aussenluftklappe auf

bExhADmpOpn: Rückmeldung Fortluftklappe auf

bPreriRdy: Vorspülen am Heizregister abgeschlossen

bMixADmpAvail: Mischluftsystem für Anfahrprozess vorhanden

VAR_OUTPUT

udiPltStp       : UDINT;
bWhtTLmtCrit    : BOOL;

udiPltStp: Ausgabe der akuellen Anlagen-Anfahrschritte

bWhtTLmtCrit: Die Außentemperatur ist unterhalb eines kritischen Wertes, so dass beim Anfahren der RLT-Anlage mit dem Vorspülen des Heizregisters angefahren werden muss.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
DmpDlyCls | FB_BACnetAV1204 | AV-Objekt verzögert das Schließen der Klappen beim Herunterfahren der RLT-Anlage. Damit wird die Nachlaufzeit der Ventilatoren beim Abschalten der Anlage berücksichtigt.
SuAFanDlyOn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes für die Einschaltverzögerung des Zuluftventilators beim Einschaltern der RLT-Anlage
ExtAFanDlyOn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes für die Einschaltverzögerung des Abluftventilators beim Einschalten der RLT-Anlage
TSeqCtrlDlyOn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Werts für die zeitverzögerte Freigabe der Regelung
LmtMonitDlyOn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Werts für die zeitverzögerte Freigabe der Grenzwertüberwachung der Temperaturfühler
WthT_LmtCrit | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Außentemperaturwertes ab wann die RLT-Anlage mit dem Vorspülen des Heizregisters starten soll.
SttPlt FB_BA_StepCtrl12 Der Funktionsbaustein SttPlt ist das Kernstuck des Anlagenstartprogramms.
Am Eingang bEn erfolgt eine generelle Freigabe des Funktionsbausteins. Ist bEn = FALSE, so sind Zwangsweise alle Ausgänge des Funktionsbausteins FALSE.

Schritt 1: Vorspülen des Heizregisters
Am Eingang bEvt01 wird das Anfahen der RLT zunächst mit dem Vorspülen des Heizregisters gestartet.

Schritt 2: Öffnen der Außen- und Fortluftklappe
Wenn der Vorspülprozess abgeschlossen oder aufgrund hoher Außentemperaturen nicht erforderlich ist, wird der Eingang bEvt02 gesetzt.
Dadurch wird der nächste Anfahrschritt, das Öffnen der Klappen angetriggert. Die Bedingung zum Weiterschalten in den Schritt Klappen Öffnen wird vom Funktionsbaustein FdbPreri gebildet.

Schritt 3: Starten des Zuluftventilators
Am Eingang bEvt03 wird der Endlagenschalter der Außenluftklappe angeschlossen. Bei offener Klappe wird Schritt 3 das Starten des Zuluftventilators angetriggert. Das Starten des Zuluftventilators kann zusätzlich am Eingang udiDlyOn03 verzögert werden. In der Betriebsart Entrauchen wird der Wert für die Anfahrverzögerung der Ventilatoren durch den vorgelagerten Selctor auf den Wert null gesetzt. Damit springt das Programm unverzögert in den nächsten Schritt.

Schritt 4: Starten des Abluftventilators
Am Eingang bEvt04 wird der Endlagenschalter der Fortluftklappe angeschlossen. Bei offener Klappe wird Schritt 4 das Starten des Fortluftventilators angetriggert. Das Starten des Abluftventilators kann zusätzlich am Eingang udiDlyOn04 verzögert werden. In der Betriebsart Entrauchen wird der Wert für die Anfahrverzögerung der Ventilatoren durch den vorgelagerten Selctor auf den Wert null gesetzt. Damit springt das Programm unverzögert in den nächsten Schritt.

Schritt 5: Freibabe der Zuluftsequenzregelung
Am Eingang bEvt05 ist konstant TRUE. Damit wird die Freigabe der Zuluftsequenzregelung nur durch den Wert von udiDlyOn05 verzögert.

Schritt6: Freigabe der Fühlergrenzwertüberwachung.
Am Eingang bEvt06 ist konstant TRUE. Damit wird die Freibe der Zuluftsequenzregelung nur durch den Wert von udiDlyOn06 verzögert.

Beim Herunterfahren der RLT-Anlage läuft die Schrittkette unverzögert von Schritt 6 bis Schritt 3 herunter. Das Zufahren der Klappen nach dem Abschalten der Ventilatoren ist um den Timer DmpDlyCls verzögert. Schritt 1 das Vorspülen des Heizregisters wird übersprungen.
SttPltEn | FB_BA_MMUX_B04 | Der Multiplexer SttPltEn erzeugt die generelle Freibabe des Anfahrprogrammes in Abhängigkeit der Anlagenbetriebsarten. Ändert sich die Anlagenbetriesart während der laufenden Betriebs dann wird die Variable SttPltEn_Rebt am Ausgang des Vergleiches = TRUE. Damit wird der Anlagenstartbaustein SttPlt kurzzeitig zurückgesetzt. Das Startprogramm wird damit in einen definierten Zustand versetzt und entsprechend der neuen Betriebsart neu gestartet.
SttPltEvt01 | FB_BA_MMUX_B24 | Der Multiplexer SttPltEvt01 erzeugt die Freigabe zum Starten des Vorspülprozesses in Abhängigkeit der Anlagenbetriebsarten
FdbPreri FB_BA_MMUX_B08 Der Multiplexer FdbPreri erzeugt die Freibabe für das Öffnen der Klappen.
In den Betriebsarten OPMOD_AC_SMEXTTPRG, OPMOD_AC_SMEXTTSUA, OPMOD_AC_SMEXTTEXHA, OPMOD_AC_NGTCOL und OPMOD_AC_OVRHTGPRTC wird am Ausgang bVal ein TRUE ausgeben. Damit wird der Schritt 1 des Anlagenstartbausteins SttPlt bei diesen Betriebsarten übersprungen. Der Vorspülprozess wird als abgeschlossen gemeldet.
Für den normalen Anlagenbetrieb wird das Öffnen der Klappen unter den folgenden Bedingungen angetriggert:
1. bMixADmpAvail = TRUE (Es ist ein Mischluftsystem vorhanden. Der Anfahrbetrieb wird mittels Mischluftsystem realisiert)
2. bPreriRdy = TRUE (Der Vorspülprozess ist abgeschlossen)
3. Die Außentemperatur ist unkritisch. Der Ausgang des Funktioinsbaustein WthT_LmtCritFnct ist FALSE.
PltStpPrio | FB_BA_PrioSwi_UDI12 | Der Prioritätenschalter PltStpPrio wertet die aktuellen Schritte während des Anfahrprozesses aus und gibt sie mittels der Variablen udiVal an das BACnet-MV-Objekt PltStp weiter zur Anzeige in der Managementebene.
PltStp | FB_BACnetMV1201 | Das BACnet-MV-Objekt zeigt den aktuellen Schritt während des Anfahrprozesses an.

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_StartSeqT_01

Das Template ist zuständig für das Starten und Steuern der Zuluftsequenzregelung einer RLT-Anlage ohne Be- und Entfeuchtung.

Funktionsbeschreibung

Das Template BAC_StartSeqT_01 ist zuständig für das Starten der Zuluftsequenzregelung einer RLT-Anlage ohne Be- und Entfeuchtung. Beim Anfahren der RLT-Anlage wird bestimmt, ob sie mit der Heiz-, Kühl- oder WRG-Sequenz gestartet wird. Die Auswahl der Startsequenz erfolgt in Abhängigkeit der Anlagenbetriebsart und der Außentemperatur.

Schnittstelle

VAR_INPUT

udiOpMod    : UDINT;
udiPltStp   : UDINT;
rSuAT       : REAL;

udiOpMod: Anlagenbetriebsart. Siehe auch BAC_StartOpMod_01

udiPltStp: Schritte beim Anfahren der RLT-Anlage. Siehe auch BAC_StartPltStpT_01

rSuAT: Zulufttemperatur

VAR_OUTPUT

bSumLmt     : BOOL;
bWinLmt     : BOOL;

bSumLmt: Sommerbetrieb

bWinLmt: Winterbetrieb

VAR_IN_OUT

stSeqLink: ST_BA_SeqLink;

stSeqLink: Struktur zur Kommunikation mit den Sequenzreglern

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
WthTLmtSum | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes ab welcher Außentemperatur die RLT-Anlage in der Kühlsequenz startet.
WthTLmtWin | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes ab welcher Außentemperatur die RLT-Anlage in der Heizsequenz startet.
SttSeqT FB_BA_PrioSwi_USI08 Der Prioritätenschalter dient zur Auswahl der Startsequenz.

Prio 1: bEN01
Bei der Betriebsart Überhitzungsschutz (OPMOD_AC_OVRHTGPRTC) wird grundsätzlich mit der Sequenz Kühlen ( SEQNUM_T_COL) gestartet.

Prio 2: bEN02
Bei der Betriebsart Auskühlschutz (OPMOD_AC_COLDWNPRTC) wird grundsätzlich mit der Sequenz Heizen ( SEQNUM_T_PREHTR) gestartet.

Prio 4: bEN04
Der vorgelagerte Funktionsbaustein WthTLmtWinHys prüft ob die tatsächliche Außentemperatur unterhalb des kritischen Wertes von AV-Objekt WthTLmtSum liegt. Ist dieses der Fall dann startet die RLT-Anlage mit der Regelsequenz des Vorerhitzers. (SEQNUM_T_PREHTR)

Prio 5: bEN05
Der vorgelagerte Funktionsbaustein WthTLmtSumHys prüft ob die tatsächliche Außentemperatur oberhalb des Wertes von AV-Objekt WthTLmtSum liegt. Ist dieses der Fall dann startet die RLT-Anlage mit der Regelsequenz des Kühlers. (SEQNUM_T_COL)

Prio 8: bEN08
In den Übergangszeiten zwischen Winter und Sommer sind die Eingänge von bEn04 und bEn05 witterungsbedingt FALSE. In diesem Fall gilt am Prioritätenschalter die Priorität 8. Damit wird die RLT-Anlage in der Sequenz der Energierückgewinnung (SEQNUM_T_ERC) gestartet.
SeqLinkT FB_BA_SeqLink Der Funktionsbaustein SeqLinkT ist das Kernstück des Templates BAC_StartSeqT_01. Der Sequenzlinker ist über die Variable stSeqLink mit allen Zuluftreglern der Sequenz verbunden. Er ist das zentrale Steuerorgan und für das Umschalten zwischen den Sequenzreglern und das Starten der Regelsequenz. verantwortlich.
Die Freigabe des Sequenzlinkers am Eingang bEn erfolgt vom Anlagenanfahrprogramm BAC_StartPltStpT_01.
CurSeqT | FB_BACnetMV1201 | Das MV-Objekt zeigt den aktuell aktiven Sequenzregler an.

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_StartSumNgtCol_01

Sommernachtkühlung

Funktionsbeschreibung

Das Template BAC_StartSumNgtCol_01 wird verwendet um nachts mit kühler Außenluft die tags zuvor aufgeheitzten Räume herunter zu kühlen. Die Funktion der Sommernachtkühlung dient zur Verbesserung der Luftqualität und zur Einsparung elektrischer Energie. In den ersten Stunden des nächsten Sommertages wird elektrische Energie zur Kälteerzeugung eingespart.

Schnittstelle

VAR_INPUT

rRmT       : Real;

rRmT : Raumtemperatur

VAR_OUTPUT

bNgtCol    : BOOL;

bNgtCol: Sommernachtkühlung eingeschaltet

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
SpRm | FB_BACnetAV1204 | Eingabe des Raumtemperatursollwertes während des Nachtkühlbetriebs
RmTHys | FB_BACnetAV1204 | Eingabe eines Hysteresewertes um den Raumtemperatursollert. Damit wird ein zu häufiges Ein- und Ausschalten bei schwankender Raumtemperatur vermieden. Der Einschaltpunkt ist überschritten wenn die Raumtemperatur rRmT größer als SpRm + RmTHys ist. Der Ausschaltpunkt ist erreicht wenn die Raumtemperatur SpRm unterschritten hat.
Sched | FB_BACnetSchedB1201 | Mit dem Schedule-Objekt werden die Zeiträume definiert in denen die Nachtkühlung freigegeben ist.
WthTHys | FB_BACnetAV1204 | Eingabe eines Hysteresewertes um minimale Außentemperatur bei der die Nachtauskühlung frei gegeben wird. Damit wird ein zu häufiges Ein- und Ausschalten der Nachtkühlung bei schwankender Außentemperatur vermieden. Der Einschaltpunkt ist wenn die Außentemperatur größer als WthTLoLmt + WthTHys ist. Der Ausschaltpunkt ist wenn die Außentemperatur kleiner als WthTLoLmt ist.
WthTLoLmt | FB_BACnetAV1204 | Eingabe des Wertes für die untere Außentemperatur. Die untere Außentemperatur verhindert ein zu starkes Auskühlen.
SwiOffDiffT | FB_BACnetAV1204 | Eingabe des Wertes für Differenz zwischen der Raumtemperatur und der Außentemperatur ab der die Sommernachtkühlung gesperrt wird.
SwiOnDiffT | FB_BACnetAV1204 | Eingabe des Wertes für Differenz zwischen der Raumtemperatur und der Außentemperatur ab der die Sommernachtkühlung freigegeben wird.
NgtColFnct | FB_BA_NgtCol | Der Funktionsbaustein NgtColFnct ist das Kernstück des Templates BAC_StartSumNgtCol_01 und beinhaltet den eigentlichen Steuerungsprozess des Nachtkühlprogramms
NgtCol | FB_BACnetBV1204 | Das BV-Objekt signalisiert, dass die Nachtkühlung eingeschaltet ist.

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Uni_FC_xx

Ansteuerung eines Frequenzumrichters

Funktionsbeschreibung

Das Template BAC_Uni_FC_xx ist für die Ansteuerung eines Frequenzumrichters mit binären und analogen Ein- und Ausgängen

Hinweis Die beiden Ausgangsvariablen rPrVal / bSync sind nur dann aktiv, wenn in dem eingesetzten Template die mechanische Vorrangbedienung FdbOutAO vorhanden ist.
Ist dieses nicht der Fall, so geben die beiden Variablen den Wert Null aus.

Das Template BAC_Uni_FC_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten des Templates werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | Reparatur-schalter | mechanische Vorrangbedienung Freigabe FU Rückmeldung Handschalter | mechanische Vorrangbedienung Freigabe FU Rückmeldung Relais | mechanische Vorrangbedienung Sollwert FU Rückmeldung Handschalter | mechanische Vorrangbedienung Stellwert FU Rückmeldung Stellung Poti | Betriebsrückmeldung FU | Störmeldung FU | Störmeldung Motorschutz-schalter
Instanz | MntnSwi | LocSwiBO | FdbOutBO | LocSwiAO | FdbOutAO | Fdb | DstFC | ThOvrld
Datenpunkt Typ | BI | BI | BI | BI | AI | BI | BI | BI
 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1
BAC_Uni_FC_223 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1

Schnittstelle

VAR_INPUT

bValPgm    : BOOL;
rValPgm    : REAL;
bEnSfty    : BOOL;
bValSfty   : BOOL;
rValSfty   : REAL;
bEnDst     : BOOL;
bValDst    : BOOL;
rValDst    : REAL;

bValPgm: Binärer Wert Programmpriorität

rValPgm: Analoger Wert Programmpriorität

bEnSfty: Freigabe Sicherheitspriorität

bValSfty: Binärer Wert Sicherheitspriorität

rValSfty: Analoger Wert Sicherheitspriorität

bEnDst: Freigabe Störungspriorität. An diesen Eingang könnte z.B. eine Prozessrückmeldung angelegt werden.

bValDst: Binärer Wert Störungspriorität. An diesen Eingang könnte z.B. eine Prozessrückmeldung angelegt werden.

rValDst: Analoger Wert Störungspriorität

VAR_OUTPUT

bPrVal   : REAL;
rPrVal   : REAL;
bSync    : BOOL;

bPrVal: Betriebsrückmeldung FU

rPrVal: aktuelle Drehzahl des FU.
Die Ausgangsvariablen rPrVal ist nur dann aktiv, wenn in dem eingesetzten Template die mechanische Vorrangbedienung FdbOutAO vorhanden ist.

bSync: Ausgabe eines Impulses um den zum FU zugehörigen Regler beim Rücksetzen vom Hand- in den Automatikbetrieb auf die aktuelle Drehzahl des FU´s zu synchronisieren.
Die Ausgangsvariable bSync ist nur dann aktiv, wenn in dem eingesetzten Template die mechanische Vorrangbedienung FdbOutAO vorhanden ist.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
ThOvrld | FB_BACnetBI1203 | X | BI-Objekt Thermoschutz Motor (Kaltleiterauslösegerät, Motorschutzschalter etc.)
DstFC | FB_BACnetBI1203 | X | BI-Objekt Störung Frequenzumrichter
LocSwiBO | FB_BACnetBI1203 | X | BI-Objekt mechanische Vorrangbedienung Rückmeldung Handschalter binär
LocSwiAO | FB_BACnetBI1203 | X | BI-Objekt mechanische Vorrangbedienung Rückmeldung Handschalter analog
FdbFC | FB_BACnetBI1203 | X | BI-Objekt Betriebsrückmeldung FU
MntnSwi | FB_BACnetBI1203 | X | BI-Objekt Wartungsschalter
FdbOutAO | FB_BACnetAI1203 | X | Rückgabewert Mechanische Vorrangbedienung Stellwert FU
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung des Frequenzumrichters von der MBE oder einem lokalen Bediendisplay
ManSpd | FB_BACnetAV1204 | AV-Objekt zur Eingabe der Drehzahl des Motors bei manueller Übersteuerung
AlmThOvrld | FB_BA_Alarm | x | Erfassung und Weiterverarbeitung eines Fehlers vom Thermoschutz des Motors (Kaltleiterauslösegerät, Motorschutzschalter etc.)
AlmDstFC | FB_BA_Alarm | x | Erfassung und Weiterverarbeitung eines Fehlers vom Frequenzumrichter
AlmMntnSwi | FB_BA_Alarm | x | Erfassung und Verarbeitung des Ereignisses Reparaturschalter ausgelöst.
AO FB_BACnetAO1203 AO-Objekt für die Vorgabe des Drehzahlsollwertes an den Frequenzumrichter
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang rValSfty |
PRIO_DISTURBANCE (3) | Eingang bEnDst OR ThOvrld OR DstFC OR MntnSwi | keine Störung von bEnDst, ThOvrld, DstFC oder MntnSwi -> Wert von Eingang rValDst Störung von bEnDst, ThOvrld, DstFC oder MntnSwi = 0 |
PRIO_LOCAL (8) | OpMod_udiPrVal = OPMOD_MAN_OFF OR OPMOD_MAN_OFF | Selector 0 OR ManSpd_rPrVal | Bei Handbetrieb Wert von AV-Objekt ManSpd
PRIO_PROGRAM (15) | TRUE | rValPgm | Wert von Eingang rValPgm (z.B. Drehzahlvorgabe vom Regler)
BO FB_BACnetBO1203 BO-Objekt für die Vorgabe der Freigabe an den Frequenzumrichter
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang bValSfty |
PRIO_DISTURBANCE (3) | Eingang bEnDst OR ThOvrld OR DstFC OR MntnSwi | Wert des Operators AND mit den Eingängen bValDst, ThOvrld_bPrVal, MntnSwi_bPrVal, DstFC_bPrVal |
PRIO_LOCAL (8) | OpMod_udiPrVal = OPMOD_MAN_OFF OR OPMOD_MAN_STP01 | TRUE, wenn OpMod_udiPrVal = OPMOD_MAN_STP01 | Bei Handbetrieb Wert von AV-Objekt ManSpd
PRIO_PROGRAM (15) | TRUE | bValPgm | Wert von Eingang bValPgm
EQ, EQ, AND | Wert des Netzwerkes ist TRUE, wenn die Aktive Priorität PRIO_PROGRAM (15) ist. Kann zur Synchronisation des Reglers bei Rückkehr in den Automatikbetrieb benutzt werden
TLogAO | FB_BACnetTLog1201 | Trendaufzeichnung des AO-Objektes für die Vorgabe des Drehzahlsollwertes an den Frequenzumrichter

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Uni_Dmp_xx

Ansteuerung eines stetigen Klappenantriebs

Funktionsbeschreibung

Das Template BAC_Uni_Dmp_xx ist für die Ansteuerung eines stetigen Klappenantriebs.

Hinweis Die beiden Ausgangsvariablen rPrVal / bSync sind nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Klappenstellung Fdb oder die mechanische Vorrangbedienung FdbOut vorhanden ist.
Ist dieses nicht der Fall, so geben die beiden Variablen den Wert Null aus.

Das Template BAC_Uni_Dmp_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Klappe werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | Rückmeldung Klappenstellung mit Überwachung | mechanische Vorrangbedienung Stellungsrückmeldung Poti | mechanische Vorrangbedienung Stellungsrückmeldung Handschalter
Instanz | Fdb | FdbOut | LocSwi
Datenpunkt Typ | AI | AI | BI
 | 4 | 2 | 1
BAC_Uni_Dmp_03 | 0 | 1 | 1
BAC_Uni_Dmp_05 | 1 | 0 | 1

Schnittstelle

VAR_INPUT

rValPgm  : REAL;
bEnSfty  : BOOL;
bValSfty : BOOL;
bEnDst   : BOOL;
bValDst  : BOOL;

rValPgm: Analoger Wert Programmpriorität

bEnSfty: Freigabe Sicherheitspriorität

rValSfty: Analoger Wert Sicherheitspriorität

bEnDst: Freigabe Störungspriorität

rValDst: Analoger Wert Störungspriorität

VAR_OUTPUT

rPrVal   : REAL;
bSync    : BOOL;

rPrVal: aktuelle Stellung des Klappenantriebs.
Die Ausgangsvariable rPrVal ist nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Klappenstellung Fdb oder die mechanische Vorrangbedienung FdbOut vorhanden ist.

bSync: Ausgabe eines Impulses um der Klappe zugehörigen Regler beim Rücksetzen vom Hand- in den Automatikbetrieb auf die aktuelle Position der Klappe zu synchronisieren.
Die Ausgangsvariable bSync ist nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Klappenstellung Fdb oder die mechanische Vorrangbedienung FdbOut vorhanden ist.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung des Klappenantriebs von der MBE oder einem lokalen Bediendisplay
ManPos | FB_BACnetAV1204 | AV-Objekt zur Eingabe der Position des Ventils bei manueller Übersteuerung
FdbMonitHys | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe der Hysteres für die Funktionsüberwachung des Regelventils mittels der Stellungsrückmeldung
FdbOut | FB_BACnetAI1203 | X | AI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Poti
Fdb | FB_BACnetAI1203 | X | AI-Objekt zur Erfassung der Stellungsrückmeldung Klappenstellung
FdbMonitTiDly | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe der Ansprechverzögerung der Funktionsüberwachung mittels Stellungsrückmeldung.
LocSwi | FB_BACnetBI1203 | X | BI-Objekt meldet die mechanische Vorrangbedienung Stellungsrückmeldung Handschalter
AO FB_BACnetAO1203 AO-Objekt für die Ansteuerung des Regelventils.
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang rValSfty |
PRIO_DISTURBANCE (3) | Eingang bEnDst | Eingang rValDst |
PRIO_LOCAL (8) | OpMod_udiPrVal = OPMOD_MAN | ManPos_rPrVal | Bei Handbetrieb Wert von AV-Objekt ManPos
PRIO_PROGRAM (15) | TRUE | AblkFnct_bQ oder rValPgm | Wert von Eingang rValPgm oder 100% von Blockierschutz
EQ | Ist TRUE wenn die Aktive Priorität PRIO_PROGRAM (15) ist. Kann zur Synchronisation des Reglers bei Rückkehr in den Automatikbetrieb benutzt werden
FdbMonitFnct | FB_BA_SldgLmtMonit | X | Funktionsüberwachung des Klappenantriebs durch Vergleich des Stellausgangs und der Stellungsrückmeldung.
AlmFdbMonit | FB_BA_Alarm | X | Erfassung und Weiterverarbeitung eines Fehlers von der Stellungsrückmeldeüberwachung
FdbMonit | FB_BACnetBV1204 | X | Meldet Fehler Stellungsrückmeldung an die MBE
TLogAO | FB_BACnetTLog1201 | Zeichnet den Present Value des AO-Objektes auf


BAC_Uni_Dmp2P_xx

Ansteuerung einer Zweipunktklappe

Funktionsbeschreibung

Das Template BAC_Uni_Dmp2P_xx ist für die Ansteuerung und Überwachung einer Zweipunktklappe, z.B. einer Luftklappe mit einem Federrücklaufantrieb. Die Ansteuerung der Klappe erfolgt mit einem binären Ausgang.

Hinweis Die beiden Ausgangsvariablen bSwiOpn / bSwiCls geben nur dann den tatsächlichen Zustand der Klappe aus, wenn in dem eingesetzten Template die Rückmeldung der Endlagenschalter SwiOpn/SwiCls vorhanden sind.
Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bSwiOpn = TRUE. Bei nicht angesteuerter Klappe wird der Ausgang bSwiCls = TRUE.
Dieses kann zur Folge haben, dass in dem Startprogramm einer Lüftungsanlage eine Verzögerungszeit zum Auffahren der Klappe angegeben werden muss.

Das Template BAC_Uni_Dmp2P_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Klappen werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | mechanische Vorrangbedienung Rückmeldung Handschalter | mechanische Vorrangbedienung Rückmeldung Relaisausgang | Endlage Auf | Endlage Zu
Instanz | LocSwi | FdbOut | SwiOpn | SwiCls
Datenpunkt Typ | BI | BI | BI | BI
 | 8 | 4 | 2 | 1
BAC_Uni_Dmp2P_08 | 1 | 0 | 0 | 0
BAC_Uni_Dmp2P_15 | 1 | 1 | 1 | 1

Schnittstelle

VAR_INPUT

bValPgm    : BOOL;
bEnSfty    : BOOL;
bValSfty   : BOOL;
bEnDst     : BOOL;
bValDst    : BOOL;

bValPgm: Binärer Wert Programmpriorität

bEnfty: Freigabe Sicherheitspriorität

bValSfty: Binärer Wert Sicherheitspriorität

bEnDst: Freigabe Störungspriorität

bValDst: Binärer Wert Störungspriorität

VAR_OUTPUT

bQ        : BOOL;
bSwiOpn   : BOOL;
bSwiCls   : BOOL;

bQ: Status Ausgang Ansteuerung der Luftklappe

bSwiOpn: Endlage Offen der Klappe ist erreicht. Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bSwiOpn = TRUE. Bei nicht angesteuerter Klappe wird der Ausgang bSwiCls = TRUE.

bSwiCls: Endlage Zu der Klappe ist erreicht. Ist keine Endlagenüberwachung vorhanden, so wird diese intern emuliert. Wird die Klappe angesteuert, so wird der Ausgang bSwiOpn = TRUE. Bei nicht angesteuerter Klappe wird der Ausgang bSwiCls = TRUE.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
SwiOpn | FB_BACnetBI1203 | X | BI-Objekt für den Anschluss des Endlagenschalters Offen
SwiCls | FB_BACnetBI1203 | X | BI-Objekt für den Anschluss des Endlagenschalters Zu
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung der Klappe von der MBE oder einem lokalen Bediendisplay
LocSwi | FB_BACnetBI1203 | X | BI-Objekt für für die Rückmeldung einer mechanischen Vorrangbedienung. (Hand/Not-Bedienebene)
FdbOut | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Relais
TiOpn | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe des Wertes für die Auffahrzeit
TiCls | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe des Wertes für die Zufahrzeit
MoveCtrlOpn | FB_BA_SwiMonit | X | Funktionsbaustein welcher die Endlage Auf der Klappe überwacht
MoveCtrlCls | FB_BA_SwiMonit | X | Funktionsbaustein welcher die Endlage Zu der Klappe überwacht
BO FB_BACnetBO1203 BO-Objekt für die Ansteuerung der Klappe
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang bValSfty |
PRIO_DISTURBANCE (3) | Eingang bEnDst | Eingang bValDst |
PRIO_LOCAL (8) | Das OR-Modul bündelt Ereignisse welche das Schreiben auf die Priorität Manuelle Übersteuerung (Local) des nachgeschalteten BO-Objektes aktiviert. Ereignisse: 1. Das MV-Objekt hat den Wert OPMOD_MAN_OFF (Hand Aus) 2. Das MV-Objekt hat den Wert OPMOD_MAN_STP01(Hand Ein) | TRUE, wenn OpMod_udiPrVal = OPMOD_MAN_STP01 |
PRIO_PROGRAM (15) | TRUE | Eingang bValPgm |
AlmFnct FB_BA_Alarm x Der Funktionsbaustein AlmFnct erfasst das Ereignis der Überwachung der Endlagenschalter.
Aktionen, die nach dem Eingang der Endlagenschalterstörung erfolgen soll, können im Template am Funktionsbaustein AlmFnct parametriert werden.
Alm | FB_BACnetBV1204 | x | BV-Objekt zur Anzeige der Klappenstörung in der MBE


BAC_Uni_Mot1st_xx

Ansteuerung eines einstufigen Motors

Funktionsbeschreibung

Das Template BAC_Uni_Mot1st_xx ist für die Ansteuerung eines einstufigen Motors, z.B. eines Ventilators.
Das Template BAC_Uni_Mot1st_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten des Templates werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | Wartungsschalter | mechanische Vorrangbedienung Rückmeldung Handschalter | mechanische Vorrangbedienung Rückmeldung Relaisausgang | Betriebs-rückmeldung | Störung
Instanz | MntnSwi | LocSwi | FdbOut | Fdb | Dst
Datenpunkt Typ | BI | BI | BI | BI | BI
 | 16 | 8 | 4 | 2 | 1
BAC_Uni_Mot1st_27 | 1 | 1 | 0 | 1 | 1
BAC_Uni_Mot1st_29 | 1 | 1 | 1 | 0 | 1

Schnittstelle

VAR_INPUT

bValPgm    : BOOL;
bEnSfty    : BOOL;
bValSfty   : BOOL;
bEnDst     : BOOL;
bValDst    : BOOL;

bValPgm: Binärer Wert Programmpriorität

bEnSfty: Freigabe Sicherheitspriorität

bValSfty: Binärer Wert Sicherheitspriorität

bEnDst: Freigabe Störungspriorität. An diesen Eingang könnte z.B. eine Prozessrückmeldung angelegt werden.

bValDst: Binärer Wert Störungspriorität. An diesen Eingang könnte z.B. eine Prozessrückmeldung angelegt werden.

VAR_OUTPUT

bQ         : BOOL;

bQ: Betriebsrückmeldung

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
Dst | FB_BACnetBI1203 | x | BI-Objekt Pumpenstörung
Fdb | FB_BACnetBI1203 | X | BI-Objekt Betriebsrückmeldung
FdbOut | FB_BACnetBI1203 | X | BI-Objekt Rückmeldung mechanische Vorrangbedienung Rückmeldung Relaisausgang
LocSwi | FB_BACnetBI1203 | X | BI-Objekt Rückmeldung mechanische Vorrangbedienung Rückmeldung Handschalter
MntnSwi | FB_BACnetBI1203 | X | BI-Objekt Wartungsschalter
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung der Pumpe von der MBE oder einem lokalen Bediendisplay
AlmDst FB_BA_Alarm Der Funktionsbaustein AlmDst erfasst das Ereignis Störung.
Aktionen, die nach dem Eingang der Störung erfolgen sollen, können im Template am Funktionsbaustein AlmDst parametriert werden.
AlmMntnSwi FB_BA_Alarm X Der Funktionsbaustein AlmDst erfasst das Ereignis Reparaturschalter ausgelöst.
Aktionen, die nach dem Eingang Reparaturschalter ausgelöst erfolgen sollen, können im Template am Funktionsbaustein AlmMntnSwi parametriert werden.
BO FB_BACnetBO1203 BO-Objekt für die Vorgabe der Ansteuerung des einstufigen Motors
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang bValSfty |
PRIO_DISTURBANCE (3) | Eingang bEnDst OR Dst OR MntnSwi | Wert des Operators AND mit den Eingängen bValDst, MntnSwi_bPrVal, Dst_bPrVal |
PRIO_LOCAL (8) | OpMod_udiPrVal = OPMOD_MAN_OFF OR OPMOD_MAN_STP01 | TRUE, wenn OpMod_udiPrVal = OPMOD_MAN_STP01 | Bei Handbetrieb Wert von AV-Objekt ManSpd
PRIO_PROGRAM (15) | TRUE | bValPgm | Wert von Eingang bValPgm

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Uni_Pu1st_xx

Ansteuerung einer einstufigen Pumpe

Funktionsbeschreibung

Das Template BAC_Uni_Pu1st_xx ist für die Ansteuerung einer einstufigen Pumpe.
Das Template BAC_Uni_Pu1st_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Pumpe werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | Strömungs- wächter | Wartungs- schalter | Blockier- schutz | mechanische Vorrangbedienung Rückmeldung Handschalter | mechanische Vorrangbedienung Rückmeldung Relaisausgang | Betriebs- rückmeldung | Stör- meldung
Instanzname | - | MntnSwi | AblkFnct | LocSwi | FdbOut | Fdb | Dst
Datenpunkt Typ | BI | BI | - | BI | BI | BI | BI
 | 64 | 32 | 16 | 8 | 4 | 2 | 1
BAC_Uni_Pu1st_59 | 0 | 1 | 1 | 1 | 0 | 1 | 1
BAC_Uni_Pu1st_61 | 0 | 1 | 1 | 1 | 1 | 0 | 1

Schnittstelle

VAR_INPUT

bValPgm    : BOOL;
bEnSfty    : BOOL;
bValSfty   : BOOL;
bEnDst     : BOOL;
bValDst    : BOOL;

bValPgm: Binärer Wert Programmpriorität

bEnfty: Freigabe Sicherheitspriorität

bValSfty: Binärer Wert Sicherheitspriorität

bEnDst: Freigabe Störungspriorität. An diesen Eingang könnte z.B. eine Prozessrückmeldung angelegt werden.

bValDst: Binärer Wert Störungspriorität. An diesen Eingang könnte z.B. eine Prozessrückmeldung angelegt werden.

VAR_OUTPUT

bQ         : BOOL;

bQ: Pumpe eingeschaltet

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
Dst | FB_BACnetBI1203 | x | BI-Objekt Pumpenstörung
Fdb | FB_BACnetBI1203 | X | BI-Objekt Betriebsrückmeldung Pumpe
FdbOut | FB_BACnetBI1203 | X | BI-Objekt Rückmeldung mechanische Vorrangbedienung Rückmeldung Relaisausgang
LocSwi | FB_BACnetBI1203 | X | BI-Objekt Rückmeldung mechanische Vorrangbedienung Rückmeldung Handschalter
MntnSwi | FB_BACnetBI1203 | X | BI-Objekt Wartungsschalter
DlyOff | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes Nachlaufzeit.
IdlePrd | FB_BACnetAV1204 | AV-Objekt zur Eingabe der maximalen Dauer einer Pumpenstillstandsperiode bis zur Ausgabe eines Blockierschutzimpulses.
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung der Pumpe von der MBE oder einem lokalen Bediendisplay
AlmDst FB_BA_Alarm Der Funktionsbaustein AlmDst erfasst das Ereignis Pumpenstörung.
Aktionen, die nach dem Eingang der Pumpenstörung erfolgen sollen, können im Template am Funktionsbaustein AlmDst parametriert werden.
AlmMntnSwi FB_BA_Alarm X Der Funktionsbaustein AlmDst erfasst das Ereignis Reparaturschalter ausgelöst.
Aktionen, die nach dem Eingang Reparaturschalter ausgelöst erfolgen sollen, können im Template am Funktionsbaustein AlmMntnSwi parametriert werden.
BO FB_BACnetBO1203 BO-Objekt für die Ansteuerung der Pumpe
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang bValSfty |
PRIO_DISTURBANCE (3) | Das OR-Modul bündelt Ereignisse welche das Schreiben auf die Priorität Störung (Disturbance) des nachgeschalteten BO-Objektes aktivieren. Ereignisse: 1. Motorstörung vom Funktionsbaustein AlmDst 2. Eingang Template bEnDst 3. Reparaturschalter vom Funktionsbaustein AlmMntnSwi | Am Eingang des Templates bEnDst läst sich die Pumpe zwangsweise Ein oder Ausschalten, z.B. bei Frostgefahr am Lufterhitzer. Das zwangsweise Einschalten ist jedoch am AND-Modul verriegelt bei vorhandener Pumpenstörung oder ausgelöstem Reparaturschalter. |
PRIO_LOCAL (8) | Das OR-Modul bündelt Ereignisse welche das Schreiben auf die Priorität Manuelle Übersteuerung (Local) des nachgeschalteten BO-Objektes aktiviert. Ereignisse: 1. Das MV-Objekt hat den Wert OPMOD_MAN_OFF (Hand Aus) 2. Das MV-Objekt hat den Wert OPMOD_MAN_STP01(Hand Ein) | TRUE, wenn OpMod_udiPrVal = OPMOD_MAN_STP01 |
PRIO_PROGRAM (15) | TRUE | Das OR-Modul bündelt Ereignisse welche das Schreiben auf die Priorität Pgm (Programm) des nachgeschalteten BO-Objektes aktivieren. Ereignisse: 1. Externe Anforderung der Pumpe vom Eingang bValPgm oder Pumpennachlauf von PuDlyOff noch aktiv. 2. Blockierschutzfunktion vom Funktionsbaustein AblkFnct aktiv |

PuDlyOff | TOF | Zeitglied für Pumpennachlauf
AblkFnct | FB_BA_AntBlkg | Funktionsbaustein zur Ausgabe eines Blockierschutzimpulses

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Hys_01

Funktionsbeschreibung

Das Template stellt eine Hysterese-Funktion mit festen Schaltpunkten dar.

Schnittstelle

VAR_INPUT

bEn       : BOOL;
rX        : REAL;

bEn: Freigabe

rX: Istwert

VAR_OUTPUT

bQ        : BOOL;

bQ: Ausgabe aktueller Zustand der Hystere-Funktion

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
En | FB_BACnetBV1204 | Das BV-Objekt dient zur Anzeige der Freigabe Hysterese Funktion
X | FB_BACnetAV1204 | Das AV-Objket zeigt den Istwert an, der über die Eingangsvariable rX an das Template angebunden wird
HysOn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des oberen Grenzwertes der Hysteresefunktion
HysOff | FB_BACnetAV1204 | AV-Objekt zur Eingabe des unteren Grenzwertes der Hysteresefunktion
Hys | FB_BA_Swi2P | Der Funktionsbaustein Hys ist das Kernstuck der Hysteresefunktion.
Q | FB_BACnetBV1204 | Das BV-Objekt zeigt den aktuellen Zustand der Hystere-Funktion an


BAC_Hys_02

Funktionsbeschreibung

Das Template stellt eine Hysterese-Funktion mit dynamischen Schaltpunkten dar.

Schnittstelle

VAR_INPUT

bEn       : BOOL;
rX        : REAL;

bEn: Freigabe

rX: Istwert

rSp: Sollwert

VAR_OUTPUT

bQ        : BOOL;

bQ: Ausgabe aktueller Zustand der Hystere-Funktion

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
En | FB_BACnetBV1204 | Das BV-Objekt dient zur Anzeige der Freigabe Hysterese Funktion
X | FB_BACnetAV1204 | Das AV-Objket zeigt den Istwert an, der über die Eingangsvariable rX an das Template angebunden wird
Sp | FB_BACnetAV1204 | Das AV-Objket zeigt den Sollwert an, der über die Eingangsvariable rSp an das Template angebunden wird
HysOn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des oberen Grenzwertes der Hysteresefunktion
HysOff | FB_BACnetAV1204 | AV-Objekt zur Eingabe des unteren Grenzwertes der Hysteresefunktion
Hys | FB_BA_Swi2P | Der Funktionsbaustein Hys ist das Kernstuck der Hysteresefunktion.
Q | FB_BACnetBV1204 | Das BV-Objekt zeigt den aktuellen Zustand der Hystere-Funktion an


BAC_PID_01

Funktionsbeschreibung

Das Template BAC_PID_01 ist ein universeller PID-Regler.

Schnittstelle

VAR_INPUT

bEn       : BOOL;
rX        : REAL;
rW        : REAL;
rSync     : REAL;
bSync     : BOOL;

bEn: Freigabe

rX: Istwert

rW: Sollwert

rSync: Synchronisationswert

bSync: Start Synchronisation

VAR_OUTPUT

rY        : REAL;
rYMax     : REAL;
rYMin     : REAL;

rY: Ausgabe der Stellgröße

rYMax: Maximalwertes Reglers

rYMin: Minimalwert Reglers

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X | FB_BACnetAV1204 | Dass AV-Objket ist refferenziert auf den Istwert-Eingang des BACnet-Loop-Objektes
W | FB_BACnetAV1204 | Dass AV-Objket ist refferenziert auf den Sollwert-Eingang des BACnet-Loop-Objektes
En | FB_BACnetBV1204 | Das BV-Objekt dient zur Anzeige der Reglerfreigabe in der MBE oder in einen lokalen Bediendisplay
PID | FB_BACnetLoop1201 | PID-Regler
rtrigSync | R_TRIG | Bei einer steigenden Flanke am Eingang bSync wird das Loop-Objekt auf den Wert von rSync aufsynchronisiert.
Y | FB_BACnetAV1204 | Dass AV-Objekt ist refferenziert auf den Stellgrößenausgang des BACnet-Loop-Objektes


BAC_Scale_02

Funktionsbeschreibung

Das Template BAC_Scale_02 stellt eine Linear-Interpolation mit 2 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Kennlinie wird durch die Stützpunkte [X1/Y1] bis [X2/Y2] bestimmt.

Schnittstelle

VAR_INPUT

rX         : REAL;

rX: Eingangswert der Kennlinie

VAR_OUTPUT

rY     : REAL;

rY: Errechneter Ausgangswert der Kennlinie

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X1 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X1 vorgegeben
X2 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X2 vorgegeben
Y1 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y1 vorgegeben
Y2 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y2 vorgegeben
Scale | FB_BA_Chrct02 | Der Baustein FB_BA_Chrct02 stellt eine Linear-Interpolation mit 2 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen
Y | FB_BACnetAV1204 | Ausgabe errechneter Ausgangswert der Kennlinie

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Scale_04

Funktionsbeschreibung

Das Template BAC_Scale_04 stellt eine Linear-Interpolation mit 4 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Kennlinie wird durch die Stützpunkte [X1/Y1] bis [X4/Y4] bestimmt.

Schnittstelle

VAR_INPUT

rX         : REAL;

rX: Eingangswert der Kennlinie

VAR_OUTPUT

rY     : REAL;

rY: Errechneter Ausgangswert der Kennlinie

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X1 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X1 vorgegeben
X2 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X2 vorgegeben
X3 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X3 vorgegeben
X4 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X4 vorgegeben
Y1 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y1 vorgegeben
Y2 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y2 vorgegeben
Y3 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y3 vorgegeben
Y4 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y4 vorgegeben
Scale | FB_BA_Chrct04 | Der Baustein FB_BA_Chrct04 stellt eine Linear-Interpolation mit 4 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen
Y | FB_BACnetAV1204 | Ausgabe errechneter Ausgangswert der Kennlinie

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Scale_07

Funktionsbeschreibung

Das Template BAC_Scale_07 stellt eine Linear-Interpolation mit 7 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen. Die Kennlinie wird durch die Stützpunkte [X1/Y1] bis [X7/Y7] bestimmt.

Schnittstelle

VAR_INPUT

rX         : REAL;

rX: Eingangswert der Kennlinie

VAR_OUTPUT

rY     : REAL;

rY: Errechneter Ausgangswert der Kennlinie

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
X1 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X1 vorgegeben
X2 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X2 vorgegeben
X3 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X3 vorgegeben
X4 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X4 vorgegeben
X5 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X5 vorgegeben
X6 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X6 vorgegeben
X7 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt X7 vorgegeben
Y1 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y1 vorgegeben
Y2 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y2 vorgegeben
Y3 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y3 vorgegeben
Y4 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y4 vorgegeben
Y5 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y5 vorgegeben
Y6 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y6 vorgegeben
Y7 | FB_BACnetAV1204 | Über das AV-Objekt wird der Wert für den Stützpunkt Y7 vorgegeben
Scale | FB_BA_Chrct07 | Der Baustein FB_BA_Chrct07 stellt eine Linear-Interpolation mit 7 Stützstellen dar und lässt sich zur Kennlinienerstellung nutzen
Y | FB_BACnetAV1204 | Ausgabe errechneter Ausgangswert der Kennlinie

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_Uni_Vlv_xx

Ansteuerung eines stetigen Regelventils

Funktionsbeschreibung

Das Template BAC_Uni_Vlv_xx ist für die Ansteuerung eines stetigen Regelventils.

Hinweis Die beiden Ausgangsvariablen rPrVal / bSync sind nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Ventilstellung Fdb vorhanden ist.
Ist dieses nicht der Fall, so geben die beiden Varianten den Wert Null aus.

Das Interface der Templates BAC_Uni_Vlv3P_xx / BAC_Uni_Vlv_xx ist gleich. Aus diesem Grunde kann im Project Builder in einem Aufruf-Template ein 3Punkt-Ventil durch ein stetiges Ventil ausgetauscht werden ohne das im SPS-Code nachgebessert werden muss.

Das Template BAC_Uni_Vlv_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Regelventils werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | Blockierschutz | Rückmeldung Ventilstellung mit Überwachung | mechanische Vorrangbedienung Stellungsrückmeldung Poti | mechanische Vorrangbedienung Stellungsrückmeldung Handschalter
Instanz | AblkFnct | Fdb | FdbOut | LocSwi
Datenpunkt Typ | - | AI | AI | BI
 | 8 | 4 | 2 | 1
BAC_Uni_Vlv_11 | 1 | 0 | 1 | 1
BAC_Uni_Vlv_13 | 1 | 1 | 0 | 1

Schnittstelle

VAR_INPUT

rValPgm  : REAL;
bEnSfty  : BOOL;
bValSfty : BOOL;
bEnDst   : BOOL;
bValDst  : BOOL;

rValPgm: Analoger Wert Programmpriorität

bEnSfty: Freigabe Sicherheitspriorität

rValSfty: Analoger Wert Sicherheitspriorität

bEnDst: Freigabe Störungspriorität

rValDst: Analoger Wert Störungspriorität

bDisAblk: Verriegelung Blockierschutzfunktion. Verhindert die gleichzeitige Aktivierung des Blockierschutzes von der Pumpe und dem Regelventil, z.B. an einem Wärmetauscher

VAR_OUTPUT

rPrVal   : REAL;
bSync    : BOOL;

rPrVal: aktuelle Stellung des Regelventils.
Die Ausgangsvariablen rPrVal ist nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Ventilstellung Fdb vorhanden ist.

bSync: Ausgabe eines Impulses um den Ventil zugehörigen Regler beim Rücksetzen vom Hand- in den Automatikbetrieb auf die aktuelle Position des Ventils zu synchronisieren.
Die Ausgangsvariablen bSync ist nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Ventilstellung Fdb vorhanden ist.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung des Regelventils von der MBE oder einem lokalen Bediendisplay
IdlePrd | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe der maximalen Dauer einer Ventilstillstandsperiode bis zur Ausgabe eines Blockierschutzimpulses.
ManPos | FB_BACnetAV1204 | AV-Objekt zur Eingabe der Position des Ventils bei manueller Übersteuerung
FdbMonitHys | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe der Hysteres für die Funktionsüberwachung des Regelventils mittels der Stellungsrückmeldung
Fdb | FB_BACnetAI1203 | X | AI-Objekt zur Erfassung der Stellungsrückmeldung vom Ventil.
FdbOut | FB_BACnetAI1203 | X | AI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Poti
FdbMonitTiDly | FB_BACnetAV1204 | X | AV-Objekt zur Eingabe der Ansprechverzögerung der Funktionsüberwachung mittels Stellungsrückmeldung.
LocSwi | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Rückmeldung Handschalter
AO FB_BACnetAO1203 AO-Objekt für die Ansteuerung des Regelventils.
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | Eingang rValSfty |
PRIO_DISTURBANCE (3) | Eingang bEnDst | Eingang rValDst |
PRIO_LOCAL (8) | OpMod_udiPrVal = OPMOD_MAN | ManPos_rPrVal | Bei Handbetrieb Wert von AV-Objekt ManPos
PRIO_PROGRAM (15) | TRUE | AblkFnct_bQ oder rValPgm | Wert von Eingang rValPgm oder 100% von Blockierschutz
EQ | Ist TRUE wenn die Aktive Priorität PRIO_PROGRAM (15) ist. Kann zur Synchronisation des Reglers bei Rückkehr in den Automatikbetrieb benutzt werden
FdbMonitFnct | FB_BA_SldgLmtMonit | X | Funktionsüberwachung des Regelventils durch Vergleich des Stellausgangs und der Stellungsrückmeldung.
AlmFdbMonit | FB_BA_Alarm | X | Erfassung und Weiterverarbeitung eines Fehlers von der Stellungsrückmeldeüberwachung
FdbMonit | FB_BACnetBV1204 | X | Meldet Fehler Stellungsrückmeldung an die MBE
AblkFnct | FB_BA_AntBlkg | X | Erzeugt Blockierschutzimpuls wenn in den letzten Zeitintervall von IdlePrd keine Ventilfahrt mit mehr als 70% Fahrweg stattgefunden hat. Impulslänge 180 Sekunden.
TLogAO | FB_BACnetTLog1201 | Zeichnet den Present Value des AO-Objektes auf


BAC_Uni_Vlv3P_xx

Ansteuerung eines Dreipunktventils

Funktionsbeschreibung

Das Template BAC_Uni_Vlv3P_xx ist für die Ansteuerung eines Dreipunktventils. Die Ansteuerung des Ventils erfolgt mit zwei binären Äusgangen.

Hinweis Die beiden Ausgangsvariablen rPrVal / bSync sind nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Ventilstellung Fdb vorhanden ist.
Ist dieses nicht der Fall, so geben die beiden Varianten den Wert Null aus.

Das Interface der Templates BAC_Uni_Vlv3P_xx / BAC_Uni_Vlv_xx ist gleich. Aus diesem Grunde kann im Project Builder in einem Aufruf-Template ein 3Punkt-Ventil durch ein stetiges Ventil ausgetauscht werden ohne das im SPS-Code nachgebessert werden muss.

Das Template BAC_Uni_Vlv3P_xx existiert in verschiedenen Ausstattungsvarianten.
Die Austattungsvarianten der Ventile werden nach einem Kennzeichnungsschlüssel benannt. Der Kennzeichnungsschlüssel leitet sich aus der nachstehenden Tabelle ab.

Optionen | Rückmeldung Ventilstellung | Blockier- schutz | mechanische Vorrangbedienung Stellungsrückmeldung Zu | mechanische Vorrangbedienung Stellungsrückmeldung Auf | mechanische Vorrangbedienung Stellungsrückmeldung Handschalter | Endlage Zu | Endlage Auf
Instanz | Fdb | AblkFnct | FdbOutCls | FdbOutOpn | LocSwi | SwiCls | SwiOpn
Datenpunkt Typ | AI |  | BI | BI | BI | BI | BI
 |  | 32 | 16 | 8 | 4 | 2 | 1
BAC_Uni_Vlv3P_32 | 0 | 1 | 0 | 0 | 0 | 0 | 0

Schnittstelle

VAR_INPUT

bValPgm    : BOOL;
bEnSfty    : BOOL;
bValSfty   : BOOL;
bEnDst     : BOOL;
bValDst    : BOOL;

rValPgm: Analoger Wert Programmpriorität

bEnSfty: Freigabe Sicherheitspriorität

bEnDst: Freigabe Störungspriorität

bDisAblk: Verriegelung Blockierschutzfunktion. Verhindert die gleichzeitige Aktivierung des Blockierschutzes von der Pumpe und dem Regelventil, z.B. an einem Wärmetauscher

VAR_OUTPUT

rPrVal     : REAL;
bSync      : BOOL;

rPrVal: aktuelle Stellung des Regelventils.
Die Ausgangsvariablen rPrVal ist nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Ventilstellung Fdb vorhanden ist.

bSync: Ausgabe eines Impulses um den Ventil zugehörigen Regler beim Rücksetzen vom Hand- in den Automatikbetrieb auf die aktuelle Position des Ventils zu synchronisieren.
Die Ausgangsvariablen bSync ist nur dann aktiv, wenn in dem eingesetzten Template die Rückmeldung der Ventilstellung Fdb vorhanden ist.

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | optional | Aufgabe
SwiOpn | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der Endlage Auf des Ventils
SwiCls | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der Endlage Zu des Ventils
LocSwi | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Handschalter
FdbOutOpn | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Auf
FdbOutCls | FB_BACnetBI1203 | X | BI-Objekt zur Erfassung der mechanischen Vorrangbedienung Stellungsrückmeldung Zu
FdbVlv | FB_BACnetAI1203 | x | AI-Objekt zur Erfassung der Stellungsrückmeldung vom Ventil.
HysPos | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes Hysterese Starten der Positionsänderung
IdlePrd | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes Ruhezeit Blockierschutz
OpMod | FB_BACnetMV1201 | MV-Objekt zur manuellen Steuerung des Ventils von der MBE oder einem lokalen Bediendisplay
TiOpn | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes für die Auffahrzeit
TiCls | FB_BACnetAV1204 | AV-Objekt zur Eingabe des Wertes für die Zufahrzeit
OpModMuxOpn | FB_BA_MMUX_B04 | Multiplexer Auswertung Betriebsart für das Öffnen
OpModMuxCls | FB_BA_MMUX_B04 | Multiplexer Auswertung Betriebsart für das Schliessen
Anlg3Pnt | FB_BA_Anlg3Pnt | Der Funktionsbaustein Anlg3Pnt ist das Kernstück des Templates und für die Ansteuerung des 3Punkt Ventils vorgesehen. Er wandelt ein stetiges Signal für die Positionierung in die binären Befehle Auf/Zu
Pos | FB_BACnetAV1204 | Aktuelle errechnete Position des Stellantriebs
Opn FB_BACnetBO1203 BO-Objekt für das Auffahren des Stellantriebs
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | FALSE |
PRIO_DISTURBANCE (3) | Eingang bEnDst | FALSE |
PRIO_LOCAL (8) | Das OpModMuxOpn bündelt Ereignisse welche das Schreiben auf die Priorität Manuelle Übersteuerung (Local) des nachgeschalteten BO-Objektes aktiviert. Ereignisse: 1. Das MV-Objekt hat den Wert OPMOD_3PVLV_OFF (Hand Aus) 2. Das MV-Objekt hat den Wert OPMOD_3PVLV_OPEN(Hand Auf) 3. Das MV-Objekt hat den Wert OPMOD_3PVLV_CLOSE(Hand Zu) | OpModMuxOpn_bVal = TRUE, wenn OpMod_udiPrVal = OPMOD_3PVLV_OPEN |
PRIO_PROGRAM (15) | TRUE | Anlg3Pnt_bOpn OR AblkFnct_bQ |
Cls FB_BACnetBO1203 BO-Objekt für das Auffahren des Stellantriebs
Priorität: | Freigabe | Wert | Bemerkung
PRIO_SAFETY (1) | Eingang bEnSfty | TRUE |
PRIO_DISTURBANCE (3) | Eingang bEnDst | TRUE |
PRIO_LOCAL (8) | Das OpModMuxCls bündelt Ereignisse welche das Schreiben auf die Priorität Manuelle Übersteuerung (Local) des nachgeschalteten BO-Objektes aktiviert. Ereignisse: 1. Das MV-Objekt hat den Wert OPMOD_3PVLV_OFF (Hand Aus) 2. Das MV-Objekt hat den Wert OPMOD_3PVLV_OPEN(Hand Auf) 3. Das MV-Objekt hat den Wert OPMOD_3PVLV_CLOSE(Hand Zu) | OpModMuxCls_bVal = TRUE, wenn OpMod_udiPrVal = OPMOD_3PVLV_CLOSE |
PRIO_PROGRAM (15) | TRUE | Anlg3Pnt_bCls AND NOT AblkFnct_bQ |
AblkFnct | FB_BA_AntBlkg | X | Erzeugt Blockierschutzimpuls wenn in dem letzten Zeitintervall von IdlePrd keine Ventilfahrt mit mehr als 40% Fahrweg stattgefunden hat. Impulslänge 180 Sekunden.
TLogPos | FB_BACnetTLog1201 | Zeichnet den Present Value des Pos-Objektes auf


BAC_RC_AnlgLgtActr_01

Template zur Ansteuerung eines analogen Lichtaktors.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_BA_AnlgLgtActr. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Das Template empfängt seine Kommandos über das Befehlstelegramm stLgtCmd und gibt den aktuellen Lichtzustand als LREAL-Wert [0..100%], INT-Wert [0..32767] und Booleschen Wert (EIN/AUS) aus, der bei bestimmten Lampenarten das Schalten eines AUS-Relais ermöglicht.
In dieser BACnet-Version wird der aktuelle Lichtwert zusätzlich über ein BACnet-Analog-Value-Objekt abgebildet und die Werte werden mit einem Trendlog-Objekt aufgezeichnet.

Schnittstelle

VAR_INPUT

stLgtCmd   : ST_BA_LgtCmd;

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd.

VAR_OUTPUT

lrActlLgtLvl    : LREAL;
iActlLgtLvl     : INT;
bLgt            : BOOL;

lrActlLgtLvl: Aktuelle Stellgröße [0..100%]. Berechnung siehe unten.

iActlLgtLvl: Aktuelle Stellgröße [0..32767].

bLgt : Aktuelle Stellgröße (EIN / AUS).

Parameter

PLT_NUM        : UDINT := 1;
lrSttupCtrlVal : LREAL := 100;
lrMinCtrlVal   : LREAL := 0;
lrMaxCtrlVal   : LREAL := 100;
lrLgtOffset    : LREAL := 0;
udiDimTi       : UDINT := 7;
udiBlinkTi     : UDINT := 0;
udiOffDly      : UDINT := 0;

PLT_NUM: Anlagennummer.

lrSttupCtrlVal: Lichtwert nach Neustart [lrMinCtrlVal..lrMaxCtrlVal]. Dieser Wert wird nur im ersten Aufruf-Zyklus übernommen.

lrMinCtrlVal: Minimaler Lichtausgabewert [1..lrMaxCtrlVal]. Eine Änderung dieses Wertes wirkt unmittelbar.

lrMaxCtrlVal: Maximaler Lichtausgabewert [lrMinCtrlVal..100%]. Eine Änderung dieses Wertes wirkt unmittelbar.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dieser Effekt ist nur in Verbindung mit dem Befehl bSetCtrlValDct innerhalb der Kommandostruktur stLgtCmd wirksam. In diesem Fall wird der Lichtaktor auf den Wert lrSetCtrlValDct+lrLgtOffset gesetzt. Der Wert kann den eingestellten Maximalwert dabei nicht überschreiten bzw. den Minimalwert unterschreiten. Ein Abschalten ist jedoch möglich, wenn lrSetCtrlValDct+lrLgtOffset kleiner oder gleich Null ist.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird.

udiBlinkTi / udiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung, erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet, kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit udiBlinkTi [ms] wird das Licht ausgeschaltet und anschließend für die Zeit udiOffDly [ms] noch einmal eingeschaltet.

BACnet-Objekte

LgtCtrlVal      : FB_BACnetAV1201;
LgtCtrlVal_TLog : FB_BACnetTLog1201;

LgtCtrlVal: Aktueller Lichtwert [0..100%].

LgtCtrlVal_TLog: Trendlog aktueller Lichtwert.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
AnlgLgtActr | FB_BA_AnlgLgtActr | Analog-Lichtaktor

Netzwerk 0002

Instanz | Typ | Aufgabe
LgtCtrlVal | FB_BACnetAV1201 | Anzeigeobjekt aktueller Lichtwert

Netzwerk 0003

Instanz | Typ | Aufgabe
LgtCtrlVal_TLog | FB_BACnetTLog1201 | Trendlogobjekt aktueller Lichtwert

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_CnstLgtCtrl_01

Template für eine Konstantlichtregelung.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_BA_CnstLgtCtrl. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Die Konstantlichtregelung arbeitet intern mit einem PI-Regler, der einen Abgleich zwischen dem Istwert am Eingang lrLgtSens und dem Sollwert am Eingang lrSp anstrebt. Die dazugehörigen Reglerparameter sind im Parameterbereich einstellbar. Die Werte des Helligkeitssensors werden zudem intern mit einem PT1-Filter gedämpft.
Zusätzlich verfügt das Template über Eingänge, die ein normales Schalten des Lichtes auf bestimmte Werte ermöglichen.
Der Baustein sendet seine Kommandos über das Befehlstelegramm stLgtCmd.

Schnittstelle

VAR_INPUT

bEnCtrl        : BOOL;
lrLgtSens      : LREAL;
lrSttUpCtrlVal : LREAL;
lrSp           : LREAL;
bSwi           : BOOL;
bSwiUp         : BOOL;
bSwiDwn        : BOOL;
bUp            : BOOL;
bDwn           : BOOL;
bOn            : BOOL;
bOff           : BOOL;
bClMinVal      : BOOL;
bClMaxVal      : BOOL;
bSetValDct     : BOOL;
lrSetValDct    : LREAL;
lrActlLgtLvl   : LREAL;

bEnCtrl: Eine positive Flanke an diesem Eingang schaltet die Regelung aktiv. Hinweis: werden die Schalteingänge bSwi...bSetValDct betätigt, so wird die Regelung wieder deaktiviert, unabhängig davon, ob am Eingang bEnCtrl ein TRUE-Signal anliegt.

lrSttUpCtrlVal: Aufstartwert des Regelausgangs [0..100%]. Dieser Wert ist nur dann aktiv, wenn die entsprechende Aufstartart unter eSttUpCtrlMod (Parameterbereich) angewählt wurde.

lrLgtSens: Istwert-Eingang eines Lichtsensors [Lux].

lrSp: Sollwert-Eingang [Lux].

bSwi: Schaltereingang Ein/Aus, Auf-/Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand ein oder aus. Ein langer Tastendruck dimmt das Licht abwechselnd auf oder ab. Das Aufdimmen endet beim Erreichen des Maximalwertes, das Abdimmen beim Erreichen des Minimalwertes. Eine automatische Dimmrichtungsumkehr erfolgt nicht. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiUp: Schaltereingang Ein/Aus, Aufdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand ein oder aus. Ein langer Tastendruck dimmt das Licht auf. Das Aufdimmen endet beim Erreichen des Maximalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiDwn: Schaltereingang Ein/Aus, Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand ein oder aus. Ein langer Tastendruck dimmt das Licht ab. Das Abdimmen endet beim Erreichen des Minimalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Maximalwert geschaltet und dann abgedimmt.

bUp: Aufdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bDwn: Abdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bOn: Zentrales Einschalten. Der Einschaltwert richtet sich nach der Auswahl an eOnMod, s.u..

bOff: Zentrales Ausschalten.

bClMinVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Minimalwert zu schalten.

bClMaxVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Maximalwert zu schalten.

bSetValDct/lrSetValDct: Der Lichtaktor-Baustein bekommt den Befehl auf den Wert lrSetValDct zu schalten. Hinweis: Dieser Wert wird am Lichtaktor noch mit dem Wert lrLgtOffset beaufschlagt.

lrActlLgtLvl: Dieser Eingang dient zur Umschalt- (Toggle-) Beurteilung. Bei einer Gruppe von Lampen empfiehlt es sich entweder den Mittelwert aller Aktoren oder den Lichtwert des Gruppenmasters anzulegen.

VAR_OUTPUT

stLgtCmd       : ST_BA_LgtCmd;

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd.

Parameter

PLT_NUM      : UDINT      := 1;
udiDampConst : UDINT      := 2;
lrKp         : LREAL      := 0.01;
udiTn        : UDINT      := 2000;
lrNz         : LREAL      := 100;
udiSwiOvrTi  : UDINT      := 500;
eOnMod       : E_BA_OnMod := eBA_ClMaxVal;
lrOnVal      : LREAL      := 100.0;

PLT_NUM: Anlagennummer.

udiDampConst: Dämpfungszeitkonstante [s] des PT1-Eingangsfilters des Helligkeitssensors.

lrKp: Verstärkungsfaktor des internen PI-Reglers.

udiTn: Nachstellzeit (Integrationszeit) des internen PI-Reglers [ms].

lrNz: Neutrale Zone: Ist der Absolutwert der Regelabweichung kleiner als lrNz/2, so stoppt der Regler intern seine Stellgrößenberechnung. Er bleibt jedoch weiterhin aktiv.

udiSwiOvrTi: Umschaltzeit [ms] zwischen Tastendruckerkennung kurz und lang und damit zwischen Schalten und Dimmen.

lrMaxCtrlVal: Maximaler Lichtausgabewert [lrMinCtrlVal..100%]; Eine Änderung dieses Wertes wirkt unmittelbar.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dieser Effekt ist nur in Verbindung mit dem Befehl bSetCtrlValDct der Kommandostruktur stLgtCmd wirksam. In diesem Fall wird der Lichtaktor auf den Wert lrSetCtrlValDct+lrLgtOffset gesetzt. Der Wert kann den eingestellten Maximalwert dabei nicht überschreiten bzw. den Minimalwert unterschreiten. Ein Abschalten ist jedoch möglich, wenn lrSetCtrlValDct+lrLgtOffset kleiner oder gleich Null ist.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird.

udiBlinkTi / udiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet, kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit udiBlinkTi [ms] wird das Licht ausgeschaltet und danach für die Zeit udiOffDly [ms] noch einmal eingeschaltet.

BACnet-Objekte

LgtCtrlVal      : FB_BACnetAV1201;
LgtCtrlVal_TLog : FB_BACnetTLog1201;
CtrlActv        : FB_BACnetBV1201;

LgtCtrlVal: Aktueller Lichtwert [0..100%].

LgtCtrlVal_TLog: Trendlog aktueller Lichtwert.

CtrlActv: Regelung aktiv.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
FltrPT1 | FB_BA_FltrPT1 | Eingangsfilter für den Lichtsensor

Netzwerk 0002

Instanz | Typ | Aufgabe
CnstLgtCtrl | FB_BA_CnstLgtCtrl | Konstantlichtregelung

Netzwerk 0003

Instanz | Typ | Aufgabe
LgtCtrlVal | FB_BACnetAV1201 | Anzeigeobjekt aktueller Lichtwert

Netzwerk 0004

Instanz | Typ | Aufgabe
LgtCtrlVal_TLog | FB_BACnetTLog1201 | Trendlogobjekt aktueller Lichtwert

Netzwerk 0005

Instanz | Typ | Aufgabe
CtrlActv | FB_BACnetBV1201 | Anzeigeobjekt Konstantlichtregelung aktiv

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_DALILgtActr_01

Template zum Ansteuern eines DALI-Lichtaktors.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_BA_DALILgtActr. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Das Template empfängt seine Kommandos über das Befehlstelegramm stLgtCmd und gibt den aktuellen Lichtzustand als LREAL-Wert [0..100%], DALI-Byte-Wert [0..254] und Booleschen Wert (EIN/AUS) aus, der bei bestimmten Lampenarten das Schalten eines AUS-Relais ermöglicht.
In dieser BACnet-Version wird der aktuelle Lichtwert zusätzlich über ein BACnet-Analog-Value-Objekt abgebildet und die Werte mit einem Trendlog-Objekt aufgezeichnet.

Schnittstelle

VAR_INPUT

bReinit    : BOOL;
stLgtCmd   : ST_BA_LgtCmd;

bReInit: Flankengesteuerter Eingang: startet die Initialisierung des Bausteines FB_BA_DALILgtActr erneut.

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd.

VAR_OUTPUT

lrActlLgtLvl     : LREAL;
byActlLgtLvl     : BYTE;
bLgt             : BOOL;
byDALIDevSta     : BYTE;

lrActlLgtLvl: Aktueller Lichtausgabewert [0..100%].

byActlLgtLvl: Aktueller Lichtausgabewert [0..254].

bLgt: Licht ist ein- oder ausgeschaltet.

byDALIDevSta: Statusbyte des DALI-Vorschaltgerätes. Wird zusammen mit der automatischen Abfrage des Lichtwertes im Hintergrund ausgelesen, siehe Parameter uiPollActLgtLvl.

Parameter

PLT_NUM         : UDINT        := 1;
DALI_LINE_NUM   : UINT         := 1;
byShrtAdr       : BYTE;
byGrpAdr        : BYTE;
eMod            : E_BA_DALIMod := eBA_DALIModGrpMst;
lrSttUpCtrlVal  : LREAL        := 100;
lrMinCtrlVal    : LREAL        := 0;
lrMaxCtrlVal    : LREAL        := 100;
lrLgtOffset     : LREAL        := 0;
uiDimTi         : UINT         := 7;
uiBlinkTi       : UINT;
uiOffDly        : UINT;
uiPollActLgtLvl : UINT;

PLT_NUM: Anlagennummer.

DALI_LINE_NUM: DALI-Liniennummer.

byShrtAdr: Kurzadresse des anzusprechenden DALI-Vorschaltgerätes. Diese Adresse muss im gültigen Bereich (0..63) liegen, da der Baustein ein vorhandenes Vorschaltgerät braucht um die Status abzufragen. Bei einer ungültigen Adresse wird der Baustein nicht ausgeführt und ein entsprechender Fehlercode ausgegeben. Die Kurzadresse bezieht sich auf die DALI-Befehle, welche sich durch die Eingänge an diesem Baustein ergeben:

  • lrSttupCtrlVal (Lichtwert nach Neustart)
  • lrMinCtrlVal (Setzen des minimalen Lichtausgabewerts)
  • lrMaxCtrlVal (Setzen des maximalen Lichtausgabewerts)
  • uiDimTi (Definieren der Dimmrampe -> Änderung FadeRate)

byGrpAdr: Gruppenadresse. Wird nur berücksichtigt, wenn das Vorschaltgerät durch diesen Baustein als Master betrieben wird: eMod=eBA_DALIModGrpMst oder eMod=eBA_DALIModGrpSgl.

eMod: Auswahl über das Einzel-/Gruppen bzw. Master-/Slaveverhalten des Bausteins, siehe E_BA_DALIMod.

lrSttupCtrlVal: Lichtwert nach Neustart.

lrMinCtrlVal: Minimaler Lichtausgabewert [0..100%]. Eine Änderung am Bausteineingang bewirkt eine Umparametrierung (Kurzadresse) im Vorschaltgerät. Dort wird es nach unten hin auf den physikalischen Minimalwert und nach oben hin auf den Maximalwert begrenzt.

lrMaxCtrlVal: Maximaler Lichtausgabewert [0..100%]. Eine Änderung am Bausteineingang bewirkt eine Umparametrierung (Kurzadresse) im Vorschaltgerät. Dort wird es nach unten hin auf den physikalischen Minimalwert begrenzt.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dies kann in einer Lampen-Gruppenschaltung bei den Leuchten sinnvoll sein, die sich in der Nähe von Tageslicht befinden und weniger hell sein müssen, als die Lampen, welche die dunklen Bereiche des Raumes ausleuchten. Der Lichtwert kann durch diesen Parameter jedoch nicht über lrMaxCtrlVal oder unter lrMinCtrlVal gesteuert werden.
Dieser Offset wirkt sich nur auf Befehle aus, welche über die Kommandostruktur stLgtCmd als bSetCtrlValDct an den Baustein gelangen.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird. Diese wird bausteinintern auf eine DALI-FadeRate umgerechnet und im Vorschaltgerät abgespeichert.

uiBlinkTi / uiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit uiBlinkTi [s] wird das Licht ausgeschaltet und danach für die Zeit uiOffDly [s] noch einmal eingeschaltet.

uiPollActLgtLvl: Zykluszeit [s], mit der im Hintergrund der aktuelle Istwert (ACTUAL DIM LEVEL) ausgelesen wird. Damit das Dimmen der Lampen nicht gestört wird, wird das Auslesen immer in der niedrigsten Priorität durchgeführt. Wird der Wert auf 0 gesetzt, so wird das Auslesen gesperrt. Zusätzlich zum aktuellen Lichtwert wird auch das Statusbyte des Vorschaltgerätes ausgelesen und an den Ausgang byDALIDevSta geschrieben.

BACnet-Objekte

ActrLgt         : FB_BACnetBV1201;
LgtCtrlVal      : FB_BACnetAV1201;
LgtCtrlVal_TLog : FB_BACnetTLog1201;
ActrErr         : FB_BACnetBV1201;
DALIDevSta      : FB_BACnetAV1201;

ActrLgt: Anzeigeobjekt Licht Ein.

LgtCtrlVal: Aktueller Lichtwert [0..100%].

LgtCtrlVal_TLog: Trendlog aktueller Lichtwert.

ActrErr: Lichtaktor im Fehlerzustand.

DALIDevSta: Anzeigeobjekt DALI-Statusbyte.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
DALILgtActr | FB_BA_DALILgtActr | DALI-Lichtaktorbaustein

Netzwerk 0002

Instanz | Typ | Aufgabe
ActrLgt | FB_BACnetBV1201 | Anzeigeobjekt Licht Ein

Netzwerk 0003

Instanz | Typ | Aufgabe
LgtCtrlVal | FB_BACnetAV1201 | Anzeigeobjekt aktueller Lichtwert

Netzwerk 0004

Instanz | Typ | Aufgabe
LgtCtrlVal_TLog | FB_BACnetTLog1201 | Trendlogobjekt aktueller Lichtwert

Netzwerk 0005

Instanz | Typ | Aufgabe
ActrErr | FB_BACnetBV1201 | Anzeigeobjekt Lichtaktor im Fehlerzustand

Netzwerk 0006

Instanz | Typ | Aufgabe
DALIDevSta | FB_BACnetAV1201 | Anzeigeobjekt Statusbyte

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_DALIMSensor02_01

Template zum Auslesen eines DALI-Sensors vom Typ "MSensor02" der Firma Tridonic.

Funktionsbeschreibung

Mit Hilfe dieses Templates können die Informationen eines "MSensor02" ausgelesen werden. Diese werden an den Ausgängen sowie in BACnet-Objekten dargestellt.

Schnittstelle

VAR_OUTPUT

bPrc       : BOOL;
bDlyPrc    : BOOL;
lrBrtns    : LREAL;
byRawValue : BYTE;

bPrc: Präsenzerkennung.

bDlyPrc: Präsenzerkennung ausschaltverzögert.

lrBrtns: Helligkeit [lx].

byRawValue: DALI-Helligkeits-Rohwert.

Parameter

PLT_NUM         : UDINT  := 1;
DALI_LINE_NUM   : UINT   := 1;
byShrtAdr       : BYTE;
udiPollTiOcp    : UDINT  :=20;
udiPollTiAbc    : UDINT  :=2;
udiPrcDly       : UDINT  :=900;

PLT_NUM: Anlagennummer.

DALI_LINE_NUM: DALI-Liniennummer.

byShrtAdr: Kurzadresse des Sensors.

udiPollTiOcp: Abfrageintervall bei Belegung erkannt [s].

udiPollTiAbc: Abfrageintervall bei Nicht-Belegung [s].

udiPrcDly: Präsenzerkennung Ausschaltverzögerung [s].

BACnet-Objekte

ActlBrtns       : FB_BACnetAV1201;
PrcDetc         : FB_BACnetBV1201;
DlyPrcDetc      : FB_BACnetBV1201;

ActlBrtns: Anzeigeobjekt aktueller Lichtwert.

PrcDetc: Anzeigeobjekt Präsenzmeldung.

DlyPrcDetc: Anzeigeobjekt Präsenzmeldung ausschalt-verzögert.

Diagramm

Programmbeschreibung

Netzwerk 0001-0003

Instanz | Typ | Aufgabe
 | UDINT_TO_TIME | Umrechnung der Zeitparameter

Netzwerk 0004

Instanz | Typ | Aufgabe
DALISmartSpot | FB_DALIV2SmartSPOT | Baustein zur Sensorauswertung

Netzwerk 0005

Instanz | Typ | Aufgabe
 | INT_TO_LREAL | Ausgabe Helligkeit als LREAL

Netzwerk 0006

Instanz | Typ | Aufgabe
ActlBrtns | FB_BACnetAV1201 | Anzeigeobjekt aktuelle Helligkeit

Netzwerk 0007

Instanz | Typ | Aufgabe
PrcDetc | FB_BACnetBV1201 | Anzeigeobjekt Präsenzmeldung

Netzwerk 0008

Instanz | Typ | Aufgabe
DlyPrcDetc | FB_BACnetBV1201 | Anzeigeobjekt ausschaltverzögerte Präsenzmeldung

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcDALIV2-Bibliothek | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_DALI_EM_DT_01

Dauertest (Duration-Test) von DALI-Notbeleuchtungsgeräten.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_DALIV2EmergencyLightingDT. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Mit Hilfe dieses Templates kann an einem bestimmten DALI-Notbeleuchtungsgerät ein Dauertest gestartet werden. Das Ergebnis dieses Dauertests wird dann in eine Log-Datei geschrieben. Diese wird durch das Template RC_DALI_EM_LogFile_01 generiert und beschrieben. Der Datenaustausch bzw. das Schreiben der Ergebnisse in die Log-Datei erfolgt über einen globalen Ringpuffer. Durch das einmalige Anlegen des Shared-Templates RC_DALI_01, welches zur Nutzung der DALI-Templates zwingend erforderlich ist, wird dieser Puffer global mit angelegt.

Schnittstelle

VAR_INPUT

bSttTest   : BOOL;
bStpTest   : BOOL;
stSysTi    : TIMESTRUCT;

bSttTest: Über eine positive Flanke an diesem Eingang wird der Test gestartet.

bStpTest: Ist ein Dauertest erfolgreich gestartet worden, so wird intern der Emergency-Mode und der Emergency-Status zyklisch abgefragt, um zu beurteilen, wann der Test beendet ist und ob Fehler während des Tests auftreten. Eine positive Flanke am bStop-Eingang bricht den Dauertest in genau dieser Phase ab und gibt eine entsprechende Meldung in der Log-Datei. Das ist dann sinnvoll, wenn lediglich beurteilt werden soll, ob die Notbeleuchtung eine bestimmte Zeit lang (bis zum Zeitpunkt des Stoppens) läuft.

stSysTi: Eingang für das aktuelle Datum und die aktuelle Zeit. Das dient dazu, dem späteren Log-Eintrag einen Zeitstempel zu geben.

VAR_OUTPUT

udiElapTestTi    : UDINT;
byEmgMod         : BYTE;
byEmgSta         : BYTE;
bBusy            : BOOL;
bErr             : BOOL;
udiDALI_EM_ErrId : UDINT;

udiElapTestTi: Verstrichene Testzeit [s].

byEmgMod: Während des Tests wird an diesem Ausgang der derzeit intern abgefragte Emergency-Mode des DALI-Gerätes ausgegeben.

byEmgSta: dto. für Emergency-Status.

bBusy: Bei der Aktivierung des Tests wird der Ausgang gesetzt und bleibt so lange aktiv bis der Test abgeschlossen ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung des Tests ein Fehler aufgetreten ist. Durch das erneute Ausführen eines Tests wird dieser Ausgang zurückgesetzt.

udiDALI_EM_ErrId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls, siehe TcPlcLibDALIV2_Errorcodes. Wird durch das Ausführen eines neuen Tests auf 0 zurückgesetzt.

Parameter

PLT_NUM         : UDINT   := 1;
DALI_LINE_NUM   : UINT    := 1;
DALI_EM_LOGFILE : UINT    := 1;
byShrtAdr       : BYTE    := 1;
sController     : STRING;
sLineName       : STRING;
sDescription    : STRING;
sLocation       : STRING;
uiTiOut         : UINT    := 120;

PLT_NUM: Anlagennummer.

DALI_LINE_NUM: DALI-Liniennummer.

DALI_EM_LOGFILE: Referenz-Index auf das zu beschreibende Log-File, siehe auch RC_DALI_EM_LogFile_01.

sController: Controller-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sLineName: Linien-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sDescription: Weitere ergänzende Beschreibung des Gerätes in der Log-Datei.

sLocation: Beschreibung des Einbauortes.

stDateTime: Eingang für das aktuelle Datum und die aktuelle Zeit.

uiTiOut: Zeit [min], in der der Test abgeschlossen sein muss.

BACnet-Objekte

DALIEmgMod        : FB_BACnetAV1201;
DALIEmgSta        : FB_BACnetAV1201;
DALIEmgLgtDTBusy  : FB_BACnetBV1201;
DALIEmgLgtDTErr   : FB_BACnetBV1201;

DALIEmgMod: Anzeigeobjekt Modusbyte.

DALIEmgSta: Anzeigeobjekt Statusbyte.

DALIEmgLgtDTBusy: Anzeigeobjekt Test läuft.

DALIEmgLgtDTErr: Anzeigeobjekt Test fehlerhaft.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
DALIEmgLgtDT | FB_DALIV2EmergencyLightingDT | Baustein DALI-Dauertest (Duration-Test)

Netzwerk 0002

Instanz | Typ | Aufgabe
DALIEmgMod | FB_BACnetAV1201 | Anzeigeobjekt Modusbyte

Netzwerk 0003

Instanz | Typ | Aufgabe
DALIEmgSta | FB_BACnetAV1201 | Anzeigeobjekt Statusbyte

Netzwerk 0004

Instanz | Typ | Aufgabe
DALIEmgLgtDTBusy | FB_BACnetBV1201 | Anzeigeobjekt Test läuft

Netzwerk 0005

Instanz | Typ | Aufgabe
DALIEmgLgtDTErr | FB_BACnetBV1201 | Anzeigeobjekt Test fehlerhaft

Netzwerk 0006-0011

Instanz | Typ | Aufgabe
 |  | Ausgangszuweisungen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | n/a | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_DALI_EM_FT_01

Funktionstest (Function-Test) von DALI-Notbeleuchtungsgeräten.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_DALIV2EmergencyLightingFT. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Mit Hilfe dieses Templates kann an einem bestimmten DALI-Notbeleuchtungsgerät ein Funktionstest gestartet werden. Das Ergebnis dieses Funktionstest wird dann in eine Log-Datei geschrieben. Diese wird durch das Template RC_DALI_EM_LogFile_01 generiert und beschrieben. Der Datenaustausch bzw. das Schreiben der Ergebnisse in die Log-Datei erfolgt über einen globalen Ringpuffer. Durch das einmalige Anlegen des Shared-Templates RC_DALI_01, welches zur Nutzung der DALI-Templates zwingend erforderlich ist, wird dieser Puffer global mit angelegt.

Schnittstelle

VAR_INPUT

bSttTest   : BOOL;
stSysTi    : TIMESTRUCT;

bSttTest: Über eine positive Flanke an diesem Eingang wird der Test gestartet.

stSysTi: Eingang für das aktuelle Datum und die aktuelle Zeit. Dieses dient dazu, dem späteren Log-Eintrag einen Zeitstempel zu geben.

VAR_OUTPUT

udiElapTestTi    : UDINT;
byEmgMod         : BYTE;
byEmgSta         : BYTE;
bBusy            : BOOL;
bErr             : BOOL;
udiDALI_EM_ErrId : UDINT;

udiElapTestTi: Verstrichene Testzeit [s].

byEmgMod: Während des Tests wird an diesem Ausgang der derzeit intern abgefragte Emergency-Mode des DALI-Gerätes ausgegeben.

byEmgSta: dto. für Emergency-Status.

bBusy: Bei der Aktivierung des Tests wird der Ausgang gesetzt und bleibt so lange aktiv bis der Test abgeschlossen ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung des Tests ein Fehler aufgetreten ist. Durch das erneute Ausführen eines Tests wird dieser Ausgang zurückgesetzt.

udiDALI_EM_ErrId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls, siehe TcPlcLibDALIV2_Errorcodes. Wird durch das Ausführen eines neuen Tests auf 0 zurückgesetzt.

Parameter

PLT_NUM         : UDINT   := 1;
DALI_LINE_NUM   : UINT    := 1;
DALI_EM_LOGFILE : UINT    := 1;
byShrtAdr       : BYTE    := 1;
sController     : STRING;
sLineName       : STRING;
sDescription    : STRING;
sLocation       : STRING;
uiTiOut         : UINT    := 120;

PLT_NUM: Anlagennummer.

DALI_LINE_NUM: DALI-Liniennummer.

DALI_EM_LOGFILE: Referenz-Index auf das zu beschreibende Log-File, siehe auch RC_DALI_EM_LogFile_01.

sController: Controller-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sLineName: Linien-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sDescription: Weitere ergänzende Beschreibung des Gerätes in der Log-Datei.

sLocation: Beschreibung des Einbauortes.

stDateTime: Eingang für das aktuelle Datum und die aktuelle Zeit.

uiTiOut: Zeit [s], in der der Test abgeschlossen sein muss.

BACnet-Objekte

DALIEmgMod        : FB_BACnetAV1201;
DALIEmgSta        : FB_BACnetAV1201;
DALIEmgLgtFTBusy  : FB_BACnetBV1201;
DALIEmgLgtFTErr   : FB_BACnetBV1201;

DALIEmgMod: Anzeigeobjekt Modusbyte.

DALIEmgSta: Anzeigeobjekt Statusbyte.

DALIEmgLgtFTBusy: Anzeigeobjekt Test läuft.

DALIEmgLgtFTErr: Anzeigeobjekt Test fehlerhaft.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
DALIEmgLgtFT | FB_DALIV2EmergencyLightingFT | Baustein DALI-Funktionsest (Function-Test)

Netzwerk 0002

Instanz | Typ | Aufgabe
DALIEmgMod | FB_BACnetAV1201 | Anzeigeobjekt Modusbyte

Netzwerk 0003

Instanz | Typ | Aufgabe
DALIEmgSta | FB_BACnetAV1201 | Anzeigeobjekt Statusbyte

Netzwerk 0004

Instanz | Typ | Aufgabe
DALIEmgLgtFTBusy | FB_BACnetBV1201 | Anzeigeobjekt Test läuft

Netzwerk 0005

Instanz | Typ | Aufgabe
DALIEmgLgtFTErr | FB_BACnetBV1201 | Anzeigeobjekt Test fehlerhaft

Netzwerk 0006-0011

Instanz | Typ | Aufgabe
 |  | Ausgangszuweisungen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | n/a | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_AnlgLgtActr_01

Template zur Ansteuerung eines analogen Lichtaktors.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_BA_AnlgLgtActr. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Das Template empfängt seine Kommandos über das Befehlstelegramm stLgtCmd und gibt den aktuellen Lichtzustand als LREAL-Wert [0..100%], INT-Wert [0..32767] und Booleschen Wert (EIN/AUS) aus, der bei bestimmten Lampenarten das Schalten eines AUS-Relais ermöglicht.
In dieser BACnet-Version wird der aktuelle Lichtwert zusätzlich über ein BACnet-Analog-Value-Objekt abgebildet und die Werte mit einem Trendlog-Objekt aufgezeichnet.

Schnittstelle

VAR_INPUT

stLgtCmd   : ST_BA_LgtCmd;

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd..

VAR_OUTPUT

lrActlLgtLvl    : LREAL;
iActlLgtLvl     : INT;
bLgt            : BOOL;

lrActlLgtLvl: Aktuelle Stellgröße [0..100%]. Berechnung siehe unten.

iActlLgtLvl: Aktuelle Stellgröße [0..32767].

bLgt: Aktuelle Stellgröße (EIN / AUS).

Parameter

lrSttupCtrlVal : LREAL := 100;
lrMinCtrlVal   : LREAL := 0;
lrMaxCtrlVal   : LREAL := 100;
lrLgtOffset    : LREAL := 0;
udiDimTi       : UDINT := 7;
udiBlinkTi     : UDINT := 0;
udiOffDly      : UDINT := 0;

lrSttupCtrlVal: Lichtwert nach Neustart [lrMinCtrlVal..lrMaxCtrlVal]. Dieser Wert wird nur im ersten Aufruf-Zyklus übernommen.

lrMinCtrlVal: Minimaler Lichtausgabewert [1..lrMaxCtrlVal]. Eine Änderung dieses Wertes wirkt unmittelbar.

lrMaxCtrlVal: Maximaler Lichtausgabewert [lrMinCtrlVal..100%]. Eine Änderung dieses Wertes wirkt unmittelbar.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dieser Effekt ist nur in Verbindung mit dem Befehl bSetCtrlValDct innerhalb der der Kommandostruktur stLgtCmd wirksam. In diesem Fall wird der Lichtaktor auf den Wert lrSetCtrlValDct+lrLgtOffset gesetzt. Der Wert kann den eingestellten Maximalwert dabei nicht überschreiten bzw. den Minimalwert unterschreiten. Ein Abschalten ist jedoch möglich, wenn lrSetCtrlValDct+lrLgtOffset kleiner oder gleich Null ist.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird.

udiBlinkTi / udiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung, erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet, kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit udiBlinkTi [ms] wird das Licht ausgeschaltet und danach für die Zeit udiOffDly [ms] noch einmal eingeschaltet.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
AnlgLgtActr | FB_BA_AnlgLgtActr | Analog-Lichtaktor

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_DALI_01

Template für die generelle Nutzung von DALI.

Funktionsbeschreibung

Dieses Shared-Template besitzt keinerlei SPS-Code an sich, sondern legt im globalen Variablen-Bereich die für die DALI-Kommunikation und -Funktionalität wichtigen Variablen an.

Schnittstelle

VAR_GLOBAL

arrDALICmdBuf         : ARRAY[1..MAX_DALI_LINES] OF ST_DALIV2CommandBuffer;
arrDALIInData AT %I*  : ARRAY[1..MAX_DALI_LINES] OF ST_DALIV2InData;
arrDALIOutData AT %Q* : ARRAY[1..MAX_DALI_LINES] OF ST_DALIV2OutData;
arrStringRingbuffer   : ARRAY[1..MAX_DALI_EM_LOGFILES] OF FB_MemRingbuffer;

arrDALICmdBuf: Referenz-Strukturen zur Kommunikation mit den Instanzen des Bausteines FB_DALIV2Communication. Dieser Baustein gehört zur Bibliothek TcDALIV2, welche bei der Einfügung dieses Templates mit eingelesen wird. Ein Strukturelement arrDALICmdBuf stellt mit der dazugehörigen Instanz eines Bausteins FB_DALIV2Communication die Kommunikation mit einer DALI-Linie dar. Pro DALI-Linie muss ein Template des Typs RC_DALI_Com_01 angelegt werden.

arrDALIInData: Feld von Eingangsvariablen, welche im Systemmanager mit den Eingangsvariablen der entsprechenden DALI-Klemme verbunden werden müssen.

arrDALIOutData: Feld von Ausgangsvariablen, welche im Systemmanager mit den Ausgangsvariablen der entsprechenden DALI-Klemme verbunden werden müssen.

arrStringRingbuffer: Feld von Ringpuffern, welche die Kommunikation von jeweils mehreren DALI-Notbeleuchtungstests zur entsprechenden Logdatei herstellen, siehe Template RC_DALI_01_EM_LogFile.

VAR_GLOBAL_CONSTANT

MAX_DALI_LINES       : UINT := 10;
MAX_DALI_EM_LOGFILES : UINT := 20;

MAX_DALI_LINES: Maximale Anzahl an DALI-Linien. Damit wird die Elementanzahl der o.a. Feldvariablen arrDALICmdBuf, arrDALIInData und arrDALIOutData begrenzt.

MAX_DALI_EM_LOGFILES: Maximale Anzahl Log-files bei Verwendung von DALI-Notbeleuchtungs-Tests. Damit wird die Elementanzahl der o.a. Feldvariablen arrStringRingbuffer begrenzt.

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_DALILgtActr_01

Template zum Ansteuern eines DALI-Lichtaktors.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_BA_DALILgtActr. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Das Template empfängt seine Kommandos über das Befehlstelegramm stLgtCmd und gibt den aktuellen Lichtzustand als LREAL-Wert [0..100%], DALI-Byte-Wert [0..254] und Booleschen Wert (EIN/AUS) aus, der bei bestimmten Lampenarten das Schalten eines AUS-Relais ermöglicht.
In dieser BACnet-Version wird der aktuelle Lichtwert zusätzlich über ein BACnet-Analog-Value-Objekt abgebildet und die Werte mit einem Trendlog-Objekt aufgezeichnet.

Schnittstelle

VAR_INPUT

bReinit    : BOOL;
stLgtCmd   : ST_BA_LgtCmd;

bReInit: Flankengesteuerter Eingang: startet die Initialisierung des Bausteines FB_BA_DALILgtActr erneut.

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd..

VAR_OUTPUT

lrActlLgtLvl     : LREAL;
byActlLgtLvl     : BYTE;
bLgt             : BOOL;
byDALIDevSta     : BYTE;

lrActlLgtLvl: Aktueller Lichtausgabewert [0..100%].

byActlLgtLvl: Aktueller Lichtausgabewert [0..254].

bLgt: Licht ist ein- oder ausgeschaltet.

byDALIDevSta: Statusbyte des DALI-Vorschaltgerätes. Wird zusammen mit der automatischen Abfrage des Lichtwertes im Hintergrund ausgelesen, siehe Parameter uiPollActLgtLvl.

Parameter

DALI_LINE_NUM   : UINT         := 1;
byShrtAdr       : BYTE;
byGrpAdr        : BYTE;
eMod            : E_BA_DALIMod := eBA_DALIModGrpMst;
lrSttUpCtrlVal  : LREAL        := 100;
lrMinCtrlVal    : LREAL        := 0;
lrMaxCtrlVal    : LREAL        := 100;
lrLgtOffset     : LREAL        := 0;
uiDimTi         : UINT         := 7;
uiBlinkTi       : UINT;
uiOffDly        : UINT;
uiPollActLgtLvl : UINT;

DALI_LINE_NUM: DALI-Liniennummer.

byShrtAdr: Kurzadresse des anzusprechenden DALI-Vorschaltgerätes. Diese Adresse muss im gültigen Bereich von 0..63 liegen, da der Baustein ein vorhandenes Vorschaltgerät braucht um die Status abzufragen. Bei einer ungültigen Adresse wird der Baustein nicht ausgeführt und ein entsprechender Fehlercode ausgegeben. Die Kurzadresse bezieht sich auf die DALI-Befehle, welche sich durch die Eingänge an diesem Baustein ergeben:

  • lrSttupCtrlVal (Lichtwert nach Neustart)
  • lrMinCtrlVal (Setzen des minimalen Lichtausgabewerts)
  • lrMaxCtrlVal (Setzen des maximalen Lichtausgabewerts)
  • uiDimTi (Definieren der Dimmrampe -> Änderung FadeRate)

byGrpAdr: Gruppenadresse. Wird nur berücksichtigt, wenn das Vorschaltgerät durch diesen Baustein als Master betrieben wird: eMod=eBA_DALIModGrpMst oder eMod=eBA_DALIModGrpSgl.

eMod: Auswahl über das Einzel-/Gruppen bzw. Master-/Slaveverhalten des Bausteins, siehe E_BA_DALIMod.

lrSttupCtrlVal: Lichtwert nach Neustart.

lrMinCtrlVal: Minimaler Lichtausgabewert [0..100%]. Eine Änderung am Bausteineingang bewirkt eine Umparametrierung (Kurzadresse) im Vorschaltgerät. Dort wird es nach unten hin auf den physikalischen Minimalwert und nach oben hin auf den Maximalwert begrenzt.

lrMaxCtrlVal: Maximaler Lichtausgabewert [0..100%]. Eine Änderung am Bausteineingang bewirkt eine Umparametrierung (Kurzadresse) im Vorschaltgerät. Dort wird es nach unten hin auf den physikalischen Minimalwert begrenzt.

lrLgtOffset: Möglichkeit den Helligkeitswert zu erhöhen oder zu erniedrigen. Dies kann in einer Lampen-Gruppenschaltung bei den Leuchten sinnvoll sein, die sich in der Nähe von Tageslicht befinden und weniger hell sein müssen, als die Lampen, welche die dunklen Bereiche des Raumes ausleuchten. Der Lichtwert kann durch diesen Parameter jedoch nicht über lrMaxCtrlVal oder unter lrMinCtrlVal gesteuert werden.
Dieser Offset wirkt sich nur auf Befehle aus, welche über die Kommandostruktur stLgtCmd als bSetCtrlValDct an den Baustein gelangen.

udiDimTi: Dimmrampe [s]: Zeit in der von 0 auf 100% gedimmt wird. Wird bausteinintern auf eine DALI-FadeRate umgerechnet und im Vorschaltgerät abgespeichert.

uiBlinkTi / uiOffDly: Mit diesen beiden Zeiten [ms] lässt sich eine Ausschaltwarnung, beispielsweise für eine Treppenhausbeleuchtung erzielen. Zu dem Zeitpunkt, an dem die Leuchte normalerweise abschaltet, kommen diese beiden Intervalle zusätzlich zum Tragen: für die Zeit uiBlinkTi [s] wird das Licht ausgeschaltet und danach für die Zeit uiOffDly [s] noch einmal eingeschaltet.

uiPollActLgtLvl: Zykluszeit [s], mit der im Hintergrund der aktuelle Istwert (ACTUAL DIM LEVEL) ausgelesen wird. Damit das Dimmen der Lampen nicht gestört wird, wird das Auslesen immer in der niedrigsten Priorität durchgeführt. Wird der Wert auf 0 gesetzt, so wird das Auslesen gesperrt. Zusätzlich zum aktuellen Lichtwert wird auch das Statusbyte des Vorschaltgerätes ausgelesen und an den Ausgang byDALIDevSta geschrieben.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
DALILgtActr | FB_BA_DALILgtActr | DALI-Lichtaktorbaustein

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_DALI_Com_01

Template zur Kommunikation einer DALI-Linie in der SPS mit einer DALI-Klemme im Systemmanager.

Kernstück dieses Templates ist der Baustein FB_DALIV2Communication. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Funktionsbeschreibung

Zur Nutzung von DALI an sich ist die Implementation des Shared-Templates RC_DALI_01 zwingend notwendig. Es stellt unter anderem die die notwendigen Kommunikationsvariablen zur Verfügung. Diese Kommunikationsvariablen werden als Feldvariablen für eine bestimmte Anzahl an möglichen DALI-Linien deklariert. Ein Satz von diesen Kommunikationsvariablen besteht immer aus dem DALI-Eingangsabbild aus dem Systemmanager, dem Ausgangsabbild und einer Pufferstruktur. Das Template RC_DALI_Com_01, welches die Kommunikation für eine DALI-Linie herstellt, greift nun die Informationen für den der Linie entsprechenden Variablensatz ab. Dies geschieht durch die entsprechende Wertzuweisung am Parameter DALI_LINE_NUM.

Schnittstelle

VAR_INPUT

bRstMaxDmdCnt : BOOL;
bRstOvrflCnt  : BOOL;

bRstMaxDmdCnt: Eine positive Flanke setzt den gespeicherten Wert der maximalen Befehlspuffer-Auslastung, arrBufferMaximumDemandMeter (0 - 100%, siehe VAR_OUTPUT), zurück.

bRstOvrflCnt: Eine positive Flanke setzt den gespeicherten Wert der Anzahl der Befehlspuffer-Überläufe, arrBufferOverflowCounter (siehe VAR_OUTPUT), zurück.

VAR_OUTPUT

arrBufDmdMeas    : ARRAY [0..2] OF BYTE;
arrBufMaxDmdMeas : ARRAY [0..2] OF BYTE;
arrBufOvrflCnt   : ARRAY [0..2] OF UINT;
bLineBusy        : BOOL;
bLineInitRdy     : BOOL;

arrBufDmdMeas: Belegung des jeweiligen Puffers (0 - 100%).

arrBufMaxDmdMeas: Bisherige maximale Auslastung des jeweiligen Puffers (0 - 100%).

arrBufOvrflCnt: Bisherige Anzahl der Pufferüberläufe.

bLineBusy: Solange der Baustein FB_DALIV2Communication() aktiv ist, ist dieser Ausgang gesetzt.

bLineInitRdy: Wird der Baustein das erste Mal aufgerufen (z.B. beim Starten der Steuerung), so wird eine Initialisierung durchgeführt. Während dieser Zeit können keine DALI-Befehle bearbeitet werden.

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_DALI_EM_DT_01

Dauertest (Duration-Test) von DALI-Notbeleuchtungsgeräten.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_DALIV2EmergencyLightingDT. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Mit Hilfe dieses Templates kann an einem bestimmten DALI-Notbeleuchtungsgerät ein Dauertest gestartet werden. Das Ergebnis dieses Dauertests wird dann in eine Log-Datei geschrieben. Diese wird durch das Template RC_DALI_EM_LogFile_01 generiert und beschrieben. Der Datenaustausch bzw. das Schreiben der Ergebnisse in die Log-Datei erfolgt über einen globalen Ringpuffer. Durch das einmalige Anlegen des Shared-Templates RC_DALI_01, welches zur Nutzung der DALI-Templates zwingend erforderlich ist, wird dieser Puffer global mit angelegt.

Schnittstelle

VAR_INPUT

bSttTest   : BOOL;
bStpTest   : BOOL;
stSysTi    : TIMESTRUCT;

bSttTest: Über eine positive Flanke an diesem Eingang wird der Test gestartet.

bStpTest: Ist ein Dauertest erfolgreich gestartet worden, so wird intern der Emergency-Mode und der Emergency-Status zyklisch abgefragt, um zu beurteilen, wann der Test beendet ist und ob Fehler während des Tests auftreten. Eine positive Flanke am bStop-Eingang bricht den Dauertest in genau dieser Phase ab und gibt eine entsprechende Meldung in der Log-Datei. Dies ist dann sinnvoll, wenn lediglich beurteilt werden soll ob die Notbeleuchtung eine bestimmte Zeit lang (bis zum Zeitpunkt des Stoppens) läuft.

stSysTi: Eingang für das aktuelle Datum und aktuelle Zeit. Dieses dient dazu, dem späteren Log-Eintrag einen Zeitstempel zu geben.

VAR_OUTPUT

udiElapTestTi    : UDINT;
byEmgMod         : BYTE;
byEmgSta         : BYTE;
bBusy            : BOOL;
bErr             : BOOL;
udiDALI_EM_ErrId : UDINT;

udiElapTestTi: Verstrichene Testzeit [s].

byEmgMod: Während des Tests wird an diesem Ausgang der derzeit intern abgefragte Emergency-Mode des DALI-Gerätes ausgegeben.

byEmgSta: dto. für Emergency-Status.

bBusy: Bei der Aktivierung des Tests wird der Ausgang gesetzt und bleibt so lange aktiv bis der Test abgeschlossen ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung des Tests ein Fehler aufgetreten ist. Durch das erneute Ausführen eines Tests wird dieser Ausgang zurückgesetzt.

udiDALI_EM_ErrId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls, siehe TcPlcLibDALIV2_Errorcodes. Wird durch das Ausführen eines neuen Tests auf 0 zurückgesetzt.

Parameter

DALI_LINE_NUM   : UINT    := 1;
DALI_EM_LOGFILE : UINT    := 1;
byShrtAdr       : BYTE    := 1;
sController     : STRING;
sLineName       : STRING;
sDescription    : STRING;
sLocation       : STRING;
uiTiOut         : UINT    := 120;

DALI_LINE_NUM: DALI-Liniennummer.

DALI_EM_LOGFILE: Referenz-Index auf das zu beschreibende Log-File, siehe auch RC_DALI_EM_LogFile_01.

sController: Controller-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sLineName: Linien-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sDescription: Weitere ergänzende Beschreibung des Gerätes in der Log-Datei.

sLocation: Beschreibung des Einbauortes.

stDateTime: Eingang für das aktuelle Datum und die aktuelle Zeit.

uiTiOut: Zeit [min], in der der Test abgeschlossen sein muss.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
DALIEmgLgtDT | FB_DALIV2EmergencyLightingDT | Baustein DALI-Dauertest (Duration-Test)

Netzwerk 0002-0007

Instanz | Typ | Aufgabe
 |  | Ausgangszuweisungen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_DALI_EM_FT_01

Funktionstest (Function-Test) von DALI-Notbeleuchtungsgeräten.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_DALIV2EmergencyLightingFT. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Mit Hilfe dieses Templates kann an einem bestimmten DALI-Notbeleuchtungsgerät ein Funktionstest gestartet werden. Das Ergebnis dieses Funktionstest wird dann in eine Log-Datei geschrieben. Diese wird durch das Template RC_DALI_EM_LogFile_01 generiert und beschrieben. Der Datenaustausch bzw. das Schreiben der Ergebnisse in die Log-Datei erfolgt über einen globalen Ringpuffer. Durch das einmalige Anlegen des Shared-Templates RC_DALI_01, welches zur Nutzung der DALI-Templates zwingend erforderlich ist, wird dieser Puffer global mit angelegt.

Schnittstelle

VAR_INPUT

bSttTest   : BOOL;
stSysTi    : TIMESTRUCT;

bSttTest: Über eine positive Flanke an diesem Eingang wird der Test gestartet.

stSysTi: Eingang für das aktuelle Datum und die aktuelle Zeit. Dieses dient dazu, dem späteren Log-Eintrag einen Zeitstempel zu geben.

VAR_OUTPUT

udiElapTestTi    : UDINT;
byEmgMod         : BYTE;
byEmgSta         : BYTE;
bBusy            : BOOL;
bErr             : BOOL;
udiDALI_EM_ErrId : UDINT;

udiElapTestTi: Verstrichene Testzeit [s].

byEmgMod: Während des Tests wird an diesem Ausgang der derzeit intern abgefragte Emergency-Mode des DALI-Gerätes ausgegeben.

byEmgSta: dto. für Emergency-Status.

bBusy: Bei der Aktivierung des Tests wird der Ausgang gesetzt und bleibt so lange aktiv bis der Test abgeschlossen ist.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung des Tests ein Fehler aufgetreten ist. Durch das erneute Ausführen eines Tests wird dieser Ausgang zurückgesetzt.

udiDALI_EM_ErrId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls, siehe TcPlcLibDALIV2_Errorcodes. Wird durch das Ausführen eines neuen Tests auf 0 zurückgesetzt.

Parameter

DALI_LINE_NUM   : UINT    := 1;
DALI_EM_LOGFILE : UINT    := 1;
byShrtAdr       : BYTE    := 1;
sController     : STRING;
sLineName       : STRING;
sDescription    : STRING;
sLocation       : STRING;
uiTiOut         : UINT    := 120;

DALI_LINE_NUM: DALI-Liniennummer.

DALI_EM_LOGFILE: Referenz-Index auf das zu beschreibende Log-File, siehe auch RC_DALI_EM_LogFile_01.

sController: Controller-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sLineName: Linien-Zugehörigkeit des DALI-Gerätes. Dient zur Beschreibung in der Log-Datei.

sDescription: Weitere ergänzende Beschreibung des Gerätes in der Log-Datei.

sLocation: Beschreibung des Einbauortes.

stDateTime: Eingang für das aktuelle Datum und die aktuelle Zeit.

uiTiOut: Zeit [s], in der der Test abgeschlossen sein muss.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
DALIEmgLgtFT | FB_DALIV2EmergencyLightingFT | Baustein DALI-Funktionsest (Function-Test)

Netzwerk 0007-0007

Instanz | Typ | Aufgabe
 |  | Ausgangszuweisungen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_DALI_EM_LogFile_01

Abspeichern der Testergebnisse der Notbeleuchtungstests in einer Datei.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_DALIV2FileLogging. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Die DALI-Notbeleuchtungstest-Templates senden Ihre Ergebnisse immer in einen Ringpuffer. Damit wird gewährleistet, dass bei zeitlich nah beieinanderliegenden Testabschlüssen keine Ergebnisse verloren gehen.
Von diesen Ringpuffern sind die Verwendung des Shared-Templates RC_DALI_01 20 global als Array deklariert. Es ist damit auch möglich, dass verschiedene Tests in verschiedene Puffer schreiben, die Referenzierung erfolgt dabei über einen Parametereintrag bei den entsprechenden Test-Template. Test und Puffer liegen jedoch immer auf dem selben Controller.

Das Template RC_DALI_EM_LogFile_01 kann nun durch eine Index-Referenzierung (Parameterbereich) auf einen dieser Puffer die dort enthaltenen Datensätze auslesen und in eine Datei schreiben. Jeder ausgelesene Datensatz wird dabei aus dem Puffer gelöscht. Das Schreiben in die Datei erfolgt unter der Pfadangabe (Dateiname mit eingeschlossen) und der AMS-Net_id des Zielgerätes auf dem geschrieben werden soll.

Das Verzeichnis muss zwingend vorher angelegt werden, die Datei an sich wird automatisch generiert. Während des automatischen Schreibens in die Datei, darf diese nicht geöffnet sein.
Es ist darauf zu achten, dass eine Log-Datei immer nur von einem Template beschrieben wird, da eine Datei nicht von zwei Seiten gleichzeitig beschrieben werden kann. Dies würde unweigerlich zu Fehlern und Datenverlust führen.

Schnittstelle

VAR_OUTPUT

bBusy       : BOOL;
bErr        : BOOL;
udiADSErrId : BOOL;

bBusy: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis der Log-Puffer geleert ist.

bErr: Sollte ein ADS-Fehler bei der Übertragung in die Log-Datei erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

udiADSErrId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer oder den befehlsspezifischen Fehlercode (Tabelle).

Parameter

DALI_EM_LOGFILE : UINT    := 1;
sPathName       : STRING;
sNetId          : STRING;

DALI_EM_LOGFILE: Referenz-Index auf das zu beschreibende Log-File.

sNetId: Hier kann ein String mit der Netzwerkadresse des TwinCAT-Rechners angegeben werden, auf dem die Pufferdatei geschrieben/gelesen werden soll. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

sPathName: Enthält den Pfad- und Dateinamen der zu öffnenden Pufferdatei.

Programmbeschreibung

Netzwerk 0001/0002

Instanz | Typ | Aufgabe
 |  | Ringpuffer-Initialisierung - Zuweisung des Puffer-Arrays

Netzwerk 0003

Instanz | Typ | Aufgabe
fbDALIFileLogging | FB_DALIV2FileLogging | Logger-Baustein

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | n/a | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_LgtSwi_01

Lichtschalter-Template.

Funktionsbeschreibung

Kernstück dieses Templates ist der Baustein FB_BA_LgtSwi. Die Funktion dieses Bausteines wird in diesem Template identisch abgebildet.

Für das zentrale Einschalten an bOn sind verschiedene Modi (eOnMod - Parameterbereich) definiert und über diesen Enumerator-Eingang wählbar:

  • eBA_ClMaxVal: Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Maximalwert gestellt.
  • eBA_ClMinVal: Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Minimalwert gestellt.
  • eBA_ClOnVal: Das Licht wird unmittelbar auf den am Eingang lrOnVal anstehenden Wert gestellt.
  • eBA_ClRstVal: Das Licht wird unmittelbar auf den am Lichtaktor-Baustein gültigen Reset-Wert gestellt. Dies ist der Wert, der dort vor dem letzten Ausschalten gültig war.
    Anwendungsbeispiel: Wenn in einem Konferenzraum nach einer Präsentation das Licht wieder eingeschaltet wird.

Alle weiteren Befehle werden im Folgenden erläutert.

Der Baustein sendet seine Kommandos über das Befehlstelegramm stLgtCmd.

Schnittstelle

VAR_INPUT

bSwi         : BOOL;
bSwiUp       : BOOL;
bSwiDwn      : BOOL;
bUp          : BOOL;
bDwn         : BOOL;
bOn          : BOOL;
bOff         : BOOL;
bClMinVal    : BOOL;
bClMaxVal    : BOOL;
bSetValDct   : BOOL;
lrSetValDct  : LREAL;
lrActlLgtLvl : LREAL;

bSwi: Schaltereingang Ein/Aus, Auf-/Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand ein oder aus. Ein langer Tastendruck dimmt das Licht abwechselnd auf oder ab. Das Aufdimmen endet beim Erreichen des Maximalwertes, das Abdimmen beim Erreichen des Minimalwertes. Eine automatische Dimmrichtungsumkehr erfolgt nicht. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiUp: Schaltereingang Ein/Aus, Aufdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand ein oder aus. Ein langer Tastendruck dimmt das Licht auf. Das Aufdimmen endet beim Erreichen des Maximalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Minimalwert geschaltet und dann aufgedimmt.

bSwiDwn: Schaltereingang Ein/Aus, Abdimmen: Ein kurzes Signal (< udiSwiOvrTi) schaltet das Licht je nach Zustand ein oder aus. Ein langer Tastendruck dimmt das Licht ab. Das Abdimmen endet beim Erreichen des Minimalwertes. Ist das Licht ausgeschaltet, so wird zunächst auf den Maximalwert geschaltet und dann abgedimmt.

bUp: Aufdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bDwn: Abdimmen des Lichts. Dieser Eingang hat keine Schaltfunktion und wird durch die Umschaltzeit udiSwiOvrTi nicht beeinflusst. Die Funktion ist bei ausgeschaltetem Licht unwirksam.

bOn: Zentrales Einschalten. Der Einschaltwert richtet sich nach der Auswahl an eOnMod, s.u..

bOff: Zentrales Ausschalten.

bClMinVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Minimalwert zu schalten.

bClMaxVal: Der Lichtaktor-Baustein bekommt den Befehl auf den Maximalwert zu schalten.

bSetValDct/lrSetValDct: Der Lichtaktor-Baustein bekommt den Befehl auf den Wert lrSetValDct zu schalten. Hinweis: dieser Wert wird am Lichtaktor noch mit dem Wert lrLgtOffset beaufschlagt.

lrActlLgtLvl: Dieser Eingang dient zur Umschalt- (Toggle-) Beurteilung. Bei einer Gruppe von Lampen empfiehlt es sich entweder den Mittelwert aller Aktoren oder den Lichtwert des Gruppenmasters anzulegen.

VAR_OUTPUT

stLgtCmd : ST_BA_LgtCmd;

stLgtCmd: Befehlstelegramm vom Typ ST_BA_LgtCmd..

Parameter

udiSwiOvrTi  : UDINT           := 500;
eOnMod       : E_BA_LgtOnMode  := eBA_ClMaxVal;
lrOnValue    : LREAL           := 50.0;

udiSwiOvrTi: Umschaltzeit [ms] zwischen Tastendruckerkennung kurz und lang und damit zwischen Schalten und Dimmen.

eOnMod: Auswahl Einschaltwert (E_BA_LgtOnMode).

lrOnVal: Einschaltwert, wenn ein zentraler Einschaltbefehl über bOn kommt und an eOnMod der Modus eBA_ClOnVal angewählt ist.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
LgtSwi | FB_BA_LgtSwi | Baustein Lichtschaltung

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_SunBldActr_01

Jalousie-Aktorfunktion mit zwei internen BACnet-BO-Objekten zur Ansteuerung der Jalousie.

Funktionsbeschreibung

Durch die vorgelagerten bzw. übergeordneten Fassaden- und Raumfunktionen (BAC_RC_SunFcd_01, BAC_RC_SunBldZone_01 und RC_SunBldSwi_01) werden Jalousietelegramme für Schutz-, Hand- und Automatikfunktionen zur Verfügung gestellt. Dieses Template sammelt diese drei Telegramme und gibt dasjenige an den internen Jalousieaktorbaustein FB_BA_SunBldActr weiter, welches die höchste Priorität hat:

  1. Schutz-Befehle aus der Fassadensteuerung (BAC_RC_SunFcd_01)
  2. Handbefehle aus dem Schaltbaustein (RC_SunBldSwi_01)
  3. Automatikbefehle aus dem Raum-/Zonenbaustein (BAC_RC_SunBldZone_01)

Da die Automatik-Funktionen viele Jalousien gleichzeitig ansteuern, besteht die Gefahr, dass durch die enstehenden Einschaltströme Sicherungen auslösen. Um dies zu verhindern kann für jeden Aktorbaustein individuell eine Verzögerungszeit uiActvDly [ms] eingetragen werden. Die Verzögerung wird intern durch den Baustein FB_BA_SunBldPosDly realisiert und hat nur Auswirkung auf Automatik-Befehle, nicht jedoch auf Hand-Funktionen.

Schnittstelle

VAR_INPUT

stActr    : ST_BA_SunBld;
stManSwi  : ST_BA_SunBld;
stAutoFct : ST_BA_SunBld;

stActr: Jalousietelegramm fassadenzentrale Schutz-/Wartungsfunktion.

stManSwi: Eingang zu direkten Beschaltung eines Hand-Bausteines.

stAutoFct: Positioniertelegramm des Zonenbausteins.

VAR_OUTPUT

bCmdUp      : BOOL;
bCmdDwn     : BOOL;
lrActlPos   : LREAL;
lrActlAngl  : LREAL;
udiActvPrio : UDINT;

bCmdUp: Ausgang Hoch.

bCmdDwn: Ausgang Herunter.

b lrActlPos: Aktuelle Position [%].

lrActAngl: Aktueller Winkel [°].

udiActvPrio: Anzeige aktive Priorität, siehe Diagramm.

Parameter

PLT_NUM              : UDINT := 1;
uiActvDly            : UINT  := 0;
udiSunBldTiUp        : UDINT := 40000;
udiSunBldTiDwn       : UDINT := 40000;
udiSunBldTurnTiUp    : UDINT := 1000;
udiSunBldTurnTiDwn   : UDINT := 1000;
udiSunBldBckLshTiUp  : UDINT := 100;
udiSunBldBckLshTiDwn : UDINT := 100;
lrSunBldAnglLmtUp    : LREAL := 30.0;
lrSunBldAnglLmtDwn   : LREAL := -80.0;

PLT_NUM: Anlagennummer.

uiActvDly: Aktivierungsverzögerung [ms].

udiSunBldTiUp: Hochfahrzeit [ms].

udiSunBldTiDwn: Herunterfahrzeit [ms].

udiSunBldTurnTiUp: Zeit Lamellen-Wenden nach oben [ms].

udiSunBldTurnTiDwn: Zeit Lamellen-Wenden nach unten [ms].

udiSunBldBckLshTiUp: Umkehrlose beim Hochfahren [ms].

udiSunBldBckLshTiDwn: Umkehrlose beim Herunterfahren [ms].

lrSunBldAnglLmtUp: Lamellenwinkel Grenzwert oben.

lrSunBldAnglLmtDwn: Lamellenwinkel Grenzwert unten.

BACnet-Objekte

CmdUp    : FB_BACnetBO1203;
CmdDwn   : FB_BACnetBO1203;
BldPos   : FB_BACnetAV1201;
LamAngl  : FB_BACnetAV1201;

CmdUp: Binär-Ausgabeobjekt "Jalousie hoch".

CmdDwn: Binär-Ausgabeobjekt "Jalousie herunter".

BldPos: Anzeigeobjekt aktuelle Jalousieposition.

LamAngl: Anzeigeobjekt aktueller Lamellenwinkel.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
SunBldPrioSwi FB_BA_SunBldPrioSwi4 Priorisierung der Telegramme
  1. Schutz-Befehle aus der Fassadensteuerung (BAC_RC_SunFcd_01)
  2. Handbefehle aus dem Schaltbaustein (RC_SunBldSwi_01)
  3. Automatikbefehle aus dem Raum-/Zonenbaustein (BAC_RC_SunBldZone_01)
SunBldActvDly | FB_BA_SunBldActvDly | Verzögerung für mögliches Sammelfahrkommando aus Automatik-Funktionen

Netzwerk 0002

Instanz | Typ | Aufgabe
SunBldActr | FB_BA_SunBldActr | Jalousie-Aktorbaustein

Netzwerk 0003

Instanz | Typ | Aufgabe
CmdUp | FB_BACnetBO1203 | Binary-Output-Objekt "Hoch"

Netzwerk 0004

Instanz | Typ | Aufgabe
CmdDwn | FB_BACnetBO1203 | Binary-Output-Objekt "Herunter"

Netzwerk 0005

Instanz | Typ | Aufgabe
BldPos | FB_BACnetAV1201 | Anzeigeobjekt aktuelle Jalousieposition

Netzwerk 0006

Instanz | Typ | Aufgabe
LamAngl | FB_BACnetAV1201 | Anzeigeobjekt aktueller Lamellenwinkel

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | n/a | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_SunBldZone_01

Zusammenfassung der Hand-/Automatik-Funktionen für eine (Raum-)Zone

Funktionsbeschreibung

Auf der Fassadenebene werden durch das Template BAC_RC_SunFcd_01 zum einen Schutz- und Wartungs-Befehle direkt an die Jalousie-Aktoren RC_SunBldActr_01 geleitet, zum anderen werden über die Struktur stFcd Automatikfreigaben und Positionierungen für die (Raum-) Zonenebene bereit gestellt.

Das Template BAC_RC_SunBldZone_01 empfängt diese Daten und gibt die Befehlsstruktur an den Jalousieaktor weiter, die die höchste Priorität besitzt und aktiv geschaltet ist:

Priorität Funktion Zweck aktiv-Bedingungen
1 Handbedienung individuelle Jalousiestellung
bei Anwesenheit
  • aktiv: Bedienung durch Taster (gebildet in RC_SunBldSwi)
  • passiv: fallende Flanke Präsenz (gebildet in RC_SunBldSwi)
2 Sonnenschutz
(sun-protection) 		Automatischer Sonnenschutz
bei Anwesenheit
(keine direkte Sonnenstrahlung)
  • Fassade im Sonnenstand (gebildet in BAC_RC_SunFcd_01 )
  • Helligkeit [lux] über Grenzwert (gebildet in BAC_RC_SunFcd_01 )
  • Freigabe über BACnet-Objekt (gebildet in BAC_RC_SunBldZone_01 )
  • Anwesenheit (Präsenzerkennung, gebildet in BAC_RC_SunBldZone_01 )
3 Fassadenweite
Thermoautomatik
(façade-thermoautomatic) 		Thermoautomatik mit
einheitlichem Fassadenbild
in Zeiten längerer Abwesenheit
(Wochenende/Urlaub)

Temperatursteuerung über
Referenzraum
  • Fassade im Sonnenstand (gebildet in BAC_RC_SunFcd_01 )
  • Globalstrahlung [W/m2] über Grenzwert (gebildet in BAC_RC_SunFcd_01 )
  • Abwesenheit (bAbcSched, Eingang des BAC_RC_SunFcd_01 )
  • Freigabe über BACnet-Objekt (gebildet in BAC_RC_SunFcd_01 )
4 Thermoautomatik Thermoautomatik in Abhängigkeit
der Raumtemperatur
in Zeiten kürzerer Abwesenheit
  • Fassade im Sonnenstand (gebildet in BAC_RC_SunFcd_01 )
  • Globalstrahlung [W/m2] über Grenzwert (gebildet in BAC_RC_SunFcd_01 )
  • Freigabe über BACnet-Objekt (gebildet in BAC_RC_SunFcd_01 )
  • Abwesenheit über Präsenzerkennung, s.u.
5 Dämmerungsautomatik
(twilight-automatic) 		Blickschutz von außen bei
Dunkelheit und Anwesenheit
  • Fassade im Sonnenstand (gebildet in BAC_RC_SunFcd_01 )
  • Helligkeit [lux] unter Grenzwert (gebildet in BAC_RC_SunFcd_01 )
  • Freigabe über BACnet-Objekt (gebildet in BAC_RC_SunBldZone_01 )
  • Anwesenheit über Präsenzerkennung, s.u.

Präsenzerkennung

Die Raumpräsenz kann über zwei Bedingungen erkannt werden: zum einen über einen Anwesenheits-Eingang bPrcSched, an dem ein Terminplan zur Raum-Belegung angelegt wird, zum anderen durch einen richtigen Präsenzmelder, der an den Eingang bPrcDetc angeschlossen wird. Die Erkennung über den Präsenzmelder ist abschaltverzögert, die Zeit dazu kann über einen internen Parameter eingestellt werden. Beide Bedingungen, Terminplan und ausschaltverzögertes Signal, bilden intern, über ein ODER-Glied verknüpft, die Präsenzerkennung.

Schnittstelle

VAR_INPUT

stFcd       : ST_BA_Fcd;
bAbcSched   : BOOL;
stPrcDetc   : ST_BA_ObjInfo;
stSunBldSwi : ST_BA_SunBld;
stSpRmT     : ST_BA_SpRmT;
lrRmT       : LREAL;

bPrcSched: Eingang Anwesenheits-Terminplan.

bPrcDetc: Eingang Präsenzmelder.

stFcd: Fassadenspezifische Daten an Raum-Ebene zur Aktivierung der Automatikfunktionen.

stSunBldSwi: Jalousietelegramm Handsteuerung.

stSpRmT: Raumtemperatursollwerte.

lrRmT: Raumtemperatur [°C].

VAR_OUTPUT

stSunBldAuto : ST_BA_SunBld;

stSunBldAuto: Resultierendes Jalousietelegramm Automatik/Hand-Funktionen.

Parameter

PLT_NUM                 : UDINT := 1;
uiPrcDetcOffDly         : UINT  := 300;
SunBldTwiLgtAuto_lrPos  : LREAL := 100.0;
SunBldTwiLgtAuto_lrAngl : LREAL := -80.0;
ThAuto_lrPosHtg         : LREAL := 0.0;
ThAuto_lrAnglHtg        : LREAL := 0.0;

PLT_NUM: Anlagennummer.

uiPrcDetcOffDly: Abfallverzögerung [s] der Präsenzerkennung über den Eingang stPrcDetc.

SunBldTwiLgtAuto_lrPos: Position Dämmerungsautomatik.

SunBldTwiLgtAuto_lrAngl: Winkel Dämmerungsautomatik.

ThAuto_lrPosHtg: Position Thermoautomatik (Heizen).

ThAuto_lrAnglHtg: Winkel Thermoautomatik (Heizen).

BACnet-Objekte

ThAutoColPos     : FB_BACnetAV1201;
ThAutoColAngl    : FB_BACnetAV1201;
TwiLgtAutoSlcn   : FB_BACnetBV1201;
ThAutoSlcn       : FB_BACnetBV1201;
SunPrtcSlcn      : FB_BACnetBV1201;

ThAutoColPos: Positionswert Thermoautomatik Kühlen.

ThAutoColAngl: Winkelwert Thermoautomatik Kühlen.

TwiLgtAutoSlcn: Dämmerungsautomatik anwählen.

ThAutoSlcn: Thermoautomatik anwählen.

SunPrtcSlcn: Sonnenschutzautomatik anwählen.

Diagramm

Programmbeschreibung

Netzwerk 0001-0002

Instanz | Typ | Aufgabe
tofPrcDly | TOF | Ausschaltverzögerung der Präsenzerkennung.
 | OR | Zusammenfassung ausschaltverzögerte Präsenzerkennung oder Präsenzplan → Variable Präsenz bPrc

Netzwerk 0003

Instanz | Typ | Aufgabe
TwiLgtAutoSlcn | FB_BACnetBV1201 | Eingabe-Objekt Dämmerungsautomatik anwählen

Netzwerk 0004

Instanz | Typ | Aufgabe
SunBldTwiLgtAuto | FB_BA_SunBldEvt | Positionierbaustein Dämmerungsautomatik

Netzwerk 0005

Instanz | Typ | Aufgabe
SunBldFcdThAuto | FB_BA_SunBldEvt | Positionierbaustein Fassaden-Thermoautomatik

Netzwerk 0006

Instanz | Typ | Aufgabe
ThAutoSlcn | FB_BACnetBV1201 | Eingabe-Objekt Thermoautomatik anwählen

Netzwerk 0007

Instanz | Typ | Aufgabe
ThAutoColPos | FB_BACnetAV1201 | Eingabe-Objekt Kühlposition (Jalousiehöhe)

Netzwerk 0008

Instanz | Typ | Aufgabe
ThAutoColAngl | FB_BACnetAV1201 | Eingabe-Objekt Kühlposition (Lammelenwinkel)

Netzwerk 0009

Instanz | Typ | Aufgabe
 | FB_BA_Swi2P | Thermoautomatik Temperatur-Hysterese

Netzwerk 0010

Instanz | Typ | Aufgabe
 | SEL | Auswahl Heiz- oder Kühlposition

Netzwerk 0011

Instanz | Typ | Aufgabe
 | SEL | Auswahl Heiz- oder Kühl-Lamellenwinkel

Netzwerk 0012

Instanz | Typ | Aufgabe
SunBldThAuto | FB_BA_SunBldEvt | Positionierbaustein Thermoautomatik

Netzwerk 0013

Instanz | Typ | Aufgabe
SunPrtcSlcn | FB_BACnetBV1201 | Eingabe-Objekt Sonnenschutzautomatik anwählen

Netzwerk 0014

Instanz | Typ | Aufgabe
SunPrtc | FB_BA_SunBldEvt | Positionierbaustein Sonnenschutz

Netzwerk 0015

Instanz | Typ | Aufgabe
SunBldPrioSwi | FB_BA_SunBldPrioSwi8 | Prioritätenauswahl

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_SunCalc_01

Sonnenstandsberechnung

Funktionsbeschreibung

Dieses Template berechnet anhand der eingegebenen Uhrzeit und den Standortkoordinaten den aktuellen Sonnenstand (Richtung und Höhe). Die Eingabe der Zeit erfolgt im TIMESTRUCT-Format als UTC-Zeit (Universal Time Coordinated - im älteren Sprachgebrauch auch GMT, Greenwich-Mean-Time). Die Koordinaten sind intern als Parameter voreinstellbar. Die Ausgabe erfolgt zum einen an den Ausgängen

  • lrSunAzm: Sonnenrichtung (nördliche Erdhalbkugel: 0° Norden ... 90° Osten ... 180° Süden ... 270° Westen ... / südliche Erdhalbkugel: 0° Süden ... 90° Osten ... 180° Norden ... 270° Westen ...).
  • lrSunElv: Sonnenhöhe (0° horizontal ... 90° senkrecht).

zum anderen auch als BACnet-Analog-Value-Objekte zur Anzeige.

Kernstück dieses Templates ist der Baustein FB_BA_CalcSunPos.

Schnittstelle

VAR_INPUT

stUTC : TIMESTRUCT;

stUTC: Koordinierte Weltzeit (Universal Time Coordinated).

VAR_OUTPUT

lrSunAzm : LREAL;
lrSunElv : LREAL;

lrSunAzm: Sonnenrichtung (nördliche Erdhalbkugel: 0° Norden ... 90° Osten ... 180° Süden ... 270° Westen ... / südliche Erdhalbkugel: 0° Süden ... 90° Osten ... 180° Norden ... 270° Westen ...).

lrSunElv: Sonnenhöhe (0° horizontal ... 90° senkrecht).

Parameter

PLT_NUM          : UDINT := 1;
lrDegLngd        : LREAL := 7.0;
lrDegLatd        : LREAL := 51.0;

PLT_NUM: Anlagennummer.

lrDegLngd: geographische Länge des Gebäudestandortes.

lrDegLatd: geographische Breite des Gebäudestandortes.

BACnet-Objekte

ActlValSunAzm    : FB_BACnetAV1201;
ActlValSunElv    : FB_BACnetAV1201;

ActlValSunAzm: Anzeigeobjekt aktuelle Sonnenrichtung.

ActlValSunElv: Anzeigeobjekt aktuelle Sonnenhöhe.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
fbCalcSunPos | FB_BA_CalcSunPos | Kernbaustein: Berechnung der Sonnenrichtung und -höhe

Netzwerk 0002

Instanz | Typ | Aufgabe
 |  | Zuweisung Ausgang rSunElv (Sonnenhöhe)

Netzwerk 0003

Instanz | Typ | Aufgabe
ActlValSunAzm | FB_BACnetAV1201 | Anzeigeobjekt aktuelle Sonnenrichtung

Netzwerk 0004

Instanz | Typ | Aufgabe
ActlValSunElv | FB_BACnetAV1201 | Anzeigeobjekt aktuelle Sonnenhöhe

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_SunFcd_01

Sammeln von Fassaden-spezifischen Informationen / Bereitstellung von Schutz- und Automatikfunktionen

Funktionsbeschreibung

Das Template gibt zwei Telegramme als Strukturen aus:

  • ein Schutz und Wartungs-Telegramm stActr, welches direkt auf die Jalousieaktoren wirken soll
  • eine Struktur stFcd, welches die Raumfunktionen mit Daten und Freigaben für die Jalousie-Automatiken bedient

Schutz und Wartung

Diese Funktionen bestehen nach ihrer Priorität geordnet aus

  • dem Feuerschutz
  • dem Witterungsschutz
  • der Wartungspositionierung

Der Feuerschutz besteht aus einem einfachen Positionierbaustein, der durch ein TRUE-Signal am Eingang bFire aktiviert wird. Die Jalousie wird dann auf Position 0% / Winkel 0° gefahren.
Dem Witterungsschutz liegt der Baustein FB_BA_SunBldWthrPrtc zugrunde: Ist der Wind für eine einstellbare Zeitdauer stärker als ein Aktivierungs-Grenzwert, so besteht Windalarm und die Jalousien werden auf Position 0% / Winkel 0° gefahren. Dieser Alarm wird erst aufgehoben, wenn der Wind für eine gewisse Dauer unterhalb eines Deaktivierungs-Grenzwertes liegt. Diese 4 Parameter sind per BACnet einstellbar. Der Witterungsschutz löst ebenfalls bei Frostgefahr aus. Dazu muss die Außentemperatur unter fest eingestellten 2°C liegen und der Regensensor ansprechen (Eingang bRainSns) Die Auslösung des Frostschutzes erfolgt unmittelbar, die Rücknahme nur verzögert über eine Enteisungszeit, welche über ein BACnet-Objekt einstellbar ist.
Die Wartungs-Positionierung lässt sich über BACnet aktivieren. Die Jalousien nehmen dann eine vorher ebenfalls über BACnet einstellbare Position ein, die es zum Beispiel ermöglicht, die Fenster zu reinigen.

Jalousie-Automatiken

Das Template stell die Freigaben bzw. Daten für die folgenden Automatikfunktionen zur Verfügung:

  • fassadenübergreifende Thermoautomatik
  • Thermoautomatik
  • Dämmerungsautomatik
  • Sonnenschutz

Die Thermoautomatiken sind immer dann aktiv, wenn das Gebäude bzw. Teile des Gebäudes unbelegt sind. Dabei kann es wünschenswert sein, bei länger andauernde Abwesenheits-Phasen ein einheitliches Fassadenbild zu haben. Anhand der Innentemperatur eines Referenz-Raumes wird daher für die ganze Fassade entschieden, ob die Jalousien auf Kühl- oder Heizposition fahren sollen. Die eigentliche Aktivierung der Fassaden-Thermoautomatik hängt von den folgenden Gegebenheiten ab:

  • einem Abwesenheits-Terminplan
  • einer manuellen Aktivierung über BACnet
  • der Tatsache, ob die Fassade von der Sonne beschienen wird
  • ob die Sonneneinstrahlung einen gewissen Einschalt-Grenzwert über- oder einen Ausschaltgrenzwert unterschreitet.

Für die fassadenübergreifende Thermoautomatik sind dabei in diesem Template die Heizposition (Jalousien auf) per Parameter vordefinierbar, während die Kühlposition während des Betriebes jederzeit per BACnet einstellbar ist. Freigabe und Position werden dann einheitlich an alle Räume verteilt.

Im Gegensatz dazu wird für die "einfache" Thermoautomatik von diesem Template nur die Freigabe an die Räume durchgereicht. Sie orientiert sich daran,

  • ob die Fassade von der Sonne beschienen wird
  • und ob die Sonneneinstrahlung einen gewissen Einschalt-Grenzwert über- oder einen Ausschaltgrenzwert unterschreitet.

Weitere Kriterien, wie Präsenz, manuelle An-/Abwahl oder Positionsvorgaben werden nicht über dieses Template, sondern Raum- bzw. Zonenweise übergeben.

Die Dämmerungsautomatik, welche nur bei Präsenz aktiv ist, erhält von diesem Template ebenfalls nur die Freigabe und zwar allein in Abhängigkeit eines Ein- bzw. Ausschalt-Grenzwertes der Außenhelligkeit.

Für die Sonnenschutz-Automatik berechnet das Template anhand der eingegebenen Uhrzeit und dem Sonnenstand den einzustellenden Lamellenwinkel. Dabei wird davon ausgegangen, dass alle Jalousien baugleich sind, also die gleiche Lamellenbreite und den gleichen Lamellenabstand besitzen. Die Lamellenstellung wird dabei nicht kontinuierlich, sondern in einstellbarem Abstand, dem so genannten Positionierintervall ausgegeben. Dieses verhindert ein ständiges Positionieren der Lamelle. Die Intervalldauer ist über ein BACnet-Objekt voreinstellbar. Der Sonnenschutzautomatik liegt der Baustein FB_BA_SunPrtc zugrunde.
Die Freigabe auf Fassadenebene erfolgt anhand der Kriterien

  • ob die Fassade von der Sonne beschienen wird
  • und ob die Außenhelligkeit einen gewissen Einschalt-Grenzwert über- oder einen Ausschaltgrenzwert unterschreitet.

Die Sonnenschutzautomatik ist nur bei Präsenz aktiv, dies wird jedoch Raum- bzw. Zonenweise beurteilt.

Schnittstelle

VAR_INPUT

bFire              : BOOL;
bRainSns           : BOOL;
lrOtsT             : LREAL;
lrWndSpd           : LREAL;
lrGlobRadn         : LREAL;
lrBrtns            : LREAL;
lrSunAzm           : LREAL;
lrSunElv           : LREAL;
bAbcSchedFcdThAuto : BOOL;
lrRefRmT           : LREAL;
lrRefRmTCol        : LREAL;
lrRefRmTHtg        : LREAL;
stUTC              : TIMESTRUCT;

bFire: Feueralarm.

bRainSns: Regensensor.

lrOtsT: Außentemperatur [°C].

lrWndSpd: Windgeschwindigkeit [m/s].

lrGlobRadn: globale Sonneneinstrahlung [W/m2].

lrBrtns: Helligkeit (auf Fassade) [lux].

lrSunAzm: Sonnenrichtung (nördliche Erdhalbkugel: 0° Norden ... 90° Osten ... 180° Süden ... 270° Westen ... / südliche Erdhalbkugel: 0° Süden ... 90° Osten ... 180° Norden ... 270° Westen ...).

lrSunElv: Sonnenhöhe (0° horizontal ... 90° senkrecht).

bAbcSchedFcdThAuto: Abwesenheits-Zeitplan zur Aktivierung der Fassaden-Thermoautomatik.

lrRefRmT: Temperatur Referenzraum [°C] für Auswertung Fassaden-Thermoautomatik.

lrRefRmTCol: Umschalttemperatur [°C] Fassaden-Thermoautomatik Kühlen.

lrRefRmTHtg: Umschalttemperatur [°C] Fassaden-Thermoautomatik Heizen.

stUTC: Koordinierte Weltzeit (Universal Time Coordinated - im älteren Sprachgebrauch auch GMT, Greenwich-Mean-Time).

VAR_OUTPUT

stActr : ST_BA_SunBld;
stFcd  : ST_BA_Fcd;

stActr: Jalousietelegramm fassadenzentrale Schutz-/Wartungsfunktion.

stFcd : Fassadenspezifische Daten an Raum-Ebene zur Aktivierung der Automatikfunktionen.

Parameter

PLT_NUM            : UDINT := 1;
lrFcdThAutoPosHtg  : LREAL := 0.0;
lrFcdThAutoAnglHtg : LREAL := 0.0;
lrDegLngd          : LREAL := 7.0;
lrDegLatd          : LREAL := 51.0;
lrFcOrtn           : LREAL := 180.0;
lrFcAngl           : LREAL := 0.0;
lrLamWdth          : LREAL := 80.0;
lrLamDstc          : LREAL := 60.0;
lrAzmSttRng        : LREAL := 90.0;
lrAzmEndRng        : LREAL := 270.0;
lrElvLoLmt         : LREAL := 0.0;
lrElvHiLmt         : LREAL := 90.0;

PLT_NUM: Anlagennummer.

lrFcdThAutoPosHtg: Position Thermoautomatik (Heizen) [%].

rFcdThAutoAnglHtg: Lamellen-Winkel Thermoautomatik (Heizen) [°].

lrDegLngd: Lage des Gebäudes : geogr. Länge [°].

lrDegLatd: Lage des Gebäudes : geogr. Breite [°].

lrFcOrtn: Fassadenausrichtung-Blickrichtung aus Fenster [°].

lrFcAngl: Fassadenneigung [°].

lrLamWdth: Lamellenbreite [mm].

lrLamDstc: Abstand zweier Lamellen [mm].

lrAzmSttRng: Bereichs-Start Sonnenrichtung (Azimut) [°].

lrAzmEndRng: Bereichs-Ende Sonnenrichtung (Azimut) [°].

lrElvLoLmt: Bereichs-Untergrenze Sonnenhöhe (Elevation) [°].

lrElvHiLmt: Bereichs-Obergrenze Sonnenhöhe (Elevation) [°].

BACnet-Objekte

WndSpdStrmOn     : FB_BACnetAV1201;
WndSpdStrmOff    : FB_BACnetAV1201;
DlyStrmOn        : FB_BACnetAV1201;
DlyStrmOff       : FB_BACnetAV1201;
DeiceTi          : FB_BACnetAV1201;
WthrPrtcActv     : FB_BACnetBV1201;
MntnActvt        : FB_BACnetBV1201;
MntnPos          : FB_BACnetAV1201;
MntnAngl         : FB_BACnetAV1201;
FcdThAutoColPos  : FB_BACnetAV1201;
FcdThAutoColAngl : FB_BACnetAV1201;
FcdThAutoValOn   : FB_BACnetAV1201;
FcdThAutoValOff  : FB_BACnetAV1201;
FcdThAutoSlcn    : FB_BACnetBV1201;
FcdThAutoEn      : FB_BACnetBV1201;
ThAutoValOn      : FB_BACnetAV1201;
ThAutoValOff     : FB_BACnetAV1201;
ThAutoEn         : FB_BACnetBV1201;
TwiLgtAutoValOn  : FB_BACnetAV1201;
TwiLgtAutoValOff : FB_BACnetAV1201;
TwiLgtAutoEn     : FB_BACnetBV1201;
SunPrtcValOn     : FB_BACnetAV1201;
SunPrtcValOff    : FB_BACnetAV1201;
SunPrtcEn        : FB_BACnetBV1201;
SunPrtcPosIntval : FB_BACnetAV1201;

WndSpdStrmOn: Witterungsschutz Sturm-Einschaltwert.

WndSpdStrmOff: Witterungsschutz Sturm-Ausschaltwert.

DlyStrmOn: Witterungsschutz Sturm-Einschaltverzögerung.

DlyStrmOff: Witterungsschutz Sturm-Ausschaltverzögerung.

DeiceTi: Witterungsschutz Jalousie-Enteisungszeit.

WthrPrtcActv: Anzeige Witterungsschutz aktiviert.

MntnActvt: Eingabe Wartungspositionierung aktivieren.

MntnPos: Eingabe Wartungsposition (Jalousiehöhe).

MntnAngl: Eingabe Wartungsposition (Lammellenwinkel).

FcdThAutoColPos: Eingabe Wartungsposition (Lammelenwinkel).

FcdThAutoColAngl: Eingabe Kühlposition (Lammelenwinkel).

FcdThAutoValOn: Eingabe Fassaden-Thermoautomatik Aktivierungswert (globale Sonneneinstrahlung [W/m2]).

FcdThAutoValOff: Eingabe Fassaden-Thermoautomatik Deaktivierungswert (globale Sonneneinstrahlung [W/m2]).

FcdThAutoSlcn: Eingabe Fassaden-Thermoautomatik anwählen.

FcdThAutoEn: Anzeige Fassaden-Thermoautomatik freigegeben.

ThAutoValOn: Eingabe Thermoautomatik Aktivierungswert (globale Sonneneinstrahlung [W/m2]).

ThAutoValOff: Eingabe Thermoautomatik Deaktivierungswert (globale Sonneneinstrahlung [W/m2]).

ThAutoEn: Anzeige Thermoautomatik freigegeben.

TwiLgtAutoValOn: Eingabe Dämmerungsautomatik Aktivierungswert (globale Sonneneinstrahlung [W/m2]).

TwiLgtAutoValOff: Eingabe Dämmerungsautomatik Deaktivierungswert (globale Sonneneinstrahlung [W/m2]).

TwiLgtAutoEn: Anzeige Dämmerungsautomatik freigegeben.

SunPrtcValOn: Eingabe Sonnenschutz Aktivierungswert (Helligkeit auf Fassade [lux]).

SunPrtcValOff: Eingabe Sonnenschutz Deaktivierungswert (Helligkeit auf Fassade [lux]).

SunPrtcEn: Anzeige Sonnenschutz freigegeben.

SunPrtcPosIntval: Eingabe Sonnenschutz Positionierintervall.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
fbCalcSunPos | FB_BA_CalcSunPos | Kernbaustein: Berechnung der Sonnenrichtung und -höhe

Netzwerk 0002-0005

Instanz | Typ | Aufgabe
WndSpdStrmOn | FB_BACnetAV1201 | Eingabe Witterungsschutz Hysterese: Sturm-Einschaltwert
WndSpdStrmOff | FB_BACnetAV1201 | Eingabe Witterungsschutz Hysterese: Sturm-Ausschaltwert
DlyStrmOn | FB_BACnetAV1201 | Eingabe Witterungsschutz Einschalt-Verzögerung
DlyStrmOff | FB_BACnetAV1201 | Eingabe Witterungsschutz Ausschalt-Verzögerung

Netzwerk 0006

Instanz | Typ | Aufgabe
DeiceTi | FB_BACnetAV1201 | Eingabe Enteisungszeit [s]

Netzwerk 0007

Instanz | Typ | Aufgabe
WthrPrtc | FB_BA_SunBldWthrPrtc | Witterungsschutz-Baustein

Netzwerk 0008

Instanz | Typ | Aufgabe
WthrPrtcActv | FB_BACnetBV1201 | Anzeige Witterungsschutz aktiv

Netzwerk 0009-0011

Instanz | Typ | Aufgabe
MntnActvt | FB_BACnetBV1201 | Eingabe Wartungspositionierung aktivieren
MntnPos | FB_BACnetBV1201 | Eingabe Wartungspositionierung (Jalousiehöhe)
MntnAngl | FB_BACnetBV1201 | Eingabe Wartungspositionierung (Lammelenwinkel)

Netzwerk 0012

Instanz | Typ | Aufgabe
SunBldMnt | FB_BA_SunBldEvt | Positionierbaustein Wartungspositionierung

Netzwerk 0013

Instanz | Typ | Aufgabe
PrioSwiActr | FB_BA_SunBldPrioSwi4 | Prioritäten-Auswahl Positioniertelegramm

Netzwerk 0014-0016

Instanz | Typ | Aufgabe
InRngAzm | FB_BA_InRngAzm | Bereichseingrenzung Sonnenrichtung für die Fassade
InRngElv | FB_BA_InRngElv | Bereichseingrenzung Sonnenhöhe für die Fassade
 | AND | durch die beiden Eingrenzungen resultierende Aussage, ob Fassade in direkter Sonneneinstrahlung liegt

Netzwerk 0017-0018

Instanz | Typ | Aufgabe
FcdThAutoColPos | FB_BACnetAV1201 | Eingabe Kühlposition (Jalousiehöhe) Fassaden-Thermoautomatik
FcdThAutoColAngl | FB_BACnetAV1201 | Eingabe Kühlposition (Lammelenwinkel) Fassaden-Thermoautomatik

Netzwerk 0019-0021

Instanz | Typ | Aufgabe
FcdThAutoSwi | FB_BA_Swi2P | Fassaden-Thermoautomatik Temperatur-Hysterese zur Beurteilung, ob Heiz- oder Kühlposition angefahren werden soll
 | SEL | Auswahl Position Heizen / Kühlen
 | SEL | Auswahl Winkel Heizen / Kühlen

Netzwerk 0022-0023

Instanz | Typ | Aufgabe
FcdThAutoValOn | FB_BACnetAV1201 | Eingabe Fassaden-Thermoautomatik Aktivierungswert (Globalstrahlung [W/m2])
FcdThAutoValOff | FB_BACnetAV1201 | Eingabe Fassaden-Thermoautomatik Deaktivierungswert (Globalstrahlung [W/m2])

Netzwerk 0024

Instanz | Typ | Aufgabe
FcdThAutoActvSwi | FB_BA_Swi2P | Fassaden-Thermoautomatik Hysterese der Globalstrahlung zur Aktivierungs-Beurteilung

Netzwerk 0025

Instanz | Typ | Aufgabe
FcdThAutoSlcn | FB_BACnetBV1201 | Eingabe Fassaden-Thermoautomatik anwählen

Netzwerk 0026

Instanz | Typ | Aufgabe
 | AND | Bedingungen Fassaden-Thermoautomatik aktivieren

Netzwerk 0027

Instanz | Typ | Aufgabe
FcdThAutoEn | FB_BACnetBV1201 | Anzeige Fassaden-Thermoautomatik freigegeben

Netzwerk 0028-0029

Instanz | Typ | Aufgabe
ThAutoValOn | FB_BACnetAV1201 | Eingabe Thermoautomatik Aktivierungswert (Globalstrahlung [W/m2])
ThAutoValOff | FB_BACnetAV1201 | Eingabe Thermoautomatik Deaktivierungswert (Globalstrahlung [W/m2])

Netzwerk 0030

Instanz | Typ | Aufgabe
ThAutoSwi | FB_BA_Swi2P | Thermoautomatik Hysterese der Globalstrahlung zur Aktivierungs-Beurteilung
 | AND | Bedingungen Thermoautomatik aktivieren

Netzwerk 0031

Instanz | Typ | Aufgabe
FcdThAutoEn | FB_BACnetBV1201 | Anzeige Thermoautomatik freigegeben

Netzwerk 0032-0033

Instanz | Typ | Aufgabe
TwiLgtAutoValOn | FB_BACnetAV1201 | Eingabe Dämmerungsautomatik Aktivierungswert (Helligkeit [lux])
TwiLgtAutoValOff | FB_BACnetAV1201 | Eingabe Dämmerungsautomatik Deaktivierungswert (Helligkeit [lux])

Netzwerk 0034

Instanz | Typ | Aufgabe
TwiLgtAutoSwi | FB_BA_Swi2P | Dämmerungsautomatik Hysterese der Helligkeit zur Aktivierungs-Beurteilung

Netzwerk 0035

Instanz | Typ | Aufgabe
TwiLgtAutoEn | FB_BACnetBV1201 | Anzeige Dämmerungsautomatik freigegeben

Netzwerk 0036-0037

Instanz | Typ | Aufgabe
SunPrtcValOn | FB_BACnetAV1201 | Eingabe Sonnenschutz Aktivierungswert (Helligkeit [lux])
SunPrtcValOff | FB_BACnetAV1201 | Eingabe Sonnenschutz Deaktivierungswert (Helligkeit [lux])

Netzwerk 0038

Instanz | Typ | Aufgabe
SunPrtcSwi | FB_BA_Swi2P | Sonnenschutz Hysterese der Helligkeit zur Aktivierungs-Beurteilung

Netzwerk 0039

Instanz | Typ | Aufgabe
SunPrtcEn | FB_BACnetBV1201 | Anzeige Sonnenschutz freigegeben

Netzwerk 0040

Instanz | Typ | Aufgabe
SunPrtcPosIntval | FB_BACnetBV1201 | Eingabe Sonnenschutz Positionierintervall

Netzwerk 0041

Instanz | Typ | Aufgabe
SunPrtc | FB_BA_SunPrtc | Berechnung Sonnenschutz (pro Fassade)

Netzwerk 0042 - 0049

Instanz | Typ | Aufgabe
 |  | Zusammenstellung Telegramm stFcd

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_SunBldActr_01

Jalousie-Aktorfunktion

Funktionsbeschreibung

Durch die vorgelagerten bzw. übergeordneten Fassaden- und Raumfunktionen (BAC_RC_SunFcd_01, BAC_RC_SunBldZone_01 und RC_SunBldSwi_01) werden Jalousietelegramme für Schutz-, Hand- und Automatikfunktionen zur Verfügung gestellt. Dieses Template sammelt diese drei Telegramme und gibt dasjenige an den internen Jalousieaktorbaustein FB_BA_SunBldActr weiter, welches die höchste Priorität hat:

  1. Schutz-Befehle aus der Fassadensteuerung (BAC_RC_SunFcd_01)
  2. Handbefehle aus dem Schaltbaustein (RC_SunBldSwi_01)
  3. Automatikbefehle aus dem Raum-/Zonenbaustein (BAC_RC_SunBldZone_01)

Da die Automatik-Funktionen viele Jalousien gleichzeitig ansteuern, besteht die Gefahr, dass durch die enstehenden Einschaltströme Sicherungen auslösen. Um dies zu verhindern kann für jeden Aktorbaustein individuell eine Verzögerungszeit uiActvDly [ms] eingetragen werden. Die Verzögerung wird intern durch den Baustein FB_BA_SunBldPosDly realisiert und hat nur Auswirkung auf Automatik-Befehle, nicht jedoch auf Hand-Funktionen.

Schnittstelle

VAR_INPUT

stActr    : ST_BA_SunBld;
stManSwi  : ST_BA_SunBld;
stAutoFct : ST_BA_SunBld;

stActr: Jalousietelegramm fassadenzentrale Schutz-/Wartungsfunktion.

stManSwi: Eingang zu direkten Beschaltung eines Hand-Bausteines.

stAutoFct: Positioniertelegramm des Zonenbausteins.

VAR_OUTPUT

bCmdUp      : BOOL;
bCmdDwn     : BOOL;
lrActlPos   : LREAL;
lrActlAngl  : LREAL;
udiActvPrio : UDINT;

bCmdUp: Ausgang Hoch.

bCmdDwn: Ausgang Herunter.

lrActlPos: Aktuelle Position [%].

lrActAngl: Aktueller Winkel [°].

udiActvPrio: Anzeige aktive Priorität, siehe Diagramm.

Parameter

uiActvDly            : UINT  := 0;
udiSunBldTiUp        : UDINT := 40000;
udiSunBldTiDwn       : UDINT := 40000;
udiSunBldTurnTiUp    : UDINT := 1000;
udiSunBldTurnTiDwn   : UDINT := 1000;
udiSunBldBckLshTiUp  : UDINT := 100;
udiSunBldBckLshTiDwn : UDINT := 100;
lrSunBldAnglLmtUp    : LREAL := 30.0;
lrSunBldAnglLmtDwn   : LREAL := -80.0;

uiActvDly: Aktivierungsverzögerung [ms].

udiSunBldTiUp: Hochfahrzeit [ms].

udiSunBldTiDwn: Herunterfahrzeit [ms].

udiSunBldTurnTiUp: Zeit Lamellen-Wenden nach oben [ms].

udiSunBldTurnTiDwn: Zeit Lamellen-Wenden nach unten [ms].

udiSunBldBckLshTiUp: Umkehrlose beim Hochfahren [ms].

udiSunBldBckLshTiDwn: Umkehrlose beim Herunterfahren [ms].

lrSunBldAnglLmtUp: Lamellenwinkel Grenzwert oben.

lrSunBldAnglLmtDwn: Lamellenwinkel Grenzwert unten.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
SunBldPrioSwi FB_BA_SunBldPrioSwi4 Priorisierung der Telegramme
  1. Schutz-Befehle aus der Fassadensteuerung (BAC_RC_SunFcd_01)
  2. Handbefehle aus dem Schaltbaustein (RC_SunBldSwi_01)
  3. Automatikbefehle aus dem Raum-/Zonenbaustein (BAC_RC_SunBldZone_01)
SunBldActvDly | FB_BA_SunBldActvDly | Verzögerung für mögliches Sammelfahrkommando aus Automatik-Funktionen

Netzwerk 0002

Instanz | Typ | Aufgabe
SunBldActr | FB_BA_SunBldActr | Jalousie-Aktorbaustein

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | n/a | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


RC_SunBldSwi_01

Jalousie-Schaltfunktion

Funktionsbeschreibung

Dieses Template wertet zwei Jalousietaster aus und erzeugt daraus ein Positioniertelegramm stSunBldSwi, welches wiederum von dem Template RC_SunBldZone ausgewertet werden kann. Der Jalousiebefehl wirkt dabei tippend oder bei längerem Tastendruck selbsthaltend. Die dazugehörige Umschaltzeit ist über einen internen Parameter einstellbar. Eine Selbsthaltung kann jederzeit durch ein erneutes Tippen, egal in welcher Richtung, aufgehoben werden.
Wurde der Baustein einmal über die Taster bedient, so wird dieses im Jalousietelegramm stSunBldSwi über einen Aktiv-Merker gespeichert. Dieser wird dann an Prioritäten-Bausteinen ausgewertet, so dass untergeordnete Automatik-Funktionen die vom Nutzer eingestellte Jalousieposition nicht sofort wieder überschreiben. Zurückgesetzt wird dieser Aktiv-Merker dann, wenn Nicht-Präsenz erkannt wird.

Präsenzerkennung

Die Raumpräsenz kann über zwei Bedingungen erkannt werden: zum einen über einen Anwesenheits-Eingang bPrcSched, an dem ein Terminplan zur Raum-Belegung angelegt wird, zum anderen durch einen richtigen Präsenzmelder, der an den Eingang bPrcDetc angeschlossen wird. Die Erkennung über den Präsenzmelder ist abschaltverzögert, die Zeit dazu kann über einen internen Parameter eingestellt werden. Beide Bedingungen - Terminplan und ausschaltverzögertes Signal - bilden intern, über ein ODER-Glied verknüpft, die Präsenzerkennung.

Gezieltes Zurücksetzen

Die Schaltbefehle sollen grundsätzlich immer wirksam werden können, auch bei einer ermittelten Nicht-Präsenz. Dies ist ins besonders dann der Fall, wenn der Raum in Zeiten der "geplanten" Abwesenheit betreten wird, aber auch, wenn ein vorhandener Präsenzmelder defekt ist. Das Rücksetzen des oben genannten Aktiv-Merkers erfolgt daher immer über eine fallende Flanke der Präsenzerkennung. Eine weitere Möglichkeit, den Aktiv-Merker zurück zu setzen besteht über den Eingang bRstActv. Dies ist besonders bei der Präsenzerkennung per Abwesenheitsplan sinnvoll, um entweder nachts alle Handbefehle abzulöschen, sollte außerhalb des Planes noch Jalousien gesteuert worden sein oder auch während der Mittagspause, um energieeinsparenden Automatikfunktionen die Möglichkeit zu geben, wieder wirksam zu sein.
Das Rücksetzen erfolgt flankengesteuert, das heißt, ein Dauer-Signal hat keine dauerhafte Rücksetz-Wirkung.

Schnittstelle

VAR_INPUT

bRstActv  : BOOL;
bAbcSched : BOOL;
bPrcDetc  : ST_BA_ObjInfo;
bSwiUp    : ST_BA_ObjInfo;
bSwiDwn   : ST_BA_ObjInfo;

bRstActv: Rücksetzen des Aktiv-Merkers im Positioniertelegramm.

bPrcSched: Anwesenheits-Terminplan.

bPrcDetc: Eingang Präsenzmelder.

bSwiUp: Eingang "Taste Hoch".

bSwiDwn: Eingang "Taste Herunter".

VAR_OUTPUT

 stSunBldSwi : ST_BA_SunBld;

stSunBldAuto: Jalousie-Positioniertelegramm

Parameter

uiPrcDetcOffDly : UINT  := 300;
udiSwiOverTi    : UDINT := 500;

uiPrcDetcOffDly: Abfallverzögerung [s] der Präsenzerkennung über den Eingang stPrcDetc.

udiSwiOverTi : Umschaltverzögerung [ms] Befehle tippen / Selbsthaltung.

Diagramm

Programmbeschreibung

Netzwerk 0001-0002

Instanz | Typ | Aufgabe
tofPrcDly | TOF | Ausschaltverzögerung der Präsenzerkennung
 | OR | Zusammenfassung ausschaltverzögerte Präsenzerkennung oder Präsenzplan → Variable Präsenz bPrc

Netzwerk 0003

Instanz | Typ | Aufgabe
ftPrc | F_TRIG | fallende Flanke Präsenz ...
rtRstMan |  | ... oder steigende Flanke bRstActv Reset Active-Bit gelten als Rücksetzmöglichkeit für den internen Jalousie-Handbaustein, so dass dieser kein gültiges Positioniertelegramm mehr sendet

Netzwerk 0004

Instanz | Typ | Aufgabe
EnSunBldSwi | SR | Freigabe Jalousie-Handbaustein: Tastendruck "hoch" oder "herunter" aktivieren diesen, die Bedingungen aus Netzwerk 5 deaktivieren den Baustein wieder

Netzwerk 0005

Instanz | Typ | Aufgabe
SunBldSwi | FB_BA_SunBldSwi | Jalousie-Handbaustein

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | n/a | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_HtgColContin2Pi_01

Baustein für ein Zweileitersystem mit 2 kontinuierlichen Reglern für Heizen und Kühlen.

Funktionsbeschreibung

Dieser Baustein stellt einen Raumregler für zwei kontinuierlich ansteuerbare Ventile (Heizen/Kühlen) in einem Zweileiternetz dar. Da in einem Zweileiternetz alle Räume der Anlage nur entweder beheizt oder gekühlt werden können, wird die Anwahl von zentraler Stelle für alle Räume gleich über den Eingang bMedium vorgegeben. Ist bMedium FALSE, so wird der Raum-Heizregler angewählt - ist der Eingang TRUE, so ist es der Kühlregler. Diese Anwahl wird intern durch den Baustein FB_BA_FnctSel getätigt. Dieser entscheidet über einen Ist-/Sollwert-Vergleich, ob der jeweils angewählte Regler aktiv ist oder nicht. Bei den beiden Reglern handelt es sich um BACnet Regler vom Typ FB_BACnetLoop1202. Innerhalb des Templates werden diesen Reglern typische Parameter für die BACnet-Settings zugewiesen, auch sonst sind die Regler nur über BACnet parametrierbar. Die Regler-Wirksinne sind zur Sicherheit für beide Regler fest vorgegeben (Kühlregler: direct, Heizregler: reverse) und nicht veränderbar.

Taupunktwächter (Eingang bDewPnt)

Der Taupunktwächter hat die Aufgabe das Kühlen unmittelbar zu verriegeln. Da es sich hierbei um eine Sicherheitsfunktion handelt, ist der betreffende Eingang bDewPnt nach dem Ruhestromprinzip, also invertiert ausgelegt: bDewPnt = FALSE: Kühlregler ist verriegelt.

Bedarfsmitteilung (Ausgang udiReqdMedium)

Um der Anlage mitzuteilen, wie der aktuelle Bedarf an Wärme oder Kühlung ist, wird am Templateausgang, also pro Raum, in Abhängigkeit der Ist- und Solltemperatur eine Bedarfskennung ausgegeben. Diese kann zentral gesammelt und ausgewertet werden.

udiReqdMedium | Medium | Raumtemperatur
1 | kein Medium ist angefordert | lrRmT > SpHtg UND rRTm < SpCol
2 | Heizmedium ist angefordert | lrRmT < SpHtg
3 | Kühlmedium ist angefordert | lrRmT > SpCol

Sollwertwarnung

Der Heiz-Sollwert darf nicht größer oder gleich dem Kühl-Sollwert sein, da damit ein Temperaturbereich entstehen würde, in dem gleichzeitig Heiz- und Kühlbedarf entsteht. Da der intern arbeitende Baustein FB_BA_FnctSel jedoch immer nur eine Freigabe, Heizen oder Kühlen ausgibt, ist der Fall anlagentechnisch unbedenklich. Am Template wird für diesen Fall nur eine Warnmeldung (bWarnSP=TRUE) ausgegeben - der Baustein unterbricht seine Abarbeitung nicht.

Schnittstelle

VAR_INPUT

bMedium : BOOL;
bDewPnt : BOOL;
lrRmT   : LREAL;
lrSpHtg : LREAL;
lrSpCol : LREAL;

bMedium: aktuelle Versorgung des gesamten Zweileiternetzes mit Kühl- oder Heizmittel. Wenn Heizmedium ansteht ist bMedium FALSE.

bDewPnt: Taupunktwächter im Ruhestromprinzip (negative Logik): wenn bDewPnt = FALSE, dann wird der Kühlregler gesperrt.

lrRmT: Raumtemperatur [°C].

lrSpHtg: Heiz-Sollwert.

lrSpCol: Kühl-Sollwert.

VAR_OUTPUT

lrOutHtg     : LREAL;
lrOutCol     : LREAL;
udiReqMedium : UDINT;
bWarnSP      : BOOL;

lrOutHtg: Stellwertausgabe Heizen.

lrOutCol: Stellwertausgabe Kühlen.

udiReqdMedium: Heiz- oder Kühlbedarf aus Vergleich Ist/Sollwert.

bWarnSP: Der eingetragene Sollwert Heizen ist größer als der Sollwert Kühlen.

Parameter

PLT_NUM           : UDINT := 1;
udiChgOvrDly      : UDINT := 120;

PLT_NUM: Anlagennummer.

udiChgOvrDly: Mindest-Umschaltzeit [s] Heiz- Kühlbetrieb.

BACnet-Objekte

CtrlHtg_X : FB_BACnetAV1201;
CtrlHtg_W : FB_BACnetAV1201;
CtrlHtg   : FB_BACnetLoop1202
CtrlHtg_Y : FB_BACnetAV1201;
CtrlCol_X : FB_BACnetAV1201;
CtrlCol_W : FB_BACnetAV1201;
CtrlCol   : FB_BACnetLoop1202
CtrlCol_Y : FB_BACnetAV1201;

CtrlHtg_X: Referenz Istwert Raum-Heizregler.

CtrlHtg_W: Referenz Sollwert Raum-Heizregler.

CtrlHtg: Raum-Heizregler.

CtrlHtg_Y: Referenz Stellwert Raum-Heizregler.

CtrlCol_X: Referenz Istwert Raum-Kühlregler.

CtrlCol_W: Referenz Sollwert Raum-Kühlregler.

CtrlCol: Raum-Kühlregler.

CtrlCol_Y: Referenz Stellwert Raum-Kühlregler.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
FnctSel | FB_BA_FnctSel | Heiz-/Kühlreglerfreigabe

Netzwerk 0002

Instanz | Typ | Aufgabe
CtrlHtg_X | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Istwert

Netzwerk 0003

Instanz | Typ | Aufgabe
CtrlHtg_W | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Sollwert

Netzwerk 0004

Instanz | Typ | Aufgabe
CtrlHtg | FB_BACnetLoop1202 | Raum-Heizregler

Netzwerk 0005

Instanz | Typ | Aufgabe
CtrlHtg_Y | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Stellwert

Netzwerk 0006

Instanz | Typ | Aufgabe
CtrlCol_X | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Istwert

Netzwerk 0007

Instanz | Typ | Aufgabe
CtrlCol_W | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Sollwert

Netzwerk 0008

Instanz | Typ | Aufgabe
CtrlCol | FB_BACnetLoop1202 | Raum-Kühlregler

Netzwerk 0009

Instanz | Typ | Aufgabe
CtrlCol_Y | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Stellwert

Netzwerk 0010

Instanz | Typ | Aufgabe
 | AND | Warnmeldung Sollwert Heizen größer Sollwert Kühlen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_HtgColContin4Pi_01

Baustein für ein Vierleitersystem mit 2 kontinuierlichen Reglern für Heizen und Kühlen.

Funktionsbeschreibung

Dieser Baustein stellt einen Raumregler für zwei kontinuierlich ansteuerbare Ventile (Heizen/Kühlen) in einem Vierleiternetz dar. Im Gegensatz zum Zweileitersystem darf bei einem Vierleiternetz die Regleranwahl für alle Räume nach Bedarf unterschiedlich sein und richtet sich daher nach der Raumtemperatur lrRmT und den eingestellten Sollwerten lrSpHtg für Heizen und lrSpCol für Kühlen. Diese Anwahl wird intern durch den Baustein FB_BA_FnctSel getätigt. Dieser entscheidet über die eingestellten Sollwerte, welcher Regler aktiv ist oder nicht. Bei den beiden Reglern handelt es sich um BACnet Regler vom Typ FB_BACnetLoop1202. Innerhalb des Templates werden diesen Reglern typische Parameter für die BACnet-Settings zugewiesen, auch sonst sind die Regler nur über BACnet parametrierbar. Die Regler-Wirksinne sind zur Sicherheit für beide Regler fest vorgegeben (Kühlregler: direct, Heizregler: reverse) und nicht veränderbar.

Taupunktwächter (Eingang bDewPnt)

Der Taupunktwächter hat die Aufgabe das Kühlen unmittelbar zu verriegeln. Da es sich hierbei um eine Sicherheitsfunktion handelt, ist der betreffende Eingang bDewPnt nach dem Ruhestromprinzip, also invertiert ausgelegt: bDewPnt = FALSE: Kühlregler ist verriegelt.

Bedarfsmitteilung (Ausgang udiReqdMedium)

Um der Anlage mitzuteilen, wie der aktuelle Bedarf an Wärme oder Kühlung ist, wird am Templateausgang, also pro Raum, in Abhängigkeit der Ist- und Solltemperatur eine Bedarfskennung ausgegeben. Diese kann zentral gesammelt und ausgewertet werden.

udiReqdMedium | Medium | Raumtemperatur
1 | kein Medium ist angefordert | lrRmT > SpHtg UND rRTm < SpCol
2 | Heizmedium ist angefordert | lrRmT < SpHtg
3 | Kühlmedium ist angefordert | lrRmT > SpCol

Sollwertwarnung

Der Heiz-Sollwert darf nicht größer oder gleich dem Kühl-Sollwert sein, da damit ein Temperaturbereich entstehen würde, in dem gleichzeitig Heiz- und Kühlbedarf entsteht. Da der intern arbeitende Baustein FB_BA_FnctSel jedoch immer nur eine Freigabe, Heizen oder Kühlen ausgibt, ist der Fall anlagentechnisch unbedenklich. Am Template wird für diesen Fall nur eine Warnmeldung (bWarnSP=TRUE) ausgegeben - der Baustein unterbricht seine Abarbeitung nicht.

Schnittstelle

VAR_INPUT

bMedium : BOOL;
bDewPnt : BOOL;
lrRmT   : LREAL;
lrSpHtg : LREAL;
lrSpCol : LREAL;

bMedium: aktuelle Versorgung des gesamten Vierleiternetzes mit Kühl- oder Heizmittel. Wenn Heizmedium ansteht ist bMedium FALSE.

bDewPnt: Taupunktwächter im Ruhestromprinzip (negative Logik): wenn bDewPnt = FALSE, dann wird der Kühlregler gesperrt.

lrRmT: Raumtemperatur [°C].

lrSpHtg: Heiz-Sollwert.

lrSpCol: Kühl-Sollwert.

VAR_OUTPUT

lrOutHtg     : LREAL;
lrOutCol     : LREAL;
udiReqMedium : UDINT;
bWarnSP      : BOOL;

lrOutHtg: Stellwertausgabe Heizen.

lrOutCol: Stellwertausgabe Kühlen.

udiReqdMedium: Heiz- oder Kühlbedarf aus Vergleich Ist/Sollwert.

bWarnSP: Der eingetragene Sollwert Heizen ist größer als der Sollwert Kühlen.

Parameter

PLT_NUM           : UDINT := 1;
udiChgOvrDly      : UDINT := 120;

PLT_NUM: Anlagennummer.

udiChgOvrDly: Mindest-Umschaltzeit [s] Heiz- Kühlbetrieb.

BACnet-Objekte

CtrlHtg_X : FB_BACnetAV1201;
CtrlHtg_W : FB_BACnetAV1201;
CtrlHtg   : FB_BACnetLoop1202
CtrlHtg_Y : FB_BACnetAV1201;
CtrlCol_X : FB_BACnetAV1201;
CtrlCol_W : FB_BACnetAV1201;
CtrlCol   : FB_BACnetLoop1202
CtrlCol_Y : FB_BACnetAV1201;

CtrlHtg_X: Referenz Istwert Raum-Heizregler.

CtrlHtg_W: Referenz Sollwert Raum-Heizregler.

CtrlHtg: Raum-Heizregler.

CtrlHtg_Y: Referenz Stellwert Raum-Heizregler.

CtrlCol_X: Referenz Istwert Raum-Kühlregler.

CtrlCol_W: Referenz Sollwert Raum-Kühlregler.

CtrlCol: Raum-Kühlregler.

CtrlCol_Y: Referenz Stellwert Raum-Kühlregler.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
FnctSel | FB_BA_FnctSel | Heiz-/Kühlreglerfreigabe

Netzwerk 0002

Instanz | Typ | Aufgabe
CtrlHtg_X | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Istwert

Netzwerk 0003

Instanz | Typ | Aufgabe
CtrlHtg_W | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Sollwert

Netzwerk 0004

Instanz | Typ | Aufgabe
CtrlHtg | FB_BACnetLoop1202 | Raum-Heizregler

Netzwerk 0005

Instanz | Typ | Aufgabe
CtrlHtg_Y | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Stellwert

Netzwerk 0006

Instanz | Typ | Aufgabe
CtrlCol_X | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Istwert

Netzwerk 0007

Instanz | Typ | Aufgabe
CtrlCol_W | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Sollwert

Netzwerk 0008

Instanz | Typ | Aufgabe
CtrlCol | FB_BACnetLoop1202 | Raum-Kühlregler

Netzwerk 0009

Instanz | Typ | Aufgabe
CtrlCol_Y | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Stellwert

Netzwerk 0010

Instanz | Typ | Aufgabe
 | AND | Warnmeldung Sollwert Heizen größer Sollwert Kühlen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_HtgColPWM2Pi_01

Baustein für ein Zweileitersystem mit 2 Pulsweiten-modulierten Reglern für Heizen und Kühlen.

Funktionsbeschreibung

Dieser Baustein stellt einen Raumregler für zwei Pulsweiten-modulierbare Ventile (Heizen/Kühlen) in einem Zweileiternetz dar. Da in einem Zweileiternetz alle Räume der Anlage nur entweder beheizt oder gekühlt werden können, wird die Anwahl von zentraler Stelle für alle Räume gleich über den Eingang bMedium vorgegeben. Ist bMedium FALSE, so wird der Raum-Heizregler angewählt - ist der Eingang TRUE, so ist es der Kühlregler. Diese Anwahl wird intern durch den Baustein FB_BA_FnctSel getätigt. Dieser entscheidet über einen Ist-/Sollwert-Vergleich, ob der jeweils angewählte Regler aktiv ist oder nicht. Bei den beiden Reglern handelt es sich um BACnet Regler vom Typ FB_BACnetLoop1202. Innerhalb des Templates werden diesen Reglern typische Parameter für die BACnet-Settings zugewiesen, auch sonst sind die Regler nur über BACnet parametrierbar. Die Regler-Wirksinne sind zur Sicherheit für beide Regler fest vorgegeben (Kühlregler: direct, Heizregler: reverse) und nicht veränderbar. Die PWM-Module lassen sich über Parameter einstellen, siehe unten.

Taupunktwächter (Eingang bDewPnt)

Der Taupunktwächter hat die Aufgabe das Kühlen unmittelbar zu verriegeln. Da es sich hierbei um eine Sicherheitsfunktion handelt, ist der betreffende Eingang bDewPnt nach dem Ruhestromprinzip, also invertiert ausgelegt: bDewPnt = FALSE: Kühlregler ist verriegelt.

Bedarfsmitteilung (Ausgang udiReqdMedium)

Um der Anlage mitzuteilen, wie der aktuelle Bedarf an Wärme oder Kühlung ist, wird am Templateausgang, also pro Raum, in Abhängigkeit der Ist- und Solltemperatur eine Bedarfskennung ausgegeben. Diese kann zentral gesammelt und ausgewertet werden.

udiReqdMedium | Medium | Raumtemperatur
1 | kein Medium ist angefordert | lrRmT > SpHtg UND rRTm < SpCol
2 | Heizmedium ist angefordert | lrRmT < SpHtg
3 | Kühlmedium ist angefordert | lrRmT > SpCol

Sollwertwarnung

Der Heiz-Sollwert darf nicht größer oder gleich dem Kühl-Sollwert sein, da damit ein Temperaturbereich entstehen würde, in dem gleichzeitig Heiz- und Kühlbedarf entsteht. Da der intern arbeitende Baustein FB_BA_FnctSel jedoch immer nur eine Freigabe, Heizen oder Kühlen ausgibt, ist der Fall anlagentechnisch unbedenklich. Am Template wird für diesen Fall nur eine Warnmeldung (bWarnSP=TRUE) ausgegeben - der Baustein unterbricht seine Abarbeitung nicht.

Schnittstelle

VAR_INPUT

bMedium : BOOL;
bDewPnt : BOOL;
lrRmT   : LREAL;
lrSpHtg : LREAL;
lrSpCol : LREAL;

bMedium: aktuelle Versorgung des gesamten Zweileiternetzes mit Kühl- oder Heizmittel. Wenn Heizmedium ansteht ist bMedium FALSE.

bDewPnt: Taupunktwächter im Ruhestromprinzip (negative Logik): wenn bDewPnt = FALSE, dann wird der Kühlregler gesperrt.

lrRmT: Raumtemperatur [°C].

lrSpHtg: Heiz-Sollwert.

lrSpCol: Kühl-Sollwert.

VAR_OUTPUT

bCmdHtg      : BOOL;
bCmdCol      : BOOL;
udiReqMedium : UDINT;
bWarnSP      : BOOL;

bCmdHtg: Boolescher Ausgang Heizen, zusätzlich zum internen BACnet-Objekt.

bCmdCol: Boolescher Ausgang Kühlen, zusätzlich zum internen BACnet-Objekt.

udiReqdMedium: Heiz- oder Kühlbedarf aus Vergleich Ist/Sollwert.

bWarnSP: Der eingetragene Sollwert Heizen ist größer als der Sollwert Kühlen.

Parameter

PLT_NUM           : UDINT := 1;
udiChgOvrDly      : UDINT := 120;
udiPrd_PWMHtg     : UDINT := 120;
udiMinOnTi_PWMHtg : UDINT := 10;
udiPrd_PWMCol     : UDINT := 120;
udiMinOnTi_PWMCol : UDINT := 10;

PLT_NUM: Anlagennummer.

udiChgOvrDly: Mindest-Umschaltzeit [s] Heiz- Kühlbetrieb.

udiPrd_PWMHtg: PWM-Modul Heizen - Periodenlänge [s].

udiMinOnTi_PWMHtg: PWM-Modul Heizen - Mindest-Puls-Zeit [s].

udiPrd_PWMCol: PWM-Modul Kühlen - Periodenlänge [s].

udiMinOnTi_PWMCol: PWM-Modul Kühlen - Mindest-Puls-Zeit [s].

BACnet-Objekte

CtrlHtg_X : FB_BACnetAV1201;
CtrlHtg_W : FB_BACnetAV1201;
CtrlHtg   : FB_BACnetLoop1202
CtrlHtg_Y : FB_BACnetAV1201;
CtrlCol_X : FB_BACnetAV1201;
CtrlCol_W : FB_BACnetAV1201;
CtrlCol   : FB_BACnetLoop1202
CtrlCol_Y : FB_BACnetAV1201;

CtrlHtg_X: Referenz Istwert Raum-Heizregler.

CtrlHtg_W: Referenz Sollwert Raum-Heizregler.

CtrlHtg: Raum-Heizregler.

CtrlHtg_Y: Referenz Stellwert Raum-Heizregler.

CtrlCol_X: Referenz Istwert Raum-Kühlregler.

CtrlCol_W: Referenz Sollwert Raum-Kühlregler.

CtrlCol: Raum-Kühlregler.

CtrlCol_Y: Referenz Stellwert Raum-Kühlregler.

CmdHtg: Binär-Ausgabeobjekt "Heizen".

CmdCol: Binär-Ausgabeobjekt "Kühlen".

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
FnctSel | FB_BA_FnctSel | Heiz-/Kühlreglerfreigabe

Netzwerk 0002

Instanz | Typ | Aufgabe
CtrlHtg_X | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Istwert

Netzwerk 0003

Instanz | Typ | Aufgabe
CtrlHtg_W | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Sollwert

Netzwerk 0004

Instanz | Typ | Aufgabe
CtrlHtg | FB_BACnetLoop1202 | Raum-Heizregler

Netzwerk 0005

Instanz | Typ | Aufgabe
CtrlHtg_Y | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Stellwert

Netzwerk 0006

Instanz | Typ | Aufgabe
CtrlCol_X | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Istwert

Netzwerk 0007

Instanz | Typ | Aufgabe
CtrlCol_W | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Sollwert

Netzwerk 0008

Instanz | Typ | Aufgabe
CtrlCol | FB_BACnetLoop1202 | Raum-Kühlregler

Netzwerk 0009

Instanz | Typ | Aufgabe
CtrlCol_Y | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Stellwert

Netzwerk 0010

Instanz | Typ | Aufgabe
PWMHtg | FB_BA_PWM | PWM-Wandlung Heizregler

Netzwerk 0011

Instanz | Typ | Aufgabe
PWMCol | FB_BA_PWM | PWM-Wandlung Kühlregler

Netzwerk 0012

Instanz | Typ | Aufgabe
CmdHtg | FB_BACnetBO1201 | BACnet Binär-Ausgabe-Objekt Heizen

Netzwerk 0013

Instanz | Typ | Aufgabe
CmdCol | FB_BACnetBO1201 | BACnet Binär-Ausgabe-Objekt Kühlen

Netzwerk 0014

Instanz | Typ | Aufgabe
 | AND | Warnmeldung Sollwert Heizen größer Sollwert Kühlen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_HtgColPWM4Pi_01

Baustein für ein Vierleitersystem mit 2 Pulsweiten-modulierten Reglern für Heizen und Kühlen.

Funktionsbeschreibung

Dieser Baustein stellt einen Raumregler für zwei Pulsweiten-modulierbare Ventile (Heizen/Kühlen) in einem Vierleiternetz dar. Im Gegensatz zum Zweileitersystem darf bei einem Vierleiternetz die Regleranwahl für alle Räume nach Bedarf unterschiedlich sein und richtet sich daher nach der Raumtemperatur lrRmT und den eingestellten Sollwerten lrSpHtg für Heizen und lrSpCol für Kühlen. Diese Anwahl wird intern durch den Baustein FB_BA_FnctSel getätigt. Dieser entscheidet über die eingestellten Sollwerte, welcher Regler aktiv ist oder nicht. Bei den beiden Reglern handelt es sich um BACnet Regler vom Typ FB_BACnetLoop1202. Innerhalb des Templates werden diesen Reglern typische Parameter für die BACnet-Settings zugewiesen, auch sonst sind die Regler nur über BACnet parametrierbar. Die Regler-Wirksinne sind zur Sicherheit für beide Regler fest vorgegeben (Kühlregler: direct, Heizregler: reverse) und nicht veränderbar. Die PWM-Module lassen sich über Parameter einstellen, siehe unten.

Taupunktwächter (Eingang bDewPnt)

Der Taupunktwächter hat die Aufgabe das Kühlen unmittelbar zu verriegeln. Da es sich hierbei um eine Sicherheitsfunktion handelt, ist der betreffende Eingang bDewPnt nach dem Ruhestromprinzip, also invertiert ausgelegt: bDewPnt = FALSE: Kühlregler ist verriegelt.

Bedarfsmitteilung (Ausgang udiReqdMedium)

Um der Anlage mitzuteilen, wie der aktuelle Bedarf an Wärme oder Kühlung ist, wird am Templateausgang, also pro Raum, in Abhängigkeit der Ist- und Solltemperatur eine Bedarfskennung ausgegeben. Diese kann zentral gesammelt und ausgewertet werden.

udiReqdMedium | Medium | Raumtemperatur
1 | kein Medium ist angefordert | lrRmT > SpHtg UND rRTm < SpCol
2 | Heizmedium ist angefordert | lrRmT < SpHtg
3 | Kühlmedium ist angefordert | lrRmT > SpCol

Sollwertwarnung

Der Heiz-Sollwert darf nicht größer oder gleich dem Kühl-Sollwert sein, da damit ein Temperaturbereich entstehen würde, in dem gleichzeitig Heiz- und Kühlbedarf entsteht. Da der intern arbeitende Baustein FB_BA_FnctSel jedoch immer nur eine Freigabe, Heizen oder Kühlen ausgibt, ist der Fall anlagentechnisch unbedenklich. Am Template wird für diesen Fall nur eine Warnmeldung (bWarnSP=TRUE) ausgegeben - der Baustein unterbricht seine Abarbeitung nicht.

Schnittstelle

VAR_INPUT

bMedium : BOOL;
bDewPnt : BOOL;
lrRmT   : LREAL;
lrSpHtg : LREAL;
lrSpCol : LREAL;

bMedium: aktuelle Versorgung des gesamten Zweileiternetzes mit Kühl- oder Heizmittel. Wenn Heizmedium ansteht ist bMedium FALSE.

bDewPnt: Taupunktwächter im Ruhestromprinzip (negative Logik): wenn bDewPnt = FALSE, dann wird der Kühlregler gesperrt.

lrRmT: Raumtemperatur [°C].

lrSpHtg: Heiz-Sollwert.

lrSpCol: Kühl-Sollwert.

VAR_OUTPUT

bCmdHtg      : BOOL;
bCmdCol      : BOOL;
udiReqMedium : UDINT;
bWarnSP      : BOOL;

bCmdHtg: Boolescher Ausgang Heizen, zusätzlich zum internen BACnet-Objekt.

bCmdCol: Boolescher Ausgang Kühlen, zusätzlich zum internen BACnet-Objekt.

udiReqdMedium: Heiz- oder Kühlbedarf aus Vergleich Ist/Sollwert.

bWarnSP: Der eingetragene Sollwert Heizen ist größer als der Sollwert Kühlen.

Parameter

PLT_NUM           : UDINT := 1;
udiChgOvrDly      : UDINT := 120;
udiPrd_PWMHtg     : UDINT := 120;
udiMinOnTi_PWMHtg : UDINT := 10;
udiPrd_PWMCol     : UDINT := 120;
udiMinOnTi_PWMCol : UDINT := 10;

PLT_NUM: Anlagennummer.

udiChgOvrDly: Mindest-Umschaltzeit [s] Heiz- Kühlbetrieb.

udiPrd_PWMHtg: PWM-Modul Heizen - Periodenlänge [s].

udiMinOnTi_PWMHtg: PWM-Modul Heizen - Mindest-Puls-Zeit [s].

udiPrd_PWMCol: PWM-Modul Kühlen - Periodenlänge [s].

udiMinOnTi_PWMCol: PWM-Modul Kühlen - Mindest-Puls-Zeit [s].

BACnet-Objekte

CtrlHtg_X : FB_BACnetAV1201;
CtrlHtg_W : FB_BACnetAV1201;
CtrlHtg   : FB_BACnetLoop1202
CtrlHtg_Y : FB_BACnetAV1201;
CtrlCol_X : FB_BACnetAV1201;
CtrlCol_W : FB_BACnetAV1201;
CtrlCol   : FB_BACnetLoop1202
CtrlCol_Y : FB_BACnetAV1201;
CmdHtg    : FB_BACnetBO1203;
CmdCol    : FB_BACnetBO1203;

CtrlHtg_X: Referenz Istwert Raum-Heizregler.

CtrlHtg_W: Referenz Sollwert Raum-Heizregler.

CtrlHtg: Raum-Heizregler.

CtrlHtg_Y: Referenz Stellwert Raum-Heizregler.

CtrlCol_X: Referenz Istwert Raum-Kühlregler.

CtrlCol_W: Referenz Sollwert Raum-Kühlregler.

CtrlCol: Raum-Kühlregler.

CtrlCol_Y: Referenz Stellwert Raum-Kühlregler.

CmdHtg: Binär-Ausgabeobjekt "Heizen".

CmdCol: Binär-Ausgabeobjekt "Kühlen".

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
FnctSel | FB_BA_FnctSel | Heiz-/Kühlreglerfreigabe

Netzwerk 0002

Instanz | Typ | Aufgabe
CtrlHtg_X | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Istwert

Netzwerk 0003

Instanz | Typ | Aufgabe
CtrlHtg_W | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Sollwert

Netzwerk 0004

Instanz | Typ | Aufgabe
CtrlHtg | FB_BACnetLoop1202 | Raum-Heizregler

Netzwerk 0005

Instanz | Typ | Aufgabe
CtrlHtg_Y | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Stellwert

Netzwerk 0006

Instanz | Typ | Aufgabe
CtrlCol_X | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Istwert

Netzwerk 0007

Instanz | Typ | Aufgabe
CtrlCol_W | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Sollwert

Netzwerk 0008

Instanz | Typ | Aufgabe
CtrlCol | FB_BACnetLoop1202 | Raum-Kühlregler

Netzwerk 0009

Instanz | Typ | Aufgabe
CtrlCol_Y | FB_BACnetAV1201 | Raum-Kühlregler Referenzierung Stellwert

Netzwerk 0010

Instanz | Typ | Aufgabe
PWMHtg | FB_BA_PWM | PWM-Wandlung Heizregler

Netzwerk 0011

Instanz | Typ | Aufgabe
PWMCol | FB_BA_PWM | PWM-Wandlung Kühlregler

Netzwerk 0012

Instanz | Typ | Aufgabe
CmdHtg | FB_BACnetBO1201 | BACnet Binär-Ausgabe-Objekt Heizen

Netzwerk 0013

Instanz | Typ | Aufgabe
CmdCol | FB_BACnetBO1201 | BACnet Binär-Ausgabe-Objekt Kühlen

Netzwerk 0014

Instanz | Typ | Aufgabe
 | AND | Warnmeldung Sollwert Heizen größer Sollwert Kühlen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_HtgPWM_01

Baustein mit pulsweiten-moduliertem Regler für Heizen.

Funktionsbeschreibung

Dieser Baustein stellt einen Raumregler für ein pulsweiten-modulierbares Ventile zum Heizen dar. Bei dem Regler handelt es sich um einen BACnet Regler vom Typ FB_BACnetLoop1202. Innerhalb des Templates werden diesem Regler typische Parameter für die BACnet-Settings zugewiesen, auch sonst ist der Regler nur über BACnet parametrierbar. Die Regler-Wirksinne ist zur Sicherheit fest vorgegeben (Heizregler: reverse) und nicht veränderbar. Das PWM-Modul lässt sich über Parameter einstellen, siehe unten.

Schnittstelle

VAR_INPUT

lrRmT    : LREAL;
lrSpHtg  : LREAL;

lrRmT: Raumtemperatur [°C].

lrSpHtg: Heiz-Sollwert.

VAR_OUTPUT

bCmdHtg     : BOOL;

bCmdHtg: Boolescher Ausgang Heizen, zusätzlich zum internen BACnet-Objekt.

Parameter

PLT_NUM           : UDINT := 1;
udiChgOvrDly      : UDINT := 120;
udiPrd_PWMHtg     : UDINT := 120;
udiMinOnTi_PWMHtg : UDINT := 10;
udiPrd_PWMCol     : UDINT := 120;
udiMinOnTi_PWMCol : UDINT := 10;

PLT_NUM: Anlagennummer.

udiChgOvrDly: Mindest-Umschaltzeit [s] Heiz- Kühlbetrieb.

udiPrd_PWMHtg: PWM-Modul Heizen - Periodenlänge [s].

udiMinOnTi_PWMHtg: PWM-Modul Heizen - Mindest-Puls-Zeit [s].

udiPrd_PWMCol: PWM-Modul Kühlen - Periodenlänge [s].

udiMinOnTi_PWMCol: PWM-Modul Kühlen - Mindest-Puls-Zeit [s].

BACnet-Objekte

CtrlHtg_X : FB_BACnetAV1201;
CtrlHtg_W : FB_BACnetAV1201;
CtrlHtg   : FB_BACnetLoop1202
CtrlHtg_Y : FB_BACnetAV1201;
CmdHtg    : FB_BACnetBO1201;

CtrlHtg_X: Referenz Istwert Raum-Heizregler.

CtrlHtg_W: Referenz Sollwert Raum-Heizregler.

CtrlHtg: Raum-Heizregler.

CtrlHtg_Y: Referenz Stellwert Raum-Heizregler.

CmdHtg: Binär-Ausgabeobjekt "Heizen".

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
CtrlHtg_X | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Istwert

Netzwerk 0002

Instanz | Typ | Aufgabe
CtrlHtg_W | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Sollwert

Netzwerk 0003

Instanz | Typ | Aufgabe
CtrlHtg | FB_BACnetLoop1202 | Raum-Heizregler

Netzwerk 0004

Instanz | Typ | Aufgabe
CtrlHtg_Y | FB_BACnetAV1201 | Raum-Heizregler Referenzierung Stellwert

Netzwerk 0005

Instanz | Typ | Aufgabe
PWMHtg | FB_BA_PWM | PWM-Wandlung Heizregler

Netzwerk 0006

Instanz | Typ | Aufgabe
CmdHtg | FB_BACnetBO1201 | BACnet Binär-Ausgabe-Objekt Heizen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_SpRmT_01

Ausgabe Raumsollwerte.

Funktionsbeschreibung

Die Funktion der Zonentemperaturberechnung, BAC_RC_SpZoneT_01, stellt für alle zugeordneten Räume die Struktur der Temperatursollwerte "Protection Heating" ... "Economy Cooling" zur Verfügung.
Das Template BAC_RC_SpRmT_01 wählt nun den gültigen Sollwert jeweils für Heizen und Kühlen aus. Dabei werden 3 Fälle nach ihrer Priorität unterschieden unterschieden:

Priorität | Ereignis | Sollwert (Heizen sowie Kühlen)
1 | Fensterkontakt geöffnet (bWdwCon) | Protection
2 | Präsenzerkennung | Comfort
3 | keines der beiden oberen | nach einem Terminplan einstellbar

Über den Eingang lrRmAdjVal soll dem Raumnutzer soll die Möglichkeit gegeben werden, Temperatursollwerte zu beeinflussen. Betroffen davon sind die Comfort-Werte und je nach Anhebung oder Absenkung der Precomfort-Wert Heizen bzw. Kühlen. Dies Anpassung wird intern über den Baustein FB_BA_RmTAdj realisiert.

Präsenzerkennung

Die Raumpräsenz kann über zwei Bedingungen erkannt werden: zum einen über einen Anwesenheits-Eingang bPrcSched, an dem ein Terminplan zur Raum-Belegung angelegt wird, zum anderen durch einen richtigen Präsenzmelder, der an den Eingang bPrcDetc angeschlossen wird. Die Erkennung über den Präsenzmelder ist abschaltverzögert, die Zeit dazu kann über einen internen Parameter eingestellt werden. Beide Bedingungen - Terminplan und ausschaltverzögertes Signal bilden intern über ein ODER-Glied verknüpft die Präsenzerkennung.

Schnittstelle

VAR_INPUT

bWdwCon            : BOOL;
bPrcDetc           : BOOL;
bPrcSched          : BOOL;
udiEnergLvAbcSched : UDINT;
stPrSp             : ST_BA_SpRmT;
lrRmAdjVal         : LREAL;

bWdwCon: Eingang Fensterkontakt - Fenster offen = TRUE.
Grund: Ein geöffnetes Fenster löst die Sollwertanwahl Protection aus. Ist kein Fensterkontakt vorhanden, kann der Eingang unbelegt bleiben.

bPrcDetc: Eingang Präsenzmelder.

bPrcSched: Eingang Anwesenheits-Terminplan.

udiEnergLvAbcSched: Energieniveau-Terminplan bei Abwesenheit.

stPrSp: Struktur Sollwerte PrtcHtg..CmfCol.

lrRmAdjVal: Raumtemperatur-Anpassung.

VAR_OUTPUT

lrPrSpHtg : LREAL;
lrPrSpCol : LREAL;

lrPrSpHtg: Errechneter (aktueller bzw. "present") Sollwert Heizen.

lrPrSpCol: Errechneter (aktueller bzw. "present") Sollwert Kühlen.

Parameter

PLT_NUM : UDINT := 1;

PLT_NUM: Anlagennummer.

BACnet-Objekte

PrSpHtg : FB_BACnetAV1201;
PrSpCol : FB_BACnetAV1201;

PrSpHtg: Anzeigeobjekt errechneter (aktueller bzw. "present") Sollwert Heizen.

PrSpCol: Anzeigeobjekt errechneter (aktueller bzw. "present") Sollwert Kühlen.

Diagramm

Programmbeschreibung

Netzwerk 0001-0002

Instanz | Typ | Aufgabe
tofPrcDly | TOF | Ausschaltverzögerung der optionalen Präsenzerkennung (Eingang bPrcDetc)
 | OR | Zusammenfassung Ausschalt-verzögerte Präsenzerkennung oder Präsenzplan → Variable Präsenz bPrc

Netzwerk 0003

Instanz | Typ | Aufgabe
EnergLvPrioSwi | FB_BA_PrioSwi_UDI04 | Prioritätenauswahl Energieniveau

Netzwerk 0004

Instanz | Typ | Aufgabe
RmTAdj | FB_BA_RmTAdj | manuelle Anpassung Sollwerte

Netzwerk 0005

Instanz | Typ | Aufgabe
SpMuxHtg | FB_BA_MUX_R04 | Multiplexer-Auswahl Sollwert Heizen

Netzwerk 0006

Instanz | Typ | Aufgabe
SpMuxCol | FB_BA_MUX_R04 | Multiplexer-Auswahl Sollwert Kühlen

Netzwerk 0007

Instanz | Typ | Aufgabe
PrSpHtg | FB_BACnetAV1201 | Anzeigeobjekt errechneter Sollwert Heizen

Netzwerk 0008

Instanz | Typ | Aufgabe
PrSpCol | FB_BACnetAV1201 | Anzeigeobjekt errechneter Sollwert Kühlen

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


BAC_RC_SpZoneT_01

Zonenweise Sollwertfestlegung.

Funktionsbeschreibung

Dieses Template berechnet anhand der aktuellen Außentemperatur die gültigen Sollwerte "Protection Heating" ... "Economy Cooling". Die über BACnet Analog-Values einzutragenden Grundsollwerte "Protection Heating" ... "Economy Cooling" werden zum einen von einer Sommer- und Winterkompensation beeinflusst, zum anderen durch eine Sollwertverschiebung. Die Kompensationsparameter sowie die Verschiebungen sind ebenfalls über BACnet Analog-Values einstellbar. Kern der Berechnung bildet der intern verwendete FB_BA_SpRmT.

Schnittstelle

VAR_INPUT

lrOtsT : LREAL;

lrOtsT: Außentemperatur [°C].

VAR_OUTPUT

stPrSp : ST_BA_SpRmT;

stPrSp: Struktur der errechneten (aktuellen bzw. "present") Sollwerte.

Parameter

PLT_NUM  : UDINT := 1;

PLT_NUM: Anlagennummer.

BACnet-Objekte

SumCpsnX1 : FB_BACnetAV1201;
SumCpsnX2 : FB_BACnetAV1201;
SumCpsnY1 : FB_BACnetAV1201;
SumCpsnY2 : FB_BACnetAV1201;
WinCpsnX1 : FB_BACnetAV1201;
WinCpsnX2 : FB_BACnetAV1201;
WinCpsnY1 : FB_BACnetAV1201;
WinCpsnY2 : FB_BACnetAV1201;
PrtcHtg   : FB_BACnetAV1201;
EcoHtg    : FB_BACnetAV1201;
PreCmfHtg : FB_BACnetAV1201;
CmfHtg    : FB_BACnetAV1201;
PrtcCol   : FB_BACnetAV1201;
EcoCol    : FB_BACnetAV1201;
PreCmfCol : FB_BACnetAV1201;
CmfCol    : FB_BACnetAV1201;
ShiftHtg  : FB_BACnetAV1201;
ShiftCol  : FB_BACnetAV1201;

SumCpsnX1: Eingabeobjekt Stützstelle X1 der Sommerkompensation.

SumCpsnX2: Eingabeobjekt Stützstelle X2 der Sommerkompensation.

SumCpsnY1: Eingabeobjekt Stützstelle Y1 der Sommerkompensation.

SumCpsnY2: Eingabeobjekt Stützstelle Y2 der Sommerkompensation.

WinCpsnX1: Eingabeobjekt Stützstelle X1 der Winterkompensation.

WinCpsnX2: Eingabeobjekt Stützstelle X2 der Winterkompensation.

WinCpsnY1: Eingabeobjekt Stützstelle Y1 der Winterkompensation.

WinCpsnY2: Eingabeobjekt Stützstelle Y2 der Winterkompensation.

PrtcHtg: Eingabeobjekt Grundsollwertwert "Protection Heating".

EcoHtg: Eingabeobjekt Grundsollwertwert "Economy Heating".

PreCmfHtg: Eingabeobjekt Grundsollwertwert "Precomfort Heating".

CmfHtg: Eingabeobjekt Grundsollwertwert "Comfort Heating".

PrtcCol: Eingabeobjekt Grundsollwertwert "Protection Cooling".

EcoCol: Eingabeobjekt Grundsollwertwert "Economy Cooling".

PreCmfCol: Eingabeobjekt Grundsollwertwert "Precomfort Cooling".

CmfCol: Eingabeobjekt Grundsollwertwert "Economy Cooling".

ShiftHtg: Eingabeobjekt Sollwertverschiebung Heizen.

ShiftCol: Eingabeobjekt Sollwertverschiebung Kühlen.

Diagramm

Programmbeschreibung

Netzwerk 0001

Instanz | Typ | Aufgabe
SumCpsnChrct | FB_BA_Chrct02 | Geradengleichung Sommerkompensation - Berechnung Kompensation in Abhängigkeit der Außentemperatur.

Netzwerk 0002

Instanz | Typ | Aufgabe
WinCpsnChrct | FB_BA_Chrct02 | Geradengleichung Winterkompensation - Berechnung Kompensation in Abhängigkeit der Außentemperatur.

Netzwerk 0003

Instanz | Typ | Aufgabe
SpRmT | FB_BA_SpRmT | Berechnung der Sollwerte in Abhängigkeit der Sommer- und Winterkompensation und der Sollwertverschiebungen.

Entwicklungsinformationen

Entwicklungsumgebung | BACnet Revision | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | ab Rev. 12 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0

Versionshistorie

Versionsnummer | Bemerkungen
1.0.0.0 | erste Freigabe


TS8040 | TwinCAT Building Automation: PLC Templates

Anhang

In Bearbeitung...


BA PLC Templates erstellen

Ein BA PLC Template besteht aus zwei Komponenten. Einer TwinCAT PLC Control Exportdatei und einer Template Description. Beide Elemente werden in einer ZIP-Datei abgelegt und dem BA Project Builder zur Verfügung gestellt. Das Tool Window Templates listet alle erkannten Templates auf, so dass diese zur Projektierung genutzt werden können.

Merkmale

  • Es werden alle Darstellungsarten der IEC 61131-3 unterstützt (AWL, KOP, ST, FUP, AS und CFC).

  • Der SPS-Programmbaustein darf Eingänge (VAR_INPUT), Ausgänge (VAR_OUTPUT), Ein/Ausgänge (VAR_IN_OUT) und lokale Variablen (VAR) enthalten.

  • Deklarationsbereiche der SPS-Variablen dürfen die Attribute RETAIN, PERSISTENT, CONSTANT und EXTERNAL enthalten.

  • Globale Variablen werden unterstützt (Shared Templates).

  • Es dürfen Verweise auf SPS-Bibliotheken enthalten sein. Diese werden mit in die generierten TwinCAT Projektdateien übernommen.

  • Die Exportdatei enthält genau einen SPS-Programmbaustein. Es darf sich dabei weder um eine Funktion noch um einen Funktionsblock handeln.

  • Definitionen von Strukturen oder Aufzählungen sind nicht erlaubt.

  • BACnet-Objekte werden durch die notwendigen SPS-Kommentare hinter den entsprechenden Funktionsblöcken definiert.


Template Exportdatei erstellen

Der SPS-Baustein wird wie gewohnt mit dem TwinCAT PLC Control entwickelt und getestet. Fügen Sie alle notwendigen Eingänge, Ausgänge und Variablen hinzu. Falls BACnet zum Einsatz kommt, müssen auch die gewünschten SPS-Kommentare für das PLC Automapping hinzugefügt werden. Geben Sie außerdem alle notwendigen Verweise auf die SPS-Bibliotheken mit an.

Als Beispiel soll der folgende SPS-Programmbaustein dienen:

PROGRAM Template
VAR_INPUT
    bVarIn          : BOOL;
END_VAR
VAR_OUTPUT
    iVarOut         : INT;
END_VAR
VAR
    viewDummy       : BOOL;
              (*~
                  (BACnet_StructuredViewPath            : : )
                  (BACnet_StructuredViewPathDescription : : )
               *)
    rVar            : REAL;
    fbBACnet_Device : FB_BACnet_Device;
    fbAI            : FB_BACnetAI1201;
              (*~
                  (BACnet_ObjectName             : MyName : NOLINK)
                  (BACnet_Description            : MyDescription : NOLINK)
                  (BACnet_EventEnable            : to_offnormal;to_fault;to_normal : NOLINK)
                  (BACnet_EventMessageTexts      : Abormal;Fault;Normal : NOLINK)
                  (BACnet_RawIoAnalogSignedValue : : )
                  (BACnet_RawIoStatus            : : )
               *)
END_VAR

Der Programmrumpf ist bei diesem Beispiel ohne Bedeutung und enthält nur ein Semikolon. Folgende Punkte sind beim Erstellen des SPS-Programmbausteins zu beachten:

  • Der Name des SPS-Programmbausteins ist ohne Bedeutung und kann frei gewählt werden. Der Bezeichner, der im Tool Window Templates des BA Project Builders angezeigt wird, wird durch die Template Description (xml-Datei) vorgegeben.
  • Bei der Nutzung von BACnet, sollte eine Variable hinzugefügt werden, die den Kommentar BACNet_StructuredViewPath enthält. Der Name und der Datentyp der Variable ist ohne Bedeutung und kann frei gewählt werden. Das Feld für den Wert (zwischen den beiden Doppelpunkten) wird beim Generieren der TwinCAT Projektdateien durch den BA Project Builder beschrieben. Deshalb kann es bei der Entwicklung des Templates leer bleiben.
  • Die Instanz fbAI repräsentiert ein BACnet-Object. Alle BACnet-Properties, die durch den BA Project Builder änderbar sein sollen, müssen durch entsprechende SPS-Kommentare deklariert werden. Die Standardwerte der BACnet-Properties (das Feld zwischen den beiden Doppelpunkten) wird vom BA Project Builder angezeigt. Der Anwender kann andere Werte für die jeweiligen BACnet-Properties vorgeben, die dann beim Generieren der TwinCAT Projektdateien berücksichtigt werden.

DPAD-Placeholder (AKS-Platzhalter)

Mit Hilfe der DPAD-Placeholder können Templates andere Templates aufrufen, auch dann, wenn es sich nicht um ein Shared Template handelt. Soll ein Template ein anderes Template aufrufen, so werden in der Exportdatei des Templates DPAD-Placeholder definiert. Diese werden bei der Generierung der SPS-Bausteine durch das entsprechende AKS ersetzt. Dadurch kann schon bei der Entwicklung eines Templates festgelegt werden, welche weiteren Templates aufgerufen werden.

Das Template P_CalledTemplate soll von dem Template P_CallerTemplate aufgerufen werden. Hierbei erhält das Template P_CalledTemplate den Namen MyCalledPOU. Somit besteht der Name des SPS-Bausteins, der in dem SPS-Programm aufgerufen wird, aus dem AKS und dem Bezeichner MyCalledPOU.

MyCalledPOU kann hierbei mit Hilfe eines DPAD-Placeholder aufgerufen werden. Der DPAD-Placeholder besteht aus einem beliebigen String umgeben von einem ‚X_‘ und ‚_X‘. Hinter dem DPAD-Placeholder wird der Bezeichner angegeben, den der aufzurufende Baustein im POU Explorer haben muss.

Beispiel:

X_ABC_XMyCalledPOU();

Beim Generieren der TwinCAT Projektdateien wird ‚X_ABC_X‘ durch das AKS des Bausteins ersetzt, in dem sich der DPAD-Placeholder befindet. SPS-Bausteine die aufgerufen werden, müssen sich immer im gleichen Ordner (DPAD-Level) wie die SPS-Bausteine befinden, die die DPAD-Placeholder enthalten. Ausgenommen sind virtuelle Ordner.

Es ist auch möglich auf Elemente wie Eingänge, Ausgänge oder lokale Variablen zuzugreifen.

rVal := X_ABC_XMyCalledPOU.rPrVal;
iRawVal.X_ABC_XMyCalledPOU := iOut;

Anmerkung:

Namen von SPS-Bausteinen dürfen nur mit den Buchstaben A-Z, a-z und dem Unterstrich '_' beginnen. Andere Zeichen oder Zahlen sind nach IEC 61131-3 nicht zulässig. Da das AKS Ziffern enthalten kann, wird bei der Generierung der TwinCAT Projektdateien vor jedem SPS-Baustein der Präfix 'P_' hinzugefügt. Es ist nicht notwendig diesen Präfix bei den DPAD-Placeholdern mit anzugeben.

mehrsprachige BACnet-Properties

Texte bestimmter BACnet-Properties sind für den Bediener direkt sichtbar. Hierzu gehören z.B. die BACnet-Properties Description, EventMessageTexts oder StateText. Aus diesem Grund können die Texte der BACnet-Properties sprachneutral in einem Template angegeben werden. Erst bei der Erzeugung der TwinCAT-Projektdateien wird die gewünschte Sprache ausgewählt.

In dem Verzeichnis TwinCAT-> BA Project Builder-> Dictionaries befinden sich die Dateien, in denen die Texte der Sprachen abgelegt werden. Mit der Installation wird die Datei Beckhoff.Standard.dict ausgeliefert, es können aber weitere dict-Dateien hinzugefügt werden. Die dict-Dateien liegen im XML-Format vor und beinhalten Key/Value-Paare. Der Key wird im Kommentar für die BACnet-Objekte angegeben, gekennzeichnet durch [$ und $]. Bei der Erzeugung der TwinCAT-Projektdateien wird dieser Key durch den entsprechenden Wert aus der dict-Datei ersetzt.

Auszug aus der Datei Beckhoff.Standard.dict:

<Entry Key="Abnormal">
  <Value 	LCID="1031"><![CDATA[Anormal]]></Value>
  <Value	LCID="1033"><![CDATA[Abnormal]]></Value>
</Entry>
<Entry Key="Fault">
  <Value LCID="1031"><![CDATA[Störung]]></Value>
  <Value LCID="1033"><![CDATA[Fault]]></Value>
</Entry>
<Entry Key="Normal">
  <Value LCID="1031"><![CDATA[Normal]]></Value>
  <Value LCID="1033"><![CDATA[Normal]]></Value>
</Entry>

Der Bezeichner im XML-Element Entry ist der Key, der auch im Template angegeben wird. Die Texte, die bei der Generierung den Key ersetzen, befinden sich in den XML-Elementen Value. Das XML-Attribute LCID (Locale ID) legt die Landesprache fest, für die der Text vorgesehen ist.

Eine Auflistung der verfügbaren LCIDs finden Sie unter: http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx.

Die Texte im XML-Element Value müssen als CDATA-Block codiert werden.

Beispiel

Sollen die Meldetexte für ein BACnet-Objekt in mehreren Sprachen zur Verfügung stehen, so werden die Texte durch die entsprechenden Keys ersetzt.

fbAI         : FB_BACnetAI1201;
(*~
    (BACnet_ObjectName        : MyName : NOLINK)
    (BACnet_Description       : MyDescription : NOLINK)
    (BACnet_EventEnable       : to_offnormal;to_fault;to_normal : NOLINK)
    (BACnet_EventMessageTexts : [$Abnormal$];[$Fault$];[$Normal$] : NOLINK)
          *)

Wird im POU Explorer vom BA Project Builder das erste Element markiert, so kann im Tool Window Properties die gewünschte Sprache ausgewählt werden. Die Texte in den BACnet-Objekten werden dadurch in der gewünschten Sprache erzeugt.

Erzeugte TwinCAT Projektdateien bei der Auswahl English (United States):

fbAI             : FB_BACnetAI1201;
(*~
    (BACnet_ObjectName        : MyName : NOLINK)
    (BACnet_Description       : MyDescription : NOLINK)
    (BACnet_EventEnable       : to_offnormal;to_fault;to_normal : NOLINK)
    (BACnet_EventMessageTexts : Abnormal;Fault;Normal : NOLINK)
*)

Erzeugte TwinCAT Projektdateien bei der Auswahl German (Germany):

fbAI             : FB_BACnetAI1201;
(*~
    (BACnet_ObjectName        : MyName : NOLINK)
    (BACnet_Description       : MyDescription : NOLINK)
    (BACnet_EventEnable       : to_offnormal;to_fault;to_normal : NOLINK)
    (BACnet_EventMessageTexts : Anormal;Störung;Normal : NOLINK)
*)

Templates können somit unabhängig von der späteren Sprache entwickelt werden.

Eigene Dictionaries anlegen

Die Datei Beckhoff.Standard.dict enthält die wichtigsten Texte in den Sprachen Deutsch und Englisch. Bei der Entwicklung eigener Templates kann aber die Notwendigkeit bestehen, zusätzliche Texte mehrsprachig zu definieren oder vorhandene Texte zu ändert. Hierzu kann eine eigene dict-Datei angelegt werden. In dieser können vorhandene Texte 'überschrieben' oder neue Sprache mit neuen Texte hinzugefügt werden.

Im folgenden Beispiel wird:

  • die Sprache Finnisch hinzugefügt
  • ein neuer Eintrag für das BACnet-Property Description eingetragen
  • die Texte für den Key Fault verändert

Die neue dict-Datei hat den folgenden Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<Dictionary xmlns:xsdi="http://www.w3.org/2001/XMLSchema-instance"
            xsdi:noNamespaceSchemaLocation="..\XMLSchema\Dictionary.xsd">
   <Entries>
     <Entry Key="Abnormal">
       <Value LCID="1031"><![CDATA[Anormal]]></Value>
       <Value LCID="1033"><![CDATA[Abnormal]]></Value>
       <Value LCID="1035"><![CDATA[Epänormaali]]></Value>
     </Entry>
    <Entry Key="Fault">
       <Value LCID="1031"><![CDATA[schwerwiegende Störung]]></Value>
       <Value LCID="1033"><![CDATA[fatal Fault]]></Value>
       <Value LCID="1035"><![CDATA[Virhe]]></Value>
    </Entry>
     <Entry Key="Normal">
      <Value LCID="1031"><![CDATA[Normal]]></Value>
       <Value LCID="1033"><![CDATA[Normal]]></Value>
       <Value LCID="1035"><![CDATA[Normaali]]></Value>
     </Entry>
    <Entry Key="MyDescription">
       <Value LCID="1031"><![CDATA[meine Beschreibung]]></Value>
       <Value LCID="1033"><![CDATA[my description]]></Value>
       <Value LCID="1035"><![CDATA[Käyttäjän oma kuvaus]]></Value>
     </Entry>
   </Entries>
</Dictionary>

Die Datei kann einen beliebigen Namen erhalten (außer Beckhoff.Standard.dict), muss die Endung dict besitzen und sich im Verzeichnis TwinCAT -> BA Project Builder -> Dictionaries befinden. Der BA Project Builder liest zuerst die Datei Beckhoff.Standard.dict ein. Anschließend alle weiteren dict-Dateien die sich in diesem Verzeichnis befinden. Wird ein Key gefunden, der zuvor schon eingelesen wurde, so wird der Wert für diesen Key überschrieben. Des Weiteren werde alle erkannten Sprachen im BA Project Builder automatisch zur Auswahl angeboten.

Erzeugte TwinCAT Projektdateien bei der Auswahl Finnish:

fbAI             : FB_BACnetAI1201;
(*~
    (BACnet_ObjectName        : MyName : NOLINK)
    (BACnet_Description       : Käyttäjän oma kuvaus : NOLINK)
    (BACnet_EventEnable       : to_offnormal;to_fault;to_normal : NOLINK)
    (BACnet_EventMessageTexts : Epänormaali;Virhe;Normaali : NOLINK)
*)

Kopieren Sie die Datei MyCompany.Standard.dict MyCompany.Standard.zip in das Verzeichnis TwinCAT -> BA Project Builder -> Dictionaries.

Für die xml-Datei steht ein XML Schema (Dictionary.xsd) zur Verfügung, mit der die xml-Datei auf allgemeine Korrektheit überprüft werden kann. Hierzu benötigen Sie einen xml-Editor, der XML Schemata unterstützt (z.B. XML Notepad, Notepad++ oder Visual Studio). Die Datei Dictionary.xsd befindet sich im Verzeichnis TwinCAT -> BA Project Builder -> XMLSchema.

SPS-Programmbaustein exportieren

Exportieren Sie alle notwendigen Elemente aus dem PLC Control in eine Exportdatei. Neben dem SPS-Programmbaustein müssen alle Referenzen auf die SPS-Bibliotheken und bei Bedarf, auch die globalen Variablen (nur bei Shared Templates möglich) exportiert werden.

Geben Sie der Exportdatei den Namen Template.exp.


Template Description erstellen

Neben der SPS-Exportdatei muss eine xml-Datei erstellt werden, welche weitere Informationen zu dem Template enthält. Jede dieser xml-Dateien wird vom BA Project Builder eingelesen und geprüft. Das Tool Window Templates zeigt anschließend alle verfügbaren BA PLC Templates an.

Aufbau der xml-Datei

Grundsätzlicher Aufbau

Die xml-Datei wird als UTF-8 abgespeichert. Das xml-Tag Description ist das Root-Element, dessen xml-Attribute so gesetzt werden müssen, wie in diesem Beispiel:.

<?xml version="1.0" encoding="utf-8"?>
<Description xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\XMLSchema\TemplateDescription.xsd">
  <Info>
    ...
  </Info>
  <Categories>
    ...
  </Categories>
  <Summaries>
    ...
  </Summaries>
  <Documentations>
    ...
  </Documentations>
  <Template>
    ...
  </Template>
</Description>

Zwischen den Root-Element Description müssen die xml-Felder Info, Categories, Summaries, Documentation und Template enthalten sein.

Info

In dem xml-Feld Info können allgemeine Informationen zu dem Template abgelegt werden. Diese haben keinen Einfluss auf das Generieren der TwinCAT-Projektdateien und werden in BA Project Builder nur zur Information angezeigt.

<Info Version="1.0.0.0" ChangeDate="2015-10-23" TwinCATVersion="2.11.0.0">
  <Author><![CDATA[MyName]]></Author>
  <Name><![CDATA[P_MyFirstTemplate]]></Name>
  <Company><![CDATA[MyCompany]]></Company>
</Info>
XML-Attribute / XML-Elemente | Bedeutung
Version | Die Versionsnummer besteht immer aus vier Ziffern. Es sind nur die Zeichen 0 bis 9 erlaubt. Trennzeichen ist immer ein Punkt. Jede Zahl darf maximal 5 Stellen enthalten (0.0.0.0 bis 99999.99999.99999.99999).
ChangeDate | Das Datum muss im Format Jahr-Monat-Tag eingegeben werden. Das Jahr ist immer vierstellig, während der Monat und der Tag immer zweistellig angegeben werden. Das Trennzeichen ist immer das Minuszeichen.
TwinCATVersion | Der Aufbau ist der gleiche wie für das Attribut Version.
Author | Das Feld kann einen beliebigen Bezeichner enthalten und muss als CDATA-Block codiert werden.
Name | Das Feld kann einen beliebigen Bezeichner enthalten und muss als CDATA-Block codiert werden. Dieser Bezeichner wird im Tool Window Templates des BA Project Builders angezeigt.
Company | Das Feld kann einen beliebigen Bezeichner enthalten und muss als CDATA-Block codiert werden. Dieser Bezeichner wird im Tool Window Templates als erstes Element angezeigt. Dadurch werden alle Templates nach den Namen der Hersteller sortiert.

Categorie

Jedes Template kann einer Kategorie zugeordnet werden. Jede Ebene innerhalb einer Kategorie wird durch ein Komma getrennt.

<Categories>
  <Category><![CDATA[Communication,DALI]]></Category>
</Categories>

Der Text muss als CDATA-Block codiert werden.

Im BA Project Builder werden die verfügbaren Templates innerhalb des Tool Window Templates als Baumstruktur dargestellt. Bei dem obigen Beispiel würde das Template unter dem Pfad Communication -> DALI erscheinen.

Summaries

Zu jedem Template kann eine kurze Beschreibung angegeben werden. Diese wird im BA Project Builder an verschiedenen Stellen angezeigt. Die Angaben können mehrsprachig sein, wobei das xml-Attribut LCID die jeweilige Sprache vorgibt. Je nachdem auf welche Sprache ihr Betriebssystem eingestellt ist, wird der entsprechende Text ausgelesen. Eine Auflistung aller Locale IDs (LCID) finden Sie unter: http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx.

<Summaries>
  <Summary LCID="1031"><![CDATA[Mein erstes Template]]></Summary>
  <Summary LCID="1033"><![CDATA[My first template]]></Summary>
</Summaries>

Der Text muss als CDATA-Block codiert werden.

Documentations

Das xml-Feld Documentation ermöglicht das Aufrufen einer Dokumentation. Je nach eingestellter Sprache des Betriebssystems wird über das xml-Attribut LCID der jeweilige Pfad ausgelesen. Somit lässt sich die Dokumentation in verschiedenen Sprachen zur Verfügung stellen. Je nach Dateiendung wird das entsprechende Programm zur Anzeige der Datei aufgerufen. Der Dateipfad kann absolut oder auch relativ angegeben werden.

absoluter Pfad

<Documentations>
  <Documentation LCID="1031" IsExternal="true"><![CDATA[C:\TwinCAT\Infosystem\1031\P_MyFirstTemplate.pdf]]></Documentation>
  <Documentation LCID="1033" IsExternal="true"><![CDATA[C:\TwinCAT\Infosystem\1033\P_MyFirstTemplate.pdf]]></Documentation>
</Documentations>

relativer Pfad

Bei einem relativen Pfad enthält die Variable $(BeckhoffBAProjectBuilder) das Installationsverzeichnis vom BA Project Builder. Somit lassen sich Pfade, relativ vom BA Project Builder, angeben.

<Documentations>
  <Documentation LCID="1031" IsExternal="true"><![CDATA[$(BeckhoffBAProjectBuilder)\Doc\1031\P_MyFirstTemplate.pdf]]></Documentation>
  <Documentation LCID="1033" IsExternal="true"><![CDATA[$(BeckhoffBAProjectBuilder)\Doc\1033\P_MyFirstTemplate.pdf]]></Documentation>
</Documentations>

chm-Dateien

Das Compiled HTML Format (chm) der Firma Microsoft stellt einen Standard für die Anzeige von Hilfedateien da. Das chm-Format basiert auf HTML-Dateien, hat aber gegenüber einer Sammlung von HTML-Dateien einige Vorteile:

  • ein Navigationsbaum erleichtert die Übersicht
  • Volltextsuche ist auf einfache Weise möglich
  • Informationen zu einem Thema (mehrere Seiten oder Grafiken) können zu einer Datei zusammengefasst werden
  • aktuelle Windows Versionen können chm-Dateien ohne Zusatzprogramme anzuzeigen

Das Attribut Keyword definiert die html-Seite, die beim Aufruf der chm-Datei angezeigt werden soll. Fehlt das Attribut, so wird die Startseite der chm-Datei angezeigt.

<Documentations>
  <Documentation LCID="1031" IsExternal="true" Keyword="/HTML/MyTemplates/P_MyFirstTemplate.htm">
    <![CDATA[$(BeckhoffInfoSystem)\1031\MyFirstDocumentation.chm]]>
  </Documentation>
  <Documentation LCID="1033" IsExternal="true" Keyword="/HTML/MyTemplates/P_MyFirstTemplate.htm">
    <![CDATA[$(BeckhoffInfoSystem)\1033\MyFirstDocumentation.chm]]>
  </Documentation>
</Documentations>

Die Variable $(BeckhoffInfoSystem) enthält das Installationsverzeichnis vom Beckhoff Information System.

externe / interne Dokumentation

Die Dokumentation kann sich im Package des Templates befinden oder als separate Datei abgelegt werden. Befindet sich die Datei ausserhalb des Template Package, so muss das Attribut IsExternal mit den Wert true enthalten sein. Fehlt dieses Attribut oder ist der Wert false, so muss sich die Datei mit der Dokumentation innerhalb des Template Package befinden.

Der Text muss als CDATA-Block codiert werden.

Das xml-Feld Documentation ist optional und kann bei Bedarf auch entfallen.

Template

Das xml-Feld Template enthält Unterelemente, die weitere Informationen zu dem SPS-Programmbaustein enthalten. Alle Ein/Ausgänge, lokale SPS-Variablen und BACnet-Objekte des SPS-Programmbausteins, die im BA Project Builder angezeigt werden sollen, müssen hier eingetragen werden.

Ein SPS-Programmbaustein darf mehr Elemente enthalten als hier angegeben werden. Alle Ein-/Ausgänge, lokale SPS-Variablen und BACnet-Objekte die nicht in der xml-Datei eingetragen wurden, werden nicht im BA Project Builder angezeigt und können somit auch nicht editiert werden. Werden in der xml-Datei Elemente eingetragen, die nicht im SPS-Programmbaustein vorhanden sind, so gibt der BA Project Builder eine Fehlermeldung und das Template steht für die Projektierung nicht zur Verfügung.

<Template>
  <Inputs>
    ...
  </Inputs>
  <Outputs>
    ...
  </Outputs>
  <InOutputs>
    ...
  </InOutputs>
  <Parameters>
    ...
  </Parameters>
  <BACnetObjects>
    ...
  </BACnetObjects>
  <Subtemplate>
    ...
  </Subtemplate>
</Template>

Input

Unter dem Bereich Inputs werden alle Eingänge (VAR_INPUT) des SPS-Programmbausteins aufgelistet.

Das xml-Feld Name enthält den Namen der SPS-Variablen.

Unter Summaries kann zu jedem Eingang eine kurze Beschreibung angegeben werden (siehe auch Summaries weiter oben).

<Input>
  <Name><![CDATA[bVarIn]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung bVarIn Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Summary bVarIn English]]></Summary>
  </Summaries>
</Input>

Die Texte müssen als CDATA-Block codiert werden.

Output

Unter dem Bereich Outputs werden alle Ausgänge (VAR_OUTPUT) des SPS-Programmbausteins aufgelistet.

Das xml-Feld Name enthält den Namen der SPS-Variablen.

Unter Summaries kann zu jedem Ausgang eine kurze Beschreibung angegeben werden (siehe auch Summaries weiter oben).

<Output>
  <Name><![CDATA[iVarOut]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung iVarOut Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Summary iVarOut English]]></Summary>
  </Summaries>
</Output>

Die Texte müssen als CDATA-Block codiert werden.

InOutput

Unter dem Bereich InOutputs werden alle Ein-/Ausgänge (VAR_IN_OUT) des SPS-Programmbausteins aufgelistet.

Das xml-Feld Name enthält den Namen der SPS-Variablen.

Unter Summaries kann zu jedem Ein-/Ausgang eine kurze Beschreibung angegeben werden (siehe auch Summaries weiter oben).

<InOutput>
  <Name><![CDATA[wVarInOut]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung wVarInOut Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Summary wVarInOut English]]></Summary>
  </Summaries>
</InOutput>

Die Texte müssen als CDATA-Block codiert werden.

Parameter

Unter dem Bereich Parameters werden alle lokalen Variablen (VAR) des SPS-Programmbausteins aufgelistet, die über den BA Project Builder angezeigt und somit auch editierbar sein sollen. Hiermit ist der Initialisierungswert der SPS-Variablendeklaration gemeint.

Das xml-Feld Name enthält den Namen der SPS-Variablen.

Unter Summaries kann zu jedem Parameter eine kurze Beschreibung angegeben werden (siehe auch Summaries weiter oben).

<Parameter>
  <Name><![CDATA[rVar]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung rVar Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Summary rVar English]]></Summary>
  </Summaries>
</Parameter>

Die Texte müssen als CDATA-Block codiert werden.

Die Möglichkeit einen Parameter im BA Project Builder zu editieren, kann durch sogenannte Constraints eingeschränkt werden. Hierzu wird unterhalb des xml-Feld Summaries das xml-Feld Constraint eingefügt. Dieses xml-Feld ist optional, wird es nicht angegeben, so kann der Wert entsprechend seines Datentyps, frei editiert werden. Grundsätzlich sind nur Standarddatentypen wie BOOL, INT, STRING, usw. editierbar. Strukturen können im BA Project Builder nicht editiert werden.

Typ Beschreibung Beispiel
Range

Der Wertebereich kann bei der Eingabe begrenzt werden.

<Parameter>
  <Name><![CDATA[iOnDelay]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Description English]]></Summary>
  </Summaries>
  <Constraint xsi:type="RangeConstraintType" Min="-10" Max="60" />
</Parameter>
Readonly

Der Parameter kann im BA Project Builder nicht verändert werden.

<Parameter>
  <Name><![CDATA[iOnDelayMax]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Description English]]></Summary>
  </Summaries>
  <Constraint xsi:type="ReadonlyConstraintType" Readonly="true" />
</Parameter>
Items

Der Parameter enthält eine Auflistung von Werten. Im BA Project Builder kann aus der Liste der möglichen Werte einer dieser Werte ausgewählt werden.

Zu jedem Element (xml-Feld Item) wird ein Wert und eine Beschreibung angegeben. Der Anwender bekommt im BA Project Builder die Auflistung der Beschreibungen angezeigt, während der Initialisierungswert der SPS-Variablen als Zahl generiert wird.

<Parameter>
  <Name><![CDATA[iOnDelayType]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Description English]]></Summary>
  </Summaries>
  <Constraint xsi:type="ItemsConstraintType">
    <Items>
      <Item Value="0">
        <Summaries>
          <Summary LCID="1031"><![CDATA[Type 0]]></Summary>
          <Summary LCID="1033"><![CDATA[Type 0]]></Summary>
        </Summaries>
      </Item>
      <Item Value="5">
        <Summaries>
          <Summary LCID="1031"><![CDATA[Type 5]]></Summary>
          <Summary LCID="1033"><![CDATA[Type 5]]></Summary>
        </Summaries>
      </Item>
      <Item Value="10">
        <Summaries>
          <Summary LCID="1031"><![CDATA[Type 10]]></Summary>
          <Summary LCID="1033"><![CDATA[Type 10]]></Summary>
        </Summaries>
      </Item>
      <Item Value="15">
        <Summaries>
          <Summary LCID="1031"><![CDATA[Type 15]]></Summary>
          <Summary LCID="1033"><![CDATA[Type 15]]></Summary>
        </Summaries>
      </Item>
      <Item Value="95">
        <Summaries>
          <Summary LCID="1031"><![CDATA[Type 95]]></Summary>
          <Summary LCID="1033"><![CDATA[Type 95]]></Summary>
        </Summaries>
      </Item>
    </Items>
  </Constraint>
</Parameter>

BACnetObject

Unter dem Bereich BACnetObjects werden alle Variablen und Funktionsblock-Instanzen aufgelistet, die ein BACnet-Objekt repräsentieren. Dabei werden die BACnet-Objekte durch Kommentare hinter der SPS-Variable oder hinter der Funktionsblock-Instanz beschrieben. Der Aufbau der Kommentare ist in der Dokumentation des Supplement TwinCAT BACnet/IP (TS8020) beschrieben.

Das xml-Attribut Type enthält die Angabe des BACnet-Objekttyps und muss immer groß geschrieben werden.

Abkürzung | BACnet-Objekttyp
AI | Analog Input Object
AO | Analog Output Object
AV | Analog Value Object
BI | Binary Input Object
BO | Binary Output Object
BV | Binary Value Object
MI | Multi State Input Object
MO | Multi State Output Object
MV | Multi State Value Object
CAL | Calendar Object
CMD | Command Object
DEV | Device Object
EE | Event Enrollment Object
FILE | File Object
GROUP | Group Object
LOOP | Loop Object
NC | Notification Class
PROG | Program Object
SCHED | Scheduler Object
AVG | Averaging Object
TLOG | Trend Log Object
ACC | Accumulator Object
PC | Pulse Converter Object
VIEW | Structured View Object

Das xml-Feld Name enthält den Namen der SPS-Variable oder den Namen der Funktionsblock-Instanz welche das BACnet-Objekt repräsentiert.

Unter Summaries kann zu dem BACnet-Objekt eine kurze Beschreibung angegeben werden (siehe auch Summaries weiter oben).

 <BACnetObject Type="VIEW" Visibility="false">
  <Name><![CDATA[viewDummy]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung viewDummy Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Description viewDummy English]]></Summary>
  </Summaries>
  <Properties>
    <Property>
      <Name><![CDATA[BACnet_StructuredViewPath]]></Name>
    </Property>
    <Property>
      <Name><![CDATA[BACnet_StructuredViewPathDescription]]></Name>
    </Property>
  </Properties>
</BACnetObject>
<BACnetObject Type="AI">
  <Name><![CDATA[fbAI]]></Name>
  <Summaries>
    <Summary LCID="1031"><![CDATA[Beschreibung fbAI Deutsch]]></Summary>
    <Summary LCID="1033"><![CDATA[Description fbAI English]]></Summary>
  </Summaries>
  <Properties>
    <Property>
      <Name><![CDATA[BACnet_ObjectName]]></Name>
      <Summaries>
        <Summary LCID="1031"><![CDATA[Beschreibung BACnet_ObjectName Deutsch]]></Summary>
        <Summary LCID="1033"><![CDATA[Description BACnet_ObjectName English]]></Summary>
      </Summaries>
    </Property>
    <Property Visibility="false">
      <Name><![CDATA[BACnet_Description]]></Name>
      <Summaries>
        <Summary LCID="1031"><![CDATA[Beschreibung BACnet_Description Deutsch]]></Summary>
        <Summary LCID="1033"><![CDATA[Description BACnet_Description English]]></Summary>
      </Summaries>
    </Property>
    <Property>
      <Name><![CDATA[BACnet_EventEnable]]></Name>
      <Summaries>
        <Summary LCID="1031"><![CDATA[Beschreibung BACnet_EventEnable Deutsch]]></Summary>
        <Summary LCID="1033"><![CDATA[Description BACnet_EventEnable English]]></Summary>
      </Summaries>
    </Property>
    <Property>
      <Name><![CDATA[BACnet_EventMessageTexts]]></Name>
      <Summaries>
        <Summary LCID="1031"><![CDATA[Beschreibung BACnet_EventMessageTexts Deutsch]]></Summary>
        <Summary LCID="1033"><![CDATA[Description BACnet_EventMessageTexts English]]></Summary>
      </Summaries>
    </Property>
    <Property>
      <Name><![CDATA[BACnet_RawIoAnalogSignedValue]]></Name>
      <Summaries>
        <Summary LCID="1031"><![CDATA[Beschreibung BACnet_RawIoAnalogSignedValue Deutsch]]></Summary>
        <Summary LCID="1033"><![CDATA[Description BACnet_RawIoAnalogSignedValue English]]></Summary>
      </Summaries>
    </Property>
    <Property>
      <Name><![CDATA[BACnet_RawIoStatus]]></Name>
      <Summaries>
        <Summary LCID="1031"><![CDATA[Beschreibung BACnet_RawIoStatus Deutsch]]></Summary>
        <Summary LCID="1033"><![CDATA[Description BACnet_RawIoStatus English]]></Summary>
      </Summaries>
    </Property>
  </Properties>
</BACnetObject>

Alle BACnet-Properties eines BACnet-Objektes, die über den BA Project Builder editierbar sein sollen, müssen unterhalb des xml-Feld Properties eingetragen werden. Hiermit ist der Initialisierungswert des BACnet-Properties gemeint, der innerhalb des SPS-Kommentars angegeben wird. Es dürfen nur BACnet-Properties eingetragen werden, die auch im SPS-Programmbaustein durch die Kommentare deklariert wurden.

Alle RawIo-Values eines BACnet-Objektes, die über den BA Project Builder editierbar sein sollen, müssen ebenfalls unterhalb des xml-Feld Properties eingetragen werden.

Das xml-Feld Name enthält den Namen der BACnet-Properties oder der RawIo-Values, so wie sie auch im SPS-Kommentar eingetragen wurde.

Unter Summaries kann zu dem BACnet-Property oder zu dem RawIo-Value eine kurze Beschreibung angegeben werden (siehe auch Summaries weiter oben). Die Abgabe ist optional und kann auch entfallen.

Die Texte müssen als CDATA-Block codiert werden.

Nur BACnet-Objekte, BACnet-Properties oder RawIo-Values die in der xml-Datei eingetragen werden, können über den BA Project Builder editiert werden. Dieses betrifft nicht nur die Dialoge, sondern auch AddIns, die auf die BACnet-Objekte zugreifen. Sind die BACnet-Objekte und BACnet-Properties nicht in der xml-Datei vorhanden, sind diese für die AddIns nicht erreichbar.

Sollen bestimmte BACnet-Objekte, BACnet-Properties oder RawIo-Values im BA Project Builder nicht sichtbar sein, so können diese durch das xml-Attribute Visibility ausgeblendet werden. AddIns können aber weiterhin auf diese Zugreifen.

Subtemplates

In der Template Description können weitere Templates, sogenannte Subtemplates, angegeben werden. Subtemplates werden automatisch mit dem Template zur Solution hinzugefügt.

Das xml-Feld Template enthält den Namen des Templates, während PouName den Bezeichner enthält, in dem das Template umbenannt wird, sobald es dem Projekt automatisch hinzugefügt wurde.

<Subtemplates>
  <Subtemplate>
    <PouName><![CDATA[OuADmp2P]]></PouName>
    <Template><![CDATA[BAC_AC_OuADmp2P]]></Template>
  </Subtemplate>
  <Subtemplate>
    <PouName><![CDATA[FiDmpTh]]></PouName>
    <Template><![CDATA[BAC_AC_FiDmpTh]]></Template>
  </Subtemplate>
  <Subtemplate>
    <PouName><![CDATA[ExhADmp2P]]></PouName>
    <Template><![CDATA[BAC_AC_ExhADmp2P]]></Template>
  </Subtemplate>
</Subtemplates>

Die Texte müssen als CDATA-Block codiert werden.

Alle Templates werden zu dem gleichen DPAD-Level hinzugefügt. Durch den Einsatz von DPAD-Placholdern können diese automatisch hinzugefügten SPS-Bausteine auch aufgerufen werden. Ganze Anlagenbereiche, die aus mehreren SPS-Bausteinen bestehen, können somit einem Projekt eingefügt werden.

Shared Templates

Shared Templates stellen eine besondere Variante von Templates da. Beim Generieren der TwinCAT Projektdateien wird nicht das Anlagenkennzeichnungssystem zur Bildung des Bausteinnamens genutzt. Allein der Bezeichner im POU Explorer dient zur Benennung des SPS-Bausteins. Auch kann dieser Bezeichner im BA Project Builder nicht geändert werden. Dadurch hat ein Shared Template im SPS-Programm immer einen bekannten und fest definierten Bausteinnamen und kann somit von anderen Templates aufgerufen werden. Shared Templates sind gut geeignet, globale Funktionen eines SPS-Programms zu übernehmen, z. B. Störmeldeverarbeitung.

Des Weiteren können Shared Templates globale SPS-Variablen enthalten.

In der xml-Datei müssen Shared Templates gekennzeichnet werden. Dazu wird hinter dem xml-Feld Template das xml-Attribute Shared angegeben. Des Weiteren können Shared Templates globale Variablen enthalten, die mit in die TwinCAT Projektdateien generiert werden. Diese globalen Variablen werden ebenfalls in der xml-Datei angegeben. Hierbei gelten die gleichen xml-Felder wie bei den Parametern.

<Template Shared="true">
  <Inputs>
    ...
  </Inputs>
  <Outputs>
    ...
  </Outputs>
  <InOutputs>
    ...
  </InOutputs>
  <Parameters>
    ...
  </Parameters>
  <GlobalParameters>
    ...
  </GlobalParameters>
  <BACnetObjects>
    ...
  </BACnetObjects>
  <GlobalBACnetObjects>
    ...
  </GlobalBACnetObjects>
  <Subtemplates>
    ...
  </Subtemplates>
</Template>

Prüfen der xml-Datei

Für die xml-Datei steht ein XML Schema (TemplateDescription.xsd) zur Verfügung, mit der die xml-Datei auf allgemeine Korrektheit überprüft werden kann. Der BA Project Builder nutzt diese xsd-Datei ebenfalls, um bei dem Ladevorgang die xml-Dateien zu validieren. Hierzu benötigen sie einen xml-Editor, der XML Schemas unterstützt (z.B. XML Notepad, Notepad++ oder Visual Studio). Die Datei TemplateDescription.xsd befindet sich im Verzeichnis TwinCAT -> BA Project Builder -> XMLSchema.


Template freigeben

TS8040 | TwinCAT Building Automation: PLC Templates

Template Package erstellen

Nach dem die SPS-Exportdatei und die xml-Datei erstellt wurden, müssen diese in eine Package abgelegt werden. Dabei ist zu beachten:

  • Die SPS-Exportdatei muss den Namen Template.exp haben und muss mit ANSI-Codierung abgespeichert werden.
  • Die xml-Datei muss den Namen Description.xml haben und muss mit UTF-8-Codierung abgespeichert werden.
  • Das Package muss der Open Packaging Convention (OPC) entsprechen.
  • Das Package wird im zip-Format gespeichert und hat die Endung zip.
  • Der Name der zip-Datei kann freigewählt werden und ist unabhängig vom Namen des Templates.

Das Open Packaging Convention definiert eine strukturierte Methode zum Speichern von Anwendungsdaten und zugehörigen Ressourcen in einer standardmäßigen zip-Datei. Viele aktuelle Standardanwendungen, wie z.B. Microsoft Office oder Open Office, nutzen ebenfalls diesen international genormten Standard. Dieses können sie leicht überprüfen, in dem sie die Dateiendung einer Officedatei (*.docx oder *.xlsx) in zip umbennen. Dieses zip-Archive lässt sich ohne Probleme öffnen und enthält diverse Dateien. Immer enthalten ist die Datei [Content_Types].xml. Diese Datei muss vorhanden sein und definiert welche Dateiendungen welche Art von Daten enthält. Diese Angaben sind notwendig, damit beim Öffnen der einzelnen Dateien das Format bekannt ist.

Erstellen sie die Datei [Content_Types].xml mit den folgenden Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
  <Default Extension="xml" ContentType="text/xml" />
  <Default Extension="exp" ContentType="text/plain" />
</Types>

Packen sie alle drei Dateien in ein zip-Archiv. Zur besseren Übersicht und um Namenskonflikte zu vermeiden, sollte der Name der zip-Datei den Firmennamen und den Namen des Templates enthalten, getrennt durch einen Punkt. Für unser Beispiel wäre dieses der Name MyCompany.P_MyFirstTemplate.zip. Kopieren sie die Datei in das Verzeichnis TwinCAT -> BA Project Builder -> Templates. Das Template sollte nun im Tool Window Templates aufgelistet werden:


Einleitung BA Project Builder"

TS8040 | TwinCAT Building Automation: Project Builder

Einleitung

Grundlage für eine wartbare Anlage ist die durchgängige Strukturierung der TwinCAT-Projektdateien. Zentraler Gedanke hierbei ist das Anlagenkennzeichnungssystem (AKS), das jedem Datenpunkt und jedem Programmbaustein einen Namen nach fest vorgegebenen Regeln zuordnet.

Der TwinCAT BA Project Builder generiert automatisch für alle Beckhoff-Controller die Projektdateien für TwinCAT PLC Control und TwinCAT System Manager. Er kann durch benutzerspezifische BA PLC Templates erweitert werden und bietet somit volle Flexibilität beim Engineering. AddIns bieten die Möglichkeit der Integration von Planungsunterlagen, wie z. B. Excel-Listen sowie die Anbindung an Visualisierungssysteme.


Erste Schritte

Im Folgenden werden die notwendigen Schritte aufgezeigt, die notwendig sind um eine Solution mit dem TwinCAT BA Project Builder zu erstellen.

Projekt erstellen

Rufen Sie über das Menü Solution -> New den Dialog zum Erstellen einer neuen Solution auf.

In diesem Dialog können Sie den Namen der Solution und den Pfad, in der diese abgelegt werden soll, angeben. Des Weiteren muss das Anlagenkennzeichnungssystem (engl. Data Point Addressing Description) ausgewählt werden, welches als Grundlage für die Projektierung der Solution genutzt wird. Der BA Project Builder bietet die Möglichkeit ein leeres Anlagenkennzeichnungssystem (AKS) auszuwählen und das AKS selber festzulegen.

Templates hinzufügen

Der POU Explorer definiert die softwareseitige Anlagenstruktur. Ordner im POU Explorer legen die einzelnen Ebenen (DPAD Level) fest. Die möglichen Bezeichner (DPAD Key) einer Ebene werden durch das AKS vorgeben. Fügen Sie mit Hilfe des Kontextmenüs dem POU Explorer einen neuen Ordner (DPAD Level) hinzu. Über das Tool Window Properties kann der gewünschte DPAD Key ausgewählt werden.

Öffnen Sie das Tool Window Templates und ziehen Sie per Drag & Drop die Templates BAC_Dvc und BAC_AI_P auf den Ordner im POU Explorer.

Durch einen Doppelklick auf eines der beiden Templates öffnet sich ein Dialog, über den weitere Parameter oder die BACnet-Properties editiert werden können.

Hardware hinzufügen

Sämtliche Controller, deren Geräte und Klemmen werden im Hardware Explorer zusammengestellt. Ziehen Sie aus dem Tool Window Devices den Controller CX50x0 in den Hardware Explorer. Anschließend fügen Sie die Box BACnet Server hinzu. Unterhalb von Device 1 befindet sich der Terminal Coupler Box 1. Jetzt ziehen Sie aus dem Tool Window Terminals die Klemmen KL1104 und KL3021 zur Box 1. Der Hardware Explorer sollte anschließend wie folgt aussehen:

TwinCAT Projektdateien erzeugen

Wurden alle Templates hinzugefügt, die Parameter und BACnet-Properties wie gewünscht eingestellt und mit der Hardware verknüpft, so können die TwinCAT Projektdateien generiert werden. Rufen Sie das Menü Action -> Build Project Files auf.

Wählen Sie die Controller aus, für die Sie die TwinCAT Projektdateien erzeugen wollen.

Die Spalte Build Type gibt an, in welchen Projektdateien angelegt werden. Dieses hat erheblichen Einfluss auf die Dauer der Generierung.

Nach dem Starten der Generierung werden im Tool Window Message diverse Statusmeldungen ausgegeben.

Die Meldungen geben darüber Auskunft, ob alle Projektdateien erfolgreich erzeugt wurden oder ob Fehler aufgetreten sind.

In dem Ordner, in dem auch die Solution gespeichert wurde, wird für jeden Controller ein Verzeichnis angelegt. Dieses Verzeichnis hat den gleichen Namen wie der Controller im BA Project Builder und besitzt das Unterverzeichnis TwinCAT. Dort finden sie die generierten TwinCAT Projektdateien.


Hauptfenster

Der BA Project Builder teilt sich in mehrere Bereiche und Fenster auf.

Menü

Über das Menü können die einzelnen Aktionen und Befehle ausgeführt werden. Jeder Menüpunkt kann auch über die Tastatur erreicht werden.

Nach dem Drücken der Alt-Taste ist bei jedem Menüpunkt ein Buchstabe unterstrichen.

Drücken Sie jetzt den unterstrichenden Buchstaben auf der Tastatur.

In dem Menü sind wiederum Buchstaben unterstrichen, mit dem Sie den Befehl ausführen können.

Um den Befehl Close im Menü Solution auszuführen, müssen Sie die Tasten <Alt> dann 's' und 'c' einzeln drücken.

Einige wichtige Menüpunkte sind auch über Shortcuts direkt erreichbar. Der entsprechende Shortcut, wenn verfügbar, steht im Menü hinter den jeweiligen Befehlen.

Um den Befehl Save per Shortcut aufzurufen, müssen Sie die Taste <Ctrl> gedrückt halten und dann die Taste 's' gleichzeitig drücken.

Toobar

Wichtige Befehle sind über die Toolbar direkt erreichbar.

Kontextmenüs

Einige Elemente in den Tool Windows bieten Kontextmenüs an. Über diese lassen sich bestimmte Aktionen, wie z.B. Hinzufügen oder Löschen, direkt ausführen.

Detail View

In der Mitte des BA Project Builders befindet sich der Detail View. Durch einen Doppelklick auf bestimmte Elemente in den Tool Windows, werden in diesem Bereich weitere Dialoge geöffnet.

Tool Windows

Die Tool Windows gruppieren sich um den Detail View. Ein Tool Window ist ein eigenständiges Fenster, welches frei verschoben oder auch ganz ausgeblendet werden kann. Neben der Bedienung mit der Maus, bieten auch die Menüs View und Window entsprechende Befehle an.

Position anpassen

Die Tool Windows lassen sich frei in ihrer Größe und Position verschieben.

Klicken Sie hierzu mit der linken Maustaste auf den oberen Bereich eines Tool Windows. Falls mehrere Tool Windows in einem Bereich übereinander liegen, müssen Sie den entsprechenden Tab anklicken.

Halten Sie die linke Maustaste gedrückt und ziehen sie das Fenster an die gewünschte Stelle. Zur besseren Orientierung wird das Tool Window als blaues Rechteck dargestellt. Auch werden kleine Icons eingeblendet, die mögliche Positionen vorgeben.

Sobald Sie das Tool Window auf eines dieser Icons ziehen, wird es an die entsprechende Stelle angedockt. Lassen Sie die linke Maustaste los, wenn die gewünschte Position erreicht wurde.

Die Fenster können auch außerhalb des BA Project Builder platziert werden, was bei Arbeitsplätzen mit mehreren Bildschirmen sehr hilfreich sein kann.

Auto Hide

Jedes Tool Window besitzt eine Auto Hide Funktion. Diese wird über ein kleines Symbol im oberen Bereich des Tool Windows ein- oder ausgeschaltet.

Ist diese eingeschaltet, so verkleinert sich das Tool Window an den Rand des BA Project Builder. Fährt man mit der Maus über ein ausgeblendetes Tool Window, so wird dieses wieder eingeblendet.

Verlässt die Maus das Tool Window, so wird dieses automatisch wieder an den Rand verkleinert. Der Befehl Window -> Auto Hide All verkleinert alle Tool Windows gleichzeitig.

Ein Tool Window kann durch das X im oberen Bereich geschlossen werden. Über den Menüpunkt View können geschlossene Tool Windows wieder geöffnet werden. Alle Tool Windows lassen sich durch den Befehl Window -> Close All gleichzeitig schließen.

Der Befehl Window -> Reset Window Layout setzt alle Fenster wieder auf ihre Standard Positionen zurück.

Drag & Drop

Bestimmte Elemente lassen sich per Drap & Drop von einem Tool Window in ein anderes kopieren. Auch innerhalb eines Tool Windows wird Drag & Drop z.B. für das Ändern der Position genutzt.

Gehen Sie mit der Maus auf das gewünschte Element und halten sie die linke Maustaste gedrückt. Ziehen Sie jetzt bei gedrückter Maustaste das Element auf die gewünschte Position. Das Icon unterhalb des Mauszeigers gibt darüber Auskunft, ob es an der aktuellen Stelle abgelegt werden kann.

Befindet sich unterhalb des Mauszeigers ein grüner Harken, so kann das Element an dieser Position abgelegt werden.

Ist die Position ungültig, so wird dieses mit einem roten Kreuz dargestellt.

Wenn Sie vor dem Loslassen der linken Maustaste, die Shift-Taste gedrückt halten, können Sie mehrere Elemente gleichzeitig einfügen.

Geben Sie in dem Dialog die Anzahl der Elemente an, die sie hinzufügen wollen.

In einigen Tool Windows kann durch Drag & Drop die Position der Elemente verändert werden.

Ist die Position gültig, markiert eine rote Linie die Position, an die das Element verschoben wird.

POU Explorer

Der POU Explorer strukturiert die einzelnen Templates gemäß dem Analgenkennzeichnungssystem (AKS). Jede Ordner-Ebene repräsentiert einen bestimmten Bereich des AKS.

Die Templates werden aus dem Tool Window Templates per Drag & Drop auf den gewünschten Ordner gezogen.

Aus der Position innerhalb des POU Explorers wird beim Erzeugen der TwinCAT Projektdateien der vollstände Name des SPS-Bausteines abgeleitet.

Ein Doppelklick auf ein Template öffnet im Detail View einen weiteren Dialog. Über diesen Dialog können zusätzliche Parameter, wie z.B. BACnet Properties, editiert werden.

Zu jedem markierten Element im POU Explorer werden im Tool Window Properties weitere Informationen angezeigt.

Hardware Explorer

Im Hardware Explorer wird die verwendete Hardware eingetragen. Diese wird per Drag & Drop aus den Tool Windows Devices und Terminals hinzugefügt.

Auch hier öffnet ein Doppelklick im Detail View weitere Dialoge. Zu jedem selektierten Element werden im Tool Window Properties zusätzliche Informationen angezeigt.

Templates

Alle Templates, die dem POU Explorer per Drag & Drop hinzugefügt werden können, werden in diesem Tool Window angezeigt.

Über das Suchfeld im oberen Bereich kann durch Eingabe eines Namens die Anzeige im Tool Window gefiltert werden.

Das Tool Window Properties zeigt weitere Informationen zu jedem markierten Element an.

Devices

Die Elemente, die dem Hardware Explorer per Drag & Drop hinzugefügt werden können, werden im Tool Window Devices angezeigt.

Über das Suchfeld im oberen Bereich kann durch die Eingabe eines Namens die Anzeige im Tool Window gefiltert werden.

Das Tool Window Properties zeigt weitere Informationen zu jedem markierten Element an.

Terminals

Alle Klemmen, die per Drag & Drop den Hardware Explorer hinzugefügt werden können, befinden sich in dem Tool Window Terminals.

Um die Auswahl der Klemme zu beschleunigen, werden nur die meist benutzten Klemmen angezeigt. Durch die Schaltfläche im oberen Bereich wird der Anzeigefilter deaktiviert und alle verfügbaren Klemmen werden angezeigt.

Über das Suchfeld im oberen Bereich kann durch die Eingabe eines Namens die Anzeige im Tool Window gefiltert werden.

Das Tool Window Properties zeigt weitere Informationen zu jedem markierten Element an.

DPAD

Das Tool Window DPAD dient zum Editieren des Anlagenkennzeichnungssystems (AKS). Über die Schaltflächen im oberen Bereich können sowohl Ebenen des AKS als auch einzelne Keys einer Ebene hinzugefügt oder gelöscht werden.

Die einzelnen Parameter können über das Tool Window Properties editiert werden. Es sind nur Elemente editierbar, die in der geladenen Solution noch nicht benutzt werden. Gesperrte Elemente werden im Navigationsbaum mit einem speziellen Symbol gekennzeichnet.

Attributes

Attribute sind Zusatzinformationen, die jedem POU einzeln hinzugefügt werden können. Ziehen Sie per Drap & Drop das gewünschte Element auf den Baustein im POU Explorer. Im Detail View des POU können die Werte der hinzugefügen Attribute geändert werden.

Properties

Das Tool Window Properties zeigt von dem aktuell markierten Element eines anderen Fensters weitere Informationen an.

Mit den beiden Schaltflächen im oberen Bereich kann die Sortierung verändert werden (alphabetisch oder nach Kategorie).

Über das Suchfeld im oberen Bereich kann durch die Eingabe eines Namens die Anzeige im Tool Window gefiltert werden.

Output

Im Tool Window Output werden diverse Meldungen angezeigt. So werden Meldungen während der Erzeugung der TwinCAT Projektdateien ausgegeben oder wenn Fehler in der Projektierung erkannt werden.

Über die Schaltfläche im linken oberen Bereich kann das Tool Window Output gelöscht werden. Des Weiteren können die Meldungen in eine Textdatei abgespeichert werden.

Die Meldungen werden in drei Kategorien eingeteilt; Errors, Warnings und Messages. Jede Kategorie kann durch Betätigen der entsprechenden Schaltfläche oberen Bereich ausgeblendet werden.

Durch Drücken der F4-Taste wird die nächste Fehlermeldung (Error) markiert.


Optionen

Über den Menüpunkt Tools --> Options kann der Dialog Options aufgerufen werden. Dieser Dialog bietet verschiedene Parameter an, welche das Aussehen als auch das Verhalten des BA Project Builder beeinflussen.

Environment

General

Optionsbereich | Funktion
General | Der BA Project Builder speichert beim Beenden die aktuellen Positionen und Größen der einzelnen Tool Windows. Diese werden beim Starten wieder in den vorherigen Zustand gebracht.
On Startup | Beim Starten des BA Project Builders wird die zuletzt verwendete Solution automatisch geladen.
Recent Solutions | Hier kann eingestellt werden, wie viele der zuletzt geladenen Solutions direkt über den Menüpunkt Solution -> Open Recent wieder geöffnet werden können.

Visual Experience

Optionsbereich | Funktion
POU Explorer | Im Tool Window POU Explorer lassen sich zusätzliche Informationen an den einzelnen Elementen ein- und ausblenden.
Hardware Explorer | Im Tool Window Hardware Explorer lassen sich zusätzliche Informationen an den einzelnen Elementen ein- und ausblenden.
Templates Tools Box | Im Tool Window Templates lassen sich zusätzliche Informationen an den einzelnen Elementen ein- und ausblenden.

Building Project Files

General

Optionsbereich | Funktion
TwinCAT PLC Control | Während der Erzeugung der TwinCAT Projektdateien wird das TwinCAT PLC Control angezeigt.

Solution

General

Optionsbereich | Funktion
Solution Location | Dieser Ordner wird beim Erzeugen einer neuen Solution vorgegeben.
Default DPAD | Dieses AKS wird beim Erzeugen einer neuen Solution vorgegeben.
Solution File Settings | Die Solution-Dateien werden möglichst platzsparend abgespeichert. Dadurch werden die Dateien deutlich kleiner, können allerdings auch nicht mehr manuell betrachtet werden.


TS8040 | TwinCAT Building Automation: Project Builder

Anhang

In Bearbeitung...


AddIns erstellen

Der TwinCAT BA Project Builder bietet die Möglichkeit eigene AddIns zu erstellen. AddIns haben die Möglichkeit über ein Objektmodel auf die interne Datenhaltung des TwinCAT BA Project Builders zuzugreifen. Diese Zugriffe können lesend sowie schreibend erfolgen. Besonders von Bedeutung ist die Möglichkeit ganze Bedieneroberflächen zu generieren.


Erste Schritte - WPF

Die nachfolgenden Ausführungen zeigen alle notwendigen Schritte auf, um eine Grundlage für die eigentliche AddIn Entwicklung zu schaffen. Das vollständige Microsoft Visual Studio 2013 Projekt erhalten Sie hier: AddInSampleFirstSteps-WPF.

Voraussetzungen

  • Microsoft Visual Studio 2013 (oder höher)
  • Microsoft .NET Framework 4.0 (oder höher)
  • Kenntnisse in der Programmiersprache C#

Projekt erstellen

Starten Sie das Microsoft Visual Studio 2013 und legen Sie ein neues WPF Projekt an.

Entfernen Sie die standardmäßig erstellte App.xml Datei im Solution Explorer und fügen Sie dem Projekt die zwei C# Dateien AddInEntryPoint.cs und AddInEntryMetadata.cs hinzu. Öffnen Sie jetzt die Eigenschaften des Projekts und ändern Sie im Menüpunkt Application die Einstellung Output type auf Class Library.

Wechseln Sie zum Menüpunkt Build und tragen Sie im Bereich Output unter Output path den Pfad zum AddIn Ordner des TwinCAT BA Project Builders ein (standardmäßig TwinCAT -> BA Project Builder -> AddIns).

Die Eigenschaften können nun geschlossen werden.

Referenzen hinzufügen

Der nächste Schritt umfasst das Hinzufügen von drei Referenzen.

  • System.ComponentModel.Composition: Stellt das benötigte Attribut Export bereit.
  • TwinCAT.BA.ProjectBuilder.AddIn.Contract: Schnittstellen und Aufzählungstypen, die das AddIn dem TwinCAT BA Project Builder zur Verfügung stellen.
  • TwinCAT.BA.ProjectBuilder.AddIn.IL: Bietet Zugriff auf Klassen die zur Arbeit mit dem TwinCAT BA Project Builder notwendig sind.

Fügen Sie im Solution Explorer die Referenz System.ComponentModel.Composition hinzu.

Als nächstes folgen die Referenzen vom TwinCAT BA Project Builder. Dazu betätigen Sie die Schaltfläche Browse und navigieren in das TwinCAT BA Project Builder Verzeichnis (standardmäßig TwinCAT -> BA Project Builder). Dort befinden sich die TwinCAT.BA.ProjectBuilder.AddIn.Contract.dll und die TwinCAT.BA.ProjectBuilder.AddIn.IL.dll. Fügen Sie beide dem Projekt hinzu.

Navigieren Sie unter References im Solution Explorer zu den beiden zuletzt hinzugefügten Referenzen und ändern Sie jeweils in den Eigenschaften das Copy Local auf false. Somit wird im Ausgabeverzeichnis nur die dll vom AddIn erzeugt.

Bereitstellung

Damit das AddIn im TwinCAT BA Project Builder angezeigt und geladen werden kann, müssen zwei Klassen hinzugefügt werden. Zum einen eine Klasse die von ContractAttribute abgeleitet wird und einige Properties überschreibt. Diese dienen zur Anzeige des AddIns im TwinCAT BA Project Builder. Des Weiteren muss eine Klasse angelegt werden, die das Interface IContractWpf enthält. Durch die Methode GetWindow() wird über den TwinCAT BA Project Builder das AddIn geladen.

Legen sie eine neue Klasse mit den Namen AddInEntryMetadata an und leiten diese von ContractAttribute ab. Fügen Sie die Eigenschaften Description, ShortDescription, Name und Version hinzu. Diese Informationen werden im TwinCAT BA Project Builder bei der Auswahl des AddIns angezeigt.

using TwinCAT.BA.ProjectBuilder.AddIn.Contract;

namespace TwinCAT.BA.ProjectBuilder.AddIn.SampleFirstStepsWPF
{
    public class AddInEntryMetadata : ContractAttribute
    {
        // Gets the description of the AddIn.
        public override string Description
        {
            get
            {
                return "AddIn Sample FirstSteps of the TwinCAT BA Project Builder for WPF";
            }
        }

        // Gets the short description of the AddIn.
        public override string ShortDescription
        {
            get
            {
                return "AddIn Sample FirstSteps for WPF";
            }
        }

        // Gets the name of the AddIn.
        public override string Name
        {
            get
            {
                return "Sample FirstSteps WPF";
            }
        }

        // Gets the version of the AddIn.
        public override string Version
        {
            get
            {
                return "1.0.0";
            }
        }
    }
}

Legen Sie nun die Klasse AddInEntryPoint an und implementieren Sie das Interface IContractWpf. Ausserdem muss die Klasse mit den Attributen Export und AddInEntryMetadata dekoriert werden.

using System;
using System.ComponentModel.Composition;
using System.Windows;
using TwinCAT.BA.ProjectBuilder.AddIn.Contract;

namespace TwinCAT.BA.ProjectBuilder.AddIn.SampleFirstStepsWPF
{
    [Export(typeof(IContractWpf))] // Marks this class as an entry point for the TwinCAT BA Project Builder
    [AddInEntryMetadata] // Adds necessary information about the AddIn to this class
    public class AddInEntryPoint : IContractWpf
    {
        private AddInEntryMetadata addInEntryMetadata = null;
        public event EventHandler<ContractLogEventArgs> LogEvent;
        public event EventHandler<ContractClearLogEventArgs> ClearLogEvent;

        public Window GetWindow()
        {
            this.addInEntryMetadata = new AddInEntryMetadata();
            // Passing the main class of the AddIn
            return new MainWindow(this);
        }

        public void RaiseLogEvent(LogLevel level, string message)
        {
            OnLog(new ContractLogEventArgs(this.addInEntryMetadata, level, message));
        }

        // The event-invoking method that derived classes can override.
        private void OnLog(ContractLogEventArgs e)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            EventHandler<ContractLogEventArgs> handler = this.LogEvent;
            if (handler != null)
            {
                handler(this, e);
            }
        }

        public void RaiseClearLogEvent()
        {
            OnClearLog(new ContractClearLogEventArgs(this.addInEntryMetadata));
        }

        // The event-invoking method that derived classes can override.
        private void OnClearLog(ContractClearLogEventArgs e)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            EventHandler<ContractClearLogEventArgs> handler = this.ClearLogEvent;
            if (handler != null)
            {
                handler(this, e);
            }
        }
    }
}

Programmierung

Die Hauptfunktionalitäten werden in der Klasse MainWindow implementiert.

using System.Windows;
using TwinCAT.BA.ProjectBuilder.AddIn.IL;
using TwinCAT.BA.ProjectBuilder.AddIn.IL.Hardware;

namespace TwinCAT.BA.ProjectBuilder.AddIn.SampleFirstStepsWPF
{
    public partial class MainWindow : Window
    {
        AddInEntryPoint addInEntryPoint = null;
        BAProjectBuilder projectBuilder = null;

        public MainWindow(AddInEntryPoint addInEntryPoint)
        {
            InitializeComponent();
            // Code here
            this.addInEntryPoint = addInEntryPoint;
            this.projectBuilder = new BAProjectBuilder();
        }
    }
}

Debuggen

Da es sich bei diesem Projekt nun um eine Klassenbibliothek handelt, müssen Sie zum Starten und Debuggen ein externes Programm definieren mit dem das AddIn gestartet werden soll. Im Menüpunkt Debug tragen Sie bei Start external program den Pfad zum TwinCAT BA Project Builder ein (standardmäßig TwinCAT -> BA Project Builder).


Erste Schritte - WinForms

Die nachfolgenden Ausführungen zeigen alle notwendigen Schritte auf, um eine Grundlage für die eigentliche AddIn Entwicklung zu schaffen. Das vollständige Microsoft Visual Studio 2013 Projekt erhalten Sie hier: AddInSampleFirstSteps-WinForms.

Voraussetzungen

  • Microsoft Visual Studio 2013 (oder höher)
  • Microsoft .NET Framework 4.0 (oder höher)
  • Kenntnisse in der Programmiersprache C#

Projekt erstellen

Starten Sie das Microsoft Visual Studio 2013 und legen Sie ein neues Windows Forms Projekt an.

Fügen Sie dem Projekt die beiden C# Dateien AddInEntryPoint.cs und AddInEntryMetadata.cs hinzu. Öffnen Sie jetzt die Eigenschaften des Projekts und ändern Sie im Menüpunkt Application die Einstellung Output type auf Class Library.

Wechseln Sie zum Menüpunkt Build und tragen Sie im Bereich Output unter Output path den Pfad zum AddIn Ordner des TwinCAT BA Project Builders ein (standardmäßig TwinCAT -> BA Project Builder -> AddIns).

Die Eigenschaften können nun geschlossen werden.

Referenzen hinzufügen

Der nächste Schritt umfasst das Hinzufügen von drei Referenzen.

  • System.ComponentModel.Composition: Stellt das benötigte Attribut Export bereit.
  • TwinCAT.BA.ProjectBuilder.AddIn.Contract: Schnittstellen und Aufzählungstypen, die das AddIn dem TwinCAT BA Project Builder zur Verfügung stellen.
  • TwinCAT.BA.ProjectBuilder.AddIn.IL: Bietet Zugriff auf Klassen die zur Arbeit mit dem TwinCAT BA Project Builder notwendig sind.

Fügen Sie im Solution Explorer die Referenz System.ComponentModel.Composition hinzu.

Als nächstes folgen die Referenzen vom TwinCAT BA Project Builder. Dazu betätigen Sie die Schaltfläche Browse und navigieren in das TwinCAT BA Project Builder Verzeichnis (standardmäßig TwinCAT -> BA Project Builder). Dort befinden sich die TwinCAT.BA.ProjectBuilder.AddIn.Contract.dll und die TwinCAT.BA.ProjectBuilder.AddIn.IL.dll. Fügen Sie beide dem Projekt hinzu.

Navigieren Sie unter References im Solution Explorer zu den beiden zuletzt hinzugefügten Referenzen und ändern Sie jeweils in den Eigenschaften das Copy Local auf false. Somit wird im Ausgabeverzeichnis nur die dll vom AddIn erzeugt.

Bereitstellung

Damit das AddIn im TwinCAT BA Project Builder angezeigt und geladen werden kann, müssen zwei Klassen hinzugefügt werden. Zum einen eine Klasse die von ContractAttribute abgeleitet wird und einige Properties überschreibt. Diese dienen zur Anzeige des AddIns im TwinCAT BA Project Builder. Des Weiteren muss eine Klasse angelegt werden, die das Interface IContractWinForms enthält. Durch die Methode GetForm() wird über den TwinCAT BA Project Builder das AddIn geladen.

Legen sie eine neue Klasse mit den Namen AddInEntryMetadata an und leiten diese von ContractAttribute ab. Fügen Sie die Eigenschaften Description, ShortDescription, Name und Version hinzu. Diese Informationen werden im TwinCAT BA Project Builder bei der Auswahl des AddIns angezeigt.

using TwinCAT.BA.ProjectBuilder.AddIn.Contract;

namespace TwinCAT.BA.ProjectBuilder.AddIn.SampleFirstStepsWinForms
{
    public class AddInEntryMetadata : ContractAttribute
    {
        // Gets the description of the AddIn.
        public override string Description
        {
            get
            {
                return "AddIn Sample FirstSteps of the TwinCAT BA Project Builder for WinForms";
            }
        }

        // Gets the short description of the AddIn.
        public override string ShortDescription
        {
            get
            {
                return "AddIn Sample FirstSteps for WinForms";
            }
        }

        // Gets the name of the AddIn.
        public override string Name
        {
            get
            {
                return "Sample FirstSteps WinForms";
            }
        }

        // Gets the version of the AddIn.
        public override string Version
        {
            get
            {
                return "1.0.0";
            }
        }
    }
}

Legen Sie nun die Klasse AddInEntryPoint an und implementieren Sie das Interface IContractWinForms. Ausserdem muss die Klasse mit den Attributen Export und AddInEntryMetadata dekoriert werden.

using System;
using System.ComponentModel.Composition;
using System.Windows.Forms;
using TwinCAT.BA.ProjectBuilder.AddIn.Contract;

namespace TwinCAT.BA.ProjectBuilder.AddIn.SampleFirstStepsWinForms
{
    [Export(typeof(IContractWinForms))] // Marks this class as an entry point for the TwinCAT BA Project Builder
    [AddInEntryMetadata] // Adds necessary information about the AddIn to this class
    public class AddInEntryPoint : IContractWinForms
    {
        private AddInEntryMetadata addInEntryMetadata = null;
        public event EventHandler<ContractLogEventArgs> LogEvent;
        public event EventHandler<ContractClearLogEventArgs> ClearLogEvent;

        public Form GetForm()
        {
            this.addInEntryMetadata = new AddInEntryMetadata();
            // Passing the main class of the AddIn
            return new FormMain(this);
        }

        public void RaiseLogEvent(LogLevel level, string message)
        {
            OnLog(new ContractLogEventArgs(this.addInEntryMetadata, level, message));
        }

        // The event-invoking method that derived classes can override.
        private void OnLog(ContractLogEventArgs e)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            EventHandler<ContractLogEventArgs> handler = this.LogEvent;
            if (handler != null)
            {
                handler(this, e);
            }
        }

        public void RaiseClearLogEvent()
        {
            OnClearLog(new ContractClearLogEventArgs(this.addInEntryMetadata));
        }

        // The event-invoking method that derived classes can override.
        private void OnClearLog(ContractClearLogEventArgs e)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            EventHandler<ContractClearLogEventArgs> handler = this.ClearLogEvent;
            if (handler != null)
            {
                handler(this, e);
            }
        }
    }
}

Programmierung

Die Hauptfunktionalitäten werden in der Klasse FormMain implementiert.

using System.Windows;
using System.Windows.Forms;
using TwinCAT.BA.ProjectBuilder.AddIn.IL;
using TwinCAT.BA.ProjectBuilder.AddIn.IL.Hardware;

namespace TwinCAT.BA.ProjectBuilder.AddIn.SampleFirstStepsWinForms
{
    public partial class FormMain : Form
    {
        AddInEntryPoint addInEntryPoint = null;
        BAProjectBuilder projectBuilder = null;

        public FormMain(AddInEntryPoint addInEntryPoint)
        {
            InitializeComponent();
            // Code here
            this.addInEntryPoint = addInEntryPoint;
            this.projectBuilder = new BAProjectBuilder();
        }
    }
}

Debuggen

Da es sich bei diesem Projekt nun um eine Klassenbibliothek handelt, müssen Sie zum Starten und Debuggen ein externes Programm definieren mit dem das AddIn gestartet werden soll. Im Menüpunkt Debug tragen Sie bei Start external program den Pfad zum TwinCAT BA Project Builder ein (standardmäßig TwinCAT -> BA Project Builder).


TS8040 | TwinCAT Building Automation: Project Builder

Beispiele

In Bearbeitung...


Beispiel 1

TS8040 | TwinCAT Building Automation: Project Builder

Beispiel: ?????

In Bearbeitung...


API Referenz

Eine ausführliche Dokumentation der AddIn API erhalten Sie hier:

AddIn API Referenz


Support und Service

Beckhoff und seine weltweiten Partnerfirmen bieten einen umfassenden Support und Service, der eine schnelle und kompetente Unterstützung bei allen Fragen zu Beckhoff Produkten und Systemlösungen zur Verfügung stellt.

Beckhoff Support

Der Support bietet Ihnen einen umfangreichen technischen Support, der Sie nicht nur bei dem Einsatz einzelner Beckhoff Produkte, sondern auch bei weiteren umfassenden Dienstleistungen unterstützt:

  • Support
  • Planung, Programmierung und Inbetriebnahme komplexer Automatisierungssysteme
  • umfangreiches Schulungsprogramm für Beckhoff Systemkomponenten
Hotline: | +49(0)5246/963-157
Fax: | +49(0)5246/963-9157
E-Mail: | support@beckhoff.com

Beckhoff Service

Das Beckhoff Service-Center unterstützt Sie rund um den After-Sales-Service:

  • Vor-Ort-Service
  • Reparaturservice
  • Ersatzteilservice
  • Hotline-Service
Hotline: | +49(0)5246/963-460
Fax: | +49(0)5246/963-479
E-Mail: | service@beckhoff.com

Weitere Support- und Serviceadressen finden Sie auf unseren Internetseiten unter http://www.beckhoff.de.

Beckhoff Firmenzentrale

Beckhoff Automation GmbH & Co. KG

Hülshorstweg 20
33415 Verl
Deutschland

Telefon: | +49(0)5246/963-0
Fax: | +49(0)5246/963-198
E-Mail: | info@beckhoff.com

Die Adressen der weltweiten Beckhoff Niederlassungen und Vertretungen entnehmen Sie bitte unseren Internetseiten:
http://www.beckhoff.de

Dort finden Sie auch weitere Dokumentationen zu Beckhoff Komponenten.


Liste der Fassadenelemente

Die Daten aller Fenster (Fassadenelemente) pro Fassade werden innerhalb des Programms in einem Feld von Strukturelementen des Typs ST_BA_FcdElem hinterlegt.

Der Verwaltungsbaustein FB_BA_FcdElemEntry sowie die Verschattungskorrektur FB_BA_ShdCorr lesen und beschreiben diese Liste (letzterer setzt die Verschattungsinformation) und greifen somit als Ein-/Ausgangsvariable auf dieses Feld zu.
Es empfiehlt sich daher, diese Liste global zu deklarieren:

VAR_GLOBAL
     arrFcdElem : ARRAY[1..gBA_cMaxColumnFcd, 1..gBA_cMaxRowFcd] OF ST_BA_FcdElem;
END_VAR

Die Variablen gBA_cMaxColumnFcd und gBA_cMaxRowFcd definieren dabei die Obergrenzen der zur Verfügung stehenden Elemente und sind global als Konstante innerhalb der Programmbibliothek deklariert:

VAR_GLOBAL CONSTANT
     gBA_cMaxRowFcd    : INT :=10;
     gBA_cMaxColumnFcd : INT :=20;
END_VAR


Einleitung Sequenzregler

In der Heizungs-, Lüftungs- und Klimatechnik kommt es häufig vor, dass zum Erreichen einer Regelgröße mehrere Stellglieder verwendet werden, die in einer so genannten Reglersequenz arbeiten.
In der unten dargestellten Klimaanlage sind an der Zulufttemperaturregelung drei Stellorgane beteilig. In der BA-Bibliothek wird für jedes dieser Stellorgane ein eigener Sequenzregler instanziiert.
Bei aktiver Regelung ist immer nur einer dieser Sequenzregler aktiv. Die anderen nicht aktiven Regler fixieren ihr Stellsignal so, wie es energetisch für die Temperierung der Zulufttemperatur optimal ist.
Das bedeutet in Abhängigkeit des Wirksinns des einzelnen Reglers entweder das Maximum oder das Minimum für die Stellgröße lrY.

Wenn die Wirkung des aktiven Stellgliedes (Reglers) bei dem Erreichen einer Endlage nicht ausreicht, wird von dem aktiven Regler auf den links oder rechts benachbarten Regler umgeschaltet.
Dieser übernimmt damit die Regelung. Der zuvor aktive Regler verharrt je nach Wirksinn in der Endlage von lrYMax oder rYMin. Ebenso wird mit den weiteren Stellgliedern verfahren, bis der Sollwert oder das rechte oder linke Ende der Sequenz erreicht ist.

In der Sequenz der dargestellten Raumlufttechnischen Anlage sind alle Stellglieder, die die Regelgröße beeinflussen , von links nach rechts dargestellt. Ganz links steht das Stellglied, das die größtmögliche Erhöhung der Zulufttemperatur ermöglicht, ganz rechts das Stellglied, das die größtmöglichen Verringerung der Zulufttemperatur bewirkt.

Manche Stellglieder, wie z.B. eine Umluftklappe oder eine Wärmerückgewinnung wechseln während des Betriebs ihre Wirkrichtung. (indirekt = heizen , direkt = kühlen)

Stellglieder mit wechselnden Wirksinn, wie z.B. Außenluft- und Umluftklappe oder Wärmerückgewinnung, werden nur einmal aufgeführt.

  • Regler 1: Vorerhitzer
  • Regler 2: Mischluft
  • Regler 3: Kühler

Schematische Darstellung

Diese Anlage wird schematisch wie folgt dargestellt:

Regeln für die Aufstellung einer Sequenz

Für die Aufstellung der Sequenzen sind folgende Regeln zu beachten, wobei thematisch auf eine Zuluftregelung Bezug genommen wird:

  1. Die Nummerierung der Sequenzregler erfolgt von den Heizsequenzen mit niedrigen Ordnungszahlen hin zu den Kühlsequenzen mit hohen Ordnungszahl kontinuierlich steigend.
  2. In eine Folge von Heizsequenzen sollte keine Kühlsequenz eingebunden werden. Und in eine Folge von Kühlsequenzen sollte keine Heizsequenz eingebunden werden. Sequenzen mit einer Wirksinnumkehr für ein Mischluftsystem oder eine Wärmerückgewinnung sind zwischen den Heiz- und den Kühlsequenzen zu positionieren.

    In diesem Bild wäre Regler 4 falsch plaziert, wenn Regler 5 in den Heizbetrieb wechseln würde. Oder: Regler 4 ist richtig, Regler 5 müsste jedoch ein reiner Kühlregler sein. In beiden Fällen wären 2 Wechsel von Heizen nach Kühlen vorhanden.

  3. Die Sollwerte innerhalb der Sequenz müssen monoton steigend sein. Diese Forderung ergibt sich aus dem oben erläuterten Umschaltverhalten: Ist der Sollwert eines niedrigeren Reglers höher als der des nächst höheren, so kann es zu einem ständigen Hin- und Herschalten zwischen zwei Reglern führen. Wie oben bereits erwähnt, haben jedoch Regler mit gleichem Wirksinn üblicherweise den gleichen Sollwert.

    SP1 ≤ SP2 ≤ SP3 ≤ SP4 ≤ SP5 ≤ SP6 ≤ SP7 ≤ SP8 ≤ SP9

Sequenzregler in der PLC

Für die Realisierung einer Sequenzregelung im SPS-Programm stellt die BA-Bibliothek zwei Bausteine zur Verfügung:

  • Der Baustein FB_BA_SeqCtrl. Er stellt einen einzelnen Regler als Bestandteil einer Sequenz von maximal 16 Reglern dar.

  • Der Baustein FB_BA_SeqLink. Dieser Baustein ist der Kontrollbaustein der Sequenz und existiert demnach pro Sequenz nur einmal. Er entscheidet, welcher Regler der Sequenz gerade aktiv ist und überprüft die Sequenz auf bestimmte Fehlerzustände, wie beispielsweise die doppelte Vergabe von Ordnungszahlen an den Reglern.

Die Strukturvariable ST_BA_SeqLink dient zur Verbindung der Sequenzregler mit dem Sequenzlinker FB_BA_SeqLink.
Diese Strukturvariable ist pro Sequenzregelung einmal zu deklarieren.

Die Freigabe der Sequenzregelung erfolgt am Eingang bEn des Funktionsbausteins FB_BA_SeqLink. Mit der Variablen usiStartCtrl wird bestimmt, mit welchem Regler nach dem Start des Regelbetriebs begonnen wird zu regeln. Im Beispiel wird mit dem Sequenzregler mit der Nr. 5 gestartet. Das Umschalten von dem Regler 5 auf einen anderen Regler in der Sequenz ist nach dem Neustart der Regelung um den Wert der Eingangsvariable tIniSwiOvrDly um 60 Sekunden gesperrt.


Liste der Verschattungselemente

Die Daten aller Verschattungsobjekte (Gebäudeteile, Bäume, etc.) pro Fassade werden innerhalb des Programms in einem Feld von Strukturelementen des Typs ST_BA_ShdObj hinterlegt.

Die Verschattungskorrektur FB_BA_ShdCorr liest die Informationen dieser Liste zwar nur, der Verwaltungsbaustein FB_BA_ShdObjEntry jedoch hat liest und beschreibt sie als Ein-/Ausgangsvariable.
Es empfiehlt sich daher, diese Liste global zu deklarieren:

VAR_GLOBAL
     arrShdObj : ARRAY[1..gBA_cMaxShdObj] OF ST_BA_ShdObj;
END_VAR

Die Variable gBA_cMaxShdObj stellt dabei die Obergrenze der zur Verfügung stehenden Elemente dar und ist global als Konstante innerhalb der Programmbibliothek deklariert:

VAR_GLOBAL CONSTANT
     gBA_cMaxShdObj  : INT := 20;
END_VAR


ST_BA_Fcd

Fassadenspezifische Daten an Raum-Ebene zur Aktivierung der Automatikfunktionen.

TYPE ST_BA_Fcd :
STRUCT
   lrSunPrtcAngl   : LREAL;
   lrSunPrtcPos    : LREAL;
   lrFcdThAutoPos  : LREAL;
   lrFcdThAutoAngl : LREAL;
   bFcdThAutoEn    : BOOL;
   bThAutoEn       : BOOL;
   bTwiLgtAutoEn   : BOOL;
   bSunPrtcEn      : BOOL;
END_STRUCT
END_TYPE

lrSunPrtcAngl: Sonnenschutz: Aktuell errechnete Position [%] für die Jalousien.

lrSunPrtcPos: Sonnenschutz: Aktuell errechneter Lamellenwinkel [°] für die Jalousien.

lrFcdThAutoPos: Thermoautomatik für gesamte Fassade: Aktuell gültige Position [%] für die Jalousien (Heiz- oder Kühlposition).

lrFcdThAutoAngl: Thermoautomatik für gesamte Fassade: Aktuell gültiger Lamellenwinkel [°] für die Jalousien (Heiz- oder Kühlposition).

bFcdThAutoEn: Thermoautomatik für gesamte Fassade freigegeben.

bThAutoEn: Thermoautomatik freigegeben.

bTwiLgtAutoEn: Dämmerungsautomatik freigegeben.

bSunPrtcEn: Sonnenschutzautomatik freigegeben.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


ST_BA_ShdObj

TS8040 | TwinCAT Building Automation: PLC Libraries

ST_BA_ObjInfo

Struktur für BACnet-Objektinformationen allgemein.

TYPE ST_BA_ShdObj :
STRUCT
     rPrVal        : REAL;
     rRlqshDef     : REAL;
     udiPrVal      : UDINT;
     udiRlqshDef   : UDINT;
     udiActvPrio   : UDINT;
     udiTiDly      : UDINT;
     udiElapActvTi : UDINT;
     udiNumOfSta   : UDINT;
     bPrVal        : BOOL;
     bInAlm        : BOOL;
     bFlt          : BOOL;
     bOvrrd        : BOOL;
     bOoServ       : BOOL;
     bHiLmt        : BOOL;
     bLoLmt        : BOOL;
     bExst         : BOOL;
END_STRUCT
END_TYPE

rPrVal: Present Value Analog (Property Id 85).

rRlqshDef: Relinquish Default Analog (Property Id 104).

udiPrVal: Present Value Multi-State (Property Id 85).

udiRlqshDef: Relinquish-Default Multi-State (Property Id 104).

udiActvPrio: Aktive Priorität (Property Id 517).

udiTiDly: Meldeverzögerung [s] (Property Id 113).

udiElapActvTi: verstrichene Aktiv-Zeit [s] (Property Id 33).

udiNumOfSta: Anzahl der Status bei einem Multistate-Objekt.

bPrVal: Present Value Binär (Property Id 85).

bInAlm: Status-Meldung "in_alarm" (Property Id 111).

bFlt: Status-Meldung "fault" (Property Id 111).

bOoServ: Status-Meldung "out_of_service" (Property Id 111).

bHiLmt: Oberer Grenzwert wurde erreicht.

bLoLmt: Unterer Grenzwert wurde erreicht.

bExst: Noch nicht verwendet.

Entwicklungsumgebung | Zielsystem | erforderliche Bibliothek | erforderliches Supplement
TwinCAT 2.11 R3/x64 | PC/CX | TcBA-Bibliothek ab V1.0.0 | TS8040 | TwinCAT Building Automation ab V1.0.0


BAC_PltIniComnMsg_01

Funktionsbeschreibung

Das Template BAC_PltIniComnMsg_01 sammelt alle Ereignismeldungen der BACnet-Objekte innerhalb einer Anlage. Zur Anzeige dieser Meldungen in der Managent- und Bedieneben (MBE) oder auf einem lokalen Bediendisplay, sind die wichtigsten Meldungen mit einen BV-Objekt verknüft.

Schnittstelle

VAR CONSTANT

PLT_NUM    : BYTE := 10;

PLT_NUM: Anlagennummer

Wichtig ist, dass die Anlagennummer PLT_NUM gleich der Anlagennummer der zugehörigen Anlagen-Templates BAC_PltIniAlm_01 (Alarmsammler) und BAC_PltIniComnMsg_01 (Sammlung von Ereignismeldungen) ist!

Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.

Programmbeschreibung

Instanz | Typ | Aufgabe
ComnMsg | FB_BA_ComnMsg | Der Funktionsbaustein ComnMsg sammelt Ereignismeldungen der BACnet-Objekte einer Anlage. Zur Anzeige dieser Sammelmeldungen sind einige Informatinen des Funktionsausteins ComnMsg auf ein BV-Objekten verknüpft. Die Übertragung der Meldungen von den BACnet-Objekten zum Meldebaustein ComnMsg erfolgt mittels eines eindimensionalen Arrys der Struktur ST_BA_ComMsg. Über die Anlagennummer reserviert sich jede Anlage ein Element dieses Array. Das Array für das Sammeln der Meldungen aus den BACnet-Objkten innerhalb eines Kontrollers ist in dem Ordner Globale_Variablen_Systen global deklariert. Wichtig ist, dass der Meldesammer FB_BA_ComnMsg und die BACnet-Objekte innerhalb der Templates einer Anlage auf die gleiche Anlagennummer eingestellt sind! VAR CONSTANT PLT_NUM : BYTE := 1; (*Anlagennummer//Plant Number*) END_VAR Die Anlagennummer kann im Projektbuilder im Parametermenü der Templates oder durch eine Spalte innerhalb des Excel-Imports erfolgen.
InAlm | FB_BACnetBV1204 | Sammelmeldung des Statusflags der BACnet-Objekte
Flt | FB_BACnetBV1204 | Sammelmeldung der BACnet-Objekte Fault
ManCtrlHw | FB_BACnetBV1204 | Sammelmeldung Handübersteuerung eines der BACnet-Objkete ist auf Prio 7
ManCtrlSw | FB_BACnetBV1204 | Sammelmeldung Handübersteuerung eines der BACnet-Objkete ist auf Prio 8
ManCtrlSwi | FB_BACnetBV1204 | An einem der BACnet-Ausgangsobjekt ist die örtliche mechanische Vorrangbedienung aktiviert
OoServ | FB_BACnetBV1204 | Eines der BACnet-Objekte in der Anlage ist OutOfService
Err | FB_BACnetBV1204 | Eines der BACnet-Objekte ist gestört. z.B. ADS-Fehler


DALI_EM_Topology

TS8040 | TwinCAT Building Automation: PLC Templates

DALI-Emergency-Lighting-Topologie

Bei den DALI-Notbeleuchtungstests wird zwischen zwei Arten unterschieden:

  • Der Dauertest (Duration-Test), bei der die Notbeleuchtung über einen längeren Zeitraum eingeschaltet wird. Nach Ablauf des Zeitraumes wird der Ladezustand des Akkus überprüft und damit eine Aussage getroffen, ob die Notbeleuchtung im Ernstfall lange genug leuchten kann.
  • Der Funktionstest. Die Notbeleuchtung wird nur kurz eingeschaltet und damit die Funktion an sich getestet.

Für beide Tests existieren Funktionsbausteine und darauf aufbauende Templates, mit deren Hilfe sich die Tests automatisieren lassen. Jeder Test überprüft dabei immer nur ein Vorschaltgerät, niemals eine Gruppe. Die Testsbausteine kommunizieren über ein Kommunikations-Template RC_DALI_Com, welches für jede DALI-Linie einmalig anzulegen ist. Es handelt sich dabei um das selbe Template, welches auch zur Kommunikation mit "normaler" DALI-Beleuchtung genutzt wird.
Pro DALI-Linie darf dieses Template nur einmal angewendet werden - der Parameter DALI_LINE_NUM ist dabei das eindeutige Charakteristikum. Da die Kommunikation zwischen den Testbausteinen und dem Kommunikationsbaustein komplexerer Art ist - es werden Kommandos und Anfragen gesendet aber auch Antworten von den Vorschaltgeräten empfangen - kann diese nicht über eine einfache Verknüpfung realisiert werden. Statt dessen wird an den Testbausteinen durch die Angabe des Parameters DALI_LINE_NUM und der Kurzadresse eindeutig beschrieben, auf welches Vorschaltgerät sich der Test bezieht. Die Kommunikation erfolgt dann automatisch im Hintergrund. Vom Kommunikationsbaustein zur I/O-Ebene erfolgt der Datenaustausch über die Verknüpfung im Prozessabbild.

Jeder Testbaustein schreibt seine Ergebnisse in einen Puffer. Dieser kann dann von einem Log-File-Template ausgelesen und das Ergebnis auf einem beliebigen Rechner im Netzwerk, auf dem jedoch ebenfalls TwinCAT installiert sein muss, als Datei abgelegt werden. Es stehen maximal 20 Puffer zur Auswahl, welche jeweils von einem Log-File-Template ausgelesen werden. Welcher Test in welchen Puffer und damit in welche Datei schreibt wird durch den Ganzzahl-Parameter "DALI_EM_LOGFILE" bestimmt. Damit lassen sich wie im Übersichtsbild beispielsweise alle Tests einer Linie in jeweils einer Datei speichern, denkbar wäre aber auch alle Funktionstestergebnisse in einer Datei und alle Dauertestergebnisse in einer anderen abzulegen.


DALI_Topology

TS8040 | TwinCAT Building Automation: PLC Templates

DALI-Topologie

Auf SPS-Ebene steuern konventionelle Schaltbausteine die DALI-spezifischen Aktorbausteine an, wobei die Befehle über das Standard-Telegramm stLgtCmd erfolgt. Die DALI-Aktor-Bausteine wiederum steuern zum einen das Licht, zum anderen besitzen sie auch die Möglichkeit die adressierten Vorschaltgeräte mit Kennwerten zu parametrieren (Minimaler Lichtausgabewert, Maximaler Lichtausgabewert und FadeRate). In Bezug auf die Einzel- bzw. Gruppenansteuerung von DALI-Vorschaltgeräten wird bei den Aktorbausteinen zwischen drei Möglichkeiten unterschieden:

  • Master/Slave-Gruppe (siehe DALI-Linie #1): Es existiert eine vorparametrierte Gruppe auf DALI-Ebene. Jedes Vorschaltgerät dieser Gruppe wird auf der SPS-Ebene durch einen Baustein bzw. Template repräsentiert. Damit ist es möglich, jedes Vorschaltgerät individuell zu parametrieren, die Steuerbefehle jedoch werden gruppenweise gegeben.
  • Normale Gruppe (siehe DALI-Linie #2): Es existiert nur ein Baustein für eine vordefinierte DALI-Gruppe. Nicht nur die Steuerbefehle werden gruppenweise ausgegeben, auch werden alle Teilnehmer dieser Gruppe gesammelt mit den Parametern, wie sie am Baustein liegen, initialisiert.
  • Einzelansteuerung (Siehe DALI-Linie #3): Parametrierung und Schaltbefehle werden nur an ein Vorschaltgerät gegeben.

Die DALI-Aktorbausteine kommunizieren über ein Kommunikations-Template RC_DALI_Com, welches für jede DALI-Linie einmalig anzulegen ist. Es handelt sich dabei um das selbe Template, welches auch zur Kommunikation mit DALI-Notbeleuchtung genutzt wird.
Pro DALI-Linie darf dieses Template nur einmal angewendet werden - der Parameter DALI_LINE_NUM ist dabei das eindeutige Charakteristikum. Da die Kommunikation zwischen den Aktorbausteinen und dem Kommunikationsbaustein komplexerer Art ist - es werden Kommandos und Anfragen gesendet aber auch Antworten von den Vorschaltgeräten empfangen - kann diese nicht über eine einfache Verknüpfung realisiert werden. Statt dessen wird an den Testbausteinen durch die Angabe des Parameters DALI_LINE_NUM und der Adresseingabe eindeutig beschrieben, auf welches Vorschaltgerät sich bezogen wird. Die Kommunikation erfolgt dann automatisch im Hintergrund. Vom Kommunikationsbaustein zur I/O-Ebene erfolgt der Datenaustausch über die Verknüpfung im Prozeßabbild.