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

Ergebnis 1 bis 7 von 7

Thema: LibNoDave die x.te Getting Started

  1. #1
    Registriert seit
    07.06.2007
    Beiträge
    93
    Danke
    7
    Erhielt 3 Danke für 3 Beiträge

    Rotes Gesicht


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    nachdem die Suchseite hier schon Panik bekommt, wenn ich mit der Maus in die Nähe komme, muss ich jetzt doch mal schreiben.

    Inzwischen bin ich der Lösung meines Problem schon sehr nahe. Wie so viele möchte ich aus einen DB aus einer 314er via Ethernet auslesen und in Excel ablegen.
    Ich bin jetzt bei LibNoDave mit dem Modul12 für Excel und kann auch alle Makros ohne Fehler ausführen. Nur wo gebe ich im Initialisierungsteil die IP zu meinem CP ein und wie lese ich meinen DB50 aus? Die InitTable habe ich ausgeführt und die IP eingetragen sowie im initialize Abschnitt die MPI auskommentiert und die TCP rein genommen, aber es will irgendwie nicht

    Viele Grüße
    steinche
    Zitieren Zitieren LibNoDave die x.te Getting Started  

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

    Standard

    Zitat Zitat von steinche Beitrag anzeigen
    Hallo Zusammen,

    nachdem die Suchseite hier schon Panik bekommt, wenn ich mit der Maus in die Nähe komme, muss ich jetzt doch mal schreiben.

    Inzwischen bin ich der Lösung meines Problem schon sehr nahe. Wie so viele möchte ich aus einen DB aus einer 314er via Ethernet auslesen und in Excel ablegen.
    Ich bin jetzt bei LibNoDave mit dem Modul12 für Excel und kann auch alle Makros ohne Fehler ausführen.
    Und was kommt bei dem "ohne Fehler ausführen" heraus?

    Nur wo gebe ich im Initialisierungsteil die IP zu meinem CP ein
    Du schreibst doch, du hast InitTable ausgeführt. Das schreibt *irgendeine* IP-Adresse in die Tabelle um dir zu zeigen, wo die hin soll und du ersetzt sie durch die richtige.
    ...und wie lese ich meinen DB50 aus?
    Da must du das Makro readFromPLC ändern:
    Im Aufruf von daveReadBytes
    1. daveFlags durch daveDB ersetzen
    2. die 0 direkt hinter daveFlags durch 50 ersetzen
    3. die 16 durch die Anzahl der Bytes, die dein DB lang ist oder die du auslesen willst.
    Die InitTable habe ich ausgeführt und die IP eingetragen sowie im initialize Abschnitt die MPI auskommentiert und die TCP rein genommen, aber es will irgendwie nicht
    Viele Grüße
    steinche
    Wie soll ich mir das " irgendwie nicht " vorstellen?
    Tut es was? tut es nix? Hast du readme und FAQ und so gelesen? Wenn ja, warum probierst du es nicht mit der debug Ausgabe? Wie das geht:
    Zitat Zitat von FAQ.de.txt
    Q: Kannst du mir helfen?
    A: Bevor du fragst, probiere die Testprogramme wie oben beschrieben. Wenn die bei dir nicht funktionieren, schicke mir die Ausgabe mit der Debug-Option, z.B.:
    testMPI -d COM1 >debugout.txt
    Wenn sie funktionieren, deine Anwendung aber nicht,
    probier mal:
    Fuege die Zeile "daveSetDebug(daveDebugAll)" vor allen anderen Aufrufen von Libnodave in deinen Code ein.
    Dann versuche: deineAnwendung >debugout.txt
    Fuer die Leute, die mit Maeusen gross wurden und die Kommandozeile nicht mehr kennen: Das funktioniert sogar mit MS-Excel. Erzeuge eine neue Tabelle, importiere das VBA_Modul,
    - nimm das "rem" weg vor "call daveSetDebug(daveDebugAll)" am Anfang von sub initialize,
    - Speichere das Arbeitsblatt.
    - Starte dann von der Kommandozeile (Dos-Box, Ausfuehren/cmd):
    excel testsheet >debugout.txt
    Alle Debug-Ausgaben gelangen in die Datei debugout.txt.
    Wenn meine Zeit knapp wird, schmeisse ich Mails ohne Debug-Ausgabe weg!
    Funktioniert testiso_tcp ?
    Wenn ja, funktioniert das Lesen der Merker in das Excel-Blatt?
    Die Beispiele lesen Merker, weil es die in jeder S7 gibt. Wenn ich noch ein Beispiel für DB50 beilege, meckern 100 Leute, daß es nicht funktioniert. Und 99 von denen haben einen keinen DB 50 in ihrem Programm.
    Es ist leider so, daß man, um deine Aufgabe zu lösen, etwas SPS, etwas Programmieren und auch noch etwas EXCEL können muß.
    Ich bin inzwischen der Meinung, daß viele Leute, die mich wegen Libnodave anschreiben, nie im Leben Prodave oder Accon AG-Link oder ein anderes Produkt kaufen würden, weil sie selbst Zweifel haben, daß sie damit etwas anfangen können.
    Da Libnodave aber nichts kostet, kann man es ja einfach mal probieren...
    Mein Support müßte zehnmal so teuer sein, wie der jedes kommerziellen Anbieters, weil ich SPS-Leuten Programmierkurse, Programmieren SPS-Kenntnisse und Praktikanten beides vermitteln soll...
    Und dann schreibt heute ein Ochse auf Deutsch in die englische Mailingliste von Libnodave (es gibt auch eine deutsche), daß er es gut fände, wenn der komplette Sourcecode der .dll dabei wäre. Das ist er von Anfang an!!!!!!
    Ich fände gut wenn:
    - der Mann seinen Compiler beherrschte
    - und wenn nicht, daß er auf die Makefiles vertrauen würde und wenigstens die Pfade anpassen könnte
    - Alle mitgelieferten Textdateien lesen würde
    - Die Finger davon lassen würde, eine fertige .dll selbst compilieren zu wollen.
    Ich habe den Sourcecode gerne rausgegeben, aber nicht, um mir die Meckerei anzuhören...
    Das mußte mal gesagt werden.

  3. #3
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen

    Wenn ja, funktioniert das Lesen der Merker in das Excel-Blatt?
    Die Beispiele lesen Merker, weil es die in jeder S7 gibt. Wenn ich noch ein Beispiel für DB50 beilege, meckern 100 Leute, daß es nicht funktioniert. Und 99 von denen haben einen keinen DB 50 in ihrem Programm.
    ...
    Ich habe den Sourcecode gerne rausgegeben, aber nicht, um mir die Meckerei anzuhören...
    Das mußte mal gesagt werden.

    Zottel, ich verstehe deinen Frust - und das auch noch zum Sonnabendabend - irrg!



    Gruß

  4. #4
    Registriert seit
    07.06.2007
    Beiträge
    93
    Danke
    7
    Erhielt 3 Danke für 3 Beiträge

    Standard

    @Zottel

    erst mal Danke für Deine - vor allem schnelle - Antwort, auch wenn ich nicht verstehe, warum Du Dich so aufregst! Ersten haben ich mich durch die Hilfe gewühlt, die FAQs gelesen und zudem kenne ich nur zu gut das Problem, wenn jeden Tag die gleiche Frage 10 mal kommt. Du kannst mir also glaube, dass ich nicht direkt nach dem Download des Programm diesen Post geschrieben haben. Aber zurück zum Thema.

    Die Verbindung zum CP steht. Nach der Ausführung von testISO_TCP.exe -d 192.168.0.43 kommt folgendes.

    Code:
    openSocketw.c: enter OpenSocket
    openSocketw.c: 1
    openSocketw.c: 2 6600
    openSocketw.c: peer:192.168.0.43=721463488
    openSocketw.c: 6
    openSocketw.c: 7
    openSocketw.c: socket is 1960
    openSocketw.c: setsockopt No error 0
    openSocketw.c: 8
    openSocketw.c: bind Socket error: No error
    openSocketw.c: Connected to host: 192.168.0.43
    send packet: :
    0:0x03,0x00,0x00,0x16,0x11,0xE0,0x00,0x00,0x00,0x01,0x00,0xC1,0x02,0x01,0x00,0xC
    2,
    10:0x02,0x01,0x02,0xC0,0x01,0x09,
    readISOpacket: 22 bytes read, 22 needed
    readISOpacket: packet:
    0:0x03,0x00,0x00,0x16,0x11,0xD0,0x00,0x01,0x44,0x31,0x00,0xC0,0x01,0x09,0xC1,0x0
    2,
    10:0x01,0x00,0xC2,0x02,0x01,0x02,
    IF1 daveConnectPLC() step 1. got packet: :
    0:0x03,0x00,0x00,0x16,0x11,0xD0,0x00,0x01,0x44,0x31,0x00,0xC0,0x01,0x09,0xC1,0x0
    2,
    10:0x01,0x00,0xC2,0x02,0x01,0x02,
    PDU header:
    0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,
    plen: 8 dlen: 0
    Parameter:
    0:0xF0,0x00,0x00,0x01,0x00,0x01,0x03,0xC0,
    _daveExchange PDU number: 65535
    IF1 enter _daveExchangeTCP
    send packet: :
    0:0x03,0x00,0x00,0x19,0x02,0xF0,0x80,0x32,0x01,0x00,0x00,0xFF,0xFF,0x00,0x08,0x0
    0,
    10:0x00,0xF0,0x00,0x00,0x01,0x00,0x01,0x03,0xC0,
    readISOpacket: 27 bytes read, 27 needed
    readISOpacket: packet:
    0:0x03,0x00,0x00,0x1B,0x02,0xF0,0x80,0x32,0x03,0x00,0x00,0xFF,0xFF,0x00,0x08,0x0
    0,
    10:0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0x00,0x01,0x00,0xF0,
    IF1 _daveExchangeTCP res from read 27
    result of exchange: 0
    PDU header:
    0:0x32,0x03,0x00,0x00,0xFF,0xFF,0x00,0x08,0x00,0x00,0x00,0x00,
    plen: 8 dlen: 0
    Parameter:
    0:0xF0,0x00,0x00,0x01,0x00,0x01,0x00,0xF0,
    error: ok
    
    *** Partner offered PDU length: 240 used limit 240
    
    Connected.
    Trying to read 64 bytes (16 dwords) from data block 1.
    Press return to continue.
    PDU header:
    0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,
    plen: 14 dlen: 0
    Parameter:
    0:0x04,0x01,0x12,0x0A,0x10,0x02,0x00,0x40,0x00,0x01,0x84,0x00,0x00,0x00,
    _daveExchange PDU number: 65536
    IF1 enter _daveExchangeTCP
    send packet: :
    0:0x03,0x00,0x00,0x1F,0x02,0xF0,0x80,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x0E,0x0
    0,
    10:0x00,0x04,0x01,0x12,0x0A,0x10,0x02,0x00,0x40,0x00,0x01,0x84,0x00,0x00,0x00,
    readISOpacket: 89 bytes read, 89 needed
    readISOpacket: packet:
    0:0x03,0x00,0x00,0x59,0x02,0xF0,0x80,0x32,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x0
    0,
    10:0x44,0x00,0x00,0x04,0x01,0xFF,0x04,0x02,0x00,0x07,0xB7,0x0A,0xE4,0x00,0x1A,0x
    5E,
    20:0x00,0x02,0xF9,0xB2,0x29,0x02,0xFA,0x48,0x6C,0x07,0x33,0x87,0xCE,0x00,0x11,0x
    19,
    30:0x05,0x00,0x1E,0x9B,0x96,0x00,0x46,0xA1,0xE7,0x00,0x73,0x0C,0x02,0x00,0x05,0x
    2C,
    40:0xC4,0x00,0x72,0xD1,0x09,0x00,0xB6,0x85,0x9D,0x00,0x72,0xDB,0xDE,0x00,0x72,0x
    BD,
    50:0x80,0x00,0x72,0xB7,0xE8,0x00,0x73,0xCA,0xEC,
    IF1 _daveExchangeTCP res from read 89
    result of exchange: 0
    PDU header:
    0:0x32,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x44,0x00,0x00,
    plen: 2 dlen: 68
    Parameter:
    0:0x04,0x01,
    Data     :
    0:0xFF,0x04,0x02,0x00,0x07,0xB7,0x0A,0xE4,0x00,0x1A,0x5E,0x00,0x02,0xF9,0xB2,0x2
    9,
    10:0x02,0xFA,0x48,0x6C,0x07,0x33,0x87,0xCE,0x00,0x11,0x19,0x05,0x00,0x1E,0x9B,0x
    96,
    20:0x00,0x46,0xA1,0xE7,0x00,0x73,0x0C,0x02,0x00,0x05,0x2C,0xC4,0x00,0x72,0xD1,0x
    09,
    30:0x00,0xB6,0x85,0x9D,0x00,0x72,0xDB,0xDE,0x00,0x72,0xBD,0x80,0x00,0x72,0xB7,0x
    E8,
    40:0x00,0x73,0xCA,0xEC,
    Data hdr :
    0:0xFF,0x04,0x02,0x00,
    Data     :
    0:0x07,0xB7,0x0A,0xE4,0x00,0x1A,0x5E,0x00,0x02,0xF9,0xB2,0x29,0x02,0xFA,0x48,0x6
    C,
    10:0x07,0x33,0x87,0xCE,0x00,0x11,0x19,0x05,0x00,0x1E,0x9B,0x96,0x00,0x46,0xA1,0x
    E7,
    20:0x00,0x73,0x0C,0x02,0x00,0x05,0x2C,0xC4,0x00,0x72,0xD1,0x09,0x00,0xB6,0x85,0x
    9D,
    30:0x00,0x72,0xDB,0xDE,0x00,0x72,0xBD,0x80,0x00,0x72,0xB7,0xE8,0x00,0x73,0xCA,0x
    EC,
    error: ok
    _daveSetupReceivedPDU() returned: 0=ok
    _daveTestReadResult() returned: 0=ok
    DB1:DW0: 1975
    DB1:DW1: 2788
    ...
    DB1:DW32: 51948
    Trying to read 16 bytes from FW0.
    Press return to continue.
    PDU header:
    0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,
    plen: 14 dlen: 0
    Parameter:
    0:0x04,0x01,0x12,0x0A,0x10,0x02,0x00,0x10,0x00,0x00,0x83,0x00,0x00,0x00,
    _daveExchange PDU number: 65537
    IF1 enter _daveExchangeTCP
    send packet: :
    0:0x03,0x00,0x00,0x1F,0x02,0xF0,0x80,0x32,0x01,0x00,0x00,0x00,0x01,0x00,0x0E,0x0
    0,
    10:0x00,0x04,0x01,0x12,0x0A,0x10,0x02,0x00,0x10,0x00,0x00,0x83,0x00,0x00,0x00,
    readISOpacket: 41 bytes read, 41 needed
    readISOpacket: packet:
    0:0x03,0x00,0x00,0x29,0x02,0xF0,0x80,0x32,0x03,0x00,0x00,0x00,0x01,0x00,0x02,0x0
    0,
    10:0x14,0x00,0x00,0x04,0x01,0xFF,0x04,0x00,0x80,0x02,0xBF,0x00,0x00,0x00,0x00,0x
    00,
    20:0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    IF1 _daveExchangeTCP res from read 41
    result of exchange: 0
    PDU header:
    0:0x32,0x03,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x14,0x00,0x00,
    plen: 2 dlen: 20
    Parameter:
    0:0x04,0x01,
    Data     :
    0:0xFF,0x04,0x00,0x80,0x02,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
    0,
    10:0x00,0x00,0x00,0x00,
    Data hdr :
    0:0xFF,0x04,0x00,0x80,
    Data     :
    0:0x02,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
    0,
    error: ok
    _daveSetupReceivedPDU() returned: 0=ok
    _daveTestReadResult() returned: 0=ok
    FD0: 46071808
    FD4: 0
    FD8: 0
    FD12: 0.000000
    Finished.
    Beim Ausführen der Excel Makros kommt folgendes;
    initTable:
    D2 Serial Port E2 COM1
    D3 Baudarate: E3 38000
    D4 Party E4 0
    D6 MPI.... E6 2
    D7 IP Adr. E7 192.168.0.43
    D8 Accessp. E8 /S7ONLINE

    In der readme.vb steht auszugsweise:
    Code:
    - Execute Macro initTable. This will put some values into the spreadsheet.
    - Adjust these values to your needs.
    - If you want to use a communication protocol other than MPI, adjust some lines in sub initialize
      as explained there.
    Nach dem Importieren der .bas Datei in Excel folgende Zeile geändert:
    Private Declare Function internalDaveGetBlockInfo Lib "libnodave.dll" Alias "daveGetBlockInfo" (ByVal dc As Long, ByRef buffer As Byte, ByVal type As Long, ByVal number As Long) As Long
    das rote 'e' entfernt.

    Danach das Makro InitTable ausgeführt und
    im Modul12 folgende "Einstellungen" gemacht:
    Abschnitt iniTable -> IP zu 192.168.0.43
    Abschnitt initialize:
    'di = daveNewInterface(ph, ph, "IF1", 0, daveProtoMPI,
    di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)

    Bei dem Modul readFromPLC:
    B1: Testing PLC read
    A2: port handle B2: -1
    B12: Finished
    Bereich D2:E8 wie oben

    Bei den anderen Makros kommt bis auf B1 die gleiche Ausgabe.

    Grüße
    steinche
    Geändert von steinche (04.11.2007 um 00:41 Uhr)

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

    Standard

    Aufregen tat ich mich wegen dem anderen Ochsen, wegen der Summe meiner Erfahrungen und weil du dich unklar ausdrückst.
    Die Ausgabe von testISO_TCP ist in Ordnung, du hast einen CP oder so und der steckt am Netzwerk...
    In den Ausgaben von VB/Excel ist
    A2: port handle B2: -1
    der Punkt, glaube ich.
    Das Makro ist für MPI und öffnet eine serielle Schnittstelle mittels setPort(). Du brauchst aber ein socket für Ethernet/TCP:

    Original:
    ph = setPort(port, baud$, Asc(Left$(parity$, 1)))
    ' Alternatives:
    Rem ph = openSocket(102, peer$) ' for ISO over TCP
    Rem ph = openSocket(1099, peer$)' for IBH NetLink
    Rem ph = openS7online(acspnt$) ' to use Siemes libraries for transport

    Mach daraus:
    rem ph = setPort(port, baud$, Asc(Left$(parity$, 1)))
    ' Alternatives:
    ph = openSocket(102, peer$) ' for ISO over TCP
    Rem ph = openSocket(1099, peer$)' for IBH NetLink
    Rem ph = openS7online(acspnt$) ' to use Siemes libraries for transport

  6. #6
    Registriert seit
    07.06.2007
    Beiträge
    93
    Danke
    7
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    Aufregen tat ich mich wegen dem anderen Ochsen, wegen der Summe meiner Erfahrungen und weil du dich unklar ausdrückst.
    Sorry, dass ich Dich so angeschnauzt habe, ich komme mit "irgendwie" auch selten weiter

    Das Makro ist für MPI und öffnet eine serielle Schnittstelle mittels setPort(). Du brauchst aber ein socket für Ethernet/TCP.
    So sieht das schon viiiel besser aus

    Hatte nur für di TCP ausgewählt und es bei ph vergessen.
    Das Makro readOrderCode liefert mir auch die Bestellnummer ohne Mucken. Bei
    readFromPLC ist porthandle: 2720
    result from iniAdapter: 0
    result from connectPLC: 0
    resuslt from readBytes: 33280

    error unter Access point meldet ok

    Jetzt bitte nicht hauen, aber wo sehe ich den Inhalt der ausgelesenen Merkerbytes.
    Mir reicht auch schon ein Stichwort für die Suche oder FAQ wo ich weiter suchen kann.

    Schönen Sonntag noch!
    steinche
    Geändert von steinche (04.11.2007 um 11:20 Uhr)

  7. #7
    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 steinche Beitrag anzeigen
    Sorry, dass ich Dich so angeschnauzt habe, ich komme mit "irgendwie" auch selten weiter

    So sieht das schon viiiel besser aus

    Hatte nur für di TCP ausgewählt und es bei ph vergessen.
    Das Makro readOrderCode liefert mir auch die Bestellnummer ohne Mucken. Bei
    readFromPLC ist porthandle: 2720
    result from iniAdapter: 0
    result from connectPLC: 0
    resuslt from readBytes: 33280

    error unter Access point meldet ok

    Jetzt bitte nicht hauen, aber wo sehe ich den Inhalt der ausgelesenen Merkerbytes.
    Mir reicht auch schon ein Stichwort für die Suche oder FAQ wo ich weiter suchen kann.

    Schönen Sonntag noch!
    steinche
    Ich denke mal, readBytes hat gar nicht funktioniert. Soweit ich mich erinnere, sollte der Rückgabecode 0 sein.
    33280=0x8200 hex, Die bekannten codes liefert Libnodave auch als Klartext mittels daveStrerror, aber dieser ist schlicht nicht bekannt
    Die Verbindung funktioniert aber einwandfrei, weil die Bestellnummer in Ordnung war. Da gibt es nicht mehr so viele Möglichkeiten...
    Du solltest nicht zuviele Byte auf einmal lesen: Dein CP hat 240 Byte als maximale PDU-Länge angeboten, damit kannst du pro Aufruf 222Bytes lesen und 218 schreiben, wenn ich es noch richtig weiß...

Ähnliche Themen

  1. Transline 2000 HMI Pro Getting Started
    Von PhilippGleich im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.01.2011, 09:32
  2. Getting started S7-300
    Von blue dun im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.01.2010, 22:48
  3. WinCC C-Aktion (Getting Started)
    Von Nordschreck im Forum HMI
    Antworten: 2
    Letzter Beitrag: 26.10.2009, 06:51
  4. Step 5 V7.23 get started >Anfängerfragen<
    Von spsholle im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 20.03.2008, 00:04
  5. Antworten: 3
    Letzter Beitrag: 16.05.2006, 07:56

Lesezeichen

Berechtigungen

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