Software — mbseq

MBLT Sequencer

A test station: sequences in Python, an IDE with a real debugger, and a verdict per unit.

Available 1.0.4 mbseq — command line and desktop app

What it does

Write the test as Python steps with limits, step through them with a debugger, then run them on the bench. Each step gets a name, a pass or fail and its measurements against limits; the run ends on a PASS or FAIL verdict and writes its report without being asked. It drives what the bench already speaks - VISA, SCPI on a socket, serial, Modbus TCP and RTU - and the rest of this family through their public interfaces.

  • Sequences as Python: @step with a name and an on-fail policy, check() with low, nominal and high limits, operator questions, setup and cleanup that always runs
  • An IDE with a real debugger - breakpoints, step into, over and out, the paused frame's variables and call stack, and a line typed into the terminal evaluated where it is paused
  • Imports the test documentation: a Test Spec Ecosystem trace model, a tspec-proposals/1 file or a Kiwi TCMS export comes in as flows, legs and test cases, and the sequence it writes carries each case's id back into every result and report
  • The station's instruments defined once on a Hardware page - VISA, SCPI over a socket, serial, Modbus TCP and RTU, the HardwareRTD engine's pipe or its share, SignalScope, MBLT PLC and MBLT HMI tags - so the same script runs on another bench unchanged
  • Limits from the plan rather than the code, with Cp, Cpk, a histogram and a fitted curve across a batch, and plus or minus k sigma offered as the next limit
  • A production screen with nothing to change by mistake, barcode scanning anywhere on the page, parts, batches and first-pass yield, and users at three levels with an audit trail
  • Reports by itself at the end of every test - JSON, CSV, HTML, Excel, Word and PDF in the same title block as the test documentation, plus a row per test and per measurement into SQLite or any ODBC database
  • Driven from elsewhere: SCPI on port 5241 the way a bench instrument is, a Python client and CLI that exits 0, 1, 2 or 3 for pass, fail, error or aborted, and an MCP server so an AI agent can run the test and read the verdict
The station at rest, on the Roulette Sample board's functional test. Down the left the bench - supply, meter, fixture, board, scanner - each marked REQ if a test may not start without it. In the middle the script, where the test case it came from is carried in the code itself: trace={'id': 'TC-FT-01', 'leg': 'P-FT'}. Bottom left the same steps as a list, two of them struck through because the plan says skip, one set to abort on failure - all of that changed without touching the script.
The station at rest, on the Roulette Sample board's functional test. Down the left the bench - supply, meter, fixture, board, scanner - each marked REQ if a test may not start without it. In the middle the script, where the test case it came from is carried in the code itself: trace={'id': 'TC-FT-01', 'leg': 'P-FT'}. Bottom left the same steps as a list, two of them struck through because the plan says skip, one set to abort on failure - all of that changed without touching the script.
A pass, step by step. Every measurement carries the low, nominal and high it was judged against and a gauge showing where it fell, and the two setup steps - did the bench answer, is the fixture lid closed - are judged like any other. Top right the batch so far: 1 unit, 1 pass, 100 per cent yield. The report was written to the results folder before the screen finished drawing.
A pass, step by step. Every measurement carries the low, nominal and high it was judged against and a gauge showing where it fell, and the two setup steps - did the bench answer, is the fixture lid closed - are judged like any other. Top right the batch so far: 1 unit, 1 pass, 100 per cent yield. The report was written to the results folder before the screen finished drawing.
A fail, and why. Each of the forty LEDs is measured on its own, and LED 12 drew 0 mA where the band was 0.5 to 1.3 - an open LED on the simulated board. The twenty-five around it passed and are still listed, because a step that fails does not stop its other checks. The batch line has gone to 2 units, 1 pass, 1 fail, 50 per cent.
A fail, and why. Each of the forty LEDs is measured on its own, and LED 12 drew 0 mA where the band was 0.5 to 1.3 - an open LED on the simulated board. The twenty-five around it passed and are still listed, because a step that fails does not stop its other checks. The batch line has gone to 2 units, 1 pass, 1 fail, 50 per cent.
Paused at a breakpoint, mid-run. The red dot is the breakpoint, the yellow line is where it stopped, Variables holds the live instrument object, and the ribbon says step 1 of 8 and the line it is on. The steps that already ran are in the terminal with their measurements and their limits in brackets.
Paused at a breakpoint, mid-run. The red dot is the breakpoint, the yellow line is where it stopped, Variables holds the live instrument object, and the ribbon says step 1 of 8 and the line it is on. The steps that already ran are in the terminal with their measurements and their limits in brackets.
The bench, defined once. Each instrument has a kind, an address, the query that proves it answers, whether a test may start without it, and a program to start when it does not answer - which is how the simulated bench comes up by itself. Test all has just run, and the terminal holds what each one replied, model numbers and all.
The bench, defined once. Each instrument has a kind, an address, the query that proves it answers, whether a test may start without it, and a program to start when it does not answer - which is how the simulated bench comes up by itself. Test all has just run, and the terminal holds what each one replied, model numbers and all.
The test plan's equipment against this station, matched by what each instrument can do rather than by name: a bench supply covers the two power-up cases, a multimeter with a channel switch covers another, an oscilloscope is in the lab but not on this station - and the climatic chamber the validation plan asks for is missing outright, in red. Three of four covered, said before anyone sets up.
The test plan's equipment against this station, matched by what each instrument can do rather than by name: a bench supply covers the two power-up cases, a multimeter with a channel switch covers another, an oscilloscope is in the lab but not on this station - and the climatic chamber the validation plan asks for is missing outright, in red. Three of four covered, said before anyone sets up.
Every measurement the script has ever made, across eighteen runs of which four failed, with where each limit came from - the script, the plan, or this part - and the mean, sigma, Cpk and fail count beside it. The right-hand column offers what plus or minus six sigma would make the limit; use takes it, and it goes into the plan without the code changing.
Every measurement the script has ever made, across eighteen runs of which four failed, with where each limit came from - the script, the plan, or this part - and the mean, sigma, Cpk and fail count beside it. The right-hand column offers what plus or minus six sigma would make the limit; use takes it, and it goes into the plan without the code changing.
One measurement, looked at properly: eighteen tests, fourteen passed, 77.8 per cent yield, and the idle current's histogram with its fitted curve inside limits of 15 to 40 mA. Mean 22.025, sigma 0.1171, Cp 35.57, Cpk 19.99, and the sigma level to the nearer limit spelled out at 59.97 - a process nowhere near its limits, which is worth knowing before anybody tightens them.
One measurement, looked at properly: eighteen tests, fourteen passed, 77.8 per cent yield, and the idle current's histogram with its fitted curve inside limits of 15 to 40 mA. Mean 22.025, sigma 0.1171, Cp 35.57, Cpk 19.99, and the sigma level to the nearer limit spelled out at 59.97 - a process nowhere near its limits, which is worth knowing before anybody tightens them.
The production screen, at the end of a run. Everything an operator could get wrong has been taken away - scan, Start test, read the verdict, open the report - and the list has stayed where the test left it, so the last steps and the cleanup are still in sight under the verdict instead of scrolled off. Two steps are marked skipped, saying why: disabled in the test plan. The board's own picture sits beside the verdict, the batch line keeps score, and leaving this screen needs a technician to log in.
The production screen, at the end of a run. Everything an operator could get wrong has been taken away - scan, Start test, read the verdict, open the report - and the list has stayed where the test left it, so the last steps and the cleanup are still in sight under the verdict instead of scrolled off. Two steps are marked skipped, saying why: disabled in the test plan. The board's own picture sits beside the verdict, the batch line keeps score, and leaving this screen needs a technician to log in.
The station as a bench instrument. Over a socket on port 5241 a PLC, LabVIEW or a Python script asks for the sequences, sets the part and serial, says RUN, waits on *OPC?, then reads VERD? for PASS, the counts, and any single measurement by name - while the page behind follows along.
The station as a bench instrument. Over a socket on port 5241 a PLC, LabVIEW or a Python script asks for the sequences, sets the part and serial, says RUN, waits on *OPC?, then reads VERD? for PASS, the counts, and any single measurement by name - while the page behind follows along.
An agent driving the same station through the client: list the hardware and get each instrument's own answer back - the supply naming itself a PS-3005, the meter a DM-6500 - check the script for 8 steps and 22 checks with no errors, then run it against a part and serial and read the verdict and the report path. Nothing special is added for this; it is the same interface the CLI and the HMI use.
An agent driving the same station through the client: list the hardware and get each instrument's own answer back - the supply naming itself a PS-3005, the meter a DM-6500 - check the script for 8 steps and 22 checks with no errors, then run it against a part and serial and read the verdict and the report path. Nothing special is added for this; it is the same interface the CLI and the HMI use.
Not a simulation. The HardwareRTD engine is the station's rtd instrument, on its share on port 5200, and what is behind it is an Arduino Mega on COM8 - the description says so, and the green line underneath is the engine answering when the station asked. Beside it the fixture and the board are the simulated ones, which is the point: one station, some of it real and some of it not, and the script does not know the difference.
Not a simulation. The HardwareRTD engine is the station's rtd instrument, on its share on port 5200, and what is behind it is an Arduino Mega on COM8 - the description says so, and the green line underneath is the engine answering when the station asked. Beside it the fixture and the board are the simulated ones, which is the point: one station, some of it real and some of it not, and the script does not know the difference.
The same real board, tested. Three steps: the engine is streaming all five of the board's columns, the clock moves and the rows arrive at 10 a second against a band of 9 to 11, and the values are in range - a 10-bit ADC reading 38 to 55 where anything from 0 to 1023 was allowed, and a sine holding its amplitude at 99.898 against a ceiling of 100.5. Pass, on hardware, the live sampling taking 5.26 seconds of it.
The same real board, tested. Three steps: the engine is streaming all five of the board's columns, the clock moves and the rows arrive at 10 a second against a band of 9 to 11, and the values are in range - a 10-bit ADC reading 38 to 55 where anything from 0 to 1023 was allowed, and a sine holding its amplitude at 99.898 against a ceiling of 100.5. Pass, on hardware, the live sampling taking 5.26 seconds of it.
The same results screen in one of MBLT HMI's colour schemes. The sequencer borrows the HMI's light, dark, industrial, grey, green and blue, or keeps its own - one click, per PC or for the whole station, which matters on a line where the panel beside it is already dark.
The same results screen in one of MBLT HMI's colour schemes. The sequencer borrows the HMI's light, dark, industrial, grey, green and blue, or keeps its own - one click, per PC or for the whole station, which matters on a line where the panel beside it is already dark.

Worth knowingIt needs Python 3.13 from python.org - it is the one application here whose runtime is not inside the package, because the sequences are Python and run in it. Install.bat says so and install-python-deps.cmd adds the instrument libraries. A station with no users is open and says so in the top bar; adding the first Engineer locks it.

On video

Ten recordings of it actually running.

Screens of a program that moves are only half of it, so here it is moving. All of it is the real application on a real station, recorded by its own tool rather than reconstructed - the Roulette Sample board's functional test on the simulated bench it ships with, except for one clip, which is a real Arduino on a COM port. Nothing plays until you press it.

22 s Pick the part, scan the serial, Run - and every step and every measurement filling in as it happens, then the verdict.
20 s A board with an open LED. The step fails, and the one measurement outside its limits says which LED and by how much.
40 s Two boards, back to back. The operator scans, presses Start, and the step list follows the running step down; at the end it stays there, with the last steps and the cleanup in sight under the verdict - then the next board starts and it follows that one from the top. Nothing on this screen can be changed by mistake.
25 s A real debugger on a test sequence - a breakpoint, Continue to it, the variables in the paused frame, step over twice, then on to the end.
12 s The station's instruments, defined once and tested in place - and a test plan's required equipment matched against them by capability, with the one that is missing named.
10 s After a batch of eighteen boards: the Limits page, then two measurements' statistics - histogram, fitted curve, Cpk.
15 s The results screen in each colour scheme: MBLT HMI's light, dark, industrial, grey, green and blue, and the sequencer's own.
27 s An AI agent at work. It lists the hardware, checks the script and runs the test through the client, and the station follows on screen - the same interface the CLI and the HMI use.
18 s Real hardware, not the simulation: an Arduino Mega on COM8 streamed by the HardwareRTD engine, tested live off the engine's share - ten rows a second, values in range, pass.
27 s A test station as a bench instrument. SCPI on port 5241: the catalogue, PART, SER, RUN, *OPC?, VERD?, the counts and a single measurement by name - driven from a PLC, LabVIEW or Python.

Get in touch

MBLT Sequencer is not a download. It is one of the tools the work is done with, installed and licensed when an engagement starts. Tell me what you are working on and I will tell you what it would do for it.

Or email mblab.technology@gmail.com. Your details are used to answer you and to follow up — nothing else.

Requirements

  • Windows 10 or 11, 64-bit
  • About 200 MB of disk
  • No .NET install needed — the runtime is bundled
  • No Excel needed — workbooks are written directly

Also in the set