Ausgangsbit Toggeln

FinalMistery

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Aloha alle zusammen,

ich würde gerne an einer bestimmten Stelle in meinem AWL Programm ein bestimmtes Bit in einem Ausgangsbyte toggeln.
Das würe heißten, dass ich es erst einmal einlesen muss um seinen momentanen Zustand zu erfahren und anschließend den neuen Wert schreiben.
Doch is es bekanntlich nicht möglich auserhalb des Prozessabbildes die Ausgänge auszulesen.
Wie bekomm ich aber mein Vorhaben realisiert?

Würde mich über eure Hilfe freuen!

MfG
FinalMistery
 
du sorgst dafür das beim aufstart ein genormter zustand herscht und lößt es mit einem merkerbit das den zustand des ausgangs parallel schaltet
 
Zuviel Werbung?
-> Hier kostenlos registrieren
du sorgst dafür das beim aufstart ein genormter zustand herscht und lößt es mit einem merkerbit das den zustand des ausgangs parallel schaltet

ja auf die Idee bin ich auch schon gekommen, doch wenn halt an irgend einem andern Ort mal das Bit geändert weird, stimmt die ganze Sache schon nicht mehr.
Gibt es keine elegantere Lösung??
 
Aloha alle zusammen,

ich würde gerne an einer bestimmten Stelle in meinem AWL Programm ein bestimmtes Bit in einem Ausgangsbyte toggeln.
Das würe heißten, dass ich es erst einmal einlesen muss um seinen momentanen Zustand zu erfahren und anschließend den neuen Wert schreiben.
Doch is es bekanntlich nicht möglich auserhalb des Prozessabbildes die Ausgänge auszulesen.
Wie bekomm ich aber mein Vorhaben realisiert?

Würde mich über eure Hilfe freuen!

MfG
FinalMistery

Warum willst du einen Ausgang auslesen? Du beschreibst den doch irgendwo im Programm.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt habe ich doch noch kein kleines Problem...
Das Ereignis, das das Bittoggeln im Ausgang auslösen soll, ist ein getoggeltes Bit im Eingang.

Doch irgendwie, hänge ich dort gerade, das eine Bit eines Bytes zu prüfen.

Also ich habe mir das Byte einfach mal in eine temporäre-Bytevariabel gezogen temp_Byte
Code:
L PEB [#temp_adress]
T temp_Byte

nun muss ich aus diesem Byte, das 0te bit auslesen, mach ich das am besten über Schieben oder welchen Trick gibt es dort?
 
Code:
U E0.0
FP M0.0
X A4.0
= A4.0

so kannste jeweils mit Drücken des Eingangs 0.0 den Ausgang 4.0 togglen. Quasi ne Tasterschaltung.
Hast Du das so gemeint?
 
Ohne Sprung funktioniert das nicht:

Code:
     U E0.0
     FP M0.0
     spbn 001
     un A4.0
     = A4.0
001: nop 0
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
:oops: Ich nehme alles zurück, ich habe gerade erst gesehen da du ein X nach der Flanke geschrieben hast. Diese Version kannte ich noch nicht, funktioniert aber natürlich!!!
 
Servus,
erstmal zu den Eingang: Um den Zustand des Eingangs exakt an der Stelle des Programms zu kennen, mußt Du die Peripherie direkt einlesen, so wie du es schon getan hast:
L PEB 0 //Aktueller Zustand des Eingangsbytes
T MB 0 // In Merkerbyte schreiben

Das erste Bit des MB0 ist M0.0 = E0.0
Damit kannst du jetzt toggeln.


Zum Ausgang: L PAB 0 geht nicht! Also:
L AB 0 // die Aktualwerte aus den Programm
T PAB 0 //direkt in die Peripherie schreiben
Damit hast Du an genau der Stelle den Zustand der Ausgänge.

Soll während der Abarbeitung des Programms nicht irgend ein Alarm(Interrupt) Deinen E/A-Zustand durcheinanderwirbeln, kannst du vor bzw. nach den Anweisungen die SFC 39 bzw. SFC 40 aufrufen (Alarme sperren/freigeben).
Gruß
Sailor
 
Zurück
Oben