CPU319-3PN Offene TCP/IP Kommunikation zu externen Steuerungen

Heizerfraktion

Level-1
Beiträge
44
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich möchte gerne mehre TCP/IP Kommunikationen über die integrierte PN-Schnittstelle der CPU zu extenen Partnern aufbauen. Aktuell habe ich eine Verbindung am laufen, möchte das Ganze jetzt aber auf 10 (optinal auf 15) Verbindungen aufbauen. Wizard zur Projektierung und FB65 TCON habe ich verwendet, allerdings steh ich im Moment auf dem Schlauch, wie im am elegantesten die restlichen Verbindungen im SPS-Programm projektiere. Ich wollte eigentlich nicht die 10 (15) mal den TCON mit den zugehörigen Verbindungsparametern aufrufen. Ursprünglich hatte ich dran gedacht, dass ich mir eine Schleife baue (von 1-10..) und dann die zugehörigen Verbijndungsdaten an den TCON übergebe. Im Moment fehlt mir aber die Idee, wie ich das realisieren kann. Habt ihr Ideen oder wie würdet ihr die Sache lösen? Danke schon mal vorab für eure Unterstützung.
Nachstehend noch ein paar dten zur Info:

Step 7 Pro V5.4 SP5, Verbindungstyp: passiv,

Gruß Heizerfraktion
 
Hi!
Denke, da wirst du nicht drum herum kommen, für jede Verbindung die FB´s seperat aufzurufen UND im zyklischen Ablauf für JEDE Verbindung bearbeiten zu lassen.
Der FB 65 gibt zur Laufzeit schliesslich die Signale Conn.Status, Conn.busy und Conn.Error heraus, die ja nur im zyklischen Betrieb für jede aufgebaute Verbindung ermittelt werden können.

Hier der Hinweis dazu: Weitere TCP Verbindungen konfigurieren
http://support.automation.siemens.c...=standard&viewreg=WW&load=content&csQuery0=fb 65 tcon&subtype=133000

Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

danke für die Info. Genau dieses Beispiel habe ich mir bereits angesehen. Als ergänzende Info: Die Verbindungspartner verwenden CP's für die Kommunikation, nicht die integrierte PN Schnittstelle. Die Verbing wird von den Partner aktiv aufgebaut. Laut Siemens Support benötigt der TCON-Baustein lediglich eine Flanke am REQ, um die Verbindungsdaten (Konfiguration) zur SPS zu übermitteln. Dort belieben die Daten dann gespeichert und müssen nicht zyklisch immer wieder übertragen werden. Dass ich für die weiteren Verbindungen die Sende-und Empfangsbaustein jeweils aufrufen muß ist mir schon klar. Ich hoffe, dass das Ganze halbwegs verständlich ist.

Gruß Heizerfraktion
 
Ist ja mal einen versuch wert !
Wie du schon sagst, den TCON in einer Schleife mehrmals mit unterschiedlichen Parametern aufrufen, ein Schleifendurchlauf ist dann beendet, wenn die Rückgabeparameter anzeigen, dass die Verbindung aufgebaut ist. Dann die nächsten Parameter dran und Schleife nochmal durchlaufen...

Allerdings weiss ich nicht, was der TCON trotz fehlenden REQ dennoch ausführt wg. STAUS und BUSY ? Aber: "Versuch macht kluch" !

Gruss

Gruss
 
Hi,

aus der Onlinehilfe:
Verwendung bei TCP und ISO on TCP
Beide Kommunikationspartner rufen den FB 65 "TCON" zum Einrichten und Aufbauen der Kommunikationsverbindung auf. In der Parametrierung hinterlegen Sie, welcher der aktive und welcher der passive Kommunikationsendpunkt ist.
Nach dem Einrichten und Aufbauen der Verbindung wird diese automatisch von der CPU gehalten und überwacht.
Bei Verbindungsabbruch durch z.B. Leitungsunterbrechung oder durch den remoten Kommunikationspartner versucht der aktive Partner die eingerichtete Verbindung wieder aufzubauen. Sie müssen den FB 65 "TCON" nicht erneut aufrufen.

Möglich ist es auf jeden Fall. Ich würde ihn aber trotzdem für jede Verbindung separat Aufrufen, alleine schon wegen der Überwachung der Verbindung.
Kannst ja einen schicken FB basteln wo die Sachen alle drin sind Überwachung, Kommunikation, usw. und diesen dann halt 10x Aufrufen.

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

leider klappt das mit der Statusauswertung des TCON nicht richtig, da weder die DONE bzw. BUSY-Bits kommen, die Verbindung aber bereits aufgebaut ist. Werde das Ganze morgen noch mal testen. Habt Ihr noch eine Idee, wie ich die 64 Byte Verbindungsdaten indiziert übergeben kann, z.B. ID = 1 -> P#DB100.dbx0.0 Byte 64, ID=2 -> P#DB100.dbx65.0 Byte 64,...Im Moment fehlt mir der passende Ansatz.

Gruß Heizerfraktion
 
Hi,

ja über einen ANY z.b.
Code:
      LAR1  P##tANY                     // Zeiger ins Adressregister laden
      L     W#16#10                     // SyntaxID 10h
      T     LB [AR1,P#0.0]
      L     W#16#2                      // Typ BYTE
      T     LB [AR1,P#1.0]
      L     64                          // Anzahl Bytes
      T     LW [AR1,P#2.0]
      L     100                         // DB-Nummer
      T     LW [AR1,P#4.0]
      L     #tAnfang                    // Anfang des Bereichs
      SLD   3                           // "tAnfang" Variable mit der Startadresse
      T     LD [AR1,P#6.0]
      L     B#16#84                     // Speicherbereich DB
      T     LB [AR1,P#6.0]

diesen hängst Du einfach an CONNECT vom FB65.

P#DB100.dbx65.0 Byte 64 Bist Du dir da sicher das der nächste bei Byte 65 beginnt?

Gruss Daniel
 
Hi Dalbi,

danke, das war genau der Ansatz daer was mir gefehlt hat. Würdest du das Ganze als FB oder lieber als FC ausführen?? Du hast übrigens recht, der nächste Adressbereich beginnt nicht bei Byte 65.
Um die mehrfachen Aufrufe des TCON komme ich mich dieser Codevarainte in Verbindung mit dem ID-Index wohl nicht herum, oder sehe ich das faslch? -> Stichwort InstanzDB?? Stehe im Moment voll auf der Leitung. Werde wohl erst mal einen Hopfenblütentee zur Entspannung einnehmen.

Gruß Heizer
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

die ID steht doch auch mit in den Verbindungsparametern (DB) diese vorher laden und auch an den TCON übergeben.
Ich würde einen FB nehmen und die T-Bausteine als Multiinstanz darin aufrufen.

Gruss Daniel
 
z.B.
Code:
      LAR1  P##tANY                     // Zeiger ins Adressregister laden
      L     W#16#10                     // SyntaxID 10h
      T     LB [AR1,P#0.0]
      L     W#16#2                      // Typ BYTE
      T     LB [AR1,P#1.0]
      L     64                          // Anzahl Bytes
      T     LW [AR1,P#2.0]
      L     100                         // DB-Nummer
      T     LW [AR1,P#4.0]
      T     #tDBNr
      L     #tAnfang                    // Anfang des Bereichs
      SLD   3                           // "tAnfang" Variable mit der Startadresse
      T     LD [AR1,P#6.0]
      L     B#16#84                     // Speicherbereich DB
      T     LB [AR1,P#6.0]

      L     LD [AR1,P#6.0]              // Speicherbereich + Anfangsadresse der Daten
      LAR1                              // in Adressregister laden

      AUF   DB [#tDBNr]                 // DB öffnen
      L     W [AR1,P#2.0]               // ID in
      T     #tID                        // temp. Speichern

      CALL  #sTCON
       REQ    :=
       ID     :=#tID
       DONE   :=
       BUSY   :=
       ERROR  :=
       STATUS :=
       CONNECT:=#tANY

Gruss Daniel
 
Zuletzt bearbeitet:
Zurück
Oben