Anfängerfrage Merkerwort

Claudi

Level-1
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe mich hier angemeldet, weil ich am Di eine Klausur über SPS schreibe. Ich habe aber sonst damit nichts am Hut & brauch es nicht wieder(gehört aber leider zur Studienordnung).
Zur Prüfungsvorbereitung haben wir einige Fragen bekommen: Ich hoffe ihr könnt mir erklären was passiert:

1. Die Eingänge 1.7 bis 0.0 sind mit 0 belegt außer E0.3 (mit 1 ): dazu besteht die AWL:
LEW 0
SLW 3
LAR1
LMW 100
T AW(AR1,P#0.0)

Frage: was steht in MW 100?

Also das die Eingänge um 3 Stellen verschoben werden ist klar, sodass die 1 dann beim Eingang0.6 steht. Dann wird das Arbeitsregister geladen in Akku1. Ich vermute das kommt die Adresse 8.0 dadurch raus. Jetzt weiß ich nicht was es mit dem MW 100 aufsich hat? Es ist nicht meine letzte Frage, aber ich hoffe ihr könnt sie einem Leihen logisch erklären.

Danke, Claudia
 
Hallo Claudia,

- LAR1 bedeutet: Lade Adressregister 1 mit Inhalt von Akku 1
- Im Eingangswort 0 steht der dezimale Wert 2048
- Was im MW100 steht ist in Deinem Beispiel nicht ersehbar, das wird dort nicht beschrieben
- Das Ergebnis ist aber folgendes: Das was im MW100 steht wird auf das Ausgangswort 2048 geschrieben.

Wenn aber die verwendete CPU diese hohe Adresse 2048 nicht kann geht die CPU auf Stopp.

Gruss

Andi F
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Andi,

Danke für deine schnelle Antwort. Wie ist das mit den Pointern? Als im Adressregister 1 steht ja das um 3 Stellen nach links verschobene EW. somit ergibt sich die Adresse 8.0. Das steht dann im Akku 1. So jetzt kommt das unbekannte MW 100. Das steht dann in Akku1 und AR1 rutscht in Akku2? Was genau bringt das laden von dem AR1?

Also die Adresse vom AW wäre doch jetzt das aus AR1 (8.0) + P#0.0 = 8.0...Ich weiß halt auch nicht warum in der Aufgabenstellung dieses LMW 100 geucht ist wenn, es gar nicht bekannt ist?

sorry für die bestimmt sehr leihenhaften Fragen, aber ich hab da keine Vorstellung:(
 
Wie ist das mit den Pointern? Als im Adressregister 1 steht ja das um 3 Stellen nach links verschobene EW. somit ergibt sich die Adresse 8.0.

NEIN ! Wie kommst du da drauf ?? Das high - byte ist EB 0 !!

somit ergibt sich die Adresse 8.0. Das steht dann im Akku 1.
So jetzt kommt das unbekannte MW 100. Das steht dann in Akku1 und AR1 rutscht in Akku2? Was genau bringt das laden von dem AR1?

Das AR1 kann nicht in Akku 2 rutschen! Die AR und die AKKUs sind 2 unterschiedliche Dinge !!
Zwar steht im Akku 2 nun derselbe Wert wie im AR1, aber im AR1 steht immer noch der Wert, der mit LAR1 geladen wurde !

Akkus laden und Adressregister laden sind 2 unterschiedliche Sachen !!


Also die Adresse vom AW wäre doch jetzt das aus AR1 (8.0) + P#0.0 = 8.0...Ich weiß halt auch nicht warum in der Aufgabenstellung dieses LMW 100 geucht ist wenn, es gar nicht bekannt ist?

Die Adresse kommt aus dem AR1, das mit dem wert von EW0 geladen wurde, das ist aber nicht 8 !

In dieses AW wird nun der Wert geschrieben, der im Akku 1 steht, und da steht der (unbekannte) Wert aus MW 100.

Sorry für die bestimmt sehr leihenhaften Fragen, aber ich hab da keine Vorstellung:(

Deine Fragen sind nicht Laienhaft.
Man merkt, das du sich mit der Materie bereits auseinandergesetzt hast.

Seltsam nur, das du dich hier als Mädchen ausgibst, obwohl du ein Junge bist ....
 
Zuletzt bearbeitet:
Hallo,
...
1. Die Eingänge 1.7 bis 0.0 sind mit 0 belegt außer E0.3 (mit 1 ): dazu besteht die AWL:
LEW 0
...

Hallo Claudia,

ich denke wir sollten das Schritt für Schritt durchgehen.

1. Anweisung: L EW0 --> Lade Eingangwort 0, das besteht aus Eingangsbyte 0 und 1. Das Byte 0 ist das höherwerte (linke), das Byte 1 das niederwertige (rechte). Somit ergibt sich:

|0.7|0.6|0.5|0.4|0.3|0.2|0.1|0.0|1.7|1.6|1.5|1.4|1.3|1.2|1.1|1.0|


Wenn jetzt nur der Eingang 0.3 "1" ist ergibt das die dezimal Zahl 2048

Verstanden ?


Gruss
Andi F
 
Ein nochmal, um sicherzustellen das du das wirklich verstanden hast.

Wenn du das AW 2048 mit einem beliebigen Wert laden willst, indirekt über den Pointer, dann mußt du den Wert 2048 nehmen und mit SLW3 in das Pointerformat überführen, die rechten 3 Bit sind die Bitadressen.

Nur Bit 0.3 gesetzt bedeutet dezimal 2048, wie schon geschrieben wurde.
SLW 3 bringt das ins Pointerformat, wobei man besser SLD 3 nimmt, der Pointer ist schließlich auch im DWord-Format. SLW3 funktioniert zwar, aber bei Datenbausteinen und weiten Sprüngen geht das schief, durfte ich selbst schon erleben. Aus Fehlern wird man klug :rolleyes:.
Warum wird gefragt, was im MW100 steht, das hat doch mit dem Pointer hier gar nichts zu tun? Sowas nenne ich schon gemeine Frage, was für Heinis habt ihr da nur?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal vielen Dank für eure Antworten! Ihr bringt mir das wirklich schon viel näher! mal ne kurze Zwischenfrage! Warum soll ich kein Mädel sein? Also ich bin auf jeden Fall von der Sorte!

@Andi: ja so Schritt für Schritt ist für mich wahrscheinlich das beste! Das war jetzt schon gut von dir! Die Prüfung soll wohl nicht so schwer werden, aber wir sollen noch ein Programm am Ende schreiben können. Die Prüfung ist am Di!

@Ralle: ja das sind Heinis!Das fängt aber schon damit an, das ich mich als fast fertiger Biotechnologe mit leider mehr techn/informat Sachen beschäftigen muss. Und der, der uns das beibringen sollte, hat da eigetlich total versagt. Aber wie geschrieben, mit der Schritt für Schrittmethode helft ihr mir sehr!

Ok! Was ist jetzt mit der Pointeradresse? bzw der nächste Schritt?

Danke nochmal für eure Hilfe!:-D
 
Was meinst du genau?

Das ist halt das technische an Biotechnologie! Noch schlimmer war Signal & Messwertverarbeitung. Da waren nur noch Amplituden & Frequenzen und das hatte nichts mit Bio zu tun! Aber das ist meine letzte Prüfung für dieses Studium( außer der Diplomverteidigung später)! Und die will ich jetzt noch gut meistern:-D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Claudia,

bitte gib einen Zwischenbescheid. Ist es jetzt der E0.3 der nur "1" ist, oder ist es jetzt der E1.3?

E0.3 auf 1 --> Wert 2048 und somit Zeiger auf AW 2048

E1.3 auf 1 --> Wert 8 und somit Zeiger auf AW 8

Gruss

Andi F
 
ja also aus der Aufgabenstellung raus ist E0.3 = 1 ....

ich muss jetzt mal dazuschreiben, das die Aufgabe opisch anders ist, als hier. Also ich hab eine Auflostung der Eingänge absteigend und beginnend bei E1.7 :

E1.7|E1.6...|E0.0. Also nicht nach höher / und lower byte sortiert?! und wegen der Pointeradresse hab ich als Bsp.: P#0.2 --> 0.010 und P#1.3 --> 1.011 und da bei mir nach der SLW 3 die Reihenfolgeso ist: 1000.000 Deswegen komm ich auf die Adresse 8.0...
 
Zuletzt bearbeitet:

2.Anweisung: SLW 3 --> Schiebe den Inhalt von Akku 1 (niederwerte Wort) um drei bits nach links. Also im Akku geschieht hier was und nicht bei den Eingängen.

Anmerkung: Ein Akku ist 32 Bit bzw 4 Byte bzw 2 Wort bzw 1 Doppelwort lang.

Verstanden ? Wenn ja, dann geht weiter.

Gruss

Andi F
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja das ist mir klar! Wie ist das mit dem Pointerformat? ich hab da noch eine ähnliche Aufgabe, wo aber nur um eine bzw 2 Stellen nach links verschoben wird. ist das dann was anderes oder ist das trotzdem Pointerformat?
 
ja also aus der Aufgabenstellung raus ist E0.3 = 1 ....

ich muss jetzt mal dazuschreiben, das die Aufgabe opisch anders ist, als hier. Also ich hab eine Auflostung der Eingänge absteigend und beginnend bei E1.7 :

E1.7|E1.6...|E0.0. Also nicht nach höher / und lower byte sortiert?! und wegen der Pointeradresse hab ich als Bsp.: P#0.2 --> 0.010 und P#1.3 --> 1.011 und da bei mir nach der SLW 3 die Reihenfolgeso ist: 1000.000 Deswegen komm ich auf die Adresse 8.0...

Hallo Claudia,

das ist doch egal wie die Auflistung in Deiner Aufgabenstellung ist. Wenn definitiv der E0.3 "1" ist, dann ergibt das nach der Anweisung "L EW0" im Akku 1 den dezimalen Wert 2048.
Eine Frage am Rande: Für welchen Typ von SPS ist diese Aufgabe eigentlich gestellt worden?

Gruss
Andi F
 
Ja das ist mir klar! Wie ist das mit dem Pointerformat? ich hab da noch eine ähnliche Aufgabe, wo aber nur um eine bzw 2 Stellen nach links verschoben wird. ist das dann was anderes oder ist das trotzdem Pointerformat?

Langsam, eins nach dem anderen. so schnell kann ich nicht tippen.

Das mit dem Schieben muss nicht immer mit dem Pointer zusammenhängen.
Mit Schieben kann man auch einfache Berechnungen anstellen, zb im Akku Werte multiplizieren.

Beispiel: Schiebe um 1 Bit nach links --> Wert im Akku wird mit 2 multipliziert
Schiebe um 2 Bit nach links --> Wert im Akku wird mit 4 multipliziert

Gruss
Andi F
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich dacht nur, wenn E0.3 so weit hinten steht, dann wäre für mich das dann statt 2^11 dann nur 2^3....ich fange ja beim letzten an mit 2^0 bis 2^x und bei meiner vorgebenen Liste steht ja E0.3 an einer anderen Stelle... bei deiner sortierten liste steht E0.3 ja viel weiter hinten... So intensiv hatten wir das gar nicht...

welcher Typ? Oje die Aufgaben hab ich auf nem anderen Rechner, wenns überhaupt dazu stand. Also was wir immer hatten war Step 7 und Simatic300/400 . ist das das, was du meinst?

Edit: Oh da beschreib ich die anderen Bsp dann nochmal, wenn das geklärt ist... sonst komm ich durcheinander:)
 
Zuletzt bearbeitet:
Ich dacht nur, wenn E0.3 so weit hinten steht, dann wäre für mich das dann statt 2^11 dann nur 2^3....ich fange ja beim letzten an mit 2^0 bis 2^x und bei meiner vorgebenen Liste steht ja E0.3 an einer anderen Stelle... bei deiner sortierten liste steht E0.3 ja viel weiter hinten... So intensiv hatten wir das gar nicht...

welcher Typ? Oje die Aufgaben hab ich auf nem anderen Rechner, wenns überhaupt dazu stand. Also was wir immer hatten war Step 7 und Simatic300/400 . ist das das, was du meinst?

Hallo Claudia,

Step 7 und Simatic 300/400 ist ein wichtiger Hinweis in dieser Sache. Ich denke wir sollten erst mal bei elementaren Datentypen anfangen. Ist Dir der Begriff "Dualzahl" klar und kannst damit etwas anfangen.

Gruss
Andi F
 
Hallo Claudia,

hier nochmal anders dargestellt:


------------- EW0 ------------
------ EB0 ----|---- EB1 ------
7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0
-------------------------------
H---<---<---<---<---<---<---L

L= niedrigste Bit einer (Wort) Dualzahl
H= höchste Bit einer (Wort) Dualzahl (normalerweise ist dass das Vorzeichenbit bei einer Integerzahl)

Dezimalwerte:

H--------------------<---------------------<-------------------<--------------------<------------------L

32768 oder Vorzeichen | 16384 | 8192 | 4096 | 2048 | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |

Jetzt klar ?

Gruss
Andi F
 
Zuletzt bearbeitet:
Zurück
Oben