Step 7 Daten an s7-300 senden /ethernet

Bekanor

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

obwohl ich es nicht für so schwer gehalten hätte habe ich bei meinem aktuellen Projekt dann doch arge Probleme und hoffe auf Hilfe. Beim Suchen kamen immer nur Ergebnisse das Leute Sachen aus der SPS auslesen wollten..

Der Plan:
ein PC schickt eine Datei an die SPS, diese verwertet die Werte. [es ist eine Textdatei die auf die IP kopiert wird, in der ein paar Zahlen stehen, gesamt so etwa 20 Bytes. Ich will nur die Zahlen haben]
Ich möchte nur alle etwa 60s meine 20 Bytes haben, ich brauche keine Bestätigung o.Ä. dafür)

Die Probleme:

1. ist das überhaupt so einfach möglich? Wobei es der Softwareentwickler wohl nicht getan hätte wenn es nicht gehen würde..

2. brauche ich dazu eine aktive Verbindung (TCP..?), wie kann ich diese aufbauen?

3. oder geht es über UDP? Ist zwar ungeprüft, stört aber nicht.

4. oder brauche ich andere Hardware... (kann der integrierte CP das nicht, und es muss ein extra CP her?)


Umstände:
Win7 PC
CPU 314C-2 PN/DP
Step7 5.5
OCW für Netzwerkverbindung
am Firmennetzwerk

Details..

Ich habe mal versuche selber eine Datei vom PG zu senden, wenn ich nur die IP nehme dauert es 4-5 Sekunden bis zum Timeout "..keine Verbindung..." Versuche ich es mit einer Portnummer (wie im OCW angegeben) kommt dieser sofort. Vermutlich also grundlegend erst einmal die Verbindung falsch. [senden erfolgt wohl wie ein einfaches copy aus der Windows Befehlszeile)

Die Verbindung habe ich über den OCW versucht einzurichten, bislang erfolglos.
Wie entscheiden sind die Ports? Ich muss ja immer welche angeben, wie wähle ich den "richtigen" aus?
Da es ein größeres Firmennetzwerk ist, muss ich irgendwelche Netzübergänge beachten? (PC und SPS sind zwar im selben Verteiler angesteckt [hat ne eigene IP], aber es gibt DHCP, Gateway und DNS-Server. Die sind nicht bei uns im Hause..) Wenn ich in der HW "Router verwenden" versuche bekomme ich die Fehlermeldung unterschiedliche Subnetze. Nur habe ich darauf keinen Einfluss (PC/SPS x.x.32.x, der Rest x.x.16.x bzw x.x.35.x)

Wenn ich UDP nutze (da erhoffe ich mir das er sich an der Textdatei nicht stört und die Bits einfach unbeirrt in den DB schreibt) benötige ich dafür auch TCON? Er muss da ja nichts zurücksenden..


alles sehr verwirrend, aber so langsam gehen mir die Ideen aus. Hoffentlich kann da jemand helfen..

mfg Beka
 
Wenn du eine S7-CPU eine .txt Datei schickst, denkt diese sich "was soll ich damit? werf ich in die Mülltonne"...

Was du suchst ist eine Verbindung über den TCP-Port 102.
Hierfür kannst du libnodave oder snap7 oder auch kostenpflichtige Teilsoftware verwenden...
Diese Teilsoftware bindest du dann in dein eigenes Programm ein, welche sich alle 60s eben deine Textdatei anschaut und die 20bytes dann in einen DB der SPS schreibt. Dann kann die S7 auch was damit anfangen und die Werte in dem DB verarbeiten...

MfG Fabsi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Beka,

Du kannst ganz normal über TCP oder UDP den Inhalt der Datei empfangen. Du mußt nur TCON mit einer passenden Projektierung mit passivem Verbindungsaufbau aufrufen, damit auf der 314C-2 PN/DP der als "local_tsap_id" projektierte Port geöffnet wird, an den Dein PC die Textdatei senden muß. Die Bytes der Textdatei empfängst Du mit TRCV bzw. TURCV. Empfehlung: die Textdatei sollte eine vorher vereinbarte/bekannte Länge haben oder eindeutige Endezeichen enthalten.

S7-Verbindung mit Port 102 sowie der dazu auf dem PC nötige S7-"Treiber" ist nicht erforderlich.

Wie wird eine TCP Verbindung für die offene Kommunikation über Industrial Ethernet programmiert?
Wie wird eine UDP Verbindung für die offene Kommunikation über Industrial Ethernet programmiert?

Harald
 
Danke für die ersten Antworten,

also.. an der Verbindung bin ich wohl etwas weiter. Mit dem Port 102 zeigt er jedenfalls im TCON Status 7000 (keine Bearbeitung aktiv) und im TURCV 7002 (empfange Daten)..

[gelöscht]

:update: mit ner anderen SPS+CP geht die Verbindung, am senden hapert es.

:update2:
das Datei senden funktioniert so wohl nicht, es wird ein Druckauftrag kopiert, der wird aber nur an eine IP gesendet (kein Port, keine Verbindung aufgebaut). Tausche ich die SPS gegen einen Drucker der seine Aufträge über IP:port bekommt, empfängt die SPS. Muss also das Senden verändert werden. Und wenn das dann läuft, versuche ich die Verbindung auf die 314c-2 pn/dp zu verlagern..
 
Zuletzt bearbeitet:
also.. an der Verbindung bin ich wohl etwas weiter. Mit dem Port 102 zeigt er jedenfalls im TCON Status 7000 (keine Bearbeitung aktiv) und im TURCV 7002 (empfange Daten)..
Den Port 102 solltest Du auf der SPS 314C-2 PN/DP auf keinen Fall verwenden, sonst kannst Du die SPS nicht mehr über Ethernet programmieren und keine HMI anschließen. Der Port 102 ist für S7-Protokoll reserviert.

Du mußt lediglich einen TCP/UDP-Server auf der SPS einrichten, der auf einem Port xyz (z.B. 2345 oder 9100 oder ...) auf eingehende TCP/UDP-Nachrichten wartet. Dazu mußt Du TCON mit einer passenden Verbindungsprojektierung mit passivem Verbindungsaufbau aufrufen.

Zum Test des von Dir auf der SPS einzurichtenden TCP/UDP-Servers kannst Du ein grafisches Terminalprogramm wie Hyperterm oder Hercules oder ... benutzen.



:update: mit ner anderen SPS+CP geht die Verbindung, am senden hapert es.

:update2:
das Datei senden funktioniert so wohl nicht, es wird ein Druckauftrag kopiert, der wird aber nur an eine IP gesendet (kein Port, keine Verbindung aufgebaut). Tausche ich die SPS gegen einen Drucker der seine Aufträge über IP:port bekommt, empfängt die SPS. Muss also das Senden verändert werden. Und wenn das dann läuft, versuche ich die Verbindung auf die 314c-2 pn/dp zu verlagern..
Wie das Senden vom PC funktioniert das sollte Dir der Softwareentwickler erklären, der Dir sagte, daß das einfach von der Windows-Kommandozeile geht. Vielleicht will er ein Tool wie netcat oder ncat oder einen COM-Port-Redirektor verwenden. Oder die SPS per Netzwerkdrucker-Treiber ansprechen (dann müsstest Du wohl auf der SPS das Drucker-Handshake/Protokoll programmieren)?


Wie das IP-Routing vom PC zur SPS funktioniert muß Deine SPS nicht wissen. Wichtig ist nur, daß wenn der PC in einem anderen IP-Subnetz ist, dann muß in der SPS "Router verwenden" und die IP-Adresse des zuständigen Routers eingetragen werden. Die IP-Adresse des Routers erfrage bei Eurem Netzwerkadministrator. Sie muß im selben Subnetz wie die SPS liegen. Wenn PING vom PC zur SPS funktioniert, dann ist das auf der SPS schon richtig konfiguriert. Eventuell müssen noch Routingregeln und Firewalls angepasst werden. Dazu sprich ebenfalls mit Eurem Netzwerkadministrator. Vielleicht gibt der Dir auch vor, welche Nummer bzw. aus welchem Bereich der Port des TCP/UDP-Servers der SPS sein muß.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
soooooo...

fast fertig, kurze Auflösung.

das "senden" bzw "copy": die Funktion wird verwendet weil es sonst deutlich teurer wäre eine Verbindung einzurichten. Die Datei wird so nun in Windows an einen "Netzwerkdrucker" gesendet. Statt des Druckers hängt da die SPS und nimmt die Daten entgegen.
Die Verbindung ist als passives TCP mit unspezifizierten Partner eingerichtet. Port ist derselbe sein wie beim Drucker angegeben.

TCON gibt den Status 7000 aus, keine Fehler.
TRCV gibt zwar (ich glaube) 80b4 aus, Verbindungsfehler, funktioniert aber. Der Server baut scheinbar die Verbindung nur beim drucken auf, danach ab.

Ich empfange so das Textdokument als ASCII-Zeichenfolge. Also jedes Zeichen ist ein Byte in Hex und wird im DB abgelegt.

letztes Problem:
ich möchte so aus den Ziffern von mehreren Bytes eine Zahl im DINT haben.
Code:
Byte      1  2  3  4  5  6  7
Hex.Wert  30 31 32 33 34 35 36
ist Dez:   0  1  2  3  4  5  6

 soll eine DINT im Wert von 123456 werden
gibt es da eine einfache Möglichkeit? Ich würde es notfalls mathematisch ausrechnen.. Byte7 + (Byte 6x10) + (Byte 5x100) + (Byte 4x1000)...

auf jeden Fall danke für die Hilfe, hat einige Zweifel und Fragen aufgelöst.

mfg Bekanor
 
Zurück
Oben