Schieberegister für Linearbewegung

Pico1184

Level-2
Beiträge
332
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

wir montieren verschiedene Teile auf einer Linearstrecke. Diese Linearstrecke enthält 3 Montagestationen.
Jede Montagestation enthält einen Servoantrieb. Diese sind untereinander alle synchronisiert.

An dieser Linearstrecke ist am Ende eine Ausblasstation für Ausschussteile.

Nun sollen im Fehlerfall einer Montagestation alle Teile zwischen Montagestation und Ausblasstation als Ausschuss behandelt werden.

Habe mir gedacht das ich dies über ein Schieberegister machen kann.

Habe dazu für jeden Registerplatz ein Word (Register_1, Register_2, Register_n).

Das Bit 2 in jedem Word markiert das Ausschussteil.

Mein Problem ist nur wie kann ich in dem Register z.B. für Montagestation 1 die Plätze 0 -25 setzen d.h. Register_0 bis Register_25 immer nur das Bit_2 in jedem Word.

Bei Montagestation_2 wären es dann Register_10 bis Register_25 und Station 3 Register_20 bis Register_25.

Danach soll dieses Register über die Teilung des Servoantriebs geschoben werden und jedes Teil ausgeblasen.

Grüße Pico
 
Könntest ja mit einer Schleife immer nur das Bit 2 vom Word setzen!
Warum muss es ein word sein hast du andere Informationen auch drinnen?
Sonst nimm ein byte reicht doch auch aus oder?

Oder gleich ein DWord,dann hast du 32 Registerplätze.Diese kannst du auch schieben!
Mfg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich benötige ein Word weil ich noch Status Informationen verwende und Reserve halten möchte.

Würde das so gehen?
Code:
AUF DB202

LOOP: Nop 0
L #Datensatz
SLD 3
LAR1

S DBX[AR1, P#0.0]

L #Datenstaz
L 2
+I
T #Datensatz

L #Schleifenvariable
L 1
+I
T #Schleifenvariable

L #Schleifenvariable
L #Max_Datensaetze
<=I
SPB LOOP

Grüße Pico
 
grundsätzlich passt das

L #Schleifenvariable
L #Max_Datensaetze
<=I

kannst du dir sparen. ist doppelt gemoppelt. schleifenende kannst du ja berechnen.

Code:
      AUF   DB   202
LOOP: NOP   0
      L     #Datensatz
      L     2                           //* 2 wegen int
      *I    
      SLD   3
      LAR1  
      SET   
      =     DBX [AR1,P#0.[COLOR=#ff0000][B]2[/B][/COLOR]] //<------------du willst ja das 2te bit setzen
      L     #Datensatz
      L     1
      +I    
      T     #Datensatz
      L     #Max_Datensaetze
      <I    
      SPB   LOOP
 
Was meinst du genau mit der Multiplikation von 2 wegen int??

Habe gedacht ich kann direkt aus der int variable
über das 3 stellen nach links schieben einen bereichsinternen zeiger erstellen???

PS: Oder ist das wegen der größe von 2 Byte (int) ????

Grüße Pico
 
Zurück
Oben