Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Errore X_Get X_Put


Messaggi consigliati

zazzamatteofabio
Inserito:

Salve a tutti, chiedo aiuto perchè ho la capa che sta bollendo..

Sto provando a comunicare tra 2 cpu, una 313c_2dp e un 315c_2dp collegate in MPI.

Usando l'x_get e X_put sia da una parte che dall'altra mi da errore 80c0 ovvero "Il collegamento indicato è già occupato da un altro job" ho ripassato più volte il codice, la guida, ma non riesco a capire il perchè.

UN "REQ_X_PUT"

UN "BUSY_X_PUT"

= "REQ_X_PUT"

CALL "X_PUT"

REQ :="REQ_X_PUT"

CONT :=TRUE

DEST_ID :=W#16#2 //6

VAR_ADDR:=P#DB251.DBX 4.0 BYTE 4

SD :=P#DB5.DBX4.0 BYTE 4

RET_VAL :=#retval_1

BUSY :="BUSY_X_PUT"

e gli indirizzi mpi sono corretti ma non riesco a capire.

Grazie


Inserita:

Come direbbe il mio capo "IMPOSSSIBILE che non funzioni"........

Comunque a parte gli scherzi,

Potrebbe essere che se hai configurato in una CPU sia l'X-GET che X-PUT verso lo stesso partner devi fare attenzione a non richiamare contemporaneamente oppure mentre è in corso un job di una delle due istruzioni della stessa CPU.

In poche parlo se ho nello stesso programma sia X-Get che X-Put vrifico che siano finiti tutti i job e poi parto con X-Get concluso il job abbio X-Put e poi via via.....

A mio parere è meglio che metti solo una istruzione X-get su una cpu e un'altro X-get sull'altra CPU, cosi' non ti complici la vita.

A presto e buon lavoro.

zazzamatteofabio
Inserita:

Grazie della prontezza,

Prima della tua risposta ho provato anche con send e receive.

Considerando i due indirizzi usando send e receive, da MPI 3 a MPI 2 riesco a mandare ma non a ricevere, sempre per lo stesso motivo (80c0)

Ora mi sono focalizzato sulla direzione "da 2 a 3" visto che andando da 2 a 3 almeno con send receive funziona.

Quindi sul 3 solo X_get

UN "REQ_X_GET"

UN "BUSY_X_GET"

= "REQ_X_GET"

CALL "X_GET"

REQ :="REQ_X_GET"

CONT :=TRUE

DEST_ID :=W#16#2 //6

VAR_ADDR:=P#DB251.DBX 0.0 BYTE 4

RET_VAL :=#retval

BUSY :="BUSY_X_GET"

RD :=P#DB5.DBX0.0 BYTE 4

Ma ancora ret val = 32960 ovvero 80c0... che rompicapo...

Inserita:

fai cosi' prova a fare solo un x-get su una sola cpu e verifica se vedi almeno i dati depositati sulla db dell'altra cpu senza avere errori vari.....

poi eventualemlemnte ne parliamo

zazzamatteofabio
Inserita:

Ho fatto come hai detto ma niente, come se ci fosse un job sempre attivo.

Sono andato a vedere il buffer di diagnostica ed era rimasta una incongruenza, ovvero un blocco (quello che conteneva get e put), nel quale per fare i merker di richiesta e di Busy, ho usato indirizzi che andavano oltre le capacità della Cpu313c 2 dp. Avevo usato m278.0 --->>

Avevo caricato questo blocco ma mi dava impossibile caricare, tuttavia online era rimasta quache "porcheria" dovuta a questo intoppo e mi dava sul buffer il messaggio "errore di compilazione".

C'è da dire che sono in assistenza remota con un manutentore in arabia, e solo nel pomeriggio mi disse ci sono led rossi sul plc.. (potevo anche vedere il buffer, lezione imparata)

Quindi resettato il plc con il selettore pulito il buffer, non più job piantati e tutto funziona!!

Grazie della sollecitudine molto gentile

Saluti

Inserita:

bene dai meglio così, ora ti dobrebbe funzionarte tutto.

Ciao

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...