Simone Grigis Inserito: 28 gennaio 2021 Segnala Inserito: 28 gennaio 2021 Ciao a tutti, Ho un dispositivo remoto collegato con in 485 a cui devo inviare con istruzione Send un buffer in tre modalità diverse per compiere alcune operazioni. Le tre modalità di comunicazione hanno tre buffer (composti da array con lunghezze diverse) da inviare. Tutto funziona utilizzando un ciclo CASE con tre istruzioni SEND che fa la richiesta da me voluta. Vorrei ottimizzare il software inserendo una sola istruzione SEND, parametrizzando il parametro BUFFER, ma non sono capace. Qualcuno può aiutarmi ? Grazie mille
batta Inserita: 28 gennaio 2021 Segnala Inserita: 28 gennaio 2021 2 ore fa, Simone Grigis ha scritto: Vorrei ottimizzare il software inserendo una sola istruzione SEND, parametrizzando il parametro BUFFER La soluzione sarebbe più elegante ma, dal punto di vista pratico, forse è più semplice gestire i tre SEND separati. Se va bene così, non vedo perché cambiare. Potrebbe avere senso se i SEND fossero molti.
Simone Grigis Inserita: 28 gennaio 2021 Autore Segnala Inserita: 28 gennaio 2021 Grazie mille Batta, il problema è che oltre all'eleganza e a voler imparare sempre nuove cose, in futuro non troppo lontano dovrei aggiungere altri SEND e potrebbero diventare veramente molti
batta Inserita: 28 gennaio 2021 Segnala Inserita: 28 gennaio 2021 Sarebbero utili altre informazioni. Almeno il modulo di comunicazione usato, e quale delle varie istruzioni SEND viene usata.
Simone Grigis Inserita: 28 gennaio 2021 Autore Segnala Inserita: 28 gennaio 2021 Ciao, Il modulo che utilizzo su un S7-1200 è una CB1241 ed utilizzo l'istruzione Send_PTP Grazie mille
batta Inserita: 29 gennaio 2021 Segnala Inserita: 29 gennaio 2021 Da molto tempo non mi capita più di gestire comunicazioni seriali. L'ultima volta è stato con moduli ET200s (S7-300, quindi un modo molto diverso di lavorare). Non ho mai usato la funzione SEND_PTP, quindi ciò che dico è da prendere solo come possibile soluzione, tutta da verificare. L'istruzione Send_ptp potrebbe essere richiamata passandole sempre la stessa struttura. Nel CASE si copia, di volta in volta, la struttura da inviare nella struttura di appoggio, e la relativa lunghezza. Purtroppo, se le strutture fossero tutte uguali, basterebbe un semplice MOVE ( := in testo strutturato). Ma le strutture sono diverse. Bisognerebbe conoscere come sono composte queste strutture per capire come procedere. Forse si dovrà lavorare con istruzioni tipo MOVE_BLK, MOVE_BLK_VARIANT, VariantGet, VariantPut. Oppure, si potrebbe lavorare con blocchi "non ottimizzati" ma, sinceramente, cerco di ripiegare su questa soluzione solo quando è assolutamente indispensabile. Sinceramente, temo che la complicazione per la gestione dei dati sia maggiore della semplificazione per il richiamo di una sola istruzione Send.
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