Florin
Level-1
- Beiträge
- 22
- Reaktionspunkte
- 1
-> Hier kostenlos registrieren
Hallo Zusammen
Ich habe ein Förderband von 10 Meter Länge mit einem Sensor am Eingang. Auf diesem Förderband werden Dinge transportiert,
und ich muss zu jedem Zeitpunkt wissen, wo auf dem Band etwas ist.
Ich dachte, ich teile dem Band 100 Bits aus einem Array zu, also pro 10cm 1 Bit.
Wird der Sensor aktiviert, setze ich das erste Bit.
Bei einer Bandgeschwindigkeit von 10cm/s schiebe ich pro Sekunde das Schieberegister einmal hoch,
und so sehe ich dann zB nach 37 Sekunden, dass das Bit Nr. 37 "True" ist, sich also bei 3.70m etwas befindet.
Leider weiss ich nicht, wie ich das mit der indirekten Adressierung realisieren kann.
Ich arbeite mit AWL, S7.
Ich muss das zweithöchste Bit des Arrays in einen Pointer stecken, dieses prüfen, dann je nach Status das nächste Bit setzen/rücksetzen.
Danach muss ich den Bit-Pointer um eins verringern und es geht von vorne los. Bin ich bei Bit 1 angekommen, resette ich dieses und verlasse den Loop.
Pointererstellung stelle ich mir so vor:
l p#5080.2 // Bit nr99
lar 1
Das Prüfen so:
U DBX [AR1,P#0.0]
Mir ist jetzt allerdings unklar, wie ich
- den Pointer um 1 reduziere
- den Offset verändere, dass ich das nächsthöhere Bit setzen kann, ohne den Pointer zu ändern.
Ich hoffe, jemand kann mir helfen und vielen Dank
MfG
Florin
-------
Nachtrag:
Wie ich den Offset verändere, ist mir eigentlich klar, zb: U DBX [AR1,P#0.1]
Ich habe ein Förderband von 10 Meter Länge mit einem Sensor am Eingang. Auf diesem Förderband werden Dinge transportiert,
und ich muss zu jedem Zeitpunkt wissen, wo auf dem Band etwas ist.
Ich dachte, ich teile dem Band 100 Bits aus einem Array zu, also pro 10cm 1 Bit.
Wird der Sensor aktiviert, setze ich das erste Bit.
Bei einer Bandgeschwindigkeit von 10cm/s schiebe ich pro Sekunde das Schieberegister einmal hoch,
und so sehe ich dann zB nach 37 Sekunden, dass das Bit Nr. 37 "True" ist, sich also bei 3.70m etwas befindet.
Leider weiss ich nicht, wie ich das mit der indirekten Adressierung realisieren kann.
Ich arbeite mit AWL, S7.
Ich muss das zweithöchste Bit des Arrays in einen Pointer stecken, dieses prüfen, dann je nach Status das nächste Bit setzen/rücksetzen.
Danach muss ich den Bit-Pointer um eins verringern und es geht von vorne los. Bin ich bei Bit 1 angekommen, resette ich dieses und verlasse den Loop.
Pointererstellung stelle ich mir so vor:
l p#5080.2 // Bit nr99
lar 1
Das Prüfen so:
U DBX [AR1,P#0.0]
Mir ist jetzt allerdings unklar, wie ich
- den Pointer um 1 reduziere
- den Offset verändere, dass ich das nächsthöhere Bit setzen kann, ohne den Pointer zu ändern.
Ich hoffe, jemand kann mir helfen und vielen Dank
MfG
Florin
-------
Nachtrag:
Wie ich den Offset verändere, ist mir eigentlich klar, zb: U DBX [AR1,P#0.1]
Zuletzt bearbeitet: