Sonstiges SPS Variablen auslesen / schreiben

Lain91

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich suche nach einer aktuellen Möglichkeit meine S7-1500 Variablen zu von einem externen Userprogramm (z.B. in C) zu schreiben / lesen.
Meine erste Recherche hat ergeben, dass dies mit der Lizenz pflichtigen SAPI möglich sein soll. Die meisten Einträge dazu waren bereits viele Jahre alt, deswegen bin ich mir unsicher, ob dies noch der aktuelle Stand der Zeit ist.

Meine Wunsch wäre es meine SPS via Ethernet mit meinem PC zu verbinden und Ähnlich wie bereits im TIA Portal integriert meine Variablentabelle auszulesen bzw. wie bei einer Forcetabelle bestimmte Variablen zu setzen, um dann Programmbausteine zu starten.

Vielen Dank für eure Hilfe.

Gruß Lain
 
Hast du eine SoftSPS oder welche Hardware hast du? Es gibt eine API/ODK bei der SoftSPS mit der man auf Windows "zugreifen" kann, wir nutzen den ODK FileServer von Siemens um csv's auf Windows zu schreiben.

Sonst würde ich eher auf OPC-UA setzten da musst du nicht viel neu erfinden. Ob man jetzt da allerdings Forcen kann bezweifle ich, aber mit zwischen Speichern kann man da sicher was in die Richtung machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine S7-1500 - CPU 1513-1 PN zur Verfügung gestellt bekommen. Also keine SoftSPS?

Forcen wäre für mich aus aktueller Sicht sehr wichtig. Grundsätzlich möchte ich mit der SPS ein daran angeschlossenes System testen.
Dies geschieht aktuell über ein an der SPS angeschlossenes HMI, welches per Hand bedient werden muss. Damit die Tests nun aber voll automatisch ablaufen können, würde ich gerne ein Programm schreiben, welches die HMI Bedienung übernimmt.
 
Warum schreibst du das Programm nicht auf der SPS? Also Handbetrieb und Automatik im Automatik werden die Handfunktionen dann in einer bestimmten Reihenfolge aufgerufen.

Forcen geht glaube ich nur über das TIA Portal da musst du dir Openness angucken und ob damit Forcen geht weiß ich nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im ersten Ansatz ginge das auch direkt auf der SPS und im kleinen habe ich das auch bereits schon für einzelne Abläufe so umgesetzt.

Aber die SPS dient als Simulator für ein angeschlossenes System. Nun geht das ganze natürlich wunderbar für den "optimalen Fall" und ich kann automatisch eine Fehlerfreie Simulation automatisch durchführen lassen.
Nun möchte ich jedoch zusätzlich definierte Fehlerfälle durchführen und dies gegen unser System prüfen.

Also habe ich es mir wie folgt vorgestellt: simulation.start(paramterliste)
In der Paramterliste kann ich dann der SPS vorgeben, wie sie sich zu verhalten hat.
Am Ende werte ich dann die log Datei des angeschlossenen Systems aus und kann sehen, ob es sich zu den übergebenen Parametern richtig verhalten hat.
 
Forcen wäre für mich aus aktueller Sicht sehr wichtig.
Was meinst Du mit "Forcen"? Der Stärkere gewinnt? Bzw. der, der die grössere Ausdauer hat? Oder der, der am häufigsten die Chance hat, den Wert zu überschreiben?
Wenn es nur um relativ wenige Werte geht, die Du "forcen" willst, würde ich vorschlagen, das PLC-Programm so zu gestalten, dass es "freiwillig" auf einen von aussen vorgegebenen Wert umschaltet, statt den "selbsterzeugten" zu verwenden. Also eine saubere Umschaltung bestimmter Werte, wobei die Umschaltung von aussen gesteuert wird.
 
Da er ja davon spricht, das es aktuell von einer HMI gesteuert wird, denke ich, das er eigentlich nur ein Steuern von Variablen meint.

@Lain91: Bitte teile uns erstmal mit welche Funktion du genau benötigst
- Forcen: Variable dauerhaft überschreiben auch wenn sie von der SPS (oder Hardware bei Eingängen) in einen anderen Zustand gesetzt wird.
- Steuern: Variable von ausserhalb des SPS-Programms beschreiben.

Steuern sollte mit jeder Bibliothek gehen, die mit einer S7 Kommunizieren kann (AGLink, libnodave, S7net+, ...).
Forcen kannst du, soweit ich weiss, nur mit der Forcetabelle im TIA.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich nutze zur Kommunikation mit S7-Steuerungen und selbstgeschriebenen C#-Programmen S7net+.
Eventuell kannst Du das auch nutzen

Auch hier gilt die Einschränkung, dass nur absolute DBs gelesen und geschrieben werden können und dass PUT/GET aktiviert seinmuss. Damit ist kein symbolischer (optimierter) Zugriff möglich.
 
Danke für eure Anregungen.
Ich habe mit sowohl die SAPI Lib als auch die Open Source Variante SNAP7 angesehen und mich nun für SNAP7 entschieden.

Die Dokumentation und Beispiele sind super, außerdem ist SNAP7 kostenfrei nutzbar.
http://snap7.sourceforge.net/

Es können relativ simpel sowohl Variablen ausgelesen, als auch geschrieben werden.
Leider können nicht alle Funktionen der SNAP7 Lib für die S7-1500 genutzt werden, aber die Grundfunktionen aus denen man sich alles weitere selbst ableiten kann funktionieren.

Vielleicht hilft die Entscheidung jemandem mit ähnlicher Problematik weiter.

Gruß Lain
 
Zurück
Oben