Vai al contenuto

Connessione TCP client con FB SysTCPClient

Home Forum Controllori SlimLine e Netsyst (LogicLab) Connessione TCP client con FB SysTCPClient

Taggato: 

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #78332
    Giuseppe Cattaneo
    Partecipante

    Stò 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.

    #78371
    Sergio Bertana
    Amministratore del forum

    Le 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.

    #78385
    Giuseppe Cattaneo
    Partecipante

    Perfetto, 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?

    #78390
    Sergio Bertana
    Amministratore del forum

    Devi 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.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.