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 Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

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.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
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®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® 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, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die Beckhoff Automation GmbH, Deutschland.

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.


Einleitung

Die vorliegenden Funktionsbausteine vereinfachen den Datenaustausch zwischen TwinCAT SPS-Laufzeitsystemen und/oder anderen ADS-Geräten (TwinCAT NC, Busklemmen Controller, ...).

Die Funktionsbausteine FB_WriteXXXOnDelta() führen einen Schreibvorgang aus, wenn das Eingangssignal einen bestimmten Grenzwert über-/ bzw. unterschritten hat. Wie oft das Eingangssignal überprüft werden soll, kann eingestellt werden. Durch das ereignisgesteuerte Schreiben der Daten wird die Belastung der Feldbusses minimiert. Tritt bei der Übertragung ein Fehler auf, so wird der Vorgang solange wiederholt, bis die Verbindung wieder vorhanden ist. Als Quell- und Zielvariablen sind alle, in der TwinCAT PLC unterstützten Datentypen zugelassen. Symbolnamen werden ebenfalls unterstützt.

Die Funktionsbausteine FB_XXXAdsSymByName() führen einen Schreib- bzw. Lesevorgang über den Namen der SPS-Variablen aus.

Zur Überwachung einzelner Kommunikationspartner stehen Watchdog-Bausteine zur Verfügung. Der zu überwachende Teilnehmer versendet zyklisch einen inkrementierenden Zähler. Bei dem Empfänger wird überprüft, ob sich der Zählerstand innerhalb einer bestimmten Zeit ändert.


Übertragungsbausteine Übersicht

TwinCAT PLC Lib: Data Exchange

Schreib-/Lesebausteine

Name | Beschreibung
FB_ReadAdsSymByName | Liest eine Variable eines beliebigen Datentyps per Variablenname
FB_WriteAdsSymByName | Schreibt eine Variable eines beliebigen Datentyps per Variablenname
FB_WriteBoolOnDelta | Schreibt ereignisgesteuert eine Variable vom Typ BOOLEAN
FB_WriteByteOnDelta | Schreibt ereignisgesteuert eine Variable vom Typ BYTE
FB_WriteWordOnDelta | Schreibt ereignisgesteuert eine Variable vom Typ WORD
FB_WriteDWordOnDelta | Schreibt ereignisgesteuert eine Variable vom Typ DWORD
FB_WriteRealOnDelta | Schreibt ereignisgesteuert eine Variable vom Typ REAL
FB_WriteLRealOnDelta | Schreibt ereignisgesteuert eine Variable vom Typ LREAL


FB_ReadAdsSymByName

Der Baustein ermöglicht das Lesen eines beliebigen Wertes von einer anderen Steuerung, mit Hilfe des Symbolnamens.

Bei einer positiven Flanke am Eingang bRead liest der Baustein den Wert der Variablen sVarName aus von dem ausgewählten ADS-Gerätes (z.B. SPS). Das ADS-Gerät wird durch die AMS-NetId (sNetId) und der AMS-Portnummer (nPort) angegeben. Der Wert wird in die Variable geschrieben, auf der nDestAddr zeigt.

Mit Hilfe des Eingangs eComMode kann die interne Arbeitsweise des Bausteins verändert werden:

eComMode := eAdsComModeSecureCom: Nach jedem Lesevorgang wird der Handle der SPS-Variablen wieder freigegeben. Dieser Modus sollte verwendet werden, wenn sehr langsam Werte ausgetauscht werden.

eComMode := eAdsComModeFastCom: Solange sich die Eingänge sVarName, sNetID und nPort nicht ändern, wird der Handle der SPS-Variablen nicht nach jedem Lesevorgang freigegeben. Dieser Modus sollte verwendet werden, wenn sehr häufig Werte ausgetauscht werden.

VAR_INPUT

bRead            : BOOL;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
sVarName         : STRING;
nDestAddr        : DWORD;
nLen             : UDINT;
tTimeout         : TIME := DEFAULT_ADS_TIMEOUT;
eComMode         : E_AdsComMode := eAdsComModeSecureCom;
bRead: Baustein liest den Inhalt der Variablen sVarName des ausgewählten ADS-Gerätes und schreibt diese in die Variable auf die der Zeiger nDestAddr zeigt.
sNetId: AMS-NetId des ADS-Gerätes, von dem der Wert gelesen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, von dem der Wert gelesen werden soll.
sVarName: Symbolname der zu lesenden Variablen auf dem ausgewählten ADS-Gerät.
nDestAddr: Adresse der Variablen, in der der gelesene Wert geschrieben wird.
nLen: Länge der zu lesenden Variable in Byte.
tTimeout: Zeit bis zum Abbruch der Abarbeitung.
eComMode: Enum, mit dem bestimmt wird ob der Handle der SPS-Variablen nach jedem Lesen wieder freigegeben wird.

VAR_OUTPUT

bBusy            : BOOL;
bError           : BOOL;
nErrorId         : UDINT;
bBusy: Übertragung ist aktiv.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: ADS-Fehlernummer, falls ein Fehler aufgetreten ist.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 ab Build 2247 | PC/CX | TcDataExchange-Bibliothek ab V1.1.0


FB_WriteAdsSymByName

Schreiben eines beliebigen Wertes auf eine andere Steuerung mit Hilfe des Symbolnamens.

Bei einer positiven Flanke am Eingang bWrite schreibt der Baustein den Wert auf den der Zeiger nSrcAddr zeigt, in die Variable sVarName des ausgewählten ADS-Gerätes (z.B. SPS). Das ADS-Gerät wird durch die AMS-NetId (sNetId) und der AMS-Portnummer (nPort) angegeben.

Mit Hilfe des Eingangs eComMode kann die interne Arbeitsweise des Bausteins verändert werden:

eComMode := eAdsComModeSecureCom: Nach jedem Schreibvorgang wird der Handle der SPS-Variablen wieder freigegeben. Dieser Modus sollte verwendet werden, wenn sehr langsam Werte ausgetauscht werden.

eComMode := eAdsComModeFastCom: Solange sich die Eingänge sVarName, sNetID und nPort nicht ändern, wird der Handle der SPS-Variablen nicht nach jedem Schreibvorgang freigegeben. Dieser Modus sollte verwendet werden, wenn sehr häufig Werte ausgetauscht werden.

VAR_INPUT

bWrite           : BOOL;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
sVarName         : STRING;
nSrcAddr         : DWORD;
nLen             : UDINT;
tTimeout         : TIME := DEFAULT_ADS_TIMEOUT;
eComMode         : E_AdsComMode := eAdsComModeSecureCom;
bWrite: Baustein schreibt den Inhalt der Variablen, auf den der Zeiger nSrcAddr zeigt, in die Variable sVarName des ausgewählten ADS-Gerätes.
sNetId: AMS-NetId des ADS-Gerätes, zu dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, zu dem der Wert übertragen werden soll.
sVarName: Symbolname der zu beschreibenden Variablen auf dem ausgewählten ADS-Gerät.
nSrcAddr: Adresse der Variablen, in der der zu schreibende Wert steht.
nLen: Länge der zu schreibenden Variablen in Byte.
tTimeout: Zeit bis zum Abbruch der Abarbeitung.
eComMode: Enum, mit dem bestimmt wird ob der Handle der SPS-Variablen nach jedem Schreiben wieder freigegeben wird.

VAR_OUTPUT

bBusy            : BOOL;
bError           : BOOL;
nErrorId         : UDINT;
bBusy: Übertragung ist aktiv.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: ADS-Fehlernummer, falls ein Fehler aufgetreten ist.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 ab Build 2247 | PC/CX | TcDataExchange-Bibliothek ab V1.1.0


FB_WriteBoolOnDelta

Ereignisgesteuertes Schreiben einer Variablen vom Typ BOOLEAN.

Der Funktionsbaustein FB_WriteBoolOnDelta() überprüft zyklisch, ob sich der Wert am Eingang bSignal geändert hat. Die Zykluszeit, für die Überprüfung wird durch den Parameter tCycleTime bestimmt. Wird für tCycleTime 0 sec angegeben, so wird in jedem SPS-Zyklus das Eingangssignal überprüft. Wurde eine Änderung erkannt, so wird der Wert des Signals an das angegebende ADS-Gerät verschickt. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Signals.

VAR_INPUT

bEnable          : BOOL := FALSE;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp          : UDINT;
nIdxOffs         : UDINT;
sVarName         : STRING;
bSignal          : BOOL;
tCycleTime       : TIME := t#0s;
bSendNow         : BOOL;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
bSignal: Variable, dessen Wert übertragen werden soll.
tCycleTime: Zykluszeit, in der überprüft wird, ob sich das Eingangssignal geändert hat.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.

VAR_OUTPUT

bBusy            : BOOL;
bLastSignal      : BOOL;
bError           : BOOL;
nErrorId         : UDINT;
nErrorCnt        : UDINT;
bBusy: Übertragung ist aktiv.
bLastSignal: zuletzt übertragender Wert.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
nErrorCnt: Anzahl der fehlerhaften Übertragungsversuche.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


FB_WriteByteOnDelta

Ereignisgesteuertes Schreiben einer Variablen vom Typ BYTE.

Der Funktionsbaustein FB_WriteByteOnDelta() überprüft zyklisch, ob sich der Wert am Eingang nSignal geändert hat. Die Zykluszeit, für die Überprüfung wird durch den Parameter tCycleTime bestimmt. Wird für tCycleTime 0 sec angegeben, so wird in jedem SPS-Zyklus das Eingangssignal überprüft. Wird bei dem Vergleich festgestellt, das der aktuelle Wert um nUpperLimit größer ist oder um den Wert nLowerLimit kleiner ist, so wird der Wert des Signals an das angegebende ADS-Gerät verschickt. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Signals.

VAR_INPUT

bEnable          : BOOL := FALSE;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp          : UDINT;
nIdxOffs         : UDINT;
sVarName         : STRING;
nSignal          : BYTE;
nLowerLimit      : BYTE;
nUpperLimit      : BYTE;
tCycleTime       : TIME := t#0s;
bSendNow         : BOOL;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nSignal: Variable, dessen Wert übertragen werden soll.
nLowerLimit: unterer Grenzwert.
nUpperLimit: oberer Grenzwert.
tCycleTime: Zykluszeit, in der überprüft wird, ob das Eingangssignal die Grenzwerte überschritten hat.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.

VAR_OUTPUT

bBusy            : BOOL;
nLastSignal      : BYTE;
bError           : BOOL;
nErrorId         : UDINT;
nErrorCnt        : UDINT;
bBusy: Übertragung ist aktiv.
nLastSignal: zuletzt übertragender Wert.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
nErrorCnt: Anzahl der fehlerhaften Übertragungsversuche.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


FB_WriteWordOnDelta

Ereignisgesteuertes Schreiben einer Variablen vom Typ WORD.

Der Funktionsbaustein FB_WriteWordOnDelta() überprüft zyklisch, ob sich der Wert am Eingang nSignal geändert hat. Die Zykluszeit, für die Überprüfung wird durch den Parameter tCycleTime bestimmt. Wird für tCycleTime 0 sec angegeben, so wird in jedem SPS-Zyklus das Eingangssignal überprüft. Wird bei dem Vergleich festgestellt, das der aktuelle Wert um nUpperLimit größer ist oder um den Wert nLowerLimit kleiner ist, so wird der Wert des Signal an das angegebende ADS-Gerät verschickt. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Signal.

VAR_INPUT

bEnable          : BOOL := FALSE;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp          : UDINT;
nIdxOffs         : UDINT;
sVarName         : STRING;
nSignal          : WORD;
nLowerLimit      : WORD;
nUpperLimit      : WORD;
tCycleTime       : TIME := t#0s;
bSendNow         : BOOL;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nSignal: Variable, dessen Wert übertragen werden soll.
nLowerLimit: unterer Grenzwert.
nUpperLimit: oberer Grenzwert.
tCycleTime: Zykluszeit, in der überprüft wird, ob das Eingangssignal die Grenzwerte überschritten hat.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.

VAR_OUTPUT

bBusy            : BOOL;
nLastSignal      : WORD;
bError           : BOOL;
nErrorId         : UDINT;
nErrorCnt        : UDINT;
bBusy: Übertragung ist aktiv.
nLastSignal: zuletzt übertragender Wert.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
nErrorCnt: Anzahl der fehlerhaften Übertragungsversuche.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


FB_WriteDWordOnDelta

Ereignisgesteuertes Schreiben einer Variablen vom Typ DWORD.

Der Funktionsbaustein FB_WriteDWordOnDelta() überprüft zyklisch, ob sich der Wert am Eingang nSignal geändert hat. Die Zykluszeit, für die Überprüfung wird durch den Parameter tCycleTime bestimmt. Wird für tCycleTime 0 sec angegeben, so wird in jedem SPS-Zyklus das Eingangssignal überprüft. Wird bei dem Vergleich festgestellt, das der aktuelle Wert um nUpperLimit größer ist oder um den Wert nLowerLimit kleiner ist, so wird der Wert des Signals an das angegebende ADS-Gerät verschickt. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Signals.

VAR_INPUT

bEnable          : BOOL := FALSE;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp          : UDINT;
nIdxOffs         : UDINT;
sVarName         : STRING;
nSignal          : DWORD;
nLowerLimit      : DWORD;
nUpperLimit      : DWORD;
tCycleTime       : TIME := t#0s;
bSendNow         : BOOL;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nSignal: Variable, dessen Wert übertragen werden soll.
nLowerLimit: unterer Grenzwert.
nUpperLimit: oberer Grenzwert.
tCycleTime: Zykluszeit, in der überprüft wird, ob das Eingangssignal die Grenzwerte überschritten hat.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.

VAR_OUTPUT

bBusy            : BOOL;
nLastSignal      : DWORD;
bError           : BOOL;
nErrorId         : UDINT;
nErrorCnt        : UDINT;
bBusy: Übertragung ist aktiv.
nLastSignal: zuletzt übertragender Wert.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
nErrorCnt: Anzahl der fehlerhaften Übertragungsversuche.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


FB_WriteRealOnDelta

Ereignisgesteuertes Schreiben einer Variablen vom Typ REAL.

Der Funktionsbaustein FB_WriteRealOnDelta() überprüft zyklisch, ob sich der Wert am Eingang fSignal geändert hat. Die Zykluszeit, für die Überprüfung wird durch den Parameter tCycleTime bestimmt. Wird für tCycleTime 0 sec angegeben, so wird in jedem SPS-Zyklus das Eingangssignal überprüft. Wird bei dem Vergleich festgestellt, das der aktuelle Wert um fUpperLimit größer ist oder um den Wert fLowerLimit kleiner ist, so wird der Wert des Signals an das angegebende ADS-Gerät verschickt. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Je nach verwenderter Hardware ist die interne Darstellung von Fließkommazahlen unterschiedlich. Während Intel das 'little endian'-Format benutzt, wird bei Motorola-basierter Hardware das 'big-endian'-Format angewendet. Um einen Austausch von Fließkommazahlen zu ermöglichen, kann durch die Eingangsvariable bSwapLowHighWord eine Anpassung durchgeführt werden. Dieses ist z.B. nötig, wenn zwischen der TwinCAT SPS auf einem PC und einen BC9000 Fließkommazahlen ausgetauscht werden sollen.

Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Signals.

VAR_INPUT

bEnable            : BOOL := FALSE;
sNetId             : T_AmsNetId;
nPort              : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp            : UDINT;
nIdxOffs           : UDINT;
sVarName           : STRING;
fSignal            : REAL;
fLowerLimit        : REAL;
fUpperLimit        : REAL;
tCycleTime         : TIME := t#0s;
bSendNow           : BOOL;
bSwapLowHighWord   : BOOL := FALSE;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
fSignal: Variable, dessen Wert übertragen werden soll.
fLowerLimit: unterer Grenzwert.
fUpperLimit: oberer Grenzwert.
tCycleTime: Zykluszeit, in der überprüft wird, ob das Eingangssignal die Grenzwerte überschritten hat.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.
bSwapLowHighWord: Das niederwertige und das höherwertige WORD werden gedreht.

VAR_OUTPUT

bBusy              : BOOL;
fLastSignal        : REAL;
bError             : BOOL;
nErrorId           : UDINT;
nErrorCnt          : UDINT;
bBusy: Übertragung ist aktiv.
fLastSignal: zuletzt übertragender Wert.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
nErrorCnt: Anzahl der fehlerhaften Übertragungsversuche.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


FB_WriteLRealOnDelta

Ereignisgesteuertes Schreiben einer Variablen vom Typ LREAL.

Der Funktionsbaustein FB_WriteLRealOnDelta() überprüft zyklisch, ob sich der Wert am Eingang fSignal geändert hat. Die Zykluszeit, für die Überprüfung wird durch den Parameter tCycleTime bestimmt. Wird für tCycleTime 0 sec angegeben, so wird in jedem SPS-Zyklus das Eingangssignal überprüft. Wird bei dem Vergleich festgestellt, das der aktuelle Wert um fUpperLimit größer ist oder um den Wert fLowerLimit kleiner ist, so wird der Wert des Signals an das angegebende ADS-Gerät verschickt. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Signals.

VAR_INPUT

bEnable          : BOOL := FALSE;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp          : UDINT;
nIdxOffs         : UDINT;
sVarName         : STRING;
fSignal          : LREAL;
fLowerLimit      : LREAL;
fUpperLimit      : LREAL;
tCycleTime       : TIME := t#0s;
bSendNow         : BOOL;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
fSignal: Variable, dessen Wert übertragen werden soll.
fLowerLimit: unterer Grenzwert.
fUpperLimit: oberer Grenzwert.
tCycleTime: Zykluszeit, in der überprüft wird, ob das Eingangssignal die Grenzwerte überschritten hat.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.

VAR_OUTPUT

bBusy            : BOOL;
fLastSignal      : LREAL;
bError           : BOOL;
nErrorId         : UDINT;
nErrorCnt        : UDINT;
bBusy: Übertragung ist aktiv.
fLastSignal: zuletzt übertragender Wert.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
nErrorCnt: Anzahl der fehlerhaften Übertragungsversuche.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX | TcDataExchange-Bibliothek ab V1.0.0


Überwachungsbausteine Übersicht

TwinCAT PLC Lib: Data Exchange

Überwachungsbausteine

Name | Beschreibung
FB_CheckWatchdog | Überwacht das empfangende Watchdogsignal
FB_WriteWatchdog | Schreibt zyklisch ein Watchdogsignal (inkrementierender Zähler)


FB_CheckWatchdog

Überwachen eines Watchdogsignals, welches mit dem Baustein FB_WriteWatchdog() übertragen wird.

Das zu überwachende Gerät verschickt regelmäßig einen sich ändernen Zählerstand an das Gerät, welches die Übertragung kontrollieren soll. Dort wird mit Hilfe des Funktionsbausteins FB_CheckWatchdog() der Zählerstand überwacht.

Ändert sich dieser innerhalb einer bestimmten Zeit nicht, so wird der Ausgang bWatchdog auf TRUE gesetzt. Wird für tWatchdogTime ein Wert von 0 sec angegeben, so wird das Signal bWatchdog auf FALSE gesetzt. Die Zeit tWachtdogTime sollte ein vielfaches (5-10fach) der Zeit sein, in der das Überwachungssignal zugeschickt wird.

VAR_INPUT

bEnable          : BOOL := FALSE;
tWatchdogTime    : TIME := t#0s;
nCnt             : UDINT;
bEnable: Baustein Freischalten.
tWatchdogTime: Zeitdauer, in der sich nCnt ändern muß.
nCnt: aktueller Zählerstand des Watchdogsignals

VAR_OUTPUT

bWatchdog        : BOOL;
nLastCnt         : UDINT;
bWatchdog: FALSE signalisiert ein gültiges Überwachungssignal. Wird für die Zeitdauer tWatchdogTime keine Änderung von nCnt erkannt, so geht der Ausgang auf TRUE.
nLastCnt: letzter, erfolgreich übertragender Zählerstand des Überwachungssignals.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


FB_WriteWatchdog

Schreiben eines Watchdogsignals in ein anderes ADS-Gerät (TwinCAT PLC, Busklemmen Controller, ...).

Der Funktionsbaustein FB_WriteWatchdog() schreibt zyklisch einen 32-Bit Zähler in einen anderes ADS-Gerät. Bei jeder erfolgreichen Übertragung wird der Zähler inkrementiert. Beim Empfänger kann mit Hilfe des Bausteine FB_CheckWatchdog() dieses Signal ausgewertet werden. Adressiert wird der Empfänger durch die AMS-NetId und durch die Portnummer (siehe auch Identifikation ADS-Gerät). Die Position innerhalb des Empfängers wird durch die Index-Group/Index-Offset oder dem Symbolnamen angegeben. Üblicherweise ist dieses das Eingangsabbild oder der Merkerbereich.

Damit der Zählerstand nicht zu häufig übertragen wird, sollte die Zeit tWachtdogTime nicht kleiner als 1 sec sein. Wird für tWatchdogTime 0 sec angegeben, so wird die Übertragung des Signals gesperrt. Beachten sie bitte auch die Beschreibung vom Baustein FB_CheckWatchdog().
Wird der Eingang bEnable auf FALSE gesetzt, so erfolgt keine weitere Übertragung des Watchdogsignals.

VAR_INPUT

bEnable          : BOOL := FALSE;
sNetId           : T_AmsNetId;
nPort            : T_AmsPort := AMSPORT_R0_PLC_RTS1;
nIdxGrp          : UDINT;
nIdxOffs         : UDINT;
sVarName         : STRING;
tWatchdogTime    : TIME := t#0s;
bSendNow         : BOOL;
bEnable: Baustein Freischalten.
sNetId: AMS-NetId des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nPort: AMS-Portnummer des ADS-Gerätes, nach dem der Wert übertragen werden soll.
nIdxGrp: Index-Group innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
nIdxOffs: Index-Offset innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
sVarName: Symbolname innerhalb des ADS-Gerätes, in der der Wert übertragen werden soll.
tWatchdogTime: Zykluszeit, in der das Watchdogsignal übertragen wird.
bSendNow: Durch eine positive Flanke wird der Wert unmittelbar übertragen.

VAR_OUTPUT

bBusy            : BOOL;
nLastCnt         : UDINT;
bError           : BOOL;
nErrorId         : UDINT;
bBusy: Übertragung ist aktiv.
nLastCnt: zuletzt übertragender Zählerstand.
bError: Bei der Übertragung ist ein Fehler aufgetreten.
nErrorId: Fehlernummer, falls ein Fehler aufgetreten ist.
Entwicklungsumgebung | Zielsystem | erforderliche Bibliotheken
TwinCAT 2.11 R3/x64 | PC/CX, BX oder BC | TcDataExchange-Bibliothek ab V1.0.0


E_AdsComMode

TYPE E_AdsComMode :
(
  eAdsComModeSecureCom  := 0,
  eAdsComModeFastCom    := 1
);
END_TYPE


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.