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

Ergebnis 1 bis 4 von 4

Thema: Einer String Variable eine Konstante zuweisen in AWL

  1. #1
    Registriert seit
    11.03.2014
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    um einige FBs zu testen, will ich einen String, der maximal aus 16 Ziffer (16 Bytes) entstehen kann, in einen globalen DB schreiben.

    Dafür kann ich natürlich SFC20 BLKMOV einsetzen. Wie kann ich in AWL einer Variable eine Konstante zuweisen?

    einString:= 'Beispiel12345678'//das geht nicht in AWL!

    CALL SFC 20
    SRCBLK :=#einString //'Beispiel12345678'
    RET_VAL:=MW50
    DSTBLK :=P#DB102.DBX56.0 BYTE 16

    Ich bin C++ Profi und leider kein AWL-Profi. Kann jemand mir bitte weiterhelfen? Vielleicht ist mein Ansatz vollkommen daneben...

    Gruß Ronald
    Zitieren Zitieren Einer String Variable eine Konstante zuweisen in AWL  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Das geht so nicht in AWL, du mußt jedem Byte seinen Char-Wert zuweisen und das geht dann nur über direkte Adressierung des Lokal-DW oder über indirekte Adressierung.
    Da das doch ziemlich umständlich ist, nehme ich in so einem Fall einfach einen DB, deklariere dort den String und weise ihm einen Defaultwert zu.
    Nach dem Übertragen in die SPS schreibe ich den DB-String dann an Blockmove.
    Verändern kann man diesen String dann über die Variablentabelle, aber auch hier nur Byte bzw. maximal DOWRD-Weise als "Zeichen".
    Hat den Vorteil, dass man für eine Änderung des Stringinhaltes nicht immer das Programm neu in die SPS schieben muß.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Man muss auch bei der Variablentabelle daran denken, immer im zweiten Byte im Kopf die Stringlänge passend mitzusetzen. Ich meine die Variablentabelle von Jochen Kühner kann auch mit Strings umgehen.

    Ansonsten sind Strings in AWL wirklich unhandlich. Um deinen Beispielstring in AWL zusammenzusetzen wäre maximal das möglich, (mit tmpString16 als 16 Zeichen String im temp-Bereich):
    Code:
          LAR1  P##tmpString16
    // Max. Länge des Strings setzen
          L     16
          T     LB [AR1,P#0.0]
    // Aktuelle Länge: "Beispiel12345678" = 16 Zeichen 
          L     16
          T     LB [AR1,P#1.0]
    // Max. 4 Zeichen am Stück.
    // Achtung! Es müssen auf jeden Fall immer 4 Zeichen sein.
          L     'Beis'
          T     LD [AR1,P#2.0]
          L     'piel'
          T     LD [AR1,P#6.0]
          L     '1234'
          T     LD [AR1,P#10.0]
          L     '5678'
          T     LD [AR1,P#14.0]
    und dann den tmpString per Blockmove in einen DB kopieren.

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.330
    Danke
    448
    Erhielt 687 Danke für 512 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Stand auch schon vor dem selben Problem. Leider ist String und AWL ein Krux.

    Hatte vor ein paar Tagen als Übung versucht so ein HD44780-basiertes 2x16 Zeichen Text-LCD mit 6 DOs anzusteuern. Hatte es zuerst schnell
    mal in AWL geschrieben, funktioniert auch. Musste dann aber schnell feststellen das es mit dem definieren von Zeichenketten zum senden ans Display
    in AWL schlecht aussieht. Die einzigen mir bekannten Methoden wurden auch schon genannt.

    Was soll's. Die Sache mit dem Text-LCD war sowieso als Übungsprojekt für den Einstieg in SCL gedacht (Wegen S7-1200).

    Wie löst der SCL-Compiler eine String-Konstante eigentlich auf?
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

Ähnliche Themen

  1. String Variable in AWL beschreiben
    Von jaepen im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 10.05.2011, 09:44
  2. Konstante String in Variable String schreiben
    Von sailor im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 07.12.2009, 18:01
  3. Eine Frage zu einer AWL
    Von pinolino im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.04.2009, 12:33
  4. STRING einer DB-Variablen indirekt zuweisen (SCL)
    Von maweri im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 26.05.2008, 15:58
  5. String Konstante übergeben
    Von Jochen Kühner im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 17.01.2005, 13:10

Stichworte

Lesezeichen

Berechtigungen

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