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

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

Thema: Bit in der SPS setzen mit VB.net 2008 und libnodave

  1. #1
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe gestern eine kleine Visualisierung in VB.net 2008 programmiert.
    Mit libnodave kann ich wunderbar Daten aus einem DB auslesen.

    Jetzt möchte ich aber auch ein Bit in der SPS setzen, wenn ich einen Button in der Visu drücke.
    Wie man libnodave dafür einsetzt, steht ja hier: http://www.sps-forum.de/showpost.php...72&postcount=6

    Ich habe ein Problem, wie ich das in VB.net lösen kann.
    Man muss doch beim Klick auf den Button eine "1" in einen Sendepuffer schreiben, die ich dann mittels daveWriteBytes zur SPS an die richtige Adresse schicke?!
    Muss der Sendepuffer danach wieder gelöscht werden?
    Beispielsweise möchte ich mit Klick auf einen Button in die Adresse DB51.DBX3.2 eine "1" reinschreiben.
    Leider weiß ich nicht, wie ich das in VB.net lösen kann.

    Kann mir da mal bitte jemand unter die Arme greifen?
    Möchte noch anmerken, dass ich erst seit gestern engeren Kontakt mit VB.net und libnodave habe.

    Vielen Dank,
    poppycock
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.
    Zitieren Zitieren Bit in der SPS setzen mit VB.net 2008 und libnodave  

  2. #2
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Um nur ein Bit in der SPS zu setzen würde ich die Funktion daveWriteBits nehmen, weil du damit einfch nur das eine Bit setzten/rücksetzen kannst und nicht das ganze Byte überschreibst.

    Den Sendepuffer musst du nicht löschen, sondern einfach beim nächsten Mal das überschreiben, was du dann wieder an die SPS sendest!

  3. #3
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard

    Hallo!

    Zitat Zitat von Human Beitrag anzeigen
    Um nur ein Bit in der SPS zu setzen würde ich die Funktion daveWriteBits nehmen, weil du damit einfch nur das eine Bit setzten/rücksetzen kannst und nicht das ganze Byte überschreibst.
    Das klingt logisch, aber in der Doku habe ich nichts von daveWriteBits gefunden.
    Gibt es eine Codezeile in VB.net, die diese Funktion verdeutlicht?

    So geht das bestimmt nicht?! Habe gerade keine Möglichkeit zu testen...
    Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    dc.daveWriteBits(libnodave.daveDB, 51, 3, 2, puffer)
    End Sub
    Gruß,
    poppycock
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  4. #4
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    daveWriteBits(dc,libnodave.daveDB, 51, 3, 2, puffer)
    End Sub
    So dürfte das eigentlich gehen, dann schreibst du ab DB51.DBX 0.3 2 Bit!

  5. #5
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard

    Danke, habe jetzt die Möglichkeit das zu testen.

    Hab nun aber ein neues Problem:
    Wie deklariere ich "puffer"?

    Mit
    Code:
    Dim puffer(8) As Byte
    funktioniert das nicht.

    Ich will ja auch nur ein Bit setzen.
    Schreib ich stattdessen
    Code:
    Dim puffer As Boolean = True
    kommt die Fehlermeldung "Der Wert vom Typ "Boolean" kann nicht in '1-dimensionales Array von Byte' konvertiert werden."

    Hast du eine Idee?
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  6. #6
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Da musst du auch einen Pointer übergeben... such mal nach Pointer und VB.net, dann wirst du fündig!

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

    Zitat Zitat von Human Beitrag anzeigen
    Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    daveWriteBits(dc,libnodave.daveDB, 51, 3, 2, puffer)
    End Sub
    So dürfte das eigentlich gehen, dann schreibst du ab DB51.DBX 0.3 2 Bit!
    Das mag die SPS nicht. Bits können nur einzeln geschrieben werden. Oder löst das libnodave auf?
    Rainer Hönle
    DELTA LOGIC GmbH

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

  8. #8
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard

    Zitat Zitat von Human Beitrag anzeigen
    Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    daveWriteBits(dc,libnodave.daveDB, 51, 3, 2, puffer)
    End Sub
    So dürfte das eigentlich gehen, dann schreibst du ab DB51.DBX 0.3 2 Bit!
    Ich hatte gedacht, dass man mit der 3 das Byte und mit der 2 das Bit angibt.
    Ich will nur ein Bit setzen, also wäre
    Code:
    daveWriteBits(dc,libnodave.daveDB, 51, 3, 1, puffer)
    wohl richtig.

    Ich bin noch nicht wegen den Pointern fündig geworden. Wenn ich aber ein * mit angebe, wird die Fehlermeldung "Der *-Operator ist für die Typen '1-dimensionales Array von Byte' und 'Object' nicht definiert." ausgegeben.

    Bitte um Hilfe, danke!
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  9. #9
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard

    Also, eine 0 kommt in der SPS an!
    Jetzt weiß ich wenigstens, dass ich die korrekte Adresse beschreibe und die Kommunikations "irgendwie" funktioniert.

    Aber wie schreibe ich eine 1 in den Datenbaustein?
    Mit
    Code:
    Dim puffer(8) As Byte
    und anschließend
    Code:
    puffer = 1
    daveWriteBits(dc,libnodave.daveDB, 51, 3, 1, puffer)
    funktioniert nicht, da mir die 1 als Integer angezeigt wird. Puffer kann nur als Byte behandelt werden.

    Pointer gibt es in VB.net nicht mehr direkt.
    Ich steh aufm Schlauch und bitte um Hilfe!
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  10. #10
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So geht's:

    Code:
    Dim puffer() As Byte = {"1"}
    Code:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            dc.writeBits(libnodave.daveDB, 51, 3, 1, puffer)
    End Sub
    Vielleicht hilft es ja dem ein oder anderen, der auch dieses Problem hatte?!
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.
    Zitieren Zitieren ES FUNKTIONIERT! *froi*  

Ähnliche Themen

  1. Libnodave und Visual Basic 2008
    Von Hocheck im Forum Hochsprachen - OPC
    Antworten: 27
    Letzter Beitrag: 22.12.2010, 21:39
  2. Libnodave and Visual Studio 2008
    Von Rick im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.10.2009, 22:47
  3. Antworten: 20
    Letzter Beitrag: 14.06.2009, 00:39
  4. Antworten: 14
    Letzter Beitrag: 04.02.2009, 11:05
  5. Libnodave + Excel einzelnes Bit (setzen bzw. abfragen)
    Von Otto im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 21.12.2006, 17:24

Lesezeichen

Berechtigungen

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