Elektrobody
Level-1
- Beiträge
- 14
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo SPS-Fans,
ich hab Probleme, folgende Aufgabe zu lösen:
Ein Hochregallager hat 4 Ebenen mit jeweils 7 Lagerplätzen. Es hat also insgesamt 28 Lagerplätze. Für die Speicherung der Informationen zur Lagerbelegung soll hier ein Datenbaustein angelegt werden. Jedem der Lagerplätzen wird eine Nummer zugeordnet. Die laufende Nummer beginnt beim unteren rechten Lagerplatz und endet beim oberen rechten Lagerplatz. Für jedes Lagerfach soll in dem Datenbaustein ein Speicherplatz mit 16 Bit vom Format INT zur Verfügung stehen. Hier wird für die Belegung jedes Lagerplatzes folgende Zuordnung festgelegt:
0 == leer; 1 == besetzt
Wenn nun ein entsprechendes Teil auf einem Lagerplatz liegt, so steht der jeweilige Wert im Datenbaustein. In einer Standardfunktion soll nun bei einer steigenden Flanke ein Taster BD_SH6 vom Lagerplatz 1 an steigend der erste leere Lagerplatz gesucht werden und als OUT -Variable zur Verfügung gestellt.
Außerdem sollen die Positionswerte für ein Anfahren des ermittelten Lagerplatzes von der Endlage links unten ausgegeben werden. Diese sollen passend für die Zähler im BCD-Code vorliegen.
Für die Positionierung werden bei jedem Lagerplatz horizontal und vertikal Impulse gezählt. Lagerplatz 17 hat beispielsweise für eine Positionierung von links unten aus 5 Impulse und 3 Impulse.
Zuordnungsliste:
Symbol Adresse Kommentar
BD_SH6 E 1.6 Bedienpult weiß SH6
LP_Leer MW 10 Erster LP leer
Pos_ver_leer MW 12 Erster LP vertikal leer
Pos_hor_leer MW 14 Erster LP horizontal leer
M_Flanke_SH6 M 10.0 Flankenmerker SH6
Aufgabe:
- Projekt ABC erstellen
- Datenbaustein DB20 (z.B.) mit 28 LP für Werte vom Format INT anlegen
(ARRAY dazu nutzen)
- Vorbelegung in die Aktualwerte des Datenbausteins schreiben: die zwei unteren Ebenen sind besetzt.
- Standardfunktion FC xx anlegen und ein Programm in AWL erstellen:
Von LP 1 an aufsteigend wird bei einer steigenden Flanke am Taster BD_SH6 der erste leere LP gesucht und
die Nummer dieses LP-Faches als OUT- Variable zur Verfügung gestellt.
- Außerdem sollen die Positionswerte für ein Anfahren des ersten leeren LP von der Endlage links unten
ermittelt werden. Diese sollen passend für die Zähler an zwei OUT-Variablen im BCD-Code vorliegen.
- Da in diesem Standardbaustein keine globalen Variablen vorkommen dürfen, soll auch die Nummer des
durchsuchten Datenbausteins dem F xx als IN-Variable übergeben werden. Die Adressierung innerhalb des FC
erfolgt nur dann am besten, wenn der Datenbaustein mit dem Befehl AUF DB20 zuerst geöffnet und dann auf
dessen Daten zugegriffen wird.
- Fc xx mit den oben angegebenen Merkern beschalten und mit Hilfe des Tasters BD_SH6 im OB12
aufrufen
Ich habe schon mehrere Tage dieses Programm in SIMATIC Step S7 herumprobiert, es ist mir jedoch bisher bis jetzt nicht gelungen, eine vernünftige Lösung zu finden.
Ich wäre froh, wenn einer von Ihnen mir eine passende Lösung anbieten könnte. Verschiedene Lösungsmöglichkeiten sind mir natürlich auch hier herzlich willkommen.
Ich bin gespannt auf Ihre Antwort.
Gruß Elektrobody
ich hab Probleme, folgende Aufgabe zu lösen:
Ein Hochregallager hat 4 Ebenen mit jeweils 7 Lagerplätzen. Es hat also insgesamt 28 Lagerplätze. Für die Speicherung der Informationen zur Lagerbelegung soll hier ein Datenbaustein angelegt werden. Jedem der Lagerplätzen wird eine Nummer zugeordnet. Die laufende Nummer beginnt beim unteren rechten Lagerplatz und endet beim oberen rechten Lagerplatz. Für jedes Lagerfach soll in dem Datenbaustein ein Speicherplatz mit 16 Bit vom Format INT zur Verfügung stehen. Hier wird für die Belegung jedes Lagerplatzes folgende Zuordnung festgelegt:
0 == leer; 1 == besetzt
Wenn nun ein entsprechendes Teil auf einem Lagerplatz liegt, so steht der jeweilige Wert im Datenbaustein. In einer Standardfunktion soll nun bei einer steigenden Flanke ein Taster BD_SH6 vom Lagerplatz 1 an steigend der erste leere Lagerplatz gesucht werden und als OUT -Variable zur Verfügung gestellt.
Außerdem sollen die Positionswerte für ein Anfahren des ermittelten Lagerplatzes von der Endlage links unten ausgegeben werden. Diese sollen passend für die Zähler im BCD-Code vorliegen.
Für die Positionierung werden bei jedem Lagerplatz horizontal und vertikal Impulse gezählt. Lagerplatz 17 hat beispielsweise für eine Positionierung von links unten aus 5 Impulse und 3 Impulse.
Zuordnungsliste:
Symbol Adresse Kommentar
BD_SH6 E 1.6 Bedienpult weiß SH6
LP_Leer MW 10 Erster LP leer
Pos_ver_leer MW 12 Erster LP vertikal leer
Pos_hor_leer MW 14 Erster LP horizontal leer
M_Flanke_SH6 M 10.0 Flankenmerker SH6
Aufgabe:
- Projekt ABC erstellen
- Datenbaustein DB20 (z.B.) mit 28 LP für Werte vom Format INT anlegen
(ARRAY dazu nutzen)
- Vorbelegung in die Aktualwerte des Datenbausteins schreiben: die zwei unteren Ebenen sind besetzt.
- Standardfunktion FC xx anlegen und ein Programm in AWL erstellen:
Von LP 1 an aufsteigend wird bei einer steigenden Flanke am Taster BD_SH6 der erste leere LP gesucht und
die Nummer dieses LP-Faches als OUT- Variable zur Verfügung gestellt.
- Außerdem sollen die Positionswerte für ein Anfahren des ersten leeren LP von der Endlage links unten
ermittelt werden. Diese sollen passend für die Zähler an zwei OUT-Variablen im BCD-Code vorliegen.
- Da in diesem Standardbaustein keine globalen Variablen vorkommen dürfen, soll auch die Nummer des
durchsuchten Datenbausteins dem F xx als IN-Variable übergeben werden. Die Adressierung innerhalb des FC
erfolgt nur dann am besten, wenn der Datenbaustein mit dem Befehl AUF DB20 zuerst geöffnet und dann auf
dessen Daten zugegriffen wird.
- Fc xx mit den oben angegebenen Merkern beschalten und mit Hilfe des Tasters BD_SH6 im OB12
aufrufen
Ich habe schon mehrere Tage dieses Programm in SIMATIC Step S7 herumprobiert, es ist mir jedoch bisher bis jetzt nicht gelungen, eine vernünftige Lösung zu finden.
Ich wäre froh, wenn einer von Ihnen mir eine passende Lösung anbieten könnte. Verschiedene Lösungsmöglichkeiten sind mir natürlich auch hier herzlich willkommen.
Ich bin gespannt auf Ihre Antwort.
Gruß Elektrobody
Zuletzt bearbeitet: