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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 33

Thema: Befehl zum auslesen eines Strings

  1. #21
    Registriert seit
    16.05.2005
    Ort
    Stuttgart
    Beiträge
    53
    Danke
    15
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... ein bißchen ...

    Aus dem ARRAY [0..255] of Byte würde ich zunächst einen STRING [254] machen.
    Achtung hierbei : die Nutzdaten des String stehen ab Byte-Index String-Anfang +2. Im Byte 0 steht die definierte Länge des Strings (hier musst du 254 eintragen) und im Byte 1 steht die echte Länge des Strings (hier musst du die Anzahl der empfangenen Zeichen eintragen).
    Nun kannst du mit den STRING-Routinen an dem String herummachen bis der Arzt kommt ...
    Wichtig hier aber auch : Auch der Ziel-String für z.B. RIGHT muss initialisiert sein (in Byte 0 muss die deklarierte Länge des Strings stehen).

    Um die Sache ggf. einfacher zu machen ... hast du SCL zur Verfügung ?

    Gruß
    LL
    Ja nur woher weis ich die reale länge wie bekomme ich die raus oder kann der wert auch größer sein. ich weis ja nicht was mir gerade geschickt wurde und was mach ich wenn der pc auch die beiden ersten stellen beschreibt muss ich das wirklich angeben oder kann icjh die empfangfen irgendwie umkopieren oder sowas


    Ja SCL habe ich nur leider noch nie mit gearbeitet bin bei sowas noch unbedarft
    Geändert von nonguru (20.04.2008 um 11:15 Uhr)
    Es gibt 2 Dinge die unendlich sind
    das Universum und die menschliche Dummheit
    beim Universum bin ich mir nicht ganz sicher

  2. #22
    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

    ... der FC-Receive liefert dir die Anzahl der tatsächlich übertragenen Zeichen ...

  3. #23
    Registriert seit
    16.05.2005
    Ort
    Stuttgart
    Beiträge
    53
    Danke
    15
    Erhielt 4 Danke für 4 Beiträge

    Standard

    wo finde ich fc receive
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... der FC-Receive liefert dir die Anzahl der tatsächlich übertragenen Zeichen ...
    ich hab mal den wago baustein angehängt der den db füllt
    Angehängte Dateien Angehängte Dateien
    Geändert von nonguru (20.04.2008 um 11:32 Uhr)
    Es gibt 2 Dinge die unendlich sind
    das Universum und die menschliche Dummheit
    beim Universum bin ich mir nicht ganz sicher

  4. #24
    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

    Das nützt mir im Augenblick nicht, da ich gerade kein Step7 zur Hand habe ...
    Aber :
    Code:
         CALL  FB    21 , DB21
           Send_DBNo          :=DB11        // DB with the Senddata
           Send_from_ByteNo   :=1           // Index of the first Byte to send
           Send_n_Bytes       :=#SendCount  // Quantity of Sendbytes
           Receive_DBNo       :=DB10        // DB for the Receivedata
           Start_Receivebuffer:=1           // Index for the begin of Receivebuffer
           Receivebuffer_Size :=30          // Size of the Receivebuffer (Ringbuffer)
           Input_65x          :=P#P  260.0 BYTE 4    // Input-Startaddress of the serial modul (modulwidth only 4 or 6 Byte)
           Output_65x         :=P#P  260.0 BYTE 4    // Output-Startaddress of the serial modul (modulwidth only 4 or 6 Byte)
           Used_Coupler_is_x33:=TRUE        // If the used Coupler is a 301 or 303 then put this input to FALSE else put it to TRUE
           Receive_next_Byte  :=#ReceiveIndex    //Index of the place for the next received character
           RESET              :=M10.0       // Reset to the serial Interface (this Variable will be deleted by the FB)
           Start_Sendjob      :=M10.1       // Start one Job for sending data (this Variable will be deleted by the FB)
    am Beispiel deines Send-FB müßtest du sehen, was ich meinte ...
    Poste doch mal den Receive-FB als Aufruf-Beispiel ...

    Gruß
    LL

  5. #25
    Registriert seit
    16.05.2005
    Ort
    Stuttgart
    Beiträge
    53
    Danke
    15
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Das nützt mir im Augenblick nicht, da ich gerade kein Step7 zur Hand habe ...
    Aber :
    Code:
         CALL  FB    21 , DB21
           Send_DBNo          :=DB11        // DB with the Senddata
           Send_from_ByteNo   :=1           // Index of the first Byte to send
           Send_n_Bytes       :=#SendCount  // Quantity of Sendbytes
           Receive_DBNo       :=DB10        // DB for the Receivedata
           Start_Receivebuffer:=1           // Index for the begin of Receivebuffer
           Receivebuffer_Size :=30          // Size of the Receivebuffer (Ringbuffer)
           Input_65x          :=P#P  260.0 BYTE 4    // Input-Startaddress of the serial modul (modulwidth only 4 or 6 Byte)
           Output_65x         :=P#P  260.0 BYTE 4    // Output-Startaddress of the serial modul (modulwidth only 4 or 6 Byte)
           Used_Coupler_is_x33:=TRUE        // If the used Coupler is a 301 or 303 then put this input to FALSE else put it to TRUE
           Receive_next_Byte  :=#ReceiveIndex    //Index of the place for the next received character
           RESET              :=M10.0       // Reset to the serial Interface (this Variable will be deleted by the FB)
           Start_Sendjob      :=M10.1       // Start one Job for sending data (this Variable will be deleted by the FB)
    am Beispiel deines Send-FB müßtest du sehen, was ich meinte ...
    Poste doch mal den Receive-FB als Aufruf-Beispiel ...

    Gruß
    LL
    herr laffer
    ich muss dich enttäuschen das ist die länge die ich sende die ich selbst eintrage die empfangslänge ist unbekannt

    ich glaub ich erschiesse den dichtprüfer,

    obwohl wenn ich den index benutze aber dazu muss ich wissen ob senden abgschlossen ist vielleicht ein time out
    Es gibt 2 Dinge die unendlich sind
    das Universum und die menschliche Dummheit
    beim Universum bin ich mir nicht ganz sicher

  6. #26
    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

    Excuse me ... da habe ich doch glatt übersehen, dass du einen kombinierten SEND-RECEIVE-FB hast ...
    Aber halb so wild ...
    Mein Vorschlag dazu :
    Test doch mal, was nach einem Empfang in "Receive_next_Byte" für ein Wert steht ... Nach meiner Meinung ist dies (wenn du bei jedem Empfangen mit "Start_Receivebuffer:=1" anfängst) die Länge der empfangenen Zeichen +1.
    Also : Empfangene_Zeichen := Receive_next_Byte - 1 ;

  7. #27
    Registriert seit
    16.05.2005
    Ort
    Stuttgart
    Beiträge
    53
    Danke
    15
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Excuse me ... da habe ich doch glatt übersehen, dass du einen kombinierten SEND-RECEIVE-FB hast ...
    Aber halb so wild ...
    Mein Vorschlag dazu :
    Test doch mal, was nach einem Empfang in "Receive_next_Byte" für ein Wert steht ... Nach meiner Meinung ist dies (wenn du bei jedem Empfangen mit "Start_Receivebuffer:=1" anfängst) die Länge der empfangenen Zeichen +1.
    Also : Empfangene_Zeichen := Receive_next_Byte - 1 ;
    werde ich morgen früh gleichj mal testen aber wie setzte ich das dann zusammen

    erstelle ich einen neuen strin in den ich 254 kopiere dann an der zweiten stelle die länge und an die weiteren stellen die zeichen aus meinem db 11 warum kann ich dann den db 11 nicht direkt verwenden und immer so tun als hätte er die maximal länge egla ob irgendwann lehr oder nicht, ich hätte bei meinen bisherigen sachen bleiben sollen bit und dword da wuste ich was ich tu
    Es gibt 2 Dinge die unendlich sind
    das Universum und die menschliche Dummheit
    beim Universum bin ich mir nicht ganz sicher

  8. #28
    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

    Eyyyh ...!
    Jetzt aber nicht klein beigeben. Das wird schon - aufgeben gilt nicht ...

    Leider habe ich deine Frage nicht verstanden - war ein bißchen Konfus.
    Du kannst den String auch als Pointer an den FB übergeben, nur bitte daran denken, dass du ab Adresse von Byte 2 angeben musst - vielleicht war das schon die Frage. Der DB stellt nicht automatisch die Länge zur Verfügung, weil er nicht so programmiert wurde. Muss du den Programmierer danach fragen.

    Bis dahin
    Gruß
    LL

  9. #29
    Registriert seit
    16.05.2005
    Ort
    Stuttgart
    Beiträge
    53
    Danke
    15
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Eyyyh ...!
    Jetzt aber nicht klein beigeben. Das wird schon - aufgeben gilt nicht ...

    Leider habe ich deine Frage nicht verstanden - war ein bißchen Konfus.
    Du kannst den String auch als Pointer an den FB übergeben, nur bitte daran denken, dass du ab Adresse von Byte 2 angeben musst - vielleicht war das schon die Frage. Der DB stellt nicht automatisch die Länge zur Verfügung, weil er nicht so programmiert wurde. Muss du den Programmierer danach fragen.

    Bis dahin
    Gruß
    LL

    Guten Morgen Larry,
    aufgeben ist relativ wenn ich aufgebe werde ich glaube ich nicht mehr lange hier arbeiten...
    also nein das tun wir nicht...
    aber was ich meine ich muss mir nun einen neuen db bauen in den ich erst 255 an der zweiten stelle die wirkliche länge und dann den empfangen text hinkopiere oder kann ich das umgehen in dem ich sage mein strin ist immer 100 lang und lass leere stellen leere stellen sein. wie denkst du darüber, du kennst dich damit wenigstens aus ich hab davon null ahnung
    Es gibt 2 Dinge die unendlich sind
    das Universum und die menschliche Dummheit
    beim Universum bin ich mir nicht ganz sicher

  10. #30
    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
    Ich kenne leider deinen FB nicht. Ich denke aber mal, dass er nicht grundsätzlich den ganzen Puffer benutzt, wenn nicht entsprechend Zeichen übertragen werden.
    Willst du dir da ganz sicher sein, dann arbeitest du mit dem Puffer wie gehabt und kopierst nach dem Receive mittels SFC20 (Block-Move) den ganzen Kram in deinen String, den du dann entsprechend auswertest.

    Vorrangig würde mich allerdings interessieren, ob meine Theorie mit dem Empfangslänge stimmt ... Darauf baut alles weitere auf ...

    Gruß
    LL

Ähnliche Themen

  1. Auslesen eines Projekts
    Von superbug im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 05.08.2011, 12:52
  2. Übertragen eines Strings [9] in DB
    Von Wiedenn? im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 14.07.2009, 21:11
  3. Antworten: 5
    Letzter Beitrag: 30.06.2009, 11:48
  4. Wie Laufzeit eines SPS-Programmes auslesen?
    Von ctb im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 23.08.2008, 17:36
  5. SCL Befehl um die Länge eines Datenbausteins zu ermitteln?
    Von 1.0er im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 13.01.2006, 02:18

Lesezeichen

Berechtigungen

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