Lux78 Inserito: 17 settembre 2010 Segnala Inserito: 17 settembre 2010 Salve a tutti,vi espongo un problema che mi è recentemente capitato.Ho un'applicazione scritta in .NET (2008) che sfrutta CX Server Lite tramite ActiveX.L'applicazione deve recuperare dei valori accedendo a get_DM per poi registrarli su un database.I problemi sono 2:1. Seguendo il seguente procedimentocomms.OpenPLC -> tutti i get_DM -> comms->ClosePLCil processo cdmsrv20 ha un'occupazione di memoria in costante crescita, partendo da circa 10MB fino ad arrivare oltre 80MB in pochi minuti.Se invece apro e chiudo il PLC ad ogni chiamata l'occupazione di memoria sale molto meno (ma continua a salire), inoltre si dilatano i tempi di esecuzione di ciascuna ciclo (ogni ciclo prevede numerose letture dal get_DM).2. Dopo un po' che è in esecuzione noto che i tempi di esecuzione del get_DM crescono notevolmente, spesse volte rimanendo in attesa dalle 17 del pomeriggio fino alle 6 del mattino dopo.Ho aggiunto svariati log per monitorare i tempi di esecuzione di ciascuna operazione.Il problema sembra non si presentasse con la versione sviluppata in VB6.Preciso che tra una chiamata e l'altra del get_DM eseguo uno Sleep di 50 millisecondi.La versione del CX Server Lite utilizzata è la 1.21.Provando a sfruttare la versione .NET e non l'activeX non ho trovato i metodi per accedere ai registri di memoria DM, ma solamente i Read e GetData che prevedono dei Point definiti sullo strumento, strada che non è praticabile.Sapete dirmi come fare per rendere stabile e affidabile l'accesso ai registri di memoria?Esiste forse una versione più aggiornata che risolve dei bug?Oppure vi sono procedure particolari per accedere ai dati?Grazie,Max
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