Step 7 S7-300 : TCP-Verbindung zu Handscanner

smartie

Level-1
Beiträge
298
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe hier einen Handscanner (Cognex DM8500) den ich per Netzwerk an meine Steuerung (S7-300, CPU314-2DP mit CP343 Advanced) anbinden will.

Der Scanner kann grundsätzlich Ethernet/IP-Kommunikation als auch Profinet IO.

Da ich den Scanner über einen CP (CP343 Advanced) anbinden will, müsste ich zur Anbindung über Profinet ja die Bibliotheks-Bausteine 'FC11 PNIO SEND'
und 'FC PNIO RECV' verwenden. - Die habe ich mir soweit angeschaut, muss aber gestehen das ich nicht so recht weiß was ich damit anfangen soll.

Nun habe ich mir gedacht es müsste ja auch möglich seine eine TCP-Verbindung einzurichten und die Daten vom Scanner mit 'FC6 AG RECV' einzulesen.

Also habe ich eine unspezifizierte Verbindung eingerichtet, habe bei Verbindungsaufbau AKTIV gewählt und die IP-Adresse des Scanners ausgewählt, die
Portnummer des Scanners ist im Moment 23.

Den Baustein habe ich nach Vorgabe beschaltet und dann sollte das ganze meiner Meinung nach doch eigentlich so funktionieren das ich scanne und die
Daten dann in meinem Ziel-DB angezeigt bekomme.
- Genau so wie es bei dem Terminal-Programm (Hyperterminal) im Moment auch schon funktioniert (Gleiche IP-Adresse, gleiche Portnummer).

Allerdings bekomme ich am Baustein 'AG RECV' permanent den Fehler 8183:

· Die Projektierung fehlt
· Der ISO-Transport-Dienst im Ethernet-CP ist noch nicht gestartet
· Die Verbindung ist nicht aufgebaut.


Damit kann ich aber leider nichts anfangen. Weder weiß ich welche Projektierung fehlen soll, noch weiß ich wie ich den ISO-Transport-Dienst im Ethernet-CP
starten könnte/müsste. Und das die Verbindung nicht aufgebaut ist sehe ich auch...

Hat jemand von euch eine Idee, bzw. weiß was ich falsch gemacht habe?

Gruß smartie
 
Zuletzt bearbeitet:
Hallo zusammen,

nachdem ich mich noch einmal mit den Bausteinen 'FC11 PNIO_SEND' und 'FC12 PNIO_RECV' auseinander gesetzt habe, habe ich mein
Programm jetzt soweit hinbekommen das ich den Scanner über Profinet eingebunden habe und Daten empfange.
- Das bedeutet der Teil mit dem Handscanner der über einen CP343-1 Advanced als PN IO Device angebunden werden soll ist erledigt.

Jetzt kommt aber der zweite Schritt: Über den selben CP möchte ich Daten über eine FTP Verbindung auf einem FTP Server ablegen.

Diese Funktion habe ich vor dem Implementierung des Handscanners bereits programmiert und getestet. Wenn ich aber nun die dafür
benötigten Bausteine in mein SPS-Programm mit dem Handscanner als PN IO Device lade funktioniert weder der Handscanner, noch
die FTP Verbindung. - Außer ich veriegele die Bausteinaufrufe (PNIO_SEND/RECV und FTP CONNECT/STORE/QUIT) gegeneinander.

Für mich erscheint das grundsätzlich irgendwie auch logisch, da durch den Aufruf von PNIO_SEND/RECV ja der CP als PN IO Controller
definiert wird. Aber ich traue meinem verständniss nicht bzw. ich kann mir nur schwer vorstellen das Siemens dafür keine Lösung hat.

Ich hoffe ihr versteht mein Problem und habt einen Rat für mich. - Das gegenseitige verriegeln der Bausteine kann allerdings keine
Lösung sein, da diese Funktionen zwingend autark ablaufen müssen.

Gruß smartie
 
Kann mir denn wirklich niemand sagen ob ein Ethernet CP gleichzeitig Profinet IO Controller sein und im NetPro eine unspezifizierte Verbindung angelegt werden kann,
damit zusätlich über TCP/IP mit einem Handscanner (oder was auch immer) über die Bausteine FC5 / FC6 kommuniziert werden kann?
 
Hallo nochmal,

da die Zeit (wie ja eigentlich immer :wink:) drängt ich habe den Handscanner jetzt erst mal per RS232 eingebunden. Das funktioniert jetzt soweit und
ich vermute es wird auch bis auf weiteres so bleiben, sofern der Kunde es bei der Abnahme nicht bemängelt.
Und nur weil ein Profinet-fähiger Scanner an einer Anlage verbaut ist muss er ja auch nicht zwingend per Profinet eingebunden werden :wink:.

Gruß smartie
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Den Scanner kann man auch per Ethernet (kein Profinet, keine Einbindung in die Hardwarekonfig) ansprechen. Hast du das Mal versucht?
Bei einer CP mußt du dazu eine Verbindung einrichten und dann mit AG_SEND und AG_RECV arbeiten.
 
Hallo Ralle,

ja ich habe versucht den Scanner mit AG_SEND/AG_RECV einzubinden. Eine TCP-verbindung habe ich eingerichtet, diese wurde auch aufgebaut.
Allerdings wird laut Siemens der Ausgangs "NDR" erst gesetzt, wenn der komplette Empfangspuffer gefüllt worden ist.

Zitat Siemens:
Wenn der Datenaustausch über eine TCP-Verbindung erfolgt, dann wird der Ausgangsparameter "NDR" erst gesetzt, wenn der komplette Empfangspuffer gefüllt worden ist.
Der Wert des Ausgangsparameters "LEN" zeigt somit immer die gesamte Länge des Empfangspuffers.

Das habe ich so nachvollziehen können, allerdings habe ich auch bei einer (testweise) fest eingestellten Telegrammlänge am Scanner, immer einen Fehler der Funktion AG_RECV
(irgenwas mit Überlauf, habs jetzt nicht mehr im Kopf) erhalten. Außerdem ist die Telegrammlänge in meinem Fall immer variabel.

- Warum muss die Telegrammlänge immer fest sein, damit ich Daten bzw. keinen Überlauf erhalte?

Gruß smartie
 
Ich bin mit nicht sicher, aber probiere bitte mal aus, ob nicht doch beim Empfang eines Datenpaketes eine Länge (LEN) ausgegeben wird.
Du legst einen Buffer[100] an, deine zu empfangene Zeichenfolge sollte auf jeden Fall kürzer als diese 100 sein, sonst Buffer länger. Es ist möglich, dass NDR erst True wird, wenn der Buffer voll ist, aber ich glaube zu erinnern, das sich LEN ändert, möglicherweise nur für einen Zyklus, denn ich arbeite in meinem Baustein mit LEN und NDR um zu erkennen, ob Daten gekommen sind und das funktioniert so auch. Möglicherweise gibt es da auch Unterschiede zwischen CP mit neuerer und älterer Firmware.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich mich richtig erinnere, wird NDR bei jedem Empfang negiert und LEN zeigt die letzte empfangene Länge beständig an. Also zum Empfang auf die Änderung von NDR testen.

Gruß
Ingmar64
 
Zurück
Oben