# Snap7 Fragen



## sephias (19 April 2022)

Hallo zusammen,

ich habe aktuell über meine Firma die Möglichkeit mich in Sachen Hochsprachen in Verbindung mit SPS weiter zu entwickeln.
Aktuell noch über Learning by Doing 

Ich habe jetzt mal Versucht die Snap7 Verbindung mit einer SPS auf zubauen. Die Verbindung hat auch soweit geklappt.
Nun wollte ich fragen ob und wenn ja wie, ich über das C# Programm einen Ein oder Ausgang auslesen kann? Also einfach mal nur das Signal abfragen. Geht das nur wenn ich die Daten in einem DB habe? Oder kann ich direkt auf einen Eingang zugreifen?
Hat da vielleicht jemand ein paar Code schnipsel parat woraus ich mir was zusammen reimen ( nicht klauen ) kann evtl.

Was würdet ihr sagen ist die "Einfachste" Lösung (OPC,Snap7 etc ) über C# mit einer SPS zu Kommunizieren? Oder würdet ihr sogar eine andere Sprache empfehlen?
Wenn man das ganze über OPCUA macht, gibt es da Gratis Versionen zum testen?

Sorry für die ganzen Anfänger Fragen  Habe in Sachen OPC etc noch nicht so viele Erfahrungen gesammelt.

Grüße


----------



## Gerhard Bäurle (19 April 2022)

Wenn Du Dich mal mit der Arbeitsweise einer SPS beschäftigts, wirst Du erkennen, dass es gar nicht erstrebenswert ist, von außen direkt auf den E/As zuzugreifen. Das sollte man dem SPS-Programm überlassen.

Sonst: 7Sharp habe ich noch nie gehört. Ich würden von proprietärem Zeug auch die Finger weg lassen und eher den OPCUA-Standard nutzen.


----------



## DeltaMikeAir (19 April 2022)

Gerhard Bäurle schrieb:


> Wenn Du Dich mal mit der Arbeitsweise einer SPS beschäftigts, wirst Du erkennen, dass es gar nicht erstrebenswert ist, von außen direkt auf den E/As zuzugreifen. Das sollte man dem SPS-Programm überlassen.


Warum sollte man nicht von außen den Status von E/A´s lesen? Er schreibt ja auslesen und nichts von schreibender Zugriff.
Im Prinzip macht das jede VISU, wenn man die entsprechenden Variablen anlegt.


sephias schrieb:


> wie, ich über das C# Programm einen Ein oder Ausgang *auslesen* kann?


----------



## Gerhard Bäurle (19 April 2022)

DeltaMikeAir schrieb:


> Warum sollte man nicht von außen den Status von E/A´s lesen? Er schreibt ja auslesen und nichts von schreibender Zugriff.
> Im Prinzip macht das jede VISU, wenn man die entsprechenden Variablen anlegt.


Das habe ich wohl nicht richtig gelesen ...  🙈


----------



## sephias (19 April 2022)

Gerhard Bäurle schrieb:


> Wenn Du Dich mal mit der Arbeitsweise einer SPS beschäftigts, wirst Du erkennen, dass es gar nicht erstrebenswert ist, von außen direkt auf den E/As zuzugreifen. Das sollte man dem SPS-Programm überlassen.
> 
> Sonst: 7Sharp habe ich noch nie gehört. Ich würden von proprietärem Zeug auch die Finger weg lassen und eher den OPCUA-Standard nutzen.


Ich habe mich natürlich schon öfter mit der SPS beschäftigt. Wie oben beschrieben mache ich aktuelle nur kleinere Versuche in Verbindung mit C# um das ganze besser zu verstehen was die Kommunikation betrifft. Also noch nichts ernst zunehmendes 
Ja ich meinte Snap7 / Sharp7 ,  hab da leider Namentlich was durcheinander gebracht 🙈


----------



## DeltaMikeAir (19 April 2022)

@Thomas_v2.1 kann dir da sicherlich gut weiterhelfen.


----------



## andy_l (19 April 2022)

Ich benutze für meine (nur intern verwendeten) Projekte Sharp7 und finde es recht einfach einzubinden. Hat halt auch den angenehmen Vorteil, dass man keine dll mitgeben muss.


----------



## Tschoke (19 April 2022)

Beispiel (ungetestet):

```
S7Client client = new S7Client();
client.ConnectTo("192.168.8.123", 0, 1);

//read
byte[] readBuffer = new byte[10];
string result=client.ErrorText(client.EBRead(1, readBuffer.Length, readBuffer));
```

Liest dir EingangsByte 1-10.


----------



## DeltaMikeAir (19 April 2022)

Ansonsten einfach hier mal rein schauen, dort ist alles gut beschrieben:
Sharp7 Referenz Handbuch


----------



## DeltaMikeAir (19 April 2022)

Gerhard Bäurle schrieb:


> Ich würden von proprietärem Zeug auch die Finger weg lassen und eher den OPCUA-Standard nutzen.


Ich nicht unbedingt. Es kommt halt auf die Anforderungen an. Wenn die Funktionalität für das eigene Projekt ausreichend ist, warum nicht.
Außerdem braucht man dann keine OPC UA Lizenz (💲)


----------



## STEP7_NEWBEE (19 April 2022)

Hallo, also ich habe bei meinen Anwendungen die Snap7 Funktionen in LabVIEW eingebunden. Da gab es in einem Beispielprojekt jede Menge Beispiele, wo der Zugriff auf Datenbausteine, Merker usw erklärt wurde.
Allgemein muss man vl bedenken:
1. Preis (Snap7 ist kostenlos)
2. ob du nur über absolute Adressen zugreifen willst - ohne symbolische Information. Die Symbolische Information ( der Name der Variable wird in Snap7 nicht übertragen) - muss man halt dann vor allem für Änderungen bedenken, wenn auf der Sps welche stattfinden ..
3. die Geschwindigkeit die du benötigst - da wirst du vermute ich mit snap7 ebenfalls um einiges flotter sein.

Allgemein ist es aber auf alle Fälle praktisch deine auszulesenden Werte gebündelt in einem Datenbaustein abzulegen anstatt auf jede Adresse einzeln über die Read Funktionen (readDb, readMw usw)  zuzugreifen der Mehrfachaufruf kostet sonst natürlich Zeit - 😉

Aja die einzigen Probleme die ich damals noch hatte (ich habe mir damals für einen Versuchsstand eine Visualisierung in labView erstellt - pc mit labview und s7300 mit Ethernet Modul ) 

Den Schreibzugriff auf ein Bit im Db hatte ich nicht richtig konfiguriert bekommen.. 
und snap7 oder Labview? Hatte das Problem, dass nach mehrmaligen verbinden , keine Kommunikation bei Programmstart mehr hergestellt werden konnte , außer man hat labview ganz geschlossen .. da gibts aber bestimmt Lösungen dafür..

LG


----------

