Indirekte Adressierung Step 7

June 30, 2024, 6:37 pm

251, 1 KB · Aufrufe: 107 252 KB · Aufrufe: 90 #9 Nach Rücksprache mit Rommani hier noch einmal ein leicht geändertes Programmbeispiel: ARRAY_WERTE: ARRAY [0.. 9] OF REAL; DB_NUMMER: WORD; L P##ARRAY_WERTE; // Pointer L W [AR1, P#0. 0]; // DB-Nummer T #DB_NUMMER; AUF DB [#DB_NUMMER]; L D [AR1, P#2. 0]; // Bereichszeiger L #WERT; // Wert speichern L #WERT; // Wert erhöhen T #WERT; · Aufrufe: 33 7, 1 KB · Aufrufe: 40 4, 7 KB 33, 3 KB · Aufrufe: 25 #10 341, 4 KB · Aufrufe: 59 342, 4 KB #11 Bestens Dank für euch alle. Besonders Kai #12 S7 Indirekte Adressierung Vielen Dank an alle Besonders Kai:s12: #13 los, einmal geht noch. aller guten dinge sind drei! #14 EDIT: @Kai's FC_Werte (s. o. ) L [COLOR=#ff0000]W [AR1, P#0. 0][/COLOR]; // DB-Nummer [COLOR=#ff0000]--> Warum steht hier die DB-Nummer? [COLOR=#ff0000]In welchem Speicherbereich bin ich hier? SPS > Liste der Operationen > Register-indirekte Adressierung > Indirekte Adressierung. Wo ist sowas dokumentiert? [/COLOR][/COLOR] L [COLOR=#ff0000]D [AR1, P#2. 0][/COLOR]; // Bereichszeiger [COLOR=#ff0000]--> Warum steht hier der Bereichszeiger?

Indirekte Adressierung Step 7

mit freundlichen Grüßen Rene Steffie sagt: Hallöchen, soweit hab ich das auch verstanden, aber wieso gibt es nicht EW 1? Auf das Beispiel von Dorian bezogen. MfG Steffie Rene sagt: Hallo Steffie, es ist so das du dir mehr oder weniger aussuchen kannst wie du die 16 Bits eines Wortes betrachtest. Im EW 1 sind dann entsprechend das EB 1 und 2 bzw. E1. 0 – E2. 7. Beim Programmieren musst du dann darauf achten das sich keine Bereiche überschneiden. Angenommen du lädst die Zahl 32767 in das Wort 1 (1. 0 – 2. 7) und den Wert 0 in das Wort 0 (0. 0 – 1. SPS Adressierung. 7) dann…. überschneiden sich die Bereiche, auf denen du zugreifen möchtest beim Byte 1 Wort 1 = 1. 7 Wort 0 = 0. 7 Ich hoffe konnte deine Frage dazu beantworten:). Wenn nicht dann lass es mich wissen und ich erstell einfach ein eigenes Video dazu. mit freundlichen Grüßen Rene Luca Piepenbrock sagt: Hi Rene, 1) Zuerst wird 32767 in Wort 1 geschrieben wird und anschließend 0 in das Word 0. Würde in deinem Beispiel sich die Werte überschreiben? (Byte1 – mit nullen gefüllt) Oder wie würde das zutrage kommen?

Indirekte Adressierung Sp. Z O

Für einige Anwendungen ist das Verfahren der speicher-indirekten-Adressierung nicht flexibel genug. Daher gibt es in der CPU zwei spezielle Register (AR 1 und AR2, Adressregister 1 u. 2. ), mit deren Hilfe der Index erst während des Zugriffs berechnet wird. Vor der ersten Benutzung der Adressregister müssen diese mit einem Zeiger auf einen Operanden geladen werden. Wenn Sie auf den Operanden E 5. 6 zugreifen wollen, programmieren Sie: LAR1 P#5. 6 // Lade Pointer auf "irgendwas" 5. 6 in AR1 Jetzt steht die Adresse 5. 6 im Adressregister 1. Den Eingang fragen Sie nun mit folgender Operation ab: U E[AR1, P#0. 0] Wollen Sie aber die Adresse E 5. 7 abfragen, so programmieren Sie: U E[AR1, P#0. 1] Der Pointer nach dem Komma wird zu dem Wert im Adressregister 1 addiert und das Resultat als Byte- und Bit-Nummer des Eingangs interpretiert. Dabei wird berücksichtigt, dass Bytes nur 8 Bits haben, Bit 5. 9 wird daher zu Bit 6. 0. Wenn Sie jetzt U E[AR1, P#0. Indirekte adressierung s7. 2] programmieren, wird der Eingang 6. 0 abgefragt.

Es wäre echt Klasse, wenn ihr mir aus der Patsche helfen würdet. Gruß Kleiny #14 in deinem Code sehe ich so erstmal keinen Fehler. Deine Fehlermeldung besagt aber (unterschwellig), dass du in deinem Code Adressen verwendest, die der CPU nicht zur Verfügung stehen - hier u. U. die MD's. Welche CPU hast du denn? Gruß Larry #15 Es ist eine 315-2 DP. Allerdings ist der code auch nicht der originale... Indirekte adressierung sp. z o. es ist lediglich ein zitierter. ich stelle mal meinen veränderten mit hinein. UN M 1. 4 L 2 AUF DB 1 #16 Muss ich evt. erst den Datenbaustein komplet durch Adressieren damit es klappt? gruß Kleiny #17 Hat sich erledigt. Lösung: zu hoher Merkerbereich hab jetzt MD 190 statt MD490 und es klappt. Danke nochmal. Gruß Kleiny

[email protected]