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

Ergebnis 1 bis 7 von 7

Thema: String in leerem DB-Platz ablegen

  1. #1
    Registriert seit
    13.05.2015
    Ort
    Coburg
    Beiträge
    23
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    Erst einmal eine kurze Erklärung was ich mache:
    Ich scanne einen Barcode mit einem Handscanner und übermittle diesen via RS232 an meine CP340.
    In der S7 werden dann meine Empfangsdaten abgelegt.
    Hier habe ich einen Baustein welcher mir einen DB mit 750 STRING[12] durchsucht ob es eine Übereinstimmung mit dem gescannten Barcode gibt.
    Wenn es eine Übereinstimmung gibt ist alles gut. Dann muss nichts weiter gemacht werden.
    Sollte es ein neuer Barcode sein muss ich diesen allerdings in den DB ablegen.
    Hier habe ich eine Leersuche gestartet (mit dem selben Baustein die oben beschrieben). Wenn ein leerer Platz im DB gefunden wurde gibt der Baustein mit diesen als INT-Wert aus.
    Nun möchte ich die Daten aus dem Empfangs-DB in den DB mit dem leerplatz verschieben.

    Über UBLKMOV wäre das ja kein Problem allerdings habe ich etwas Probleme wie ich die dynamische Adressierung auf den jeweiligen Freiplatz umsetzen soll.
    Hat hier jemand eine Idee oder idealerweise fertige Lösung?

    Danke schonmal!

    Zitieren Zitieren String in leerem DB-Platz ablegen  

  2. #2
    Registriert seit
    15.10.2014
    Beiträge
    91
    Danke
    14
    Erhielt 18 Danke für 15 Beiträge

    Standard

    Hallo,

    du weißt das ein Platz 14 Bytes in Anspruch nimmt. 12 Bytes für die Zeichen und 2 Byte String Header.
    Damit kannst du dir die Adresse errechnen. Ist also Platz 10 frei ist die Adresse des ersten neuen String Bytes 140.


    Nun kannst du dir mittels Pointer den String dahin kopieren.

    Steffan

  3. #3
    Mr. Schinken ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.05.2015
    Ort
    Coburg
    Beiträge
    23
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja das ist soweit klar.
    Das Problem habe ich allerdings momentan bei der Erstellung des Pointers mit dem ich die Daten dann mit UBLKMOV in den DB schreibe.
    Weiß gerade nicht wie ich den FB oder FC aufbauen soll mit dem ich die Adresse in UBLKMOV schreibe.

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.140
    Danke
    524
    Erhielt 2.672 Danke für 1.929 Beiträge

    Standard

    Wie durchsuchst du denn den DB?
    Ist der als Array of String aufgebaut oder adressierst du dort auch über eine Berechnung der Adressen?
    Hier #9 hatten wir mal einen Baustein, der als Input für Zeil und Quelle den DB, die Bytenummer und die Länge erwartet.
    Ja nach Organisation deines DB kannst du ja berechnen,ab welchem Byte der jeweilige Platz beginnt.

    1 String beginnt bei 0
    2. String bei 14
    3. String bei 28
    ...

    Dann kannst du über den o.g. Baustein direkt das Start-/Zielbyte angeben und (hier) mit dem SFC20 umkopieren ohne selbst irgendwelche Any-Zeiger umbelegen zu müssen.
    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

  5. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Mr. Schinken (22.08.2016)

  6. #5
    Mr. Schinken ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.05.2015
    Ort
    Coburg
    Beiträge
    23
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ist eine Suche hier aus dem Forum die ich für meine Zwecke gekürzt habe.
    Hab mal den Code angehängt.
    Dan DB habe ich via Quelle erstellt. Dieser beinhaltet lediglich 750 Strings der Länge 12 (also 14 mit Header).
    Angehängte Dateien Angehängte Dateien

  7. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.140
    Danke
    524
    Erhielt 2.672 Danke für 1.929 Beiträge

    Standard

    Uh, ist schon ganz schön alt, glaube ich.
    Kommt mir aber bekannt vor irgendwie.
    MD100 ist wohl nur zum Beobachten, kann dann wahrscheinlich wegfallen.
    Es wird ja die Bytepos des gefundenen Strings ausgegeben, die kannst du dann für den FC112 nutzen.
    Evtl. noch etwas nachjustieren, wegen der 2 Byte Kopf.

    Ideal wäre ja heutzutage, das in SCL mit einem Array 0... of String zu machen. und dann den DB zu durchsuchen, indem man einen Arrayindex hochzählt.
    Mit diesem Index kann man dann arbeiten.

    Möglicherweise ist das aber damals in AWL gemacht worden, weil erstmal nur das 1. DWord gesucht und verglichen wird und das u.U. schneller geht, als den FC für den Stringvergleich aus der IEC-Library zu verwenden.
    Du mußt ohnehin mal sehen, was die Zykluszeit der SPS sagt, wenn du wirklich bis zum Ende des DB suchen mußt!
    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

  8. #7
    Mr. Schinken ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.05.2015
    Ort
    Coburg
    Beiträge
    23
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So hab mal den FC112 getestet.
    Läuft ohne Probleme. Hab mir noch ein Startsignal zum umkopieren reingebastelt und fertig! Echt top und genau das was ich gesucht habe.
    Hab im Such FB noch ein Offset von 2 eingetragen und nun landet alles richtig im Ziel DB.

    Ja hatte das ganze Anfangs in SCL. Läuft auch bis zu einer gewissen Anzahl von Typen super.
    Das Problem war allerdings das ich 6 DB´s mit je 750 Typ durchsuche.
    Da hat die 314er nicht mehr mitgespielt.
    Hab dann kurzerhand mal den FB aus dem Forum getestet da hier DWORD weiße verglichen wird und da hat es geklappt von der Zykluszeit her.
    Daher die altmodische Lösung mit AWL. Bin auch nicht der riesen AWL Fan aber wusste nicht so recht wie ich die Strings in SCL auftrenne ohne riesen zeitlichen Aufwand reinzustecken.

    Vielen Vielen Dank für die Hilfe kann ich nur sagen.

Ähnliche Themen

  1. St.Gallen Grundkurs 7. Mai 2014 (noch ein freier Platz!)
    Von Martin Glarner im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 27.04.2014, 11:55
  2. Zu wenig Platz für die Klemmleisten
    Von hanibal im Forum Schaltschrankbau
    Antworten: 14
    Letzter Beitrag: 30.03.2013, 20:46
  3. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  4. neuer Platz für Diskussionen über Tools
    Von sps-concept im Forum Werbung und Produktneuheiten
    Antworten: 30
    Letzter Beitrag: 16.07.2009, 08:27
  5. String in DB ablegen
    Von SPS_BOB im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 02.05.2007, 14:33

Stichworte

Lesezeichen

Berechtigungen

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