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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hier gibt es eine fertige Lösung: http://www.sql4automation.com. Einfach CoDeSys Bibliothek ins Projekt einfügen, Datenbankverbindung konfigurieren und los...
MfG Rudl
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
Hallo testerbb,
auf welcher Hardware bist du unterwegs?
Gruss cmoeller
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.
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
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?
Hallo B,
zum Thema "TCP-Verbindung" schau dir die "SysLibSockets.lib" näher an.
Gruss cmoeller
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
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
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
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]
Danke, werd es mir mal ansehen.
MfG
Marcel
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
Hallo matze
Kannst Du mal dein Projekt online stellen.
Habe die WagoLibTopass_01.lib unter http://www.wago.com/wagoweb/documentation/navigate/nm9mpl_d.htm gefunden, aber kein Beispiel dazu.
Danke NetFritz
http://www.wago.com/wagoweb/documentation/app_note/a3011/a301100d.pdf
Ist das die Doko ?
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
Hallo
Das währe Klasse.
Gruß NetFritz
Hallo NetFritz,
du hast die richtige lib und Doku, aber dir fehlen noch die Projektdateien. Hier ein direkter Link:
http://www.wago.com/wagoweb/documentation/app_note/a3011/a301100.zip
Dann kannst du auch die Doku abarbeiten, der Rest erklärt sich von selbst.
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
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
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
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
Hallo
Vielleicht kann man das mit einem "ESR-Baustein" von Oscat machen.
Gruß NetFritz
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:
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.
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
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
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