Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 28 von 28

Thema: String ueber TCP verbindung senden

  1. #21
    Registriert seit
    27.12.2009
    Beiträge
    93
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    nochmals der Aufruf von Netcat:

    nc -l -p nnnn (nach nc/-l/-P ein Space-Zeichen).

    Kann sein, dass ich den Aufruf schlampig ins Forum geschrieben habe.
    Bitte um Entschuldigung, beim Schreiben übersieht man doch dann etwas.

    Falls nochmals Probleme gibt, nochmals melden, diese einfache Verbindung mit Netcat muß doch zu schaffen sein... Wenn das geht kann man schrittweise zur geplanten Verbindung übergehen.


    Gruß
    S7_Programmer

  2. #22
    Snoopy123123 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2006
    Beiträge
    125
    Danke
    15
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Grubba Beitrag anzeigen
    Sende doch mal mit der S7 das Telegramm an das Connect Tool,
    dann mit Telnet.

    Kannst du dann evtl. Unterschiede erkennen?

    Ja ein unterschiied der mir aufgefallen ist das wenn ich bei Telnet das "Test" sende das das connect Tool dies als 4 Telegramme ansieht. Sprich jeder char wird als eigener String empfangen, daher die bin ich im I-net auf den StringStream gestossen, bin mir aber noch nicht ganz sicher ob ich da auf dem richtigen weg bin.

  3. #23
    Registriert seit
    27.12.2009
    Beiträge
    93
    Danke
    4
    Erhielt 20 Danke für 18 Beiträge

    Standard

    Hallo,

    Wenn Du "Test" in Telnet hackst, dann ist doch der Ablauf so:
    Du drückst "T", dann Zeit, dann "e", dann Zeit ....

    Kann da ein Time-Out mitspielen?

    Gruß
    S7_Programmer

  4. #24
    Snoopy123123 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2006
    Beiträge
    125
    Danke
    15
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von S7_Programmer Beitrag anzeigen
    Hallo,

    Wenn Du "Test" in Telnet hackst, dann ist doch der Ablauf so:
    Du drückst "T", dann Zeit, dann "e", dann Zeit ....

    Kann da ein Time-Out mitspielen?

    Gruß
    S7_Programmer
    Fuer mich verhalten sich die Server auch unterschiedlich.

    Wenn ich Telnet mit dem Connect Tool verbinde, dann ist der Ablauf so wie du ihn oben geschildert hast. Wenn ich telnet mit nem Indy TCP-Server verbinde dann kann ich test ein geben und es kommt noch gar nichts beim server an bis ich mit Enter bestaetige, erst dann wird der komplette String gesendet. Woher dieser unterschied kommt weiss ich leider nicht, ihr ?

  5. #25
    Registriert seit
    17.10.2007
    Ort
    PAF
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Snoopy123123 Beitrag anzeigen
    Hallo,

    Ich will via CP343-Lean einen String an eine PC Anwendung (integrierter TCP Server) senden. Ich habe einen in Netpro eine TCP Verbindung projektiert und IP und Portadressen angegeben. Im DB6 habe ich eine Stringvariable der laenge 20 deklariert. Samt Header also eine Gesamtlaenge von 22Byte. Wenn ich nun mit M21.5 das senden anstosse sehe ich das sich die Anwendung verbindet, aber der String kommt nicht an. Wenn ich mich mit Telnet mit der PC Anwendung verbinde kommen meine gendeten Strings an, also liegts nicht an der Verbindung oder Firewall oder aehnlichem. Muss ich in der SPS noch irgendwas beachten um wie z.b. mit Telnet einen String an einen TCP Server zu schicken?

    Folgenden code nutze ich um den String zu senden:
    CALL "AG_SEND"
    ACT :=M21.5
    ID :=1
    LADDR :=W#16#100
    SEND :=DB6.Stringvariable
    LEN :=22
    DONE :=M15.0
    ERROR :=M15.1
    STATUS:=MW16

    U M 15.0
    R M 21.5

    Hallo,
    ich hatte vor kurzem ein Projekt, bei dem wir Strings an einen PC versenden und empfangen. Hier ebenfalls über TCP und die AG_SEND / AG_RECV Bausteine und Stringvariablen aus einem DB.
    Vielleicht hilft es, wenn du bei SEND: nicht direkt die String-Variable eingibst, sondern als Zeiger mit Datenlänge übergibst:
    z.B.
    Code:
           CALL  "AG_SEND"
           ACT   :=M21.5
           ID    :=1
           LADDR :=W#16#100            
           SEND  :=P#DB6.DBX2.0 BYTE 20                      // DB6.Stringvariable [Edit: ohne die zwei Header-Bytes (Startadresse im DB + 2Byte) ]
           LEN   :=20                                                   // Länge des Strings ohne Headerbytes
           DONE  :=M15.0
           ERROR :=M15.1
           STATUS:=MW16
    Die Zeigeradresse musst du natürlich aus deinem DB entnehmen.

    PS:
    Wir mussten außerdem darauf achten, dass die Zeichenketten immer exakt die selbe Länge haben (in deinem Fall wären das 20Byte). Dazu wurden sie bis zum Ende mit best. Zeichen aufgefüllt.

    Hier noch ein Link zu Siemens (AG_SEND/AG_RECV):
    http://support.automation.siemens.co...subtype=136000

    Viele Grüße
    Geändert von rumpelz (08.04.2010 um 13:16 Uhr)

  6. #26
    Snoopy123123 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2006
    Beiträge
    125
    Danke
    15
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von rumpelz Beitrag anzeigen
    Hallo,
    ich hatte vor kurzem ein Projekt, bei dem wir Strings an einen PC versenden und empfangen. Hier ebenfalls über TCP und die AG_SEND / AG_RECV Bausteine und Stringvariablen aus einem DB.
    Vielleicht hilft es, wenn du bei SEND: nicht direkt die String-Variable eingibst, sondern als Zeiger mit Datenlänge übergibst:
    z.B.
    Code:
           CALL  "AG_SEND"
           ACT   :=M21.5
           ID    :=1
           LADDR :=W#16#100            
           SEND  :=P#DB6.DBX2.0 BYTE 20                      // DB6.Stringvariable [Edit: ohne die zwei Header-Bytes (Startadresse im DB + 2Byte) ]
           LEN   :=20                                                   // Länge des Strings ohne Headerbytes
           DONE  :=M15.0
           ERROR :=M15.1
           STATUS:=MW16
    Die Zeigeradresse musst du natürlich aus deinem DB entnehmen.

    PS:
    Wir mussten außerdem darauf achten, dass die Zeichenketten immer exakt die selbe Länge haben (in deinem Fall wären das 20Byte). Dazu wurden sie bis zum Ende mit best. Zeichen aufgefüllt.

    Hier noch ein Link zu Siemens (AG_SEND/AG_RECV):
    http://support.automation.siemens.co...subtype=136000

    Viele Grüße

    Ich hatte den Zeiger schon so P#DB6.DBX2.0 BYTE 20 angegeben, jedoch macht Step7 daraus automatisch DB6.Stringvariable.
    hab das Problem mitlerweile gefunden. Es lag daran das der CP einen String Stream sendet.

  7. #27
    Registriert seit
    11.05.2011
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe ein ähnliches Problem und wäre an der Lösung interessiert.
    Zitieren Zitieren und wie wurde das Problem gelöst ?  

  8. #28
    Registriert seit
    10.11.2010
    Beiträge
    21
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey

    ich hatte eine ähnliche Aufgabenstellung und schicke die Daten in einem Array of Char über TCP/IP an einen Drucker weiter. Dazu schreibe ich die Strings ohne Header in das Array. Das Array habe ich vorher mit FILL (SFC21) mit dem Wert #32 (Leerzeichen) gefüllt. Somit habe ich eine ByteStream erzeugt. Um Strings in das Array zu kopieren kann man die Funktion "_STRING_TO_BUFFER" aus der OSCAT311 Lib nutzen (oder selber etwas in AWL schreiben, da SCL bei uns nicht erlaubt ist) und danach mit TSEND schicken.

    und kaum habe ich es sogemacht hat der Drucker gedruckt.

    mfg ASAB
    Zitieren Zitieren ... und wie wurde das Problem gelöst ?  

Ähnliche Themen

  1. HEX String senden
    Von stef486 im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 21.05.2010, 19:05
  2. String per Ethernet an Server senden
    Von Andy082 im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 19.05.2010, 20:55
  3. String über RS232 senden
    Von Syntaxfehler im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 07.02.2009, 17:10
  4. HMI ueber Ethernet Verbindung
    Von JandeFun im Forum HMI
    Antworten: 4
    Letzter Beitrag: 04.05.2007, 23:45
  5. STRING an Drucker senden
    Von .nimrod im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 28.03.2007, 11:23

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •