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

Ergebnis 1 bis 9 von 9

Thema: MW und DW

  1. #1
    Registriert seit
    25.10.2003
    Beiträge
    1.425
    Danke
    297
    Erhielt 104 Danke für 69 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo, ich hätte gerne eine frage,
    wenn ich schreibe in Programm MW1
    und dann brauche ich noch eine DW,und wenn schreibe ich DW1
    ist das Richtig oder Falsch
    liegen DW1 und MW1 in gleiche Speicherbereich
    oder wenn schreibe ich MW1 , dann soll ich DW3 schreiben
    könnten Sie bitte unterschied in speicher bereich zwischen MW udn DW erklären
    gruß waldy
    Zitieren Zitieren MW und DW  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    [quote="waldy"]
    wenn ich schreibe in Programm MW1
    und dann brauche ich noch eine DW,und wenn schreibe ich DW1
    ist das Richtig oder Falsch
    [quote]
    Das ist nicht falsch, aber bei der Benutzung von MW1 beachte, dass es die BYTES MB1 und MB2 umfasst. Das nächste benutzbare Merkerwort ist dann MW3. Die meisten Leute ziehen es vor, Merkerworte auf gerade Adressen (0,2,4,6..) zu legen.
    liegen DW1 und MW1 in gleiche Speicherbereich
    Nein
    oder wenn schreibe ich MW1 , dann soll ich DW3 schreiben
    könnten Sie bitte unterschied in speicher bereich zwischen MW udn DW erklären
    gruß waldy
    Es sind verschiedene Speicherbereiche. MWs existieren immer,
    DWs nur innerhalb von Datenbausteinen(DB), die Du erst erzeugen musst (entweder auf dem Programmiergerät oder mit Systemfunktionen z.B. beim Programmstart oder vor dem ersten Gebrauch). Jeder DB erhält einen eigenen Speicherbereich entsprechend seiner Länge. Daher ist das Datenwort DW2 in DB4 ein anderes als das DW2 in DB3.
    Du must angeben, welcher DB gemeint ist. Bei der S5 benutzt Du den Befehl
    A DB 4
    und ab jetzt werden alle Datenworte aus DB4 genommen, bis Du einen anderen Baustein benutzt.
    Bei der S7 heißt das AUF DB 4. Zusätzlich kannst Du noch bei jedem Befehl ausdrücklich angeben, welcher DB gemeint ist: DB4.DBW 12 benutzt Datenwort 12 aus DB4.
    Bei der S7 werden DB-Adressen byteweise gezählt wie die Merkeradressen auch.
    Bei der S5 ist das anders: Die Adresse zählt wortweise hoch. Es gibt also ein Datenwort 0 und ein Datenwort 1, die beide komplette 2-Byte Worte sind und sich nicht überschneiden. Um auf Bytes der S5-Datenworte zuzugreifen, gibt es die Adressierung linker und rechter Hälften: DL1 und DR1 meinen das linke oder rechte Byte im DW1.
    Zitieren Zitieren Re: MW und DW  

  3. #3
    Avatar von waldy
    waldy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2003
    Beiträge
    1.425
    Danke
    297
    Erhielt 104 Danke für 69 Beiträge

    Standard

    hallo, Vielen Dank für ganz gute erklärung
    und jetzt möchte noch was zu fragen
    ich habe gesehen dass, z.B. DB1 steht in FB x ganz oben , am anfang programme(das ist klar).
    Und meine Frage- kann ich DB1 in OB1 zu schreiben und damit DB1 wird immer seit Start Programme eingeschaltet / exestieren

    gruß waldy

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von waldy
    hallo, Vielen Dank für ganz gute erklärung
    und jetzt möchte noch was zu fragen
    ich habe gesehen dass, z.B. DB1 steht in FB x ganz oben
    Tut mir leid, ich verstehe nicht gut, was du meinst. Eine Anweisung A DBx oder AUF DBx steht insofern oft am Anfang, da im Rest des Bausteins damit gearbeitet wird.
    , am anfang programme(das ist klar).
    Und meine Frage- kann ich DB1 in OB1 zu schreiben und damit DB1 wird immer seit Start Programme eingeschaltet / exestieren
    Meinst du hier wieder die Anweisung den DB zu benutzen, also
    A DB 1
    oder AUF DB 1 ?
    Die kannst du an den Anfang des OB1 stellen, wenn du nur einen einzigen DB benutzt.
    Du kannst solche Dinge aber auch einfach ausprobieren. Das geht schneller, als wenn du hier nach allem fragst. Du kannst nichts kaputtmachen; die SPS geht höchstens in Stop. Dann solltest du bei der S5 im PG die Funktion "USTACK" aufrufen, um die Ursache zu ermitteln. Du bekommst dann z.B. angezeigt, dass der aufgerufene DB nicht vorhanden ist, außerdem die Adresse der Anweisung, die den Fehler verursacht hat. Bei der S7 verwendest du die Funktion Zielsystem/Diagnose.
    Du kannst der SPS auch beim Abarbeiten des Programms zusehen, bei der S5 mit der Funktion "Testen", bei der S7 über den Menüpunkt "Beobachten". Dann schreibst du 2 DBs mit verschiedenem Inhalt und kannst sehen, welcher benutzt wird.

  5. #5
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    Die kannst du an den Anfang des OB1 stellen, wenn du nur einen einzigen DB benutzt.
    bin ich mir nich sicher ob das funktioniert.
    zumindest die s5(95u) setzt nach JEDEM aufruf eines ob das register in dem die db nummer steht wieder auf 0.

    und wenn im ob1 ein db aufgerufen wird bin ich mir nicht sicher ob dieser in einem anderen baustein noch offen ist...

    zumindest ist das so wenn ien zeit oder alarm ob das programm unterbricht.

  6. #6
    Registriert seit
    18.06.2003
    Beiträge
    141
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hallo

    Um sicher zu sein ob der DB aufgeschlagen ist, kann man in der Testfunktion oben am Bildschirmrand sehen.

    mfG churchill

  7. #7
    Avatar von waldy
    waldy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2003
    Beiträge
    1.425
    Danke
    297
    Erhielt 104 Danke für 69 Beiträge

    Standard

    hallo,
    na ja, bei mir das ist immer problemmer, kurz zu beschreiben und damit es ist nicht immer steht klar drauf , was möchte ich aussagen
    1- "ich habe gesehen dass, z.B. DB1 steht in FB x ganz oben "
    ich wolte nur sagen, das ich habe andere geschrieben Programme gesehen habe und da steht am anfang Programme befehl
    A DB1
    und wenn baustein ist zu, dann diese DB ist auch weg und diese DB kann man nur in bestimte Baustein bearbeiten

    und ich möchte fragen
    kann man in OB 1 sofort schreiben Befehl
    A DB 1
    damit kann ich von jede PB, FB aus diese DB1immer ständig(in jede zeit zugreifen kann) die DW1-DW10 zu lesen und weiter bearbeiten
    gruß waldy

  8. #8
    Avatar von waldy
    waldy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2003
    Beiträge
    1.425
    Danke
    297
    Erhielt 104 Danke für 69 Beiträge

    Standard

    halllo, zusammen,
    wie immer eine Frage,
    z.B. in FB1 bis FB5 brauche gleiche DW1-DW10 abfragen,
    deswegen habe ich gedacht dass ich darf DB 1 in OB1 offnen
    OB1
    A DB1
    und dannjede mal nach gebraucht DW1 in FB1 FB5 ausrufen

    und dann in nächste FB6-FB8 brauche ich noch eine DB 2
    darf ich zweite DB in FB6 schon offnen und folgen DW als DW 11-DW20

    oder wie könnte ich das realiesieren, das in FB1 - FB5 könnte ich gleiche DW abrufen
    und in andere DB2 ab FB6 könnte ich mit andere DW bearbeiten
    gruß waldy

  9. #9
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es wird immer nur mit einem DB gearbeitet. Wenn du also in FB 1 bis 5 mit DB1 gearbeitet hast un dann FB6 aufrufst, der mit DB2 arbeiten soll, schreibst Du "A DB2" vor dem Aufruf von FB6. Soll in FB6 mit Daten aus beiden DBs gearbeitet werden, mußt du jedesmal den DB wechseln:
    Code:
    A DB 1
    L DW 6
    A DB 2
    T DW3
    Kopiert den Wert von DW6 des DB1 nach DW3 des DB2. Alle nachfolgenden Operationen mit DWs (oder DL/DR) benutzen nun DB2, wenn du nichts weiter angibst.

Lesezeichen

Berechtigungen

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