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

Ergebnis 1 bis 8 von 8

Thema: Rohdaten mit C# schreiben

  1. #1
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen...Ich starte nochmal einen letzten Versuch hier im Forum.Habe schon gesehen, das es eine lösung in VB gibt, da ich aber in diesem Projekt WinCC5...benutze kann ich diese Lösung nicht verwenden.Das einlesen von Rohdaten mit Hilfe einer Strucktur funktioniert einwandfrei.Ich würde nun gerne 4 EA Felder einlesen und diese Werte wieder in die SPS über Rohdaten schreiben.Irgendwie fehlt mir der Lösungsansatz..Vieleicht hat jemand von euch eine fertige Lösung.
    Zitieren Zitieren Rohdaten mit C# schreiben  

  2. #2
    Registriert seit
    08.06.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hmm also eigentlich muss du ja nur unter deiner variablenliste, eine Variable haben, die auf den Datenbaustein oder Merker(Wort) zeigt. Diese Variable kannst du in deine C-Script

    z.b. bei einem dword was du zu sps übertragen
    Befehl

    DWORD Wert_der_abgelegt_werden_soll;
    Wert_der_abgelegt_werden_soll = 0xafafafaf;
    SetTagDWord("Variable_aus_deiner_Variablenliste",Wert_der_abgelegt_werden_soll );

    und halt lesen mit
    mit GetTagDWord("variable");
    Zitieren Zitieren Daten in SPS schreiben  

  3. #3
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Zitat Zitat von tarzanhb Beitrag anzeigen
    hmm also eigentlich muss du ja nur unter deiner variablenliste, eine Variable haben, die auf den Datenbaustein oder Merker(Wort) zeigt. Diese Variable kannst du in deine C-Script

    z.b. bei einem dword was du zu sps übertragen
    Befehl

    DWORD Wert_der_abgelegt_werden_soll;
    Wert_der_abgelegt_werden_soll = 0xafafafaf;
    SetTagDWord("Variable_aus_deiner_Variablenliste",Wert_der_abgelegt_wer den_soll );

    und halt lesen mit
    mit GetTagDWord("variable"
    Vielen Dank Tarzan. Das ist mir schon klar wie ich normale Variable mit C auslesen kann... Ich brauch das ganze aber nur für den Typ "Rohdaten"Vorteil bei diesen Rohdaten ist, das ich z.b. einen DB in der SPS einlesen kann in dem z.b. 20 Real Werte drin sind. Und dies wie gesagt nur mit einer Variable.Problem bei der sache ist, das die Daten "unformatiert" eingelesen werden.Und beim schreiben muß ich die 4 Byte der Floatwerte wieder drehen... Nur wie?

  4. #4
    Registriert seit
    08.06.2006
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    achso sorry.
    hmm ich hoffe ich hab das richtig verstanden. aber wenn du deine Werte drehen willst.
    Falls es dir Hilf du kannst ja deine Werte splitten und diese dann wieder drehen. solange du nur die Bytes tauschen willst.
    Hier mal etwas was ich gemacht habe um an einzelne Bytes zu kommen aus einem DWORD, vielleicht ist es ja das in der art was du suchst (hoffe ich)

    {
    unsigned char *pChar;
    DWORD Daten;
    BYTE test;
    Daten = GetTagDWord("variable");


    pChar = (unsigned char*)&Daten;
    // jetzt als Beispiel das 2 Byte zu bekommen
    test = pChar[1];
    }
    Mit dieser Funktion hast du im pChar array deine einzelnen Bytes und kannst du so auch verdrehen wie du willst.
    Hilft das dir weiter?

    hab das jetzt nicht mit floatwerten probiert
    Geändert von tarzanhb (31.10.2006 um 21:00 Uhr)

  5. #5
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Zitat Zitat von tarzanhb Beitrag anzeigen
    achso sorry.
    hmm ich hoffe ich hab das richtig verstanden. aber wenn du deine Werte drehen willst.
    Falls es dir Hilf du kannst ja deine Werte splitten und diese dann wieder drehen. solange du nur die Bytes tauschen willst.
    Hier mal etwas was ich gemacht habe um an einzelne Bytes zu kommen aus einem DWORD, vielleicht ist es ja das in der art was du suchst (hoffe ich)

    {
    unsigned char *pChar;
    int value, i;
    DWORD Daten;
    BYTE test;
    Daten = GetTagDWord("variable"


    pChar = (unsigned char*)&Daten;
    // jetzt als Beispiel das 2 Byte zu bekommen
    test = pChar[1];
    }
    Mit dieser Funktion hast du im pChar array deine einzelnen Bytes und kannst du so auch verdrehen wie du willst.
    Hilf das dir weiter?

    hab das jetzt nicht mit floatwerten probiert
    hey toll danke.. Das könnte gehen. Werd mich gleich mal dran machen... Vielen Dank.

  6. #6
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Guten morgen zusammen... Hab irgendwie noch einen Denkfehler. Hab eine txt Datei mit dem Code und einer kleinen Beschreibung angehängt. Würde mich freuen wenn da mal einer drüber ließt. Irgendwas mach ich noch falsch...Vielen Dank
    Angehängte Dateien Angehängte Dateien

  7. #7
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    also bin ein wenig weiter. Int bzw DInt funktioniert jetzt einwandfrei.Problem sind immer noch meine float Werte. Folgendes mach ich derzeit. Ich lesen einen String ein. Mit der funktion atof wandel ich String nach Double (Gleitpunkt). Das ist mein Problem Double ist 8 Byte lang brauch aber float. Weiß jemand wie ich dies nun wandeln kann???

  8. #8
    Bender25 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hat sich erledigt...Habs geschafft *freu* Fragt mich aber nicht wie.. Muß mir jetzt erst einmal alles durchschauen, da ich nicht mehr weiß an welchen ecken ich was verdreht hab *g*... Auf alle fälle sag ich Rohdaten eine geniale Sache. Anstelle von 10 Variablen eine Rohdaten VariableVielen dank euch...

Ähnliche Themen

  1. Rohdaten Zerlegen C
    Von PBO-WE im Forum HMI
    Antworten: 9
    Letzter Beitrag: 25.02.2011, 07:41
  2. WinCC VB Rohdaten
    Von Raydien im Forum HMI
    Antworten: 9
    Letzter Beitrag: 15.10.2010, 10:57
  3. Problem Rohdaten schreiben WinCC zu Step7
    Von rene-privat65 im Forum HMI
    Antworten: 17
    Letzter Beitrag: 06.09.2010, 20:29
  4. Rohdaten in Variablen schreiben!?
    Von Deyn im Forum HMI
    Antworten: 12
    Letzter Beitrag: 22.06.2010, 16:48
  5. WinCC Rohdaten
    Von Jochen Kühner im Forum HMI
    Antworten: 0
    Letzter Beitrag: 16.07.2007, 12:58

Lesezeichen

Berechtigungen

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