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

Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 37 von 37

Thema: Messwerte in einen DB schreiben

  1. #31
    Registriert seit
    23.02.2015
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    ich klinke mich da einfach mal rein da es zu meinem Problem passt.

    Ich will auch Werte in einem Datenbaustein abspeichern.
    Der DB ist bis dw60700 geöffnet.
    Ich will über indizierte Adressierung auf (z.B.)DBxx.DD60620 schreiben.
    Jetzt hab ich das Problem wenn ich diese 60620 mit einer Variable übergebe muss diese ja eine INT - variable sein. ERGO: fehler weil INT -32000 / +32000 (ungefähr).
    Kann ich auf 60620 überhaupt adressieren ?
    Falls ja - wie ?

    danke für eure Hilfe
    Gruß Tom

  2. #32
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.204
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Hmm, ich mag jetzt nicht 30 Beiträge lesen und dann raten, wozu Dein Beitrag passen könnte
    Also: wo musst Du den Wert übergeben? Warum muß es INT sein?
    Du könntest auch als WORD oder DINT übergeben oder einfach vorzeichenlos rechnen - die Adressberechnung muß ja eigentlich sowieso in DINT durchgeführt werden.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #33
    Registriert seit
    23.02.2015
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,
    Danke für deine Antwort.
    Ich sehe ich muss dann doch präziser werden.
    Ich schreibe einen SCL Baustein der mir von einen angeschlossenen Sensor Messwerte ich einen Datenbaustein speichert.
    Mein System:
    Code:
    S7 Distributed Safety Programming V5.4 + SP5 K5.4.5.0_3.5.0.2 K5.4.5.0
    Automation License Manager V5.1 + SP1 K05.01.01.00_01.10.00.06 K5.1.1.0
    S7-PLCSIM V5.4 + SP5 + Upd1 K05.04.05.01_01.02.00.01 K5.4.5.1
    S7-PDIAG V5.3 + SP6 K05.03.06.00_01.01.00.09 K5.3.6.0
    S7 F ConfigurationPack V5.5 + SP6 K5.5.6.0_9.1.0.1 K5.5.6.0
    S7-GRAPH V5.3 + SP7 K5.3.7.0_1.2.0.1 K5.3.7.0
    S7-PCT V2.3 V02.03.00.00_01.18.00.01 V2.3.0.0
    S7-SCL V5.3 + SP6 K05.03.06.00_01.05.00.01 K5.3.6.0
    STEP 7 V5.5 + SP2 + HF1 K5.5.2.1_8.1.0.1 K5.5.2.1
    Mein Code:
    Code:
            Aktuell_Adresse := (BYTE_TO_INT(STATUS.BYTE_3_BYTE_JOB_Number)-1)*2400;      // Wert 1 speichern
            t_real := DWORD_TO_DINT(DATA.BYTE_02_MESSWERT_01)*korr_fact/100;
            daten_db.dd[Aktuell_Adresse] := REAL_TO_DWORD(t_real) ; // 1. Wert
    Wenn jetzt meine "Job_nummer" die 15 erreicht macht es "puff" und die sps (416-F) stoppt.
    Das Problem ist das laut Anleitung die indize als INT übergeben werden muss.
    Bei mir die variable "Aktuell_Adresse".
    Sobald der Wert von "Aktuell_Adresse" die 32767 überschreitet passt die Adressierung des Datenbausteins nicht mehr.

    Ich hoffe jetzt ist es ein bisschen verständlicher.

    Hier noch das Dokument von Siemens:
    SCL_d.jpg

    Gruß Tom
    Geändert von Thomas.Scheuerer (28.05.2015 um 00:00 Uhr)

  4. #34
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    2 Fragen dazu :
    - kann/darf der Datenbaustein bei einer 400er so groß werden ?
    - warum arbeitest du nicht mit einem Array (of REAL) an Stelle dieser Indiziererei ?

    Gruß
    Larry

  5. #35
    Registriert seit
    23.03.2015
    Ort
    Dortmund
    Beiträge
    15
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Warum 1001 Felder?
    Ein Wert pro Sekunde X 3 Minuten ergibt 180 oder lasse ich da etwas außer acht?
    kaum macht man's richtig schon funktioniert es

  6. #36
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.204
    Danke
    926
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Zitat Zitat von Thomas.Scheuerer Beitrag anzeigen
    Wenn jetzt meine "Job_nummer" die 15 erreicht macht es "puff" und die sps (416-F) stoppt.
    Das Problem ist das laut Anleitung die indize als INT übergeben werden muss.
    Wenn es denn tatsächlich mit dieser vorsintflutlichen Indiziererei sein muß:

    Die SCL-Hilfe zum indizierten Zugriff auf Datenbausteine bzw. Speicherbereiche ist veraltet. Der Index darf auch DINT sein - dann kann man auch auf Adressen > DBD32767 zugreifen.

    Deklariere Aktuell_Adresse als DINT und berechne in DINT, dann crasht es nicht mehr:
    Code:
            Aktuell_Adresse := (BYTE_TO_INT(STATUS.BYTE_3_BYTE_JOB_Number)-1) * DINT#2400;      // Wert 1 speichern
            t_real := DWORD_TO_DINT(DATA.BYTE_02_MESSWERT_01)*korr_fact/100.0; //REAL-Berechnung explizit/deutlicher angeben!
            daten_db.dd[Aktuell_Adresse] := REAL_TO_DWORD(t_real) ; // 1. Wert
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #37
    Registriert seit
    23.02.2015
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    OK, vielen Dank.
    werde ich Testen.

    Ich gib dann Meldung.

    Gruß Tom

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 24.10.2013, 10:37
  2. Wago 750 Messwerte in Array schreiben
    Von emsbootsmann im Forum Sonstige Steuerungen
    Antworten: 14
    Letzter Beitrag: 21.10.2012, 16:30
  3. Daten in einen DB schreiben
    Von Stefan_01 im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 01.10.2008, 07:15
  4. Inhalt eines DB in einen DB Schreiben
    Von nonguru im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.08.2008, 18:04
  5. Antworten: 5
    Letzter Beitrag: 21.06.2007, 17:04

Lesezeichen

Berechtigungen

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