For the complete documentation index, see llms.txt. This page is also available as Markdown.

SimpleReadValue

SimpleReadValue (FB)

FUNCTION_BLOCK SimpleReadValue

Kurzbeschreibung

Dient zum Auslesen eines Modbuswertes verschiedener Functions Codes sowie verschiedener Datentypen bis 64 Bit Werte. Die auszulesenden Adressen werden bei Werten größer 16 bit automatisch auf bis zu 4 Register erweitert. Ü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