# KEB FU an CP343-1 Wie komm ich an die Daten?



## DarkLykan (16 September 2011)

Hallo Leute,

ich sitze vor nem kleinen Profinet Problem und hoffe das mir hier einer helfen kann.

Ich will einen KEB FU an einer CPU 313C mit einem CP 343-1 betreiben.
Jetzt versuche ich verzweifelt an die Daten (Steuerwort, Statuswort, IST-/Solldrehzahl und IST-/Solldrehmoment zu kommen.

Der FU ist mithilfe eines Mitarbeiters soweit eingestellt und in meiner Hardwarekonfig eingebunden. 

Meine Hardwarekonfig der Profinet Komponenten:
CP343-1:   Gerätename: CP343-1; Betriebsart: IO-Controler IP:192.168.10.1; Vernetzt: ja; Adressen: Eingänge 256 Ausgänge: 256

KEB-FU: Gerätename: kebf5-1 ;Gerätenummer: 1 IP:192.168.10.2 Adressen: Eingänge 50-65 Ausgänge 50-65

Nach einspielen der Hardwarekonfig erhält der FU seine IP.

Jetzt mein eigentliches Problem:
Wie komm ich an die PEWs/PAWs des FUs ich habe bis jetzt noch keine Erfahrungen mit nem CP sammeln können und stehe wie der Ochs vorm Berg.
Habe es schon mit dem "PNIO_Send" und "PNIO_Recv" probiert.

      CALL  "PNIO_RECV"
       CPLADDR   :=W#16#100
       MODE      :=B#16#80
       LEN       :=10
       IOPS      :=DB300.DBW30
       NDR       :=DB300.DBX29.0
       ERROR     :=DB300.DBX29.1
       STATUS    :=DB300.DBW32
       CHECK_IOPS:=DB300.DBX29.2
       ADD_INFO  :=DB300.DBW34
       RECV      :=P#DB300.DBX0.0 BYTE 10

      CALL  "PNIO_SEND"
       CPLADDR   :=W#16#100
       MODE      :=B#16#80
       LEN       :=10
       IOCS      :=DB300.DBW37
       DONE      :=DB300.DBX36.0
       ERROR     :=DB300.DBX36.1
       STATUS    :=DB300.DBW39
       CHECK_IOCS:=DB300.DBX29.2
       SEND      :=P#DB300.DBX10.0 BYTE 10

Bei Status gibt der mir aber immer 8184h raus.

Weis vielleicht einer wo das Problem liegen könnte? Oder gibt es eine Möglichkeit direkt auf die PEWs/PAWs des FUs zuzugreifen? Habe versuchsweise mal eine CPU315-2PN/DP genommen, da kann ich direkt auf die PEWs zugreifen und dann bekomme ich auch meine Daten die ich haben will. Wieso klappt das mit einem CP nicht auch so schön einfach. ^^
(Ich würde am liebsten die 315-2PN/DP nehmen aber das will leider mein Chef nicht *menno*)

MfG

DarkLykan


----------



## Ralle (16 September 2011)

Das Einzige, was mit auffällt:



> IOCS	OUTPUT	ANY (als VAR-TYPE ist nur BYTE zugelassen)	Die Adresse des Datenbereiches verweist alternativ auf:·	Merkerbereich·	DatenbausteinbereichLängeen Maximalwert entnehmen Sie bitte dem gerätespezifischen Teil B dieses Handbuches unter Kapitel "Leistungsdaten". Sie kann für Controller- bzw. Device-Betrieb unterschiedlich sein.	IO Consumer StatusPro Byte Nutzdaten wird ein Status-Bit übertragen.Voraussetzung: Die Übertragung ist im Parameter MODE angefordert (MODE=0 oder MODE=1). Nur in dieser Betriebsart ist der Parameter relevant.Die Längenangabe hängt von der Länge im Parameter LEN ab (pro Byte ein Bit)= (Länge LEN + 7/8)Controller-Betrieb:
> Entsprechend dem Parameter SEND werden Adresslücken mit übertragen.Adresslücken werden mit Status GOOD übertragen.Device-Betrieb:
> Adresslücken werden nicht mit übertragen.Der Baustein beginnt die Übertragung des Status für Adresse 0.Hinweis:
> Die Mindestlänge des ANY-Pointer ist (Länge LEN + 7/8)



Hast du mal einen Any da hingeschrieben, du hast ein Word dort vergeben.


----------



## DarkLykan (16 September 2011)

Ralle du bist spitze!!!
Ich habe die Variable für IOPS und IOCS geänder und sieh da ich habe meine Werte.



      CALL  "PNIO_RECV"
       CPLADDR   :=W#16#100
       MODE      :=B#16#0
       LEN       :=10
       IOPS      :=P#DB300.DBX20.0 BYTE 3
       NDR       :=DB300.DBX28.0
       ERROR     :=DB300.DBX28.1
       STATUS    :=DB300.DBW24
       CHECK_IOPS:=DB300.DBX28.2
       ADD_INFO  :=DB300.DBW26
       RECV      :=P#DB300.DBX0.0 BYTE 10


      CALL  "PNIO_SEND"
       CPLADDR   :=W#16#100
       MODE      :=B#16#0
       LEN       :=10
       IOCS      :=P#DB300.DBX30.0 BYTE 3
       DONE      :=DB300.DBX36.0
       ERROR     :=DB300.DBX36.1
       STATUS    :=DB300.DBW34
       CHECK_IOCS:=DB300.DBX36.2
       SEND      :=P#DB300.DBX10.0 BYTE 10


----------

