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

Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 23

Thread: Aufbau System DB 0 bei S7

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

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Andy,
    beleidigen wollte ich Dich bestimmt nicht. Ich wollte eigentlich nur ausdrücken, das Du vielleicht den Sytem DB0 der S5 noch irgendwo in Erinnerung hast und den irgendwie auf die S7 anwenden willst. Ich habe das, wie das manchmal meine Art ist, etwas flapsig ausgedrückt und Du fühlst Dich auf den Schlips getreten. War aber nicht böse gemeint.

    Gruss
    Question_mark

    PS : Was glaubst Du, wen hat der Admin hier wohl gemeint :
    http://www.sps-forum.de/phpBB2/viewt...31b512a2fe3b8d

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

    Default

    @Andy,
    wo ist denn #Zeiger deklariert ?? Welcher Datentyp ??
    Was steht in der Funktion "Online Status" in #Zeiger dann als Wert ??
    Vielleicht die Nummer des Datenbausteins ??
    Leutz, DAU's gibts, aber dann das M... so weit aufreissen.
    Gruss
    Question_mark

  3. #13
    Andi F is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    12.05.2004
    Posts
    113
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Default

    @Question_mark

    Was ist denn jetzt damit gemeint:

    Leutz, DAU's gibts, aber dann das M... so weit aufreissen.


    @Alle Anderen

    Nochmals zur Erklärung um was es mir geht:

    Ich suche Informationen zum "Internen System DB0" bei der S7-300. Gebt einfach mal in der S7 Hilfe das Suchwort DB0 ein und Ihr findet dort einige dürftige Hinweise dazu.

    Wie bereits angekündigt folgt dann Montag das Bsp wo dieser DB0 verwendet wird.

    Gruss Andi F

  4. #14
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    5,014
    Danke
    1,348
    Erhielt 1,172 Danke für 553 Beiträge

    Default

    @qm
    mach ma langsam, ich finde der andy hat schon recht. ist ne interessante sache. und ich hab mal danach gesucht und auch nichts gefunden.

    @andy
    könnte es vieleicht sein das dieser db 0 bei s7-300 für die temporären variablen genutzt wird?

  5. #15
    Anonymous Gast

    Default

    Hallo,

    ich denke der DB0 hat in S7 den gleichen Inhalt wie in S5. Dort stehen die Speicheradressen der im Arbeitsspeicher befindlichen Bausteine.
    Der DB0 wird vom System verwendet um bei einem Verweis auf einen Baustein (UC, CC usw.) auf die Speicheradresse zu springen.

    Der DB0 kann meines Wissens vom SPS-Programmierer nicht verwendet werden. Eine Operation wie z.B. AUF DB0 indirekt adressiert (direkt würde diese vom Editor verweigert), wird wie eine NULL-Operation behandelt.

    Gruß Luke.

  6. #16
    Andi F is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    12.05.2004
    Posts
    113
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Default

    Hallo Allerseits,

    wie versprochen das Beispiel:


    FUNCTION FC 1 : VOID
    TITLE =DBO Bsp
    VERSION : 0.1

    VAR_INPUT
    IN : DATE_AND_TIME ; // DT#yy-mm-dd-hh:mm:ss.sss
    END_VAR
    VAR_TEMP
    w_db_nr : WORD ; //db der DT information
    END_VAR
    BEGIN
    NETWORK
    TITLE =DB0 Bsp

    L P##IN;
    LAR1 ;
    L W [AR1,P#0.0];
    T #w_db_nr;
    AUF DB [#w_db_nr];
    L D [AR1,P#2.0];
    LAR1 ;

    END_FUNCTION

    ORGANIZATION_BLOCK OB 1
    TITLE =HAUPTPROGRAMM
    VERSION : 0.1

    VAR_TEMP
    OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
    OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
    OB1_PRIORITY : BYTE ; //Priority of OB Execution
    OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
    OB1_RESERVED_1 : BYTE ; //Reserved for system
    OB1_RESERVED_2 : BYTE ; //Reserved for system
    OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
    OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
    OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
    OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
    END_VAR
    BEGIN
    NETWORK
    TITLE =DB0 Bsp

    CALL FC 1 (
    IN := #OB1_DATE_TIME);

    END_ORGANIZATION_BLOCK



    Im Status wird dann der DB0 als geöffneter DB angzeigt.

    Gruss Andi F
    Reply With Quote Reply With Quote Beispiel DB0  

  7. #17
    Join Date
    23.06.2003
    Posts
    81
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hi zusammen,

    korrigiert mich, wenn ich mich irre, aber das Beispiel sieht mir nach einem gewaltigen Programmierfehler aus

    ich hab mal Kommentare eingefügt

    -----
    Code:
    VAR_INPUT
      IN : DATE_AND_TIME ;       // DT#yy-mm-dd-hh:mm:ss.sss
    END_VAR
    
    VAR_TEMP
      w_db_nr : WORD ;         //db der DT information [das sollte es sein !!]
    END_VAR
    BEGIN
    NETWORK
    TITLE =DB0 Bsp
    
          L     P##IN;        // Zeiger auf Variable vom Typ DT
          LAR1  ; 
          L     W [AR1,P#0.0]; // lese Wort 0 der Variable, hier YYDD in BCD
          T     #w_db_nr;       // für heutiges Datum steht da jetzt 16#0407      
          AUF   DB [#w_db_nr]; // Versuch den DB 1031 (dez. für 16#0407) zu öffnen,
                               // der vermutlich nicht vorhanden ist
    Normalerweise müsste die Kiste in Stop gehen bzw ständig durch den OB85 oder OB121 rennen !?

    Nachdem wohl tatsächlich kein DB geöffnet ist, wird im Status im DB1-Register halt 0 angezeigt.


    Gruß Jörg
    Reply With Quote Reply With Quote Re: Beispiel DB0  

  8. #18
    Andi F is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    12.05.2004
    Posts
    113
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Default

    Hallo Jogi,

    danke für Antwort.

    Das Beispiel ist ein Fragment von einem Baustein den wir bei Siemens gekauft haben. Dieser ist zwar ungeschützt, aber mehr will ich davon nicht veröffentlichen. Ich kann nur sagen der Baustein läuft ohne CPU-Stopp.

    Gruss Andi F

  9. #19
    Join Date
    07.05.2004
    Location
    Campbelltown
    Posts
    2,500
    Danke
    131
    Erhielt 293 Danke für 86 Beiträge

    Default

    Code:
    L P##IN; Lädt die Anfangsadresse von dem DUT-Feld
    LAR1 ;               und speichert ihn im AR1
    L W [AR1,P#0.0]; welches er mit dem Offset 0 also die Jahreszahl lädt
    T #w_db_nr;        und in der Temp-Var speichert
    AUF DB [#w_db_nr]; Die DB Nummer entspricht also der Jahreszahl
    L D [AR1,P#2.0]; 
    LAR1 ;
    Gruß pt

  10. #20
    Join Date
    23.06.2003
    Posts
    81
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi noch mal,

    @pt

    genau! dachte ich auch bis eben
    aber das ganze ist viel trickreicher!

    @all

    hab die kurze Sequenz eben mal im PLCSIM laufen lassen und analysiert.
    Stimmt, in Stop geht sie nicht, es wird ja auch nichts in den ominösen DB0 geschrieben.

    im Detail:

    Die IN-Variable DT wird nicht direkt übergeben, sondern als Pointer auf die Variable, also mit 3 Worten, die in den Lokaldaten von OB1 nach den letzten, in OB1 tatsächlich verwendeten L-Daten, abgelegt werden.(siehe Online-Hilfe PARAMETERTYPEN)

    Format:
    1.Wort: DB-Nr, falls die DT-Var im DB liegt, oder 0
    2.&3.Wort: tatsächlicher Pointer mit Speicherbereichskennung

    L P##IN;
    LAR1;

    --> AR1 zeigt jetzt NICHT auf OB1_DATE_AND_TIME, sondern auf das 1. Wort des obigen Pointers.

    L W [AR1,P#0.0]
    --> läd das Wort der Lokaldaten OB1, welches ggf. die DB-Nummer enthält

    T #w_db_nr
    AUF DB [#w_db_nr]
    --> öffnet, falls nötig, den angegebenen DB

    L D [AR1,P#2.0]
    -->läd den tatsächlichen Pointer aus den Lokaldaten von OB1, also mit Bereichskennung und adresse

    LAR1
    --> jetzt steht in AR1 die Adresse der Variablen, in diesem Beispiel V 12.0
    (Vorgänger-Lokaldaten ab byte 12)

    ... ab hier kann die DT-Variable über AR1 tatsächlich gelesen werden


    Die Datenbaustein-Sequenz wird in diesem Beispiel gar nicht benötigt, sie kommt nur zum tragen, wenn an dem Parameter IN eine Datuhr-Variable aus einem Datenbaustein angegeben wird.

    gibt man z.B "DB1".datuhr an, steht in w_db_nr eine 1, der DB1 wird geöffnet und die daten richtig gelesen

    So ist es egal, in welchem Speicherbereich die Varaible tatsächlich liegt

    wirklich tricky

    Gruß Jörg

Similar Threads

  1. Suche Hilfe bei Simodrive 611 Testand aufbau
    By hido in forum Suche - Biete
    Replies: 5
    Last Post: 01.10.2015, 10:03
  2. Aufbau des Addinfo Feldes in Step7 Projektdatei bei subblk=5
    By Jochen Kühner in forum Hochsprachen - OPC
    Replies: 0
    Last Post: 10.12.2010, 12:25
  3. Welcher PL bei NOT HALT System?
    By Mephisto in forum Maschinensicherheit - Normen und Richtlinien
    Replies: 2
    Last Post: 29.04.2010, 08:02
  4. Replies: 9
    Last Post: 17.03.2009, 18:15
  5. Referenzpunkt bei Absolutem Wegmess-system
    By Anonymous in forum Stammtisch
    Replies: 3
    Last Post: 04.02.2005, 12:05

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
  •