Umrichter // IP 80 -> Hilfsenergie sIpAddress : STRING(80); END_VAR VAR_OUTPUT lrEnergyFromGrid : LREAL; lrEnergyIntoGrid : LREAL; xBusy : BOOL; xError : BOOL; END_VAR VAR _fbReadRegs : FB_MBReadRegs; _awWordArray : ARRAY[0..3] OF WORD; _awSwapped : ARRAY[0..3] OF WORD; _udiErrorId : UDINT; _fbGetEnergyCounters : R_TRIG; _xResetEnergyCounter : BOOL; _iState : INT := 0; END_VAR ]]> , bError=> , nErrId=> , cbRead=> ); IF (NOT _fbReadRegs.bBusy) AND (NOT _fbReadRegs.bError) THEN _fbReadRegs(bExecute := FALSE); SwapArray(); MEMCPY(ADR(lrEnergyFromGrid), ADR(_awSwapped), 8); _iState := 20; END_IF IF _fbReadRegs.bError THEN xBusy := FALSE; xError := TRUE; _udiErrorId := _fbReadRegs.nErrId; lrEnergyFromGrid := 0; _fbReadRegs(bExecute := FALSE); _iState := 1000; END_IF 20: // Read energy to grid _fbReadRegs( sIPAddr:= '192.168.42.75', nTCPPort:= 502, nUnitID:= 16#FF, nQuantity:= 4, nMBAddr:= 8196, cbLength:= SIZEOF(_awWordArray), pDestAddr:= ADR(_awWordArray), bExecute:= TRUE, tTimeout:= , bBusy=> , bError=> , nErrId=> , cbRead=> ); IF (NOT _fbReadRegs.bBusy) AND (NOT _fbReadRegs.bError) THEN _fbReadRegs(bExecute := FALSE); SwapArray(); MEMCPY(ADR(lrEnergyIntoGrid), ADR(_awSwapped), 8); _iState := 0; xBusy := FALSE; END_IF IF _fbReadRegs.bError THEN xBusy := FALSE; xError := TRUE; _udiErrorId := _fbReadRegs.nErrId; lrEnergyIntoGrid := 0; _fbReadRegs(bExecute := FALSE); _iState := 0; END_IF END_CASE]]>