|
|||
| Aufgabe 3.1 | Sensorgruppen PROGRAM PLC_PRG VAR (* Adr. ist abhängig von der Gerätekonfiguration *) bySensorgruppe1 AT %IB1:BYTE; bySensorgruppe2 AT %IB2:BYTE; byErgebnis AT %QB0:BYTE; END_VAR byErgebnis:= bySensorgruppe1 XOR bySensorgruppe2; |
||
| Aufgabe 3.2 | Maske PROGRAM PLC_PRG VAR wIn AT %IW1:WORD; wMaske:WORD:= 2#0000_1111_0000_0001; wOut AT %QW0:WORD; END_VAR wOut:=wIn AND wMaske; |
||
| Aufgabe 3.3 | Funktion 2 aus 3 PROGRAM PLC_PRG (****************************************************************** Datentypenumwandlung, Vergleichsoperator: Funktion 2 aus 3 Verändern Sie die Werte von xB1 ... xB3 nach dem Einloggen und Start, xP1 wird TRUE bzw. FALSE. *******************************************************************) VAR xB1 AT %IX2.0:BOOL; xB2 AT %IX2.1:BOOL; xB3 AT %IX2.2:BOOL; xP1 AT %QX0.1:BOOL;(*Anzeige*) END_VAR xP1:= BOOL_TO_USINT(xB1)+ BOOL_TO_USINT(xB2)+ BOOL_TO_USINT(xB3)>= 2; |
||
| Aufgabe 3.4 | Bitmuster und Wert PROGRAM PLC_PRG (****************************************************************** Bitmuster und Wert, Datentyp, Datentypumwandlung, Maske Verändern Sie den Wert von iIn -32768...32767 nach dem Einloggen und Start, beobachten Sie wIn und xP1_neg. Wählen Sie über Menü Debug-Darstellung auch Binär. *******************************************************************) VAR iIn AT %IW0:INT;(*eingeben*) wIn:WORD;(*beobachten*) xP1_neg AT %QX0.0:BOOL;(*ist negativ*) END_VAR wIn:=INT_TO_WORD(iIn); (*iIn positiv oder negativ*) (*ausmaskieren*) xP1_neg:= WORD_TO_BOOL(wIn AND 16#8000); |
||
| Aufgabe 3.5 | Analogwertverarbeitung 1 Lösung 1 PROGRAM PLC_PRG (*Zum Test Wert von rIn verändern*) (*Wandelt -1 1 in -32767 32767*) VAR rIn:REAL;(*-1.0 ... 1.0*) iOut AT %QW0:INT; wOut:WORD; xP1_neg AT %QX2.0:BOOL; END_VAR iOut:= REAL_TO_INT(rIn * 32767.0); wOut:= INT_TO_WORD(iOut); (*Anzeige:Wert ist negativ*) xP1_neg:=WORD_TO_BOOL(wOut AND 16#8000); Lösung 2 PROGRAM PLC_PRG (******************************** Lösung mit Vergleichsoperator, ohne Maske. Zum Test Wert von rIn verändern Wandelt 0...1 in 0...32767. *********************************) VAR rIn:REAL;(*0 ... 1.0*) iOut AT %QW0:INT;(*0 ... 32767*) wOut: WORD; xP1_neg AT %QX2.0: BOOL; END_VAR iOut:= REAL_TO_INT(rIn * 32767.0); (*Anzeige:Wert ist negativ*) xP1_neg:=iOut < 0; |
||
| Aufgabe 3.6 | a) Eindimensionale Feldvariable,
ARRAYS PROGRAM PLC_PRG (****************************************************************** Eindimensionale Feldvariable, ARRAY Zeigt wie eine eindimensionale Feldvariable deklariert und auf Sie zugegriffen wird. *******************************************************************) VAR iPosition: ARRAY[0..4] OF REAL:= -10.5, 20.2, 35.3, 40.0, 55.5; iAnfangsposition, iEndposition: REAL; END_VAR (*Werte aus der Feldvariable auslesen*) iAnfangsposition:= iPosition[0];(*Wert = .....*) iEndposition:= iPosition[4]; b) Zweidimensionale Feldvariable, ARRAY PROGRAM PLC_PRG (***************************************************** Zweidimensionale Feldvariable, ARRAY Zeigt wie eine zweidimensionalen Feldvariable deklariert und auf Sie zugegriffen wird. ******************************************************) VAR iRegal: ARRAY[1..4, 1..3] OF INT:= 5, 45, 2, 8, 67, 5, 10, 1, 3, 9, 23, 4; iID_Nr1, iID_Nr2: INT; END_VAR (*Werte aus der Feldvariable auslesen*) iID_Nr1:= iRegal[1,1];(*iID_Nr1= .....*) iID_Nr2:= iRegal[3,2];(*iID_Nr2= .....*) |
||
| Aufgabe 3.7 | Ausgangsbyte abhängig vom
Eingangsbyte steuern PROGRAM PLC_PRG (****************************************************************** Ausgangsbyte abhängig vom Eingangsbyte steuern, ARRAY, Datentypen- umwandlung, Maske Verändern Sie die zwei niederwertigsten Bits von byIn nach dem Einloggen und Start, beobachten Sie byOut. *******************************************************************) VAR byIn AT %IB4:BYTE; byOut:BYTE; index:INT; out:ARRAY [0..3] OF BYTE:= 16#04,16#03,16#03,16#05; xOut0 AT %QX0.0:BOOL; xOut1 AT %QX0.1:BOOL; xOut2 AT %QX0.2:BOOL; END_VAR index:= BYTE_TO_INT(byIn AND 2#0000_0011); byOut:= out[index]; xOut0:=byOut.0; xOut1:=byOut.1; xOut2:=byOut.2; |
||
| Übung 3.2 | Analogwertverarbeitung 2,
Skalieren PROGRAM PLC_PRG (****************************************************************** Datentypenumwandlung, Skalieren von 0...32760 nach 0...1.0 Verändern Sie die Werte von iTemp_in nach dem Einloggen und Start, beobachten Sie rTemp_out. *******************************************************************) VAR iTemp_in: INT; rTemp_out: REAL; END_VAR rTemp_out:= INT_TO_REAL(iTemp_in) / 327.6; |
||
| Übung 3.3 | Bahnkorrektur mit ARRAY PROGRAM PLC_PRG (****************************************************************** Bahnkorrektur mit ARRAY: Datentypenumwandlung, Maske. Einem bestimmten Eingangsbitmuster wird eine Ausgangsbitmuster nach einer Funktionstabelle zugeordnet. Verändern Sie die Bits 0...2 von Sensoren (Menü Debug-Darstellung) nach dem Einloggen und Start, beobachten Sie die Bits von Ausgaenge. *******************************************************************) VAR bSensoren AT %IB4:BYTE; bOut:Byte; i:INT; xAlarm AT %QX0.0:BOOL; xOk AT %QX0.1:BOOL; xRe AT %QX0.2:BOOL; xLi AT %QX0.3:BOOL; out_tab:ARRAY[0..7] OF BYTE:= 2#0000_0001, 2#0000_0100, 2#0000_0010, 2#0000_0100, 2#0000_1000, 2#0000_0001, 2#0000_1000, 2#0000_0001; END_VAR i:=BYTE_TO_INT(bSensoren AND 2#0000_0111); bOut:= out_tab[i]; xAlarm:= bOut.0; xOk:= bOut.1; xRe:= bOut.2; xLi:= bOut.3; |
||
| Bandanlage | Lösung | ||
© Vogel Buchverlag |
|||