Connessione TCP client con FB SysTCPClient
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Connessione TCP client con FB SysTCPClient
Taggato: TCP
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 1 anno fa da
Sergio Bertana.
-
AutorePost
-
Ottobre 2, 2024 alle 4:20 pm #78332
Giuseppe Cattaneo
PartecipanteStò cercando di leggere via Modbus dei registri da un dispositivo, seguendo i consigli datemi, ho scoperto di dover utilizzare il blocco SysTCPClient.
Ho scritto un programma FBD ma testandolo ho qualcosa di palesemente sbagliato, perché mi da errore ad aprire la comunicazione TCP come vedi dallo screenshot (Fault a TRUE).
Vedo anche che il tipo di connessione MDB_TCP indica 0 ma il valore corrispondente dovrebbe essere 2, ma li non ci arrivo comunque per adesso.
Ottobre 4, 2024 alle 9:59 am #78371Sergio Bertana
Amministratore del forumLe cause del Fault possono essere molte, intanto ti consiglio di verificare con il comando Syslog da connessione Telnet che errori hai, la descrizione degli errori la trovi qui.
Hai verificato se il tuo dispositivo 192.168.255.1 è raggiungibile dallo SlimLine, se il dispositivo risponde al ping puoi testarlo con il comando di Ping sempre da connessione Telnet.
Ma guardando il tuo programma vedo il motivo dell’errore, se leggi bene la documentazione del FB SysTCPClient, vedi questo:
- LocalAdd (@STRING) Indirizzo IP della interfaccia di rete da cui effettuare la connessione. Default ‘0.0.0.0’: l’interfaccia è scelta automaticamente in base all’IP a cui connettersi.
- LocalPort UINT) Numero porta TCP da cui parte la connessione (0 scelta automaticamente).
Tu invece hai definito sia uno che l’altro dei parametri.
Definendo LocalAdd con l’indirizzo IP dello SlimLine stai obbligando il FB ad utilizzare la connessione che ha questo indirizzo e fino a qui tutto funziona tanto la connessione con il tuo dispositivi parte proprio dalla porta ethernet dello SlimLine.
Ma definendo LocalPort a 502 stai obbligando il FB ad aprire la connessione verso la porta 502 del tuo dispositivo dalla sua porta 502 che in realtà è già utilizzata dallo SlimLine (é quella dove ci si conette in Modbus). Quindi trovandola già aperta il FB non può utilizzarla.
Ottobre 4, 2024 alle 11:33 am #78385Giuseppe Cattaneo
PartecipantePerfetto, ho scollegato la LocalPort e adesso la comunicazione funziona.
Non capisco perché se lascio il Connect a TRUE mi risponde ogni 28 secondi… Io avrei bisogno una acquisizione ogni 500ms devo generargli un clock da 500ms sul Connect?
Ottobre 4, 2024 alle 11:35 am #78390Sergio Bertana
Amministratore del forumDevi leggere bene le informazioni del FB ModbusMaster, il FB è realizzato per poter operare con modello a cascata, quindi se mantieni Enable semmpre attivo verrà eseguita una sola interrogazione. Se vedi gli esempi si collega sempre il Done negato all’Enable in questo modo terminata un comando ne viene eseguito un’altro e così via. Il tempo tra i comandi lo puoi definire con il parametro Delay.
Perchè adesso esegue una lettura ogni circa 28 secondi, se tu vedi hai impostato un tempo di LifeTime nella FB SysTCPClient di 20 secondi, alla connessione il FB modbus con Enable attivo esegue un solo comando, non essendoci più comunicazione dopo 20 secondi il TCP client chiude la connessione e dopo 5 secondi ne ritenta un’altra che và a buon fine e cosi parte un’altra interrogazione Modbus.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.