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

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

Thema: Sprünge in SCL

  1. #11
    Registriert seit
    03.04.2008
    Beiträge
    6.205
    Danke
    237
    Erhielt 817 Danke für 691 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Der Fehler kommt, wenn du so in etwas schreibst?
    if (db1.dbw >=48 ) AND (db1.dbw0 <=57) then....

    sollte eigentlich funktionieren so


    bike

  2. #12
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke bike, aber wenn ich es so (wie von dir vorgeschlagen) schreibe, dann werden folgende Fehler angezeigt:

    Fehler.jpg


    Wenn ich es so programmiere

    goto.jpg

    dann klappt es - allerdings weiß ich nicht, warum gewandelt werden muss?
    Geändert von schnecke (30.12.2011 um 18:31 Uhr)
    L.G. schnecke

  3. #13
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi schnecke,

    das geht nur Symbolisch.

    Gruß Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  4. #14
    Registriert seit
    03.04.2008
    Beiträge
    6.205
    Danke
    237
    Erhielt 817 Danke für 691 Beiträge

    Standard

    Hast du für den DB1 und das Datenwort ein Symbol und einen Datentyp angelegt?
    So wie die Meldung ausschaut, ist da ein Wort bzw noch kein DB angelegt.


    bike

  5. #15
    Registriert seit
    23.10.2009
    Beiträge
    399
    Danke
    59
    Erhielt 114 Danke für 88 Beiträge

    Standard

    Zitat Zitat von schnecke Beitrag anzeigen
    ...allerdings weiß ich nicht, warum gewandelt werden muss?
    Weil die S7 nur vorzeichenbehaftete Vergleiche kennt.
    Word_To_Int ist nicht wirklich eine Umwandlungsroutine, sondern sagt dem Kompiler, dass Du das DBW0 als (vorzeichenbehaftetes) Integer und nicht als (vorzeichenloses) WORD benutzen willst.
    Du kannst diese Umwandlung vermeiden wenn Du, wie das ein ordentlicher Programmierer sowieso macht, symbolisch arbeitest und das DB1.DBW0 schon im DB1 als Integer deklarierst.
    Gruß
    Erich

  6. #16
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Daniel: Was bitte geht nur symbolisch?

    @bike: Eigentlich ist im DB schon der Typ "INT" angelegt:


    DB.jpg

    @Erich: Habe doch im DB "Integer" deklariert...

    Danke für die Hilfe!
    L.G. schnecke

  7. #17
    Registriert seit
    23.10.2009
    Beiträge
    399
    Danke
    59
    Erhielt 114 Danke für 88 Beiträge

    Standard

    Dann greife bitte auch symbolisch darauf zu!
    Gruß
    Erich

  8. #18
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von LargoD Beitrag anzeigen
    Dann greife bitte auch symbolisch darauf zu!
    Gruß
    Erich
    Hm, bitte schön!


    Symbolisch.jpg


    Also, hat geklappt... danke!

    Frage noch dazu:

    Warum erkennt der Compiler den deklarierten Datentyp "INT" im DB nur dann, wenn symbolisch darauf zugegriffen wird - ist das SCL-typisch oder wäre das auch in AWL so?
    Geändert von schnecke (30.12.2011 um 19:38 Uhr)
    L.G. schnecke

  9. #19
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hi,

    ja ist so, bei absoluten DB-Zugriffen sind nur die Datentypen BOOL, BYTE, WORD und DWORD zulässig.
    Diese müssen dann entsprechend gewandelt werden z.b. mit DWORD_TO_REAL(), DWORD_TO_DINT(), ...

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  10. #20
    schnecke ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.07.2010
    Beiträge
    148
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Daniel,

    d.h. also, wenn ich einen absoluten Zugriff auf einen DB mache und das Datenwort als "INT" deklariert ist, so muss immer zunächst eine Wandlung vollzogen werden, da es sich in diesem Beispiel ja um ein Datenwort (DB1.DBW0) handelt. Die Wandlung muss somit eine "WORD_TO_INT" sein.

    Anders bei symbolischen Zugriffen, hier ist auch der Datentyp "INT" zulässig, so dass nicht gewandelt werden muss.

    Kann man das so in etwa zusammenfassen?
    L.G. schnecke

Ähnliche Themen

  1. Sprünge ?
    Von Techniker1907 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 11.10.2011, 23:20
  2. Hilfe mit Sprünge
    Von Techniker1907 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 22.09.2011, 19:08
  3. CFC Programmierung if / sprünge?
    Von swissm im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 19.07.2011, 19:50
  4. Wer hilft mir auf die sprünge???
    Von hhbjörn im Forum Stammtisch
    Antworten: 23
    Letzter Beitrag: 03.09.2008, 22:22
  5. Sprünge Fehler.
    Von russkinemez im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 07.03.2007, 22:24

Lesezeichen

Berechtigungen

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