Daten in MySQL-Datenbank einfügen

testerbb
2009-04-28
2010-10-13
1 2 > >> (Page 1 of 2)
  • testerbb - 2009-04-28

    Hallo zusammen

    Ich bin mit CoDeSys am experimentieren und möchte daten, die in einem Array gespeichert in eine MySQL Datenbank einfügen. Es sollte über eine Socket möglich sein, aber wie?? Im Handbuch habe ich nichts über solche Verbindungen gelesen. Zwar steht eine ENI-Projektdatenbank zur Verfügung, doch das ist nicht, was ich möchte.

    Hat jemand ein Codebeispiel für mein Problem?? Ich wäre euch sehr dankbar

    B

     
  • cmoeller - 2009-04-28

    Hallo testerbb,

    auf welcher Hardware bist du unterwegs?

    Gruss cmoeller

     
  • testerbb - 2009-04-30

    Die Hardware ist ein IPC mit Windows als OS. Der Rechner läuft mit einem Apache webserver, habe php und mysql installiert. Die Hardware auf Steuerungsseite ist ein BL20 von Turck.

     
  • cmoeller - 2009-04-30

    Hallo B,

    der Trick wird sein eine TCP-Verbindung auf den HTTP-Port(80) herzustellen und ein HTTP-GET oder HTTP-POST-Telegramm mit den Daten die in die Datenbank sollen an ein PHP-Skipt zu senden.

    Das eigentliche schreiben der Daten in die Datenbank ist dann Sache des PHP-Skipts.

    Für die Realisierung sind Kenntnisse von TCP, HTTP und PHP hilfreich.

    Gruss cmoeller

     
  • testerbb - 2009-04-30

    Danke cmoeller für deine Tips.

    Ich habe nur einen keinen Einwand: post und get Anfragen haben eine begrenzte Maximallänge und werden nach x Zeichen nicht mehr berücksichtig.

    Die Anfragen müssen also öfters getätigt werden in der Hoffnung dass der Server dabei nicht überlastet wird mit Anfragen und so die Daten verarbeitet werden können.

    PHP und HTML ist kein problem, aber wie mache ich das konkret mit der TCP-Verbindung?

     
  • cmoeller - 2009-05-04

    Hallo B,

    zum Thema "TCP-Verbindung" schau dir die "SysLibSockets.lib" näher an.

    Gruss cmoeller

     
  • Matze001 - 2009-06-12

    Hallo,

    geht das auch anders herrum? Kann ich auch Daten aus ner Datenbank in die SPS laden? Ich habe die Hardware Wago 750-841.

    Danke

    MfG

    Marcel

     
  • cmoeller - 2009-06-16

    Hallo Marcel,

    ja, das geht auch in der anderen Richtung.

    Um Daten aus der Datenbank zu lesen ist ein PHP-Skript zu erstellen, das wenn es aufgerufen wird die SQL-Abfrage ausführt und die Daten in der HTTP-RESPONSE an die SPS zurücksendet.

    Auf dem 750-841 benötigst du noch ein Programm, dass die Daten aus dem Antworttelegramm herrausfiltert.

    Gruss cmoeller

     
  • Matze001 - 2009-06-16

    Hallo,

    danke für die Antwort.

    Fangen wir erstmal klein an. Wie bekomme ich die Daten von der SPS in die Datenbank? Ich habe von seiten der Wago die Ansatzprobleme.

    Das PHP Script stellt an und für sich kein Problem dar, nur ist mir noch nicht klar wie genau ich die Daten übertrage, gibt es da Beispiele?

    MfG

    Marcel

     
  • cmoeller - 2009-06-16

    Hallo Marcel,

    vieleicht hilft beiliegende Library und Beispiel weiter.

    Es handelt sich um eine Vorabversion von WAGO.

    Mit der Library kannst du beliebige HTTP-GET-Requests an beliebige Server schicken und die Antwort auswerten.

    Gruss cmoeller

    WagoLibHttp.zip [41.01 KiB]

     
  • Matze001 - 2009-06-16

    Danke, werd es mir mal ansehen.

    MfG

    Marcel

     
  • Matze001 - 2009-07-14

    Ich habe es mit der WagoLibTopass_01.lib hinbekommen. Läuft wunderbar.

    Es gibt auch das entsprechende Beispiel dazu bei der Verwendung von xampp.

    Finde es grad nciht, aber es ist bei wago zu finden.

    MfG

    Marcel

     
  • Matze001 - 2009-07-17

    Hallo,

    ja das ist die passende Doku.

    Mein Projekt direkt kann ich nicht online stellen,

    aber ich kann eine eigene programmierte PHP Seite einstellen mit der ich die Daten in eine eigene Datenbank ablege, wenn du willst kann ich dazu eine kleine Dokumentation schreiben.

    Das dauert aber ein wenig.

    MfG

    Marcel

     
  • NetFritz - 2009-07-17

    Hallo

    Zitat:
    ich kann eine eigene programmierte PHP Seite einstellen mit der ich
    die Daten in eine eigene Datenbank ablege, wenn du willst kann ich dazu
    eine kleine Dokumentation schreiben.

    Das währe Klasse.

    Gruß NetFritz

     
  • NetFritz - 2009-07-18

    Hallo

    Vielen Dank.

    Mit diesen Infos wirds wohl gehen.

    Brauche aber noch einige Zeit das ich dazu komme.

    mySql und PHP läuft auf meinen XUbuntu Rechner.

    Gruß NetFritz

     
  • Matze001 - 2009-07-18

    Hallo,

    nun kann ich mich auch zurückmelden.

    Zum Glück wurden schon alle wichtigen Infos genannt.

    Entschuldigung noch einmal für das späte melden.

    MfG

    Marcel

     
  • NetFritz - 2009-07-19

    Hallo

    Ich möchte gerne Ereignisgesteuert den Zustand in eine mySQL-DB ablegen.

    Das wird aber wohl mit der "WagoLibTopass_01.lib" nicht gehen ?.

    Gruß NetFritz

     
  • Matze001 - 2009-07-19

    Warum nicht?

    Sie hat nen Enable-Eingang.

    Setz die Zeit auf z.B. 1 Sekunde, und beschalte den Enableeingang ein bisschen länger, dann solltest du das gewünschte Ergebnis erzielen.

    MfG

    Marcel

     
  • NetFritz - 2009-07-19

    Hallo

    Vielleicht kann man das mit einem "ESR-Baustein" von Oscat machen.

    Gruß NetFritz

     
  • Patrick Kühne - 2009-07-20

    Hallo,

    ich kenne den ESR- Baustein nicht. Aber ich finde die Topass.lib von Wago klasse, weil diese nur minimale Programmierkenntnisse voraussetzt -> wie für mich gemacht

    Also wenn man die Daten ereignisgesteuert ablegen möchte kann man das auch wie folgt machen:

    “xEnable” (z.B. start) und “xResponseDataAvailable” (z.B. antwort) am „TOPASS_ClientBasic“ je eine Variable zuweisen

    die “tCycleTime” auf 0s setzen

    im Netzwerk vor den Topass- Clienten dann ein FB in dem folgendes steht:

    FUNCTION_BLOCK neu
    VAR_INPUT
       ereignis: BOOL;
    END_VAR
    VAR
       start_trig: R_TRIG;
    END_VAR
    VAR_IN_OUT
       antwort: BOOL;
    END_VAR
    VAR_OUTPUT
       start: BOOL;
    END_VAR
    
    start_trig (CLK:= ereignis);
    IF start_trig.Q THEN
    start := 1;
    END_IF;
    IF antwort = 1 THEN
    antwort:= 0;
    start:=0;
    END_IF;
    

    dann natürlich im Programm (wo der Topass- Client ist) die Variablen eintragen (oder in CFC einfach verbinden)

    in der MySQL- Datenbank dann eine Variable in der Tabelle „setpoints“ setzen (ich glaube sonst wird keine Antwort gesendet, bin mir aber nicht 100%ig sicher)

    wenn du das Wago bsp nutzt noch in „ProcessResponseData“ die „xDataAvailable“ Rücksetzung rausnehmen

    Natürlich alles ohne Garantie, bin kein Programmierer. Aber bei mir funktioniert es soweit ganz gut.

     
  • Matze001 - 2009-07-20

    Schön das es so klappt!

    Wenn jemand ein Beispiel braucht wie er auf der Serverseite in eine andere Datenbank und Tabelle außer Messwerte schreibt kann er sich mal melden, ich kann dann mal mein script abtippen.

    MfG

    Marcel

     
  • cmoeller - 2010-10-01

    Hallo,

    auf die eigentliche Startfrage, ob man mit einem WAGO-Ethernet-Controller auch direkt auf eine MySQL-Datenbank zugreifen kann, gibt es etwas neues:

    Auf der WAGO Homepage findet sich unter "http://www.wago.com/wagoweb/documentation/app_note/a3020/a302000d_f.htm" ein Anwendungshinweis, Bibliothek und Beispiele zum Thema.

    Gruss cmoeller

     
  • rudl - 2010-10-06

    Hallo

    Hier gibt es eine fertige Lösung: http://www.sql4automation.com. Einfach CoDeSys Bibliothek ins Projekt einfügen, Datenbankverbindung konfigurieren und los...

    MfG Rudl

     
1 2 > >> (Page 1 of 2)

Log in to post a comment.