TCP-SOCKET Kommunikation mit WinAC RTX

rostiger Nagel

Forums-Knochenbrecher
Teammitglied
Beiträge
16.377
Reaktionspunkte
5.989
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,
ich bräuchte ein wenig unterstützung bei den oben gennanten Thema....

Also ich muß bei einen Kunden Daten von meiner Maschine zu einer folgenden übermitteln, dort wurde dann eine TCP-Socket Kommunikation vorgegeben.
Auf meiner Seite habe ich einen IPC477C mit der Soft SPS WinLC RTX F auf der gegenseite ist ein Beckhoff (glaube ich)
Da dieses Kommunikation völliges Neuland für mich ist, habe ich erstmal eine Testumgebung aufgesetzt, wo ich an den IPC einen Notebook über ein gekreutzets
Kabel angehängt habe, siehe Screenshot.

TCP_1.jpg

Den IPC kann ich vom Notebook aus anpingen, anderherum geht es nicht, da der IE-Allgemein in Subnet 2 den Betriebssystem des IPC nicht mehr zur verfügung
steht, dieser wird von der RTX in beschlag genommen.



Mein Gedanke ist jetzt ersteinmal eine Verbindung aus der RTX <-> Notebook mit den FB65 "TCON" aufzubauen, dazu habe ich als erstes mittels den Open Communication
Wizard den UDT für den FB65 erstellt, siehe folgende Screenshot.

OCW_1.pngOCW_2.pngOCW_3.pngOCW_4.png



Der UDT65 sieht wie folgt aus;
Code:
TYPE "TCON_PAR"
TITLE =Connection Parameters for TCON
AUTHOR : SIMATIC
FAMILY : COMM
NAME : TCON_PAR
VERSION : 2.1

  STRUCT  
   block_length : WORD  := W#16#40; //#!Portal!#
   id : WORD  := W#16#1; 
   connection_type : BYTE  := B#16#11; 
   active_est : BOOL  := TRUE; 
   local_device_id : BYTE  := B#16#6; 
   local_tsap_id_len : BYTE ; 
   rem_subnet_id_len : BYTE ; 
   rem_staddr_len : BYTE  := B#16#4; 
   rem_tsap_id_len : BYTE  := B#16#2; 
   next_staddr_len : BYTE ; 
   local_tsap_id : ARRAY  [1 .. 16 ] OF BYTE  := B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0; 
   rem_subnet_id : ARRAY  [1 .. 6 ] OF BYTE  := B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0; 
   rem_staddr : ARRAY  [1 .. 6 ] OF BYTE  := B#16#A, B#16#1, B#16#2, B#16#AD, B#16#0, B#16#0; 
   rem_tsap_id : ARRAY  [1 .. 16 ] OF BYTE  := B#16#7, B#16#D0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0; 
   next_staddr : ARRAY  [1 .. 6 ] OF BYTE  := B#16#0, B#16#0, B#16#0, B#16#0, B#16#0, B#16#0; 
   spare : WORD ; //#!Portal!#
  END_STRUCT ; 
END_TYPE


Den FB65 rufe ich dann aus den im FB1 aus wo ich den FB65 und den UDT65 als Instanz eingefügt habe.
Das ganze beobachtet und gesteuert wird mit dem Instanz DB vom FB1

Code:
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1

VAR
  TCON : "TCON"; 
  TCON_PAR : "TCON_PAR"; 
END_VAR
BEGIN
NETWORK
TITLE =
      CALL #TCON (
           ID                       := W#16#1,
           CONNECT                  := #TCON_PAR);
END_FUNCTION_BLOCK


Wenn ich den Auftrag anstosse ist der Status 7000 (keine Auftragsbearbeitung aktiv) und geht auf 7002 (Verbindung wird aufgebaut, dann passiert nichts mehr.

Meine Fragen sind:
  1. Bin ich erstmal grundsätzlich richtig vorgegangen?
  2. Bestätigt das Notebook den aufbau der Verbindung eigenständig oder muß da ein wenig mehr getan werden?
  3. Wie kann ich Eigentlich mit den Hyperterminal (auf Notebookseite) feststellen ob die Verbindung aufgebaut ist
    und später auch gesendete Daten beobachten?
Für Hilfe wäre ich sehr Dankbar, weitere Fragen folgen bestimmt ;)

gruß RN
 
Zuletzt bearbeitet:
1. Ja, Bist du. Parameter sehen correct aus. Anstoßen funktioniert ja auch.
2. Wenn du es nicht vergessen hast zu erwähnen, Denke ich brauchst du noch ein Socket server in irgendeiner Form das dir dann auch den Socket Connection aufbau bestätigt. Die reine TCPIP Windows Schnittstelle reicht da ja nicht.

3. Ein solcher Server sollte dir dann auch den verbindungsstatus sagen.

Achja: active_est ist bei einem Teilnehmer True bei dem anderen False
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke J.Hinz,
tja wo bekomme ich den jetzt so ein Tool zum testen des Socket Server her, ich wollte ja ganz
gerne hier im Büro die Kommunikation testen und nicht auf der Baustelle.

Dieser Parameter "active_est" kann ich doch nur auf meiner Seiter auf TRUE stellen, einen gleich-
wertigen Partner der Step 7 spricht habe ich ja nicht.
 
Ja leider hab ich Sockets immer nur selber in C eingesetzt und daher jetzt so spontan keine Programme zur hand(müßte es aber geben).
Als Source codes gibts da genug Beispiele zum schnell selber compilieren. aber das hilft dir eher weniger,....
Hast du nicht zufällig ne kleine S7 zum testen sozussagen als ersatz für die Beckhof?

Edit: Sotmachines Prog sieht ja richtig aus... für einzelene dateien, dauerhafte kommunikation?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ich nicht verstehe, warum wird bei dir die Local_Device_ID 0B hex verwendet? Ich habe das gerade gestern mit einem microbox-PC von Siemens gemacht. Da ich uralt bin hab ich nicht den Wizard verwendet, sondern mache das zu Fuß (FC97 aus einem Siemens-Beispiel). Nach langem Suchen kam ich erst mal darauf, dass ich noch die zweite Schnittstelle ie-allgemein installieren muß, die ie-general geht da nicht. Aber ich habe als lokal_device_id 06hex für IF2 angegeben.

Lt. Siemens-Hilfe zum FB TCON:

local_device_id BYTE B#16#02 ·
B#16#00: Kommunikation über CP 443-1 (nur bei S7-400 und connection_type = B#16#12). Zulässige CPs: CP443-1EX4x, CP443-1EX20, CP443-1GX20, CP443-1EX30, CP443-1GX30·
B#16#01: Kommunikation über die IE-Schnittstelle auf Interface-Steckplatz 1 (IF1) bei WinAC RTX (nur TCP)·
B#16#02: Kommunikation über die integrierte IE-Schnittstelle bei den CPUs 315-2 PN/DP und 317-2 PN/DP·
B#16#03: Kommunikation über die integrierte IE-Schnittstelle bei der CPU 319-3 PN/DP· B#16#05: Kommunikation über die integrierte IE-Schnittstelle bei den CPUs 414-3 PN/DP, 416-3 PN/DP, 416-3F PN/DP und 41x-5H PN/DP (Rack 0)·
B#16#06: Kommunikation über die IE-Schnittstelle auf Interface-Steckplatz 2 (IF2) bei WinAC RTX (nur TCP)·
B#16#0B. Kommunikation über die IE-Schnittstelle auf Interface-Steckplatz 3 (IF3) bei WinAC RTX (nur TCP)·
B#16#0F: Kommunikation über die IE-Schnittstelle auf Interface-Steckplatz 4 (IF4) bei WinAC RTX (nur TCP)·
B#16#10: Kommunikation über CP 443-1 (nur bei S7-400H und connection_type = B#16#12), falls der CP in Rack 1 oder einem zugehörigen Erweiterungs-Rack steckt·
B#16#15: Kommunikation über die integrierte IE-Schnittstelle bei den CPUs 41x-5H PN/DP (Rack 1)
 
Hallo Ralle,
6 steht drin, ist nur bei mir im Beispiel falsch, warum weiß ich jetzt auch nicht (wird geändert).
Das mit der Schnittstelle hatte ich relativ schnell hinbekommen, nur halt das andere nicht.

Die Verbindung kann ich jetzt aufbauen und wieder abbauen.....schön :D

Nach der Mittagspause, werde ich mal daran machen ein paar Daten wegzuschreiben.
Danke nocheinmal für die Hilfen bis hier, das kleine Tool aus dem Link von Softmaschine ist
ein tolles Tool, funktioniert gut.
 
Wenn ich eine Verbindung aufgebaut habe Daten mit dem "TSEND" senden möchte bekomme ich eine Fehlermeldung mit dem Status "80C4"
Temponären Kommunikationsfehler, wie kann ich das in den Griff bekommen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
80C4 Temporärer Kommunikationsfehler:· Die Verbindung zum Kommunikationspartner kann momentan nicht aufgebaut werden.· Die Schnittstelle wird neu parametriert bzw. die Verbindung wird gerade aufgebaut.


Bist du sicher das die Verbindung aufgebaut ist ? Nach der Fehlermeldung ist sie es noch nicht
 
Ich bin da schon sicher, über den Progrämchen, was Softmaschine verlinkt hat, bekomme
ich von FB65 das die Verbindung aufgebaut wurde. Sende ich Daten melde dieses einen
Verbindungsabbruch mit lauten Getöse.
 
Leg doch auch mal für deine SPS einen Port fest, also z.Bsp. Port 2000, wie beim Partner.
 
Ne, das muß mit WINLC RTX gehen, ich habs doch hier auch am Laufen mit dem Microbox-PC und einer TCP-Kamera.
 
Ach so, ja ich werde mal morgen etwas für den Port eintragen. Ich bin mit gar nicht sicher ob ich das nicht sowieso schon gemacht habe.

Das niemand eine Tool geschrieben hat wo man das mit S7 testen könnte, wundert mich schon.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Helmut,

ich habe so etwas für meine Kommunikation mit unserem Beschriftungs-Laser. Die hat allerdings der Laser-Hersteller geschrieben und ist somit auf die Datenbreite, die mit ihm vereinbart ist / war zurechtgeschnitten. Wenn dich das allerdings nicht stört ... (bei mir wäre es 66 Bytes und der Port war 12500 - glaube ich - aber das ist ja nicht so relevant).

Gruß
Larry
 
Hallo Helmut,

ich habe so etwas für meine Kommunikation mit unserem Beschriftungs-Laser. Die hat allerdings der Laser-Hersteller geschrieben und ist somit auf die Datenbreite, die mit ihm vereinbart ist / war zurechtgeschnitten. Wenn dich das allerdings nicht stört ... (bei mir wäre es 66 Bytes und der Port war 12500 - glaube ich - aber das ist ja nicht so relevant).

Gruß
Larry

Ralf, das hört ich ja gut an immer her damit, E-Mail hast du j!

Gruß zuück
 
Huhu, dein Posteingang ist voll ;-)

Was bei den Testprogrammen (das von Softmaschine verlinkte oder z.B. Herkules zu beachten ist):
Du musst natürlich die IP-Adresse des Rechners auf dem der Herkules läuft auf die entsprechende IP-Adresse einstellen.
Laut deinen Screenshots also auf 10.1.2.173. Dann bei Herkules den TCP-Server auf Port 2000 stellen und auf "Listen" klicken.

Wenn du eine aktiv Firewall hast musst du den Port 2000 für eingehende Verbindungen freigeben.
Bei Windows 7 wird (meistens zumindest) beim Start erkannt wenn ein Programm einen Server starten möchte, und fragt ob es in der Firewall diese Ausnahme eintragen soll.
Oder du stellst für die Dauer der Tests die Firewall aus.

Zum Testen des Programms ohne SPS kannst du auch auf einem anderen PC ebenfalls den Herkules starten, dort aber als TCP-Client mit den Adressdaten / Port des anderen PCs. Wenn alles freigegeben ist kannst du darüber mit dir selber Chatten ;-)
 
Zurück
Oben