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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 42

Thema: S7 <> PC über Ethernet

  1. #1
    Registriert seit
    17.06.2003
    Beiträge
    42
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    für eine Projektarbeit haben wir uns gedacht, daß wie eine S7-Steuerung an ein PC über Ethernet verbinden.

    Am PC wollten wir dann, die Prozessdaten mit einem PHP-Skript in eine SQL-Datenbank schreiben, und diese auch als Html-Seite im Intranet zur Verfügung stellen.


    Hat einer sowas ähnliches schon realisiert ?
    SPS und Ethernet CP haben wir, was brauchen wir aber PC-seitig ?

    Danke
    Joker
    Zitieren Zitieren S7 <> PC über Ethernet  

  2. #2
    Registriert seit
    13.02.2005
    Beiträge
    28
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

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

    Standard

    Oder libnodave:
    http://libnodave.sf.net

  4. #4
    Registriert seit
    17.06.2003
    Beiträge
    42
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    für unsere Schulprojekt haben wir uns für Libnodave entschieden.

    Nun stehe ich noch vor ein paar Verständnisprobleme.

    Werde die einzelnen Programme hintereinander mit entsprechender Parametrierung aufgerufen?

    Oder muss ich ein C-Programm schreiben, in welchenm die
    C-Quelldateien eingebunden werden ?

    Unser Ziel ist es, aus einem Datenbaustein über Ethernet ein Bereich von 64 Integerwerte auszulesen, um diese dann in eine Datei zu schreiben.


    Um jede Hilfe wäre ich Dankbar.
    Joker
    Zitieren Zitieren Libnodave  

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

    Standard

    Zitat Zitat von joker76
    Hallo,

    für unsere Schulprojekt haben wir uns für Libnodave entschieden.
    Am Anfang mancher Bedienungsanleitung wird dem Benutzer su seiner Wahl gratuliert...
    Nun stehe ich noch vor ein paar Verständnisprobleme.

    Werde die einzelnen Programme hintereinander mit entsprechender Parametrierung aufgerufen?
    Die verschiedenen Programme sind dazu gedacht, verschiedene Übertragungsverfahren (MPI; PPI, Ethernet mit CP, Ethernet mit IBH Link) zu testen.
    Da ihr einen CP habt, ist testISO_TCP das richtige für euch.
    Bezüglich der Parameter: Ruft es ohne jedes Argument auf einer Kommandozeile (DOS-Box) auf. Es sagt dann, was es versteht.
    Die beiliegenden Programme sind nur zum Test gedacht und sind nicht wirklich nützlich.
    Sie haben zum Beispiel keine Parameter, um ihnen gezielt mitzutelen, was sie aus der SPS lesen sollen.
    Libnodave an sich ist eine Bibliothek. Das heißt, sie enthält ein paar spezielle Funktionen zum Einbau in eigene Programme.
    Oder muss ich ein C-Programm schreiben, in welchenm die
    C-Quelldateien eingebunden werden ?
    Du mußt keins von beiden. Statt C kannst du auch Pascal benutzen. Von den Dateien mußt du die header Dateien nodave.h und setport.h in dein Programm einbinden, wenn du in C programmierst.
    Bei Pascal (oder Delphi) must du nodave.pas benutzen (mit uses nodave.pas).
    Beim linken mußt du angeben, daß die Bibliothek libnodave als dynamische Bibliothek eingebunden werden soll. Auf windows ist dazu die Datei libnodave.lib erforderlich, die mitgeliefert wird.
    Dies führt dazu, daß dein Programm später beim start Windows (oder Linux?) auffordert, die Bibliothek libnodave zu laden, worauf ihre Funktionen deinem Programm zur Verfügung stehen.
    Unser Ziel ist es, aus einem Datenbaustein über Ethernet ein Bereich von 64 Integerwerte auszulesen, um diese dann in eine Datei zu schreiben.
    Wenn du dir den code in testISO_TCP.c anschaust, siehst du vielleicht, daß ein entsprechendes Programm durch einige Änderungen daraus erzeugt werden kann:
    1. testISO_TCP liest ja schon 64 bytes von DB1. (Zeile 314 ff.). Was, wieviel und woher es liest wird durch die Parameter von daveReadBytes bestimmt.
    daveReadBytes(dc, area, DBnummer, start, anzahl, puffer). Die Nummer des DBs müßt ihr anpassen. Weiterhin sind 64 Integer 128 bytes. Ihr müßt also die Anzahl auf 128 setzen.
    Wenn Ihr nich ab Datenbyte 0 beginnen wollt, müßt ihr auch die Startadresse ändern.
    Schließlich druckt das Testprogramm nur die ersten 2 und den letzten Wert aus.
    Ihr könnt in einer Schleife 64 mal daveGetWord(dc) aufrufen. Das holt jedes mal den nächsten Wert als Wort aus dem internen Puffer. Diesen Wert könnt ihr ausdrucken.

    Von dem Testprogramm könnt ihr danach alles streichen, was nicht nötig ist. Das meiste ist für euch nicht nötig.

    Das entstandene Programm schreibt euch nun die 64 Werte hintereinander auf den Bildschirm. Um in eine Datei zu schreiben, ruft ihr nun einfach.
    meinprog >meinedatei auf.
    Statt auf den Bildschirm zu schreiben, schreibt es nun in die neu erstellte Datei meinedatei.

    Auch in PHP kann man das ganz leicht einbinden: PHP kennt einen Befehl (habe den Namen gerade nicht parat), um ein externes Programm auszuführen. Die Ausgabe dieses Programmes steht danach in einem PHP-array und kann in die HTML-Seite eingebaut werden.
    Zitieren Zitieren Re: Libnodave  

  6. #6
    Registriert seit
    17.06.2003
    Beiträge
    42
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hi,

    ich bräuchte noch einmal Starthilfe,

    ich habe nun unter Visual Studio die C-Quellen importiert.
    nodave.h und setport.h als Header-Dateien und testiso_TCP.

    Nun bekomme ich beim Kompilieren ein Fehlermeldung :

    -> fatal error C1189: #Fehler : Fill in what you need for your OS or API.<-

    Welche Anweisung muss ich den jetzt bearbeiten ?
    Ich bekomme irgendwie nicht weiter ....
    Joker

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

    Standard

    Zitat Zitat von joker76
    Hi,

    ich habe nun unter Visual Studio die C-Quellen importiert.
    nodave.h und setport.h als Header-Dateien und testiso_TCP.
    nodave.h brauchst du immer, setport.h für serielle Verbindungen, openSocket.h für Ethernet Verbindungen. Du brauchst also openSocket,h
    Nun bekomme ich beim Kompilieren ein Fehlermeldung :
    -> fatal error C1189: #Fehler : Fill in what you need for your OS or API.<-
    Du must die Compilerdirektiven BCCWIiN und LITTLEENDIAN definieren, z.B. so:

    #define BCCWIN
    #define LITTLEENDIAN
    #include nodave.h
    #include openSocket.h

    Für verschiedene Betriebssysteme enthält nodave.h kleine Teile in mehreren Varianten.
    Diese Direktiven dienen dazu, die Variante auszuwählen.

  8. #8
    Registriert seit
    17.06.2003
    Beiträge
    42
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    ich habe die Define-Anweisungen in meinem Programm ergänzt und bekomme folgende Fehlermeldung.

    error C2006: #include: Dateinamen erwartet, aber 'identifier' gefunden

    Es sieht so aus, als ob die Header-Datei nodave.h einen Dateinamen erwartet.

    Wie kann ich den ein Dateinamen als Argument einer Header-Datei mitgeben ?
    Joker

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

    Standard

    Sorry, es muß heißen:

    #define BCCWIN
    #define LITTLEENDIAN
    #include "nodave.h"
    #include "openSocket.h"

    Ich habe zwar die Anführungszeichen vergessen, aber generell solltet ihr die Syntax von #include kennen, bevor ihr euch an so ein Projekt macht.
    Schon in einem einfachen Programm wie HelloWorld.c (könnt ihr sicher in fast jedem Lehrbuch und im Internet finden) wird ein #include vorkommen:

    #include <stdio.h>
    Hier steht der Name nich in Anführungszeichen, sondern in spitzen Klammern:
    Der Unterschied:
    Bei #include <datei.h> wird datei.h in den vom Compiler-Hersteller vorgegebenen Verzeichnissen gesucht, bei #include "datei.h" im momentanen Arbeitsverzeichnis.

    Ich möchte euch nochmal auffordern, zunächst einmal das Testprogramm testISO_TCP.c als Vorlage zu nehmen. Dort habt ihr für eigentlich alles ein Vorbild.
    Allerdings fehlen die beiden Zeilen:
    #define BCCWIN
    #define LITTLEENDIAN
    Sie sind dadurch ersetzt, daß im Makefile.Mak dem Compiler die Definitionen:
    -DBCCWIN -DLITTLEENDIAN
    mit der Kommandozeile übergeben werden. Beide Wege gehen. Der mit der Kommandozeile ist aber einfacher, wenn die Definitionen nicht immer gelten: Man braucht den Quelltext nicht zu ändern, sondern nur eine andere Kommandozeile.
    So können die Programme unverändert unter Linux übersetzt werden, wobei in de Kommandozeile steht: -DLINUX -DLITTLEENDIAN

    Habt ihr keinen Betreuer für die Projektarbeit, der euch so was erklärt? Nicht, daß es mir zuviel wäre, aber ich fürchte, wenn ihr jede Woche eine Frage dieser Art habt, wird die Sache ca. 2 Jahre dauern...

  10. #10
    Registriert seit
    17.06.2003
    Beiträge
    42
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    das mit den Include Einweisungen hatte ich schon versucht in der geklammerten Form zu schreiben. Nur bekommen ich dann ein anderen Fehler.

    Nee, aber mein Problem ist, wir haben 1,5 Jahre halbherzig "C" gelernt und sind dann auf Java umgestiegen, so daß ich ein bischen auf C- raus bin.

    Desweiteren hat mich mein "Betreuer" am Dienstag im Stich gelassen, und meinte ich sollte in der Hilfsdatei suchen.

    Unser Hauptmerkmal liegt bei unseren Projekt auf Folgenden Punkt:

    1. Wir wollen beweisen das mit Open-Source Software eine Kommunikation
    zu einer Siemens-Steuerung möglich ist, ohne auf teuere Lizenzsoftware
    zurückgreifen zu müssen.

    2. Wir wollen beweisen das Open-Source Software Plattform unabhängig arbeiten kann, und nicht wie die teure Lizenzsoftware hauptsächlich für
    Windows geschrieben ist.

    3. Wollen wir eine Wartungssoftware schreiben, die auf "Lampp" oder "Wampp" basiert und auf einen handelsüblichen Rechner läuft.

    4. Die Wartungssoftware soll den Betreiber ermöglichen, alle Informationen einer Anlage (Ventile etc.) auf Verschleiss (in unseren Fall Schaltspiele unsere Ventile) zu entnehmen.



    Desweiteren wollte ich mich bei dir noch ganz herzlich für die präzisen und schnellen Anworten bedanken.
    Solche Grundlegenden Anworten hätte ich mir eigentlich von meinem Betreuer gewünscht.
    Joker

Ähnliche Themen

  1. S7 über Ethernet an MP
    Von Nadya im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.04.2011, 08:03
  2. Antworten: 0
    Letzter Beitrag: 08.01.2010, 16:34
  3. Antworten: 33
    Letzter Beitrag: 10.02.2009, 21:14
  4. Antworten: 2
    Letzter Beitrag: 25.09.2008, 10:34
  5. DMX über Ethernet
    Von maxi im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 18.06.2006, 16:29

Lesezeichen

Berechtigungen

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