Jump to content
PLC Forum


Sign in to follow this  
tam_tam

Focas

Recommended Posts

tam_tam

Ciao,

sto cercando di utilizzare le librerie focas su PC tramite C# per recuperare il commento del programma in esecuzione su due CN serie 31i e 32i. Riesco a collegarmi, leggere le macro ma non c'è verso di riuscire a leggere i commenti del programma. Utilizzo la funzione cnc_rdprogdir3 della libreria FWLIB32 e la parametrizzo con: type = 2, top_prog = 1, num_prog = 2000. C'è qualcosa che sbalgio? Bisogna chiamare qualche altra funzione prima della cnc_rdprogdir3 per abilitarne il funzionamento?

 

Grazie!

Share this post


Link to post
Share on other sites

lucios

Ma che cosa ti restituisce la funzione? Ti ritorna ok o un errore?

Share this post


Link to post
Share on other sites
tam_tam

Nessun errore....la funzione ritorna zero per cui tutto ok ma su num_prog ho zero, è come se non trovasse quel che viene richiesto, tra l'altro il numero di programma attivo viene correttamente letto tramite la cnc_exeprgname

Edited by tam_tam

Share this post


Link to post
Share on other sites
lucios

Prova a postare il metodo che utilizzi per richiamare la funzione che provo a dargli un'occhiata.

 

Share this post


Link to post
Share on other sites
tam_tam

Il controllo 31i B ha due canali che girano in parallelo e chiamando la stessa identica funzione sul secondo canale (ho scoperto che esiste la cnc_setpath) funziona correttamente mentre sul primo niente da fare fino a quando di colpo sembra essersi sbloccato e ora funziona correttamente anche sul primo canale.

 

L'altro controllo è un i32 B con un solo canale, leggo le macro e lo stato ma nulla da fare con i commenti...

 

Codice:

 

            Focas1.PRGDIR3 prgDir3 = new Focas1.PRGDIR3();
            int top = prgNum;
            short num = 1;
            ReturnCodes.Code returnCode = (ReturnCodes.Code)Focas1.cnc_rdprogdir3(focasHandle, 1, ref top, ref num, prgDir3);

 

prgNum è il numero di programma attivo che viene correttamente letto dalla cnc_exeprgname

Share this post


Link to post
Share on other sites
lucios

Mah, sembra giusto. Sei sicuro che il problema non sia da un'altra parte? Anche perchè quello che dici

Quote

mentre sul primo niente da fare fino a quando di colpo sembra essersi sbloccato e ora funziona correttamente anche sul primo canale

E' abbastanza strano; ho smanettato molto con le Focas e posso affermare che se una funzione ritorna 0 i dati ci sono e quella funzione in passato l'ho usata.

Se metti un break point subito sotto il richiamo della funzione cosa trovi scritto in top e num ?

Comunque mercoledì rientro in ufficio e ho un simulatore Fanuc per cui in 10 minuti posso fare una prova.

 

 

Share this post


Link to post
Share on other sites
tam_tam

Guarda mi viene da pensare sia un problema legato al fatto che va a cercare il programma nel posto sbagliato lato cn perchè se mi ritorna zero la funzione indica che non ha semplicemente trovato quel che è stato richiesto ma non ci sono stati errori. Riesco a leggere il numero del programma attivo non capisco perchè la cnc_rdprogdir3 ritorni zero sia in top che in num e solamente sul 32i

 

Potrebbe esserci un conflitto di versione? Mi sta venendo il dubbio di utilizzare la versione 1 delle focas....provo a vedere se trovo il modo di verificare la versione delle librerie...altro non mi viene in mente nulla...

 

Che versione del cn hai sul simulatore? Se non ti porta via troppo tempo fare la prova con il simulatore te ne sarei grato anche se sono sicuro ti funzioni tutto alla perfezione

 

Grazie!

Share this post


Link to post
Share on other sites
lucios

Ho provato con un CNC vero, un serie 0i e mi funziona.

Ho buttato giù un metodo "grezzo" giusto per provare, che mi va a leggere 10 programmi a partire dal numero 1 fatto così:

        public int ReadProgramDirectory(ref Exception exc)
        {
            try
            {
                short type = 2;
                int topprg = 1;
                short numprg = 10;
                Focas1.PRGDIR3 prgdir3 = new Focas1.PRGDIR3();
                int ret = Focas1.cnc_rdprogdir3(libHandle, type, ref topprg, ref numprg, prgdir3);

                return 0;
            }
            catch (Exception ex)
            {

                exc = ex;
                return -1;
            }

        }

Se non selezioni prima il path la funzione di default legge il primo.

Io uso le Focas 2

Edited by lucios

Share this post


Link to post
Share on other sites
tam_tam

Codice uguale identico al mio..il path lo seleziono e difatti funziona sulla macchina 31i che ha due path mentre sul 32i che ha un path solo lo seleziono comunque ma non cambia nulla e ricevo un bello zero sia in top che in numprg. A sto punto il problema penso sia del 32i....non c'è nulla da impostare a livello cn? Nessun parametro oltre alla porta?

 

Grazie!

Fabio

Share this post


Link to post
Share on other sites
lucios

No, non penso che sia un problema del 32i.

Se le altre funzioni Focas funzionano non c'è nient'altro da settare, almeno a mia conoscenza.

Ma se apri la cartella folder del CN in PROG vedi la lista dei programmi? Puoi postare la foto della schermata della folder?

Edited by lucios

Share this post


Link to post
Share on other sites
tam_tam

Mi hai dato l'imboccata giusta!!

 

Il programmatore cn ho scoperto che ha messo tutti i programmi sotto cartelle che non sono nè PATH1 nè PATH2 (e neppure PROG che non esiste nel CN). Copiando un programma sotto PATH1 riesco a recuperarne le info. Domanda...sai se esiste un sistema per specificare su quale cartella deve lavorare la cnc_rdprogdir3?

Share this post


Link to post
Share on other sites
lucios

Che io sappia no, ho visto che esiste la funzione "cnc_wrpdf_curdir" che setta la cartella corrente, ma non l'ho mai utilizzata.

Prova magari a settare la cartella giusta prima di richiamare la cnc_rdprogdir3, magari funziona anche se ho qualche dubbio perchè nella documentazione non è che la cosa sia spiegata molto bene...

Share this post


Link to post
Share on other sites
tam_tam

Difatti non funziona e la cnc_wrpdf_curdir mi ritorna sempre EW_ATTRIB che vuol dire parametro dir_kind non valido, peccato che dalla documentazione ci sono solo due valori possibili (1 e 2) e nessuno dei due va...ho provato anche con 0 e 3 con ovviamente lo stesso risultato...bha...

Edited by tam_tam

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...