Dannyy Inserito: 6 giugno 2016 Segnala Share Inserito: 6 giugno 2016 Buongiorno a tutti. Esiste un limite in numero per la lettura dei DB in moka7? Es: Client.SetConnectionType(S7.OP); int Result = Client.ConnectTo(IpAddress, Rack, Slot); if (Result==0) while(true) { byte[] Buffer1 = new byte[60]; int result1 = Client.ReadArea(S7.S7AreaDB, 1, 0, 60, Buffer); if (result1 !=0) break; … … byte[] Buffer2 = new byte[60]; int result2= Client.ReadArea(S7.S7AreaDB, 2, 0, 60, Buffer2); if (result2 !=0) break; … … byte[] Buffer3= new byte[60]; int result3 = Client.ReadArea(S7.S7AreaDB, 3, 0, 60, Buffer3); if (result3! =0) break; … … //ripetiamo il codice per n volte quanti sono i db da leggere. byte[] Buffer_n= new byte[60]; int result_n = Client.ReadArea(S7.S7AreaDB, n, 0, 60, Buffer_n); if (result_n ! =0) break; … … } Client.Disconnect(); In questo caso come gestisce la comunicazione il processore della CPU? Esiste un modo più efficiente (senza pensare al tempo di elaborazione e creare nuovi DB) per ottenere lo stesso risultato? Infinite grazie a Davide Nardella per il suo grande lavoro. Grazie. Link al commento Condividi su altri siti More sharing options...
dan64100 Inserita: 6 giugno 2016 Segnala Share Inserita: 6 giugno 2016 Quote Esiste un modo più efficiente (senza pensare al tempo di elaborazione e creare nuovi DB) per ottenere lo stesso risultato? Un modo più efficiente esiste per Snap7 (Moka7 è una versione ridotta completamente in Java). Con Snap7 puoi utilizzare Cli_ReadReadMultiVars (o Write) che può leggere più variabili posizionate in DB diverse in un unica funzione. Ci sono comunque alcune controindicazioni: Puoi leggere max 20 variabili per volta La quantità complessiva dei dati deve rimanere all'interno del PDU. Ogni variabile contiene un descrittore nel telegramma di andata e ritorno per cui il payload finale diminuisce. Quindi verresti a perdere il vantaggio della lettura indipendente dal PDU cioè la caratteristica di Snap7 di splittare in più telegrammi una richiesta di molti byte. Comunque non mi è chiaro cosa intendi per "creare nuovi DB". Un altro modo per migliorare l'efficienza è quello creare più client connessi alla stessa CPU e gestirli i thread separati. Considera però che: hai bisogno di più risorse di comunicazione lato CPU, che magari hai già perché hai solo un HMI. La CPU gestisce una coda interna di canali attivi, e non è dato sapere come, che varia da processore a processore, per cui per CP esterne o CPU vecchie guadagneresti ben poco. In genere comunque vale la pena provare. Quote In questo caso come gestisce la comunicazione il processore della CPU? Esattamente come sono scritte nel codice : trasferimenti sequenziali e sincroni (il successivo parte quando è completo il precedente). Link al commento Condividi su altri siti More sharing options...
Dannyy Inserita: 6 giugno 2016 Autore Segnala Share Inserita: 6 giugno 2016 Eseguendo lo script nel programma java, il processore di comunicazione della CPU vede un pannello operatore che interroga una serie di DB in maniera sequenziale ed ordinata, allocando le risorse di elaborazione per una sola unità OP, è corretto? Per gestire in totale autonomia la riconnessione alla CPU ( in caso di spegnimento problemi di rete ecc.) pensavo di crere un thread separato che controllasse lo stato della connessione, cosa ne pensi? Nello scrivere "creare nuovi DB" intendevo, creare DB dove copiare il contenuto dei byte da leggere in una sola operazione tramite dbread. Appena ho un po di tempo vedo di studiare il magico C++ Grazie. Link al commento Condividi su altri siti More sharing options...
Dannyy Inserita: 6 giugno 2016 Autore Segnala Share Inserita: 6 giugno 2016 Scusate ma solo ora vedo che è presente la risposta alla domanda (riconnessione CPU) in questa discussione : libreria Moka7: giusta la mia procedura di utilizzo?? 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