Hilfe bei Programmierübung

Michael

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS Profis, ich bin neu im Forum und auch ein Neuling bezüglich SPS Programmierungen. Wer von euch hat Lust mich bei ein paar Programmierübungen zu unterstützen? Würde dann die Aufgaben per E-Mail zusenden. Wäre wirklich froh um ein paar gute Tipps. Vielen Dank im
Voraus, Michael

 
Hallo,
fang doch bei der 1.Aufgabe mit dem 1. Problem, welches für Dich nicht überwindbar ist hier an und so wird das dann ein ganz langes Thema oder Du merkst, das es nicht so schwierig wird;).
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Programmierhilfe

Also mein Problem ist folgendes!!
Aufgabenstellung: Eine Pumpeninsel mit 8 Pumpen. Es muss immer eine Pumpe für 20 sec laufen, die muss dann für 60 sec Pausieren. Kann die Ruhepause der einzelnen Pumpen nicht eingehalten werden, dann müssen alle Pumpen ausgeschaltet werden. Falls eine Pumpe gestört auf Störung ist, muss die nächste funktionsfähige Pumpe eingeschaltet werden. Die Betriebsdauer der einzelnen Pumpen ist in Instanzdatenbaustein zu speichern. Über ein Reset
Kann die Betriebsdauer aller Pumpen zurückgesetzt werden.
Ausführungsforderung: Das Verhalten der Pumpen soll in einem FB mit dazugehörigen IDB
Ausprogrammiert werden. Im OB1 werden dann für jede Pumpe der gleiche FB mit einem
Anderen IDB aufgerufen.
Mein Problem: Vorgangweise der Programmierung des FB, sodass sie im OB1 über IDB verknüpft werden.
Vielen Dank und einen schönen Tag noch, Michael
 
Die Variablen die in deinen Datenbaustein hinterlegt werden müssen, trägst du im Deklarationsteil unter "Stat" ein.
Du wirst gemerkt haben das dieser vom Aufbau einen Datenbaustein sehr ähnlich ist.

Im Ob1 rufst du dann dein FB mit dem Dazugehörigen DB auf: call FB1, DB1. Falls du den DB 1noch nicht erstellt hast wird dann dieser automatisch erzeugt. Der Zugriff erfolgt dann genauso wie bei anderen Datenbausteine.
 
Ausfall von einer oder mehreren Pumpen?

Hallo Antonio
Danke für deine Ratschlag, aber wie kann ich den Hinweis der gefordert ist richtig verstehen? Dort wird gewünscht das dass verhalten einer Pumpe ( es sind ja 8 mit der selben Funktion) im FB ausprogrammiert wird und vom dem werden dann 8 DB erstellt die im OB1 dann aufgerufen werden. Meine Frage ist dann: Wie muss ich den FB Programmieren der nur für eine Pumpe ausgeführt ist, das im OB1 die richtigen DBs aufgerufen werden. Den wenn
Eine Pumpe auf Störung geht muss diese übersprungen werden.
Für deine oder eure Hilfe bin ich sehr dankbar. Gruß Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie es da steht...
Du Programmierst dein FB so als gäbe es nur eine Pume, du beachte bitte, da du dabei dann aber entweder Statische Variablen benutzst oder In/Out Variablen. Diesen FB kannst du dann 8X aufrufen jedich immer wieder mit einen Anderen FB
Code:
u "bedingungPumpe1" // Einschaltbedingung Pume1
spbn m1
call FB1,db1 // Aufruf Pumpe1
m1: nop 0
u "bedingungPumpe2"
spbn m2
call FB1,db2
m2: nop 0
....
u "bedingungPumpe8"
spbn m8
call Fb1, db8
m8: nop 0
 
Vielen Dank Antonio

Hallo Antonio
Vielen Dank für deine schnelle Hilfe, gib dir bescheid wenn meine Pumpeninsel funktioniert. Schönen Abend noch und Gruss Michael:p
 
Hi,
noch eine kleine Anmerkung zum überspringen von Programmteilen und
in deinem Fall Bausteinen wenn du in dem Baustein ein Datenbit zuweist
also 1-signal gibst und danach diesen FB überspringst ändert sich daran nichts mehr das Datenbit bleibt auf "1" beispiel.
u E0.0
spbn m001
u E0.1
= A0.0
m001 : nop0
nur wenn e0.0 1 hat wird der Programmteil bearbeitet wenn zu dieser Zeit
E0.1 auch 1 hat dann Schaltet A0.0
jetzt E0.0 0 -Signal und danach E0.1 0-Signal ABER A0.0 bleibt auf 1
sehr Wichtig zuwissen!!!!!
HDD
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
noch eine kleine Anmerkung zum überspringen von Programmteilen und
in deinem Fall Bausteinen wenn du in dem Baustein ein Datenbit zuweist
also 1-signal gibst und danach diesen FB überspringst ändert sich daran nichts mehr das Datenbit bleibt auf "1" beispiel.
u E0.0
spbn m001
u E0.1
= A0.0
m001 : nop0
nur wenn e0.0 1 hat wird der Programmteil bearbeitet wenn zu dieser Zeit
E0.1 auch 1 hat dann Schaltet A0.0
jetzt E0.0 0 -Signal und danach E0.1 0-Signal ABER A0.0 bleibt auf 1
sehr Wichtig zuwissen!!!!!
HDD

Das mit den Sprüngen ist eine tolle Sache.

Man kann richtig tolle Sachen bauen und komplexe Aufgaben lösen. Es birg natürlich auch einige Gefahren.

Wenn man Sprungbefehle einsetzen will muss einem das was HDD geschrieben hat in Fleisch und Blut übergehen.
 
spbn

hi
wie ist das mit den Bedingungen? Die 8 Pumpen müssen step by step laufen.
Wie weiss DB2 das DB1 fertig ist. Wenn ich den Pumpen Timer von DB1 verwende und DB1 wird übersprungen weil Pumpe 1 auf Störung ist, habe ich sicher ein Problem. Oder sehe ich das falsch. Gruss Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, bin nicht wirklich weiter gekommen. Muss HDD recht geben, ich darf DB nicht einfach so überspringen. Wenn DB im Zeitpunkt Aktiv übersprungen wird, wie im meinen Fall Störung einer Pumpe während Betrieb, wird der DB nicht mehr bearbeitet und der Status bleibt stehen.
Also wer kann mir weiter helfen. Gruss Michael:confused:
 
Zurück
Oben