OP
MatthiasH24
Level-1
- Beiträge
- 132
- Reaktionspunkte
- 6
-> Hier kostenlos registrieren
Weiß zu dem beispiel niemand was?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
VAR_INPUT
x : INT;
END_VAR
VAR_OUTPUT
DBNR: INT;
END_VAR
VAR_TEMP
// temporäre Variablen
MYPOINTER : ANY;
AnyPointer AT MYPOINTER: STRUCT
ID : BYTE;
TYP : BYTE;
ANZ : WORD;
DBNR : WORD;
BZ : DWORD;
END_STRUCT;
END_VAR
BEGIN
MYPOINTER := x;
DBNR := WORD_TO_INT(AnyPointer.DBNR);
END_FUNCTION_block
VAR_INPUT
x : [COLOR=red]ANY[/COLOR];
[COLOR=red] AnyPointer AT x : STRUCT
ID : BYTE;
TYP : BYTE;
ANZ : WORD;
DBNR : WORD;
BZ : DWORD;
END_STRUCT;[/COLOR]
END_VAR
VAR_OUTPUT
DBNR: INT;
END_VAR
VAR_TEMP
// temporäre Variablen
END_VAR
BEGIN
DBNR := WORD_TO_INT(AnyPointer.DBNR);
END_FUNCTION_block
call FB10
x := p#DB10.DBX0.0
DBNR := MW10
myVar := EW10 ;
L #ZAE1; //Lade Speicherstelle
SLW 3; //Schalterstellung in BYTE Adressieren
T #ADRZ; //Transferie in Adressregister
U #Z_1;
FP #FO1;
SPBNB M001;
L #XW_E; //lade Einzulesender Wert
T DBW [#ADRZ];
L #ZAE1; //alte Speicherstelle
+ 2; //erhöhe die Speicherstelle um 2
T #ZAE1; //neue Speicherstelle
L #ZAE3; //lade Anzahl einzulesende/auszulesende Stellen
+ 1; //erhöhe um 1
T #ZAE3; //Transferiere
L #LAE; //Lade maximale Anzahl der Speicherstellen
L -1; //Lade -1
+I; //Addiere -1 von alten Wert
L 2; //L 2
*I ; //Multipliziere LAE um den Faktor 2
L #ZAE1; //Lade Speicherstelle ZAE1
TAK;
>I;
Spbn M001; // Springe Bedingt zu M001 ( wenn Akku 1 nicht größer als Akku2)
L 0; // L 0
T #ZAE1; // Transferie '0' in den zeiger der einzulesenden Daten
M001: nop 0; // falls Sprung NOP 0 (no operation)
ich wollte damit nur sagen das ich nur SCL programmieren darf. Weil du meintest das es eventuell nicht dafür geeignet ist.
ja ich habe nie behauptet das es das dafür nicht geeignet ist. ich bekomme es nur im Mom nicht hin...
FUNCTION_BLOCK FB1
VAR_INPUT
Wert1 : ARRAY [1..32] OF BOOL;
Wert2 : ARRAY [1..32] OF BOOL;
F2 : BOOL;
END_VAR
VAR_OUTPUT
erg: BOOL;
Berechnung: BOOL;
END_VAR
VAR
edge : BOOL := 0;
ix : INT;
FP: BOOL;
END_VAR
BEGIN
FP := NOT(F2) AND Edge; //F_Trig Funktion
edge := F2; //F_Tric Funktion
IF FP THEN
IF wert1[ix] <> wert2[ix] then
ix := ix +1;
erg := TRUE;
ELSE
erg := FALSE;
END_IF;
END_IF;
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB1
VAR_INPUT
Wert1 : ARRAY [1..32] OF BOOL;
dw_Wert1 at Wert1 : dword ;
Wert2 : ARRAY [1..32] OF BOOL;
dw_Wert2 at Wert2 : dword ;
F2 : BOOL;
END_VAR
VAR_OUTPUT
erg: BOOL;
Berechnung: BOOL;
END_VAR
VAR
edge : BOOL := 0;
ix : INT;
FP: BOOL;
END_VAR
BEGIN
IF F2 and not Edge THEN
dw_wert1 <> dw_wert2 then
erg := TRUE;
ELSE
erg := FALSE;
END_IF;
END_IF;
edge := F2; //F_Tric Funktion
END_FUNCTION_BLOCK
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen