Changelog
Major changes in every release. For the full, line-by-line
detail - including smaller fixes and polish - see the
GitHub repository or ModbusLens's own Help > About > Changelog tab.
v2.4.0 Current
New
- Multiple devices in one window - each with its own connection (Modbus TCP, RTU over TCP, or serial) and Unit ID; devices sharing a link (several meters behind one gateway or on one RS-485 line) automatically share one connection
- Overview tab - a live status card per device, with Add Device / Add from Profile / Find Unit IDs and Remove All or Remove Selected Devices
- Top bar: select one or more devices there for Device Settings, Connect Selected and Disconnect Selected, alongside Connect All/Disconnect All
- Every tool - Address Table, Tags, Trend, Raw Data, Script, Scanner, Diagnostic Functions - now works per device, including a DEVICE line in scripts to switch mid-run
- Calculated tags - a Calc mode in the Tags table: an expression over other tags' values, recalculated after every poll cycle with no extra bus traffic, usable anywhere a tag is (alarms, Trend, Overview pins, CSV, Script)
- Workspace auto-save, and per-device write bounds that survive reconnects
- TCP Framing option for transparent serial-to-Ethernet gateways (RTU over TCP), and Gateway mode - relay real requests to a downstream serial device and return its actual response
- Bit View - a per-bit breakdown of a register's raw value, with inline expansion and single-bit writes
- Scanner reworked: an Excel-style color-coded results grid (green/red, with a legend) replaces the text log, paginated like spreadsheet sheets for large ranges, with an adjustable text size and a colorblind-friendly color option; Create Tags From Scan turns a result straight into Tags rows
- Export CSV... on the Scanner, Find Devices and Serial Discovery - save what a scan found to a file you can open in Excel
- Theme switching no longer force-disconnects a live device - it queues the switch and asks to restart only once everything's disconnected
- Profiles tab relaid out; documentation rewritten for multiple devices
Fixed
- Replies on a shared line (RTU-over-TCP gateway or RS-485 bus shared with another master) are now matched to their actual request instead of accepted as a wrong-data "Success"
- Auto-reconnect now reliably notices a dropped TCP link instead of leaving it flagged connected
- Script tag-name reads/writes hit the correct register (a one-off addressing bug)
- Tags table mouse-wheel scrolling no longer changes the dropdown/number box under the pointer
- Share to Community works again, with clearer failure messages; its submission key is now looked up from the project's GitHub, so it can be updated without a new release
- Scanner no longer aborts the whole scan on an address that times out with no response (common on a flaky link) - it narrows down the same way as a device exception instead, marking an address that's still inconclusive a third color rather than stopping the rest of the range
v2.3.0
New
- Device Profiles tab - save a device's Address Table range and Tags as a named, reusable profile (Name/Manufacturer/Type/Author); View Profile shows which tags are already in your live list (red/green, yellow for a mixed Tag Group) before importing any, and Apply doesn't close the dialog so you can adjust and import again
- Community Profiles - browse and download profiles shared by other users, and share your own back for review, no account needed either way. Apply and Download are independent: import a profile's tags without ever saving it locally, or download without applying anything
- Trend gained an Auto Scroll checkbox - an explicit, visible control for live-following vs. viewing history, travels into the detached window too
- Modbus Diagnostic Functions dialog - exception status, diagnostics, comm event log, report server ID, file records, mask write, FIFO queue, and device identification
- Save/Load Session - connection settings, Tags, Address Table range, and write bounds together in one file
- U64/S64/F64 numeric formats, alongside the existing U32/S32/F32
- Fast LAN Mode - instant unreachable-device detection instead of retrying every tag
- Tags table: drag-to-reorder columns, a show/hide column picker, per-tag enable/disable
- Raw Data gained an Exception column and an integrated Frame Viewer decoding TX/RX frames side by side
- Diagnostics > Decode Registers - a standalone hex decoder (U16 through F64, HEX, binary, ASCII, BCD, individual bits, all four byte/word orderings), no connection needed
- A shared read cache and coalesced adjacent reads cut duplicate traffic on the wire
- Script engine gained ASSERT and an Assertion Results panel - checks log PASS/FAIL/ERROR without stopping the script on a failure
- In-app documentation gained a "Full search" option across every topic at once
- Network Discovery gained a "Scan Unit IDs (1-247)" option - sweeps every Unit ID on each confirmed Modbus host to report which ones respond
- New "Find Devices" dialog - TCP network scan and serial parameter sweep in one shared results table, with a single Apply to Connection Settings for either
Fixed
- Tag Monitoring's polling (read-mode and write-mode) moved off the GUI thread - a single unreachable device no longer freezes the whole window
- Write-mode tags with a signed format showed the raw unsigned value instead of the signed one
- Tags table selection was invisible, with a related write-safety gap around deselected rows
- Script tab's example/help text is now real, scrollable content instead of clipped placeholder text
- Run Script's live-system safety warning dialog now follows the app's theme
- Connection Settings: selecting a Recent Connections entry - including the most recent one - now actually applies it
- Tag Monitoring could crash whenever Tag Groups were used, which also showed up as Read Values getting stuck blank; group headers were also unclickable while monitoring was active
- Typing into a tag's Read Value field while monitoring was running got overwritten by the next poll tick before you could act on it
- Raw Data's TX/RX byte columns could show one tag's bytes on a different tag's row during fast back-to-back polling
- A cancelled write now also flashes a clear status bar message, not just a log line - a reflexive second Enter could silently cancel a write via the confirmation dialog's No-default button
- Script tab: right-clicking selected text to copy it collapsed the selection first, so Copy had nothing to act on
- Local/Community Profiles toggle buttons gave no visual indication of which one was selected
- Trend's Record/Replay feature could silently fail to log a tick due to a timestamp overflow
v2.2.0
New
- Modbus Diagnostic Functions dialog - the function codes beyond basic read/write (exception status, diagnostics, comm event log, report server ID, file records, mask write, FIFO queue, device identification)
- Save/Load Session - connection settings, Tags, Address Table range, and write bounds together in one file
- U64/S64/F64 numeric formats, alongside the existing U32/S32/F32
- Fast LAN Mode - instant unreachable-device detection instead of retrying every tag
- Raw Data gained an Exception column and an integrated Frame Viewer decoding TX/RX frames side by side
- Tags table: drag-to-reorder columns, a show/hide column picker, per-tag enable/disable
- A shared read cache and coalesced adjacent reads cut duplicate traffic on the wire
Fixed
- Tag Monitoring's polling moved off the GUI thread - a single unreachable device no longer freezes the whole window
- Write-mode tags with a signed format showed the raw unsigned value instead of the signed one
- Tags table selection was invisible, with a related write-safety gap around deselected rows
v2.1.0
New
- Light/Dark theme, with a "follow system" option
- Scanner tab - auto-discover which addresses actually respond on a connected device
- Serial Discovery - sweep baud rate/parity/stop bits/Unit ID to find an undocumented serial device's settings
- Auto-reconnect with backoff, and monitoring resumes automatically once the connection comes back
- Modbus ASCII framing support for serial connections, alongside RTU
- Raw Data became its own dedicated tab - full wire-level diagnostics for every transaction
Fixed
- Scanner/Serial Discovery could race with auto-reconnect or a manual disconnect, and closing the app mid-scan could crash instead of shutting down cleanly
- Server tab's Unit ID field did nothing - the simulator answered on any unit ID
- Monitoring's auto-stop-after-repeated-failures didn't actually stop
v2.0.0
- Modbus Serial (RTU) support, alongside TCP
- Scripting tab - a small test-sequence language (WRITE/READ/WAIT/LOG/LET) with a safety warning before running against a live device
- Multi-window support - connect to more than one device at once, each in its own window
- Built-in documentation (Help menu)
v1.1.0
- Server/slave mode - act as a Modbus TCP device so another master can poll ModbusLens
- Trend tab with live graphing
- Per-tag alarms (high/low limits) and CSV logging of live values
- ARP-based network discovery and Modbus device detection
v1.0.0
- Initial public release
- Modbus TCP client - connect, read, and write coils/registers from an address table
- Tag table for monitoring named addresses, with safety interlocks around live writes
- Standalone Windows executable