VerkaufsautomatIn einem Verkaufsautomat werden 16 Produkte zur Auswahl angeboten. Die Bedienung
des Automaten ist einfach. Über ein Tastenfeld gibt man die Nummer des gewünschten Artikels
(1-16) ein. Gleich, nachdem der gewünschte Geldbetrag bezahlt wurde, wird das entsprechende
Artikelfach geöffnet und der Artikel kann herausgenommen werden.
Lösung:
Die Artikelnummer wird von der Eingabetastatur dualkodiert auf SPS-Eingänge (Byte 0)
übergeben. Nr. 1 = Bit 0, Nr. 2 = Bit 1, Nr.3 = Bit 0+1 usw. Im Beispiel werden lediglich die
ersten vier Bits verwendet. Die Freigabemagneten sind aufsteigend an die Ausgänge der SPS
angeschlossen (Byte 0 + 1). Magnet Fach 1 = A0.0, Magnet Fach 2 = A0.1, Magnet Fach 3 = A0.2
usw.
 Belegung der Eingänge
 Belegung der Ausgänge
 Variablen
Sobald die Tastatur mit dem Signal "Eingabe_abgeschlossen" die Eingabe einer
Produktnummer meldet, wird der Variable "Produkt_Nummer" der aktuelle Wert des Bytes 0 zugeordnet.
Nachdem der Artikel bezahlt wurde, was der Bezahlautomat mit dem Signal "Produkt_bezahlt" bestätigt,
wird das entsprechende Fach geöffnet. Das Lesen und Beschreiben der Ein- und Ausgänge wird hier
mit den Befehlen PEEK bzw. POKE realisiert.
Programm:
IF "Eingabe_abgeschlossen" THEN
#Produkt_Nummer := PEEK(area := 16#81, dbNumber := 0, byteOffset := 0);
END_IF;
IF "Produkt_bezahlt" THEN
IF #Produkt_Nummer > 0 THEN
#j := BYTE_TO_INT(#Produkt_Nummer) - 1;
#Value_int := 1;
#i := 0;
WHILE #j >= 1 AND #i < #j DO
#Value_int := #Value_int * 2;
#i += 1;
END_WHILE;
#Value := INT_TO_WORD(#Value_int);
#Value := SWAP(#Value);
POKE(area := 16#82,
dbNumber := 0,
byteOffset := 0,
value := #Value);
END_IF;
END_IF;
S7-Programmierung TIA-Portal (Übersicht):
Google-Suche auf MEINE-SCHALTUNG.de :
|
|