TCP-Verbindung mit TCON usw (FB65,64,63)

Zizou

Level-1
Beiträge
41
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich benötige wieder mal die Hilfe dieses Forums.
Es gibt hier zwar schon Beiträge zum TCON usw., aber die haben mir leider auch nicht weiter geholfen.

Ich verwende eine CPU 319-3 PN/DP (Ver. 2.6) die über den PN-Anschluss mit einem Steuergerät eines Roboters verbunden ist.
Zur Hilfe habe ich mir das Beispiel "Sample_open_TCP" von Siemens angeschaut und an meine Anforderungen angepasst.
Hier der Link zum Bsp. und der Beschreibung:
http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW

D.h. ich verwende den Baustein "SET_TCP_ENDPOINTx", den ich mit folgenden Werten belege:
Code:
      CALL  "SET_TCP_ENDPOINTx"
       ID      :=1
       DEV_ID  :=B#16#3
       ACTIV   :="TRUE"
       LOC_PORT:=2000
       REM_PORT:=2003
       IP_ADDR1:=192
       IP_ADDR2:=168
       IP_ADDR3:=0
       IP_ADDR4:=1
       CON_DB  :=#T_PARAM
T_PARAM ist wiederum am Eingang CONNECT des TCON.

Wenn ich jetzt den FB65 T_CONN aufrufe, geht BUSY=TRUE und DONE bleibt immer FALSE.

- FB65 T_CONN: Status = 7002 = "Zwischenaufruf (REQ irrelevant), Verbindung wird aufgebaut.
Ist kein Fehler, bedeutet nur das das Signal am Eingang REQ noch TRUE ist.

- FB64 T_RECV: Status = 7000 = "Baustein nicht empfangsbereit"
- FB63 T_SEND: Status = 7000 = Keine Auftragsbearbeitung aktiv"
Ist verständlich, wenn die Verb. noch nicht steht

Ich habe hier auch schon gelesen, dass die Siemens-Doku "System- und Standardfunktionen für S7-300/400 Band 1/2" Kapitel 23 fehlerhaft ist.
Aber ich denke meine Einstellungen von oben sind korrekt, oder?

Ach ja, mein Roboter ist (im "Data-Link-Betrieb" und) als Client parametriert.
Hier bekomme ich beim Verbindungsaufbau gesagt, dass der Server nicht betriebsbereit ist.

Hat jemand ne Idee, was ich falsch mache, bzw. was ich noch ändern/Ausprobieren könnte?
Bin über jede Hilfe dankbar, denn mir geht nach 2 Tagen solangsam die Ideen aus.

Kennt bzw. hat jemand ein Testprog für den PC mit dem ich die TCP-Verbindung testen kann?
(...und das leicht verständlich ist bzw. erklärt ist?)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab den Robi-Controller jetzt als Server, was aber auch keine Besserung bewirkt hat.
Trotzdem Danke für den schnellen Tipp.

Da ich alle Bausteine aus dem Siemens Beispiel genommen habe, ist mir jetzt folgendes aufgefallen:
In meiner "Bausteinübersicht" im Simatic-Manager lauten die Bausteinbezeichnungen folgendermaßen:
FB63 TSEND
FB64 TRCV
FB65 TCON
Im FB300, in dem diese aufgerufen werden, steht aber:
CALL #T_CONN
CALL #T_RECV
CALL #T_SEND

Füge ich jetzt diese Bausteine neu ein, steht dann
CALL "TCON",
Allerdings muss ich jetzt den zugehörigen DB generieren.

Das hat mich jetzt wahrscheinlich als blutiger Anfänger entlarft, aber hauptsache ich komme mit meinem Projekt weiter.
 
Die Bausteine sind wohl als Multiinstanz eingebunden.
Schau mal in die Deklaration des aufrufenden FBs dort sind
z.B. #T_CONN vom Typ TCON deklariert

Ich hab den Robi-Controller jetzt als Server, was aber auch keine Besserung bewirkt hat.
Trotzdem Danke für den schnellen Tipp.

Da ich alle Bausteine aus dem Siemens Beispiel genommen habe, ist mir jetzt folgendes aufgefallen:
In meiner "Bausteinübersicht" im Simatic-Manager lauten die Bausteinbezeichnungen folgendermaßen:
FB63 TSEND
FB64 TRCV
FB65 TCON
Im FB300, in dem diese aufgerufen werden, steht aber:
CALL #T_CONN
CALL #T_RECV
CALL #T_SEND

Füge ich jetzt diese Bausteine neu ein, steht dann
CALL "TCON",
Allerdings muss ich jetzt den zugehörigen DB generieren.

Das hat mich jetzt wahrscheinlich als blutiger Anfänger entlarft, aber hauptsache ich komme mit meinem Projekt weiter.
 
Bitte prüfe ob die IP-Adresse + Port des Ziels OK sind.
Ist die CPU ist im gleichem IP-Bereich?
Kabel sind OK?

Zum Testen/Prüfen besorg Dir einen HUB oder managbaren Switch (mit Listen-Port)
und lad dir Wireshark runter zum "mithorchen".
 
Versuche doch erst einmal das alle mit Hyperterminal zu prüfen.
Dort kannst Du eine TCP/IP Verbindung aufbauen , einmal zum Roboter und einmal zur SPS. Ich sitze zur Zeit auch an der Inbetriebnahme einiger TCP/IP Geräte wie z.B Kamera bevor ich den Fehler am meinem SPS Programm suche, teste ich erst einmal ob es auch mit Hyperterminal geht.

Hab dann heute direkt feststellen können der der Port an der kamera falsch angegeben war.
 
Hallo,
erstmal Danke für die zahlreiche Hilfe.

Ich habe jetzt mein Fehler gefunden. Es lag an einer Parametereinstellung des Roboter-Steuergeräts.

D.h. Verbindung ist aufgebaut

Danke
 
Noch eine kurze Frage zum T_RECV.
Ich möchte den T_RECV und T_SEND gegeneinander verrigeln.
D.h., wenn gesendet wird, wird T_RECV übersprungen und wenn empfangen wird, wird T_SEND übersprungen.

Wie erkenne ich jetzt, dass Daten empfangen werden?
Nur mit dem Ausgang BUSY funktioniert das nicht, da der gleich auf TRUE ist, wenn der Baustein aufgerufen wird.

Was bedeutet der Status 7001?
7001 = "Baustein ist empfangsbereit, Empfangsauftrag wurde aktiviert"
Ist damit die Erkennung von Daten am Empfang gemeint?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Datenübertragung funktioniert, aber ich habe jetzt noch folgendes Problem mit dem FB64 T_RECV:
Die Daten werden zwar richtig empfangen, aber der STATUS steht ständig auf W#16#7002 und dadurch auch BUSY auf TRUE.
An was kann das liegen?
Der Status 7002 bedeutet: Zwischenaufruf, Empfangsauftrag ist in Bearbeitung

Was wird mit Zwischenaufruf gemeint?
Der Empfang über den T_RECV läuft ja asynchron ab, also über mehrere Zyklen. Dadurch muss der T_RECV doch mehrmals aufgerufen werden, oder?
 
Kann es an der Empfangs-Datenlänge liegen? Ich lese eine ungerade Anzahl an Bytes ein, und zwar 33 Bytes?
Code:
      CALL  #T_RECV
       ...
       LEN     :=0
       ...
       RCVD_LEN:=#Receive.LEN
       DATA    :=P#DB300.DBX192.0 BYTE 33

RCVD_LEN benutze ich nicht.
 
Muss ich vom T_RECV den Eingang EN_R auf FALSE setzen, wenn der Auftrag mit NDR=TRUE fertig ist?
... oder kann der EN_R ständig auf TRUE bleiben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lass den Eingang auf True.

Ansonsten würdest Du ja ein von Deinem Kommunkationspartner gesendetes Telegramm verpassen. (Ob das Telegramm vom CP gepuffert wird und Dir dann auch noch bei einem späteren Enable=True noch zur Verfügung steht, weiss ich jetzt auch nicht gerade)

Aber Du willst ja das Telegramm sicherlich sofort haben und nicht erst später, oder? ;)

Das ein Telegramm bei Dir angekommen ist, zeigt Dir dann ja der Ausgang NDR.
 
Hallo,
mir ist es eigentlich egal, ob ich das Telegram sofort bekomme, oder es erst ein paar msek am Empfang liegt.

Ja, der Telegramempfang wird mit NDR=TRUE angezeigt, aber BUSY bleibt auf TRUE und der STATUS wechselt von 7001 auf 7002.
 
Hallo,
ich habe mir wohl ganz umsonst sorgen gemacht.
Laut Simiens-Support ist es normal, dass der STATUS ständig auf 7002 steht.
(natürlich ist er während dem Datenempfang auf 7001)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich wollte keinen neuen Thread anfangen darum reihe ich mich gleich hier an. Habe über die SuFu leider nichts Passendes gefunden.

Ich verwende ebenfalls für meine Kommunikation diese Offene TCP Kommunikation entsprechend dem Siemens-Beispiel "Sample_open_TCP" (siehe: http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW ). Verwendet werden FB300, FC97, DB300 und UDT64. Leider ist das Sample von Siemens auf Englisch und ich bräuchte aber eine deutsche Version davon. Also Kommentare, Netzwerktitel, DB-Variablen, ...
Habe im Inet auch keine übersetzten Bausteine gefunden, darum frage ich ob hier im Forum jemand vielleicht eine übersetzte Version hat und mir zusenden könnte.

thx, kureck384
 
Zurück
Oben