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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: DB auslesen; enthält CHAR

  1. #1
    Registriert seit
    30.11.2007
    Ort
    Eifel
    Beiträge
    82
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    erst einmal vielen herzlichen Dank für die Unterstützung die ich bis jetzt hier bekommen habe. Hier lernt man mehr, sind ja auch nur Fachleute hier unterwegs, bis auf mich. Ich muss noch lernen.


    Ja, ich habe die Forensuche genutzt, aber bin nicht schlau geworden. Ich kommuniziere mit einem Messsystem über die CP340. Das klappt auch alles wunderbar. Im DB200 werden brav die Daten abgelegt. Jetzt würd ich die gerne in eine eigene Funktion hinein laden. ICh bekomme ja die Anzahl der empfangenen Daten mit überliefert. Aber wie bekomme ich die Daten von einem DB aus in eine eigene Variable, z. B. String in eine eigene Funktion.

    Bitte nicht lachen, auch wenn mein Brett vorm Kopf ein Mamutbaum ist.

    Ich hab mal nen Screenshot angehangen, da könnt ihr sehen was da so drin steht.

    Ich bedanke mich schon mal ganz herzlich.....
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren DB auslesen; enthält CHAR  

  2. #2
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Keine Sorge, diesem Mammutbaum kenne ich...

    Die Frage von mir ist jetzt, was soll mit den CHAR Zeichen gemacht werden?
    Wohin sollen sie kopiert werden?

    Ein STRING ist ja nur eine andere Darstellungsform für die Zeichen...
    Das Grauen lauert in der Zwischenablage !!

  3. #3
    Registriert seit
    19.03.2009
    Ort
    Stuttgart
    Beiträge
    37
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    du kannst ja z.b :

    L DB1.DBB 0
    T LB 0



    so kannst du die daten die du brauchst in deine variablen laden oder ich habe gerade das brett vorm kopf und verstehe nicht was du vor hast

  4. #4
    Registriert seit
    30.11.2007
    Ort
    Eifel
    Beiträge
    82
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für dein Mitgefühl.....

    Ich würde gerne die empfangenen CHARs in eine Variable ablegen die ich dann einer eigenen geschriebenen Funktion übergeben kann.

  5. #5
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Dann kann man das ganze doch einfach per Blockmove in einen anderen DB schaufeln und von da aus weitermachen.
    Das Grauen lauert in der Zwischenablage !!

  6. #6
    Registriert seit
    30.11.2007
    Ort
    Eifel
    Beiträge
    82
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Schneemann86,

    danke für deine Hilfe.

    L DB1.DBB 0
    T LB 0

    Was macht das??? Sorry bin da totaler Anfänger. Kenn mich eher mit Windowsprogrammierung aus...

    Meine Idee oder mein Wunsch ist, das z. B. eine Variable namens "EmpfangeneDaten" existiert mit dem Typ STRING. In diese möchte ich dann meine empfangenen Daten aus dem DB200 hinein schreiben.

  7. #7
    Registriert seit
    30.11.2007
    Ort
    Eifel
    Beiträge
    82
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo dtsclipper,

    danke für deine Anmerkung.....

    Wie kann ich mir das vorstellen? Blockmove in einen anderen DB??? Wie gesagt bin blutiger Anfänger. Dann steht es in einem anderen DB drin und , sorry, was hab ich davon? Sorry wie erst später geschrieben wollte ich die Daten aus dem DB200 in eine Variable mit dem Typ STRING schreiben...

    Hab wohl doch den Mamut vorm Kopf....

  8. #8
    Registriert seit
    19.03.2009
    Ort
    Stuttgart
    Beiträge
    37
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Im FB/FC legst du oben im Kopf in den Temp Variablen die bereiche an die du brauchst , geht auch String

    Du schreibst das in einen FB/FC :

    L DB1.DBB 0 / Lade aus DB1 das Byte 0 in akku 1 in deine fall L DB200.DBB 0


    T LB 0 / Der Inhalt aus Akku 0 ( Inhalt aus Byte 0 Db200) wird in das Byte 0 der Temp variable Transferiert

    kannst auch 4 bytes (DW) auf einmal laden mit

    L DB200.DBD0
    T LD 0

    L DB200.DBD4
    T DB200.DBD4

    usw währe eben viel zu schreiben... was hast du denn dann mit dem String vor , bzw wozu brauchst du das ?

  9. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Ich schlage mal folgendes vor:
    Code:
          CALL  "BLKMOV"
           SRCBLK :=P#DB200.DBX0.0 BYTE 40
           RET_VAL:=MW10
           DSTBLK :=P#DB201.DBX2.0 BYTE 40
    
          L     40
          T     DB201.DBB    0
          T     DB201.DBB    1
    Dabei legst du einen DB201 an, in welchem du einen String definierst.

    Hier die Quelle dazu:

    Code:
    DATA_BLOCK DB 201
    TITLE =
    VERSION : 0.1
    
    
     STRUCT 	
       Empfangener_String : STRING  [254 ];	
      END_STRUCT ;	
    BEGIN
       Empfangener_String := ''; 
    END_DATA_BLOCK
    Die 40 kannst du anpassen, je nachdem, wieviele Char du in den String kopieren willst! Mit dem String kannst du dann ganz normal weiterarbeiten.

    z.Bsp. den Stringvergleich:

    Code:
      CALL  "EQ_STRNG"
           S1     :=DB201.Empfangener_String
           S2     :=DB202.Empfangener_String
           RET_VAL:=M12.0
    Darauf achten, daß der String im DB202 im Byte 0 und 1 jeweils auch die Länge der Daten enthält, in diesem Bsp. am besten auch 40.

    Wenn weniger Daten, dann alle "40" z.Bsp. durch "10" ersetzen.
    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

  10. #10
    Registriert seit
    30.11.2007
    Ort
    Eifel
    Beiträge
    82
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also ich will die empfangen Daten zerlegen. Die Daten sind ne Befehlskette und jeder. Sozusagen Distanz und Status. Ich würde gerne diese Anzahl an empfangenen CHARS, es sind z. B. 10 komplett aus dem DB200 auslesen. Die Anzahl, hier jetzt 10, bekomme ich ja im Empfangsbaustein mitgeschickt. Also würde ich gerne jeweils für jede empfangenen Daten dem entsprechend diese auslesen. Zwischen den beiden beiden Befehlen steht ein ";" wonach man suchen kann und dann die Befehle auseinander zu pflücken.

    Gibt es keinen einfacheren Weg die Daten aus dem DB zu kopieren. Ist ja nur ne Frage, da die Länge der empfangene DAten variieren können....

Ähnliche Themen

  1. CHAR in STRING wandeln
    Von morpheuss im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.08.2011, 13:29
  2. WinCC 6 und S7 Char
    Von S7_Mich im Forum HMI
    Antworten: 5
    Letzter Beitrag: 20.10.2010, 22:49
  3. Word (hex) to 4x Char
    Von Andy082 im Forum Programmierstrategien
    Antworten: 21
    Letzter Beitrag: 08.11.2009, 14:31
  4. Datenformat Char
    Von CanYouHelpMe im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.09.2008, 09:23
  5. Vergleich auf Char
    Von lord.paddington im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 01.05.2006, 17:30

Lesezeichen

Berechtigungen

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