Aufbau System DB 0 bei S7

Andi F

Well-known member
Beiträge
113
Punkte Reaktionen
4
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Zusammen,

hat von Euch jemand Informationen über den Aufbau des System DB 0, oder weis jemand wo man was dazu bekommt ?



Danke im voraus

Gruss Andi F :D
 

Question_mark

Well-known member
Beiträge
3.381
Punkte Reaktionen
578
System DB0 bei S7

Hallo,

SDB 0 enthält die Hardwarekonfiguration, aber da stehen keine Informationen drin, die man nicht auch über STEP7 "Hardware konfigurieren" erfahren kann.

Gruss
Question_mark
 

Question_mark

Well-known member
Beiträge
3.381
Punkte Reaktionen
578
SDB 0

@pt,

welche CPU er meint, kann man nicht mal erraten. Da der überwiegende Teil der Fragen die 300/400-er CPU's betreffen, habe ich das mal so angenommen. :shock:
Wenigstens steht in der Überschrift schon mal was von S7, den Rest können wir uns doch ausdenken, oder ? :ROFLMAO:
Jedenfalls hat sich mein Fernlehrgang zum Hellseher endlich ausgezahlt. :D

Gruss
Question_mark
 
OP
A

Andi F

Well-known member
Beiträge
113
Punkte Reaktionen
4
Hallo,

erstmal danke für die Antworten. Ich hab mich leider nicht ganz klar ausgedrückt. Ich meinte den DB0 bei der S7-300, nicht den SDB0 der Hardwarekonfiguration. Diesen DB0 muß es offensichtlich geben, da dieser sehr oft in den IEC-Funktionen indirekt (AUF #Zeiger) aufgerufen wird. Ich weiß das sich der DB0 nicht mit dem Editor erstellen und schon gar nicht absolut (AUF DB0) aufrufen läßt.


Gruss Andi F :D
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
@qm
ich glaube, Deine Kugel hat noch V1.1. Bei der V1.2 währe es nicht passiert :p

Aber jetzt im Ernst, so ein DB0 ist mir noch nicht unter die Taste gekommen.

g. pt
 

Question_mark

Well-known member
Beiträge
3.381
Punkte Reaktionen
578
Zuviel Werbung?
->Hier kostenlos registrieren
SDB 0 oder DB 0 ???

@pt,
vielleicht handelt es sich hier um eine neuronale Fehlschaltung in Richtung S5 oder kann uns hier jemand eines besseren belehren ??
Gruss
Question_mark
 
OP
A

Andi F

Well-known member
Beiträge
113
Punkte Reaktionen
4
Hallo Question_mark,

nichts für ungut aber Deine Beiträge nehmen eine beleidigende Tendenz an :!:

Zitat: ... neuronale Fehlschaltung ...

Ich denke hier sollte mal ein Admin eingreifen :!:

Andi F :evil:



Hallo plc_tippser

werde Montag ein Beispiel posten. Vieleicht liege ich ja falsch mit dem
DB0 und die Programmzeilen sind ganz anders zu deuten.

Gruss Andi F :D
 

Question_mark

Well-known member
Beiträge
3.381
Punkte Reaktionen
578
SDB0

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. :wink:

Gruss
Question_mark

PS : Was glaubst Du, wen hat der Admin hier wohl gemeint :
http://www.sps-forum.de/phpBB2/viewtopic.php?t=1210&sid=79fe606d4465961fc831b512a2fe3b8d
 

Question_mark

Well-known member
Beiträge
3.381
Punkte Reaktionen
578
Zuviel Werbung?
->Hier kostenlos registrieren
@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. :eek:
Gruss
Question_mark
 
OP
A

Andi F

Well-known member
Beiträge
113
Punkte Reaktionen
4
@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 :D
 

Markus

Administrator
Teammitglied
Beiträge
5.266
Punkte Reaktionen
1.301
@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?
 
A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
DB0

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.
 
OP
A

Andi F

Well-known member
Beiträge
113
Punkte Reaktionen
4
Beispiel DB0

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 :D
 

jogi

Well-known member
Beiträge
81
Punkte Reaktionen
0
Re: Beispiel DB0

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
 
OP
A

Andi F

Well-known member
Beiträge
113
Punkte Reaktionen
4
Zuviel Werbung?
->Hier kostenlos registrieren
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 :D
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
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
 

jogi

Well-known member
Beiträge
81
Punkte Reaktionen
0
Hi noch mal,

@pt

genau! dachte ich auch bis eben :D
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 :D

Gruß Jörg
 
Oben