Step 7 Bits aus einem Byte setzen in scl

Zuviel Werbung?
-> Hier kostenlos registrieren
Kurvenscheiben sind so ein Thema. Natürlich ist man mit Servoachsen flexibler. Aber wie oft ist diese Flexibilität in der Praxis notwendig? Eine mechanische Kurvenscheibe ist langlebiger, kostengünstiger und die kann zur Not in jeder Schlosserei nachgebaut werden.

Aber jede Schlosserei hat heute ein Fräse, vielleicht sogar eine CNC-Maschine. Da geht Niemand mehr mit Säge und Feile zu Werke. Der Vergleich hinkt etwas, aber so ähnlich ist das dann auch mit AWL und SCL.
Wir haben aktuell mit einer hochkomplexen Kurvenscheibe zu kämpfen.. die wird jetzt zum dritten mal nachbereitet. 🥶
 
Zuletzt bearbeitet:
Es müsste aber dann die Variante funktionieren das man einzelne Bits setzt und rücksetzt
und in den Baustein einzeln einliest und dann als Byte einmal verundet rücksetzt oder verodert setzt.

Dann hätte man 2 Bausteine a'8 Eingänge, was natürlich recht aufwendig ist.
Das müsste gehen, weil es ja nur Schreibzugriffe wären.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein BytetoBit funktioniert nicht und ist völlig unnötig, weil man Peripherie-Ausgangs-Bytes/Words nicht lesen kann.
Kann man zwar nicht lesen, aber es gibt in S5 und S7 Transferieren in die AusgangsPeriperie "mit Nachführung des PAA" (sofern vorhanden), also sollte man die Information "ersatzweise" aus dem PAA lesen können.


Es müsste aber dann die Variante funktionieren das man einzelne Bits setzt und rücksetzt
und in den Baustein einzeln einliest und dann als Byte einmal verundet rücksetzt oder verodert setzt.

Dann hätte man 2 Bausteine a'8 Eingänge, was natürlich recht aufwendig ist.
Das müsste gehen, weil es ja nur Schreibzugriffe wären.
Nur SchreibZugriffe?
Zu welcher Information soll denn per Verodern hinzugefügt bzw. aus welcher Information per Verunden herausgelöscht werden, wenn man auf die Information nicht vorab lesend zugreift?
 
Zuletzt bearbeitet:
also sollte man die Information "ersatzweise" aus dem PAA lesen können.
Aber nur, wenn die Ausgabeadressen im PAA liegen. Wenn der Speicherbereich der Ausgänge bei der verwendeten CPU überhaupt so groß ist, dass man die Peripherie-Adressen ins PAA legen kann. Und wenn die Ausgabeadressen im PAA liegen, dann braucht man keine Byte/Word-Umstände veranstalten, sondern kann die Bits direkt als Ax.y adressieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich meine das so wenn dieses periphere Bit sitzt muss mit einer Veroderung nur das aktuelle Bit gesetzt werden.
das zu Setzen ist.Die Bits gingen einzeln in den Baustein Setzen mit 1.Die anderen Bits bleiben 0.
Also erst das entsprechende Bit auf 1 zuweisen und dann den Baustein aufrufen.
Der Baustein darf das aber nur ausführen wenn der Eingang sitzt.
Als Maske nimmt man ein Merkerbyte.Das Pab muss natürlich auch in den Baustein und der Eingang.

Das gleiche mit einem Und Baustein der rücksetzt.Alle Bits 1 bis auf das Bit das rückgesetzt wird.
Oder habe ich einen Denkfehler?
 
Wie seit Beitrag #12 von mehreren Usern mehrmals erwähnt wurde, geht das Setzen einzelner Bits in Byte/Word nur mit Zwischenvariablen, die den Soll-Wert der Peripherie-Ausgänge speichern vor dem Transfer zum PAB/PAW, weil PAB/PAW nicht gelesen werden können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich meine das so wenn dieses periphere Bit sitzt muss mit einer Veroderung nur das aktuelle Bit gesetzt werden.
das zu Setzen ist.Die Bits gingen einzeln in den Baustein Setzen mit 1.Die anderen Bits bleiben 0.
Die anderen Bits bleiben so wie sie waren ... sie müssen ja vorher nicht alle 0 gewesen sein.
Das gleiche mit einem Und Baustein der rücksetzt.Alle Bits 1 bis auf das Bit das rückgesetzt wird.
Oder habe ich einen Denkfehler?
Die anderen Bits bleiben so wie sie waren ... sie müssen ja vorher nicht alle 1 gewesen sein.

Dein GedankenFehler besteht darin, dass Du den Zustand VOR dem Verunden bzw. dem Verodern einfach ignorierst.
Das kann durchaus zufällig mal richtig sein, muss es aber nicht. Das dürfte i.A. ein Fehler sein.

Damit die anderen Bits jedoch so bleiben können, wie sie vorher waren, müssen sie allerdings von irgendwo her gelesen werden.

kann man das überhaupt byteweise machen?Es gibt doch nur den Undwort Befehl.
In AWL gibt es UW und UD bzw. OW und OD, also die UND- bzw. ODER-Befehle nur für 16 Bit (= Wort) und für 32 Bit (=DoppelWort), nicht für Bytes bzw. 8 Bit.
Das ist aber normalerweise kein Problem. Man kann 1 Byte in das niederwertigste Byte des Akku1 laden, wobei die höherwertigen Bytes des Akku1 übrigens gelöscht werden. Man kann dann eine 8 oder 16 oder 32 Bit lange Maske in den Akku1 laden, wodurch vorab der Inhalt von Akku1 nach Akku2 kopiert (= gerettet") wird. Dann kann man die beiden Akkus verknüpfen mit einem "überqualifizierten" 16- oder 32-Bit UND bzw. ODER.
Zu guter letzt kopiert man 1 Byte (wieder das niederwertigste des Akku1) dahin, wo man es haben will.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
seit Beitrag #33 (vor mehr als 40 Beiträgen) ist der Fragesteller nicht mehr bei uns ... aber vielleicht klärt er uns ja noch etwas auf
Ich denke nicht, denn seine Frage war ja irgendwie anscheinend mit meinem Vorschlag beantwortet - wie auch immer ...
Ist aber interessant, was für eine Diskussion sich hier dann im Nachgang entwickelt hatte ... :unsure:
 
Zurück
Oben