Schieberegister

Begonnen von kraas, 25. Juni 2012, 15:04:40

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

kraas

Hallo zusammen,
habe schon die Suchfunktion probiert, allerdings ohne Erfolg.
Ich habe eine Rohrschneidemaschine, die ein EndlosRohr klein schneidet.Vorher wird an einer bestimmten Stelle geprüft, ob das Rohr gut ist. Diese Prüfstelle ist 1Meter von der Aussortierung entfernt.Schneidet man also 10cm Rohre , so muß nach 10mal schneiden das schlechte Rohr aussortiert werden.Schneidet man 25cm Rohre so muß schon nach 4mal takten aussortiert werden.
Der Bediener gibt über HMI die Taktzahl ein, damit wollte ich ein Schieberegister abfragen.Problem ist aber, das der Bediener bis zu Wert90 eingeben kann.Somit ist ein 32BitRegister zu klein. Und wie schreibe ich das ohne jedes Bit/Wert einzeln abzufragen??
Mit einer Schleife? Aber wie?
Vielen Dank schon mal für die Hilfe!!

alexdrik


Hallo,

ich schlagen vor, daß du ein Array[1..90] of Bool verwendest.

In das Element, das deiner momentanen Taktzahl entspricht, schreibst du dann rein, ob das Rohrstück aussortiert werden soll oder nicht und bei jedem Aussortier-Schritt verschiebst du die Elemente des Arrays um eins, sprich Element[1]:=Element[2]; Element[2]:=Element[3]; ... und das dann als For-Schleife.
Die Taktzahl entspricht dann der Anzahl von Elementen, in denen gültige Informationen drinstehen.

Eine andere Lösung wäre, das Array als Ringspeicher zu betrachten und dir jeweils zu merken, an welcher Stelle das nächste Prüfteil eingetragen wird und an welcher Stelle das nächste Aussortierteil (Du ersparst dir praktisch das Weiterschieben das Arrays durch Hochzählen der Stelle, an der das Element zum Aussortieren steht). Wenn du bei Element[90] angelangt bist, mußt du dann natürlich bei Element[1] weiterzählen.
Die Taktzahl entspricht dann dem Abstand der Zählerstände zwischen Prüfteil und Aussortierteil.

Wenn noch Unklarheiten bestehen, bitte wieder melden.

Gruß
     Alex

shooter

Why not keep track of the bad part, this way you can cut just before the bad part
so in a memory pos you just put a counter on it and when counter is for example 97 you can make 3 pieces of 25 and 2 pieces of 10 this will save you material.
If you do have more in one meter you will have to use a array with counters.