Step 7 Ansteuerung bestimmter Aktorkombinationen

hasun

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe folgendes Problem und würde mich über eure Hilfe freuen:
Die Programmierung erfolgt in winsps.
Bei einer bestimmten Aktorkombination wird ein Fach eines Regals angefahren.
Dazu weiß ich folgendes:
Die binäre Zusammenstellung aus den Aktoren ergibt die Fachnummer.
Beispiel:


Fach 20 wird angefahren, wenn Aktor 2 (2^2) und 4 (4^2) an sind (2^2+4^2=20). Und die restlichen Aktoren sind aus (Aktor 0,1,3,5).

Gibt es eine Möglichkeit, dass ich die obigen Bedingungen in einem Wort speichere, so dass die Aktorbits entsprechend der angelegten Fachnummer eine 1 oder 0 ausgeben?
Ich hoffe die Fragestellung ist so verständlich.

Vielen Dank!
 
Dass kann man aus einem Beispiel heraus schwer sagen ob es einen mathematischen Zusammenhang gibt.

Deine Kombination (ich denke du meinst eher 2^2 und 2^4 - entspricht der Bitwertigkeit) ergibt ja schon 20dez.
Ist das Zufall oder gilt das auch für die anderen Kombinationen.
 
Dann müsste es doch kein Problem sein die Eingänge als ganzes Byte einzulesen oder.
Ich weiß zwar nicht wie das bei WinSPS aussehen müsste, bei Step7 könntest du z.b. einfach:
Code:
L EB0                    //Annahme die Sensoren sind auf Eingangsbyte 0
L 2#111111
UW                      //Hier maskiert man noch die Eingänge 0.6 und 0.7 aus falls die auch belegt sind.
T INT_AktuellesFach

Gibt es eine Möglichkeit, dass ich die obigen Bedingungen in einem Wort speichere, so dass die Aktorbits entsprechend der angelegten Fachnummer eine 1 oder 0 ausgeben?
Allerdings bin ich nicht sicher was du genau möchtest.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Fach 20 wird angefahren, wenn Aktor 2 (2^2) und 4 (4^2) an sind (2^2+4^2=20). Und die restlichen Aktoren sind aus (Aktor 0,1,3,5).
Gibt es eine Möglichkeit, dass ich die obigen Bedingungen in einem Wort speichere, so dass die Aktorbits entsprechend der angelegten Fachnummer eine 1 oder 0 ausgeben?
Ach verdammt! Jetzt habe ich doch Aktoren und Sensoren verwechselt.
Ich nehme an die Aktoren sind auf SPS-Ausgängen in den oben beschriebenen Wertigkeiten.
Aktor 0 ... Ausgang x.0
Aktor 5 ... Ausgang x.5

Dann kann man es genau umgekehrt machen:
Code:
L AB0   //Aktueller Zustand des Ausgangsbyte - falls an A0.6/A0.7 etwas dran ist wollen wir diesen Zustand erhalten
L 2#11000000
UW
L Fachnummer    //Integer 0...63
OW
T AB0
 
Vielen Dank ! Die Ausgangsbytes lassen sich nun so darstellen. Werde mich erst mal damit auseinandersetzen und versuchen, das SPS-Programm mit deiner Vorlage zu schreiben.
 
Ich bin mit meinen SPS-Kenntnissen nun wieder zu einem Problem gekommen:
Logischerweise kann ich die Ausgangsbytes ja nicht über Bitverknüpfungen aktivieren und deaktivieren. Ich würde jetzt gerne die ganzen AB0-AB51 in logischen Verknüpfungen verwenden (z.B. in einem RS-Flipflop). Gibts dafür ne Möglichkeit? Danke...

EDIT: Ich denke, ich habs. Über die Funktion Move kann man es wohl realisieren.
 
Zuletzt bearbeitet:
Es haut auch hin, war wohl mein Fehler :)
Das Programm funktioniert nun nach ca. 20 stündigem Aufwand so, wie ich es haben wollte. Einen Riesendank für deine Hilfe :)
 
Zurück
Oben