Step 7 richtig am verzweifeln

Kay1981

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo leute,
gott sei dank gibt es so ein forum und ich hoffe, dass mir auch geantwortet wird.
ich habe elektroniker für energie und gebäudetechnik gelernt und leider mit sps sehr wenig zu tun gehabt.
nun mache ich eine weiterbildung und dank der nicht vorhandenen kenntnisse verzweifel ich manchmal.

ich habe ein foto von meiner problematik und gott sei dank sind wir erst am anfang, aber ich verstehe diese sache einfach nicht hundert prozentig.
was ich verstehe ist, dass durch "move" der wert 1 in "md20" geschrieben wird.
dieser wert steht nun der multiplikation zur verfügung.
und nun wird hoch addiert => 1 2 4 8 16 usw.
das ganze soll später für ein lauflicht gebraucht werden.
ich verstehe aber die ganzen positiven flanken nicht.
egal welche ich wegnehme so zählt er nicht mehr.
er merkt sich bei e0.0 den eingang 1, aber wenn ich e0.0 einschalte, ist doch eh schon eine eins da, warum dann noch die positive flanke.
was mich interessiert, wie funktioniert dieses programm, was gibt den antrieb, dass auch wirklich kontinuierlich weiter gezählt wird.
bin echt am verzweifeln.
haben gerade erst angefangen seit zwei wochen und ich hab schon richtig probleme teilweise.
 

Anhänge

  • 1.png
    1.png
    7,4 KB · Aufrufe: 97
Zuerst einmal ist für die Erklärung folgendes wichtig:

-Ein SPS Programm wird zyklisch immer wieder von oben nach unten abgearbeitet.
-Eine Positive Flanke ist nur für einen Programmzyklus 1 dann wieder 0 bis sich die Eingangsbedingung (E0.0)wieder von 0 auf 1 ändert.

Was passiert nun wenn im 1. Netzwerk keine Flanke da ist?

Solange E0.0 1 ist, wird durch den Move Befehl eine 1 in MD20 geladen.
Danach wird multipliziert und es steht für einen Zyklus 2 drinn.
Im nächsten Zyklus schreibst du dann wieder 1 rein....und immer so weiter.


Kann nicht funktionieren, oder? ;-)

Also wenn du möchtest das eine Operation nur einmal ausgeführt wird, dann macht man das eben über eine Flanke.

Die Flanke in Netzwerk 2 darfst du dir jetzt selbst überlegen!:cool:
Wo kommt den eigentlich der Merker 100.3 her?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Im ersten Netzwerk wird durch die Flanke von E0.0 das MD20 mit 1 initialisiert. Durch die Flanke wird die MOVE-Anweisung nur einmal durchlaufen.

Im zweiten Netzwerk wird der Wert von MD20 verdoppelt, solange der E0.0 1-Signal führt. Die Multiplikations-Anweisung wird immer dann einmal ausgeführt, wenn E0.0 High ist und der M100.3 seinen Zustand von 0 nach 1 wechselt. Wäre hier keine Flankenbildung, würde die Multiplikation in jedem Zyklus durchgeführt werden.
Der M100.3 kommt wohl vom Zyklustakt, weil in der Hardwarekonfiguration das MB100 als Taktmerkerbyte angegeben ist.
 
Also der initialisierungsfvorgang wird von e0.0 getriggert und setzt das merkerword 20 auf 1 zurück. E0.0 ist dauerhaft auf High (log. 1). Somit wird deine Multiplikation vom merker 100.3 getriggert. Wäre die positive flankenauswertung m50.1 nicht vorhanden, würde die Multiplikation von md20 mit 2 über mehrere cpu-zyklen erfolgen. Das gleiche auch im Netzwerk 1. Das md20 würde am zyklusanfang immer wieder auf 1 geschrieben.
Somit wird deine Multiplikation nur von m100.3 gesteuert.

Ich hoffe das war verständlich.

Gesendet von meinem E5823 mit Tapatalk
 
wow, das scheint ein wirklich lebendiges forum zu sein.
ich schaue mir im laufe des abends alle antworten an, bin grad bei meiner mum eingeladen.
ihr werdet noch öfters von mir hören.
vielen, lieben dank für alle antworten.
 
jetzt habe ich die erste flanke kappiert, das hat nicht mal mein lehrer bei mir geschafft. dieses "nur einmal" hat mir die erleuchtung gebracht ;).
in meinen eigenen worten:

ohne flanke ==> ich betätige e0.0 und es wird eine 1 in md20 geschrieben, es wird danach multipliziert und da 2*1=2, steht jetzt eine 2 in md20, das programm läuft nochmal zyklisch durch und schreibt mir jetzt nochmal die 1 in md20 und multipliziert nochmal mit 2 und ich habe wieder nur noch die 2. das heißt ich habe bei jedem zyklus immer wieder die zwei.
mit flanke ==> ich betätige e0.0 und es wird nur einmal eine 1 in md 20 geschrieben, es wird danach multipliziert und da 2*1=2, steht jetzt eine 2 in md20. jetzt kommt der knackpunkt. das programm läuft weiter und beim nächsten zyklus, schreibt er mir aufgrund der flanke keine 1 in md20, sondern rechnet mit der 2 weiter, beim nächsten zyklus mit der vier und so weiter.

wenn das jetzt richtig ist, was ich geschrieben habe, dann bin ich auf jeden fall einen riesen großen sprung nach vorne gesprungen. gott sei dank sind wir erst zwei wochen dabei, das heißt ich hab noch zeit alles zu wiederholen.
 
Für ein Lauflicht wäre es auf den ersten Blick ersichtlicher, und auch für die CPU schneller, einen Schiebebefehl (oder Rotierbefehl, wenn die 1 am Ende wieder vorne "rauskommen soll) anstelle einer Multiplikation zu verwenden. Ein Schieben um ein Bit entspricht der Multiplikation mit 2.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dazu habe ich eine musterlösung mit dem schieben. bin erstmal froh die flanke verstanden zu haben. morgen schaue ich mir das mit dem schieben an. muss mich da ein bisschen reinknien.
 
jetzt kommt der knackpunkt. das programm läuft weiter und beim nächsten zyklus, schreibt er mir aufgrund der flanke keine 1 in md20, sondern rechnet mit der 2 weiter, beim nächsten zyklus mit der vier und so weiter.
Der erste Teil "keine 1" stimmt, die Multiplikation wird aber nicht beim "nächsten" Zyklus, sondern beim Wechsel von Low -> High von M100.3 durchgeführt.

Ablauf ist jetzt eigentlich ganz einfach:
E0.0 wird eingeschaltet, positive Flanke setzt MD20 -> 1
E0.0 und positive Flanke von M100.3 rechnet dann MD20 * 2 = MD20

Wenn MB100 nun das Taktmerkerbyte der CPU ist, dann bedeutet das, das MD20 * 2 mit 2 Hz, also 2x pro Sekunde gerechnet wird.
Code:
Takt 10 Hz     M  100.0    CPU-Takt 10 Hz
Takt 5 Hz       M  100.1    CPU-Takt 5 Hz
Takt 2,5 Hz    M  100.2    CPU-Takt 2,5 Hz
Takt 2 Hz       M  100.3    CPU-Takt 2 Hz
Takt 1,25 Hz   M  100.4    CPU-Takt 1,25 Hz
Takt 1 Hz       M  100.5    CPU-Takt 1 Hz
Takt 0,625 Hz M  100.6    CPU-Takt 0,625 Hz
Takt 0,5 Hz    M  100.7    CPU-Takt 0,5 Hz
Mfg
Manuel
 
Zurück
Oben