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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: Libnodave und Visual Basic 2008

  1. #1
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Helfer,

    Ich verwende das VB Beispielprogramm für VBA von Libnodave.
    Nachdem das in Excel bei mir alles Funktioniert hat, möchte ich gerne Libnodave in Verbindung mit VB 2008 Express probieren.

    Ich erstelle ein neues win Projekt und füge ganz stupide den Quelltext des VBA Beispiels in die Form1.vb ein. Start des BeispielCodes:

    Public
    Class Form1
    '
    ' Part of Libnodave, a free communication libray for Siemens S7 200/300/400 via
    ' the MPI adapter 6ES7 972-0CA22-0XAC


    Das ist nun natürlich bestimmt besonders blöde... Ist ja VBA Code... Aber ich kriege es nicht selbst geändert... Ich kann die Cells ja durch Textboxes ersetzen usw. Aber bei den Variablen mit $ hört es bei mir schon auf, da ich nicht weis, was alles benötigt wird...

    Kann mir bitte jemand erklären was ich genau aus dem Beispiel weglassen kann und ändern muss, damit ich da mit Visual Basic 2008 eine Verbindung bekomme...

    Könnte mir vielleicht sogar jemand ein VB-Projekt hochladen, das irgendetwas ausführt, damit ich lernen kann?

    EDIT Aufgabenstellung konkret:

    Beispiel:

    Datenbaustein 1

    Nr Name Typ Wert
    0 Test1 Int 33
    2 Test2 Byte 34
    3 Test3 DINT 5433

    Datenbaustein 2

    Nr Name Typ Wert
    0 Test1 Byte 445
    1 Test2 Byte 34
    2 Test3 DINT 5433

    Nun soll mit dem gewünschten VB Programm der Inhalt der Datenbausteine geladen, geändert, gespeichert und zurückgeladen werden können.
    Es könnten noch weitere Datenbausteine vorhanden sein mit unterschiedlicher Struktur.
    Die Struktur der DBs ist vorher bekannt. Jedoch sollte das VB-Programm nicht mehr geändert werden.

    Welche Möglichkeiten gibt es so etwas zu realisieren?
    Geändert von Hocheck (31.03.2010 um 18:55 Uhr)
    Zitieren Zitieren Libnodave und Visual Basic 2008  

  2. #2
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo Hocheck,

    ich setze LibNoDave zusammen mit VB2005 ein. Der Code dürfte aber mit VB2008 Express auch funktionieren. Ich setze nicht den Wrapper (libnodave.net.dll) ein, der hier im Forum beim Einsatz von LibNoDave zusammen mit .Net empfohlen wird.

    An dem alten Modul12.bas, der für Excel und VB6.0 gedacht ist, musst Du einige kleinere Änderungen vornehmen. Die wesentliche Änderung ist die Umstellung vom Datentyp Long (VB6.0) auf Integer (VB.Net), da der alte 32-Bit-Ganzzahldatentyp Long bei VB.Net "Integer" heißt.

    Für den MPI2-Verbindungsauf- und -abbau setze ich folgende Anweisungen ein:

    Globale Variablen:
    Dim ph As Integer 'Informationen zum Kommunikationskanal
    Dim di As Integer 'Informationen zum Interface
    Dim dc As Integer 'Informationen zur CPU
    Dim res As Integer = 0

    Verbindungsaufbau:
    Code:
    Dim baud AsString, port AsString
    Dim Rack AsString, Slot AsString
    port = cbxCOM.Text
    baud = cbxSpeed.Text
    ph = setPort(port, baud, Asc("O"))
    If (ph > 0) Then
    di = daveNewInterface(ph, ph, "IF1", 0, daveProtoMPI2, daveSpeed187k)
    Call daveSetTimeout(di, 1000000)
    res = daveInitAdapter(di)
    If res = 0 Then
    Rack = 0
    Slot = 0
    dc = daveNewConnection(di, 2, Rack, Slot)
    res = daveConnectPLC(dc)
    EndIf
    Verbindungsabbau:
    Code:
    If dc <> 0 Then
    res = daveDisconnectPLC(dc)
    Call daveFree(dc)
    dc = 0
    EndIf
    If di <> 0 Then
    res = daveDisconnectAdapter(di)
    Call daveFree(di)
    di = 0
    EndIf
    If ph <> 0 Then
    res = closePort(ph)
    ph = 0
    EndIf

    Gruß
    Earny

  3. Folgender Benutzer sagt Danke zu Earny für den nützlichen Beitrag:

    Hocheck (01.04.2010)

  4. #3
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Earny,

    Vielen Dank für deine ausführliche Hilfe!
    Durch stöbern im Forum bin ich auf folgendem Beitrag von dir aufmerksam geworden: http://www.sps-forum.de/showthread.php?t=24391

    Du hast in diesem Beitrag ein VB-Projekt zur Verfügung gestellt. Erstmal große Klasse von dir, dass du das offen legst! Ich habe mir dies mal angeschaut und das beeinhaltet doch genau das was ich benötige, oder?

    Ich möchte gerne dein Programm mal mit einer CPU 315 2 PN/DP über Ethernet TCP/IP (crossoverkabel) mit meinem PC laufen lassen. Das ist doch möglich? Einfach die IP der CPU im VB-Programm eintragen, oder?

    Habe nur leider wegen des Studiums nicht immer die Möglichkeit eine "freie" SPS zu ergattern...

    Solltest du die Zeit für mich haben, so habe ich da eine weitere Sache, die mir Probleme bereitet:

    Programmverwaltung

    Ich möchte gerne in einem VB-Prog. wie deinem es ermöglichen über ein Formular anzugeben, welchen Datenbaustein und welchen Bereich (also wie eine Art Any-Pointer) geladen/gespeichert werden soll. Die aus dem DB geladenen Daten (INT;DINT;REAL alle unterschiedlich angeordnet) sollten angezeigt und auf dem PC gespeichert werden können (Excel vielleicht?!). Ziel ist es also ein Abbild eines DBs auf dem PC zu schaffen, das frei editierbar ist. Nach einer Änderung der Daten sollten diese wieder in den DB zurückgeladen werden können.

    Nach meiner Recherche bisher ist das obige so wohl nicht umsetzbar, wenn INT, DINT Und REAL Daten "bunt" gemischt sind oder?

    Falls das nicht geht würde ich gerne eine Möglichkeit schaffen mir einen "Datenbaustein" als Formular im VB-Programm zu generieren und anschließend nach dieser Struktur die Daten mit Libnodave zu laden und zu verwalten.

    Was hältst du davon? Ist das überhaupt möglich? Ist so etwas für einen Newbe wie mich umzusetzen? Ich habe die Motivation dazu, mir fehlt leider nur jemand der mir Hilfestellung geben kann
    Geändert von Hocheck (31.03.2010 um 17:30 Uhr)

  5. #4
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hallo Kollege,

    die Funktionalität um Daten zu Lesen bzw. schreiben hast du ja mit LibNoDave, umsonst.
    Das ganze drum herum in VB zu machen(dein Vorhaben) muss man sich überlegen und programmieren, aber so zum Spass ist das nicht.
    Vor allem die ganze Dynamik..hm.

    Und du möchtest doch sicher nicht deinem Prof. Sachen zeigen, die andere
    Leute entwickelt haben..

    Gruss: V.
    ______________________________________
    relax, take it easy
    Zitieren Zitieren VB und SPS  

  6. #5
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Kollege,

    du hast recht, im Nachhinein betrachtet war die Aussage ziemlich blöde
    Ich will ja was damit lernen und nicht irgendwo gut darstehen...

    Dennoch wäre ich um jede Hilfe, egal in welcher Form dankbar

    die Funktionalität um Daten zu Lesen bzw. schreiben hast du ja mit LibNoDave, umsonst.
    Das ganze drum herum in VB zu machen(dein Vorhaben) muss man sich überlegen und programmieren, aber so zum Spass ist das nicht.
    Vor allem die ganze Dynamik..hm.
    Ja das mit VB beschäftigt mich schon ziemlich lange, damit ich das Ziel erreichen kann.. Denke ständig dran, wie es am besten gehen könnte

    hätte da schon einen Vorschlag...

  7. #6
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    ja, ok.

    Ich möchte gerne in einem VB-Prog. wie deinem es ermöglichen über ein Formular anzugeben, welchen Datenbaustein und welchen Bereich (also wie eine Art Any-Pointer) geladen/gespeichert werden soll. Die aus dem DB geladenen Daten (INT;DINT;REAL alle unterschiedlich angeordnet) sollten angezeigt und auf dem PC gespeichert werden können (Excel vielleicht?!)
    Möchtest du etwa, man sagt in deiner Anwendung: hole die Daten
    aus dem DBxyz(gemischte Typen), 200 Bytes, und dann sollen die Daten richtig dargestellt werden, je nach Typ? Ohne zu wissen, wie der DB wirklich aufgebaut ist? Das glaube ich nicht wirklich..


    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Vb  

  8. Folgender Benutzer sagt Danke zu vladi für den nützlichen Beitrag:

    Hocheck (01.04.2010)

  9. #7
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich komme nicht klar, weil ich keinen Ansatz finde...
    Ich brauche einfach Hilfe dabei

    Das Problem:
    Die Daten können bunt gemixt sein 1. INT, 2.DINT, 3.Real, 4.Byte...usw Wie der Datenbaustein aufgebaut ist- das zu wissen setze ich nun voraus. Trotzdem weis das ja mein VB-Programm nicht- ich weis es wie die DBs dann aussehen, aber wie bringe ich das meinem Programm bei?

    Wenn nun die Daten in VB geladen, bearbeitet und zurückgeladen werden sollen weis ich folgendes nicht:
    1. Woher weis ich vorher welchen Datentyp ich lade, wenn mir Funktionen wie:
    daveGetU8
    daveGetU16
    daveGetU32
    ...
    zur Verfügung stehen. Ohne vorher in VB eine Struktur zu hinterlegen wie das Programm aussieht soll kann ich das doch garnicht oder?!

    Ich komme einfach nicht weiter....


    Vorschlag zur Umsetzung:

    Als Form dient das Bild im Anhang.

    Beschreibung der Funktion:

    Nach der Eingabe der DB NR und der Anzahl der Dateien (hier: 3) wird über die Generieren Taste ein Abbild eines Datenbausteins erstellt. Diese Daten bilden den Programmkopf.
    Nach dem Drücken der Generieren Taste werden (hier:3) Daten angezeigt und können parametriert werden. Durch Drücken der Taste "Aus SPS Laden" werden die Daten aus dem DB in die Textfelder "Wert" gefüllt.
    Zusätzlich wird die Länge des Datenblocks ermittelt und ergibt die Variable: Summe.

    So stelle ich mir vor dass der Ladegang funktionieren könnte...

    Aber ich kann den Code nicht umsetzen
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Hocheck (31.03.2010 um 18:35 Uhr)

  10. #8
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo vladi,

    Code:
    Möchtest du etwa, man sagt in deiner Anwendung: hole die Daten
    aus dem DBxyz(gemischte Typen), 200 Bytes, und dann sollen die Daten richtig dargestellt werden, je nach Typ? Ohne zu wissen, wie der DB wirklich aufgebaut ist? Das glaube ich nicht wirklich..
    Ja im Grunde möchte ich genau das, bis auf der Ausnahme, dass ich weis wie der Datenbaustein aussieht, also welche Daten und Struktur er hat.

    Nur genau das möchte ich nicht Fest und Statisch a la:
    daveGetU16
    daveGetU32
    machen, sondern so dass ich im VB Programm festlegen kann wie der DB aussieht und demnach Daten lade, darstelle und speichern kann...

    Ich hoffe du verstehst was ich meine..


    Beispiel:

    Datenbaustein 1

    Nr Name Typ Wert
    0 Test1 Int 33
    2 Test2 Byte 34
    3 Test3 DINT 5433

    Datenbaustein 2

    Nr Name Typ Wert
    0 Test1 Byte 445
    1 Test2 Byte 34
    2 Test3 DINT 5433

    Nun soll mit dem gewünschten VB Programm der Inhalt der Datenbausteine geladen, geändert, gespeichert und zurückgeladen werden können.
    Es könnten noch weitere Datenbausteine vorhanden sein mit unterschiedlicher Struktur.
    Die Struktur der DBs ist vorher bekannt. Jedoch sollte das VB-Programm nicht mehr geändert werden.
    Wie können die Daten mit Libnodave geladen und auch geändert werden?
    Geändert von Hocheck (31.03.2010 um 18:53 Uhr)

  11. #9
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    ich kann dir schon eine Idee geben:

    In VB hast du eine Form, links ist ein TreeView Baum mit ein paar Felder, so:
    -DB Typen
    --- Byte
    --- Integer
    --- DINT
    --- Real
    --- Bool
    Rechts eine freie Fläche, wo man in einem neuen TreeView Baum sich Elemente per DragUndDrop von links ziehen kann, z.B.:
    -DB Vorlage
    ---Integer
    ---Integer
    ---Real
    ---Real usw.
    so kann man sich die DB Struktur schnel zusammenbauen, die dann noch mit einer Nummer abspeichrebar, für später evtl., und je nach den Einträge in diesem Container holt das Programm die Daten aus der SPS. Die Darstellung erfolgt auch dynamisch, je nach dem, was man eingegeben hat..

    So in der Art wäre eine gute Sache. Leicht zu programmieren ist es nicht, aber auch nicht sooo schwer, wenn man die entspr. VB Elemente kennt.
    Im Internet gibt es sehr viele VB Beispiele, Foren usw.

    Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Vb  

  12. Folgender Benutzer sagt Danke zu vladi für den nützlichen Beitrag:

    Hocheck (01.04.2010)

  13. #10
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen vielen Dank Vladi für den Tipp

    Ich werde mir das mal anschauen und mich da einarbeiten!

    Ich hoffe du wirst mir weiter helfen, falls ich wieder einmal nicht weiter komme!!

    Ich melde mich sofort, sobald ich ein Ergebnis erziehlt habe...

Ähnliche Themen

  1. Zugriff auf Twincat per ADS und Visual Basic 2008
    Von Ralle im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 30.01.2012, 17:47
  2. S7 - 300 verbindung mit Visual Basic 2008
    Von Magon im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.06.2010, 15:06
  3. Libnodave and Visual Studio 2008
    Von Rick im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.10.2009, 22:47
  4. Probleme mit Libnodave und Visual Basic
    Von Donnerkeil im Forum Hochsprachen - OPC
    Antworten: 11
    Letzter Beitrag: 03.04.2006, 21:50
  5. Probleme mit Libnodave und Visual Basic
    Von Donnerkeil im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 09.03.2006, 15:19

Lesezeichen

Berechtigungen

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