Luca Carminati Inserito: 21 novembre 2019 Segnala Inserito: 21 novembre 2019 Buongiorno a tutti, E' il mio primo post su questo forum, quindi se violo qualche regola ditemelo pure che provvederò. Sto facendo degli esperimenti nella mia azienda cercando di far comunicare un ET200SP e una scheda con accelerometro customizzata (quindi non chiedetemi datasheet perchè purtroppo non posso darveli (😢). L'accelerometro funziona principalmente in questo modo: Si invia uno "Start" di 24V ad un suo ingresso specifico. Appena rilevato il livello logico alto esso comincerà a raccogliere tutti i dati che l'accelerometro rivela dall' ambiente esterno. Quando il livello logico torna normale (basso) la scheda a cui è attaccato l'accelerometro tiene in memoria tutti i dati rilevati da quest'ultimo, e, all'invio del dato (In UDP dal PLC) "0" esso sparerà fuori degli array da 506 byte ciascuno contenente tutti i dati rilevati. Il 2° byte di ogni array contiene il N° dell' array stesso. (Spiego meglio: se vengono inviati 3 array da 506 Byte, il 2° byte del primo array conterrà 01, il 2° del secondo 02, il 2° del terzo 03 3 così via....) Il N° di array che verranno inviati al PLC dipende dalla durata di "Start" che è stata inviata dal PLC. In particolare il PRIMO array che invia al PLC contiene un dato riguardante il N° totale di array che verranno inviati immediatamente dopo al PLC. Per suddividere tutti i vari array e memorizzarli nel PLC in Tia Portal (15.1) ho provato la seguente soluzione (funzionante): Arrivo del 2° array ( scartiamo il PRIMO che non contiene dati riguardanti i valori di accelerazione), faccio un confronto tra il 2° byte dell'array e un numero fisso (1,2,3...), se il numero fisso corrisponde al 2° byte dell' array appena arrivato lo salvo in un Array dichiarato in una DB del PLC, e così via per tutti gli altri array che mi arriveranno; ne arriva uno , lo confronto lo salvo, ne arriva un altro lo confronto e lo salvo ecc.. Il problema che mi si pone ora (e arriviamo al dunque) è che non so tecnicamente come fare per creare degli array al momento che dipenderanno dalla lunghezza della lettura effettuata dall' accelerometro. Infatti, come credo abbiate capito se lo "Start" dura 10s mi arriveranno Tot array, se ne dura 20s mi arriveranno Tot+n array. Vi allego immagini esplicative per chiarire meglio cosa mi arriva P.S. per effetturare il collegamento tra PLC e Accelerometro utilizzo un blocco TCON per stabilire la connessione, un blocco TUSEND per inviare il dato "0" e un blocco TURCV per ricevere la valanga di array in UDP
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