Tagessicherung
This commit is contained in:
67
src/FSI Funktionen/IBA/IbaSimDatFrmWrkSt.scl
Normal file
67
src/FSI Funktionen/IBA/IbaSimDatFrmWrkSt.scl
Normal file
@@ -0,0 +1,67 @@
|
||||
FUNCTION_BLOCK "IbaSimDatFrmWrkSt"
|
||||
{ S7_Optimized_Access := 'FALSE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
I_Data : Any; // Eingangsdaten
|
||||
END_VAR
|
||||
|
||||
VAR_IN_OUT
|
||||
IO_Cmd : "IbaSimDatFrmWrkSt.T_Cmd"; // Triggersignal
|
||||
IO_Data { S7_HMI_Visible := 'False'} : Any; // Datenausgabe
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
adr : Int; // Adresszähler
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
pTmpData : Any; // Pointer Tmp-Daten
|
||||
pTmpDataAny AT pTmpData : "Any.T_AnyPoint"; // Pointer Tmp-Daten Detail
|
||||
noElements : Int; // Anzahl der Elemente
|
||||
flt : Int; // Fehler von Blkmov
|
||||
adrOffSet : Int; // Adress-Offset
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
(*#################################################################################################
|
||||
|
||||
Copyright (c) Fondium Singen GmbH
|
||||
|
||||
### Änderungshistorie ###
|
||||
|
||||
Datum: Version: Bearbeiter: Beschreibung:
|
||||
10.03.2021 0.0 St. Maier Neuerstellung
|
||||
|
||||
|
||||
#################################################################################################*)
|
||||
|
||||
IF NOT #IO_Cmd.Frg OR NOT #IO_Cmd.PcSnd THEN
|
||||
RETURN;
|
||||
END_IF;
|
||||
|
||||
// Pointer initizialisieren
|
||||
#pTmpData := #I_Data;
|
||||
|
||||
// Anzahl der Einzelelemente/Typen bestimmen
|
||||
#noElements := "Any.NoOfBytes"(#I_Data) / "Any.NoOfBytes"(#IO_Data) - 1;
|
||||
|
||||
// // Adressgrenzen überwachen
|
||||
// IF #adr >= #adrOffSet + #noElements * "Any.NoOfBytes"(#IO_Data) THEN
|
||||
// #adr := #adrOffSet;
|
||||
// END_IF;
|
||||
|
||||
// Byte-Offset berechnen
|
||||
#adrOffSet := "Any.GetOffset"(#I_Data);
|
||||
|
||||
// Daten zum Kopieren zusammenstellen
|
||||
#pTmpDataAny.BytePointer := #pTmpDataAny.BytePointer OR SHL(IN := WORD_TO_DWORD(INT_TO_WORD(#adrOffSet)), N := 3); // Byte-Adresse in Pointer laden
|
||||
#pTmpDataAny.DataCount := "Any.NoOfBytes"(#IO_Data); // Länge
|
||||
|
||||
// Daten kopieren und am Ausgang bereitstellen
|
||||
#flt := BLKMOV(SRCBLK := #pTmpData, DSTBLK => #IO_Data); // Eingangs-Daten kopieren
|
||||
#IO_Cmd.NewDat := false;
|
||||
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
Reference in New Issue
Block a user