ILC 150 ETH Webserver

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mobi,

ich habe die Steuerung über einen WLAN-Router, der als WLAN Accesspoint und in diesem Fall als Switch dient, mit dem PC über Netzwerkkabel verbunden.
Werde es morgen nochmal mit direkter Verbindung probieren, mal schauen, was dann passiert.

Nochmal vielen Dank für die Bereitstellung der Testdatei.

Schöne Grüße
Daniel
 
Auch von mir eine Frage für Vaninger:
Ich habe ja extra ein Log Memo eingebaut. Was steht da?

Wenn ich 100ms auswähle habe ich nur ca. 300ms. Schaut mal ob es bei euch auch so ist.
Ist bei mir so ca. zwischen 99-107ms Real. Also in Ordnung!

So eine Absicherung der SetVar habe ich auch drinnen.
Das mit 'True' == 1 und 'False' == 0 habe ich noch nicht drinnen.

Ich habe eine Funktion bei der ich eine Typenlose Variable übergeben kann. Aus dem Type vom PDD.csv wandelt die Funktion dies dann richtig in einen String um:
Code:
  // convert value to string
  if Pos('BOOL', VarType) > 0 then
  begin
    vValue := AnsiString(BoolToStr(Boolean(NewValue)));
  end
  else
  if Pos('STRING', VarType) > 0 then
  begin
    vValue := AnsiString(NewValue);
  end
  else
  if Pos('REAL', VarType) > 0 then
  begin
    vValue := AnsiString(FormatFloat('0.000000', Extended(NewValue)));
    // correct country settings
    vValue  := StringReplace(vValue, ',', '.', [rfReplaceAll]);
  end;

Habe jetzt aber noch nicht alle Typen drinnen. Integer, Word, Dword z.B. fehlt noch...
Meine App ist Delphi 2010.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm seltsam, naja egal, Hauptsache es funktioniert.
Hab jetzt noch Word mitreinbracht. Man kann entweder den Wert als boolean vorgeben, also 2#11001111, als Hex 16#CF oder als Dezimal einfach den Wert, also 207.
Ich hab jetzt BOOL, INT, DINT, WORD und STRING(80).
Und meins ist immernoch kleiner als deine Exe Portisch.;)
 

Anhänge

  • ILC PDD Request.zip
    428,6 KB · Aufrufe: 18
Taja, dass liegt an Delphi. Mit einigen Aufwand könnte ich es kleiner bekommen.
Aber wer schaut da heute bei Flatrate Internet und Terrabyte Platten noch drauf...:cool:
 
Heey auf meinem Vista-Laptop hab ich 100ms! Sch*** XP.

Ich schau noch drauf, ein Laptop hat schon 2-3 Jahre auf dem Buckel.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

habe beide Programme probiert, leider geht immer noch keines. Wahrscheinlich passt da bei mir irgendwas nicht, muss ich nochmal schauen.
Die Fehlermeldung schaut übrigens folgend aus:

Fehler2.jpg

Schöne Grüße
Daniel
 

Anhänge

  • Fehler.jpg
    Fehler.jpg
    193,7 KB · Aufrufe: 14
Und bei meinem Programm? Geht Request und wenn nein, kommt dann ne Fehlermeldung?
 
Hallo Mobi,

dein Programm läuft zumindest, da die Real Update Time immer aktualisiert wird. Leider wird aber kein Value angezeigt...

Schöne Grüße
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du mal nebenbei Wireshark mitlaufenlassen, um zu gucken ob überhaupt was kommt? Am besten ist dann auch, wenn der Debugmode von PC Worx aus ist und der Kontrolldialog geschlossen. Dann kannst du am besten die Pakete auseinanderhalten.
 
Hier nochmal ein Update. Jetzt mit Memo. Und kleine Bugs noch bereinigt.

@Portisch: Schau mal was im Memo steht.
 

Anhänge

  • ILC PDD Request.zip
    449,1 KB · Aufrufe: 19
Hallo,

habe gerade das Firmwareupdate 3.90 auf meinem Controller aufgespielt, jetzt funktionieren die beiden Programme samt Request. Die Updaterate liegt bei ca. 100ms.
Näheres werden die nächsten Tests zeigen...

Vielen Dank für euere Hilfe!

Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab jetzt noch den <body> geändert unzwar so:
Code:
<body><version>1.0</version><client>ILC_PDD_Request</client><client_stamp>1325062961602012</client_stamp>
Client ist ILC_PDD_Request, zur eindeutigen Feststellung von wem der Request kommt.
Und 1325062961602012, von wann der Request ist und welche Response zu welchem Request gehört.
Also 13 Uhr, 25 Minuten, 6 Sekunden, 296 Millisek., 160 Tag des Jahres 2012.
 

Anhänge

  • ILC PDD Request.zip
    449,1 KB · Aufrufe: 35
Zuletzt bearbeitet:
habe gerade das Firmwareupdate 3.90 auf meinem Controller aufgespielt, jetzt funktionieren die beiden Programme samt Request.
Ok, damit habe ich natürlich nicht gerechnet, dass das Firmware abhängig ist.
Das Log sagt auch: 'ERROR: unknown function ILRReadValues.exe!'...

Da werde ich noch einen Schutz einbauen - mit einem Hinweis: Firmware needs to updated!

Client ist ILC_PDD_Request, zur eindeutigen Feststellung von wem der Request kommt.
Ist sicher Sinnvoll bei einer Multithreading Anwendung wenn mehrere Anfragen gleichzeitig geschickt werden. Da könnte es sein, dass die SPS je nach Bearbeitungszeit die Antworten in einer anderen Reihenfolge an den Client zurückschickt.
 
Jetzt ich nochmal zu diesem Thema.

Als Beispiel habe ich in meine App einen WebServer eingebaut.
Über die 'Settings.xml' kann der Port des Webservers eingestellt werden.

In der 'Index.html' kann man dann seine PDD Werte einbauen.
Wenn man nun z.b. im Internetbrowser 'http://127.0.0.1:8080' eingibt sollte die Html Seite angezeigt werden.

Bei jedem Aktualisieren der Html Seite werden die Werte von der PDD.csv neu an die Html übergeben.

Ich habe es mal mit meinen Daten etwas ausgefüllt um zeigen zu können wie es funktioniert.
Nun kann man sich mit Leichtigkeit eine Html Webpage mit Graphiken, Werten usw. zusammenbauen.
Bekommt man einen neuen PDD Wert dazu braucht nur die Index.html bearbeitet werden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ihr beiden,
nochmal vielen Dank für die Bereitstellung der Dateien. Hatten am Wochenende ein kleines Fest, konnte mich deshalb nur sehr wenig mit der Steuerung beschäftigen...

@Portisch:
Habe dein kleines Programm herunter geladen, Request funktioniert problemlos. Kurz noch eine Frage zur Index Html. Wo muss diese hin? Muss diese auf den Webserver der ILC abgelegt werden?
In der Index.html schreibe ich dann quasi meine Variablen anstelle der deinigen hinein, beim Aktualisieren aktualisiert sich dann der Wert, oder?

Danke für die Antwort!

Grüße
Daniel
 
Der wwwroot Ordner mit der html muss dahin wo die Exe auch ist.
Der Webserver ist mit in der Exe.
 
Der wwwroot Ordner mit der html muss dahin wo die Exe auch ist.
Der Webserver ist mit in der Exe.
Genau! Einfach den Inhalt des Zip-Files entpacken und es sollte gehen.

Anbei noch eine erweiterte Version, wo man nun auch Werte über den WebServer setzen kann.
Derzeit wird alles aus String aus der Html Seite an die ILC geschickt.
Ausser Boolean, da wird 'True' und 'False' verlangt da diese dann in 0 und 1 umgewandelt werden.

Bei der 'Main.V004' kann der Wert über den Button oder auch über das 'Icon.gif' gesetzt werden.
Was mir noch fehlt ist ein Togglebutton, der wie ein Taster im Haus funktioniert um nur einen Impuls an die ILC schicken zu können.

Das Index.html zeigt wieder wie man sich etwas zusammen bauen kann...
 

Anhänge

  • ILC_PDD_Request.zip
    836,2 KB · Aufrufe: 44
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

bin gerade dabei, mich noch ein wenig in die Materie einzuarbeiten. Habe mir hierzu mal den Code von Mobi angeschaut und versucht zu verstehen, wie hier der Request gesendet und auch die xml-Datei zusammengebastelt wird. Da ich hiermit noch gar nix gemacht habe, fällt es mir leider etwas schwerer als gedacht...

Was machen eure Versuche? Werde heute Abend mal meine ILC350 mit Strom versorgen, mal schauen ob es hier Probleme gibt oder ob alles funktioniert!

Außerdem würde ich gerne das Projekt mit Basic4Android angehen, hierzu bedarf es aber auch noch einiger Einarbeitungszeit. Habe ein ähnliches Projekt gefunden, wo eine Wago 750-841 über Android gesteuert werden kann.

Hier die Links:
http://www.ituilerie.com/?p=1734#more-1734
http://www.basic4ppc.com/forum/addi...l-updates/12272-library-wagoid.html#post73351

Nun denn, über Neuigkeiten zu eueren Projekten wäre ich sehr erfreut.

Schöne Grüße
Daniel
 
Hallo,


xml-Datei?? Das ist nur ein String, welchen ich verschicke.

Bei B4A bin ich noch nicht weitergekommen. Hab momentan andere Projekte am laufen. Ich hoffe aber, dass ich in 2-3 Wochen dazu komme.
Schreibe momentan an einen Logger für eine Uni. Die haben eine Phoenix-Steuerung und dort setzte ich die Request-Technik ein. Und nebenbei ein bisschen an meiner Visu.
 
Hallo Mobi,

danke für die Antwort. Ich hatte leider auch noch nicht die Zeit, mein Projekt weiter zu machen, aber was will man machen.
Kurz ein paar Anmerkungen, wie ich die Vorgehensweise bisher verstanden habe, vielleicht kannst du mir ja sagen, ob das so stimmt.

1. Das Auslesen der Variablen geht über einen xml-String, der an die URL: http://192.168.0.2/cgi-bin/ILRReadValues.exe gesendet werden muss.
2. Dies geschieht über einen HTTP-Request
3. Der Aufbau des xml-Strings schaut folgend aus:

<body><version>1.0</version><client>IMasterPhoenix5_14_05</client><client_ver>5.14.0501</client_ver><item_list_size>2</item_list_size><item_list><i><n>@GV.PLCMODE_ON</n></i><i><n>@GV.ONBOARD_INPUT_BIT1</n></i></item_list></body>

- wobei es sich bei 2 um die Anzahl der Variablen handelt
- und die Werte zwischen <i><n> und </n></i> um die Variablen, von denen ich die Werte erhalten will, handelt.

4. Falls der HTTP-Request erfolgreich war, bekomme ich einen xml-String von der Steuerung als Response zurück.
- Dieser ist genauso aufgebaut wie der Request, beinhaltet aber zwischen <v> und </v> im Anschluss an die Variable den Wert, der an der Steuerung gerade anliegt. Beispiel folgend:

<body><version>1.0</version><client>IMasterPhoenix5_14_05</client><client_ver>5.14.0501</client_ver><item_list_size>2</item_list_size><item_list><i><n>@GV.PLCMODE_ON</n><v>0</v></i><i><n>@GV.ONBOARD_INPUT_BIT1</n><v>1</v></i></item_list></body>

5. Dein Programm liest dabei die Variablen sowie den Datentyp aus der pdd.csv aus und schreibt diese in eine Liste zur weiteren Bearbeitung. Außerdem wird dabei auch gleich die Anzahl der Variablen gezählt.
6. Mit diesen Daten bastelst du dir dann den oben genannten xml-String durch Aneinanderreihung der Variablen und bekommst dann den Response xml-String zurück, aus dem du dann durch Trennung wieder die Variablenwerte heraustrennst und weiter verarbeitest.

Stimmt das soweit? Somit müsste ich mittels BAsic4Android zuerst eine Verbindung zur URL herstellen und anschließend einen http-Request abschicken. Anschließend bekomme ich die Response zurück und müsste diese weiter auswerten.
Nun gut, vielleicht bekomme ich ja irgendwas hin :)

PS. Hast du dir die Bilder, die ich dir geschickt habe, mal angeschaut?

Schöne Grüße
Daniel
 
Zuletzt bearbeitet:
Zurück
Oben