SimpleReadValue
SimpleReadValue (FB)
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:
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

