SimpleReadValue
SimpleReadValue (FB)
SimpleReadValue (FB)FUNCTION_BLOCK SimpleReadValue
Kurzbeschreibung
Dient zum Auslesen eines Mobuswertes verschiedner Functions Codes sowie verschiedener Datentypen bis 64 Bit Werte. Die auszulesende Adressen werden bei Werte größer 16 bit autmatisch auf bis zu 4 Registerns erweitertn. Über ein Array können die Rohwerte immer direkt verarbeitet werden. Als Parameter gibt es die Möglichkeit Werte direkt zu skalieren.
Darstellung


Auswertung der Istwerte bei den Function-Codes 01 ( Read Coils ) bzw. 02 ( Read Discrete Inputs )
Bei der Auswertung der Istwerte ist nur der Ausgang ‘arwRawValue’ zu beachten. Es handelt sich dabei um ein Array, bestehend aus vier Variablen ‘arwRawValue[0]’ - ‘arwRawValue[3]’ vom Typ WORD ( = 16 Bit ). Die Festlegung der zu übertragenden Bits erfolgt primär durch die Wahl des Function-Codes ( eFunctionCode ) und der Start-Adresse ( wRegisterAddr ). Die Anzahl der zu übertragenden Bits wird durch die Wahl des zu erwartenden Datentyps ( eExpectedType ) festgelegt. Es werden daher je nach Datentyp 16, 32 oder 64 aufeinander folgende Bits übertragen. Es werden immer mindestens 16 aufeinander folgende Bits übertragen. Die Istwerte stehen wie folgt zur Verfügung: 16 übertragene Bits: Istwerte in ‘arwRawValue[0]’ 32 übertragene Bits: Istwerte in ‘arwRawValue[0]’ und ‘arwRawValue[1]’ 64 übertragene Bits: Istwerte in ‘arwRawValue[0]’, ‘arwRawValue[1]’, ‘arwRawValue[2]’ und ‘arwRawValue[3]’ Aufgabe: Lese den Istwert von Coil 17 Einstellungen: eFunctionCode: ReadFunctionCodes.FC01_ReadCoils wRegisterAddr = 17 eExpectedType = EXPECTED_TYPE.TYPE_BYTE ( = 8 Bit ) Aufgrund der Tatsache, dass immer mindestens 16 aufeinander folgende Bits übertragen werden, werden die Istwerte der Coils 17 - 32 angefordert. Nach der erfolgreichen Übertragung stehen die Istwerte in der Variablen ‘arwRawValue[0]’ zur Verfügung: ‘arwRawValue[0].0’: Istwert von Coil 17 ‘arwRawValue[0].1’: Istwert von Coil 18 ‘arwRawValue[0].2’: Istwert von Coil 19 ‘arwRawValue[0].3’: Istwert von Coil 20 ‘arwRawValue[0].4’: Istwert von Coil 21 ‘arwRawValue[0].5’: Istwert von Coil 22 ‘arwRawValue[0].6’: Istwert von Coil 23 ‘arwRawValue[0].7’: Istwert von Coil 24 ‘arwRawValue[0].8’: Istwert von Coil 25 ‘arwRawValue[0].9’: Istwert von Coil 26 ‘arwRawValue[0].10’: Istwert von Coil 27 ‘arwRawValue[0].11’: Istwert von Coil 28 ‘arwRawValue[0].12’: Istwert von Coil 29 ‘arwRawValue[0].13’: Istwert von Coil 30 ‘arwRawValue[0].14’: Istwert von Coil 31 ‘arwRawValue[0].15’: Istwert von Coil 32\
CODESYS
InOut:
Input
xEn
BOOL
TRUE
Freigabe / Sperrung der Kommunikation ( TRUE = Freigabe )
Input
byUnitId
BYTE
0
Adresse des Geräts
Input
xUpdateActual
BOOL
FALSE
Aktualisierung der Istwerte ( bei jeder ansteigenden Flanke )
Input
xResError
BOOL
FALSE
Reinitialisierung der Ausgänge ‘eErrorCodeCom’ bzw. ‘eErrorCodeDev’ auf den fehlerfreien Zustand ( bei jeder ansteigenden Flanke )
Inout
ModbusClient
ModbusClientBase
Client des Geräts
Output
eExpectedTypeFb
EXPECTED_TYPE
Rückmeldung - Erwarteter Datentyp für die empfangenen Modbus-Daten
Output
eFunctionCodeFb
ReadFunctionCodes
Rückmeldung - Modbus-Function-Code für das Modbus-Telegramm
Output
wRegisterAddrFb
WORD
Rückmeldung - Startadresse des Registers für das Modbus- Telegramm
Output
arwRawValue
ARRAY [0..3] OF WORD
Rohwerte der Register des Modbus-Telegramms
Output
rScaleFactorFb
REAL
Rückmeldung - Skalierungsfaktor — Formel: rValue = rawVal * rScaleFactor
Output
xBigEndianFb
BOOL
Rückmeldung - Position des höchstwertigen Elements in einem Datum ( TRUE = niedrigste Speicherstelle )
Output
xSwapValueFb
BOOL
Rückmeldung - Freigabe / Sperrung des Positionswechsels der Bytes eines Registers ( TRUE = Wechsel aktiv )
Output
rValue
REAL
Endwert ( Formel: rValue = rawVal * rScaleFactor ), Parameter: eExpectedType, xSwapValue, xIsBigEndian und rScaleFactor
Output
xAlarm
BOOL
Sammelstörung ( TRUE = Störung )
Output
xAlarmCom
BOOL
Sammelstörung - Kommunikation ( TRUE = Störung )
Output
eErrorCodeCom
ModbusErrorCode
Fehlercode - Kommunikation ( 0 = kein Fehler )
Output
eErrorCodeDev
SIMPLE_READ_VALUE_ERROR_CODE
Fehlercode - Gerät ( 0 = kein Fehler )
Output
xBusy
BOOL
Kommunikationsanzeige ( TRUE = Kommunikation )
Input Const
xBigEndian
BOOL
FALSE
Position der höchstwertigen 16 Bits in einem Datum ( TRUE = höchstwertigste 16 Bit zuerst ) ( nur relevant für 32 / 64 Bit )
Input Const
xSwapValue
BOOL
TRUE
Freigabe / Sperrung des Positionswechsels der Bytes eines Registers ( TRUE = Wechsel aktiv ) ( nur relevant für 32 / 64 Bit )
Input Const
rScaleFactor
REAL
1.0
Skalierungsfaktor — Formel: rValue = rawVal * rScaleFactor
Input Const
eExpectedType
EXPECTED_TYPE
EXPECTED_TYPE.TYPE_UINT16
Erwarteter Datentyp für die empfangenen Modbus-Daten
Input Const
eFunctionCode
ReadFunctionCodes
ReadFunctionCodes.FC03_ReadHoldingRegisters
Modbus-Function-Code für das Modbus-Telegramm
Input Const
wRegisterAddr
WORD
Startadresse des Registers für das Modbus-Telegramm
Input Const
tTimeUpdateActual
TIME
TIME#3s0ms
Updateintervall für die Vorgänge, die durch den Eingang ‘xUpdateActual’ beeinflusst werden
Zuletzt aktualisiert

