easy-forum

Deutsch - Software => Kommunikation => Programmierung mit EASY_COM.dll => Thema gestartet von: Peter_Pig am Mai 24, 2010, 13:57:51 Nachmittag

Titel: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Mai 24, 2010, 13:57:51 Nachmittag
Hallo,

weiss jemand ob man, über die COM-extension (http://www.php.net/manual/en/intro.com.php), von PHP aus auf den Moeller OPC-Server zugreifen kann?

Wie sieht es mit der Easy_Com.dll aus? Ist diese OLE-fähig?

Links zu Doku und/oder Beispiele sind herzlich willkommen.

Besten Dank im Voraus.

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juni 09, 2010, 23:47:28 Nachmittag
Keine Ahnung ob der OPC-Server das kann.

Für die DLL hab ich mir ein kleines Programm geschrieben damit ich die easy über einen TCP-Port aus ansprechen kann. Das geht über PHP ganz hervorragend, ich baue mir damit gerade meine Visualisierung.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juni 19, 2010, 00:19:21 Vormittag
Hi Dietmar,

da bist Du mir ja ein gutes Stück voraus.

Welche Sprache hast Du für dein Programm verwendet?

Ich wollte wissen ob PHP die DLL (wenn nicht den OPC Srever) direkt verwenden kann.

 :-\ ....  :-X .... mhhhmpf ....  ich kann es mir nicht verdrücken zu fragen : hast Du in Erwägung gezogen Dein "kleines Programm" zu veröffentlichen?

Danke im Voraus

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juni 19, 2010, 11:31:43 Vormittag
Hallo Peter,

da meine Programmierrärigkeiten bereits einige Jahre (ups die sind sogar schon 2-Stellig) zurück liegen und ich keien Lust hatte mich in C einzuarbeiten, hab ich das mit Visual Basic 2008 gemacht. Damit ist die ganze TCP-IP-Kommunikation sehr einfach zu realisieren.

Ich kann das Programm zur Verfügung stellen, ABER ich hab im Moment nur die Dinge realisert bzw. getestet die ich bisher benötigt habe und nicht alle Funktionen der DLL, die Fehlerbearbeitung ist sicherlich auch noch zu verbessern.
Da es keine Dokumentation gibt, werde ich da erst noch ein zwei Zeilen zu Papier bringen müssen wie das ganze genutzt werden kann.

Hier eine Kurzform, für eine ausführlichere Beschreibung brauche ich etwas mehr Zeit, da komme ich aber dann erst nächste Woche zu.

Der easyServer ist ein Standalone-Anwendung die einfach nur gestartet werden muss.
Dazu gibt es noch ein XML-File über das die Konfiguration vorgenommen werden kann
(Achtung: In der Version die ich hochgeladen hab sind ein paar der Parameter für Tests abgeschaltet, ich muss das ganze nochmal neu kompilieren mit den Parametern dafür gilt aber das gleiche wie für die Dokumentation)
Dei Anwendung geht davon aus das die Datei im gleichen Pfad liegt und auf den angebenen Namen hört. Einstellungen für den Comport, die Baudrate und für das Logfile können vorgenommen werden. Die Parameter für den TCP-Port werden im Moment ignoriert und es ist der Port 8000 fest eingestellt. Die DLL muss auch in dem Verzeichnis von dem Programm liegen.

Wenn der Server läuft einfach eine Telnet Verbindung auf den Port 8000 herstellen und dann können Befehle an die easy gesendet werden.
Die Verbindung geht aus PHP direkt mit dem Befehl "fsockopen" und die einzelnen Befehle können dann über "fwrite" gesendet bzw "fread" gelesen werden.

Die Synthax ist dabei wie folgt:

<Befehl> <NetId> <Baustein> <Wert>

<Befehl> kann READ oder WRITE lauten.
<NetID> ist die ID der easy, also 0 für die lokale oder 1-8 für die easys im Net.
Achtung hier findet keine im Vorfeld keine Überprüfung statt ob dei ID vorhanden ist.
<Baustein> Hier wird dann der Baustein ausgewählt.
Mögliche Werte sind zur Zeit:
CLOCK - auslesen oder setzen der Uhr (kein Parameter bei Write setzt die Uhr auf die PC-Zeit)
Mx - Merker lesen oder setzen, bei write muss dann noch der <Wert> ergänzt werden
Ix - Eingänge lesen (write nicht möglich)
Qx - Ausgänge lesen (write nicht möglich)
Rx und Sx für die Erweiterungseingänge und Ausgänge geht auch
MWx, MDx, MBx sind auch möglich, habe ich aber noch nicht vollständig getestet.
Wochen und Jahresschaltuhren gehen auch, da muss ich aber die Synthax nochmal raussuchen.

Zurück wird dann folgendes geliefert <Errorcode> <Ergebnis>
<Errorcode> - liefert 0 für OK, ansonsten die Errorcodes der DLL bzw. weitere Werte bei Synthaxfehlern
<Ergebnis> - da steht halt das drin was man wissen will bzw. eventuell ein Text zum Errorcode.

Viel Spaß beim Testen.
Sobald ich das mit der Visualisierung fertig habe werde ich das Projekt hier mal insgesamt fertig habe werde ich das hier vorstellen, da ich das aber in meiner kargen Freizeit erstelle, kann das dauern.

Was wirst du mit deinem Programm realisieren, vieleicht kann man sich ja gegenseitig befruchten?

Gruss
Dietmar
 
PS: wenn du die Befehle per PHP sendest muss am Ende jedes Befehls noch ein " /n" angehängt werden, sonst wartet der Server auf weitere Eingaben.

hier ein kleines Beispiel  um die Uhrzeiten zu lesen.

 $nr_of_easyclients = 4;
 $easyserver= "xxx.xxx.xxx.xxx"; //Serveradresse
 $easyport = "8000";
 
 $fp = fsockopen($easyserver, $easyport, $errno, $errstr, 30);
 If ($fp == False)
  {
   echo "$errstr ($errno) <br /> \n";
  }
  else
  {
   for ($easy=1; $easy<= $nr_of_easyclients; $easy++)
    {
       $out = "Read " .$easy. " clock \n";
       fwrite($fp, $out);
       echo fread($fp, 26);
   }
  }
 fclose($fp);

Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juni 24, 2010, 01:25:01 Vormittag
Danke!

Es ist toll, dass Du  mich (uns) dein "kleines Programm" testen lässt.

Leider bin ich seit einigen Tagen auf Auslandsreise, und meine U-Schiene mit 822er ist Zuhause geblieben.

Ich hatte auch Schwierigkeiten mit Hotel-WiFi...  :'( ... deshalb kommt es erst heute zum Download (andere haben es früher geschafft) und zur Antwort.

Mach Dir keinen Kopf wegen der Doku. Ich melde mich sobald ich ("nicht" oder "doch") weiterkomme.

Woran ich arbeite? ... ich will rausfinden was eine herkömmliche WAMP-Umgebung und ein EasyRelay zusammen alles anstellen können.

Ich bin der Klimmzüge der (herkömmlichen) SPS Programmierer satt.

Man hört voneinander.


Gruß

Peter

Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juni 24, 2010, 22:35:41 Nachmittag
Da kann ich dir am WE mal ein zwei Screenshots machen  ;) von dem was ich schon mit dem Wamp realisert habe.

Allerdings benutze ich das bisher nur:
 - um Einstellungen für die Wochenschaltuhren zu machen
 - Über ein Webinterface Rolladen und Licht zu betätigen
 - Temperaturen zu erfassen und anzeigen zu lassen

mal sehen was einem dann noch so alles einfällt.

Gruss
Dietmar

PS: Ich hab eins vergessen: Du brauchst natürlich die Runtimes von MS (Net irgendwas) damit das Program läuft.
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juni 25, 2010, 08:30:08 Vormittag
hier mal wie besprochen zwei Screenshots.
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juni 26, 2010, 00:37:54 Vormittag
 :o ... das sieht hervorragend aus!

 ;) ... was setzt denn "Party" für Einstellungen? (Klimaanlage=100%, Licht=10%, Rolladen=0%)

Spass bei Seite, es sieht echt gut aus.

Zeigen die Grundriss-Grafiken "nur" Zustände an oder lassen die auch schalten (z.B. durch Klick auf die Lampe).

Dann sehe ich auch eine Art Wetter-Vorhersage rechts unten ... ich denke wohl, dass sie aus irgend einem Web-Dienst stammen könnte. Kannst Du bereits diese Daten benutzen um z.B. die Rollläden runterzulassen wenn "Sonne" angesagt ist?

Ich kann es kaum abwarten deinen easyServer daheim zu testen....

Ich werde berichten.

Danke für Deine Hilfe.

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juni 26, 2010, 15:25:54 Nachmittag
wie gesagt: ich bin gerade bei der Entwicklung,
nicht alles was da zu sehen ist hat schon eine Funktion und gefeiert wirt halt erst am Schluss  ;).

Die Hintergrund Graphik und die Icons sind getrennt. Die Icons liegen als Link vor dem Grundrissbild
und können zur direkten Ansteuerung genutzt werden.
Die Icons machen beides, zeigen einmal den Status ob die Lampe an oder aus ist
und über das Anklicken kann ich dann die Lampe zum Beispiel an bzw. aus schalten.
Auf dem Bild ist jetzt nur das Icon für AUS zu sehen, bei AN kommt dann ein Icon mit leuchtendem Symbol.
Bei den Rolladen läßt sich nur die jeweilige Aktion ansteuern.

Aussehen tut es schon ganz gut, steckt aber auch ne menge Arbeit dahinter bis man das ganze soweit hat.
Zumindestens wenn man keine Erfahrung im PHP-Programmieren hat.
Bisher hatte ich die ganze Konfiguration fest im Programmcode bzw. Konfigurationsdateien hinterlegt.
Da ich aber eh den mySQL im Wamp habe und mitlerweile auch ein wenig gelernt habe wie man damit arbeitet, bin ich gerade dabei nur noch den Rahmen für die Darstellung vorzugeben und die ganze Konfiguration in dem mySQL-Server abzulegen und konfigurierbar zu machen, sodass Anpassungen leicht möglich sind, allerdings liegen da noch ein paar kleinere Steine auf dem Weg.  

Das mit dem Wetter steht auch auf der Liste, aber ganz weit hinten, erstmal muss der Rest fertig werden.
Die Darstellung des Wetters war nur ne Spielerei die ich getestet hab.


gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juni 27, 2010, 02:05:02 Vormittag
Also, ich bin kein Genie im PHP/MySQL oder sonstwas, habe aber sehr viel damit rumgespielt, für andere Zwecke und würde mich sehr freuen, wenn ich Dir irgendwie behilflich sein könnte - vor allen Dingen im Gegenzug zu deiner bereits geleisteten Hilfe.

Abgesehen davon : meine Frage (und thema dieses "topics") Kann PHP auf den OPC-server zugreifen? scheint sich ja inzwischen erfreulicherweise zugunsten der DLL gelöst zu haben.

Vielleicht sollten wir die Diskussion (!?) in das geeignete Thema umsiedeln :

http://easy-forum.net/index.php?board=50.0

Die Entscheidung überlasse ich Dir.

Gruss,

Peter





Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: admin am Juni 28, 2010, 13:38:12 Nachmittag
Done !
Auf Euren Wunsch hin
von [Kann PHP auf den OPC-server zugreifen?]
 in  [PHP-Programmierung u. Kommunikation via EASY_COM.dll]
umbenannt und entsprechend verschoben.
LG

admin
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juni 28, 2010, 17:03:27 Nachmittag
Prima,
herzlichen dank.
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juni 29, 2010, 23:41:50 Nachmittag
 :) gut gemacht, Admin.

Dietmar, ich bin wieder glücklich daheim angekommen und hoffe ein paar Tage Zeit zum Testen zu haben.

Ich kann es garnicht abwarten.

 ;)

Gruss,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 01, 2010, 21:16:04 Nachmittag
So, nun ist es soweit : endlich habe ich Daheim mit deinem easyTCP-Server spielen können, Dietmar.

Mein "Versuchsaufbau" besteht aus :

1 x Easy 822 DC
1 x USB-CAB
1 x Laptop mit

    Vista Home Premium (SP2)
    WampServer 2.0 (Apache 2.2.8, PHP 5.2.6, MySQL 5.0.51b)
    easyTCP-Server 0.1 (Dietmar's kleines Programm)

Auf die 822er habe ich für diese Tests ein leeres Programm geladen, jedoch mit Remanenz auf MB1 bis 96. So kann ich mit der EasySoft im Nachhinein nachsehen ob das auch alles stimmt, was der easyTCP-Server berichtet.

Installation und Konfiguration des easyTCP-Servers hat easy (wie denn sonst?) geklappt.

Wie von Dir angekündigt hat es auch geklappt, die 822er Uhr mit "Read 0 clock" zu lesen und mit "Write 0 clock" (ohne Übergabeparameter) mit der PC-Uhr zu synchronisieren.

Merker und Merker-Byte habe ich auch lesen können, jedoch nur Merker schreiben. Vielleicht habe ich eine falsche Syntax verwendet um MB, MW und MDW zu schreiben. Du hattest ja angedeutet, dass das u.U. noch nicht ganz klappt.

Halt mich bitte auf dem Laufenden. Ich werde solange hiermit weiter experimentieren... vielleicht kann ich ja irgendwann etwas vorzeigen.

Besten Dank,

Peter

$easyserver= "127.0.0.1"; //Serveradresse
 $easyport = "8000";
 
  
 $fp = @fsockopen($easyserver, $easyport, $errno, $errstr, 3);
 
 If ($fp == False){
 
           echo "$errstr ($errno) <br />";
 
 }else{
 
         if(isset($_GET["anw"])){

       $out = $_GET["anw"];
       fwrite($fp, $out." \n");
      
echo fread($fp, 255);

       }else{

       $out = "Read 0 clock \n";
       fwrite($fp, $out);
      
echo fread($fp, 255);
      }
      fclose($fp);
 }
 
?>

Einfach die gewünschte Anweisung als query-string an die URL hängen, z.B.: ?anw=Read 0 M1
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juli 03, 2010, 10:45:19 Vormittag
Hallo Peter,

schön das es so einfach geklappt hat.
Es kann sein das ich das Schreiben noch nicht für alle Bereiche realisert habe bzw. noch ein Bug drin ist. Ich habe bisher nur die Dinge fertig gestellt bzw. getestet, die ich im Moment selber brauche.

Wenn ich dazu komme werde ich heute Abend mal in den Quellcode schauen, wie das für die MB aussieht.

Was steht denn in dem DOS-Fenster von dem TCP-IP-Server bzw. welche Meldung bekommst du wenn du den Befehl absetzt?

Gruss
Dietmar

PS: Aber die MB bzw. MW steht mit als nächstes auf dem Plan, da ich das für meine Analogdimmer brauche.
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 03, 2010, 13:37:40 Nachmittag
z.B. bei Write 0 MB1 0

bekomme ich die Rückmeldung 99 Unbekannter Befehl oder Synthax Fehler!

Gleiche Fehlermeldung bei Read 0 MW1 bzw MDW1.

... das kriegst Du schon noch hin  :) ... oder?   :D

Ich habe in die Doku der DLL reingeschaut ... und es scheint wirklich etwas kompliziert zu sein, mit diesem Write_Object_Value() ...

Also, ich drück Dir (mir) die Daumen.

Gruss,

Peter



Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juli 03, 2010, 17:21:49 Nachmittag
eigentlich :-\ sollte das Funktionieren.

Bei mir geht es aber auch nicht bzw. READ MB geht nur mit zweistelligen Merkern :-X.
Da ist wohl in der Abfrage für die Syntax ein logischer Fehler.
Ich werd mir das heute Abend mal näher ansehen und berichtigen.

Für die Doppelworte brauchst du MD (nicht MDW) als PÜarameter, dass sollte aber gehen weil ich das auch für das Lesen meiner Temperaturfühler verwende.

Gruss
Dietmar

Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 03, 2010, 19:29:12 Nachmittag
Ich Dussel!  >:( ... da habe ich mein Denkmuskel nicht genügend getätigt, sorry.

Ja : Read 0 MDx funktioniert tadellos ... (wie komme ich denn nur auf die Idee MDWx ?!!)

 :-\ ... dafür funtzt aber Read 0 MWx (noch) nicht.

Aber :

Zitat von: Holzwurm
READ MB geht nur mit zweistelligen Merkern

Das kann ich nicht nachvollziehen : Read 0 MB1 funktioniert bei mir. Vielleicht hast Du deine easyTCP-Server version schon verschossen?

 ::) mach das gute Stück nicht kaputt.  ;D

Vielen Dank für Deine Bemühungen.

Peter




Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juli 03, 2010, 22:58:08 Nachmittag
 >:( des Rätsels Lösung: MW hatte ich noch garnicht vorgesehen, da die DLL auch nur MB und MD unterstützt. Da must du dir im Moment mit dem getrennten lesen und schreiben von den beiden Bytes des Worts behelfen. Sobald ich das Programm überarbeite werde ich das mit aufnehmen.   

Probier mal den Parameter zum schreiben für MB mindestens zweistellig einzugeben. Also 0 als 00.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 04, 2010, 11:01:52 Vormittag
Hi Dietmar :

>:( des Rätsels Lösung: MW hatte ich noch garnicht vorgesehen, da die DLL auch nur MB und MD unterstützt.

Stimmt, das wird seinen Grund haben...

Probier mal den Parameter zum schreiben für MB mindestens zweistellig einzugeben. Also 0 als 00.

Leider klappt das bei mir nicht so  :'( ... z.B.: Write 0 MB5 10 wirft immernoch Fehler 99 genauso wie Write 0 MB05 10 oder sonstwas.

Klappt es denn bei Dir? Dann wäre wohl was mit meinen Runtimes nicht in Ordnung.

Wenn Write MBx yz funktionieren würde, dann könnte ich, wie Du vorschlägst, Worte aus je zwei Bytes zusammensetzen. Klar doch.

Read 0 MDx hat ein problem : sowie der Rückgabewert größer als 65535 (16 Bit) ist gibt es keine Rückmeldung (irgendwas kackt ab).

Lass Dich nicht nerven von mir.

Gruß,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juli 04, 2010, 11:40:15 Vormittag
Hallo Peter,

merkwürdig, bei mir geht das (siehe Screenshot).

Hm...die Probleme mit dem MD hatte ich noch nicht, aber meine Temperaturen die ich damit erfasse sind auch nicht so hoch  :D.

Mals sehen ob ich den Fehler auf die Schnelle ausmachen kann, dann werde ich ne neue version online stellen.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 04, 2010, 13:12:16 Nachmittag
 :-[ ... das macht mich total eifersüchtig.

Das hier ist meine console :

(http://www.3d-check.com/easyTCP/easyTCP_console.jpg)

Ist der Rattenschwanz an leeren Anfragen und 98er Antworten normal?

Ich weiß nicht ... da ist vielleicht was faul an meinem system.

Gruß,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 04, 2010, 13:28:34 Nachmittag
Okay, Fehler behoben  :)

Ich hatte im PHP ein Leerzeichen vor dem "\n" ... das scheint Write 0 MBxx und MDxx - anders als Write Mxx und alle Reads - nicht zu mögen  ::)

Mein Fehler, oups!

Danke,

Peter

Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 04, 2010, 13:57:17 Nachmittag
Hallo, schon wieder ich ...   :D

Also, wie gesagt, nachdem ich das überflüssige leerzeichen aus meinem $out String entfernt habe, läuft alles wie am Schnürchen.

Zumindest glaube ich jetzt, dass ich bestimmte Rückschlüsse treffen kann ... (oder vielleicht sind es doch nur Trugschlüsse?).

Ich glaube, daß Du mit Write und Read MDxx eigentlich ein ungewolltes Read/Write MW implementiert hast :

Bei Write MDxx wird der Übergabewert nämlich nur auf zwei Byte geschrieben. Werte die 4 Byte brauchen, können somit nicht geschrieben werden.

Ähnliches gilt wohl auch für Read : scheinbar liest das Programm zwar 4 Byte aus der Easy raus, dann wird aber irgendwo versucht den Wert auf 2 Byte unterzubringen, was nicht klappt wenn der Wert größer als 65535 ist.

Übrigens : bei minus Temperaturen könnte deine Temperatur-Erfassung auch Probleme haben  ;)

Vielleicht täusche ich mich...

Na ja, es ist vorerst mal unwichtig. Ich will erstmal damit leben und Dich nicht von deinem Projekt abhalten (Ich weiß wie das ist).

Gruß,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juli 04, 2010, 14:34:24 Nachmittag
jep du liegst richtig.

Gut das wirs bisher nur Warm hatten  ;)

Probier mal die anhängende Version, damit müßte MD jetzt richtig funktionieren und auch MW sollte gehen. (Eventuell gibt es noch Probleme beim Überschreiten der Wertebereiche, das hab ich noch nicht ausgetestet.)

Die zuvielen /n erklären die vielen "98"er in deinem Log.
Das heißt eigentlich das ein unvollständiges Kommando empfangen wurde.
Das macht er aber leider auch wenn ich die Verbindung beende, da ich den Fehler bisher nicht ausmachen konnte hab ich das erstmal "ignoriert".
Warum das aber bei MB passiert und bei den anderen nicht, kann ich mir jetzt nicht erklären.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 04, 2010, 15:51:10 Nachmittag
 :o das ging aber schnell!!

Hut ab : alles scheint wunderbar zu funktionieren : Write/Read M, MB, MW, MD ... auch negative Werte in einen MD schreiben und lesen funktioniert.

Einfach Klasse, Dietmar.

Vielen Dank für Dein erfolgreiches Bemühen.

Ich werde versuchen heute noch irgend etwas "erstaunliches" damit zustande zu bringen und hier vorzuzeigen.

Macht echt Spaß!

Gruss,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 06, 2010, 18:14:02 Nachmittag
Hallo,

anbei ein kleines Beispiel, wie man die easyTCP-Server Daten vom HTTP-Server fast in Echtzeit an den Visualisierungs-Client schicken kann, ohne alle x-Sekunden zu pollen.

Ich nenne es Ajax-Slow-Load, weil es auf beiden Technologien basiert (Ajax und Slow-Load, halt).

Dietmar's "kleines Programm" eignet sich hierfür besonders gut, da der easyTCP-Server nicht bei jeder Anfrage neu gestartet werden muss.

Ich weiß, es ist nicht besonders beeindruckend... ist halt nur ein Beispiel.

SEHR WICHTIG : der Log-level sollte auf 0 gestellt werden, sonst wächst die Log-Datei schnell ins unmögliche.


 ::) Die schäbige mitgelieferte EasySoft Projektierung schreibt für jeden getätigten eingang ein Bit von MD1 ... wie gesagt  : nur ein Beispiel.
Gruß,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Juli 06, 2010, 20:30:51 Nachmittag
Hallo Peter,

das ließt sich ja gut. Sobald ich hier mit den Dingen durch bin die ich für die Visualisierung brauche werde ich das auch mal ausprobieren ::). Genau sowas brauche ich wenn ich die Dimmerwerte ändern möchte.

Halst mich mal auf dem laufenden, mit ajax und java script habe ich mich noch garnicht beschäftigt.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am Juli 10, 2010, 10:35:23 Vormittag
Hallo nochmal,

ich glaube irgendwo gelesen zu haben, dass Du deinen Web-Client auch auf dem IPhone bzw. IPod benutzen willst.

Macht ja auch sinn, wenn man sich schon mit der Herstellung einer Web-App rumschlägt  ;D

Hier (http://www.vorsprungdurchwebstandards.de/theory/faq-websites-fuer-das-iphone-gestalten/) finden sich super Tipps.

Ich hoffe es hilft.

Gruß,

Peter
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am August 18, 2010, 07:10:41 Vormittag
Hallo Peter,

bist du mit deinem Projekt weiter gekommen?

Benutzt du eigentlich ein Framework für das ganze oder machst du das von Hand?

Die letzten Wochen habe ich erstmal die physikalischen Voraussetzungen geschaffen um weiter machen zu können, sprich Kabel verlegt, Rolladen verkabelt, easys vernetzt etc.

Nebenher hab ich den ganzen Aufbau so umgestaltet das die vollständige Konfiguration in einer Datenbank liegt und somit Änderungen jederzeit über den Browser vorgenommen werden können. Bei Gelegenheit werde ich mal eine Kurzvorstellung des Projekts in einem neuen Thread machen.

Was mir jetzt noch fehlt ist die passende Gestaltung der Oberfläche und da bieten Javascript und Ajax Möglichkeiten die ich mit reinem html/php nicht realisieren kann.

Gruss
Dietmar

Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am August 20, 2010, 23:34:18 Nachmittag
Hi Dietmar!

Sorry, ich war mal wieder unterwegs ...  :-\

Ja, ich bastle weiterhin an meinem Projekt. Leider geht es sehr langsam voran, weil ständig auf Achse.

Nein, ich bentuze kein Framework, nur einen Text-Editor mit Syntax-Hervorhebung für HTML, Javascript, CSS und PHP : http://www.chami.com/html-kit/

"Produktivitäts-Rekorde" kann ich damit selbstverständlich nicht brechen  ;) ...

Ich bin wohl zu faul um den Umgang mit einem Framework zu erlernen...

Wenn ich Dir trotzdem irgendwie behilflich sein kann, lass es mich wissen.

Ich werde mich am Wochenende wieder in mein Projekt einarbeiten. Vielleicht springt etwas heraus, was es wert ist, hochgeladen zu werden.

Gruß

Peter






Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: heicar am August 26, 2010, 11:40:00 Vormittag
Hallo ihr,

verstehe ich das jetzt richtig? Ihr könnt per php jeden Ausgang setzen? Ich bin mit meiner 800 jetzt fast am Ende der 256 Zeilen, zeitrelais hab ich auch nicht mehr - von daher wäre es ja ideal wenn das setzen der Ausgänge per php geht. Dann könnt ich vieles direkt in php machen (zufallszeiten - ablaufprogramme) - geht mit der Easy zar auch - nur für mich ist das noch zu umständlich.

Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am August 26, 2010, 16:59:39 Nachmittag
Jep, zwar nicht direkt, das läßt die DLL nicht zu, aber über den Umweg eines Merkers
lassen sich alle Ausgänge über die Schnittstelle ansteuern.

Eingänge, Merker, die Systemuhr, Ausgänge und die Wochen und Jahresschaltuhren lassen sich über das gleine Programm am Anfang des Threads auslesen.

Bis auf die Ein- und Ausgänge lassen sich die Bausteine auch alle über das Programm setzen.
Das ganze geht als Verbindung über einen TCP/IP-Port.
Ich benutze das aus PHP heraus um bei mir eine Visualisierung mittels Webbrowser auf einem Touchpad zu realiseren.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: heicar am August 26, 2010, 17:13:41 Nachmittag
ok, das ist genial  :D

Gibt es aber nur als Windosprogramm oder kann man das auch unter Linux laufen lassen?

Machst du auch irgendwelche Steuerungsaufgaben über php oder nur als visu?

Im Grunde, so mein Verständnis, könnte ich das Programm in der Easy killen, und alles in php machen (Bis auf die Merkerzuweisung)
Ob das Unsinn ist (natürlich) mal außer Betracht gelassen.
Gruß
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am August 26, 2010, 17:53:40 Nachmittag
Die DLL ist nur für Windows und das Programm auch, duch brauchst also zumindestens einen Windowsrechenr als "Gateway", der rest kann dann über TCP von einem Linuxrechenr aus passieren.

Theoretisch kannst du das natürlich machen, ist aber in meinen Augen absoluter Unsinn.
Dann wären andere Lösungen billiger und einfacher. Ich hab mich deshalb für die Lösung mit der easy entscheiden, weil ich für die eigentliche Funktionalität nicht von einem PC abhängig sein wollte.
Die Visualisierung ist nur eine Spielerrei bzw. addon.

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am August 26, 2010, 20:16:41 Nachmittag
Hallo,

es kann schon Sinn machen, manche Steuer-Aufgaben dem Fern-Rechner zu überlassen (das bringt fast unbegrenzte Möglichkeiten mit sich).

Ich glaube aber, es sind bestimmte Grundregeln zu beachten :

1) Zeit- sowie Sicherheits-kritische Aufgaben sollten grundsätzlich der Easy überlassen werden.

2) Man sollte, vom Rechner aus, nur Prozesse starten, welche von der Easy vollständig überwacht werden und auch von dieser beendet werden können.

Zum Beispiel kann die Easy viel schneller und zuverlässiger ein Eingangssignal erfassen, auswerten und die notwendigen Ausgänge schalten.

Auch Impulse zählen oder generieren kann die Easy viel effizienter als ein PC der über PHP, TCP-server und Com-Port mit ihr kommuniziert.

Abgesehen von Systemabstürzen, Programmierfehlern, etc. ...

Einfaches Beispiel "Terrarium Heizung":

Falsche Lösung :

Der PC liest den Temperaturwert des Terrariums aus der Easy und trifft die Entscheidung, dass geheizt werden muss. Also wird ein Merker gesetzt, der direkt einen Ausgang ansteuert, der die Heizlampe anschaltet.

Nun soll der PC sich ständig die Temperaturwerte holen und entscheiden, wann die Heizung wieder ausgeschaltet werden muss. Dann wird der PC den "Heizmerker" wieder auf null setzen und die Heizung geht aus.

Das könnte allzuleicht mit einer gebackenen Albino-Boa enden.

Richtige Lösung :

Der PC schreibt in einen Merker Wort, welche Temperatur der Albino-Boa am besten gefällt. Die Easy übernimmt die Regelung. Am besten ist es, wenn das Easy-Programm noch mit der geeigneten Wertbegrenzung ausgestattet ist, falls dein Schwiegervater die Schlange nicht aussteht und heimlich 100°C in den PC eingibt.

Ich hoffe das ist nicht alles Unsinnig.

Gruß

Peter

Nachtrag :

Dietmar's "kleines Programm" (der EasyTCP-Server) ist flink und sehr zuverlässig. Es ist die beste Lösung die ich für eine Anbindung an PHP gefunden habe und es macht echte Freude damit zu experimentieren und arbeiten.

Also : rann an Dein Projekt mit EasyTCP-Server!
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am August 27, 2010, 07:06:09 Vormittag
Richtige Lösung :

Der PC schreibt in einen Merker Wort, welche Temperatur der Albino-Boa am besten gefällt. Die Easy übernimmt die Regelung. Am besten ist es, wenn das Easy-Programm noch mit der geeigneten Wertbegrenzung ausgestattet ist, falls dein Schwiegervater die Schlange nicht aussteht und heimlich 100°C in den PC eingibt.

Ich hoffe das ist nicht alles Unsinnig.

So wollte ich das auch verstanden wissen. Das ist im Prinzip genau das was ich auch mache.
Befehl vom PC an die easy "Rollade runter" und den Rest übernimmt die easy.
Anders wär nämlich schlecht  ;).

Gruss
Dietmar
Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am November 13, 2010, 11:23:56 Vormittag
Hallo,

ich wollte mal einen kleinen Update zu meiner easy-Visualisierung mittels Webbrowser geben.

Leider finde ich nicht immer die Zeit die ich brauche um an dem Projekt weiter zu arbeiten, aber mittlerweile steht das Grundgerüst soweit das ich mich "nur" noch um die Konfiguration und die Darstellung kümmern muss.

Hier mal ein paar Screenshots wie es jetzt aussieht.

Das ganze ist mittels dem TCP-Server, PHP und einer mySQL-Datenbank realisiert.

Alle Konfigurationen sind in der Datenbank hinterlegt und können mittels der Webseite konfiguriert werden.

Die Basis bilden "Aktoren" die entweder Eigenschaften der easy abfragen bzw. beeinflussen oder html-Links bzw. Scriptfiles einbinden.

Jede Seite besteht aus einem Hauptteil und ein oder mehreren Menues die links, rechts, oben oder unten angeordnet werden können.
In den Hauptteil und die Menüs können dann die definierten Aktoren dann eingebunden werden.

Im Hauptteil werden die Aktoren dann über die angegebenen Icons, abhängig von der definierten Bedingung dargestellt. In den Menüs erfolgt die Darstellung zur Zeit als Text-Button.
Für das Licht habe ich zum Beispiel ein Icon für eine eingeschaltete und ein anderes für die ausgeschaltete Lampe hinterlegt, welches abhängig vom Zustand angezeigt wird.

Vom Grundgerüst ist das jetzt soweit fertig das ich jetzt an das Konfigurieren gehen kann.
Auf Seiten der easy sind auch noch ein paar Programmänderungen möglich.
Funktioniert auf jeden Fall jetzt schon vom PC oder iPod wunderbar.

Im Moment bin ich dabei noch ein paar Fehler in der Darstellung auszumerzen
und die Darstellung etwas moderner zu gestalten.

Gruss
Dietmar


 




Titel: Re: PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am November 14, 2010, 11:21:40 Vormittag
Das sieht klasse aus :) und es steckt wohl ein ganzes Stück Arbeit dahinter!

Es erweckt den Eindruck als wäre das ganze System ziemlich flexibel einsetzbar, d.h. relativ einfach an andere Projekte anpassbar. Stimmt doch, oder?

Wiederverwendbares zu schreiben ist nicht leicht. Also nochmal Hut ab!

Hast Du an dem EasyTCP Server Änderungen vorgenommen oder bin ich noch auf dem letzten Stand?

Ich habe die Arbeit an meinem Projekt ziemlich lange einstellen müssen. Werde wohl erst im Dezember richtig weitermachen können.

Bis dahin hast Du hoffentlich ein bisschen Luft und ich kann Dich mit lästigen Fragen und Wünschen martern...  ::)

Bis dann!

Peter



Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: heicar am Februar 09, 2012, 16:37:44 Nachmittag
Hallo,
ist ja lange nichts mehr dazu geschrieben worden....

Aber ich habe es jetzt endlich mal geschafft mich wieder um die SPS zu kümmern.
Ich habe eine Linuxkiste laufen, dann über Virtualbox ein virtuelles Windows installiert - den easytcpserver raufgespielt und läuft.
Ich bin total begeistert. Im Moment hab ich nur erst einige wenige Schalterbefehle über die Steuerungsseite eingesetzt.
Dazu hab ich noch eine Art Logging für die Sps eingerichtet - Ein php script fragt verschiedene Ein/Ausgänge bzw. Merker ab, und bei einer Zustandsänderung wird es in eine mysql Datenbank geschrieben. Jetzt kann ich (komfortabel) sehen wie oft z.b. nachts der Bewegungsmelder anschlägt (geht ja auch über die Easy)

Ich hab jetzt den Tcpserver ca. eine Woche 24h am laufen und absolut kein Fehler festzustellen.

Klasse Arbeit Dietmar.

Ich konnte allerdings keine Ein/Ausgänge von dem Erweiterungsgerät abfragen mit dem tcpserver - habe dann die betreffenden E/A auf Merker gelegt und bin glücklich.

Gruß
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am Februar 10, 2012, 11:59:30 Vormittag
Hi,

das mit den Ein und Ausgängen des Erweiterungsgerätes sollte aber eigentlich gehen.
Ich werde mir das aber bei Gelegenheit nochmal anschauen, ob da ein Bug drin ist.
Zur Zeit erweitere ich den TCP-Server gerade um die easy unter mediola (www.mediola.de) einbinden zu können, da kann ich das direkt mit erledigen.

Sobald das fertig gestellt und getestet ist werde ich hier einen update posten.

Gruss
Dietmar
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: boost am Januar 28, 2013, 12:46:00 Nachmittag
ich hab ne frage zur easyTCPserver_config.xml datei.
lässt sich anstelle von einem com port auch ne ip wo sich die easy befindet (angebunden über eine Easy 209SE) definieren ?

bei der beschreibung ist das nirgends vermerkt.

noch eine kleine andere
die aktuellste version des programms ist die easyserver 0.1a ?

Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am April 18, 2013, 18:15:06 Nachmittag
Hallo!

ich habe kurz mal wieder vorbeigeschaut um wieder den TCP Server runterzuladen (wegen neuer Rechner und so...) und um mein Gedächtnis ein bisschen aufzufrischen, bezgl. der Bedienung des ganzen.

Was macht die Kunst, Dietmar?

Ist es was geworden mit dem mediola?

@boost: ist wohl ein bisschen spät dafür, aber ich denke schon dass der easyTCP Server mit einer SE209 kommunizieren kann. Versuch mal fsockopen() mit der IP-Adresse und Port der SE209, anstatt, wie in den Beispielen, localhost (127.0.0.1:8000). Wenn Du von außerhalb des Heimnetzwerks zugreifen musst, wird wohl ein bisschen port-forwarding nötig sein.

Hat's geklappt? Lass uns wissen!

Gruß an alle!  ;)

Peter
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am November 20, 2013, 10:31:25 Vormittag
Halo Peter,

Leider waren die letzten Monate nicht so entspannt und ich hatte andere Dinge auf der Liste,weshalb ich auch nicht mehr hier rein gesehen hab.
Das Mediola Projekt habe ich aus diesem Grund auch nicht mehr weiter verfolgt.
Mit Interesse habe ich den Artikel zur Integration mit dem Raspberry gelesen.
Wie weit bist du damit gekommen?
Das wäre fuer mich eventuell die Möglichkeit den Windowsrechner los zu werden und auch den Webserver in den Schaltschrank zugekommen.

Lass mal was hören.
Gruss
Dietmar
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am November 21, 2013, 18:34:21 Nachmittag
Hi Dietmar,

schon lange nichts mehr von Dir gehört!

Ja, mir geht's genauso ... es fehlt immer genügend Zeit zum Spielen...  ::)

Danke für das Interesse:

Die Kommunikation Easy < - > Raspy mit dem USB-CAB klappt soweit ganz gut. Mit einem reinen Seriellen Kabel habe ich es noch nicht versucht. Auch mit mehrerenTeilnehmer-Geräten habe ich nicht versuchen können. Ich will auch noch testen, ob das ganze auch unter Windows funktioniert (ist ja nur cPython).

Aber um ein richtiges Projekt damit realisieren zu können, fehlen mir noch etliche Programmzeilen : Unerfreulicherweise kann ich bis jetzt nur write_ bzw. read_object_value() emulieren. und z.Zt. versuche ich mir die nötigen Module füe eine Lokale Visualisierung zu schreiben, dann noch eine Web-Visualisierung, dann das ganze so optimieren, dass es flink und zuverlässig läuft, dann...

Übrigens, ohne Deine Easy TCP hätte ich keine Chance gehabt!

Ich bin aber ganz der Meinung, dass der Raspy wie dafür geboren ist, an einer Easy zu hängen. Mit einem einzigen Gerät kann man ein HMI (hab mir extra ein Faytec Touchscreen angelegt), einen Web-Server für z.B. eine Web-Visu, einen Daten-Logger oder was auch immer realisieren.

Für ca 35 Euro ist das Gerät unverhältnissmässig günstig (ok.: + MMC + Netzeil) ... es steht z.B. preislich in keinem Verhältniss zum USB-CAB, das mehr als doppelt so teuer ist  >:(

Ich stehe jedenfalls zu Deiner vollen Verfügung, falls Du es mal damit versuchen willst.


Gruß,

Peter
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am November 23, 2013, 12:58:33 Nachmittag
Hallo Peter,

ja Zeit ist leider ein knappes Gut ;-).

Sehr viel mehr wie das Schreiben und lesen einzelner Merker etc. mache ich mit meinem kleinen Programm ja auch nicht.
Das einzige was mir da im Moment einfallen würde, was mir neben dem Lesen der verschiedenen Teilnehmer fehlt, wäre das lesen und setzen der Uhr.
Bei mir gehen die Dinger nach einiger Zeit nach dem Mond >:(.

Es sollte aber raus zu finden sein welches Byte da für die NetzwerkID verwendet wird.

Warum willst du den eine lokale und eine Web-Visualisierung schreiben? Die Web-Visualisierung läßt sich doch auch lokal aufrufen.

Ich habe mich, aus einem anderen Grund, in den letzten Wochen ein wenig mit der Programmierung von Joomla beschäftigt und habe beschlossen mein Projekt darauf umzuziehen. Das nimmt einem eine Menge Arbeit ab und da es auch auf Linux läuft müßte es sich auch auf dem Raspberry betreiben lassen. Mal sehen wie die Performance ist. Ich hab mir mal son Ding bestellt und werde das mal ausprobieren.

In Zukunft werde ich wohl wieder häufiger hier vorbei schauen.

Gruss
Dietmar
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: Peter_Pig am November 23, 2013, 13:50:17 Nachmittag
Hallo Dietmar,

Raspy bestellt? Klasse!  ;)

Ich schlage mich aus zwei Gründen mit der lokalen Visualisierung (unter Verwendung des besonders anstrengenden python Tkinter Moduls) rum:

das Raspy ist zwar - für seinen Preis und Größe - sehr leistungsstark, und hat z.B. nicht das geringste Problem eine LAMP Server Umgebung am Laufen zu halten, erstaunlicherweise tut er sich aber extrem schwer mit Web-Browsern... alle verfügbaren Browser sind abgespeckte Versionen, HTML5 geht schon mal gar nicht, javascript nur in beschränktem Maße, das rendern dauert gefühlte Jahrtausende ...

Deshalb : Web-Server ja / Web-Client leider nein

Desweiteren erlaubt es ein lokales HMI auch mal eine nicht vernetzte Architektur zu betreiben, z.B. dort wo kein Netzwerk vorhanden oder erwünscht ist.

Bezüglich de Net-ID ... Arne (aus dem anderen Thread) hatte mir eine PM geschickt, in der er mir das erklärt. Ich werde sie Dir weiterleiten.

Und wie gesagt: ich stehe in Deiner Schuld wegen des Easy-TCP, also werde ich versuchen, Dir genauso gut zu helfen. Werde versuchen etwas wie eine Anleitung und Download zusammenzustellen.

Heikles Thema: ich habe das Gefühl, dass sich schon lange kein Moderator hier hat blicken lassen   :-\ und weiss immer noch nicht, ob dieses Thema hier überhaupt diskutiert werden darf (schließlich wird ein Teil des Protokolls gelüftet). Ausserdem hat es mit der EASY_COM.dll schon gar nichts mehr zu tun, aber eine eigene "Abteilung" bekommen wir nicht...

Mal sehen wie's weitergeht.

Gruß,

Peter
Titel: Re:PHP-Programmierung u. Kommunikation via EASY_COM.dll
Beitrag von: holzwurm am November 23, 2013, 18:54:31 Nachmittag
Hallo Peter,

gut das mit dem lokalen Betrieb, ohne Netzwerk, für den Betrieb ist einzusehen - wobei ich bei meiner Anwendung davon ausgehe das das Ding im Schaltschrank vor sich hinwerkelt und nur Remote genutzt wird.
So ist das im Moment auch, da steht der Windowsserver im Heizungskeller hinter dem Schaltschrank.

Die PMI hab ich bekommen, danke. Sobald ich meinen Kram soweit vorbereitet habe und Raspberry wie auch ein USB-Kabel habe, werde ich mich an den Teil begeben. Vorerst werde ich mich aber um die Umsetzung auf Joomla kümmern. Ich werde berichten wie es vorwärts geht - dürfte aber nicht so schnell sein  ;D.

Wenn das hier mit dem Forum problematisch wird, findet sich da sicherlich auch ne andere Möglichkeit.

Gruss
Dietmar