The Measurement Plug-In SDK for LabVIEW packages enable measurement developers to quickly create LabVIEW measurements and run them as a service. They also allow developers to generate a LabVIEW client which communicates with the service over gRPC. NI Measurement Plug-In Support allows users to interact with measurement services with a LabVIEW UI in InstrumentStudio.
- InstrumentStudio 2024 Q3 or later
- LabVIEW 2021 SP1 or later
- JKI VI Package Manager 2021 SP1 or later
- Install a supported version of InstrumentStudio
- Install a supported version of LabVIEW
- Install a supported version of Measurement Plug-In SDK for LabVIEW from VIPM.
-
Create and save a new LabVIEW project.
-
From the project window, go to
Tools
→Plug-In SDKs
→Measurements
→Create Measurement Plug-in...
. -
Add the measurement details to
Get Service Descriptor.vi
. -
Add the required configuration parameters to
Measurement Configuration.ctl
. By default, there are controls showing most of the supported data types. -
Add the required output parameters to
Measurement Results.ctl
. By default, there are indicators for most of the supported data types. -
Add your measurement logic to
Measurement Logic.vi
. The VI has an input cluster with the configuration parameters fromMeasurement Configuration.ctl
and an output cluster with the output parameters fromMeasurement Results.ctl
. By default, the measurement logic takes the inputs and writes them to the associated outputs (a loopback measurement). -
Add your user interface to
Measurement UI.vi
. The control and indicator labels in the user interface must match theMeasurement Configuration
andMeasurement Results
labels. If the data types and labels match, then the data from the controls will be sent to theMeasurement Logic.vi
and the results will be published to the indicators after the measurement is run. By default, the UI file consists of controls and indicators mapped to all of the input and output parameters for the measurement service.
If your user interface has dependencies that are not available in the LabVIEW runtime, you will have to build the UI into a packed library. For example, you will have to build a packed library if your UI contains VIs from vi.lib or if your UI depends on user created subVIs or controls. The packed library should be located in a directory at the same level asMeasurement Logic.vi
. The measurement template has a build spec for a packed library for the UI demonstrating how to use a packed library user interface.
Note:
- Additional information can be found in the to-do sections in the code, which
can be viewed using the
Bookmark Manager
. You can open it from theView
→Bookmark Manager
menu. In this window, you will find the bookmark term#MeasurementToDo
. Double-clicking on the items will take you to the VI locations where changes need to be made for creating your unique measurement service. - A list of supported datatypes for the
Configuration
andOutput
parameters of the measurement can be found in the NI Measurement Plug-In Support manual here
-
Open your measurement project.
-
Run the
Run Service.vi
. A new window will appear, which provides basic information about the running service.
-
Create and save a new LabVIEW project.
-
From the project window, go to
Tools
→Plug-In SDKs
→Measurements
→Create Measurement Plug-in Client...
.
Note:
- The Measurement Plug-In Client is compatible with all datatypes supported by the Measurement Plug-In.
- For Enum datatype, contiguous enums will be represented as enum control and sparse enums will be represented as ring control in the client.
- If the Measurement Plug-In uses a LabVIEW UI, ring controls in the UI will be represented as numeric controls in the client, maintaining the same representation.
-
Open your measurement client project.
-
For non-pin based measurement, open the
Run Client.vi
. -
For pin-based measurement
-
Create and save a new VI.
-
Navigate to
Measurement I/O
→Measurement Plug-In SDK
→Pin Map
→Register Pin Map.vi
in the palette. -
Drag the
Register Pin Map.vi
to the Block diagram. -
Wire the Pin Map path of the measurement to this VI to register the Pin Map.
-
Wire the
pin map id
output of this VI to thepin map context.pin_map_id
input of the Run Client VI. -
Set the
pin map context.sites
input of the Run Client VI. -
Set the inputs to the configuration control.
-
Run the
Run Client.vi
to invoke the measurement logic and display the results.
-
Note:
- To run
Run Client.vi
without registering the pin map for a pin-based measurement, specify the IOResource name in the configuration control instead of the Pin name. - The
Run Client.vi
will support both stream and non-stream measurements.- For non-stream measurements,
Run Client.vi
can be used as a standalone VI or subVI without any modifications. - For stream measurements, when used as a subVI within a framework,
Run Client.vi
will only provide the last successful value of the measurement results. To obtain all responses from a stream measurement, replicate the logic insideRun Client.vi
within the framework.
- For non-stream measurements,
The Source\Example Measurements
directory contains example measurement
services. See the README.md file
for more information.
-
Open InstrumentStudio and click on
Manual Layout
. -
Choose the desired measurement and create a panel.
-
The layout will be populated with the Measurement UI and the default configuration.
-
Modify the configuration if necessary and click
RUN
to run the measurement.
The generated measurement service includes two build specifications: one for the UI and another for the service executable. The UI build specification must be built first in order for the measurement service executable build to succeed. To build them, right-click on the desired build specification and choose 'Build'.