luca_82 Inserito: 10 novembre 2017 Segnala Share Inserito: 10 novembre 2017 Ciao a tutti, stò lavorando con una Cpu ET200SP, e devo scambiare dei dati attraverso le istruzioni Open User Comunication con un sensore di visione. Con il blocco TRCV_C ho creato una connessione con il sensore mettendo l'ingresso "CONT" a true ( e ce lo lascio), e nel momento in cui abilito l'ingresso "EN_R" vado a leggere quello che il sensore di visione automaticamente dopo una scansione butta fuori sulla sua porta Ethernet,cioè il numero dei caratteri della stringa che ha letto e fino a qui tutto torna. In una fase successiva a questa lettura devo dare un comando al sensore, cioè mandargli un comando sotto forma di stringa, e sulla sua risposta dovrei vedere la stringa che lui ha letto durante l'ispezione.... la sequenza che ho utilizzato è la seguente, blocco TRCV_C per creare il collegamento e leggere la prima volta, e blocchi TSEND e TRCV per dargli il secondo comando e leggere di conseguenza la sua risposta. Il problema è che quando eseguo l'istruzione TSEND (ho usato questa perchè in realtà ho già un collegamento attivo) l'istruzione TRCV_C mi alza l'errore sull'uscita "ERROR", dandomi come codice di ritorno sull'uscita "STATUS" il valore 80C3 ed il tutto si impalla. L'allarme dice che il canale di comunicazione è aperto da un altra parte, non riesco a capire dove sia il problema? Qualcuno sa darmi qualche dritta su come utilizzare i vari blocchi ? Grazie mille a tutti. Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 10 novembre 2017 Segnala Share Inserita: 10 novembre 2017 Prima dici che la ricezione una volta aperta la comunicazione è TRCV, poi l'istruzione che ti da errore è TRCV_C. Quale delle due è l'affermazione sbagliata? E' forse questo il motivo dell'errore? Link al commento Condividi su altri siti More sharing options...
luca_82 Inserita: 10 novembre 2017 Autore Segnala Share Inserita: 10 novembre 2017 Ciao Pigro e grazie per aiutarmi...In realtà hai letto bene e probabilmente l'errore è proprio quello, io richiamo la prima volta TRCV_C, dove creo il collegamento, lo attivo e associo ad una memoria l'ingresso di ricezione del blocco. Due Rung dopo richiamo laaltra funzione TSEND e la funzione TRCV. Ho pensato anche io che probabilmente le due funzioni TRCV_C e TRCV siano ridondanti e questo gli crei problemi, però in realtà quando richiamo il secondo blocco TRCV sul primo TRCV_C l'ingresso di ricezione non è abilitato... Io potrei anche lasciare solo il blocco TRCV_C, però la prima volta il sensore mi da in uscita un valore esadecimale su un array di 5 Byte, mentre la seconda volta dopo il mio messaggio con la funzione TSEND dovrebbe darmi fuori una stringa...se l'area di memoria su cui vado ad appoggiare i dati è la stessa( essendo i due valori con formati diversi) come faccio poi a leggere i valori correttamente....? Grazie ancora. Link al commento Condividi su altri siti More sharing options...
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