Links hierher Zu Buch hinzufügen PDF exportieren Seite umbenennen Buch erstellen Diese Seite zum Buch hinzufügen Buch erstellen Diese Seite aus Buch entfernen Buch anzeigen, ändern (0 Seite/n) Hilfe S7-Web-LINK S7-Web-LINK liefert Daten aus einer SPS mithilfe einer Json Rest-API © by TIS Erste Schritte Konfigurationsdatei bearbeiten S7-Web-LINK.config { "WebServerSettings": { "Port": 8080, "UseHTTPS": true, // Whether SSL (HTTPS) should be used or not "Certificate": "S7-Web-LINK.pem" // Path to certificate file }, "Connections": { "SPS-1": { // Predefined connection see chapter "Request -> Connection" "IPAddr": "127.0.0.1", "PlcType": "s7_300_400", "Channel": "op", "Rack": 0, "Slot": 2, "RxTimeout": 5000, "TxTimeout": 5000, "ConTimeout": 5000 } }, "TokenList": { // SPS with the IP "127.0.0.1" could be accessed using "Auth": "password" "127.0.0.1": "password", "192.168.2.123": "secret", "192.168.0.80": "123456" } } SSL Zertifikat generieren (optional) Beispiel Zertifikate S7-Web-LINK.pem -----BEGIN CERTIFICATE----- MIICWDCCAcGgAwIBAgIJAIfbmjDRjQcwMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV BAYTAkRFMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTYwMjIyMTIyNjMxWhcNMTcwMjIxMTIyNjMxWjBF MQswCQYDVQQGEwJERTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gQC/u0VOmGadfg7WsGSDi8SxBl+KCALRw24DHFotnsiSBAp1st+TNd8wzrpjAsLb 1f1ZnmN2/PthSGzorhMGJC4iMXcDk1TmDLgDuoTovq8dJ/vqXcHaEr+T59vJAn+s NR2tR7PlARykWTCO0qizcigW1ICIyEmYkuQokeZsHAaqWQIDAQABo1AwTjAdBgNV HQ4EFgQUVVSEEuEv+mAbb/C4wEZYjxbucbMwHwYDVR0jBBgwFoAUVVSEEuEv+mAb b/C4wEZYjxbucbMwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQCw+IaN GMYDwonsMstcXs5DC9lqvVGBnBPF3biF76q/MsKy+zytFmFsPsqlV/OMRLstTC+0 WDIB6WaoHpBrzJopxVOZQQczbdqWfUcpI++6Q8o6peBtzyAqa5IAygfia3yMOI7R laxVSfbEqEzPVow8QcaiewLWqEFGBOlsIVDv8w== -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC/u0VOmGadfg7WsGSDi8SxBl+KCALRw24DHFotnsiSBAp1st+T Nd8wzrpjAsLb1f1ZnmN2/PthSGzorhMGJC4iMXcDk1TmDLgDuoTovq8dJ/vqXcHa Er+T59vJAn+sNR2tR7PlARykWTCO0qizcigW1ICIyEmYkuQokeZsHAaqWQIDAQAB AoGAQvK9TKhijHPL8qM9NcHEOJwlGCmb8mrvKx7nTi63kmTe0iJXdyvEd2J4KsJ4 EBM0l+p6iL3leR61CLpf4jEX+jUNJgFgduwLpXMeq/jaNAxNRRsiDEnmFqIMZGYX R+9/e2dTlJFAe/VAOuMxylLUVqWKQpI/3eaQRo0GkRUMYAECQQD1UCvntG0D7e1u ksh8QUwY4A28FvLbiCxYK0jpw15iKDz/DlwhrfZB8I5EgVQMWXJWcGUWSzbEvqRr 4P+6SakBAkEAyBWJJ7qDL7DgqIbgaQWLicqhKF3mO1nxj5DtEtUdu/cP0liGiV8M tlMyf/YWuI9l3qmfMUXXjaQjkavFTJnpWQJAP/wnV4piHPJESeETVgWaGarnKjY6 JjTAjEbN/9srlSK1tjlCoq5DWzOpiAjLqWTzQ8SROV1o7axkKpdHXIm2AQJAatCs bwwwOsaXuQCATzDJpJ8LWAyA+9BxmC5LkhE6FX248ZeXA0E9/Rv/SrbqvE65mJw/ Q0PA5nnpDzx/UPydyQJBAMH3ZdrdxwF2rvdXtjNYq1NkG2N783Uok6WQ55mDiBhn sBd9qHiTnGsjZHFJasb01y5w87ZxE6aDdvMO0XCdKOY= -----END RSA PRIVATE KEY----- Windows Download SSL Manager Linux Installieren Sie OpenSSL für Debian- oder Ubuntu-basierte Distributionen: sudo apt-get install openssl Installation auf anderen Linux-Distributionen - GenerateKey.sh openssl genrsa -out server.key 1024 openssl req -days 365 -out server.pem -new -x509 -key server.key cat server.pem >> S7-Web-LINK.pem cat server.key > S7-Web-LINK.pem Beispiel Dies wird ein Wert aus unserem SPS mit JavaScript zu lesen PHP Beispiel Mit cURL <?php // The data to send to the API $postData = array( "Auth" => "password", "Connection" => array( "IPAddr" => "127.0.0.1" ), "Read" => array( array( "Addr" => "DB1000.DBB 304", "Type" => "string", "Length" => 10 ), array( "Addr" => "DB1000.DBX 322.0", "Type" => "byte" ) ) ); // Setup cURL $ch = curl_init("https://127.0.0.1"); curl_setopt_array($ch, array( CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), CURLOPT_POSTFIELDS => json_encode($postData) )); // Send the request $response = curl_exec($ch); // Check for errors if($response === FALSE){ die(curl_error($ch)); } // Decode the response $responseData = json_decode($response, TRUE); // Print the date from the response var_dump($responseData); ?> Ohne cURL <?php // The data to send to the API $postData = ... // Create the context for the request $context = stream_context_create(array( "http" => array( // http://www.php.net/manual/en/context.http.php "method" => "POST", "header" => "Content-Type: application/json\r\n", "content" => json_encode($postData) ) )); // Send the request $response = file_get_contents("https://127.0.0.1", FALSE, $context); // Check for errors if($response === FALSE){ $error = error_get_last(); var_dump($error); die(); } echo $response . "<br />"; // Decode the response $responseData = json_decode($response, TRUE); // Print the date from the response var_dump($responseData); ?> Request Connection { "Auth": "password", // Password or Token "Connection": "SPS-1", // Name predefined in the configuration file "Read": [ ... ], // optional "Write": [ ... ] // optional } { "Auth": "password", // Password or Token "Connection": { "IPAddr": "127.0.0.1", "PlcType": "s7_300_400", // optional, could be set to "s7_300_400" (default), "s7_1200", "s7_1500", "s7_200", "s7_logo" "Channel": "op" // optional, could be set to "op" or "pg" "Rack": 0, // optional "Slot": 2, // optional "RxTimeout": 5000, // optional, default 5000 "TxTimeout": 5000, // optional, default 5000 "ConTimeout": 5000 // optional, default 5000 }, "Read": [ ... ], // optional "Write": [ ... ] // optional } Read { "Auth": "password", "Connection": { ... }, "Read": [{ "Addr": "DB1000.DBB 304", "Type": "string", "Length": 10 }, { "Addr": "DB1000.DBX 322.0", "Type": "byte" }] } Write { "Auth": "password", "Connection": { ... }, "Write": [{ "Addr": "DB1000.DBB 304", "Type": "string", "Value": "HelloWorld" }, { "Addr": "DB1000.DBD 300", "Type": "double", "Value": 13.7 }] } Read / Write Typen Name Bit byte 8 (unsigned) word 32 (unsigned) word16 16 (unsigned) word32 32 (unsigned) word64 64 (unsigned) int 32 (signed) int16 16 (signed) int32 32 (signed) int64 64 (signed) float 32 (signed) double 64 (signed) string Response Connection { "Connection": { "PlcType": ..., // echo (same as request) "Channel": ... // echo (same as request) "IPAddr": ..., // echo (same as request) "Rack": ..., // echo (same as request) "Slot": ..., // echo (same as request) "RxTimeout": ..., // echo (same as request) "TxTimeout": ..., // echo (same as request) "ConTimeout": ..., // echo (same as request) "Result": { "Value": -2, // default 0 "Message": "The maximum number (256) of the possible connections is reached!" // default "OK" } }, "Read": [ ... ], // optional "Write": [ ... ] // optional } Read { "Connection": { ... }, "Read": [{ "Addr": "DB1000.DBB 304", // echo (same as request) "Type": "string", // echo (same as request) "Length": 10, // echo (same as request) "Value": "HelloWorld", "Result": { "Value": 0, // default 0 "Message": "OK" // default "OK" } }, { "Addr": "DB1000.DBX 322.0", // echo (same as request) "Type": "byte", // echo (same as request) "Value": null, // if read failed value will be null "Result": { "Value": -1, // default 0 "Message": "Desired data type is not allowed or is not supported." // default "OK" } }] } Write { "Connection": { ... }, "Write": [{ "Addr": "DB1000.DBB 304", // echo (same as request) "Type": "string", // echo (same as request) "Value": "HelloWorld", // echo (same as request) "Result": { "Value": 0, // default 0 "Message": "OK" // default "OK" } }, { "Addr": "DB1000.DBD 300", // echo (same as request) "Type": "double", // echo (same as request) "Value": 13.7, // echo (same as request) "Result": { "Value": 0, // default 0 "Message": "OK" // default "OK" } }] } Error Nachrichten Value Message Description (Reaction) 0 OK Default Everything okay -1 Timeout, PLC not reachable. Start further read/write operations. The driver automatically repairs the connection. May you hav to increase the timout values (receive/connect timeout). -2 The maximum number (256) of the possible connections is reached. Close unused connections -5 General error. Check whether network is properly installed in the PC: TCP / IP enabled? Winsocket installed? -6 Target CPU not found. Rack or number of slot invalid.No connection to these slot available. Check configuratiopn in CP and PLC -7 Socket error "Result": { "Value": -7, "Message": "Socket error", "SocketError": { "Value": 10013, "Message": "Permission denied." } } Win Socket errorlist -8 Memory error Requested memory in the PC is not available. -9 Overrange e.g.. timer > 9990000 ms -10 Desired data type is not allowed or is not supported. Check that the code for data type is valid. -11 The specified PC data type do not correspond to thespecified PLC data area. e.g : This can occur if you want to access counter and the PC is specified as data type BYTE. Solution: Change the data type in the PC. -31 PC and S7 data type are in invalid relation e.g. PC = BYTE = Word PLC Adjust PC – data area. -32 S7 returns incorrect number of data for the specified data type. -33 Consecutively access to multiple bits not available. -34 The requested request block could not be assigned. -1002 No resource available. Maximum of the available connections is reached. 2 Block or data area does not exist, for example access to DB, which is not available, or too small. Verify that the desired data area exists in the PLC. Inhaltsverzeichnis Erste Schritte Konfigurationsdatei bearbeiten SSL Zertifikat generieren (optional) Beispiel Zertifikate Windows Linux Beispiel PHP Beispiel Mit cURL Ohne cURL Request Connection Read Write Read / Write Typen Response Connection Read Write Error Nachrichten