Peppe2801 Inserito: 26 maggio 2023 Segnala Share Inserito: 26 maggio 2023 (modificato) Ciao a tutti, sto cercando aiuto per un progetto. Ho svariati dispositivi modbus rtu collegati tramite convertitore via tcp a un s7 1200. Per gestirli uso il blocco mb client 4.2. L’s7 può gestire 8 connessioni tcp contemporaneamente, ma, io ho bisogno di gestire 20 o anche 30 connessioni, non contemporaneamente. Ho fatto varie prove tra cui quello di creare un sequenziatore con frequenza 1hz che abilita l’ingresso disconnect in serie con l’out busy. Diciamo che funziona, ma spesso molti blocchi vanno in errore 8087 (troppe connessioni attive contemporaneamente). Qualcuno può darmi esempi-consigli?? Ringrazio anticipatamente. Modificato: 26 maggio 2023 da Peppe2801 Link al commento Condividi su altri siti More sharing options...
rguaresc Inserita: 29 maggio 2023 Segnala Share Inserita: 29 maggio 2023 On 5/26/2023 at 11:41 PM, Peppe2801 said: un sequenziatore con frequenza 1hz un sequenziatore con frequenza 1hz potrebbe essere troppo veloce. Non ho mai provato con un 1200, ma con una cpu 300 ho dovuto usare 4 secondi. Le operazioni Connect/Disconnect necessarie per usare una unica risorsa erano lente Link al commento Condividi su altri siti More sharing options...
ETR Inserita: 29 maggio 2023 Segnala Share Inserita: 29 maggio 2023 Ciao peppe, giusto per fare un attimo ordine : hai una sola linea TCP, verso un convertitore TCP/RTU Modbus a cui sono collegati svariati oggetti con ID xx, giusto ? Se è cosi (perché usi il singolare), perché parli di più connessioni in parallelo ? L'istanza TCP è unica, devi cambiare la unit ID nella richiesta, perché il convertitore possa instradare correttamente il pacchetto sino al dispositivo RTU. Dipende più dalla rete RTU che dal PLC, l'intervallo di chiamata. Se segui l'esempio Siemens, inseriscono un timer di attesa tra una chiamata e l'altra (a seconda della CPU 1200, ho in giro PLC che gestiscono da 100 ms a 500 ms) e solitamente lascio questo timer anche per compensare alcune latenze, lato RTU. Altra fattore da considerare : il pacchetto è solo in lettura con registri attigui o hai diverse richieste lettura/scrittura, perché hai aree non attigue da interrogare ? Buona giornata, Ennio Link al commento Condividi su altri siti More sharing options...
Peppe2801 Inserita: 29 maggio 2023 Autore Segnala Share Inserita: 29 maggio 2023 Grazie per le risposte ragazzi, cerco di essere più preciso. Al S7 sono collegati 3 convertitori TCP - RTU impostati a 200ms. Ogni convertitore gestisce 5 o 6 dispositivi I/O tra i quali DI e DO, AI e AO, quindi, devo gestire sia letture che scritture. Al momento ho trovato una soluzione che sembri funzionare bene ma devo ancora terminarla: Per quanto riguarda i DO e AO (quindi scrittura) li tengo costantemente in standby con il parametro disconnect sempre attivo. Quando un bit o una variabile cambia di stato abilito la comunicazione con lo slave e al termine della scrittura tutto torna in standby con il parametro DONE. In questo modo non occupo la rete inutilmente ma solo quando mi serve. Per quanto riguarda i DI e AI li attivo e disattivo con un sequenziatore a 1hz controllati dal parametro connect di ogni blocco MB. Stavo pensando però di separare da questo sequenziatore tutto ciò che è AI, che, essendo dati non importati come frequenza di aggiornamento, posso farli attivare ogni 15/20 secondi. In ogni caso ogni blocco MB ha la sua db di istanza e ID dedicata. 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