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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Probleme mit DBs in SCL

  1. #1
    Registriert seit
    07.08.2007
    Beiträge
    8
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich arbeite grade an meiner Diplomarbeit, bin so gut wie fertig nur der letzte Rest fehlt noch.
    (Benutze CPU314C-2 DP und ein Kommunikationsmodul CP340)

    Ich bekomme Messwerte von einem Messgerät an die SPS geschickt. Funktioniert auch alles soweit. Die Messwerte kommen in Form eines Strings '+v.nnnnnnnnE+xx'. Also insgesamt 8 Nachkommastellen. Diesen String will ich in einen Realwert umwandeln. Dafür muss ich jedoch die 8. Nachkommastelle rausschneiden. Dafür gibt es mehrere Möglichkeiten. Nun will ich das in SCL machen.

    Das Problem an der Sache ist, dass wenn ich einen empfangenen Messwert weiterverarbeiten will. Die ersten beiden Zeichen immer überschrieben werden mit der Länge des Strings und somit weg sind.

    Schon bei einer einfachen Wertezuweisung tritt das auf:

    Code:
    Db40.Messwert[0]:=Db20.Messwert[0];
    Wäre nett wenn mir jemand sagen könnte, wo das Problem liegt.

    MfG

    Chrissi
    Zitieren Zitieren Probleme mit DBs in SCL  

  2. #2
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 23 Danke für 20 Beiträge

    Standard

    Wie werden die Messwerte empfangen? Werden sie direkt in dem DB geschrieben? Hast Du hier ein STRING definiert, oder ein Array, oder gar nichts - einfach Platz reserviert?

    In jedem Fall ist es eher unwahrscheinlich, dass die ersten zwei Zeichen von dem Längen-Info überschrieben werden, eher findest Du den ersten Zeichen in DB20.Messwert[2].

    Wenn Du in einem VAT sehen kannst, dass in DB20.Messwert[2] tatsächlich Zeichen drei zu finden ist und nicht Zeichen eins, dann brauchen wir etwas mehr info über DB-Struktur und Programm um weiter zu kommen.

  3. #3
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    ...ganz einfach auch ohne SCL

    Kopiere den String


    1.Steller + 2.Stelle + Zeichenfolge [+v.nnnnnnnnE+xx]

    in ein ARRAY of BYTE

    verschieben die Zeichen "E+xx" eine Stelle nach vorn
    Reduziere die den Zahlenwert in der "2.Stelle" um eins.

    kopieren das Array auf einen "verkürzten" STRING zurück

    dann kann Du STRING_TO_REAL machen.


    ... das alles geht auch mit STRING Befehlen direkt im SCL
    aber so kann du ggf. besser in der VAT sehen,was passiert.



    Gruß

  4. Folgender Benutzer sagt Danke zu IBFS für den nützlichen Beitrag:

    chrissi (09.08.2007)

  5. #4
    chrissi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    07.08.2007
    Beiträge
    8
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Schon mal danke für die schnellen Antworten!

    Die Messwerte werden über das CP340 emfpangen (FB2) und direkt in den DB20 geschrieben. Die Ausgabe beobachte ich über ein Panel. Da stimmt dann auch noch alles.

    DB20 ist ein Array von 16 Strings. Ein string ist 14 byte groß.
    Vor dem Array befinden sich noch zwei Char, in denen werden noch zwei Info zeichen von dem Messgerät reingeschrieben. Diese beiden Zeichen kommen automatisch und ich brauche sie nicht weiter.

    DB40 ist genauso aufgebaut wie DB20.

    Der DB20 stimmt ja (überprüfe ich wie bereits gesagt mit einem Panel) nur wenn ich eine Wertzuweisung wie oben angeführt mache, sind die ersten beiden Zeichen im DB40 murks bzw. Längen angaben. (schau ich mir auch mit dem Panel an)

    Habe mir mittlerweile auch schon überlegt das ohne SCL zu machen (wegen Zeitdruck) aber ich möchte eigentlich schon gerne wissen woran das Problem liegt

  6. #5
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 23 Danke für 20 Beiträge

    Standard

    Wenn die Daten in DB20 richtig anliegen, denn muss das Problem bei SCL liegen und da kenne ich mich leider nicht aus.

    Hast Du es wirklich ausprobiert, die Abfrage ab DB20.Messwert[2] zu machen, statt ab DB20.Messwert[0]?

    Übrigens die ersten zwei Bytes sind die maximale Länge und die tatsächliche Länge des STRINGs. Dies ist einfach das Siemens Format und wird automatisch berücksichtigt wenn man mit STRINGs arbeitet.
    Geändert von RMA (07.08.2007 um 13:58 Uhr)
    Zitieren Zitieren Geht dass denn in SCL - Array von Typ STRING?  

  7. #6
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ich gebe auf SCL ist ein garstiges degeneriertes irgendwas. Mensch Step7 lerne endlich ST!

    In ST ging das so:
    Code:
        tmpZahl        := STRING_TO_REAL(MID(inStr, 10, 1));  (*Zahl mit Vorzeichen*)
        tmpExponent := STRING_TO_INT(MID(inStr, 3, 12)); (*Exponent mit Vorzeichen*)
    Dann eben noch Errechnen fertig.
    If you open your Mind too much, your Brain will fall out.

  8. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    @Zotos:
    so wie in deinem Beispiel würde es in SCL auch aussehen ...

    @Chrissi:
    Ich vermute, dass du bei deiner String-Verschmickelung irgendetwas nicht berücksitigt hast. Stell doch mal den Code deines SCL-Scriptes hier ein. Eigentlich ist das, was du vorhast wirklich kein Problem.

    @IFBS:
    In SCL kann man sich auch anschauen, was das Script so treibt ...

  9. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    chrissi (09.08.2007)

  10. #8
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 23 Danke für 20 Beiträge

    Standard

    Mensch Step7 lerne endlich ST!
    Wurde ich gerne, aber mein Arbeitgeber ist zu geizig Step7 Professionell zu kaufen!

    Abgesehen davon, das hätte man fast so einfach und sicherlich performanter in AWL realisieren können.

  11. #9
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    @Zotos:
    so wie in deinem Beispiel würde es in SCL auch aussehen ...
    Bei meiner alten SCL Version wir schon bei STRING_TO_REAL gemekert ;o(

    Aber nach dem Suchen in der Hilfe:

    Code:
    R_STRNG und STRNG_R 
    
    Die Funktionen R_STRNG (FC 30) bzw. (FC 39) wandeln eine Variable im REAL*Format in eine Zeichenkette oder eine Zeichenkette in eine REAL-Variable. Die Zeichenkette wird mit 14 Stellen dargestellt: 
    ±v.nnnnnnnE±xx
    If you open your Mind too much, your Brain will fall out.

  12. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ...
    OK ...

Ähnliche Themen

  1. Bus Probleme
    Von KR-TKD im Forum Feldbusse
    Antworten: 7
    Letzter Beitrag: 15.06.2011, 16:37
  2. CPU 315 F 2PN/DP DI Probleme
    Von Joke im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 12.05.2009, 21:10
  3. Probleme über Probleme!
    Von tom_2802 im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 12.06.2008, 22:19
  4. Probleme mit ALM
    Von Larry Laffer im Forum PC- und Netzwerktechnik
    Antworten: 4
    Letzter Beitrag: 08.03.2008, 18:13
  5. Probleme mit OPC
    Von ILW im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 01.11.2007, 12:37

Lesezeichen

Berechtigungen

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