SimpleReadValue

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:

Scope
Name
Type
Initial
Comment

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