Bit in Merkerwort

Zuviel Werbung?
-> Hier kostenlos registrieren
Erklär doch bitte mal deine Logik noch etwas besser, damit ich's auch kapiere.
Wofür stehen in deinem ersten Beitrag die ... ?
Ich hab das so gelesen, dass alle Merker außer dem ersten FALSE sein müssen um den Ausgang anzusteuern.
 
also die ... stehen dafür das weitere verschiedene Verknüpfungen folgen das war mur ein symbolisches beispiel.
PS: In dem FB wo diese Merker rein gehen sind mehrere Funktionen unter gebracht z.b. Zeitsteuerung eines Ausganges (ich habe davon 6 in meinem FB),mehrer Flanken erkennungen wo ich dies merker als hilfsmerker brauche und für nichts anderes. ist es jetzt ein wenig klarer.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es ausprobiert und es funktioniert nicht :((( irgendwie setzt er mir das Bit im MW dauerhaft und das ist für meine Anwendung sehr schädlich :(( ich weiß nicht ob ich eine lange Leitung habe oder ob das was ich will über hauft funktioniert in der SPS.
Kurz noch mal was ich erreichen will:

Ich möchte dem selbst geschrieben FB ein Merkerwort übergeben.
In diesem Fb soll das Merkerwort in seine Merker aufgeteilt weden (kann auch ein extra fb sein ), so dass man die Merker (oder MW bits ) einzeln ansprechen kann, wie es bei normalen merkern der Fall ist.

Die Aufteilung dient nur der besseren kontroller der verwendeten merker.
FB : aktuell

Hme0 > M0.0 //Hilfsmerker 0
.
.
.
Hmex> Mx.x //Hilfsmerker x.x

ersetzen durch:
FB:
HMWx> MW0 // und im Fb soll dann die Merker M0.0 bis Mx.x angesprochen weden (Flankenhilfsmerker)


Im FB: aktuell

U =E1
UN=Hme0 ///hier soll das Bit des Merkerworts abgefragt weden was den Merker0.0 repräsentiert
==FLK

U=E1
== Hme0 /// Hier soll dem Bit des Merkerwortes der Zustandzugewiesen werden der den Merker 0.0 repräsentiert |kein Setzbefehl!!!!!


Ist das überhaupt möglich wenn nicht geht das mit Merkerbyte's? in der Mikrokontrollersprache (Sbit (=Setze bit in MW)) ist das sehr einfach zu realisieren aber bei sps ?

Gebt mir mal bitte eine ANW darauf.
THX schon mal im vorraus
 
Zuletzt bearbeitet:
ohne das ich jetzt alle beiträge gelesen habe....

für s7 kannst du es so machen wie im bild zu sehen.

das geht bei s5 nicht.
das sinnvollste ist das das in-wort in ein temporäres merkerwort zu transferieren

Code:
L =INMW
T MW250
U =E0
= M250.1

...

L MW250  <-- da brauch man nur wenn das wort nicht nur temporär sein sein
T =INMW
 

Anhänge

  • Zwischenablage02.gif
    Zwischenablage02.gif
    6 KB · Aufrufe: 17
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe in meinem Programm ein Fehler festgestellt, warum es nicht funktioniert, ich verwende das MW bereits für andere Zwecke, MW geändert und es funktioniert.
THX @ all
 
Zuletzt bearbeitet:
...
gewünsche Lösung:

Eingang FB's: MW 0
AusgangFB: M20.0
interne Funktion:
wie oben (unterschied ich habe nur einen eingang anstelle von 16 eingängen)

habe es mit pointern versucht komme da aber nicht so recht weiter.
Anmerkung: ich möchte das bit im MW nit mit der Anweisung S setzen sondern mit der anweisung = den sonst bin ich gezwungen es zurück zu setzen.

könnte mir jemand dabei helfen einen Brauch baren S7 und/oder S5 zu erzeugen.
...
@ bronko,
Joe hat hier noch 'ne gekapselte S7-Lösung:
//_________________________________________________
// *** zum testen
L MD 404
TAD // Reihenfolge der Byte drehen (evtl. musst du die Reihenfolgen nicht drehen, ja nachdem wie sie bereits drinstehen)
RRD 16 // Worte Tauschen
T #DWordDatei // DWORD-Variable im Lokaldatenbeieich laden
//_________________________________________________

//_________________________________________________
// *** Abfrage
LAR1 P##DWordDatei // Adressoffset laden
L BitNummer // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
+AR1 // Die Bits zum Adressregister addieren
U L [AR1,P#0.0] // auf die Bitnummer zugreifen (hier lokaldaten)
= #OK
//_________________________________________________

Falls du noch mehr mit dem Adressregister machst das sichern (vorher) und wiederherstellen (nach dem zugriff) nicht vergessen.
Das müßte doch in etwa das sein, was Du ursprünglich versucht hast, oder?
 
Zurück
Oben