Skip to content

Latest commit

 

History

History
259 lines (218 loc) · 13.9 KB

File metadata and controls

259 lines (218 loc) · 13.9 KB

Fieldbus Studio

Created by Luca Schenettigithub.com/LucaSchenetti

🇬🇧 English · 🇮🇹 Italiano

Fieldbus Studio — Connection

Screenshots

Read — block-list reads
Read
Write — list writes
Write
Monitor — live time chart
Monitor
Server — datastore editor
Server
Log — raw frames & statistics
Log

English

Multi-protocol desktop client and server with a modern GUI (PySide6 / Qt 6). Four industrial protocols, each with its own complete Connection / Read / Write / Monitor / Server section:

Protocol Client Server / simulator
Modbus RTU (RS-485) and TCP/IP all functions 0x01-0x17, data types, bus scan, 0x2B RTU/TCP slave with editable 0-65535 datastore
PROFINET S7 (Siemens S7comm) DBs/flags/inputs/outputs, S7 types, CPU identification simulated PLC exposing DB/M/I/Q with a byte editor
EtherNet/IP (CIP) (Allen-Bradley/Logix) symbolic tags and arrays, List Identity simulated PLC exposing CIP tags with a value editor
CANopen SDO by index/subindex, node scan simulated node with a user-defined Object Dictionary

Every section has automatic polling, a watch list with a time chart, a shared transaction log and an independent status LED in the sidebar.

Download and run

Fieldbus Studio is distributed as a ready-to-run Windows executable — no Python, no installation and no dependencies to set up.

  1. Open the Releases page.
  2. Download the latest Fieldbus_Studio.exe.
  3. Double-click to launch it.

Windows only. On the first launch Windows SmartScreen may warn about an unrecognised publisher (the app is not code-signed): click More info → Run anyway.

Try it without hardware

The app ships with built-in simulators for all four protocols, so you can test everything on a single PC with nothing connected. In each protocol's Server section you start a simulated device, then connect the client to it from the Connection section:

  • Modbus — start a TCP server on 127.0.0.1:5020, then connect the client in TCP with the same parameters. Client writes appear live in the server datastore table and vice versa.
  • PROFINET S7 — start the simulated PLC (port 10102), then connect the client to 127.0.0.1:10102 (rack 0, slot 1).
  • EtherNet/IP — define the tags (e.g. Temperature = REAL), start the simulator (port 44818, takes a few seconds), then connect the client to 127.0.0.1.
  • CANopen — start the node on the virtual interface (channel test), then connect the client on the same virtual interface/channel and Node ID.

Features

  • RTU and TCP connection with dedicated panels: auto-detected serial port with a Refresh button, baudrate (presets + free value), parity, data/stop bits (RTU); host/IP and port (TCP); Slave/Unit ID (0–247) and timeout. Status LED, save/load profiles as JSON and last-profile memory.
  • Block-list reads (same model in every section): add the blocks you want — each with its address, function/area, data type and element count — and "Read" (or the polling) reads them in sequence. The results table mirrors the list instantly and updates in place with no flicker; a block in error shows ERR without stopping the others. Lists save/load as JSON, results export to CSV, and everything is remembered across sessions.
  • List writes (same model in every section): add the writes — each with its function/address/type/value — and "Write all" / "Write selected" sends them in sequence with a per-row result (✓/✗). Modbus supports 0x05, 0x06, 0x0F, 0x10, 0x16 Mask Write and 0x17 Read/Write Multiple, with input validation and spec limits.
  • Typed writes: values entered directly as int16/uint16, int32/uint32, float32/float64 or ASCII text, with selectable byte and word order; the conversion into registers is automatic.
  • Data types: int16/uint16, int32/uint32, float32 (IEEE754), float64, ASCII string, with selectable byte order and word order.
  • Automatic polling with a millisecond interval and live updates.
  • Automatic reconnection: if the device drops during polling, the app closes the dead connection and retries with the last parameters until it is back.
  • Monitor / register map: named entries (function, address, type, orders), saveable as JSON and importable/exportable as CSV. Ticked entries are plotted on a time chart (X = HH:MM:SS, Y = round numbers from 0); the mouse wheel zooms, a double-click auto-scales, hovering shows a tooltip. PNG and CSV export.
  • IT/EN language: a sidebar selector that translates the whole interface live — buttons, labels, tooltips, placeholders, combo items, headers, dialogs and the status bar — and remembers the choice.
  • Unit ID scan: probes a 1-247 range and lists the slaves that respond. Cancellable.
  • Device identification 0x2B: reads vendor, product code, revision, etc. of the connected device.
  • Communication statistics: request/OK/timeout/exception/error counters and last/min/avg/max response times, resettable.
  • Transaction log with timestamps (TX/RX/errors), Modbus exception decoding, save to file and continuous recording with automatic rotation (~5 MiB → .1).
  • UART/Modbus frame debug: shows the raw bytes transmitted and received on the wire — UART frames (ADU + CRC) for RTU, Modbus/TCP frames (MBAP + PDU) for TCP.
  • Server mode: the application becomes a Modbus RTU or TCP slave, exposing the whole 0-65535 address space for Holding/Input Registers and Coils/Discrete Inputs; values can be viewed and edited live (hex too), saved/ reloaded as JSON, and set by data type. Every protocol also has a simulated server (S7 PLC, EtherNet/IP PLC, CANopen node).
  • Baudrate up to 3 Mbaud (CP2102N limit) with presets 230400/460800/921600/ 1M/2M/3M plus a free value.
  • Modern sidebar interface with collapsible per-protocol sections, rounded cards, one status LED per protocol, resizable columns.
  • Dark/light theme switchable at runtime, with log colours adapted to the theme.
  • All communication runs in a worker thread: the GUI never freezes, not even on timeouts.

Hardware note (RS-485 / CP2102N / THVD1424)

The PC connects to the PCB through a CP2102N USB-UART bridge with a THVD1424 RS-485 transceiver. The half-duplex direction (DE/RE) is handled by the CP2102N hardware (RS-485 mode with automatic RTS): the software does not control RTS. The port is treated as a normal COM port.

To test with real hardware: connect the PCB (CP2102N), press Refresh, select the port, set baudrate/parity to match the device, connect and read/write.


Italiano

Client e server desktop multi-protocollo con un'interfaccia moderna (PySide6 / Qt 6). Quattro protocolli industriali, ognuno con la propria sezione completa Connessione / Lettura / Scrittura / Monitor / Server:

Protocollo Client Server / simulatore
Modbus RTU (RS-485) e TCP/IP tutte le funzioni 0x01-0x17, tipi di dato, scansione del bus, 0x2B slave RTU/TCP con datastore 0-65535 modificabile
PROFINET S7 (Siemens S7comm) DB/merker/ingressi/uscite, tipi S7, identificazione CPU PLC simulato che espone DB/M/I/Q con editor a byte
EtherNet/IP (CIP) (Allen-Bradley/Logix) tag simbolici e array, List Identity PLC simulato che espone tag CIP con editor dei valori
CANopen SDO per indice/sottoindice, scansione nodi nodo simulato con Object Dictionary definito dall'utente

Ogni sezione ha polling automatico, una watch list con grafico temporale, un log delle transazioni condiviso e un LED di stato indipendente nella barra laterale.

Download e avvio

Fieldbus Studio è distribuito come eseguibile Windows pronto all'uso — niente Python, niente installazione e nessuna dipendenza da configurare.

  1. Apri la pagina delle Releases.
  2. Scarica l'ultimo Fieldbus_Studio.exe.
  3. Fai doppio clic per avviarlo.

Solo Windows. Al primo avvio Windows SmartScreen potrebbe segnalare un editore non riconosciuto (l'app non è firmata): clicca Ulteriori informazioni → Esegui comunque.

Provalo senza hardware

L'app include simulatori integrati per tutti e quattro i protocolli, così puoi provare tutto su un solo PC senza niente collegato. Nella sezione Server di ogni protocollo avvii un dispositivo simulato, poi colleghi il client dalla sezione Connessione:

  • Modbus — avvia un server TCP su 127.0.0.1:5020, poi collega il client in TCP con gli stessi parametri. Le scritture del client compaiono in tempo reale nella tabella del datastore del server e viceversa.
  • PROFINET S7 — avvia il PLC simulato (porta 10102), poi collega il client a 127.0.0.1:10102 (rack 0, slot 1).
  • EtherNet/IP — definisci i tag (es. Temperature = REAL), avvia il simulatore (porta 44818, ci mette qualche secondo), poi collega il client a 127.0.0.1.
  • CANopen — avvia il nodo sull'interfaccia virtual (canale test), poi collega il client sulla stessa interfaccia/canale virtuale e Node ID.

Funzioni

  • Connessione RTU e TCP con pannelli dedicati: porta seriale rilevata automaticamente con pulsante Refresh, baudrate (preset + valore libero), parità, bit di dati/stop (RTU); host/IP e porta (TCP); Slave/Unit ID (0–247) e timeout. LED di stato, salvataggio/caricamento profili in JSON e memoria dell'ultimo profilo.
  • Letture a lista di blocchi (stesso modello in ogni sezione): aggiungi i blocchi che vuoi — ognuno con indirizzo, funzione/area, tipo di dato e numero di elementi — e "Leggi" (o il polling) li legge in sequenza. La tabella dei risultati rispecchia la lista all'istante e si aggiorna sul posto senza sfarfallio; un blocco in errore mostra ERR senza fermare gli altri. Le liste si salvano/caricano in JSON, i risultati si esportano in CSV e tutto viene ricordato tra le sessioni.
  • Scritture a lista (stesso modello in ogni sezione): aggiungi le scritture — ognuna con funzione/indirizzo/tipo/valore — e "Scrivi tutto" / "Scrivi selezionati" le invia in sequenza con un esito per riga (✓/✗). Modbus supporta 0x05, 0x06, 0x0F, 0x10, 0x16 Mask Write e 0x17 Read/Write Multiple, con validazione dell'input e limiti da specifica.
  • Scritture tipizzate: valori inseriti direttamente come int16/uint16, int32/uint32, float32/float64 o testo ASCII, con ordine di byte e word selezionabile; la conversione in registri è automatica.
  • Tipi di dato: int16/uint16, int32/uint32, float32 (IEEE754), float64, stringa ASCII, con ordine di byte e word selezionabile.
  • Polling automatico con intervallo in millisecondi e aggiornamento live.
  • Riconnessione automatica: se il dispositivo cade durante il polling, l'app chiude la connessione morta e riprova con gli ultimi parametri finché non torna disponibile.
  • Monitor / mappa dei registri: voci con nome simbolico (funzione, indirizzo, tipo, ordini), salvabili in JSON e importabili/esportabili in CSV. Le voci spuntate vengono tracciate su un grafico temporale (X = HH:MM:SS, Y = numeri tondi da 0); la rotella del mouse zooma, il doppio clic torna all'auto-scala, il passaggio del mouse mostra un tooltip. Esportazione PNG e CSV.
  • Lingua IT/EN: un selettore nella barra laterale che traduce tutta l'interfaccia in tempo reale — pulsanti, etichette, tooltip, placeholder, voci dei menu a tendina, intestazioni, dialoghi e barra di stato — e ricorda la scelta.
  • Scansione Unit ID: sonda l'intervallo 1-247 ed elenca gli slave che rispondono. Annullabile.
  • Identificazione dispositivo 0x2B: legge vendor, codice prodotto, revisione, ecc. del dispositivo collegato.
  • Statistiche di comunicazione: contatori richieste/OK/timeout/eccezioni/ errori e tempi di risposta ultimo/min/medio/max, azzerabili.
  • Log delle transazioni con timestamp (TX/RX/errori), decodifica delle eccezioni Modbus, salvataggio su file e registrazione continua con rotazione automatica (~5 MiB → .1).
  • Debug frame UART/Modbus: mostra i byte grezzi trasmessi e ricevuti sul filo — frame UART (ADU + CRC) per RTU, frame Modbus/TCP (MBAP + PDU) per TCP.
  • Modalità server: l'applicazione diventa uno slave Modbus RTU o TCP, esponendo tutto lo spazio di indirizzi 0-65535 per Holding/Input Register e Coil/Discrete Input; i valori si possono vedere e modificare in tempo reale (anche in hex), salvare/ricaricare in JSON e impostare per tipo di dato. Ogni protocollo ha anche un server simulato (PLC S7, PLC EtherNet/IP, nodo CANopen).
  • Baudrate fino a 3 Mbaud (limite CP2102N) con preset 230400/460800/921600/ 1M/2M/3M oltre ai classici, più un valore libero.
  • Interfaccia moderna a barra laterale con sezioni per protocollo richiudibili, card arrotondate, un LED di stato per protocollo, colonne ridimensionabili.
  • Tema chiaro/scuro commutabile a runtime, con i colori del log adattati al tema.
  • Tutta la comunicazione gira in un thread worker: la GUI non si blocca mai, nemmeno sui timeout.

Nota hardware (RS-485 / CP2102N / THVD1424)

Il PC si collega alla scheda tramite un bridge USB-UART CP2102N con transceiver RS-485 THVD1424. La direzione half-duplex (DE/RE) è gestita dall'hardware del CP2102N (modalità RS-485 con RTS automatico): il software non controlla l'RTS. La porta viene trattata come una normale porta COM.

Per provare con hardware reale: collega la scheda (CP2102N), premi Refresh, seleziona la porta, imposta baudrate/parità coerenti col dispositivo, connetti e leggi/scrivi.