Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Results 1 to 6 of 6

Thread: Adressraum CPU 922

  1. #1
    Join Date
    23.03.2006
    Location
    Thüringen
    Posts
    2,049
    Danke
    165
    Erhielt 281 Danke für 201 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich verzweifle langsam über diesem Mist - zunächst die selbst kommentierten Quellen:
    Netzwerk 1 von 1 Bib =
    :L KF 1 franzoesisch
    :L MB 49
    :><F
    :SPB =M001
    :A DB 55
    :SPA =M002
    M001 :L KF 2 englisch
    :><F
    :SPB =M003
    :A DB 56
    :SPA =M002
    M003 :L KF 3 deutsch
    :L MB 49
    :><F
    :SPB =M004
    :A DB 58
    :SPA =M002
    M004 :L KF 4 italienisch
    :><F :SPB =M005
    :A DB 59 spanisch
    :SPA =M002
    M005 :A DB 57
    M002 :B MW 220
    :L DL 0
    :L KH DF00
    :+F
    :LIR 1
    :B MW 220
    :L DR 0
    :+F
    :L KH DF32
    :ENT
    :LIR 1
    :L KH 0014
    :+F
    :TNW 16
    :BE
    Also, bitte korrigieren, wenn ich da was falsch sehe: Letzte Sprungmarke (M002) MW220 trägt eine Adresse, deren Inhalt aus DL0 nach Akku 1 transferiert wird (niederwertiges Byte). Hinzuaddiert wird DF00. Der LIR Befehl benutzt das wiederum als Adresse (steht in Akku 1) für einen Zugriff auf den Lokaldatenspeicher der CPU. Nach dem Handbuch sind das Adressen im DB Bereich. Nur welche? Die sollten ja entsprechend der angelegten DBs nicht ohne weiteres zu ermitteln sein, wenn ich einen bestimmten DB und dessen Inhalt brauche. Und wohin zum Geier schreibt dann TNW? Ich könnte diese Lumpen.

    Gruß
    Mario
    Last edited by mariob; 01.02.2009 at 15:15. Reason: Formatierung zerlegt
    Reply With Quote Reply With Quote Adressraum CPU 922  

  2. #2
    Join Date
    01.11.2007
    Posts
    1,333
    Danke
    99
    Erhielt 441 Danke für 398 Beiträge

    Default

    Ich reime mir das so zusammen:
    In den DBs 55-59 gibt es ein DW (die Nummer dieses DW steht im MW220) mit Inhalt : DL=DB-Nummer, DR=DW-Nummer, dies ist die Quelladresse der TNW-Operation, als Ziel dient m.E. der DB50 ab DW20.
    Die Adressen DF00 und DF32 liegen innerhalb der Bausteinadressliste (DB0) und geben, wenn meine Vermutung zutrifft, die Anfangsadresse von DB0 und DB50 an. Zu DF00 wird der Inhalt von DL[MW220] addiert, damit wird dann der gewünschte DB adressiert, das DW aus DR[MW220] kommt noch hinzu.
    Ziel ist der DB50 (Speicheradresse steht in DF32), dazu kommen noch KH0014. Die Quelladresse der TNW-Operation steht im Akku2 und die Zieladresse im Akku1.

    Grüße von HaDi

  3. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    mariob (02.02.2009)

  4. #3
    mariob is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    23.03.2006
    Location
    Thüringen
    Posts
    2,049
    Danke
    165
    Erhielt 281 Danke für 201 Beiträge

    Default

    Danke Hadi,
    ich lese dazu nochmal nach, meinst Du, das diese absoluten Werte tatsächlich die DB Nummern adressieren? Nach Handbuch sollte man das doch mit BS Nummern tun, die einem das Betriebssystem bietet. Leserlicher ist es sowieso. Ich bin davon ausgegangen, das je nach Länge und Anzahl der DBs der Adreßraum verschieden belegt sein kann. Mit anderen Worten man müßte nach Erstellung aller DBs erproben wo die Anfangsadressen liegen und dann fest in das Programm eintragen. Anfangsadresse + Versatz ergeben dann die interesssierende Adresse, wie es ja hier gemacht ist.

    Gruß
    Mario

  5. #4
    Join Date
    07.07.2004
    Posts
    3,381
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Idee

    Hallo,

    Quote Originally Posted by mariob
    Nach Handbuch sollte man das doch mit BS Nummern tun,

    Hadi hat schon recht mit seiner Behauptung.
    Leider hat der Ersteller des Bausteines sich nicht an die Programmieranleitung gehalten. Anstatt im BS34 die Anfangsadresse zu ermitteln und die DB-Nummer aufzuaddieren, sind hier leider absolute Adressen verwendet worden. Da je nach CPU-Typ der DB 0 aber an unterschiedlichen Speicheradresse liegen kann, ist der Programmcode leider dann zB. nicht auf einer 150U, 928A nicht verwendbar. Also ein gutes Beispiel, wie man es nicht machen sollte.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Reply With Quote Reply With Quote BS wäre besser gewesen ...  

  6. #5
    Join Date
    01.11.2007
    Posts
    1,333
    Danke
    99
    Erhielt 441 Danke für 398 Beiträge

    Default

    Quote Originally Posted by mariob View Post
    Mit anderen Worten man müßte nach Erstellung aller DBs erproben wo die Anfangsadressen liegen und dann fest in das Programm eintragen.
    Nein, das muss man nicht, denn die Anfangsadressen aller Bausteine stehen in der Bausteinadressliste, auch DB0 genannt. Das ist quasi dein Inhaltsverzeichnis des Speichers. Wenn ein Baustein geladen oder gelöscht oder geändert wird, ändert sich auch der Eintrag im DB0. Diese Adressliste belegt einen festen Speicherbereich, der aber dummerweise von CPU zu CPU unterschiedlich ist. Bei deiner CPU922 steht z.B. die Anfangsadresse des DB50 im Wort, das mit DF32 adressiert wird, steht in DF32 eine 0, so ist der Baustein nicht vorhanden. Dies kann man sich zu Nutze machen, wenn man z.B. einen Baustein im Eprom deaktivieren will, denn der DB0 steht immer im RAM.
    Wenn man der Empfehlung von Question_mark folgt und anstatt den absoluten Adressen L BS34 benutzt, liefert deine CPU DF00, eine 115U hat dann E400 und eine 95U hat dann 7E00 im Akku1 stehen und immer ist es die Anfangsadresse des DB0 und damit kommt man durch draufaddieren der DB-Nummer zur Speicherstelle, an der die Anfangsadresse des gewünschten DBs steht. Ein so progammierter Baustein könnte dann auch ohne Änderung auf einer anderen CPU funktionieren und verständlicher und besser nachvollziehbar ist es allemal.

    Bevor nun der erste Einspruch kommt: Ja, ich weiß, dass man bei dieser Berechnung zwischen Wort- und Byte-S5en unterscheiden muss, die Bausteinnummer also einfach oder doppelt addieren muss.

    Grüße von HaDi

  7. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    mariob (02.02.2009)

  8. #6
    mariob is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    23.03.2006
    Location
    Thüringen
    Posts
    2,049
    Danke
    165
    Erhielt 281 Danke für 201 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke an Euch alle,
    das wirft mich gewaltig nach vorn!

    Gruß
    Mario

Similar Threads

  1. TIA Adressraum
    By Outrider in forum Simatic
    Replies: 16
    Last Post: 14.12.2015, 22:19
  2. Step 7 CP343-1 Adressraum zu klein
    By Pimp.my.PC in forum Simatic
    Replies: 2
    Last Post: 05.11.2014, 21:02
  3. Replies: 9
    Last Post: 19.11.2012, 09:54
  4. Replies: 3
    Last Post: 09.02.2012, 14:17
  5. ASi- Link 20E Adressraum in S7/300
    By Anonymous in forum Simatic
    Replies: 2
    Last Post: 13.02.2006, 19:15

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •