# Brauche Hilfe bei einem Programm!!!



## Jumpinjack (8 November 2010)

Ich muss für ne Klausur folgendes Programm in Fup schreiben:

Siehe Bitmap Anhang!!!

Es handelt sich hier um ein Fliessband mit einem Block drauf, welches nach rechts und nach links laufen kann.
Der Block steht in der Startposition ganz links und betätigt den Schliesser SL. (Ja die Endtaster SL u. SR sind Schliesser!)
Mit dem Starttaster S1 soll das Fliessband starten und nach rechts mit K1 laufen, bis der Block den Schliesser SR betätigt und somit das Schütz K2 für den Linkslauf anziehen lässt. Ist der Block wieder bei SL soll das K1 Schütz wieder anziehen und der Block soll wieder nach rechts laufen usw. voll automatisch immer hin und her.

Soweit kein Problem. Mein Problem ist jetzt nur, wenn der Notaus S0 gedrückt wird und der Block gerade nach rechts fährt soll er ganz nach rechts fahren und dann zurück nach links und SL betätigen.
Fährt der Block gerade nach links, wenn ich den Notaus drücke soll er nur nach links fahren und SL betätigen (alsoo immer in die Anfangsposition).
Wie mach ich das, wenn ich in jeder Position des Blocks S0 drücke????
2. Später soll noch ein Timer eingebaut werden, so das der Block jeweils für 2 sek. auf der rechten und der linken 
Seite stehenbleibt.

S0 : Stop (Notaus)
S1 : Starttaster
SL : Endschalter links
SR : Endschalter rechts
K1 : Schütz rechtslauf
K2 : Schütz linkslauf


Bitte dringend um Hilfe!!!

Das Netzwerk unten in FUP funktioniert soweit dass der Block einfach stehenbleibt wenn S0 betätigt ist.


----------



## Verpolt (8 November 2010)

Na eine fertige Lösung wirst du hier wahrscheinlich nicht bekommen.

Erste Ansätze?

Wo klemmts?


----------



## Jumpinjack (8 November 2010)

Siehe Miniaturansicht!


----------



## Gerhard K (8 November 2010)

du darfst den K1, K2 nicht mit dem S0 allein zurücksetzen.

Und jetzt überleg dir mal, wie du das weiterlöst


----------



## Gerhard K (8 November 2010)

Noch was am Rande. S0 ist dann aber kein NOT-AUS sondern ein Taster GRUNDSTELLUNG.


----------



## bike (8 November 2010)

Du solltest dir Gedanken machen, was die Anlage machen soll und wie.

Es ist nicht damit getan zwei RS Glieder hinzusetzen.
Zuerst würde ich mir Gedanken um Ein und Ausschaltung machen.
Dann etwas dir wegen den Richtungen überlegen.
Dann noch die Endschalter einbauen und gut ist es.


----------



## PN/DP (8 November 2010)

Du brauchst nicht 2 Merker für Rechts-Ein und Links-Ein, sondern 1 Merker für Rechts/Links (von den Endschaltern gesteuert) 
und 1 Merker für Ein/Aus (von den Start/Stop-Tastern gesteuert).

Vielleicht solltest Du noch dazuschreiben mit welchem Programmierprogramm Du arbeitest bzw. für welche SPS Dein Programm ist.

Harald


----------



## Jumpinjack (8 November 2010)

Stimmt! Aber dann darf ich K1 auch nicht mit S0 reseten.
D.H. ich brauch nochn drittes Netzwerk aber wie?


----------



## Gerhard K (8 November 2010)

Überleg dir was. das ist nicht so schwierig.
Anregungen hast du ja schon bekommen.


----------



## Verpolt (8 November 2010)

Wie hast du die ersten 2 erstellt?


----------



## Jumpinjack (8 November 2010)

Arbeite zuhause mit Codesys. Ist aber für die Schule, also Step7. 
Wird aber handschriftlich gemacht in einer Klausur.


----------



## Jumpinjack (8 November 2010)

Arbeite mit Codesys. Ist aber für die Schule, also Step7. Wird aber handschriftlich gemacht in einer Klausur. Benutz Codesys nur zum testen.


----------



## Verpolt (8 November 2010)

PN/DP schrieb:


> Du brauchst nicht 2 Merker für Rechts-Ein und Links-Ein, sondern 1 Merker für Rechts/Links (von den Endschaltern gesteuert)
> und 1 Merker für Ein/Aus (von den Start/Stop-Tastern gesteuert).
> 
> Vielleicht solltest Du noch dazuschreiben mit welchem Programmierprogramm Du arbeitest bzw. für welche SPS Dein Programm ist.
> ...



Lies dir das nochmal genau durch. 

Dann den "1 Merker für Ein/Aus" richtig am  "1 Merker für Rechts/Links"  einsetzen


----------



## Jumpinjack (8 November 2010)

Bin leider noch kein SPS Profi. Mit Merkern hab ich auch noch nie gearbeitet.
Hab echt kein Plan.
Sind die ersten beiden Netzwerke denn richtig ohne S0 zum rücksetzen?


----------



## Gerhard K (8 November 2010)

Morgen Klausur und keine Ahnung? Du fängst früh an, dich um die Sache zu kümmern.


----------



## Jumpinjack (8 November 2010)

ne übermorgen - hab damit auch nicht gerechnet da ich die klausur nachschreiben muss weil ich krank war und wir sowas nie gemacht haben.
hatten erst 3 stunden sps und haben bis jetzt nur ne einfache Wendeschützschaltung gebaut. Denk der Lehrer wollt uns einfach nur einen auswischen


----------



## bike (8 November 2010)

Gerhard K schrieb:


> Morgen Klausur und keine Ahnung? Du fängst früh an, dich um die Sache zu kümmern.


Ist doch alles okay.
Es gibt das Internet und da muss man ja nichts mehr selbst machen, sondern nur in einem Forum fragen.

Ein Merker ist eine Speicherstelle die zugewiesen und/oder gesetzt und zurückgesetzt werden kann. So wie es mit den Ausgängen gemacht wurde.


bike


----------



## Gerhard K (8 November 2010)

Ja das stimmt. Die haben die Lösung in 2 Minuten heruntergetippt und ich muß nicht nachdenken -----> Lernerfolg 0


----------



## Verpolt (8 November 2010)

Na jetzt Jumpinjack,

hast schon was erreicht?

Wir warten


----------



## bike (8 November 2010)

Gerhard K schrieb:


> Ja das stimmt. Die haben die Lösung in 2 Minuten heruntergetippt und ich muß nicht nachdenken -----> Lernerfolg 0


Achso?
Man geht in die Schule um zu lernen?
Danke, dass du uns aufklärst. 

Wollen oder können die jungen Leute nicht verstehen, dass es so wie die alten Lateiner gesagt haben:
Non schola set vitae studare.

bike

P.S. ob das laitein noch stimmt?


----------



## Verpolt (8 November 2010)

> Non schola set vitae studare.



Kein Cola setzt Vitalität auf stupide


----------



## Toki0604 (8 November 2010)

*Non vitae, sed scholae discimus* („Nicht für das Leben, sondern für die Schule lernen wir“) ?! Der Spruch ist gut...
Toki


----------



## Jumpinjack (8 November 2010)

Jo, habs hinbekommen, dass er in die Ausgangslage zurückfährt.
Hab jetzt aber noch ein Problem, beim ersten starten zieht K1 schon an, ohne dass S1 gedrückt werden muss, weil SL ja betätigt ist.


----------



## Verpolt (8 November 2010)

Das wäre so ein Fall, bei dem man Flankenauswertungen nehmen kann.


----------



## Jumpinjack (8 November 2010)

Flanken hatten wir noch net, sollte doch irgendwie auch einfacher lösbar sein.


----------



## bike (8 November 2010)

Jumpinjack schrieb:


> Flanken hatten wir noch net, sollte doch irgendwie auch einfacher lösbar sein.


Kann es sein, dass du nur versuchst, statt  zu planen?
Die Einschaltung kannst du durch Zuweisung doch sehr gut machen, ohne Impuls oder ähnliches.
Zum Beispiel so:
U E_STOP   // Stoptaster als Öffner
U(
O E_EIN        // Taster EIN
O M_EIN       // Selbsthaltung
)
= M_EIN       // Merker Selbsthaltung

Jetzt noch die Umschaltung rechts/linkslauf bauen.
Dann mit den beiden Merkern Die richtigen Ausgänge ansteuern.
Wenn es klappt, die Zeit noch hernehmen und dein Programm ist perfekt.

Jetzt hoffe ich doch, dass du das von AWL in FUP umbauen kannst. 

bike


----------



## Jumpinjack (8 November 2010)

Ich brauch keine Selbsthaltung für den Eintaster.
Das Problem ist, dass wenn der Block schon ganz links liegt ist SL betätigt und dann brauch ich gar nicht den Eintaster betätigen, damit das Förderband losfährt - das tut es schon automatisch


----------



## bike (8 November 2010)

Jumpinjack schrieb:


> Ich brauch keine Selbsthaltung für den Eintaster.
> Das Problem ist, dass wenn der Block schon ganz links liegt ist SL betätigt und dann brauch ich gar nicht den Eintaster betätigen, damit das Förderband losfährt - das tut es schon automatisch


Um das geht es ja.
Vielleicht solltest du einmal nachdenken, warum wir dir solche Hinweise geben.
Du brauchst eine Ein-/Ausschaltung, eine Drehrichtungsumschaltung und später eine Zeit, wie du geschrieben hast.
Anders kann ich das nicht programmieren.

bike


----------



## hucki (8 November 2010)

Jumpinjack schrieb:


> Ich brauch keine Selbsthaltung für den Eintaster.
> Das Problem ist, dass wenn der Block schon ganz links liegt ist SL betätigt und dann brauch ich gar nicht den Eintaster betätigen, damit das Förderband losfährt - das tut es schon automatisch


Nein, das Problem ist, daß Du keine Ahnung hast und trotzdem keinen Rat annimmst!

Es ist Dir jetzt schon mehrfach gesagt worden, daß Du eine vernünftige Ein-/Aus-Funktion brauchst, denn darauf baut jede Anlage auf.
Aber es interessiert Dich nicht und deshalb funktioniert es auch nicht vernünftig.


----------



## PN/DP (8 November 2010)

bike schrieb:


> Anders kann ich das nicht programmieren.


Ich auch nicht.

@Jumpinjack
Möglicherweise ist Dein Ansatz schon verkehrt und durch noch so viele Hilfsverknüpfungen nicht mehr zu korrigieren?
Denke nochmal über dieses Konzept nach:


bike schrieb:


> Du brauchst eine Ein-/Ausschaltung, eine Drehrichtungsumschaltung und später eine Zeit



Den EIN-Merker haste schon von bike, den Richtungsmerker kannst Du genauso machen oder mit S/R.



Jumpinjack schrieb:


> 2. Später soll noch ein Timer eingebaut werden, so das der Block jeweils für 2 sek. auf der rechten und der linken
> Seite stehenbleibt.


Das kann man auch so formulieren: Immer wenn sich die Richtung ändert, dann soll für 2 Sekunden kein Schütz ein sein.
(der alte Schütz ist aus, weil der Block am Endschalter ist und sich außerdem die Richtung geändert hat und der Schütz 
der neuen Richtung soll erst nach 2 Sekunden ein gehen)
Also: Richtungswechsel erkennen -> einen Timer starten -> solange der Timer läuft die Schütze aus/verbieten

Richtungswechsel erkennen:
Hier bieten sich Flanken positiv und negativ an, oder wenn Du die noch nicht kennst, dann hilft eine was-war-vorher/was-ist-jetzt-
Betrachtung. In AWL kann man auch einfach XOR nehmen, doch in Step7-FUP gibt es keine XOR-Box (aber eine Ersatzschaltung).

Nun hast Du alle Hilfssignale zusammen um die einfachen Netzwerke für die Schütze zu formulieren:
Ist eingeschaltet und die richtige Richtung aktiv und der Richtungswechsel-Timer nicht aktiv (und sicherheitshalber der Endschalter 
dieser Richtung nicht betätigt und sicherheitshalber der andere Schütz nicht ein) = Schütz einschalten

Dein Programm würde auch ohne die "sicherheitshalber"-Bedingungen in Klammern funktionieren, man verknüpft die aber trotzdem, 
damit man bei späteren Erweiterungen nicht aus Versehen was kaputtfährt.

Harald


----------



## Jumpinjack (8 November 2010)

hucki schrieb:


> Nein, das Problem ist, daß Du keine Ahnung hast und trotzdem keinen Rat annimmst!
> 
> Es ist Dir jetzt schon mehrfach gesagt worden, daß Du eine vernünftige Ein-/Aus-Funktion brauchst, denn darauf baut jede Anlage auf.
> Aber es interessiert Dich nicht und deshalb funktioniert es auch nicht vernünftig.



@hucki

und Dein Problem ist es glaub ich dass Du es nicht verstehst dass es Leute gibt die sich erst seid kurzem mit dem Thema beschäftigen und nicht gleich jeden Expertenrat umsetzen können.


----------



## hucki (8 November 2010)

Nein, ich verstehe, "dass es Leute gibt die sich erst seid kurzem mit dem Thema beschäftigen und nicht gleich jeden Expertenrat umsetzen können", ich hab' ja schließlich auch mal angefangen.

*Ich verstehe nur nicht, daß man diese Ratschläge immer und immer wieder ignoriert.*

Mit Deinem Programm oben würdest Du vlt. auch Dein jetziges geschildertes Problem noch lösen können, um dann im nächsten Schritt wieder an der gleichen Sache hängen zu bleiben. Es bleibt einfach Gewurschtel.

Bike hat dir doch ganz klar den 1.Schritt gezeigt und darauf baut nunmal alles weitere auf. Warum also nicht damit anfangen? 
Das bedeutet ja nicht, daß du den Rest nicht (mit leichten Veränderungen)verwenden kannst.


----------



## bike (8 November 2010)

Jumpinjack schrieb:


> @hucki
> 
> und Dein Problem ist es glaub ich dass Du es nicht verstehst dass es Leute gibt die sich erst seid kurzem mit dem Thema beschäftigen und nicht gleich jeden Expertenrat umsetzen können.



Also ich sehe nur, dass du ein Problem hast und dermassen beratungsresistent bist.
hucki hat dir nur geschrieben, dass du langsam anfangen solltest zu lesen und zu denken und dann erst an die Tasten gehen.
Wenn dir Leute schon fast alles auf dem silbernen Tablett servieren, dann nimm es doch an.

Ist es so  schwer einfach eingestehen, dass der erste Weg falsch war?

bike


----------



## Jumpinjack (8 November 2010)

Nein natürlich nicht. Ich stehe zu meinen Fehlern. Und beratungsresistent bin ich wirklich nicht.
Allerdings weiss ich  immer noch nicht, ob 1. meine  geposteten Netzwerke richtig sind ( siehe #23) und 
2. versteh ich nicht was ihr genau mit einer Start/Stop Funktion meint.
Habe vorhin diese "Selbsthaltung" von bike mit Merker gemacht, hat nicht funktioniert.

Ich muss doch im 2. Netzwerk  K1 für den rechtslauf programmieren
und im 3. Netzwerk K2 für den linkslauf programmieren.
Und im 4. Netzwerk dafür sorgen, dass der Block wieder komplett nach links fährt, wenn ich auf Stop drücke, was auch funktioniert.

Aber damit die Anlage überhaupt starten kann, muss SL ein Einsignal haben UND S1 bzw. M1 ein Einsignal haben.

Und das widerspricht sich doch irgendwie weil wenn der Block links sitzt schon automatisch losfährt weil SL geschlossen ist.

Anscheinend fehlt mir die SPS Erfahrung ich gebs auf - danke für Eure Hilfe!


----------



## hucki (8 November 2010)

Aufgeben ist auch nicht der richtige Weg.


Du hast doch ein ODER am SET vom RS_Glied rechts.
Wenn du das z.B. durch ein UND ersetzt und eine saubere Start/Stop-Funktion mit einem EIN-Merker hast, läuft Dein Band auch nicht gleich los.

Dann wurde Dir als nächsten Schritt geraten, einen Merker als Richtungsangabe zu nutzen. Also z.B. RS-Glied und die beiden Endschalter dran.

Den EIN- und den Richtungs-Merker verknüpfst Du dann als = Zuweisung zu den beiden Ausgängen (diese sicherheitshalber noch gegeneinander veriegeln) 

Deine Ende-Funktion nutzt Du dann, um ein Stop auszulösen.


----------



## PN/DP (8 November 2010)

Wenn der Stop-Taster gedrückt wird, dann muß das Fließband SOFORT stehenbleiben. Auf der Stelle. Egal wo es gerade ist.
Du hast den Stop-Taster sogar "Notaus" genannt! 
Dein Problem ist, daß Dein Programm nach dem Stop nicht mehr weiß, in welche Richtung es zuletzt gefahren ist, wenn es 
nicht zufällig genau auf einem Endschalter gestoppt wurde.
Das ist der Grund für den zusätzlichen von Ein/Aus unabhängigen Richtungsmerker.

Und eine Anlage, die alleine deshalb losfährt, weil ein Endschalter betätigt wurde, die darf es nicht geben.
Das ist der Grund, warum Du einen Ein/Aus-Merker brauchst, der erst beim Drücken des Start-Tasters aktiv wird.

Da das Stop irgendwo (auch zwischen den Endschaltern!) kommen kann, muß das Fließband überall wieder eingeschaltet 
werden können, nicht nur auf dem Endschalter SL. Das Fließband soll dann nach dem wieder-Einschalten zunächst in der 
vorherigen Richtung bis zum Endschalter weiterfahren und erst da umdrehen.

Ich würde mal so vorschlagen:
1. Netwerk: Ein/Aus-Merker
2. Netwerk: Richtungsmerker, Erkennung Richtungswechsel und Richtungs-Umschalt-Timer (können auch 2 oder 3 Netzwerke sein)
3. Netwerk: Schützzuweisung K1
4. Netwerk: Schützzuweisung K2

Beim Ein/Aus-Merker würde ich sogar als Stop-Bedingung einfügen, wenn beide Endschalter gleichzeitig betätigt sind.
Dann ist irgendwas an der Anlage nicht in Ordnung und das Fließband sollte sicherheitshalber stoppen.

Harald


----------



## hucki (8 November 2010)

PN/DP schrieb:


> Wenn der Stop-Taster gedrückt wird, dann muß das Fließband SOFORT stehenbleiben. Auf der Stelle. Egal wo es gerade ist.


Ist wahrscheinlich in der Aufgabenstellung etwas unglücklich formuliert:
- wenn's ein Not-Aus ist, muß das Band natürlich sofort stehen bleiben
- beim Druck auf einen Ende-Taster darf das Band noch bis zur Grundstellung fahren
Oder seh' ich das falsch?


----------



## PN/DP (9 November 2010)

Jo, ist wohl etwas unglücklich formuliert.

Der Taster S0 ist als "Stop (Notaus)" bezeichnet aber die gewollte Funktion ist so beschrieben:


Jumpinjack schrieb:


> wenn der Notaus S0 gedrückt wird und der Block gerade nach rechts fährt soll er ganz nach rechts fahren und dann zurück nach links und SL betätigen.
> Fährt der Block gerade nach links, wenn ich den Notaus drücke soll er nur nach links fahren und SL betätigen (alsoo immer in die Anfangsposition).


.. und soll dann stehenbleiben.

Wenn es tatsächlich wie beschrieben ein Zyklus-Beenden-Taster sein soll, dann muß der Taster nicht den Ein-Merker rücksetzen, sondern einen 
Beenden-Merker setzen und wenn der Block an SL ankommt schaltet sich der Ein-Merker aus. Der Beenden-Merker wird mit dem Start-Taster gelöscht 
oder mit SL und Ein-Merker ist aus. Man muß noch aufpassen, daß der Stop-Taster Vorrang vor dem Start-Taster hat.
Wenn das Programm die saubere Struktur wie vorgeschlagen hätte, dann liese sich diese abschließende Grundstellungsfahrt sehr leicht einfügen.

Mit dem Programmstand von Beitrag #23 war Jumpinjack da schon ziemlich nahe an der gewünschten Funktion dran, nur daß er das Pech hat, daß der 
ende-Merker beim Einschalten der SPS nicht gesetzt ist und das Fließband deshalb beim ersten mal von alleine losfährt.
Nun kann man vorschlagen, das Netzwerk 3 vor das Netzwerk 1 zu setzen und den ende-Merker im 1. Run-Zyklus zu setzen oder den ende-Merker 0-aktiv 
zu machen oder den mehrfach vorgeschlagenen zusätzlichen Ein-Merker zu benutzen. Der Richtungs-Umschalt-Timer muß nun auch noch vor dem Netzwerk 1 
erzeugt werden und direkt vor K1 und K2 verknüpft werden.

Doch ich muß dazu sagen, daß ich diese Art zu programmieren hasse wie die Pest, weil solcher Code sehr schwer änderbar ist (jede Änderung ist an 
mehreren Stellen nötig) und bei größeren Verknüpfungen meist auch Macken zeigt, wenn etwas unvorgesehenes passiert, z.B. ein momentan eigentlich 
unbeteiligter Sensor betätigt wird.

Harald


----------



## bike (9 November 2010)

PN/DP schrieb:


> Doch ich muß dazu sagen, daß ich diese Art zu programmieren hasse wie die Pest, weil solcher Code sehr schwer änderbar ist (jede Änderung ist an
> mehreren Stellen nötig) und bei größeren Verknüpfungen meist auch Macken zeigt, wenn etwas unvorgesehenes passiert, z.B. ein momentan eigentlich
> unbeteiligter Sensor betätigt wird.
> 
> Harald


 
Geht mir ebenso. Widerspricht jeder Idee verständlich und strukturiert zu programmieren.
Schön, dass so leicht von dem Nachwuchs? resigniert wird.
Jetzt wird kräftig geheult, es wird schon jemand erbarmen, der die Lösung schreibt.

Die Lösung steht doch schon in dem Thread, ist das so schwer dies zu verstehen?

 Nach dem Ein-/Ausschalten einen Merker für rechts/links mit setzen/rücksetzen durch die Endschalter.

Ein Netzwerk mit einem SA Timer für den Stillstand am Ende der Bewegung.

Ein Netzwerk für Linkslauf mit Einschaltung, Zeitglied und Drehrichtung, das nächste für Rechtslauf mit Einschaltung, Zeitglied und Drehrichtung.

Was funktioniert bei der Selbsthaltung nicht?
Wo bitte ist das Problem?
Du hast daran gedacht, dass der S0 ein Öffner bei dem Beispiel ist?

bike

P.S: Eigentlich ist es doch schön, wenn der Nachwuchs, der nichts tun will, aufgibt. 
Sonst schlagen die bei uns im Betrieb auf, mit guten Noten in PLC Programmierung, doch die Noten sind aus dem Netz gekommen.


----------



## Jumpinjack (9 November 2010)

So Ihr Experten! Fertig ist es! Wohl doch net so faul die "Jugend von heute"!

VAR
    K1: BOOL; (*Schütz rechtslauf*)
    K2: BOOL; (*Schütz linkslauf*)
    S0: BOOL; (*Austaster Öffner*)
    S1: BOOL; (*Starttaster Schliesser*)
    SL: BOOL; (*Endschalter links Schliesser*)
    SR:BOOL; (*Endschalter rechts Schliesser*)
    rechts: RS;
    links: RS;
    Start: RS;
    Stop: RS;
    M1: BOOL;
    M2: BOOL;
END_VAR​​


----------



## dtsclipper (9 November 2010)

Wenns es geht ist es doch gut !?!

Nachsatz: Habe mir das Bitmap dann doch mal angesehen und nehme mein geschreibsel von oben hiermit zurück.

Es geht zwar was aber nicht das in der Aufgabenbeschreibung geforderte...

2010-11-10 dtsclipper


----------



## bike (9 November 2010)

dtsclipper schrieb:


> Wenns es geht ist es doch gut !?!



Stimmt, wenn es funktioniert.

Habe mir das angeschaut.
Was ist wenn das Band irgendwo zwischen den Endschaltern steht?
Nur mit RS ein Programm zu bauen ist eine echte Kunst.
Gut, dass die Tipps die von vielen hier gegeben wurden nicht beachtet wurden.


bike

P.S: Zum Glück ist das nur eine Übung, denn in real?


----------



## Jumpinjack (9 November 2010)

Und hier nochmal mit Timer dass der Block 10s an jeder Seite stehenbleibt.

@bike : Das ist nur ne bescheuerte Schulaufgabe die ich selber nie in der Realität so bauen würde. Sieht man schon allein daran, dass die Endschalter als Schliesser aufgeführt sind. Und so Fragen wie wenn das Band in der Mitte stehen bleibt ist bei der Aufgabe vollkommen unwichtig. Was natürlich in der Praxis natürlich eine Rolle spielen würde. Wenn Du ne einfachere und elegantere Lösung hast dann poste doch mal.

Und dafür, dass das erst meine 2. selbstentwickelte Schaltung überhaupt ist find ich das gar net so schlecht Ihr Vollprofis ;-)


----------



## bike (9 November 2010)

Jumpinjack schrieb:


> Und hier nochmal mit Timer dass der Block 10s an jeder Seite stehenbleibt.
> 
> @bike : Das ist nur ne bescheuerte Schulaufgabe die ich selber nie in der Realität so bauen würde. Sieht man schon allein daran, dass die Endschalter als Schliesser aufgeführt sind. Und so Fragen wie wenn das Band in der Mitte stehen bleibt ist bei der Aufgabe vollkommen unwichtig. Was natürlich in der Praxis natürlich eine Rolle spielen würde. Wenn Du ne einfachere und elegantere Lösung hast dann poste doch mal.
> 
> Und dafür, dass das erst meine 2. selbstentwickelte Schaltung überhaupt ist find ich das gar net so schlecht Ihr Vollprofis ;-)



Schade, dass du es so siehst. 
Du lernst nicht für die Prüfung sondern für dich.

Ich verstehe auch nicht warum du hier schreibst, obschon du ja keine Hinweise annehmen willst.

Ich habe noch keine gute und funktionsfähige Lösung, es ist ja nicht meine Aufgabenstellung.
Doch wenn ich mir so kurz 5 Minuten Zeit nehme, werde ich bestimmt eine sinnvolle und funktionsfähige Lösung bauen können.
Wenn ich richtig mich erinnere, ist morgen alles vorbei für dich, dann werde ich zu Wochenende meine Lösung hier reinstellen.
In der Hoffnung, dass es vielleicht dir zeigt, dass die Tipps hier echt sinnvoll sind.

bike


----------



## PN/DP (10 November 2010)

Jumpinjack schrieb:


> So Ihr Experten! Fertig ist es! Wohl doch net so faul die "Jugend von heute"!


Von *fertig* kann keine Rede sein, wenn das Programm gar nicht das tut, was in der Aufgabenstellung gefordert ist.

Perfekt muß heute wohl nichts mehr sein - es muß nur perfekt aussehen.
Doch genau das ist es wohl, was die "Jugend von heute" auszeichnet - und noch nicht einmal merkt.
Wie die "Stars" in den Casting-Shows: singen können die nicht, doch das 'rumgehampel auf der Bühne ist perfekt einstudiert.

@Jumpinjack: Wundere Dich nicht, wenn Dein potemkinsches Dorf bei Deinem Lehrer nicht die Anerkennung findet, die Du Dir erhoffst.
Hier im Forum wirst Du für Deine halbfertige Programmlösung keine Anerkennung finden sondern nur Kritik.



Jumpinjack schrieb:


>


:sb5:
Eine Kiste bewegt sich hin und her, so daß Laien große Augen bekommen und "Guru - Guru" zum Programmierexperte schreien.



Jumpinjack schrieb:


> wenn der Notaus S0 gedrückt wird und der Block gerade nach rechts fährt soll er ganz nach rechts fahren und dann zurück nach links und SL betätigen.


Dein Block kehrt sofort um und fährt gleich nach links.



Jumpinjack schrieb:


> Später soll noch ein Timer eingebaut werden, so das der Block jeweils für 2 sek. auf der rechten und der linken
> Seite stehenbleibt.


Du hast zwei Timer benutzt statt einem und noch dazu die falschen an der falschen Stelle, so daß der Block auch bei jedem Starten erstmal 10 Sekunden steht.

Es wäre müßig, alle Hinweise noch einmal zu schreiben, die hier im Thread mehrmals idiotensicher ausformuliert kamen.



Jumpinjack schrieb:


> Bitte dringend um Hilfe!!!


Du suchst doch gar keine Hilfe, sonst hättest Du die Hinweise angenommen.
Du wolltest nur eigenes Denken sparen und hast auf die schnelle Komplettlösung gehofft.


Jumpinjack schrieb:


> Und dafür, dass das erst meine 2. selbstentwickelte Schaltung überhaupt ist find ich das gar net so schlecht Ihr Vollprofis ;-)


Da die Komplettlösung nicht kam und Du doch selber Deinen Kopf anstrengen mußtest, erwartest Du nun ersatzweise Lob für Dein Stückwerk.
Bekommst Du aber ebenfalls nicht - ätsche, bel-ätsche! :sc5:



Jumpinjack schrieb:


> Das ist nur ne bescheuerte Schulaufgabe die ich selber nie in der Realität so bauen würde.


Ja, das sagen sie immer, wenn sie zu faul und unfähig sind, etwas richtig zu machen. 

Harald


----------



## PN/DP (14 November 2010)

*Lösung*



Jumpinjack schrieb:


> @bike : [...]
> Wenn Du ne einfachere und elegantere Lösung hast dann poste doch mal.


@Jumpinjack:
Wenn Du die hier im Thread gegebenen Hinweise angenommen hättest, wärst Du auf etwa diese Lösung gekommen,
die gegenüber Deinem Werk den Vorteil hat, daß sie entsprechend Deiner Aufgabenstellung funktioniert:

* in FUP für S7-200



* in FUP für Step7



* Programm-Alternativen:
Richtungswechsel-Erkennung mit XOR statt Flankenerkennung und Ein/Aus-Merker mit Selbsthaltung statt S/R



btw: es gibt in FUP doch eine XOR-Box, nur in KOP gibt es keine. 

Harald


----------



## hucki (14 November 2010)

PN/DP schrieb:


> ...
> * Programm-Alternativen:
> Richtungswechsel-Erkennung mit XOR statt Flankenerkennung und Ein/Aus-Merker mit Selbsthaltung statt S/R
> Anhang anzeigen 12114
> ...


Muss man in KOP halt selber bauen:


----------



## PN/DP (14 November 2010)

PN/DP schrieb:


> btw: es gibt in FUP doch eine XOR-Box, nur in KOP gibt es keine.


Das bezog sich auf meinen Beitrag #30, wo ich FUP und KOP verwechselt hatte:


PN/DP schrieb:


> In AWL kann man auch einfach XOR nehmen, doch in Step7-FUP gibt es keine XOR-Box (aber eine Ersatzschaltung).



Übrigens: Wer auch in KOP eine XOR-Box haben möchte: hier ist eine.

@hucki
Den Zustand "Rücklauf" in "Rücklauf_vorher" VOR der Zuweisung von "Rücklauf" zu speichern ist eine ganz raffinierte Variante. 
	

	
	
		
		

		
			





Harald


----------



## hucki (15 November 2010)

PN/DP schrieb:


> Das bezog sich auf meinen Beitrag #30, wo ich FUP und KOP verwechselt hatte:


Da konnte sich mein Alzheimer nicht mehr dran erinnern.




PN/DP schrieb:


> @hucki
> Den Zustand "Rücklauf" in "Rücklauf_vorher" VOR der Zuweisung von "Rücklauf" zu speichern ist eine ganz raffinierte Variante.


Willst Du mich auf den Arm nehmen? (Edit: Ne, willst Du wohl nicht, siehe PS)
Hab' ich doch von Deinem 3. Bild abgeschrieben! 




Wie eigentlich alles. Nur 'n bißchen aufgeteilt, weil's dann in KOP (zumindest für mich) einfacher zu lesen ist.
Ging ja auch hauptsächlich um's XOR, was bei nur 2 boolschen Variablen ja nun wirklich unkompliziert selbst erstellt werden kann.
(So 'ne FC-XOR-Box lohnt sich da m.M.n. nich', erst bei mehr Variablen.)
Sah nur einzeln so komisch aus, deswegen hab' ich den Rest auch noch mit gemacht.


PS: Hab' noch mal nachgedacht:
Du speicherst zwar auch vorher, aber im Zyklus vorher.
Damit brauchst Du entweder einen Merker oder eine statische Variable.
Mit meiner Version reicht eine temporäre.
Ich geh' mal davon aus, daß Du das meintest und mir is' es nicht aufgefallen, da ich auf die Schnelle nur Merker verwendet hatte.
Wahrscheinlich, weil ich das meistens in der Reihenfolge mache und es damit für mich normal ist.


----------



## maxi (16 November 2010)

Hallo,

es geht nicht darum (und gerade in der Ausbildungsphase) ein Programm so klein wie möglich zu halten oder so schnell wie möglich zu schreiben.

Sondern die Arbeit so richtig, ordentlich, nachvolziehbar und übersichtlich wie möglich zu erfüllen.

Kompakter und schneller werdet Ihr von alleine.


----------



## rostiger Nagel (16 November 2010)

maxi schrieb:


> Hallo,
> 
> es geht nicht darum (und gerade in der Ausbildungsphase) ein Programm so klein wie möglich zu halten oder so schnell wie möglich zu schreiben.
> 
> ...


 
endlich mal jemand der das ganze richtig sieht!


----------



## PN/DP (16 November 2010)

hucki schrieb:


> Willst Du mich auf den Arm nehmen? (Edit: Ne, willst Du wohl nicht, siehe PS)


Nein, die Anerkennung für Deine Variante meine ich vollkommen ernst.

Bei meinem FUP-XOR-Beispiel speichere ich den Zustand "Rücklauf" in "Rücklauf_vorher" erst NACH der Zuweisung "Rücklauf" und dem XOR. 
Das wird ja bei "händischer" Flankenerkennung (ohne FP-Operation) üblicherweise so gemacht.

Du merkst Dir in Deiner Version den alten Zustand "Rücklauf" in "Rücklauf_vorher" unmittelbar VOR der neuen Zuweisung "Rücklauf".
Das hat Vorteile: Für einen einmaligen Vergleich jetzt/vorher reicht ein temporärer Merker. Benutzt man einen statischen Merker, dann kann 
der Vergleich jetzt/vorher *beliebig oft und an beliebiger Stelle* im Programm gemacht werden. 
Das ist es, was ich mit "raffinierte Variante" gemeint habe.

Bei Deiner Variante habe ich mich erinnert, daß ich das bei meiner SPS-Techniker-Ausbildung vor vielen Jahren sogar mal so gelernt hatte. 
Doch weil man bei der vorher-merken-Variante in KOP ein zusätzliches Netzwerk braucht, benutze ich meistens die nachher-speichern-Variante.

Harald


----------



## hucki (17 November 2010)

PN/DP schrieb:


> Nein, die Anerkennung für Deine Variante meine ich vollkommen ernst.
> ...


Dann Danke für die Blumen.





PN/DP schrieb:


> ...
> Doch weil man bei der vorher-merken-Variante in KOP ein zusätzliches Netzwerk braucht, benutze ich meistens die nachher-speichern-Variante.


So'n zusätzliches Netzwerk sorgt aber manchmal auch für bessere Lesbarkeit des Programms.



So könnt' ich ja z.B. auch ein Netzwerk sparen, würd' ich aber höchstwahrscheinlich nie den zwei Netzwerken vorziehen.


----------

