Author: Elijah Kerry, CLA
Last update: May 19th, 2018 (NIWeek 2018)
Overview of the Measurement Abstraction Framework
The attached code serves as a reference architecture for the core architecture of large-scale test and measurement systems, especially long-running tests that are commonly associated with the characterization and validation of a physical system.
The Measurement Abstraction Framework demonstrates solutions that address the following common requirements:
Example Overview
Version 5.0 has been used to build an EV Powertrain Validation test demonstration, which will appear on the Expo floor of NIWeek, as well as various locations around then world. The attached code includes the device plugins that were used for this particular application. Once installed, it can be run, but will almost certainly generate an error unless you happen to have the same hardware at your disposal. The primary reason these were included is to serve as helpful examples for how driver plugins should be written.
To run the example without hardware, we recommend simulating one or more DAQ devices for use with the Standard Measurement.
Setup and Installation
Extending or Customizing Measurements
The example measurement is installed by default to C:\ProgramData\Measurements
The included example only features one measurement, "Standard Measurement," which his a very basic implementation. However, it is possible to instantiate N instances of this type of measurement, which should cover most basic use-cases.
Reasons to override this measurement include:
Extending or Customizing Hardware
The example measurement is installed by default to C:\ProgramData\Hardware
Unlike previous versions, all devices inherit directly from the base Hardware.lvclass object. The measurement device implements the acquisition and generation interfaces. Device plugins wrap specific drivers and are called used a basic "Configure --> Acquire --> Generate --> Measure --> Repeat until Close" sequence. A device can specify specific interfaces that they implement if requested by the framework, but the default is for a device to support "all" interfaces.
All devices have both common and unique configuration options. The common capabilities are stored in the base "HW Configuration.lvclass," but extended by their own implementation for unique properties
Future Updates / Known Issues
Additional Information
The following articles describe core design decisions of the original framework:
This framework is not officially supported by NI, but will continue to be improved and developed based on input and feedback. The original version of this framework was published in 2012.
Well, good and bad news: it built and ran without a problem for me. I would be surprised if it was a OS langauge specific error, but you never know...
Actually, I could see why this error might occur if you were using from 3.0.3.4 - have you treid 3.0.3.5?
That's what I have tried 😉
can't seem to reproduce the issue on my end... any chance you have an English OS handy to try? I can try to get my hands on a German OS, but it'll probably be a bit before I can get around to setting one up
Unfortunately I have been assigned higher priorized tasks for now, so it may take _some_ time.
I might have done something wrong when setting it up and test it - I stayed mostly with LV711 until a few weeks, so my experience is quite low here.
I'll update whenever I have news, but for now I have to switch. Sorry!
I de- and re-installed everything and now it works. Maybe I did something wrong the first try. Or left something out...
Thanx for that example project!
After deleting all measurement framework packages and all dependencies and rebooting the computer, I have installed the Measurement Utility 3.0.3.5 Beta.vipc again. And the Framework runs.
Hi,
Elijah thanks for such a nice example! I have two questions;
1- I couldn't find any "copyright notices" within Installers. How should be the licensing handled if someone use it? since you are using openG.
2- Is it worth using this measurement utility (after some modifications) with Veristand?
Very much meant to be an example that can be used in accordance with the standard licensing for any example published on ni.com. It exists to illustrate technical concepts and [hopefully] provide guidance when wrestling with some of these more technically challenging problems, so feel free to put it to use in any way that helps you!
As for using it with Veristand, quite possibly - exploring that angle is something I've considered but haven't found the time for quite yet. If you do, please share your findings.
I will try to look into its possibilities with VeriStand.
Uploaded 3.0.3.6, which includes the following fixes
Hi,
I am unable to launch the example... When I look in the Project window, I am unable to find the virtual folder "Server" or "Client".
I installed the *.vipm file and hoped that everything gets installed as required.
Am I missing something?
Thanks,
Ajay
It should've installed new items in the 'Create Project' dialog under a 'Demonstration' category. Can you confirm that you were able to open the Measurement System shown here?
Hi,
I installed the VIPC and the sample measurements and hardware.
I create project->Measurement system ->Next->configure the new project->crash LV13. (using LV13 SP1, windows 7 SP1 64 bit)
I also tried:
create project->Measurement system -> New HW Device template ->configure project->error "Labview can't find the source files for this project".
What did I miss?
Thanks in advance,
Danielle
Hey Dsavir - sadly, there is no hardware template at this point. That's a placeholder for something I'd like to eventually create. If you want to see an example of a template for a plugin, select 'New Measurement Template'
Hi,
When I choose new measurement template, LV13 crashes. Is there seomthing I forgot to install?
Thanks,
Danielle
Hi,
I downloaded version 66 instead of the latest version, and it loads well with no crashes.
Thanks,
Danielle
It looks like you may have found a bug in the scripting code that rears its head based upon settings selecting in the 'New Measurement' dialog - I actually think you'll see it in v66 if you select the same settings. I'm looking into it...
This is a great example! This could help solve a huge piece of the puzzle for the standardization project I am working on here at XOM.
-Steven
How can I create the nice looking sequence diagram of network connection? I would like to use the for designing my AF based embedded application. Thank you
TailOfGon: That was created by hand in PowerPoint. You can use LV 2015 and the Desktop Execution Trace Toolkit to harvest the information that goes into such a chart, but at this time there is no automated way to generate the chart.
You might look at this thread: https://decibel.ni.com/content/thread/26864?tstart=60
It has some good resources for diagramming.
AristosQ: Thanks for clarifying this. So it was PowerPoint. My intention was to create a timing diagram as a project planning.
KALee: Thanks for the link. Indeed it is very useful to know that there are many alternatives in creating the diagram. I'm currently looking at http://SequenceDiagrram.org and http://www.websequencediagrams.com
All,
I am doing my best to get into the groove with this framework but I am a bit concerned with the complexity of implementing it, particularly in the context of a larger application. I would be interested to hear from folks who have used this framework to successfully implement a larger application requiring multiple developers to contribute to the project.
Hi Elijah_K,
This app is awesome, it is very helpful to understand power of OOP. Thank you for your work 😉
I have one question:
If I want to SAVE measurement data to disk I use RESULT actor for this action or I must make any new actor ?
In case anyone is curious, here's a screenshot of the 'Start Measurement.vi' method implemented using the newer actor framework API.
It's a minor change, but does improve the readability of the code IMHO. However, I don't plan to upload this, as I would prefer to maintain backwards compatibility for older LabVIEW versions.
Good morning Elijah,
First of all, thank you very much example, which will be very useful to mewhich will helps me a lot with understanding the AF and OOP programming. I look forward to get deeper into it, but I have some issues while running the "Server Controller main.vi" which says"Application is broken and cannot be run" as David_Do in his msg from 26 févr. 2014 03:59, except that I am running LV2015.
I tried to desinstall the package and reinstall it as he did but it didn't work. So I take a look deeper into the main.vi and saw that the "Launch actor.vi" called into "Server Controller main.vi">>"Attempt to Start Controller.vi">>"Load App.vi" is crossed because it's no longer supported by LV2015. LV help told me to replace it by "Launch the root acotr" or 'Launch a nested actor" but neither of them belong an entry for the "Read enqueur.vi" exit.
Thank you very much in advance for you help, and I wish you the best for the new year coming.
Gautier, Are you sure you have the OpenG libraries installed? You can ignore the big X over the 'launch actor.vi,' as it's deprecated, but still works.
Thank you for your answer Elijah,
All the libraries are installed and VIPM says "nothing to do. All the packages are already installed." when I tried to install them again.
Could this error caused by the use of the base version of LV instead of the pro version ? Because I see that a lot of libraries which seems to come frome the pro version.
More over, after somme digging, I found that the issue come from the dynamic vi "Do.vi" which can't be executed because of the two VIs "LNA Connection Status Msg.lvclass:Do.vi" and "LNA Return Message Msg.lvclass:Do.vi" which I can't found in the project. Those missing VIs make the dynamic VI "Do.vi" not executable, and so "Actor core.vi" can't be executed either. Any ideas why those VIs are non functional ?
Thanks in advance for your answer
Hey everyone. Just posted a new version, which should be much easier to install and use. Instead of trying to distribute pre-built plugins, just follow the instructions above to create your own from the project.
Please let me know if you continue to have any problems.
I've also uploaded a newer version of the slide content that I prepared for the most recent CLA Summit in Bangalore, India.
One more update: v3.2 installs the top-level application as an example instead of a project template
Hi Elijah, does the latest version still install something/anything as a Project Template? From your (admittedly dated) blog post, I'm interested in seeing how you have done a few things in your template, but when I installed the vipc I don't see anything new in the Project templates folder.
Hello Elijah. Very interesting utlity. In the release notes it is noted that this utility "currently only works on 32-bit LabVIEW due to a dependency that has a 32-bit DLL". What kind of dependecy is it, and are there any plans of updating this for 64 bit LabVIEW? I am currently evaluating this utility for future projects where HAL/MAL is a vital issue, but this dependecy makes me wonder if this utlility is a good choice.
It's easily addressed. I beleive the DLL is for GUID generation for the network connectivity and it's only one API call. Could very easily be replaced/updated.
I'm going to go try to open it in 64-bit now...
Good news. The lack of 64-bit support should be easy to fix. It currently uses a 32-bit library to zip a class to be sent over a network. I'm going to replace this with JSON serialization, which should fix the issue.
Great, thank you very much. Good to see that the utility is updated. Seems like we will use this utility in some of our projects that are based on Actors Framework. Very interesting and usefull tool for HAL/MAL.
Just stumbled across this after watching the OOP webcasts. Surprised to find that now it's for LabVIEW 2016 or above only. Is there no way to open it in 2015???
Your link, on the initial page, to the larger image of the detail sequence ... https://forums.ni.com/servlet/JiveServlet/download/21441-78-70585/Detailed%20Diagram.png is broken.
Thanks for this work, making my head heart, but in a good way.
Little typo:
3. One installed, navigate in NIPM to the TestStand Interface for MAF package and click "Show Examples"
Navigate in the VIPM right...?
Good catch Nick - I'll fix that now
I downloaded the .vipc file (zip) and tried to run it. My VI package manager opens but do not indicate anything to be installed, neither can I find the utility in VIPM (I typed different names in search bar, including Measurement Utility). I wonder if I do something wrong? I checked for updates, too.
Would be grateful for some tips,
Anna
Anna,
I had the same issues. This seems like a poor way to distribute code to the community (forcing people to install lots of unpublished packages). But on the other hand, I understand it's a complicated project with lots of dependencies. That said, I unzipped the .vipc file (it's just a zip file, by the way) and tried to install one of the included packages. That's when I got an error in VIPM that the package had been built with a newer version of VIPM. Apparently this error does not surface when trying to open the .vipc file itself. I only had VIPM 2014 installed even though I had installed LabVIEW 2017 later on (and failed to check VIPM for installation). So I updated to VIPM 2017 and the .vipc file opened and installed as you would expect.
Now with the .vipc file installed, I am still missing packages and am working to fix that now. I'm missing stuff that's supposed to be in the "<vi.lib>\Skyline" folder but isn't. I do not have NXG or SystemLink Client installed, so maybe this is the reason? Why is Skyline a dependency?
Also it's strange that the Measurement Actor stuff got installed to "<user.lib>\Build Output\Measurement Actor" instead of "<user.lib>\Measurement Abstraction Framework\Measurement Actor" or some such. Most of the menu items for "TestStand Interface for MAF" are broken too. Any suggestions on this? I feel like it shouldn't be this hard...
Hope it helps,
Richard
Thank you for sharing this with us. That is a really interesting framework and concept behind it. I'm sad, that it does not work on my computer. I got the same problem as Richard. A fix would be highly appreciated. Could you make a short tutorial on how to use it for individualized measurements and hardware?
Elijah, Thank you for great work! But I also got the same problem as Richard and WOLF_S.
Labview Version 17.0 f2(32-bit)
VIPM 2018.0.0 f2
Can problems arise because the Labview program is installed on 😧 disk (not system disk)?
Hi Elijah,
Do you have the version of LV2016?
Excuse me, there is no download link on Ni forum. Where can I download this framework? Thank you very much.
Hey @Matrixbug,
I verified that the link still works... have you downloaded and installed the VIPM link, which is re-posted here: EV Battery Test Software 0600318 (NIWeek 18).vipc.zip 11831 KB