Services
Industrial control software and IoT hardware integration for clean-tech. Our team includes LabVIEW consultants, Simulink real-time experts, instrumentation engineers, industrial IoT developers and data analysts.
We bring together multi-disciplinary projects spanning electrical, mechanical, thermodynamic and control engineering, and partner with industry, national labs and universities on some of the most complex early-stage technologies. Typical work includes custom instrumentation and control systems, laboratory test rigs, and software for energy storage.
Embedded control
FPGA design, real-time control on a range of hardware targets, prototyping, testing and industrial-scale deployment, built on over 20 years of developing industrial control systems.
Some clients need a quick prototype; others need a robust system that runs 24/7 for years without interruption. We choose the target to match. Simulink with a Speedgoat is one of the best options for rapid control prototyping, a Bachmann M1 suits systems that must run unsupervised in the field, and the NI cRIO often sits between the two.
LabVIEW and NI cRIO

The NI cRIO is often our most reliable backbone. It combines a Linux real-time system running LabVIEW with a 40 MHz FPGA and fully configurable I/O, giving a solid 1 ms loop time, and the FPGA when 1 ms isn’t fast enough. RS-232, RS-485 and EtherCAT are built into the chassis.
Few platforms let you write a custom control system, interface 50 or more sensors, add FPGA code, and build a full user interface with file logging in one to two weeks. Because the cRIO runs Linux, we can often reuse the complex APIs that sensor makers supply for devices like IMUs. Our LabVIEW real-time application example shows what this looks like.
We keep a stock of control hardware, which can save you buying equipment you’ll only use once. Modules we use often:
| NI 9144 | Adds eight more C Series modules over EtherCAT. Also works outside LabVIEW, for example with Simulink Real-Time. |
|---|---|
| NI 9472 | 24 V DC outputs for safety circuitry: switching solenoids, circuit breakers and other components. |
| NI 9421 | 24 V digital inputs for monitoring safety circuits and the health of connected equipment. |
| NI 9237 | Simultaneous 50 kS/s, 24-bit bridge inputs for strain gauges and load cells. We once built gauges from liquid-metal Galinstan. |
| NI 9263 | Eight 16-bit analog outputs, still handy for entry-level motor drives with analog I/O. |
| NI 9205 | 16 differential or 32 single-ended ±10 V inputs, plenty for most sensing requirements. |
| NI 9203 | Eight fast, reliable 4–20 mA current inputs for industrial sensors. |
Simulink Real-Time and Speedgoat
The Speedgoat target is designed to run Simulink Real-Time code with tight workflow integration. Simulink libraries such as Simscape Multibody and Simscape Fluids make it an excellent choice where physics-based modelling is key. We have implemented demanding multi-axis control systems on platforms ranging from the Speedgoat to robot car projects on the Raspberry Pi, and used the QNX-based Simulink Real-Time from its pre-release version.
Over EtherCAT we connect Simulink Real-Time to servo drives and third-party I/O, such as the Beckhoff EK/EL series or NI C Series modules in an NI 9144 chassis. Several clients have needed hardware-in-the-loop or digital-twin setups, where part of the system is simulated (for example in Simscape Multibody) and the rest is real hardware. We are one of MathWorks’ consulting partners.
Bachmann M1
Bachmann’s Solution Center combines C, C++, MATLAB, Simulink and PLC code, with fine-grained control of tasks: for example, Simulink in one task and C++ in another, each with its own priority and timing. The M1 also has an EtherCAT interface for third-party I/O from Beckhoff, National Instruments and many motor drive makers.
Instrumentation
We help clients choose the right instrumentation and connect it to their control system, drawing on more than two decades of experience. Many of our clients first came to us with a sensor interface problem: a modern IMU whose API won’t build with the older C/C++ compiler on their controller, or an EtherCAT network where the Beckhoff documentation can overwhelm a newcomer.
- Sensors. IMUs, pressure, force, displacement, proximity, fluid flow, temperature, laser Doppler anemometry, acoustic Doppler velocimetry and particle image velocimetry.
- Protocols. EtherCAT, RS-232, RS-485/422, I2C, SPI, CAN, Modbus TCP, EPICS and various specialist IMU APIs.
- Custom hardware. Analog and digital electronics, from inexpensive lab sensors to a PCB for over 800 MHz data acquisition on a motor spinning at more than 20,000 rpm.
IoT software
Industrial IoT systems often need a whole deployment ecosystem of servers running specialised services, and they must scale: even a simple system may handle thousands of requests per second from hundreds of devices. Many of our projects combine site-level control, such as a local battery system, with cloud intelligence, such as an overarching system controller.
We build these as loosely coupled, specialised services that talk over standard protocols, a microservice architecture. Compared with a single monolithic application, it gives better reliability, scalability and development pace: you can update one component without interrupting the others, and scale each service to its own demand.
- ThingsBoard. Real-time dashboards, asset relationships and fault alerting across many devices.
- Elasticsearch, Logstash and Kibana. Searching gigabytes of unstructured logs, for example to find a sensor connection issue. See our ELK stack in Docker article.
- C and C++. Custom device interfaces (RS-232, RS-485, USB, I2C), shared libraries for LabVIEW on Linux real-time targets, and microcontroller code. We have written C and C++ for over 20 years, from generating large water waves in the lab to battery storage control.
- Go. Our favourite language for cloud services and control prototyping, thanks to cross-compilation, simple concurrency, strong typing and excellent JSON, HTTP and MQTT libraries.
- Docker and the cloud. We have guided clients through their move to the cloud with the main providers, using Docker and Docker Swarm for tidy deployment and orchestration.
Data analytics
There is often much more in your experimental, product and market data than you might think. The work usually starts with the right storage, such as a managed database on AWS, plus cleaning and aggregation. From there, the data feeds MATLAB or Python for reports and statistics, or machine learning for tasks like time series forecasting.
- Databases. Cloud database clusters for large volumes of unstructured IoT data, SQL tuned for multi-threaded applications on AWS, and SQLite for prototypes and embedded systems.
- Machine learning. TensorFlow for deep neural networks, including convolutional networks for image recognition and recurrent networks for time series prediction, and simpler methods when they suit the problem better.
- MATLAB and Python. Nearly two decades with both. pandas is our preferred tool for data science, alongside NumPy, SciPy and MATLAB for modelling and optimisation, and Dakota for highly custom optimisation.
Our machine learning articles show some of this work.
Prototyping and testing
We design, build and test models and prototypes to find and advance their potential. That covers mechanical and electrical design, plenty of time in the lab supporting test campaigns, data analysis afterwards, and making sure testing meets international standards. We are equally at home developing an embedded Linux real-time controller or working with clusters on massively parallel problems, and we deploy to macOS, Linux, Windows and the cloud.
We’d love to work with you on your next energy storage or renewable energy project.
Our terms of engagement are flexible, from a quick prototype to a system that must run unattended for years.
