Schieberegister????

cobeq

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag Miteinander

Ich muss einen Transportband programmieren, ich habe mit dem Schiebebefehl nicht klar.

Programmablauf: E 3.1 Taktgeber
E1.6 Werkstück am Start
A0.1 Lampe 1
A0.2 Lampe 2
Wenn E1.6 auf 1 schaltet soll der Ausgang A0.1 nach 30 Bit auf 1 schalten
und nach 40 bit wieder ausschalten. A0.2 soll dann 45 Bit auf 1 schalten und nach 50 bit auf 0.
Für die Bit-Zahl muss ich zwei MD mit einander verknüpfen, ein MD reicht nur für den A0.1 auf 1 zu setzen ( so ist der Takt und die Entfernung von E1.6 zu Lampe 1 und zwei)

Danke im Voraus

Schöne Grüsse
P.s. Liebe Leute bei Vorschlägen und Hilfestellungen deutlich und einfach!
-Ich bin ein blutiger Anfänger.
- Mit DB kenne ich mich auch nicht aus, ich muss das Programm auf jeden Fall mit Schiebebefehl realisieren.
 
Also die Aufgabe habe ich nicht verstanden. :confused:

Aber es gibt Schiebebefehle bei Step 7 (SHL / SHR)
Suche einmal im Befehlsvorrat der PLC was diese Befehle machen.


bike
 
@Bike:
das ist so eine Art Streckensteuerung. Für die Dauer des Belegt-Zustandes eines Ini's werden Einsen in ein Array_of_bool geschoben und ansonsten Nullen. Dadurch kannst du eine entfernte "virtuelle Position" erzeugen an der es dann keinen Schalter gibt ...

Gruß
Larry
 
@Bike:
das ist so eine Art Streckensteuerung. Für die Dauer des Belegt-Zustandes eines Ini's werden Einsen in ein Array_of_bool geschoben und ansonsten Nullen. Dadurch kannst du eine entfernte "virtuelle Position" erzeugen an der es dann keinen Schalter gibt ...

Gruß
Larry

Danke, es ist also so, dass ein Startimpuls von der Hardware kommt und die nächsten Positionen durch ein Takten definiert sind bzw werden?
Habe ich richtig verstanden?
Komisch, kann man das auch so erklären, dass es jeder versteht? :confused:


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, es ist also so, dass ein Startimpuls von der Hardware kommt und die nächsten Positionen durch ein Takten definiert sind bzw werden?
Habe ich richtig verstanden?
Komisch, kann man das auch so erklären, dass es jeder versteht? :confused:
Also ich habe es auch gleich so verstanden. ;)
Ich konnte nur noch keine richtige Frage raus lesen.
Das dem TE der Schiebebefehl nicht klar ist, ist ja dann doch eher eine Feststellung als eine Frage.
Und zur Abhilfe würde ich folgende Vorgehensweise empfehlen:
Im Step 7 Editor z.B.: SLD (für schiebe links Doppelwort) eintippen > nach der Eingabe den Mauszeiger darauf positionieren > F1 drücken.
 
Willst du das?

Beispiel:

Bits die geschoben werden mit einem Taktgeber

001110100000101010111000001000111000000100010100000101111011111111101
------------------I------------- I------------------------------ I

Die drei I stehen für den Punkt an dem Abgefragt ob hier eine 1 ist oder nicht.
Jeder Takt Impuls schiebt alles eins weider.
Takt Impuls und ein Ini erzeugen eine 1 in der Bitkette,
Takt Impuls und nicht der Ini erzeugen eine 0 in der Bitkette.

Falls du genau dieses brauchst kann ich ein Beispiel Online stellen.
 
Zuletzt bearbeitet:
Schieberegister

Leute Danke für eure Teilnahme
Das Programm soll so laufen wie bei den User "rogseut":

E 3.1 ist ein Ini der über eine Rolle belegt wird, die Rolle ist so preparieret das der Takt so 1 sec entspricht . 1010101010 sobald das Transportband eingeschaltet wird.
E1.6 ist die Lichtschranke am Anfang des Transportbandes, weitere Signalgeber ist es nicht möglich zu montieren.

Die Schiebebausteine im S7 300 bringe ich nicht zum laufen, auch mit Hilfe von S7(Beschreibung)nicht,ich bin ein Anfänger und keine Erfahrung damit.
Auch in der SPS kenne ich nur die Grundbausteine UND ODER und so.

Noch mal das Programm soll so funktionieren:


Sobald E1.6 belegt wird vom Werkstück, sollen die Takte nach Links oder Rechts geschoben werden.
Genau nach 30 Takten( 30 Mal muß der Eingang E3.1 auf 1 geschaltet haben) dann Muss der A0.1 auf eins schalten und in der 35-stten. Takt wieder auf 0 schalten. Der A0.2 soll in den 40-sten Takt einschalten und in den 45 ausschalten. Immer wenn E1.6 belegt wird müssen A0.1 und A0.2 an der gleichen stelle ein und ausschalten unabhängig vom Abstand der Werkstücke.
Es ist eine Wegesteuerung.
Zwei Doppelwörter in der Reihe reichen für die Länge des Transportes:
Also das verschieben um ein Bit soll am MD40 anfangen und am MD41 aufhören.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zwei Doppelwörter in der Reihe reichen für die Länge des Transportes:
Also das verschieben um ein Bit soll am MD40 anfangen und am MD41 aufhören.

Also MD 40 und MD 41 dann gibt es Müll.
Jedes Doppelwort ist 4 Byte lang.
Also SLD und F1 sagen mir wie das Schieben funktioniert.
Wenn du die AUfgabe hast so etwas zu programmieren gibt bzw gab bestimmt Hinweise..

Im ersten Post von dir stand etwas von 30 und 45 jetzt von 35 und 45, was ist richtig?
Außerdem fände ich doof wenn andere meine Hausaufgaben machen. :ROFLMAO:


bike
 
Hallo,
mal so als Hinweis, lege Dir doch mal ein Schiebedoppelwort auf eine 32 bittige Ausgangskarte, da kannst Du schön beobachten wie das Bit durchgeschoben wird. Der Rest ist Kreativität.....

Gruß
Mario
 
ich brausche hilfe und keine blöden Kommentare über Hausaufgaben, wenn du nicht helfen kannst dann lass es sein.
Die Foren sind dafür um sich einander zu helfen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn ich das hinbekommen würde,dann wäre das schon ein Anfang.
Wenn ich ein Schiebebefehl nach F1 bei S7 erstell dann schiebt er mir das ganze DW auf 1
Ich bin mir nicht sicher ob ich das DW richtig angelegt hab

danke trotzdem mario
 
Och nö, nicht schon wieder so etwas :confused:

Doch leider ist es.
Vielleicht braucht der Herr ein Programm? :confused:

Jeder ist käuflich, es kommt auf den Preis an. :ROFLMAO:

Oder sollte ich es einmal versuchen zu erklären, wie es geht?

ich brausche hilfe und keine blöden Kommentare über Hausaufgaben, wenn du nicht helfen kannst dann lass es sein.
Die Foren sind dafür um sich einander zu helfen.
Danke für den blöden Kommentar.
Der Kommentar war eigentlich gedacht, dir zu helfen.

Aber im Gegensatz zu dir kann ich es vermutlich.

Hast du ein MD angelegt und dann mit einer Flanke und SLD 1 geschoben und das Ergebnis angeschaut?

Vielleicht so?
U M10.6 // Startbedingung Erster Schiebezyklus
FP M10.0 // Flankenmerker
= M 10.1 // Flanke (Nur einmal setzen für Test

UN M10.1 // Initialisierung
SPB SCHI
L DW#16#0
T MD 40
R M 10.2


U M10.1
UN M10.2
S M 43.0 // ganz rechts ein Bit setzen
S M10.2

SCHI: U M10.4 // Taktmerker von der CPU oder Handsteuerung in einer VAT
FP M 10.5 // Speicher für Flanke Takt
= M 10.3 // Taktmerker zum Schieben


ON M10.2 //
ON M10.3 // FLanke von Takt oder Hand zum testen
SPB END

L MD 40
SLD 1
T MD 40 //

END: NOP 0

Zuerst den Merker 10.6 ansteuern, damit der Vorgang initialisiert wird. Es wird das MD und der Initmerker zurückgesetzt.
Dann kannst du mit steuern von M 10.4 schrittweise takten
So kannst du testen, wie das Schieben funktioniert und dann kannst du versuchen dein Programm zu erstellen.

Du kannst es auch gern nach FUP oder KOP, das du ja kannst, umsetzen.

Ich habe es nicht getestet doch es sollte funktionieren


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@cobeq

Hast du mal das Forum durchsucht?
Hier gab es schon eine Flut von Codebeispielen für Schieberegister, das wirst du fündig. Auch Schieberegister, die über die 32-Bitgrenze eines DWord hinaus z.Bsp. mit 2 DWord funktionieren.

PS: Wozu Foren da sind bestimmen der Admin (sozusagen als Besitzer) und die aktiven Mitglieder und die hier im SPS-Forum wissen das schon ganz gut. Danke für die Belehrung!
 
Zurück
Oben