| Aufgabe 11.3 |
Würfelspiel PIG Die
Importdatei auf InfoClick enthält noch eine
Visualisierung
PROGRAM PLC_PRG
(***********************************************************
PIG Würfelspiel für zwei Spieler
Bibliothek: oscat_basic_333.library-> RDM(0)
************************************************************)
VAR
instPIG1, instPIG2:PIG;
xSpieler, xNeuesSpiel:BOOL; (*Schalter Visu*)
END_VAR
(*Spieler 1*)
(*Spieler 2*)
Lösungsvariante 1 mit Hilfe des PAP
FUNCTION_BLOCK PIG
VAR_INPUT
xSPIELEN, xWUERFELN, xNEUES_SPIEL:BOOL;
END_VAR
VAR_OUTPUT
usiWUERFELZAHL: USINT;
uiSPIELSTAND:UINT;
END_VAR
VAR
instWUERFELN_TRIG:R_TRIG;
usiWuerfelzahlNeu: USINT;
END_VAR
Lösungsvariante 2 mit Hilfe des GRAFCETs
FUNCTION_BLOCK PIG
VAR_INPUT
xSPIELEN, xWUERFELN, xNEUES_SPIEL:BOOL;
END_VAR
VAR_OUTPUT
usiWUERFELZAHL: USINT;
uiSPIELSTAND: UINT;
END_VAR
VAR
usiSchrittNr:USINT;
instWUERFELN_TRIG_R:R_TRIG;
instWUERFELN_TRIG_F:F_TRIG;
END_VAR
FUNCTION FC_ZUFALLSZAHL : USINT
(******************************************
Zahl 1...6 erzeugen
Bibliothek: oscat_basic_333.library-> RDM(0)
*******************************************)
VAR
END_VAR
|
| Übung 3 |
Fragen - Antworten PROGRAM PLC_PRG
(**************************************************************************
Frage-Antwort
Öffnen Sie nach dem Einloggen und Start
die Visualisierung und klicken Sie auf "Frage"
..."Antwort"
***************************************************************************)
VAR
Frage:ARRAY[1..17] OF STRING:=[
'Wie wird der Programmbaustein PLC_PRG standardmäßig
aufgerufen?',
'Das Zuweisungszeichen im Programm ist ... ',
'Der Wertebereich einer Variablen wird festgelegt mit ...',
'VAR, END_VAR, BOOL, FALSE ... sind ...',
'Der Datentyp USINT kann Werte annehmen bis ...',
'Die WHILE-Schleife erlaubt die wiederholte Ausführung
einer Anweisungsfolge ...',
'Mit der Modulo-Division MOD wird ...',
'Mit der Anweisung EXIT können Sie ...',
'Mit der Anweisung RETURN wird ...',
'Unterprogramme werden im Hauptprogramm ...',
'Anwenderdefinierte Datentypen (DUT) setzt sich aus ...',
'Bei TIME und TIME_OF_DAY wird die Zeit in ...',
'Eine Funktion ist ein Codebaustein ohne ...',
'Der Parameter, der dem "PT" der Instanz vom
TON übergeben wird, ist vom Datentyp',
'Der GRAFCET ist eine ...',
'R_TRIG ist ein Systemfunktionsbaustein; er erzeugt bei
einer ...',
'Um Bausteine aus einer Bibliothek benutzen zu können,
muss ...'];
Antwort:ARRAY[1..17] OF STRING:=[
'Freilaufend zyklisch.',
'der Doppelpunkt und das Gleichheitszeichen.',
'dem Datentyp der Variablen.',
'Schlüsselwörter.',
'255.',
'unter Kontrolle einer Durchführungsbedingung am Anfang
der Schleife.',
'der Rest der Division ermittelt.',
'eine Schleife verlassen.',
'der Software-Baustein (POE) ohne Bedingung verlassen.',
'nacheinander aufgerufen.',
'Standard-Datentypen zusammen.',
'Millisekunden angegeben, wobei bei TOD ab 00:00 Uhr
gerechnet wird.',
'Gedächtnis mit einem Rückgabewert.',
'TIME.',
'Spezifikationssprache für Ablaufsteuerungen',
'positiven Flanke am CLK-Parameter einen Zyklus lang am Q
den Wert TRUE.',
'die Bibliothek im Projekt über die
Bibliotheksverwaltung eingebunden werden.'];
S1Visu, S2Visu:BOOL; Zufallszahl:USINT; sFrage, sAntwort:STRING;
END_VAR
IF S1Visu THEN
Zufallszahl:= FC_ZUFALLSZAHL(usiAnzahl:= 17) ;
sFrage:=Frage[Zufallszahl];
sAntwort:='';
END_IF;
IF S2Visu THEN
sAntwort:=Antwort[Zufallszahl];
END_IF;
FUNCTION FC_ZUFALLSZAHL
: USINT
(*Zahl 1...usiAnzahl erzeugen*)
VAR_INPUT
usiAnzahl:USINT;
END_VAR;
VAR
usiZufallszahl: USINT;
END_VAR
WHILE usiZufallszahl
< 1 OR usiZufallszahl > usiAnzahl DO
usiZufallszahl:= REAL_TO_USINT( OSCAT_BASIC.RDM(last:=
0.0 ) *10.0);
END_WHILE;
FC_ZUFALLSZAHL:= usiZufallszahl;
|