Simatic Programmieren

Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich habe das mal in Code gebastelt:

U E 12.4 Fußtaster
L KT 200.0 Lade konstanten Zeitwert 2s
SV T 1 Starten einer Zeit als verlängerter Impuls
NOP 0
NOP 0 (im Handbuchbeispiel sind auch 3x NOP 0, aber ich habe nicht verstanden warum?)
NOP 0
U T 1
S A 21.2 Durchlaufband Einlauf
S A 14.1 Durchlaufband Langsam
S A 14.7 Bremse Durchlaufband


U A 21.2 Durchlaufband Einlauf
U A 14.1 Durchlaufband Langsam
U A 14.7 Bremse Durchlaufband
U E 65.0 Synchronbit
UN E 12.2 Lichtschranke Längenmessung -B2
SPB=Marke
L EW 66 (wie lade ich ein Einganswort in den Akku? ein Wort sind doch zweit Byte? in diesem Fall Byte 3 und 4, Sollwert1 u. 2)
T MW 100
Marke

Grüße
Andi
 
Zuletzt bearbeitet:
Hallo,
es ist schon spät, mal sehen ob ich noch das ganze zusammenkriege, was ich so dachte. Also, den Impuls hast Du mit einer Zeit gebastelt, ist erstmal möglich, aber es geht eleganter:
U E 12.4 Fußtaster
UN M1.0 Hilfsmerker
S M1.0 Hilfsmerker
S A 21.2 Durchlaufband Einlauf
S A 14.1 Durchlaufband Langsam
S A 14.7 Bremse Durchlaufband

UN E12.4 Fußtaster
R M1.0

So, jetzt kriegst Du sicherlich Fragen wie das funktioniert, einfach mal anrufen, mit Worten gehts schneller.
Zur Funktion:
Fußtaster wird gedrückt, SPS liest im Zyklus zunächst diesen Eingang ein. Dann beginnt die Programmbearbeitung. Der Hilfsmerker sei rückgesetzt. Das VKE wird also 1, weil Fußtaster=1 und Hilfsmerker=0, die nachfolgenden S Befehle werden ausgeführt. Der Hilfsmerker wechselt also nach 1, Ausgangsvariablen für Bänder werden gesetzt. Im zweiten Teil ist E12.4, also Fußtaster noch 1, das VKE ist durch UN 0, der Reset Befehl wird nicht ausgeführt. Die Programmbearbeitung ist am Ende, jetzt werden die Ausgänge geschrieben, das heißt die physikalischen Ausgänge werden dem Zustand der Ausgangsvariablen angepaßt. Also erst jetzt laufen Die Bänder an. Dieser Zyklus ist zuende, es beginnt ein neuer, wieder mit Eingang einlesen. Der ußtaster ist noch immer 1, durch den jetzt gesetzten Hilfsmerker kann aber kein Setzen mehr erfolgen. Rest wie gehabt. Ein paar Zyklen weiter ist der Fußtaster offen, E12.4 wird 0. Im ersten Programmteil passiert nix, im zweiten wird das VKE aber 1, das heißt der Hilfsmerker wird rückgesetzt und ist bereit für neue Schweinereien. Du hast also hier einen Konstrukt, der für genau einen Zyklus aktiv ist und dann nicht mehr.

Teil 2:
Sieht soweit ganz gut aus, ich denke da jetzt nicht weiter drüber nach, von mir ist da noch ein Fehler drin.

U A 21.2 Durchlaufband Einlauf
U A 14.1 Durchlaufband Langsam
U A 14.7 Bremse Durchlaufband
U E 65.0 Synchronbit
UN E 12.2 Lichtschranke Längenmessung -B2
SPB=Marke (Bedingter Sprung, warum und wohin?)
L EW 66 (wie lade ich ein Einganswort in den Akku? ein Wort sind doch zweit Byte? in diesem Fall Byte 3 und 4, Sollwert1 u. 2)
T MW 100
Marke
Zur Funktion: Ziel ist es hier einen Längenwert des Werkstückes zu bekommen. Kann man wahrscheinlich nicht so schreiben, aber es geht hier ums Prinzip. Im Handbuch steht zum Zählermodul, des dieses blöde Syncbit bei Synchronisation gesetzt wird, ich habe aber nix zum rücksetzen gefunden. Ist gut möglich das dasselbe nur lesbar ist. Der Akku faßt ein Wort, also 2 Byte. Damit kannst Du EW 66 vollständig ablegen und dann nach MW100 transferieren. Wir wollen aber verhindern (das Band läuft ja weiter) das MW 100 mit weiterläuft. Also realisiert man hier einen Sprung um diese zwei Befehle herum, da diese immer, d.h. nicht VKE abhängig ausgeführt werden. Ich habe an diese Stelle mal Marke geschrieben. Die Sprungbedingungen denkst Du Dir aber jetzt selbst mal aus.
U E12.2
SPB Marke
L EW 66
T MW 100
Marke

So könnte es gehen, jetzt Du. Schreiben/Sprechen wo Du Probleme siehst. Wenn das hier alles klar ist, kommen wir zum Stoppen des Bandes an der passenden Position. Aber erst dann.

Gruß
Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
bin jetzt wieder halbwegs unter den Lebenden, geht ja noch was ich da so verzapft habe. War halt spät. Du kannst hilfs -und übungsweise mal das Band direkt mit dem Fußtaster laufenlassen und dann mittel Steuern Variable dann die Reaktion Deines MW 100 beobachten. Also Band laufenlassen, dann Lichtschranke abdecken und wieder freigeben. Nach dem Freigeben sollte der Wert in MW 100 stehenbleiben, mit abgedeckter Lichtschranke wird er zuerst 0 gesetzt und dann mit EW 66 synchron gehalten. Nachteil des ganzen ist die recht geringe Störsicherheit, wenn die Lichtschranke zwischendurch ein Bäuerchen macht, hast Du einen falschen Wert. Gehen wir erstmal nicht von aus. Die Impulsbildung ist hoffentlich verstanden. Sprünge gehen nur in FBs, aufpassen. Sinnvoll ist es jetzt schon eine gewisse Ordnung zu halten, für den FB 2 z.B. das Merkerbyte 2 als internes Byte zu verwenden. Damit weißt Du dann immer m2.schlagmichtot - ist eine Variable aus FB2. Die Zustände sind ja dann für andere Programmteile mit wichtig, z.B. Pressen usw. und da kann man sonst schon die Übersicht verlieren. Wir fangen auch noch nicht mit DBs an, das kommt auch später. Und macht Euch das mal mit dem Zyklus der SPS klar, ohne das versteht man sonst nahezu alles nicht.

In diesem Sinne
Mario
 
Hallo,

Wir haben das Prog gestern noch um einen Bandstop erweitert und getestet (in einem Funktionsbaustein).


U E 12.4 Fußtaster
L KT 200.0 Lade konstanten Zeitwert 2s
SV T 1 Starten einer Zeit als verlängerter Impuls
NOP 0
NOP 0
NOP 0
U T 1
S A 21.2 Durchlaufband Einlauf
S A 14.1 Durchlaufband Langsam
S A 14.7 Bremse Durchlaufband


U A 21.2 Durchlaufband Einlauf
U A 14.1 Durchlaufband Langsam
U A 14.7 Bremse Durchlaufband
U E 65.0 Synchronbit
UN E 12.2 Lichtschranke Längenmessung -B2
SPB =M001
L EW 66
T MW 100
M001

U E 13.2 -B6 Bandfreigabe nach Presszyklus
R A 21.2 Durchlaufband Einlauf
R A 14.1 Durchlaufband Langsam
R A 14.7 Bremse Durchlaufband

BE

Man kann schön sehen wie beim EW 66 und beim MW 100 mitgezählt wird. Wenn Synchronbit gesetzt wird auf 0 resetet. Allerdings wenn das Testobjekt den Lichtschranken verläßt wird mit dem Zählen nicht aufgehört. Das EW und das MW zählen weiter bis das Band stehen bleibt.

Die Impuls Bildung habe ich verstanden. Nur was ich nicht verstehe ist, warum man das so macht. Warum darf man es nicht so machen:

U E 12.4 Fußtaster
S A 21.2 Durchlaufband Einlauf
S A 14.1 Durchlaufband Langsam
S A 14.7 Bremse Durchlaufband

Grüße
Andi
 
Hallo andiandi,
alles ein Problem des VKE. Beginnen wir oben mit unserem Konstrukt des Umladens in ein Merkerwort. Es ist so, das bei VKE = 0 der SPB nicht ausgeführt wird. Das heißt, das Umladen der Werte findet immer statt. Erst bei VKE = 1 wird gesprungen. Dann wird das Umladen "übersprungen" und der Wert in MW 100 sollte gleich bleiben. Ich habe Dir weiter oben bereits einen Konstrukt gebastelt, der funktionieren sollte. Probiere denselben bitte mal aus, eventuell mußt Du den Lichtschrankeneingang invertieren wenn onhe Werkstück gezählt wird.
Zur Impulsbildung:
U Bedingung schlagmichtot
S Ausgang zuhauen

U Liegt am Boden
R Ausgang zuhauen
heißt, das bei VKE =1 die Setzanweisung immer ausgeführt wird. Bleibt Bedingung schlamichtot aus irgendwelchen Gründen ständig anstehen, und Du hast nur kurz auftretende Halt Bedingungen, sei es durch eine Lichtschranke, so wird beim Verlassen der Halt Bedingung der Ausgang sofort wieder aktiv. Von daher führt sich dieser Vierzeiler schon selbst ad absurdum, man kann dann gleich schreiben:
U Bedingung schlagmichtot
UN Liegt am Boden
= Ausgang zuhauen
Nun mit Flanke:
U Bedingung schlagmichtot
U steigende Flanke
S Ausgang zuhauen

U Liegt am Boden
R Ausgang zuhauen,
sorgt für ein Verhindern des autarken Wiederanlaufes, solange die Bedingung schlagmichtot ein konstantes VKE=1 erzeugt.
Sowas wird im übrigen auch Flankensteuerung genannt. Zeiten sind erstens begrenzt in der Menge, belasten unnötig die Systemressourcen, die Du noch dringend brauchen wirst und die auslösende Bedingung steht grundsätzlich nur solange an wie sie auch tatsächlich gebraucht wird. Letzteres verhindert unkontrollierte Reaktionen (wie oben schon angedeutet), die dann als Programmfehler hochgradigst schwer zu finden sind. Mit dem Wachsen Deiner Software wirst Du das einsehen, im gegenwärtigen Stadium sicher noch nicht.
Baue also bitte mal die Flankensteuerung wie von mir beschrieben so ein, die Zeit raus. Und dann probiere mal mit dem Sprung, ob die Lichtschranke als Bedingung reicht. Wenn wir dann auf diese Art und Weise einen Wert erhalten können wir weitermachen.

Gruß
Mario
 
Zurück
Oben