C342-5 mit 2 Stoeber Umrichtern

DauYing

Level-2
Beiträge
78
Reaktionspunkte
12
Zuviel Werbung?
-> Hier kostenlos registrieren
CP342-5 mit 2 Stoeber Umrichtern

Hallo,

ich habe ein Problem mit der CP342-5. Ich möchte 2 Stoeber Umrichter über die CP342-5 regeln.

Normalerweise greift man so auf die Stoeber Umrichter zu:

Code:
//   --- Umrichter 1 ---
// Hardware Adresse Umrichter 1 => E/A=256 gleich Hex=100
CALL "DPWR_DAT"
LADDR :=W#16#100 
RECORD :=P#DB65.DBX0.0 BYTE 20   //Stoeber DB65 für Umrichter 1
RET_VAL:=#write_ret

CALL "DPRD_DAT"
// Hardware Adresse Umrichter 1 => E/A=256 gleich Hex=100
LADDR :=W#16#100 
RET_VAL:=#read_ret
RECORD :=P#DB65.DBX20.0 BYTE 20  //Stoeber DB65 für Umrichter 1


//   --- Umrichter 2 ---
// Hardware Adresse Umrichter 2 => E/A=276 gleich Hex=114
CALL "DPWR_DAT"
LADDR :=W#16#114
RECORD :=P#DB66.DBX0.0 BYTE 20   //Stoeber DB66 für Umrichter 2
RET_VAL:=#write_ret

CALL "DPRD_DAT"
// Hardware Adresse Umrichter 2 =>  E/A=276 gleich Hex=114
LADDR :=W#16#114 
RET_VAL:=#read_ret
RECORD :=P#DB66.DBX20.0 BYTE 20  //Stoeber DB66 für Umrichter 2

Über die E/A Adressen weiß ich aus welchen Umrichter ich die entsprechenden Daten auslese und speichere die Daten in DBs ab. Die DBs sind dabei größer als der E/A Bereich des jeweiligen Umrichters in der Hardware Config.

---

Wenn ich jedoch einen CP einsetzte dann kann ich ja nicht SFC14/15 verwenden, sonder muss FC1/2 verwenden. Hier trage ich aber immer die Adresse der CP an.

Code:
// Hardware Adresse von CP342-5 => E/A=100 gleich Hex=64
CALL  "DP_RECV"
        CPLADDR :=W#16#64
        RECV    :=P# [COLOR=#ff0000]?????[/COLOR]
        NDR     :=#NDR
        ERROR   :=#ERROR
        STATUS  :=#STATUS
        DPSTATUS:=#DBSTATUS
       NOP   0

// Hardware Adresse von CP342-5 => E/A=100 gleich Hex=64
CALL  "DP_SEND"
        CPLADDR:=W#16#64
        SEND   :=P# [COLOR=#ff0000]?????[/COLOR]
        DONE   :=#send_done
        ERROR  :=#send_error
        STATUS :=#send_status

Ich versteh jetzt nicht wie ich die Daten aus den Umrichtern in meine DBs bekommen sollen. Der E/A Bereich der jeweiligen Umrichter ist 12 Bytes lang. Wenn ich zB.: P#A256.0 BYTE 12 schreibe, bekommen ich einen Bereichslängenfehler am jeweiligen FC.

Kann mir bitte mal jemand das Brett vor dem Kopf entfernen!?
 
Zuletzt bearbeitet:
Wenn Sie nur die 2 unrichter an CP haben, In HW Config die unrichter 1 adresse ab EB0 und AB 0 vergeben und umrichter 2 adresse ab EB12 und AB12 (wenn nurr 12 byte E und 12 Byte A I/O per umrichter.
Ein DB (zb DB67)einrichten mit 2 * 12 byte Eingange und evt 2 * 12 byte ausgangen (Kopie von DB 65 und DB66 (nur erste 12 byte von E und 12byte von A bereich fon jede DB))

RECV :=P#DB67.DBX0.0 BYTE 24 // 12 byte fur umrichter 1 und 12 byte umrichter 2

SEND :=P#DB67.DBX0.0 BYTE 24
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der CP342-4 hat seinen eigenen Peripheriebereich - der hat erstmal nichts mit dem Peripheriebereich der CPU zu tun.
Mittels FC2/3 wird dann der CP-Peripheriebereich zur CPU geschaufelt und umgekehrt. Es muss dabei immer der komplette projektierte Peripheriebereich des CP´s angegeben werden.
In der CPU kannst du die Daten dann per FC2/3 entweder in den Peripheriebereich oder gleich in Datenbausteinen ablegen.
Bei CPLADDR wird die Hardwareadresse des CP angegeben.
Bei RECV bzw. SEND wird der Datenbereich in der CPU angegeben, von welchem aus die Daten zum CP übertragen werden (SEND) bzw. in welchem die Daten vom CP landen (RECV).
Für die Angabe eines DB-Bereichs z.B. P#DB110.DBX0.0 BYTE24 <<---- BYTE24 = Gesammte Länge des CP Peripheriebereichs.
 
Danke euch beiden es hat geklappt. Jedoch hat ich mit der Stöber Positool Software Probleme welche mit die DP Schnittstelle nicht richtig belegt hatte.

Jetzt geht es wieder!
 
Zurück
Oben