FB_WriteRealOnDelta

FB_WriteRealOnDelta 1:

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, dass der aktuelle Wert um fUpperLimit größer ist oder um den Wert fLowerLimit kleiner ist, so wird der Wert des Signals an das angegebene 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 verwunderter 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.

Voraussetzungen

Entwicklungsumgebung

Zielsystem

erforderliche Bibliotheken

TwinCAT 2.11 R3/x64

PC/CX, BX oder BC

TcDataExchange-Bibliothek ab V1.0.0