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

Ergebnis 1 bis 4 von 4

Thema: Libnodave mit C# in DB schreiben

  1. #1
    Registriert seit
    31.07.2008
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    habe mal wieder ein kleines Problem, hab bereits die suche genutzt aber keine direkte antwort gefunden die mir hilft.

    Eigentlich ganz simple:

    Ich hab einen DB2 in dem will ich DB2.DBX0.0 und DB2.DBX1.0 mal auf True mal auf False im C# Programm setzen.
    Benutze eine Simatic s7 300 station.

    habe
    bool vke0 = false;
    bool vke1 = true;

    dann gibt es ja
    public int writeBits(int area, int DBnumber, int start, int len, byte[] buffer);
    bzw.
    public int writeBytes(int area, int DBnumber, int start, int len, byte[] buffer);
    bzw.
    public int writeManyBytes(int area, int DBnumber, int start, int len, byte[] buffer);

    bei den read methoden ist mir alles einleuchtend, da gibts dann meine standard get funktionen.
    aber bei den write bin ich grad verwirrt, such hier irgendwie set funktionen find aber nix

    Die doku zu libnodave hab ich bereits angeschaut .
    Muss ich mir wirklich ein buffer generieren wenn ich ein einzelnes bit auf true oder fals setzen will???
    Oder gibts da noch ne ganz andere möglichkeit
    Kann mir da jemand mal ein beispiel posten, wie ich das mach?

    danke!
    Zitieren Zitieren Libnodave mit C# in DB schreiben  

  2. #2
    Maddin* ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2008
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ach und testMPI hab ich mir auch schon angeschaut,

    da machen die ja

    a=libnodave.daveSwapIed_32(a+1);
    dc.writeBytes(libnodave.daveFlags,0,0,4,BitConverter.GetBytes(a));
    b=libnodave.daveSwapIed_32(b+2);
    dc.writeBytes(libnodave.daveFlags,0,4,4,BitConverter.GetBytes(b));
    c=libnodave.daveSwapIed_32(c+3);
    dc.writeBytes(libnodave.daveFlags,0,8,4,BitConverter.GetBytes(c));
    d=libnodave.toPLCfloat(d+1.1f);
    dc.writeBytes(libnodave.daveFlags,0,12,4,BitConverter.GetBytes(d));

    ich will das ja in einen DB schreiben, da abrauch ich ja statt
    dc.writeBytes(libnodave.daveFlags,0,12,4,BitConverter.GetBytes(d));
    das hier
    dc.writeBytes(libnodave.daveDB,0,12,4,BitConverter.GetBytes(d));

    komm da grad noch net ganz klar

    das hab ich grade auch versucht


    hs_1 = libnodave.daveSwapIed_32(hs_value);
    dc.writeBytes(libnodave.daveDB, 2, 0, 4, BitConverter.GetBytes(hs_1));

    beobacht die variablen der sps und nix ändert sich..
    Geändert von Maddin* (14.11.2013 um 13:03 Uhr)

  3. #3
    Maddin* ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2008
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    kann geschlossen werden, ich hab Stunden mit verbracht und hab ein syntax fehler übersehen...

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Maddin* Beitrag anzeigen
    kann geschlossen werden, ich hab Stunden mit verbracht und hab ein syntax fehler übersehen...
    Syntaxfehler sollte eigentlich der Compiler anmeckern.
    Ich habe deinen Beitrag wohl gelesen, aber ich wußte auch nicht was, da wohl passiert sein könnte.
    Zwar würde
    dc.writeBytes(libnodave.daveDB,0,12,4,BitConverter.GetBytes(d));
    einen DB 0 adressieren, den es nicht gibt,
    aber
    hs_1 = libnodave.daveSwapIed_32(hs_value);
    dc.writeBytes(libnodave.daveDB, 2, 0, 4, BitConverter.GetBytes(hs_1));
    das hattest du schon geändert.

    Ich kann nur noch einen Tip geben, der nicht nur für Libnodave, sondern für jeden Neueinstieg in die Arbeit mit einer Bibliothek, Programmiersprache, Betriebssystem etc. nützlich ist:
    - Funktion der Testprogramme oder Beispiele ausprobieren. Das gibt einen ersten Einblick und zeigt, daß es mit der eigenen Hardware läuft.
    - Zunächst die Beispiele ohne jede Änderung übersetzen. Das garantiert, daß der Werkzeugkasten komplett ist und funktioniert (Compiler, Linker, vorausgesetzte Bibliotheken, header files, etc.).
    - Dann ein Beispiel kopieren und versuchen, mit möglichst wenigen Änderungen am Text die gewünschte Funktionalität zu erreichen (in diesem Fall: Schreiben in DB statt in Merker).
    - Wenn dann ein Syntax error auftritt, mit dem Original vergleichen. Ein Programm wie diff (Windiff) findet die Unterschiede im Quelltext.

Ähnliche Themen

  1. Zu lange Verarbeitungszeit beim schreiben mit Libnodave
    Von dolo280 im Forum Hochsprachen - OPC
    Antworten: 6
    Letzter Beitrag: 09.02.2011, 09:12
  2. mit libnodave in db schreiben
    Von mike97714 im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 30.06.2009, 08:33
  3. Array von Integerwerten mit LibNoDave schreiben
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 26.12.2008, 09:33
  4. 2 Bits schreiben mit LibNoDave
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 23.11.2008, 18:00
  5. problem mit schreiben von libnodave zu eine cp315-2dp/pd
    Von fldrgn im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 10.04.2008, 14:03

Lesezeichen

Berechtigungen

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