Vai al contenuto
PLC Forum


Problema Con Dp/dp Couplet


paolo.francovigh

Messaggi consigliati

paolo.francovigh

Buongiorno a tutti,

ho un piccolo problema con un DP/DP coupler che adesso vi spiego.

Ho 2 CPU, una fissa 315-2DP ed una su un carrello mobile su rotaia 314C-2DP.

Il sistema di comunicazione è stato realizzato con un trasmettitore profibus ad infrarossi della Sick.

Dalla 315 esce il profibus che va sul DP copler, da qui esce e va al trasmettitore, sulla navetta c'è il ricevitore da cui esce il profibus che va alla 314.

Ho programmato, in config hardware sul DP coupler, i primi 32 byte come ingressi consistenti da E256.0 in poi per la 315 (come uscite per la 314) e un blocco da 64 byte + un blocco da 32 byte (96 byte) come uscite consistenti da A256.0 in poi nella 315 (come ingressi sulla 314).

Ho utilizzato SCF14 e SFC15 per leggere i dati da ambo le parti (usando le PAW e PEW tutto va benissimo):

CALL "DPRD_DAT"

LADDR :=W#16#100

RET_VAL:=#ErroreSFC14

RECORD :="P#DB50.DBX0.0 BYTE 32

CALL "DPWR_DAT"

LADDR :=W#16#100

RECORD :=P#DB50.DBX32.0 BYTE 64

RET_VAL:=#ErroreSFC15

CALL "DPWR_DAT"

LADDR :=W#16#100

RECORD :=P#DB50.DBX96.0 BYTE 32

RET_VAL:=#ErroreSFC15

Questo su 315, sulla 314 è speculare.

Lo scambio dati avviene correttamente per i primi 2 CALL mentre il terzo esce con errore 80B1.

Ho sentito la Siemens, la quale mi ha consigliato di usare trasferimenti di max 32 byte e di utilizzare i "moduli univerali" del DP coupler impostando quindi:

- modulo universale 32 byte ingressi consistenti

- 3 moduli universali 32 byte uscite consistenti

Ho utilizzato quindi:

CALL "DPRD_DAT"

LADDR :=W#16#100

RET_VAL:=#ErroreSFC14

RECORD :="P#DB50.DBX0.0 BYTE 32

CALL "DPWR_DAT"

LADDR :=W#16#100

RECORD :=P#DB50.DBX32.0 BYTE 32

RET_VAL:=#ErroreSFC15

CALL "DPWR_DAT"

LADDR :=W#16#100

RECORD :=P#DB50.DBX64.0 BYTE 32

RET_VAL:=#ErroreSFC15

CALL "DPWR_DAT"

LADDR :=W#16#100

RECORD :=P#DB50.DBX96.0 BYTE 32

RET_VAL:=#ErroreSFC15

In questo modo riesco a trasferire tutte le aree senza errori ma con un problema: i dati scambiati ogni tanto sfarfallano, cioè se c'è scritto uno zero su una word, ogni tanto, per una frazione di secondo, appare un 16384, mentre se c'è scritto un numero, va a zero per una frazione di secondo.

Tenete presente che le DB che ho utilizzato per lo scambio dati non vengono ancora scritte o aggiornate dal programma S7 quindi escludo la possibilità che il programma aggiorni qualche variabile, anche perchè il problema si presenta dal byte 32 in poi.

Ringrazio in anticipo chiunque saprà aiutarmi.

Paolo.

Link al commento
Condividi su altri siti


Gabriele Corrieri

Ciao

poichè il trasmettitore sick penso sia un dispositivo trasparente, prova a tirare un cavo, tanto per escludere la cosa più ovvia, si può in casi estremi fare un filtraggio anti spurie ... ma è meglio capire e risolvere il problema che "patchare" a casaccio il software ...

Ciao

Link al commento
Condividi su altri siti

paolo.francovigh

Ciao, si, il Sick è trasparente per il Profibus.

Proverò ad usare un cavo al posto del Sick, spero non sia quello il motivo però.

Intanto grazie.

Link al commento
Condividi su altri siti

paolo.francovigh

Ho provato a collegare direttamente la CPU al DP Coupler, senza il Sick, ma il problema rimane.

Ho provato ad utilizzare aree da 16 byte (2x16 ingressi coerenti e 6x16 uscite coerenti nella 315 e speculare nella 314) ed utilizzare gli SFC per trasferire 16 byte: gli SFC non danno errori ma gli ingressi, da ambo le parti sfarfallano.

L'unico modo che ho di far funzionare il tutto è con 1x32 byte di ingressi coerenti + 1x64 byte uscite coerenti + 1x32 uscite coerenti utilizzando SFC14 con i 32 IN, SFC15 con 64 out e gli ultimi 32 byte trasferirli alla DB come PEW (se utilizzo SFC15 per l'ultima area da 32 OUT mi esce con errore).

Tutto questo consapevole che l'assistenza Siemens mi dice di utilizzare gli SFC con max 32 byte.

Ho provato anche a togliere controlli-allarmi settati sul DP Coupler...niente da fare.

Link al commento
Condividi su altri siti

Prova a non utilizzare la consistenza tanto leggendo il manuale avevo letto che è garantita per i primi 4 byte poi non è garantita.

(l'ho letto anni fa e penso di aver capito quanto ho scritto sopra, potrei però sbagliare)

Link al commento
Condividi su altri siti

paolo.francovigh

Ciao Ken, quello che intendi tu, e che è anche riportato sul manuale degli SFC14-15 è che, essendo possibile leggere in modo coerente dalla periferia max 4 bytes (con i comandi L PED) gli SFC in questione sono usati per leggere più di 4 bytes.

Questi SFC possono leggere o fino a 3 o più di 4 bytes: se leggi esattamente 4 bytes escono con errore.

Comunque mi sono arreso, uso i L PEW per leggere direttamente la periferia. Proverò a ricontattare il Service Siemens :(

Modificato: da paolo.francovigh
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...