{"id":557,"date":"2026-06-06T12:21:56","date_gmt":"2026-06-06T10:21:56","guid":{"rendered":"https:\/\/www.luigitarpani.it\/?p=557"},"modified":"2026-06-06T12:42:32","modified_gmt":"2026-06-06T10:42:32","slug":"flutter-fins_ltt-comunicare-con-plc-omron-tramite-protocollo-fins-udp","status":"publish","type":"post","link":"https:\/\/www.luigitarpani.it\/index.php\/2026\/06\/06\/flutter-fins_ltt-comunicare-con-plc-omron-tramite-protocollo-fins-udp\/","title":{"rendered":"Flutter FINS_LTT: Comunicare con PLC Omron tramite protocollo FINS UDP"},"content":{"rendered":"\n<p>Questa volta parliamo di un piccolo progetto che nasce direttamente dal mondo dell\u2019automazione industriale.<\/p>\n\n\n\n<p>Negli ultimi anni mi \u00e8 capitato spesso di sviluppare applicazioni che dialogano con PLC e dispositivi industriali. Per quanto riguarda i <strong>PLC Omron<\/strong>, uno dei protocolli pi\u00f9 diffusi \u00e8 senza dubbio <em>FINS (Factory Interface Network Service)<\/em>, che permette di leggere e scrivere dati all\u2019interno del controllore tramite rete Ethernet.<\/p>\n\n\n\n<p>Per semplificare questo tipo di integrazione ho deciso di realizzare e pubblicare su pub.dev il package <strong><a href=\"https:\/\/pub.dev\/packages\/fins_ltt\">fins_ltt<\/a><\/strong>, una libreria Dart che implementa il protocollo <em>FINS UDP<\/em> e consente di comunicare con i PLC Omron direttamente da applicazioni <em>Flutter<\/em> e <em>Dart<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cos&#8217;\u00e8 FINS LTT<\/h2>\n\n\n\n<p>FINS LTT \u00e8 una libreria Dart che permette di:<\/p>\n\n\n\n<ul>\n<li>Connettersi a PLC Omron tramite protocollo FINS UDP.<\/li>\n\n\n\n<li>Leggere parole (word) dalle aree di memoria del PLC.<\/li>\n\n\n\n<li>Scrivere parole nelle aree di memoria.<\/li>\n\n\n\n<li>Leggere e scrivere bit singoli.<\/li>\n\n\n\n<li>Gestire valori Int16, Int32 e Float32.<\/li>\n\n\n\n<li>Effettuare polling automatico delle variabili.<\/li>\n\n\n\n<li>Integrare facilmente la comunicazione PLC all&#8217;interno di applicazioni Flutter Desktop, Web e Mobile.<\/li>\n<\/ul>\n\n\n\n<p>L&#8217;obiettivo principale \u00e8 offrire un&#8217;interfaccia semplice e moderna per sviluppatori Dart e Flutter che desiderano interagire con sistemi industriali senza dover utilizzare librerie esterne o software proprietari.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Perch\u00e9 Dart e Flutter in automazione industriale<\/h3>\n\n\n\n<p>Quando si parla di automazione industriale si tende spesso a pensare a linguaggi tradizionali come C++, C# o Java.<\/p>\n\n\n\n<p>Negli ultimi anni <em>Flutter <\/em>si \u00e8 dimostrato una soluzione estremamente interessante per la realizzazione di:<\/p>\n\n\n\n<ul>\n<li>Interfacce operatore (HMI).<\/li>\n\n\n\n<li>Applicazioni di supervisione.<\/li>\n\n\n\n<li>Dashboard industriali.<\/li>\n\n\n\n<li>Sistemi di monitoraggio remoto.<\/li>\n\n\n\n<li>Applicazioni desktop multipiattaforma.<\/li>\n<\/ul>\n\n\n\n<p>Avere una libreria <em>FINS <\/em>scritta direttamente in <em>Dart <\/em>nativo permette di mantenere l&#8217;intera applicazione nello stesso linguaggio, semplificando notevolmente sviluppo e manutenzione.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Codice Sorgente ed Utilizzo<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"494\" height=\"394\" src=\"https:\/\/www.luigitarpani.it\/wp-content\/uploads\/2026\/06\/fins-ltt-code.png\" alt=\"FINS LTT UPD CODE\" class=\"wp-image-561\" srcset=\"https:\/\/www.luigitarpani.it\/wp-content\/uploads\/2026\/06\/fins-ltt-code.png 494w, https:\/\/www.luigitarpani.it\/wp-content\/uploads\/2026\/06\/fins-ltt-code-300x239.png 300w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><\/figure>\n\n\n\n<p>Il progetto \u00e8 completamente open source ed \u00e8 disponibile su GitHub:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/GiGi-Italy\/fins_ltt\">https:\/\/github.com\/GiGi-Italy\/fins_ltt<\/a><\/p>\n\n\n\n<p>Il package \u00e8 inoltre disponibile su pub.dev:<\/p>\n\n\n\n<p><a href=\"https:\/\/pub.dev\/packages\/fins_ltt\">https:\/\/pub.dev\/packages\/fins_ltt<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Contesto<\/h2>\n\n\n\n<p>L&#8217;idea di questo progetto nasce da diverse attivit\u00e0 svolte negli anni nell&#8217;ambito dell&#8217;automazione industriale.<\/p>\n\n\n\n<p>In molti impianti produttivi \u00e8 necessario leggere dati dai <em>PLC <\/em>per visualizzarli su pannelli operatore, software di supervisione o sistemi di raccolta dati.<\/p>\n\n\n\n<p>Spesso questo comporta l&#8217;utilizzo di software proprietari o librerie specifiche per ogni piattaforma.<\/p>\n\n\n\n<p>Con <em>FINS LTT<\/em> ho voluto dimostrare che \u00e8 possibile utilizzare <em>Flutter <\/em>anche in questo settore, mantenendo un approccio moderno allo sviluppo software e sfruttando tutte le potenzialit\u00e0 offerte dall&#8217;ecosistema <em>Dart<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compatibilit\u00e0<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.luigitarpani.it\/wp-content\/uploads\/2026\/06\/comunicazione-flutter-omron.jpg\" alt=\"Comunicazione Flutter PLC omron\" class=\"wp-image-562\"\/><\/figure>\n\n\n\n<p>Attualmente il package utilizza il protocollo <em>FINS UDP<\/em> standard e pu\u00f2 essere utilizzato con <em>PLC Omron<\/em> compatibili con questo protocollo.<\/p>\n\n\n\n<p>Essendo sviluppato interamente in Dart, non richiede DLL native n\u00e9 componenti aggiuntivi e pu\u00f2 essere integrato facilmente in applicazioni Flutter Desktop, Mobile e Web.<\/p>\n\n\n\n<p>Naturalmente la disponibilit\u00e0 effettiva della comunicazione dipender\u00e0 dalle capacit\u00e0 di rete della piattaforma utilizzata e dalla configurazione del PLC.<\/p>\n\n\n\n<p>Ho personalmente testato la libreria su PLC Omron delle serie <strong>CJ2M<\/strong>, <strong>CJ2H<\/strong> e <strong>CJ1W<\/strong>, utilizzandola in scenari reali di comunicazione Ethernet per la lettura e scrittura di dati. Questo mi ha permesso di verificare sul campo il corretto funzionamento dell&#8217;implementazione FINS UDP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ringraziamenti<\/h2>\n\n\n\n<p>Un ringraziamento particolare va alla comunit\u00e0 di sviluppatori che negli anni ha condiviso documentazione, esempi e informazioni sul protocollo FINS.<\/p>\n\n\n\n<p>La documentazione ufficiale Omron rappresenta una fonte fondamentale per comprendere il funzionamento del protocollo e realizzare implementazioni affidabili.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusione<\/h2>\n\n\n\n<p>FINS LTT nasce con l&#8217;obiettivo di rendere pi\u00f9 semplice l&#8217;integrazione tra Flutter e il mondo dell&#8217;automazione industriale.<\/p>\n\n\n\n<p>Se stai sviluppando applicazioni Dart o Flutter che devono comunicare con PLC Omron tramite Ethernet, questo package pu\u00f2 rappresentare una base solida e al contempo leggera e completamente open source da cui partire.<\/p>\n\n\n\n<p>Come sempre, suggerimenti, segnalazioni e contributi sono benvenuti.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Questa volta parliamo di un piccolo progetto che nasce direttamente dal mondo dell\u2019automazione industriale. Negli ultimi anni mi \u00e8 capitato spesso di sviluppare applicazioni che dialogano con PLC e dispositivi industriali. Per quanto riguarda i PLC Omron, uno dei protocolli pi\u00f9 diffusi \u00e8 senza dubbio FINS (Factory Interface Network Service), che permette di leggere e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":559,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts\/557"}],"collection":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/comments?post=557"}],"version-history":[{"count":2,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts\/557\/revisions"}],"predecessor-version":[{"id":563,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts\/557\/revisions\/563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/media\/559"}],"wp:attachment":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/media?parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/categories?post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/tags?post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}