-> Hier kostenlos registrieren
Abend Community,
ich steh grad ein wenig auf dem Schlauch, war schon wieder etwas länger her.
Folgenden Code möchte ich in eine For-Schleife packen:
Bausteinschnittstelle:
Input:
- Variable "w_EingangsWort" Datentyp: Word
Output:
- x_Bit0 bis x_Bit15 Typ: Bool
Temp:
- Variable: "w_ZwischenSpeicher" Typ: Word
- Variable: "ui_"VergleichsWert" Typ: UInt
Jetzt stottere ich hier rum & weiß nicht, wie ich die For-Schleife:
belegen muss..
Mag mir bitte jemand einen Anfangstipp geben? Wäre lieb
lg
-3D-
ich steh grad ein wenig auf dem Schlauch, war schon wieder etwas länger her.
Folgenden Code möchte ich in eine For-Schleife packen:
Bausteinschnittstelle:
Input:
- Variable "w_EingangsWort" Datentyp: Word
Output:
- x_Bit0 bis x_Bit15 Typ: Bool
Temp:
- Variable: "w_ZwischenSpeicher" Typ: Word
- Variable: "ui_"VergleichsWert" Typ: UInt
Code:
// EingangsWort in Zwischenspeicher transferieren
#w_ZwischenSpeicher:=#w_EingangsWort;
// Konvertiere Variable "w_ZwischenSpeicher" in Datentyp UINT & transferiere in Variable "ui_VergleichsWert
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
// Wenn das Eingangswort einen Dezimalwert gleich oder größer 32768 (letztes Bit) wird Bit15 true
IF #ui_VergleichsWert>=32768 THEN
#x_Bit15 := true;
END_IF;
// Bit14
// Verschiebe alle Bits um eine Stelle nach links -> Das vorletze Bit (14) wird nun an die Stelle 15 gerückt
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
//Siehe Zeile 4:
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
// Wenn Vergleichswert größer oder gleich dem Wert des letzten Bit´s
// wird durch die Verschiebungsfunktion in Zeile 14 das nun entsprechend letzte Bit logisch 1
IF #ui_VergleichsWert>=32768 THEN
#x_Bit14 := true;
END_IF;
//Bit 13
// Wiederhole bis Bit1
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit13 := true;
END_IF;
//Bit 12
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit12 := true;
END_IF;
//Bit 11
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit11 := true;
END_IF;
//Bit 10
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit10 := true;
END_IF;
//Bit 9
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit9 := true;
END_IF;
//Bit 8
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit8 := true;
END_IF;
//Bit 7
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit7 := true;
END_IF;
//Bit 6
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit6 := true;
END_IF;
//Bit 5
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit5 := true;
END_IF;
//Bit 4
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit4 := true;
END_IF;
//Bit 3
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit3 := true;
END_IF;
//Bit 2
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit2 := true;
END_IF;
//Bit 1
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit1 := true;
END_IF;
//Bit 0
#w_ZwischenSpeicher := SHL(IN:=#w_ZwischenSpeicher, N:=1);
#ui_VergleichsWert :=WORD_TO_UINT (#w_ZwischenSpeicher);
IF #ui_VergleichsWert>=32768 THEN
#x_Bit0 := true;
END_IF;
Jetzt stottere ich hier rum & weiß nicht, wie ich die For-Schleife:
Code:
FOR _counter_ := _start_count_ TO _end_count_ DO
// Statement section FOR
;
END_FOR;
belegen muss..
Mag mir bitte jemand einen Anfangstipp geben? Wäre lieb
lg
-3D-