TIA Schiebenfunktion setzt alles auf 1

maverickxxll

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich benötige für ein Projekt auf der Arbeit ein 16 Bit register. Hierbei soll bei jeder pos. Flanke das MW um ein Bit verschoben werden. Gem mTIA Hilfe HAbe ich das mit dem SHL Baustein versucht zu lösen, aber sobal mein Takt auf eins geht wird das ganze Wort auf 1 geschrieben, und da schiebt nichts. Mache ich was grundsätzlich Falsch ?

Im Anhang die beide Netzwerke dazu.Taktsignal.PNGschieben.PNG

Danke für die Hilfe

Gruß Jens
 
Man kann leider nicht erkennen, wie Dein "Takt Register (Spenden)" entsteht. Bist Du sicher, das es wirklich ein Takt und kein DauerSignal ist?

Wie wird denn das MW100 initialisiert (damit Du auch was zum Schieben hast) und wird diese Initialisierung nicht versehentlich in jedem Zyklus/Takt wiederholt?

Wie hängen denn Deine beiden Bilder zusammen? Außer ähnlichen Bezeichnungen kann ich da keine Gemeinsamkeiten entdecken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie sind denn die Variablen mit #... im zweiten Bild deklariert? Wo kommen die her?
Gibt es vielleicht außerdem noch Adressüberschneidungen anderer Variablen mit dem MW100?

(Was sind das überhaupt für komische Variablennamen in dem TIA mit Anführungstrichen " und extra noch # davor :confused:)

Harald
 
Hallo hucki,

das Schieben habe ich in einem eigenen FC untergebracht

Beim Schieben ist das Signal des T30 verbunden. Somit gibt es einem Impuls von 100ms wenn der Vorgang Spenden gestartet wird.
er soll dabei bei jedem Starten vom Spenden 1 Bit schieben. Das setzen und Rücksetzen des Merkers funktioniert und wenn ich die Impulszeit zum ausprobieren größer mache sehe ich auch im Beobachten den Timerausgang. Nur anstatt eine 1 die ich im Merker Wort setze wir gleich das gesamte MW auf 1 gesetzt und andersherum auch , bei 0 wird gleich alles Null.

Ich hoffe es ist klarer
 
Hallo Harald,
Die Variabelen Namen kommen vom erstellen der in dem FC Baustein (siehe Anhang)
schieben 2.PNG
Ich möchte später noch mehrere Register in diesn Baustein packen, aber erstmal sollte einer Funktionieren.

Innerhalb des MW wird das Bit an unterschiedlichen Stellen vorm schieben gesetzt, da es sich um eine Kontrollstrecke handelt die auf unterschiedlichen Position angebracht werden muss. Ich weiß nicht wie weit das unter überschneidungen fällt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Flankenmerker ist eine temporäre Variable! Damit funktioniert das ganze nicht und Du hast in jedem Zyklus eine Flanke!

Entweder Du benutzt einen FB mit statischer Variable oder im FC nicht Temp sondern InOut, und speicherst den Flankenmerker außerhalb des FCs global!
PS: Oder Du erzeugst die Flanke außerhalb des FCs und übergibst nur diese an den FC, nicht das Taktsignal selbst.
 
Zuletzt bearbeitet:
Eine Adressüberschneidung muß beteiligt sein, damit durch das SHL alle Bits des MW 1 werden. Das geht nur, wenn vor jedem Schieben der Merker M101.0 auf 1 geschrieben wird.

(sind die mit dem TIA jetzt ganz narrisch? Wozu müssen lokale Variablen ausser dem # auch noch Anführungsstriche haben? Wohl damit man solchen Unfug wie Leerzeichen und Punkte im Variablenname verwenden kann...)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Adressüberschneidung muß beteiligt sein, damit durch das SHL alle Bits des MW 1 werden. Das geht nur, wenn vor jedem Schieben der Merker M101.0 auf 1 geschrieben wird.
:confused:
Er gibt doch das erste Bit mit 1 oder 0 vor und in Nullkomma nichts ist das dann durch das Wort durch, ohne das er die Vorgabe zurück nehmen kann?!
Klingt jedenfalls für mich so, auch wenn er das nicht wirklich artikulieren kann:
Nur anstatt eine 1 die ich im Merker Wort setze wir gleich das gesamte MW auf 1 gesetzt und andersherum auch , bei 0 wird gleich alles Null.

Ich hoffe es ist klarer
Nicht wirklich, denn wenn ich das Merkerwort auf 1 setze, dann erwarte ich auch, das das ganze Merkerwort 1 ist und nicht nur das halbe.
Was Du bestimmt meintest, ist, dass alle Bits des Wortes mit 1en gefüllt sind anstatt nur eines einzelnen Bits, oder?
 
Erstmal Danke euch beiden für die raschen antworten.

Ja, ich meinte es so das 1 Bit auf 1 gesetzt wird und dieses gleich ganz duchgeschoben wird so dass das gesamte MW in jedem Bit eine 1 hat.
Ich werde es morgen mal an der Anlage ausprobieren. Habe auf jeden Fall wieder was dazu gelernt. Werde dann nochmal eine Rückmeldung geben.

Gruß Jens
 
Hallo,

die gute Nachricht ist das es funktioniert, aber es lag glauge ich daran das ich einen falschen Flankenmerker benutzt habe. Grrr.
Nun macht es aber das was es soll.

Danke für die Hilfe.

Gruß Jens
 
Zurück
Oben