# Snap7 trifft auf Javascript



## mathiak (16 August 2014)

Hallo zusammen,

ich möchte euch gerne mein jetziges Freizeitprojekt vorstellen.
Und zwar handelt es sich dabei um ein Node.js Wrapper für die snap7 Bibliothek. Für alle, die sich jetzt fragen was Node.js ist, hier ein kurzer Wiki Auszug


> Node.js ist eine serverseitige Plattform zum Betrieb von Netzwerkanwendungen. Insbesondere lassen sich Webserver damit realisieren. Node.js basiert auf der JavaScript-Laufzeitumgebung „V8“, die ursprünglich für den Chrome-Browser entwickelt wurde, und bietet daher eine ressourcensparende Architektur, die eine besonders große Anzahl gleichzeitig bestehender Netzwerkverbindungen ermöglicht.



Javascript hat natürlich in erster Linie nichts mit Hochsprachen zu tun, aber das Addon selber ist in C++ geschrieben. Da ich nicht viel Zeit habe, kein gelernter Programmierer bin und das Projekt weit davon entfernt ist fertig zu sein, ist natürlich jede Hilfe willkommen 

Und was kann man damit nun anfangen? Zum Beispiel mit wenigen Zeilen Javascript ein paar Daten der SPS lesen oder schreiben

```
[B]var[/B] snap7 [B]=[/B] require([COLOR=#DD1144]'node-snap7'[/COLOR]);

[B]var[/B] s7client [B]=[/B] [B]new[/B] snap7.S7Client();
s7client.ConnectTo([COLOR=#DD1144]'192.168.1.222'[/COLOR], [COLOR=#009999]0[/COLOR], [COLOR=#009999]1[/COLOR], [B]function[/B](err) {
    [B]if[/B](err)
        [B]return[/B] console.log([COLOR=#DD1144]' >> Connection failed. Code #'[/COLOR] [B]+[/B] err [B]+[/B] [COLOR=#DD1144]' - '[/COLOR] [B]+[/B] s7client.ErrorText(err));

    [COLOR=#999988][I]// Read the first byte from PLC process outputs...[/I][/COLOR]
    s7client.ABRead([COLOR=#009999]0[/COLOR], [COLOR=#009999]1[/COLOR], [B]function[/B](err, res) {
        [B]if[/B](err)
            [B]return[/B] console.log([COLOR=#DD1144]' >> ABRead failed. Code #'[/COLOR] [B]+[/B] err [B]+[/B] [COLOR=#DD1144]' - '[/COLOR] [B]+[/B] s7client.ErrorText(err));

        [COLOR=#999988][I]// ... and write it to stdout[/I][/COLOR]
        console.log(res)
    }); 
[COLOR=#333333][FONT=Consolas]});
[/FONT][/COLOR]
```

oder eine kleine Weboberfläche erstellen




Projektrepo: https://github.com/mathiask88/node-snap7

Gruß,
Mathias


----------



## 99ouip (14 September 2014)

Hallo Mathias,

hört sich super an.

Damit kann man dann von  einem Gerät im lokalen Netzwerk wie z.B. dem eigenen PC eine Verbindung  zur angeschlossenen S7 herstellen?

Ist es auch möglich irgendwo  auf einem Server eine Web-Visualisierung zu erstellen und dann über den  Rechner des Benutzers eine Verbindung mit der direkt an diesen  angeschlossenen SPS aufzubauen? 

Gruß, Tobias


----------



## mathiak (14 September 2014)

Hallo Tobias,

die SPS muss sich im Netzwerk des Servers bzw des PCs auf dem die node.js anwendung ausgeführt wird befinden.

Ich weise auch nochmal darauf hin,  dass sich das Projekt im Entwicklungsstadium befindet, heißt einige Funktionen sind noch nicht implementiert und bereits verfügbare Funktionen nicht ausreichend getestet. Daher rate ich ausdrücklich von produktiven Einsätzen ab. Das heißt jetzt nicht dass gar nichts funktioniert  nur eben dass mit Fehlern zu rechnen ist. Und um Fehler zu finden muss es natürlich benutzt werden. 

Gruß, 
Mathias


----------



## 99ouip (14 September 2014)

Hallo,

danke für die schnelle Antwort!

Die Sache mit dem Verbinden über die WebApp ist mein großes Problem. Wenn irgendjemand einen Tipp hierzu hat: Ich bin für jeden Hinweis dankbar.

Gruß, Tobi


----------



## mathiak (14 September 2014)

Schau dir das hier mal an  https://github.com/mathiask88/node-snap7-testsuite  Das ist eine kleine Test webapp die ich angefange habe. ist aber auch wegen zeitmangel nicht vollständig.


----------

