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

Ergebnis 1 bis 10 von 10

Thema: Bitte um Hilfe: Libnodave C# Real-Wert in Datenbaustein von S7 schreiben

  1. #1
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Erst einmal der Hintergrund:
    Ich besitze eine Homematic CCU (Hausautomatisierung über Funk).
    Die Zustände diverser Sensoren/Aktoren kann ich mittels eines C# Programms über TCPIP auslesen (Das Originalprogramm stammt von A.Krypthul aus dem FHZ-Board -- Vielen Dank dafür) - Dieses Progamm habe ich für meine Zwecke angepasst und funktioniert - Wobei ich erwähnen sollte das ich vorher nie etwas wit C# zu tun hatte, und das Programm mit "learning by doing" angepasst habe.

    Nun möchte ich die ausgelesenen Homematic-Daten mittels Libnodave
    in einen Datenbaustein meiner S7 übertragen.

    Ich habe bereits die libnodave.net.cs in mein Programm importiert und erfolgreich eine Verbindung zu meiner S7 aufgebaut.
    (Verbindung über TCPIP mit CP343-1)
    Das auslesen von Merker-Bytes und Real-Werten (Floating) habe ich anhand der Libnodave C#-Beispiele nachvollzogen und Funktioniert.

    Mein Problem ist nun Folgendes:
    1. Blutiger Anfänger mit C# (und allen anderen Hochsprachen)-wie gesagt
    2. Ich möchte den Inhalt einer Text-Box (z.B textBox2.Text="19,70")
    in den Datenbaustein DB100.DBD0 schreiben (Wobei dieser als Real definiert ist (4Bytes).

    Ich habe es bereits mit dem dc.writeBytes befehl probiert:

    res = dc.writeBytes(libnodave.daveDB, 100, 0, 4, XXXX);

    -erhalte jedoch in meinem Datenbaustein nur unsinnige Werte.

    Ich vermute (nach durchlesen der Libnodave-Hilfe) das ich den Realwert, den ich schreiben möchte (hier mit XXXX dargestellt)in 4 Bytes zerlegen muß, und diese dann anschließend noch vertauschen muß (Low-Highbyte), bevor man diese dann an die S7 senden kann.
    - und schätzungsweise vorher noch den String von textBox2.Text
    in einen Zahlenwert wandeln muss.

    -Wobei genau das mein Problem ist, das ich ja von C# keine wirkliche Ahnung habe, ich es aber benutzen muß, da es für meine Homematic CCU nur ein Programm-Modul in c# gibt.

    Könnte jemand der C# kann mir ein Codebeispiel posten ???

    Gruß
    Michael
    Zitieren Zitieren Bitte um Hilfe: Libnodave C# Real-Wert in Datenbaustein von S7 schreiben  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Die Byteorder zwischen PC und SPS ist unterschiedlich. Wurde die Konvertierung bzw. Drehung vorgenommen?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    SPS_Michael ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Die Byteorder zwischen PC und SPS ist unterschiedlich. Wurde die Konvertierung bzw. Drehung vorgenommen?
    Nein wurde nicht - Ich weiß ja nicht wie -Mein C# - Problem !

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

    Standard

    Es gibt folgende Funktionen in libnodave:

    float toPLCfloat(float ff);
    short daveSwapIed_16(short ff);
    int daveSwapIed_32(int ff);

    Die sollten das machen.

    Hier noch ein Beitrag zum Thema: http://www.sps-forum.de/showthread.p...ighlight=float
    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:

    SPS_Michael (21.04.2009)

  6. #5
    SPS_Michael ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2007
    Beiträge
    11
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Es gibt folgende Funktionen in libnodave:

    float toPLCfloat(float ff);
    short daveSwapIed_16(short ff);
    int daveSwapIed_32(int ff);

    Die sollten das machen.

    Hier noch ein Beitrag zum Thema: http://www.sps-forum.de/showthread.p...ighlight=float

    Hallo

    Habe folgendes probiert:
    C#:

    float z= 0;
    z = libnodave.toPLCfloat(19.7f);
    dc.writeBytes(libnodave.daveDB, 1, 0, 4, BitConverter.GetBytes(z));

    Problem: im DB1 DBD0(Real) steht dann -6.353337e-023 und nicht 19.7 !

    Hat jemand eine Idee was ich falsch mache ?

    -------Nachtrag------

    jetzt funktionierts - hatte noch ein Probem in der S7 ! (Falls jemand mal das selbe Problem hat)



    Vielen Dank nochmal an Ralle fürs "auf die Sprünge helfen".


    Michael
    Geändert von SPS_Michael (21.04.2009 um 19:09 Uhr)

  7. #6
    Registriert seit
    30.01.2007
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo SPS_Michael,
    ich habe exakt das gleiche Problem mit einer SIMATIC S7-1200.
    Wenn ich mittels LibNoDave einen 'normalen' Float-Wert (z.B. 30.1) in DB1.DBD46 (als Datentyp 'Real' im DB1 angelegt) schreibe, sehe ich in der Beobachtungsliste des "TIA-Portals 10.5" (vergleichbar mit Step 7) einen sehr kleinen Wert -?.???????e-023.

    Du schreibst als Nachtrag:
    "jetzt funktionierts - hatte noch ein Probem in der S7 ! (Falls jemand mal das selbe Problem hat)"

    WELCHES PROBLEM HATTEST DU IN DER SPS ???

    Kannst Du mir da mal "auf die Sprünge helfen" ?

    Roland

  8. #7
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hey leute, wo bekomme ich das Libnodave bzw. die datei, die ich in c# einbinden kann? und wo die beispiele?
    Zitieren Zitieren woher libnodave  

  9. #8
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Hey leute, wo bekomme ich das Libnodave bzw. die datei, die ich in c# einbinden kann? und wo die beispiele?
    versuchs mal da http://sourceforge.net/projects/libnodave/

    Beispiele sind da auch dabei, ansonsten gibts hier im Forum auch einige Codeauschnitte (Suchfunktion nutzen)
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  10. #9
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Hey leute, wo bekomme ich das Libnodave bzw. die datei, die ich in c# einbinden kann? und wo die beispiele?
    Libnodave bekommst du hier:
    http://libnodave.sourceforge.net/

    Beispiele sind dabei!

    Kannst aber auch

    S7Net Probieren:
    http://s7net.codeplex.com/ (auch Beispiele dabei)

    oder

    SiemensPLCToolBoxLib:
    http://siemensplctoolboxlib.codeplex.com/ (Auch viele Beispiele dabei)
    (nutzt libnodave)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  11. #10
    Registriert seit
    05.06.2011
    Ort
    Dortmund
    Beiträge
    14
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Bin neu hier im Forum und möchte gerne diese spannende Thema wieder aufgreifen.

    Haben eine Homematic CCU1 und eine S7-300 mir CP Baugruppe.
    S7 programmieren kann ich gut aber an der Kopplung beider Systeme mit C# hapert es.

    Zudem würde mich mal interessieren welches Programm SPS_Michael meint zum Auslesen der CCU.

    Oder gibt es da heute schon ein All-In-One programm?

    Gruß Thomas

Ähnliche Themen

  1. REAL-Wert in Word-Wert konvertieren
    Von Mohrchen im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.07.2011, 13:02
  2. Wert in Datenbaustein schreiben
    Von Papa_Bene im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 22.02.2011, 12:08
  3. Antworten: 3
    Letzter Beitrag: 28.11.2007, 13:11
  4. Bitte Verständnishilfe bei REAL
    Von rene im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 10.07.2007, 17:18
  5. Real Wert speichern
    Von Azubi im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 05.11.2006, 20:21

Lesezeichen

Berechtigungen

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