# S7-300 Sortierweiche



## Industrieservic (29 Oktober 2008)

Hallo,
ich muß eine Sortierweiche realisieren und mir fehlt irgendwie der Ansatz. Ich wollte mir eigentlich mit der Rotation-Funktion behelfen, aber laut Simulationsprogramm ist das käse.
Funktionsprinzip: Teile werden gemessen und nach 7 Teilen wird das teil erst aussortiert, wenn schlecht.

D.h. die Teile laufen über ein Band unter einer Messkamera durch. Die Messkamera gibt bei schlechter Messung ein " 1-Signal" an die SPS. Durch eine Lichtschranke wird getriggert, so daß das schlechte Teil nach 7-Schritten aussortiert werden kann. Es kommen aber auch z.B. 3 schlechte Teile hintereinander.

Kann jemand Helfen?


----------



## Steve81 (29 Oktober 2008)

Suche mal nach Schieberegister.
Du musst das Ergebnis 1 oder 0 z.B. in ein MW schreiben und bei jedem neuen Ergebnis um eine Stelle verschieben. Bei der Lichtschranke schaust du dann nach der 7ten Stelle und sortiert dann je nach Prüfergebnis aus oder nicht.

0110000 --> nächste Messung--> 0011000 usw.
bei 0000011 muss dann ausgeschleust werden


----------



## Industrieservic (29 Oktober 2008)

Das mit dem Schieberegister habe ich auch schon in der Simulation probiert. Es schiebt mir nur das angelegte Datenwort um die Anzahl der gewünschten Bits weiter. Aber er behält es nicht im Speicher sondern erwartet ein neues zum weiterschieben.

Simulations-Software IBH S57W Version 6.0


----------



## Jordy (29 Oktober 2008)

Was meinst du genau damit, "nach dem siebten Teil"?

Es müssen 7 schlechte kommen, dann wird ausgeschleust?? Wenns so ist, wofür Schieberegister!? Dann würde ich einfach bis 7 Zählen und dann ausschleusen und den Zähler wieder rücksetzen.

Aber wahrscheinlich meinst du es bisschen anders.
Kannst dus bisschen genauer erklären?

mfg
Jordy


----------



## MSB (29 Oktober 2008)

@Jordy
Wenn man ein wenig weiß wie eine Schleuse funktioniert ist die Fragestellung doch absolut eindeutig.



> Das mit dem Schieberegister habe ich auch schon in der Simulation probiert. Es schiebt mir nur das angelegte Datenwort um die Anzahl der gewünschten Bits weiter. Aber er behält es nicht im Speicher sondern erwartet ein neues zum weiterschieben.


Was verstehst du bitte darunter?

Mit deinem Kamerasignal manipulierst du bei einem beliebigen Wort das Bit #7,
dieses Wort schiebst du mit jeder Flanke der Lichtschranke um 1 nach Rechts.
U LS_Flanke
SPBN M001
L Wort
SRW 1
T Wort
M001 : Nop 0

Deine Auschleusung schaut auf Bit 0 des Wortes, also:
U LS_Flanke
U Wort.0
= Ausschleusen

Mfg
Manuel


----------



## Industrieservic (29 Oktober 2008)

Ich versuch es mal anders zu erklähren. Es kommen permanent Teile in gleichem Abstand auf einem Band.
Am Bandanfang sitzt eine Kamera die alle Teile, einzeln im vorbeifahren misst. Bis das jeweils gemessene Teil zur 300mm entferten Sortierweiche kommt, gehen 6 Stück vorangemessene Teile durch.Wird also nur ein schlechtes Teil gemessen, so fahren 6 gute Teile an der Sortierweiche vorbei und das 7.Teil soll aussortiert werden.

Ich hoffe so ist es verständlicher


----------



## Industrieservic (29 Oktober 2008)

Hallo Manuel,
ich versuche ständig Dein Musterprogramm zu programieren, aber die Software bringt immer Syntaxfehler bei Befehl "SPBN M001".

Gruß
Julian


----------



## Gebs (29 Oktober 2008)

Hallo Julian,

versuch doch dann:

UN LS_Flanke
SPB M001


Grüße
Gebs


----------



## Jordy (29 Oktober 2008)

MSB schrieb:


> @Jordy
> Wenn man ein wenig weiß wie eine Schleuse funktioniert ist die Fragestellung doch absolut eindeutig.


 
Ja.... WENN!!!!

Nur wenn jemand (wie ich) so eine Schleuse noch nicht gesehen hat weiß er es nicht!
Und da wir hier kein Schleusenforum sind und ich einfach nur helfen und selber mitüberlegen wollte, finde ich kann man auch ruhig nachfragen wies genau funktioniert bzw. jemand kann es erklären. Mr. Schleusenexperte! 





> Ich versuch es mal anders zu erklähren. Es kommen permanent Teile in gleichem Abstand auf einem Band.
> Am Bandanfang sitzt eine Kamera die alle Teile, einzeln im vorbeifahren misst. Bis das jeweils gemessene Teil zur 300mm entferten Sortierweiche kommt, gehen 6 Stück vorangemessene Teile durch.Wird also nur ein schlechtes Teil gemessen, so fahren 6 gute Teile an der Sortierweiche vorbei und das 7.Teil soll aussortiert werden.
> 
> Ich hoffe so ist es verständlicher


 
Danke, jetzt weiß ich wies gemeint ist, dann macht Schieberegister natürlich absolut sinn!!!


----------



## Industrieservic (29 Oktober 2008)

Aber das Schieberegister funktioniert bei mir nicht so wie es sollte.

U m0.0
SPBN_001
L 1
L MW 10
SLW
T AW 1
_001:NOP 0

Wenn ich ein Bit im MW 10 setze wird es mit M0.0=1 tatsächlich um eine Stelle am AW1 verschoben, dann schalte ich M0.0=0 und AW1 bleibt gespeichert. Nun setze ich im MW10 alles auf 0 und schalte M0.0=1, dann wird im AW1 auch alles 0. Aber es müsste doch eigentlich die zuvor gesetzte 1 um eine weitere Stelle verschoben werden, oder?


Habt ein bischen verständnis, ich arbeite zum ersten mal mit einem Schieberegister.


----------



## SPSKILLER (29 Oktober 2008)

Industrieservic schrieb:


> Aber das Schieberegister funktioniert bei mir nicht so wie es sollte.
> 
> U m0.0
> SPBN_001
> ...


 
Der Befehl funktioniert schon, wenn du aber MW10 auf 0 setzt, dann schiebt er NULLEN...

btw: für deinen Fall kannst

```
L 1
L MW 10
SLW
.
.
durch:
 
l MW10
slw [COLOR=red]1[/COLOR]
[COLOR=black].[/COLOR]
[COLOR=black].[/COLOR]
```
ersetzen. Geht schneller...

Nachtrag: 
Der Beitrag vom MSB ist doch schon ziemlich genau das was du brauchst...

Gruß Micha


----------



## Gerhard K (29 Oktober 2008)

leg einen DB an wo du ein bit weiterschiebst und und fragst dieses an siebter stell immer auf true ab.


----------



## Steve81 (29 Oktober 2008)

Industrieservic schrieb:


> Aber das Schieberegister funktioniert bei mir nicht so wie es sollte.
> 
> U m0.0
> SPBN_001
> ...


 
Also wie auch schon SPSKILLER geschrieben hat, setzt du ja wenn du MW10 auf 0 setzt, auch das AW1 auf 0. Aber warum lädst du überhaupt etwas in ein Ausgangswort? Dient das nur zu Simulation? Es reicht ja, wenn du ein MW oder noch besser ein DBW nimmst, darin bei Schlechtauswertung das niederwertigste Bit auf 1 setzt, und dann in diesem MW oder DBW dei Bits um eine Stelle verschiebst. Dann einfach noch die siebte Stelle abfragen und du weist ob an der Ausschläusstation ein gutes oder ein schlechtes Teil liegt.


----------



## Industrieservic (30 Oktober 2008)

Danke Euch allen!
Ich habe jetzt eine funktionierende Version gefunden, die in meiner Simulation läuft.

NT1:
FN M0.0    Schiebeimpuls
SPBN_M000
L MW 10
SRW 1
T MW 10
M000: NOP 0

NT2:
U E0.1     Fehler wird geldet
=M10.7

NT3:
U M10.0
=A 1.0    Teil wird nach 7 Takten aussortiert

Was meint Ihr zu der Variante?


----------



## Gebs (30 Oktober 2008)

Das ist GENAU das, was MSB in seinem Beitrag geschrieben hat!


----------



## Steve81 (30 Oktober 2008)

Gebs schrieb:


> Das ist GENAU das, was MSB in seinem Beitrag geschrieben hat!


 
Bis auf das setzen des nio-Bits M10.7.

@Industrieservic
Die Variante ist ok (auch wenn etwas bei MSB abgeschaut). Wichtig ist, dass du die einzelnen Befehlszeilen (also die Funktion deines Schieberegisters) auch nachvollziehen kannst.


----------



## Gebs (30 Oktober 2008)

Auch das hat er geschrieben:


MSB schrieb:


> Mit deinem Kamerasignal manipulierst du bei einem beliebigen Wort das Bit #7,


----------



## Steve81 (30 Oktober 2008)

Gebs schrieb:


> Auch das hat er geschrieben:


 
Aber nur als Text und nicht als Code (und auf den hab ich mich bezogen).

Als Text hab ich das auch schon in meiner ersten Antwort geschrieben.



> Du musst das Ergebnis 1 oder 0 z.B. in ein MW schreiben und bei jedem neuen Ergebnis um eine Stelle verschieben. Bei der Lichtschranke schaust du dann nach der 7ten Stelle und sortiert dann je nach Prüfergebnis aus oder nicht.
> 
> 0110000 --> nächste Messung--> 0011000 usw.
> bei 0000011 muss dann ausgeschleust werden


----------



## Industrieservic (30 Oktober 2008)

Hey Jungs,
natürlich habe ich bei Euch abgeschaut, sonst hätte ich ja kein Thread eröffnet.
Meine eigentliche Problemlösung war die Flankenerkennung noch einzubauen, weil ohne diese funktioniert die Schrittweise Steuerung nicht. Ich habe das jetzt auch verstanden, dass solange EN=1 ist, das Schieberegister-Eingangswort bei jedem SPS-Zyklus um "N" weitergeschoben wird. Dies ist aber aus meiner Operations-Beschreibung nicht ersichtlich.


----------

