Skip to main content

Summary

The Protocols module extends instro to support commonly used industrial communication protocols. Protocol-based instruments use configuration files that define how to interface with a device.

Why Protocols?

The Instrumentation Library’s instrument drivers (PSU, DMM, ELoad, etc.) provide rich, purpose-built interfaces for specific instrument categories. The Protocols module takes a complementary approach. Instead of building a dedicated driver for every device, it lets you describe any device’s communication interface in a configuration file and start collecting data immediately. This is valuable for several reasons:
  • Broader hardware coverage, faster. Industrial environments are full of devices that communicate over standard protocols: PLCs, sensors, motor controllers, environmental monitors, and more. Rather than waiting for a dedicated driver for each one, you can write a config file and be up and running in minutes.
  • Config-driven workflows. The configuration file becomes a portable, shareable description of how to talk to a device. Teams can version control their device configs, reuse them across test setups, and onboard new hardware without writing any Python. Changing which registers to poll or adjusting scaling factors is a config edit, not a code change.
  • Access to non-SCPI/VISA devices. Many industrial devices don’t speak SCPI or use VISA transports. Protocols like Modbus, OPC-UA, and EtherNet/IP are ubiquitous in manufacturing, process control, and test infrastructure. The Protocols module brings these devices into the same publisher and data pipeline as your bench instruments. Modbus ships today in the core package; see Supported protocols for what is available now and what is in development.
  • Consistent data pipeline. Protocol instruments integrate with the same publisher system and background daemon infrastructure as the rest of the library. Regardless of which protocol your device speaks, data flows through the same path to Nominal.

Supported Protocols

Stable, in the core instro package:
  • Modbus: Modbus TCP and RTU client with config-driven register access, automatic polling, and full publisher support.
In development in the separate instro-unstable package, where APIs may change between releases:
  • EtherNet/IP: EtherNet/IP and CIP support for CompactLogix-class PLCs, via instro.unstable.ethernetip (EtherNetIPDevice).
Planned, not yet available:
  • OPC-UA