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

Seite 7 von 17 ErsteErste ... 56789 ... LetzteLetzte
Ergebnis 61 bis 70 von 170

Thema: PHP + Siemens PLC

  1. #61
    Registriert seit
    26.03.2005
    Beiträge
    58
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Auch von mir mal ne Rückmeldung,

    hab die erste Version auch ohne Probleme bei mir am laufen, für meine Hausvisu
    (IPS).Danke für deine tolle Lib.

    Wie schaff ich es so wie bei der ersten Lib die rückgabe als Byte Array
    Gruß Michael
    Geändert von MichaelHuf (12.02.2011 um 21:47 Uhr)

  2. #62
    Registriert seit
    29.03.2004
    Beiträge
    5.379
    Danke
    134
    Erhielt 1.588 Danke für 1.160 Beiträge

    Standard

    Zitat Zitat von MichaelHuf Beitrag anzeigen
    Wie schaff ich es so wie bei der ersten Lib die rückgabe als Byte Array
    Gruß Michael
    In der ersten Version werden in einer for-Schleife die SPS-Daten in ein Array kopiert. Wenn du die neue Version mit deiner ggf. alten Programmierung die ein Array erwartet verwenden willst, müsstest du diese Schleife wieder ans Ende der Lese-Methoden einbauen (oder eine andere Variante die ein String in ein Array wandelt).

    Das Handling mit Strings ist in php aber einfacher, da auch der Netzwerksocket einen String als Rückgabewert zurückgibt.

  3. #63
    Registriert seit
    26.03.2005
    Beiträge
    58
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke Dir das wars,
    das mit dem string mag sein aber meine Funktionen für meine Visu bauen auf Bytes auf.
    Wenn ich mal Zeit hab schreib ich diese mal um,was aber immer ein bisschen dauert weil meine PHP-kentnisse noch nicht so toll sind.

    danke gruß Michael

  4. #64
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Hallo zusammen,

    ich bin gestern beim Schmökern durchs Forum auf dieses PHP-Script gestoßen und da ich gerne mal herumexperimentiere habe ich mich gleich daran versucht...

    Leider habe ich ein Problem, das für euch evtl. lösbar ist

    Environment (alles auf einer Maschine):
    PC (192.168.1.130) mit Step7 V5.4 SP4 + PLCSim (Verbindung:TCP/IP)
    Ein S7-Programm mit 317 PN/DP (192.168.1.130)
    nettoplcsim (connected mit PLCSim) (Client: disconnected)
    xampp mit dem PHP-Script unter htdocs (localhost)

    Wenn ich nun das PHP-Script (s7plc_test_simple.php) im Mozilla aufrufe:
    [PHP]
    // Daten lesen
    $db = 10;
    $plcdata = $plc->ReadBytes("DB" , $db, 40, 4 ); // 4 Bytes im DB10 ab DBB40 lesen
    [/PHP]erscheint:
    Verbunden mit 192.168.1.130
    Fehler beim Lesen der Daten!


    Im nettoplcsim sehe ich, dass er aus meinem angegebenen DB die Daten ausliest!

    Was läuft hier schief?

    Hoffe ihr könnt mir weiterhelfen?!?!

    Gruß Mike

  5. #65
    Registriert seit
    29.03.2004
    Beiträge
    5.379
    Danke
    134
    Erhielt 1.588 Danke für 1.160 Beiträge

    Standard

    Zitat Zitat von mike_roh_soft Beitrag anzeigen
    Wenn ich nun das PHP-Script (s7plc_test_simple.php) im Mozilla aufrufe:
    [PHP]
    // Daten lesen
    $db = 10;
    $plcdata = $plc->ReadBytes("DB" , $db, 40, 4 ); // 4 Bytes im DB10 ab DBB40 lesen
    [/PHP]erscheint:
    Verbunden mit 192.168.1.130
    Fehler beim Lesen der Daten!


    Im nettoplcsim sehe ich, dass er aus meinem angegebenen DB die Daten ausliest!

    Was läuft hier schief?

    Hoffe ihr könnt mir weiterhelfen?!?!
    Hast du den DB10 denn mit der entsprechenden Länge (44 Bytes) in die SPS bzw. Plcsim geladen? Funktioniert das Lesen von anderen Bereichen, z.B. Merkervariablen?

  6. #66
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Also ich habe irgend einen DB (DB10) aus meinem Projekt genommen. Er ist viel größer als 44Byte und auf der PLCSim ist er auch!
    Wie gesagt das nettoplc hat mir was in HEX angezeigt.
    Merker habe ich erst gar nicht porbiert.
    Ich bin erst wieder am Dienstag am Rechner.

    Soll ich dir von irgendwas nen Screenshot oder so machen?

    Gruß Mike

  7. #67
    Registriert seit
    29.03.2004
    Beiträge
    5.379
    Danke
    134
    Erhielt 1.588 Danke für 1.160 Beiträge

    Standard

    Hab den Fehler gefunden. Da merkt man mal wieder dass man nicht alles Wissen von C auf php übertragen kann, auch wenn es ähnlich aussieht. Obwohl ich mir sicher bin dass es irgendwann schonmal funktioniert hat...
    Aber dann hatten einige damals doch Recht, weil einige die Abfrage auskommentiert haben (ist auch nur für WinAC interessant).

    Zeilt 357 muss wie folgt geändert werden:
    [PHP]
    } elseif (strlen($recv) > 7 && !((ord($recv[6]) & 0x80) == 0x80 )) {[/PHP]
    oder die Datei s7plc.php aus dem Anhang nehmen.
    Angehängte Dateien Angehängte Dateien

  8. #68
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Wow ok... Dann bin ich mal gespannt wenn ich das
    Ausprobieren kann und melde mich dann wieder!
    Helau

  9. #69
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Moin Thomas,

    ich habe es gleich mit deinem neues Script versucht aber es geht immer noch nicht!
    Ich habe mal einen Screenshot vom nettoplc gemacht. Es zeigt mir in HEX das Byte an welches ich auslese!
    In dem Byte DB10.DBB40 steht 15 (DEZ) bzw. 0F (HEX).

    [PHP]
    // Daten lesen
    $db = 10;
    $plcdata = $plc->ReadBytes("DB" , $db, 40, 1 ); // 1 Byte im DB10 ab DBB40 lesen
    [/PHP]

    Also die Kommunikation sollte doch demnach gehen nur die Ausgabe im PHP-Script scheint nicht zu funktionieren.

    Der Rückgabewert: $plcdata ist demnach = NULL
    [PHP]
    if ($plcdata != null) {
    for ($i = 0; $i < strlen($plcdata); $i += 2) {
    $iVal = $plc->getS16At($plcdata, $i);
    echo "DB".$db.".DBW".$i." = " . $iVal . "<br />";
    }
    } else {
    echo "Fehler beim Lesen der Daten!<br />";
    }
    [/PHP]Weiterhin bekomme ich bei allen Abfragen, die kleiner als 4BYTE sind folgende Fehlermeldung:
    #########################
    Verbunden mit 192.168.1.130

    Notice: Uninitialized string offset: 28 in C:\xampp\xampp\htdocs\s7plc\s7plc.php on line 284
    Fehler beim Lesen der Daten!
    #########################

    Hoffe du ahst noch ne Idee!?!
    Gruß Mike

    EDIT: Ich rufe s7plc_test_simple.php auf! Wenn ich Merker lese passiert das gleiche wie beim DB-lesen. Die Änderung von dir am Script bezieht sich doch auf das Schreiben WriteBytes(), nicht wahr? Ich versuche ja erstmal nur zu lesen...
    Geändert von mike_roh_soft (08.03.2011 um 10:03 Uhr)

  10. #70
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.686
    Danke
    208
    Erhielt 413 Danke für 331 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kannst du mal einen Wireshark auszug anhängen?
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

Ähnliche Themen

  1. Antworten: 17
    Letzter Beitrag: 18.11.2010, 16:36

Lesezeichen

Berechtigungen

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