zazzamatteofabio Inserito: 14 dicembre 2012 Segnala Inserito: 14 dicembre 2012 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
77andreagas Inserita: 14 dicembre 2012 Segnala Inserita: 14 dicembre 2012 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: 14 dicembre 2012 Autore Segnala Inserita: 14 dicembre 2012 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...
77andreagas Inserita: 14 dicembre 2012 Segnala Inserita: 14 dicembre 2012 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: 14 dicembre 2012 Autore Segnala Inserita: 14 dicembre 2012 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
77andreagas Inserita: 14 dicembre 2012 Segnala Inserita: 14 dicembre 2012 bene dai meglio così, ora ti dobrebbe funzionarte tutto. Ciao
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora