S7-300 TCP/IP Verbindung mit einem PC

HighlanderSAS

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wir haben bei uns in der Firma versucht zwei Systeme mit einander zu verbinden.
Das erst System ist ein Industrie PC und das zweite System ist eine SPS(S7-300).
Beide Systeme kommunizieren via TCP/IP mit einander.

DieKommunikation läuft wie folgt ab:
Die SPS fragtvom PC diverse Meldungen ab (Störung, Warnung, usw.). Dabei sendet die SPS fürjede Meldung einen STRING, der PC liest den STRING aus und weiß was er zurückzu schicken hat. Es sind in Summe 17 Meldungen abzufragen. Realisiert ist dasin der SPS mittels eines DBs, in dem die STRINGS für die verschiedenen Abfragenhinterlegt sind. Ein Pointer durchläuft die Zeilen legt diese in einemZwischenpuffer und dieser Puffer wird mit den Baustein FC5 AG_SENDE über eineTCP/IP Verbindung rausgeschickt.
Dasfunktioniert auch soweit ganz gut. Auch das empfangen von Daten vom PC. DieDaten vom PC werden u.a. ausgewertet und auf einem Touch Panel (MP 377 12“)dargestellt.
Nun ist unsim Testlauf aufgefallen, dass es ziemlich lange dauert bis die SPS alle 17Anfragen an den PC gestellt hat (ca. 1,5 Sekunden). Der SEND Anstoß erfolgtalle 50ms.
Den DBkomplett auf einmal zu senden mittel P#DB201.DBX0.0 BYTE 1550 schlug fehl. Gehtdas nicht bei STRING, gibt es vielleicht eine andere Möglichkeit?

Zur SPS:
CPU S7-312C
CP 343-1 LEAN

Grüße und Danke im Voraus für Eure Hilfe.

 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja Habe ich gemacht.
Wobei ich noch erwähnen müsste, dass ich verschiedene Varianten ausprobiert habe.
Im DB stehen im Augenblick 25 Zeilen (Jede ein STRING[60]).
Das erste String beginnt bei 0.0, die letzte STRING Zeile bei Byte 1488 + 60Byte Länge + 2 Byte (für STRING). Der DB hat eine Gesamtlänge von 1550Byte.

1. Versuch war:
P#DB201.DBX0.0 BYTE 1550 und LEN 1550

2. Versuch war:
P#DB201.DBX0.0 BYTE 1488 und LEN 1550

3. Versuch war:
P#DB201.DBX0.0 BYTE 1488 und LEN 1488

4. Verusch war:
P#DB201.DBX0.0 BYTE 248 und LEN 248


Wobei ich der Meinung bin, dass der 2. Versuch hätte funktionieren müssen, oder?
Was passiert Eigentlich, wenn ich am SEND Eingang nur DB201 schreibe und als LEN 1550?
 
Eigentlich hätte der erste Versuch fumtionieren müssen: Zugriffsbreite und LEN identisch. Dem FC sind die Datentypen egal.
Wenn es sich um einen älteren CP343 handelt, kann es sein, dass Du noch Einschränkungen bezüglich der sendbaren Länge hast. Einfach Mal den AG_SEND markieren und F1 drücken, da solltest Du dann weiterführende Hilfe angezeigt bekommen.
 
Der CP 343-1 LEAN hat die FW 2.6.
Kann es vielleicht auch am STEP7 liegen (V5.4+SP3+HF1)?
Denn unter F1 ist der CP343-1 LEAN nicht aufgeführt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe den CP343-1 LEAN schon mit viel älteren Programmständen vom STEP7 konfiguriert, das sollte also kein Problem sein.
Die Firmware müsste auch aktuell genug sein, um das zu können.
Was kommt denn am PC an? Kommt überhaupt etwas an? Gibt es Fehlermeldungen am CP?
Hast Du eine Möglichkeit, zu sehen, ob und was am PC ankommt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe jetzt nicht verstanden:
Funktioniert die Verbindung oder kommen die Fehler zurück?
Denn 8183 bedeutet :Die Projektierung fehlt oder der ISO-/TCP-Dienst im Ethernet-CP ist noch nicht gestartet.

Wie ist dein CP konfiguriert? Also Verbindungsaufbau usw...


bike
 
Konfiguration vom CP:
- Aktiver Verbindungsaufbau aktiviert
- IPs für Lokal und Partner vergeben
- Port für Lokal 2000 und Partner 2001
- Betriebsart SEND/RECV
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die erste Frage wurde nicht beantwortet:
Funktioniert die Verbindung oder nicht?
Was sagt denn die Diagnose des CP in der Hardwarekonfiguration?


bike
 
Ich habe gerade nochmal nachgeschaut: Die Spezialdiagnose zeigt für die betreffende Verbindung an:
- Verbindung aufgebaut
- Warten auf Send Daten
- Warten auf Empfangsdaten


Ich bin davon ausgegangen, dass die Verbindung Funktioniert.

Nachtrag:
Ich habe gerade mal das Ursprüngliche hergestellt: Senden Zeilenweise.
Der PC empfängt auch und sendet seine Meldung zurück, dennoch liegt am Status vom SEND Baustein 8183 an.

Nachtrag 2:
Jetzt scheint es zu funktionieren.
Das Problem lag in einem Programmfragment in der SPS. Es war noch ein Pointer aktiv, der durch den DB gelaufen ist, der die SEND Daten beinhaltete. Ich habe den Pointer jetzt raus genommen, da er ohnehin nicht benötigt wird, und siehe da es werde Licht.
Ganz genau kann ich nicht nachvollziehen warum der Pointer die Kommunikation gestört hat.
 
Zuletzt bearbeitet:
Du hast ein PDU von 240 BYTE.
Dein Feld ist grösser, daher wird das Send nicht in einem Aufruf abgearbeitet.
Wenn sich zwischendurch der DB ändert hat deine PLC ein Problem.
Du kannst es lösen, wenn du Änderungen des Db abhängig vom Done oder Error des FC Send machst oder du kannst den FB Bsend / Brcv verwenden.


bike
 
Zurück
Oben