A cross-platform temperature monitoring application built with LabVIEW, featuring Modbus communication, SQLite & TDMS dual storage, and real-time graphing.
Features • Architecture • Installation • Development • FAQ • License
- Cross-Platform — Supports Windows, macOS (11+), and Linux (x86_64)
- Modbus Communication — Connects to industrial temperature instruments (e.g., Acrel ARTM series) via Modbus RTU/TCP
- Dual Data Storage — Saves data to both SQLite (for structured queries) and TDMS (for high-performance time-series data)
- Real-Time Graphing — Displays temperature curves on XY graphs with mouse interaction
- Historical Data Query — Query and review past temperature records from the database
- Configurable Sampling Rate — Adjust data acquisition frequency to suit your needs
- Device Configuration UI — Form-based UI for managing communication settings
- Touch-Screen Friendly — Virtual keyboard support for tablet/kiosk deployments
- Modular Architecture — Built on the Delacor QMH (Queued Message Handler) framework for robust, maintainable multi-module design
The application follows a modular Queued Message Handler (QMH) pattern with four core modules:
Launcher.vi (Entry Point)
└── Application Module — Main UI & coordinator
├── DAQ Module — Modbus communication & data acquisition
├── Storage Module — Data persistence (SQLite + TDMS)
└── DataQuery Module — Historical data retrieval
| Module | Role | Key VIs |
|---|---|---|
| Application | Top-level controller, manages UI and module lifecycle | Show Panel, Hide Panel, Stop Module |
| DAQ | Communicates with temperature instruments via Modbus | 建立连接, 采集温度数据, Update Sampling Rate |
| Storage | Persists temperature data to SQLite and TDMS files | 存储Data至数据库, 存储Data至TDMS, Get TDMS Ref |
| DataQuery | Provides historical data query UI and logic | Form_HistoricalDataQuery |
| Component | Description |
|---|---|
| Com Library | Business logic VIs for Modbus communication, database operations, and data storage |
| Basic Library | Utility VIs for UI helpers, IP validation, mouse interactions, and module initialization |
| FGV (Functional Global Variables) | Shared data containers for inter-module communication |
| SQLite Database | Data/FD.db — stores temperature records and device configuration |
| TDMS Files | Runtime-generated files for high-speed time-series data |
This project is developed and tested with the Acrel ARTM Series Temperature Scanner (安科瑞ARTM系列温度巡检仪).
| Item | Detail |
|---|---|
| Device | Acrel ARTM8 (8-channel temperature scanner) |
| Protocol | Modbus RTU / Modbus TCP |
| Default IP | 192.168.80.1 |
| Manual | See Document/安科瑞ARTM 系列温度巡检仪V1.3.pdf |
The application can be extended to support other Modbus-compatible temperature instruments by modifying the DAQ module configuration.
Download the latest release from GitHub Releases. Available platforms:
- Windows x64
- Linux x86_64
- macOS 11+
Prerequisites:
- LabVIEW 2018 or later — Download
- SQLite Library — drjdpowell/SQLite Library (install via VIPM)
- Delacor QMH Toolkit — Install via VI Package Manager (VIPM)
- Modbus Library — Included with LabVIEW (Instrument I/O palette)
Build Steps:
- Clone this repository
- Open
Temperature Monitor/Temperature Monitor.lvprojin LabVIEW - Ensure all dependencies are resolved in the project explorer
- Build the application using the "My Application" build specification (Output:
应用程序.exe)
Note: If the application fails to start on Windows, ensure LabVIEW runtime is installed.
TemperatureMonitor/
├── Document/ Hardware documentation
│ ├── 安科瑞ARTM 系列温度巡检仪V1.3.pdf
│ └── ARTM8面板图示.png
├── Image/ Project assets
├── Temperature Monitor/
│ ├── Launcher.vi Application entry point
│ ├── Data/FD.db SQLite database
│ ├── Com Library/ Business logic VIs
│ ├── Basic Library/ Utility/helper VIs
│ └── Libraries/ QMH module libraries
│ ├── Application/ Main UI & controller module
│ ├── DAQ/ Data acquisition module
│ ├── Storage/ Data persistence module
│ └── DataQuery/ Historical query module
- Duplicate an existing module folder under
Libraries/ - Rename the
.lvlibfile and update internal references - Define custom Request VIs and argument clusters in the
Requests/subfolder - Implement the module's
Main.vifollowing the QMH pattern - Register the module in the main project file (
Temperature Monitor.lvproj)
- Module VIs follow the Delacor QMH naming pattern (Public API, Broadcasts, Requests, Private)
- Chinese VI names are used for domain-specific operations (e.g.,
存储Data至数据库.vi) - English names are used for framework/utility VIs
- All modules share a common initialization and synchronization template
Q: Some files could not be found / third-party libraries are missing
A: Install the required packages via VI Package Manager (VIPM):
- SQLite Library (by drjdpowell)
- Delacor QMH Toolkit
Q: How do I connect to a different Modbus device?
A: Open the Device Communication Configuration form (Form_设备通讯配置.vi) to change the Modbus connection parameters (IP address, port, unit ID).
Q: Where is the data stored?
A: Temperature data is saved in two formats:
- SQLite —
Temperature Monitor/Data/FD.db(for queries and reporting) - TDMS — Runtime-generated
.tdmsfiles (for high-performance time-series data)
Q: Can I run this on macOS or Linux?
A: Yes. The application is built using LabVIEW, which supports cross-platform deployment to Windows, macOS, and Linux.
This project is licensed under the GNU General Public License v3.0. See LICENSE for details.
