Problem mit AG_Recv

SPS-freak1

Level-2
Beiträge
396
Reaktionspunkte
54
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Programmiererkollegen,

habe nochmal eine Frage zu einer Kommunikation via CP-343-1 Lean.
Und zwar folgendes Problem: Ich empfange Daten von einer Kamera, welche ohne Header oder sonst was sind (4 Byte). Dies Funktioniert auch soweit ganz gut, will ich aber jetzt eine Programmanwahl machen, sendet mir die Kamera als Antwort 5 Byte Daten zurück. Ich habe für die Nutzdaten und die Programmanwahlantwort jeweils einen eigenen AG_Recv Block gemacht, der einmal als Empfangspuffer P#DB80.dbx2.0 Byte 4 bzw P#DB85.dbx2.0 Byte 5 für die Programmanwahl hat. Mein Problem ist jetzt, das er erst ein Programm anwählt, bevor er in Automatikbetrieb die Nutzdaten liest. Jetzt bilde ich mir ein mal gelesen zu haben, das der CP einmal die Empfangslänge einliest und diese nicth wieder ändert, bis zum nächsten Stoppen und Starten des CPs.
Wenn ich jetzt ohne einen Stop Start in Automatikbetrieb gehe, gibt er mir beim empfangen der 4 Bytes immer den Fehlercode für Zielbereich ungültig raus. Nach einen Stop und Start funktionierts wieder.
Ich bin leider ratlos wie ich dieses Problem beheben kann. Und ich möchte eigentlich an der Variante vorbei immer nur ein Byte abzuholen und es Byteweise in den Empfangsdb zu schreiben. Wäre super, wenn ihr hierfür einen relative einfache Lösung bereit hättet und ich nicht den Umständlichen weg gehen muss.
Danke vielmals.
 
sendet mir die Kamera als Antwort 5 Byte Daten zurück.
Kannst Du die Kamera nicht dazu veranlassen immer 5 Byte zu senden?

Sonst:
2 Recv Bausteine projektieren, einer mit 4 Byte Länge einer mit 5 Byte Länge.
Der mit 4 Byte Länge wird immer aufgerufen, gibt er einen Fehler aus wird der Recv mit 5 Byte Länge aufgerufen.
Natürlich haben beide Aufrufe die gleiche ID.
(sollte funktionieren)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

das Problem ist ja, das ich nicht 4 oder 5 Byte empfangen kann, da er, wenn ich wieder mit 4 Byte länge empfange den Fehler 80B1 Zielbereich ungültig ausgibt.
 
Guten Morgen,

das Problem ist ja, das ich nicht 4 oder 5 Byte empfangen kann, da er, wenn ich wieder mit 4 Byte länge empfange den Fehler 80B1 Zielbereich ungültig ausgibt.

Vielleicht wäre es ganz hilfreich, wenn du hier einen Ausschnitt des Bausteins oder vielleicht sogar den ganzen Baustein bereitstellen könntest, ansonsten ist es ziemlich schwer, genaueres dazu zu sagen.

Bei einer meiner letzten Anwendungen hatte ich aber das selbe Problem, komischerweise auch mit einer Kamera :). Die Kamera hat keine feste Stringlänge gesendet, sondern bei jedem Befehl eine andere. Gelöst haben wir das Problem eigentlich damit, dass wir eine andere CPU genommen haben, die eigentlich sowieso für die Anlage bereitgestellt worden ist. Bei einer PN/DP CPU hast du keine Probleme mit einer variablen Telegrammlänge, da du dort die Daten auch direkt in den Empfangs-DB schreiben lassen kannst. Sowie ich weiß, ist dies mit einer "normalen" CPU nicht ohne weiteres möglich.

Bist du denn bisher weitergekommen?
 
Guten Abend,

jap bin damit fertig geworden, hab das jetzt so gelöst, das ich einfach bei der Kamera im "Normal"betrieb als Nutzdaten auch 5 Byte als Antwort eingestellt hab, somit sind es immer 5 Byte und es funktioniert tadellos :)
Manchmal ist die Antwort doch so nahe :)
Der Schritt zurück hat mir nur gefehlt. :ROFLMAO:
Ach ganz nebenbei, ich hatte eine 315 2DP mit CP 343-1 Lean.
Die Kamera war von Leuze.

Aber danke nochmal für die Mühe.

Gruß

SPS-freak
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht wäre es ganz hilfreich, wenn du hier einen Ausschnitt des Bausteins oder vielleicht sogar den ganzen Baustein bereitstellen könntest, ansonsten ist es ziemlich schwer, genaueres dazu zu sagen.


Das geht so nicht so immer oder suchst du wieder nach Programmcode?


bike
 
Ein interessantes Thema.
Mich würde auch interessieren, wie der ganze Aufbau aussieht.

Ethernet-Kamera -> CP343 -> CPU315 ?

Wie ist die Kamera an die SPS angebunden? Wie bekomme ich die Daten von Ethernet (NICHT Profinet) eingelesen?

Grüße!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verwende einen CP 343-1 Lean (kein Profinet), mit dem sende und empfange ich die Daten direkt von der Kamera. Muss beispielsweise für eine Aufnahme nur ein + direkt an die Kamera schicken.
 
Wie werden die Daten, die von der Kamera kommen, von der SPS weiterverarbeitet?

Wie sieht Deine Hardware- und NetPro-Config aus, damit diese reine Ethernet-Kommunikation funktioniert? (Es ist ja keine S7-Kommunikation...)

Erzähl mal etwas genauer...
 
Die Hardware Config ist ganz normal, also einfach den CP eingefügt ohne irgendwelchen speziellen Einstellungen. Im NetPro hab ich für die Kamera eine "andere Station" eingefügt und dieser eine Verbindung zugeordnet. Hierbei ist die Kamera Client und logischerweise der CP Server. Glaub ich zumindest zu meinen, ist schon etwas länger her.
Wenn ich eine Aufnahme machen will, sende ich ein + über den CP an die Kamera und warte dann für eine gewisse Zeit auf die Antwort. Wie die antwort aussieht und was sie enthält, kann ich in der Kamera Programmspezifisch einstellen. Bei meiner Anwendung benötige ich nur den Drehwinkel A des Produkts. Dies sendet mir die Kamera mit 0 als Füllzeichen.
Die Daten lade ich in die Nutzdaten eines Strings. Um ihn per String to INT umwandeln zu könnnen, füge ich händisch die tatsächliche Länge des Strings ein. Den konvertierten INT-Wert sende ich danach an die Kamera. Kommt ein ungültiger Wert herraus, muss der Bediener eingreifen.
 
Zurück
Oben