Skip to content

elijah286/mini-system-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

115 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini System Manager (Revidyne)

Repository: github.com/elijah286/mini-system-manager
Purpose: A simple, readable LabVIEW-based “mini system manager” for connecting to Revidyne educational hardware systems (available via revidyne.com).

Revidyne builds small, functional, desktop-scale models designed to help educators teach engineering and programming concepts using real “code + electronics + physical system” workflows. Examples include modules like a solar tracker (ReviSol), a wind turbine (ReviWin), and a small power plant model (ReviGen), all controllable over USB.
Learn more about the hardware at revidyne.com.


What this software does

This project provides a Queued Message Handler (QMH) application focused on:

  • Device connectivity
    • Connect to Revidyne hardware over USB (string/command-style communication).
  • Command discovery
    • Query a connected device for its supported command set.
  • Interactive test console
    • Send commands, receive responses/data, and validate behavior during development or labs.
  • Curriculum + exercises integration
    • Serve pre-written curriculum materials and related exercises.
    • Help learners understand which devices are required and which devices are compatible with a given lesson plan.

The code is intentionally simple and readable to model best practices and make it approachable for students and educators.


Installation & Setup

This project is intentionally lightweight—there’s no installer.

Requirements

  • LabVIEW 2020 or later
  • NI-VISA (required for device communications)

Steps

  1. Download (or clone) this repository:
    git clone https://github.com/elijah286/mini-system-manager.git
    

Supported Revidyne systems (examples)

Revidyne offers multiple small systems that connect to a PC via USB and can be monitored/controlled with string-based commands. Examples include:

  • ReviSol — solar tracker with a photovoltaic panel and stepper motor; supports solar tracking algorithms and IV curve tracing concepts.
  • ReviWin — wind turbine model with directional control and interrupt-driven wind-speed measurement concepts.
  • ReviGen — small power plant model with motor/generator coupling, PWM control, output power calculations, and PID control concepts.
  • ReviGrid — a collection of power grid models connected via a case hub to explore smart-grid strategies and model interactions.

(See revidyne.com for the current set of models and details.)


Architecture

This application uses a classic Queued Message Handler (QMH) style:

  • A UI/message loop enqueues actions
  • A worker/handler loop processes messages deterministically
  • State and device I/O are kept straightforward to support teaching and maintainability

Screenshot: Main Block Diagram (QMH)

Screenshot 2026-02-09 at 5 09 49 PM

VI File Browser

Browse front panel and block diagram snapshots for every VI in this project: Open VI Browser →

All VIs & Controls (42 files)

Root

File Type
Controller Commands.ctl CTL
Curriculum Launcher.vi VI
Find Curriculum.vi VI
Graph Popup.vi VI
main.vi VI
Simple Solar Tracker v4.vi VI
Status String Update.vi VI

Curriculum / Generator API

File Type
Generator Driver Template 1.vi VI
Generator Driver Template 2.vi VI
Generator Driver Template 3.vi VI
Generator Driver Template 4.vi VI
Generator Driver Template 5.vi VI

Curriculum / Generator API / subVIs

File Type
Demo PID Control.vi VI
Default Instrument Setup.vi VI
Close.vi VI
Initialize.vi VI
VI Tree.vi VI
Init.vi VI
Motor Off.vi VI
Motor On.vi VI
Set Load.vi VI
Set Speed.vi VI
Get KW.vi VI
Get Value.vi VI
Error Query.vi VI
Reset.vi VI
Revision Query.vi VI
Self-Test.vi VI

Curriculum / Generator Lessons

File Type
Generator Lesson 1.vi VI
Generator Lesson 2.vi VI
Generator Lesson 3.vi VI
Generator Lesson 4.vi VI
Generator Lesson 5.vi VI
Generator Lesson 6.vi VI
Generator Lesson 7.vi VI
balance grid.vi VI
Command with Return Value.vi VI
Confirm USB Devices and IO.vi VI
Get All Values.vi VI
USB Device Filter.vi VI

Curriculum / Main Power Grid

File Type
Main Power Grid.vi VI

Curriculum / Solar Lessons

File Type
Solar Example.vi VI

Getting started

  1. Install LabVIEW (version/tooling appropriate for the project contents).
  2. Clone the repo
    git clone https://github.com/elijah286/mini-system-manager.git

## CI pipeline

This repository now includes GitHub Actions modeled on the Windows-container workflows in `ni/labview-for-containers`:

- **MassCompile - Windows Container**: mass compiles the repository on pull requests and pushes to `main`
- **Run VI Analyzer - Windows Container**: runs a starter VI Analyzer ruleset and uploads the text report as an artifact
- **VIDiff Report - Windows Container**: generates HTML diffs for changed `.vi` and `.ctl` files in pull requests
- **Deploy VIDiff Reports**: publishes VIDiff HTML reports to GitHub Pages and comments on the pull request with links

The CI workflows pull a pre-baked LabVIEW image from GitHub Container Registry (GHCR): `ghcr.io/elijah286/mini-system-manager-labview:2026`.

This repo keeps the image definition in source control and the built image in GHCR:

- Dockerfile in repo: `.github/docker/labview-ci.Dockerfile`
- Build/publish workflow: `.github/workflows/build-labview-image.yml`
- Published package location: repository **Packages** tab in GitHub

### Rebuilding the CI image

1. Run the `Build LabVIEW CI Image` workflow from Actions.
2. Optionally set `labview_tag` in workflow dispatch input (defaults to `2026`).
3. Check the workflow summary for the pushed tags and digest.

The build workflow runs on changes to the Dockerfile path and monthly on schedule, and always uses `windows-2022`.

If you need to pin a different LabVIEW version, update `LABVIEW_CONTAINER_IMAGE` in workflow files under `.github/workflows/`, then rebuild and publish the corresponding image tag.

The starter VI Analyzer configuration is in `.github/labview/via-configs/via-config-default.viancfg`. You should expect to tune that ruleset once you see the first CI results for this codebase.

<!-- labview-ci:dashboard -->
## LabVIEW CI

[![LabVIEW CI dashboard](https://img.shields.io/badge/LabVIEW%20CI-dashboard-2ea44f)](https://elijah286.github.io/mini-system-manager/)

LabVIEW CI runs on every pull request. See the [**CI dashboard**](https://elijah286.github.io/mini-system-manager/) for build status, VI Analyzer results, VI diffs, and mass-compile reports.

About

LabVIEW based application to evaluate and run software for the Revidyne Mini Systems

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors