Jump to content

martin_g

Members
  • Content Count

    25
  • Joined

  • Last visited

Everything posted by martin_g

  1. Fixed the issue, but that was frustrating! Fixed it by removing the offending vi 'Get Default Class.vi' from the class & project, then re-adding it. Builds fine now, no idea why! Hope this helps someone. Martin
  2. Hi, Today I started getting a Load Warning Summary when running my .exe build specification - no idea why, and it is causing the generated .exe to be broken. I think it's basically saying in the Load and Save Warning List message box attached that LabVIEW is loading DataStorage.lvclass from within the .exe, when it was expecting it to be within the source code. The build completes, but with a broken arrow as the .exe can't find DataStorage.lvclass All I've done today is add some functions to the class, but nothing major. I've tried multiple things to fix it, including a Mass Compile but to no avail. My next step is to revert back a couple of versions to find a version that will build so I can track down what I did to break it. The other thing to say is that this error message appears when about 50% of the way through running the build (during Compile), so it's like when LabVIEW tries to load the class from the vi during the build it's loading it from the .exe rather than source code !? Any ideas would be appreciated if you've seen a problem like this before. Thanks, Martin
  3. Just started using this tool, thanks for sharing this, great work! So far it has made me much better at keeping VI descriptions up to date.
  4. I tried adding the .lvproj file within the project but got an error message that 'An item with this path already exists in the project.' Shaun's suggestion is very simple, which I like, so I'll try a post build VI to copy the .lvproj. Why I want to do it is a bit complicated, but briefly; deployment has been done with an .exe. There is now a requirement to share the entire source code for the project and I want to protect some IP within the project.
  5. Thanks jcarmody, hoovah. I'll try modifying that VI as my goal is to protect my IP - so removing the block diagram is my preference. Ensengre - you do get all of those options when creating a source distribution, which is great. But you cannot include .lvproj information in a source distribution. I've got a compactRIO setup in my project, and I need to include that in the distribution that I create.
  6. Hi, I've got an RT project which I need to distribute the source code, My .lvproj contains multiple .lvlibs + deployment info for a cRIO. I'd ideally like to create a distribution that includes the .lvproj file and also removes the block diagram of certain VI's in this distribution, if I can't do that I'd at least like to password protect some key VI's. Options I've tried: - ZIP file - this includes the .lvproj and all the RT info I need, but there is no way to add passwords or remove a block diagram. - Source distribution - I can remove block diagrams, but I can't include the .lvproj file with my RT info. I could go in and add passwords to every VI in my hierarchy that needs protection, but that will take a while, and I don't require the passwords in my development copy, just in the distribution. Is there a way to do what I want? Cheers Martin
  7. Generally, I'd approach this by having a top level sequence with sub sequences that define the high level tests. Then use pre conditions on tests & sub sequences to decide whether or not is should run. This let's you create generic top level sequences that execute specific tests for products at run time. I'd push all of the model / part number identification code into the sequence model ( by creating a custom model) and maybe even put Pre Step actions in there to do checks before each test step. My starting point would be to map out the tests required and look for commonality of tests. That would tell me what my sub sequences should be. Have a look at the Test Stand advanced architectures PDFs & Test Stand 2 training course - that's good for custom sequences & architectures.
  8. Thanks for the info. The MSDN OS licenses do look good value for what I'm going to be doing.
  9. Apologies for resurrecting a way old thread, but I noticed a few posts lately mentioning the use of VM's to manage multiple versions of LabVIEW. At the moment, I'm trying to support many applications from 7.1 to 2014 and all in between. So I'm wanting to switch to VM's to make this a bit easier than multiple laptop's and complex re-configurations. I'm a bit confused on the best way to do Windows licensing though, as I may end up with a lot of VM's if I have one for each LV version. I've googled it a bit including this and I think I need a Windows Volume license + Software assurance. Is that right? And if you're running multiple VM's with Windows what's your experience? Thanks, Martin
  10. Great question, and Peopleware is a great book. For me, once my low level Maslow needs are met its all about fulfilling work that makes me feel like I'm growing and making a valuable contribution. I'm an avid reader, I enjoyed Peopleware. I'd say the definitive book on this in recent years is Drive by Dan Pink, well worth a read if motivation at work interests you. Martin
  11. If you open up one of the Excel Report Toolkit VIs, you'll see the .NET functions being used.
  12. You need to use a relay that can switch thst voltage & current. The NI 9478 is good for switching solenoids, some of my clients have used it to switch 2 million cycles without any problems. Cheaper option: NI did a USB solid state relay card that couls switch 24v up to 0.5a - USB6525 Alternatively use a TTL output device and pick some relays that will switch the load
  13. Thanks for the suggestion Mike, yes that would be a more elegant solution. Thanks for the tip!
  14. Hi Mike, I create the DVR ref at startup, bundle up all my references and pass them throughout the application. Yeah, it is a bit like a global, but I think I need a kind of global functionality. I can potentially change state of the application from many different places, but I want to keep one copy of the overall application state. Handling write access is a good idea though, At the moment anything anywhere can write to it, I've created accessors to write one element of the application state on each call. I can maybe move those around into private scope of a library. i.e. add the write 'Logging' function as private scope within my 'Logging' library.
  15. So I managed to get back to this issue this week, and implement a solution. I created an 'application state' cluster and used a DVR to access it, I update the DVR in event structures that are registered for the User Event, when it's appropriate to update state. At the moment, it's a pretty basic structure with booleans for 'Test Running' 'Logging' and a few others, but I think it solves my problem. When I launch a new UI in a sub-panel, I read from the DVR the current application state, and then format my UI accordingly. On this project, I didn't have time to separate 'Event' and 'State' messages, but next project, I think I may combine this method with the DVR. Then it would be clear that all 'State' messages should be updating the DVR, but no 'Event' messages should update it.
  16. Thanks Paul & James I'm not looking for a quick fix, so my preference would be to not leave them running.I'll play around with some of the options you both suggested for storing 'State' messages. The network published shared variable property is very interesting, I'll definately take a look at that, but its probably not appropriate for all applications with needing the DSC toolkit.
  17. I've been using sub panels to replace tabbed UI's. In applications with lots of information to display, rather than having a UI with tabs splitting the various views - I have used a sub panel, and various UI's that are loaded when a user chooses. I have User Events passing UI update messages from various parts of the application, and each of the VI's that run in the subpanel are registered for these events - when they are running. The problem I've found is maintaining state in the UI - if a user switches back and forth between different UI views - opening & closing various VI's in the sub panel - depending when the User Event messages are sent, some UI information may be different to when the user closed the UI. To get around this I've started sending query messages to the application when each UI starts - but this seems to be getting a bit complicated, and I'm not sure if the benefits of the subpanel outweigh the hassle of getting the latest values each time a subpanel UI starts. Just wondering how others handle maintaining state with subpanels? Thanks, Martin
  18. I had a similar permissions problem on a previous project (can't remember the exact details) but basically I was creating a count file, and LV would write to it every 10 seconds or so. I was plagued with permissions errors. The native 'Set Permissions' function sorted out my problem. LV help says use an octal value of '200' for write permissions, '700' for read, write & delete. 200 worked ok for me with Windows 7. Martin
  19. The best way to do barcode scanning at the start of a test sequence, is within the sequence model. Test Stand comes with some default models that have this functionality e.g. Sequential Model. If the default models don't meet your needs, you can customise them. Look in the Test Stand examples for different model demos. This is a slightly advanced Test Stand topic, but I think would be a better solution.
  20. Use the Dialog using Events template and use the Timeout case of the Event Structure to stop the vi. Set the timeout value to 2000 (ms) for a 2 second display of the vi. The front panel will close when the vi stops.
  21. OK, thanks for all of your input, I'll stick to using the shift register, and look for another use to try out Feedback Nodes! Cheers, Martin
  22. Hi All, After struggling on my recent CLD-R with feedback nodes, I've decided to try using them in some projects. I've got stuck on my first trial however! I've tried replacing a fairly common conditional incremental count within a For Loop, that I would usually do with a shift register, but I just can't get the correct result with a Feedback Node. Code is attached, is this a correct usage case for a Feedback node? In the current configuration, when count value returned from the Shift Register is zero, the count returned from the same code using a Feedback node is 1. I've tried other configurations, but still get incorrect results. Feedback Nodes.vi
  23. So I went with an XY graph, formatted the digital waveform data into numeric, with each plot set to a different scale, to separate the digital signals. Thanks! Martin
  24. Hi All, I have an application that is tracing the mechanical and electrical parameters of a vehicle window switch. We move the switch by rotating a cam x degrees one, then back the other way, a common motion range would be +/- 20 degrees. We're monitoring angular position, torque and electrical contacts. I'd like to then plot a trace of torque vs angular position, to show where the detents in the switch are. I'd also like to use a digital waveform plot to show the state of the switch vs angular position (see attached image). I can't figure out though how to display the digital data against a DBL value, it seems to me I can't use a digital waveform display, because I'd have to plot against either time, or a U32 integer. I could use an XY graph, but I like the digital waveform feature of stacked plots for each waveform. Any ideas how I could do this? Thanks, Martin
  25. Hi, Analog Devices produce a signal conditioning amp for J & K type thermocouples - AD594 I think. You give a DC supply voltage and get a linear voltage out, it also does cold junction compensation, and costs about $10. Used them lots of times with basic USB Daq cards, they are great. Martin
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.