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

Seite 9 von 17 ErsteErste ... 7891011 ... LetzteLetzte
Ergebnis 81 bis 90 von 170

Thema: PHP + Siemens PLC

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ich habe in meinem AJAX-Script noch ne sleep()-function entdeckt...
    Ich habe diese entfernt und nun geht´s richtig schnell!

    Sogar mit S7 open() und close() je Datenabruf komme ich auf 50ms runter... (bei einem DatenWort lesen)

    Nun wollte ich trotzdem die Idee von Thomas realisieren und die Verbindung offen lassen und später per Maus-Klick zu schließen...

    Ich will dem PHP-Script einen Parameter übergeben und mit SWITCH zu OPEN(), READ() oder CLOSE() springen...

    Das Problem ist, dass das Script ja zuerste das Objekt S7PLC erzeugt und wenn ich es später wieder aufrufen möchte um zu lesen oder die Verbindung zu schließen dann weiß das Script nicht mehr zu welchem Socket es gehört.. oder os ähnlich?!?!

    Warning: socket_write() expects parameter 1 to be resource, null given in C:\xampp\xampp\htdocs\s7plc\website\s7plc\s7plc.php on line 266

    Parameter1 ist : $this->mSocket

    Der verliert die Socket-Einstellungen bzw. weiß er nicht mehr welcher socket offen ist, oder?
    Wie kann ich denn das Objekt speichern?

    Gruß Mike

  2. #82
    Registriert seit
    14.04.2008
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Leute,

    ich wollte dieses Thema auffrischen denn ich bin dabei das Script von Thomas zu testen, bekomme aber nix hin.
    Ich bekomme entweder garkeinen Wert oder mein index.php script läuft erst garnicht bis zum Ende. (Aber ohne Fehlermeldung vom Firefox)!

    Ich bin kompletter php Neuling muss ich aber vorweg sagen.

    Die letzte Version von Thomas's Script liegt im web ordner, eine index.php habe ich wie folgt erstellt:

    [PHP]
    <?
    require ('html.inc');
    require ('s7plc.php');
    //require ('ips7lnk_php_test.php');


    BeginHTML ();

    echo "</div>";
    echo "<p>";
    echo "Test"; // eigentliche Ausgabe
    echo "</p>";
    echo "</div>";


    $plc = new S7PLC("S7300", "192.168.178.200", 0, 2, "TestSPS");
    Open ();

    // Daten lesen
    $db = 1;
    $plcdata = $plc->ReadBytes("DB" , $db, 0, 2 );
    Close ();

    echo "</div>";
    echo "<p>";
    echo "Daten:".$plcdata[0]; // eigentliche Ausgabe
    echo "</p>";
    echo "</div>";

    EndHTML ();
    ?>
    [/PHP]Meine CPU ist eine frisch-geöffnete CPU315-2 PN/DP FW V1.1, ich habe nichts ausser einem Ethernet Netzwerk Projektiert und die IP eingestellt. Mit der Siemens Software klappt die Kommunikation auf die IP Stamm.200,
    mit dem php script bekomme ich leider noch nix zurück.

    Lediglich im Baustein FC1 wird ein Zählerwert in den DB1 als Word an der ersten Stelle geschrieben. Er zählt schnell aufwärts, sodass ich versch. Werte an immer der selben Stelle auslesen kann, wenn es denn irgendwann funktioniert was ich mache ^^

    Im grossen ganzen weiß ich nicht mal ob ich die "ansteuerung" des php scripts richtig mache. Ich teste seit 3 Nachtmittagen verschiedenste Dinge, aber ich komme nicht weiter.

    Hat jemand Tips für mich was ich unternehmen könnte um wenigstens heraus zu finden WO mein Fehler liegt?

    Mit bestem Dank im voraus,
    Sascha
    Geändert von kinglazee (28.04.2011 um 15:59 Uhr)
    Zitieren Zitieren hey...  

  3. #83
    Registriert seit
    29.03.2004
    Beiträge
    5.610
    Danke
    141
    Erhielt 1.653 Danke für 1.203 Beiträge

    Standard

    Bei dir fehlen so ein paar Dinge, z.B. wird die Verbindung zur SPS garnicht aufgebaut.

    Ich habe mal ein kleines Beispiel inklusive HTML-Ausgabe geschrieben.
    Es wird versucht 5 Integer-Werte aus DB100 und 5 Real-Werte aus DB110 zu lesen. Die Werte werden dann in Tabellenform ausgegeben.

    Um das zu testen müsstest du also diese DBs in deiner SPS anlegen, oder die Adressen anpassen.

    [PHP]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <title>s7plc.php Testseite</title>
    <style type="text/css">

    body {
    background-color:#EFEFEF;
    font-family: "Trebuchet MS",sans-serif;
    }

    #main {
    width:90%;
    border: #000000 1px solid;
    margin: 0 auto;
    background-color:#FEFEFE;
    }

    h1 {
    size:30px;
    vertical-align:middle;
    text-align:left;
    margin: 10px 20px 0 20px;
    font-family: Impact, Arial, Helvetica, sans-serif;
    }

    table.data {
    table-layout:fixed;
    width:60%;
    font-size: 12px;
    text-align: center;
    border:1px dotted #CCCCCC;
    border-collapse:collapse;
    margin-left: auto;
    margin-right: auto;
    }

    table.data tr {
    font-size: 12px;
    border-right:1px dotted #CCCCCC;
    border-top:1px dotted #CCCCCC;
    background-color:#F6F6F6;
    padding:2px 0;
    }

    table.data th {
    font-size: 12px;
    border-right:1px dotted #CCCCCC;
    border-top:1px dotted #CCCCCC;
    background-color:#A6A6A6;
    padding:2px 0;
    }
    </style>
    </head>
    <body>
    <div id="main">
    <h1>s7plc.php Testseite</h1>
    <?php
    include ("s7plc.php");

    $PLC_IP = "192.168.1.10"; // IP-Adresse der SPS
    $Db_num_ints = 100; // Datenbausteinnummer eines DBs mit Integer-Werten
    $Anz_ints = 5; // Anzahl der Integes-Werte
    $Db_num_reals = 110; // Datenbausteinnummer eines DBs mit Real-Werten
    $Anz_reals = 5; // Anzahl der Real-Werten

    $plc = new S7PLC("S7300", $PLC_IP, 0, 2, "TestPLC");

    try {
    if ($plc->Open() == 0) {
    echo "<p>Verbindung zur SPS (IP:". $PLC_IP . ") wurde erfolgreich hergestellt!</p>";

    $plcdata = $plc->ReadBytes("DB" , $Db_num_ints, 0, $Anz_ints * 2 );
    if ($plcdata != null) {
    echo "<table class=\"data\">\n";
    echo "<tr><th>Adresse</th><th>Datentyp</th><th>Wert</th></tr>";
    for ($i = 0; $i < strlen($plcdata); $i += 2) {
    $iVal = $plc->getS16At($plcdata, $i);
    echo "<tr><td>DB".$Db_num_ints.".DBW".$i."</td><td>INT</td><td>" . $iVal . "</td></tr>\n";
    }
    echo "</table><br />";
    } else {
    echo "<p><b>Fehler beim Lesen der Daten aus Datenbaustein DB". $Db_num_ints ."</b></p>";
    }

    $plcdata = $plc->ReadBytes("DB" , $Db_num_reals, 0, $Anz_reals * 4 );
    if ($plcdata != null) {
    echo "<table class=\"data\">\n";
    echo "<tr><th>Adresse</th><th>Datentyp</th><th>Wert</th></tr>";
    for ($i = 0; $i < strlen($plcdata); $i += 4) {
    $rVal = $plc->getFloatAt($plcdata, $i);
    echo "<tr><td>DB".$Db_num_reals.".DBD".$i."</td><td>REAL</td><td>";
    printf ("%.2f", (float)$rVal);
    echo "</td></tr>\n";
    }
    echo "</table><br />";
    } else {
    echo "<p><b>Fehler beim Lesen der Daten aus Datenbaustein DB". $Db_num_reals ."</b></p>";
    }
    } else {
    echo "<p>Konnte keine Verbindung zur SPS (IP:".$PLC_IP.") aufbauen!</p>\n";
    }
    } catch (Exception $e) {
    echo "<p>Konnte keine Verbindung zur SPS (IP:".$PLC_IP.") aufbauen!</p>\n";
    }
    ?>
    </div>
    </body>
    </html>
    [/PHP]

    Sollte dann so ähnlich wie im Anhang aussehen.
    Angehängte Grafiken Angehängte Grafiken

  4. #84
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.733
    Danke
    208
    Erhielt 419 Danke für 336 Beiträge

    Standard

    Zitat Zitat von kinglazee Beitrag anzeigen
    Hi Leute,

    ich wollte dieses Thema auffrischen denn ich bin dabei das Script von Thomas zu testen, bekomme aber nix hin.
    Ich bekomme entweder garkeinen Wert oder mein index.php script läuft erst garnicht bis zum Ende. (Aber ohne Fehlermeldung vom Firefox)!

    Ich bin kompletter php Neuling muss ich aber vorweg sagen.

    Die letzte Version von Thomas's Script liegt im web ordner, eine index.php habe ich wie folgt erstellt:

    [PHP]
    <?
    require ('html.inc');
    require ('s7plc.php');
    //require ('ips7lnk_php_test.php');


    BeginHTML ();

    echo "</div>";
    echo "<p>";
    echo "Test"; // eigentliche Ausgabe
    echo "</p>";
    echo "</div>";


    $plc = new S7PLC("S7300", "192.168.178.200", 0, 2, "TestSPS");
    Open ();

    // Daten lesen
    $db = 1;
    $plcdata = $plc->ReadBytes("DB" , $db, 0, 2 );
    Close ();

    echo "</div>";
    echo "<p>";
    echo "Daten:".$plcdata[0]; // eigentliche Ausgabe
    echo "</p>";
    echo "</div>";

    EndHTML ();
    ?>
    [/PHP]Meine CPU ist eine frisch-geöffnete CPU315-2 PN/DP FW V1.1, ich habe nichts ausser einem Ethernet Netzwerk Projektiert und die IP eingestellt. Mit der Siemens Software klappt die Kommunikation auf die IP Stamm.200,
    mit dem php script bekomme ich leider noch nix zurück.

    Lediglich im Baustein FC1 wird ein Zählerwert in den DB1 als Word an der ersten Stelle geschrieben. Er zählt schnell aufwärts, sodass ich versch. Werte an immer der selben Stelle auslesen kann, wenn es denn irgendwann funktioniert was ich mache ^^

    Im grossen ganzen weiß ich nicht mal ob ich die "ansteuerung" des php scripts richtig mache. Ich teste seit 3 Nachtmittagen verschiedenste Dinge, aber ich komme nicht weiter.

    Hat jemand Tips für mich was ich unternehmen könnte um wenigstens heraus zu finden WO mein Fehler liegt?

    Mit bestem Dank im voraus,
    Sascha
    Da du nur open und close geschrieben hast, und nicht wie Thomas $plc->open() hat das script doch sicher einen fehler ausgegeben, oder? Oder hast du die fehlerausgabe in der php.ini deaktiviert?
    ---------------------------------------------
    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)

  5. #85
    Registriert seit
    14.04.2008
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also erstmal besten, allerbesten Dank an Thomas!

    Also dein Quelltext ist wirklich erste Sahne! Tut was es soll...

    Ich versteh auch schon ein paar Dinge die darin ablaufen, habe schon sehr viele versch. Sprachen gesehen...
    Allerdings reicht es nicht mir das ganze jetzt schon an zu passen, aber vllt werde ich hier noch etwas geholfen falls ich mich mal wieder schwierig tue???

    Jochen:
    Ich bekam keinerlei Fehlermeldung. Ausserdem, wo finde ich eine php.ini? Auf meinem Webserver irgendwo? Ich habe eine Synology DS210j Diskstation als Server, nur für die Info...


    Besten Gruß und vielen Dank an alle
    Zitieren Zitieren Wooow!  

  6. #86
    Registriert seit
    02.10.2006
    Ort
    Tirol
    Beiträge
    159
    Danke
    17
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hallo Leute,

    das mit der PHP Schnittstelle finde ich echt super - hab das Ding mal ausporbiert und geht optimal.

    Jetzt hab ich auch ein bissschen mit Ajax und PHP rumgespielt damit ich wie oben beschrieben das flackern rausbekomme. Funktionert soweit auch - nur da lade ich halt immer wieder den kompletter Code mit dem Verbindungsaufbau rein.

    Gibts da schon was neues von dem Ajax-Script das einmal den Verbidungsaufbau erledigt, nur die Daten aktualisiert ?

    Könnte da jemand eventuell mal ein Bsp. posten, da ich noch nicht fit bin mit Ajax.

    Danke
    T H X T O M A T E
    Zitieren Zitieren Super Sache  

  7. #87
    Registriert seit
    12.09.2012
    Beiträge
    1
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    erstmal vieln Dank an die die sich hier arbeit machen und unterstützen.
    Hab hier ein kleines Projekt und will aus einer Anlagensteuerung Werte auslesen. Nur Zahlen !!
    Und da scheitert es ein wenig, zumal ich nicht genau weiss an welchem Rädchen ich drehen muss um anstatt 1 Byte 1 Wort zukönnen.

    ich nutze das recht simple Script (und doch zu schwer für mich)
    Code:
    <?php
    //include ("hexdump.php");
    error_reporting(E_ALL);
    
    /*****************************************************************************
     *
     * Reading data from a Siemens S7 PLC
     * 
     * Author: Thomas Wiens
     * Date  : 2010/01/03
     *****************************************************************************/
    
    /*****************************************************************************/
    /* Testprogramm
     */
    $plcdata = Array();
    
    $db         = 516;
    $startbyte     = 0;
    $numBytes     = 2;
    
    $plc = new S7PLC("S7400", "121.11.58.10", 0, 3, "TestSPS");
    if ($plc->Open() == 0) {
        echo "Versuche " . $numBytes . " Bytes im Datenbaustein DB ". $db . " ab DBB " . $startbyte . " zu lesen.\n";
    
        $plcdata = $plc->ReadBytes(0, $db, $startbyte, $numBytes);
        if ($plcdata != null) {
            for ($i = 0; $i < count($plcdata); $i++) {
                // Rohdaten ausgeben
                //printf("0x%02X ", $plcdata[$i]);
    //            printf("0x%", $plcdata[$i]);
    //            printf("0x%d", $plcdata[$i]);
    //            printf("0x%e", $plcdata[$i]);
    //            printf("0x%E", $plcdata[$i]);
    //            printf("0x%u", $plcdata[$i]);
    //            printf("0x%f", $plcdata[$i]);
    //            printf("0x%F", $plcdata[$i]);
    //            printf("0x%o", $plcdata[$i]);
    //            printf("0x%s", $plcdata[$i]);
    //            printf("0x%x", $plcdata[$i]);
    //            printf("0x%G", $plcdata[$i]);
                printf("%d", $plcdata[$i]);
                
            }
        } else {
            echo "Fehler beim Lesen der Daten!\n";
        }
    } else {
        echo "Konnte keine Verbindung zur SPS aufbauen!\n";
    }
    $plc->Close();
    
    /*****************************************************************************/
    /*****************************************************************************/
    /*****************************************************************************/
    
    class S7PLC {
        public $IP;    
        public $CPU;
        public $Rack;
        public $Slot;
        
        public $Name;
        public $Tag;
    
        public $lastErrorCode = 0;        // ErrorCode
        public $lastErrorString;        // string
    
        public $IsConnected = false;    // bool
        public $LastReadTime = 0;        // int
        public $LastWriteTime = 0;        // int
        
        // Privates
        private $mSocket;                // Socket
        
        private $CPU_Type = array ("S7200" => 0, "S7300" => 10,"S7400" => 20);  
        /*****************************************************************************/
        // construction
        public function S7PLC($cpu, $ip, $rack, $slot, $name)
        {
            if ($cpu == '') {
                $this->CPU = "S7300";
            } else {
                $this->CPU = $cpu;
            }
            
            if ($ip == '') {
                $this->IP = "127.0.0.1";
            } else {
                $this->IP = $ip;
            }
    
            if ($rack == '') {
                $this->Rack = 0;
            } else {
                $this->Rack = $rack;
            }
            
            if ($slot == '') {
                $this->Slot = 2;
            } else {
                $this->Slot = $slot;
            }
            
            $this->Name = $name;
            $this->Tag = "foo";
        }
    
        /*****************************************************************************/    
        public function Open()
        {
            $bReceive = array();
    
            try {
                $this->mSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);            
                /* set socket receive and send timeout to 1 second */
                socket_set_option($this->mSocket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));
                socket_set_option($this->mSocket, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 1, "usec" => 0));            
                
                if ($this->mSocket == false) {
                    $this->lastErrorCode = 2; //ErrorCode.ConnectionError;
                    $this->lastErrorString = socket_strerror(socket_last_error());
                    return 2; // ErrorCode.ConnectionError
                } 
                
                $result = socket_connect($this->mSocket, $this->IP, 102);
                    
                if ($result == false) {
                    $this->lastErrorCode = 2; //ErrorCode.ConnectionError;
                    $this->lastErrorString = socket_strerror(socket_last_error($this->mSocket));
                    return 2; // ErrorCode.ConnectionError
                } 
    
            } catch (Exception $e) {
                $this->lastErrorCode = 2; //ErrorCode.ConnectionError;
                $this->lastErrorString = $e->getMessage();
                return 2; // ErrorCode.ConnectionError
            }
            
            // Connect Request
            $bSend1 = array(     3, 0, 0, 22, 17, 224, 0, 0, 0, 46, 
                                0, 193, 2, 1, 0, 194, 2, 3, 0, 192, 
                                1, 9 );
            
            switch ( $this->CPU ) {
                case ("S7200"):
                    //S7200: Chr(193) & Chr(2) & Chr(16) & Chr(0) 'Eigener Tsap
                    $bSend1[11] = 193;
                    $bSend1[12] = 2;
                    $bSend1[13] = 16;
                    $bSend1[14] = 0;
                    //S7200: Chr(194) & Chr(2) & Chr(16) & Chr(0) 'Fremder Tsap
                    $bSend1[15] = 194;
                    $bSend1[16] = 2;
                    $bSend1[17] = 16;
                    $bSend1[18] = 0;
                    break;
                case ("S7300"):
                    //S7300: Chr(193) & Chr(2) & Chr(1) & Chr(0)  'Eigener Tsap
                    $bSend1[11] = 193;
                    $bSend1[12] = 2;
                    $bSend1[13] = 1;
                    $bSend1[14] = 0;
                    //S7300: Chr(194) & Chr(2) & Chr(3) & Chr(2)  'Fremder Tsap
                    $bSend1[15] = 194;
                    $bSend1[16] = 2;
                    $bSend1[17] = 3;
                    $bSend1[18] = $this->Rack * 2 * 16 + $this->Slot;
                    break;
                case ("S7400"):
                    //S7400: Chr(193) & Chr(2) & Chr(1) & Chr(0)  'Eigener Tsap
                    $bSend1[11] = 193;
                    $bSend1[12] = 2;
                    $bSend1[13] = 1;
                    $bSend1[14] = 0;
                    //S7400: Chr(194) & Chr(2) & Chr(3) & Chr(3)  'Fremder Tsap
                    $bSend1[15] = 194;
                    $bSend1[16] = 2;
                    $bSend1[17] = 3;
                    $bSend1[18] = $this->Rack * 2 * 16 + $this->Slot;
                    break;
                default:
                    return 1; //ErrorCode.WrongCPU_Type;
            }
            
            $msg = "";
            for ($i = 0; $i < count($bSend1); $i++) {
                $msg  .= chr($bSend1[$i]);
            }
            
            socket_write($this->mSocket, $msg, strlen($msg));
            
            $buf = "";
            $buf = socket_read($this->mSocket, 22);
            if ( strlen($buf) != 22) {
                throw new Exception("WrongNumberReceivedBytes");
            }
            
            // Data Packet with PDU size
            $bSend2 = array(    3, 0, 0, 25, 2, 240, 128, 50, 1, 0, 
                                0, 255, 255, 0, 8, 0, 0, 240, 0, 0, 
                                3, 0, 3, 0, 240 ); // 240 ist die PDU size
            
            $msg = "";
            for ($i = 0; $i < count($bSend2); $i++) {
                $msg  .= chr($bSend2[$i]);
            }
            
            socket_write($this->mSocket, $msg, strlen($msg));
            
            $buf = socket_read($this->mSocket, 27);
            if ( strlen($buf) != 27) {
                throw new Exception("WrongNumberReceivedBytes");
            }
            $this->IsConnected = true;    
            
            return 0; //ErrorCode.NoError;
        }
        /*****************************************************************************/        
        function Close()
        {
            socket_close($this->mSocket);
            $this->IsConnected = false;
        }
        
        /*****************************************************************************/        
        function ReadBytes($DataType, $DB, $StartByteAdr, $count)
        {
            $bytes = Array(); //evtl. SplFixedArray
            try {
                $packageSize = 31;
                // Header
                $package = "\x03\x00\x00";
                $package .= Chr($packageSize);
                $package .= "\x02\xf0\x80\x32\x01\x00\x00\x00";
                $package .= "\x00\x00\x0e\x00\x00\x04\x01\x12";
                $package .= "\x0a\x10";
                $package .= "\x02";        // Type: Byte
                    
                // Anzahl der zu lesenden Bytes        
                $b = pack("V", $count);
                $package .= $b[1] . $b[0];
    
                // Datenbaustein nummer
                $b = pack("V", $DB);
                $package .= $b[1] . $b[0];
                // Area
                $package .= Chr(132); // 0x84 = Datenbaustein
                // Startadresse
                // unterste 3 Bits sind für die Bitadresse
                $bytead = $StartByteAdr * 8;
                $b = pack("V", $bytead);            
                $package .= $b[2] . $b[1] . $b[0];
                
                // Anfrage senden
                socket_write($this->mSocket, $package, strlen($package));
                
                // Antwort auswerten
                $recv = "";
                $recv = socket_read($this->mSocket, 512);
                
                if (Ord($recv[21]) != 0xff) {
                    throw new Exception("WrongNumberReceivedBytes");
                }
                for ($i = 0; $i < $count; $i++) {
                    $bytes[$i] = Ord($recv[$i+ 25]);
                }
                return $bytes;
                
            } catch (Exception $e) {
                $this->lastErrorCode = 50; //ErrorCode.WriteData;
                $this->lastErrorString = $e->getMessage();
                return null;
            }
        }
    }
    
    ?>
    Kann ich das mit diesem Script denn?
    Zitieren Zitieren Word anstatt Byte  

  8. #88
    Registriert seit
    29.03.2004
    Beiträge
    5.610
    Danke
    141
    Erhielt 1.653 Danke für 1.203 Beiträge

    Standard

    Hi,
    verwende mal den letzten Stand der s7plc-Klasse aus diesem Post:
    http://www.sps-forum.de/showthread.p...937#post317937

    Dort sind diverse Konvertierungsfunktionen wie getS16At() enthalten um die Roh-Daten als Werte anderen Datentyps zu interpretieren.
    Den Funktionen musst du die gelesenen Roh-Daten und die Position im übergeben, ab der die Funktion die Daten als ein anderen Datentyp interpretieren soll. Wenn du z.B. einen ganzen DB aus der SPS liest, kannst du für die Interpretier-Funktionen die Anfangsadressen verwenden die du in Step7 angezeigt bekommst.

    Wenn du nur ein einziges Word lesen und dieses in php als vorzeichenbehafteten Integerwert interpretieren willst, musst du 2 Bytes aus der SPS lesen und dann mit der Funktion getS16At($plcdata, 0) in einen Integer wandeln.

  9. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    hochemer (13.09.2012)

  10. #89
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Moin,

    wäre es eigentlich auch irgendwie möglich diese PHP Seite auf einem IPAD oder Android laufen zu lassen?
    Der Hintergrund ist der, dass man dann evtl. eine Seite basteln könnte zb mit der Maschine als Übersichtsbild, und dann Produktionsdaten von der SPS auf dem Tablet anzeigen zu lassen.
    Müsste ich dann praktisch so etwas wie XAMPP für Android under IPAD installieren?
    Oder benötige ich noch mehr?
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  11. #90
    Registriert seit
    25.07.2005
    Ort
    Vogelsbergkreis
    Beiträge
    1.716
    Danke
    48
    Erhielt 68 Danke für 60 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Käse,
    der Webserver läuft ja weiterhin auf einem PC. Du musst im iPad nur die Seite vom entsprechenden Webserver aufrufen. PHP generiert ja serverseitig nichts anderes als HTML/JS.
    Allerdings werden bei vielen Clients mit dem Code hier ständig Verbindungen geöffnet und geschlossen, das halte ich für nicht so toll.
    Ich verwende deswegen einen eigenen WebService den ich von meinen Webseiten aus mit JavaScript und JSON anspreche.

Ä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
  •