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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Aufbau System DB 0 bei S7

  1. #11
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Standard


    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
    Zitieren Zitieren SDB0  

  2. #12
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Standard

    @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 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.05.2004
    Beiträge
    111
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Standard

    @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
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.828
    Danke
    1.256
    Erhielt 1.111 Danke für 532 Beiträge

    Standard

    @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

    Standard

    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.
    Zitieren Zitieren DB0  

  6. #16
    Andi F ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.05.2004
    Beiträge
    111
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Standard

    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
    Zitieren Zitieren Beispiel DB0  

  7. #17
    Registriert seit
    23.06.2003
    Beiträge
    79
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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
    Zitieren Zitieren Re: Beispiel DB0  

  8. #18
    Andi F ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.05.2004
    Beiträge
    111
    Danke
    4
    Erhielt 5 Danke für 5 Beiträge

    Standard

    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
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 284 Danke für 86 Beiträge

    Standard

    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
    Registriert seit
    23.06.2003
    Beiträge
    79
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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

Ähnliche Themen

  1. Aufbau SIMATIC S7-300 CPU 315-2DP
    Von Flutlicht im Forum Simatic
    Antworten: 39
    Letzter Beitrag: 28.09.2010, 06:09
  2. Aufbau MPI-Bus
    Von Syntaxfehler im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 25.10.2008, 11:18
  3. Aufbau XML Datei bei OPC-XML DA
    Von steinche im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 13.06.2008, 23:02
  4. MPI Aufbau
    Von BastiMG im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 06.05.2007, 22:47
  5. Aufbau der Datentelegramme
    Von _dm_ im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 11.11.2005, 11:32

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •