Jump to content

Jeff Plotzke

Members
  • Posts

    144
  • Joined

  • Last visited

Everything posted by Jeff Plotzke

  1. Pockey, If you want to have only one front panel shown to the user, can you either: -Copy and paste the entire front panel / block diagram from the SubVI to your main VI (There's no easier way that I know of other than 'Select All', 'Copy', 'Paste'. Your VI will get pretty ugly, though, since you now have two VIs in one. -Run your SubVI through a subpanel. With a subpanel, you can "run" another VI and show it's front panel as part of another. Instructions for that can be found here: http://zone.ni.com/reference/en-XX/help/37...el_in_subpanel/ That said, in either case you'll need to create a way to get both VIs to stop simultaneously. I'd probably create a notifier in the "main VI" which sends a notification when the stop button is pressed. Then, have your subVI listen to the notification in its idle case and have it stop on a notification. Let me know if you need more help. ~Jeff
  2. That's sweet! I'm sure everyone will love me when my block diagrams are at 4960x1600 resolution!
  3. I have an RT PXI system which has 8 cards in it. When I look in MAX after it gives default names to all the cards, it seems to randomize if it gives a "Dev x" label or a "PXISlot x" label to a device. Does anyone know how it chooses this? Sometimes, the PXISlot x doesn't always line up with what slot the card is actually in. For example, I have these cards in my system: Slot 1: 8196 Controller Slot 2: 6704 AO Slot 3: 6515 DIO Slot 4: 6238 M-Series DAQ Slot 5: 6225 M-Series DAQ Slot 6: 6225 M-Series DAQ Slot 7: 6225 M-Series DAQ Slot 8: 6220 M-Series DAQ Attached, you can see MAX's default names. (Yes, somehow it found 2 6238 cards when I only have one) Thanks for any help you can give! ~Jeff
  4. Thanks, Herbert! It sounds like TDMS may be a good choice, since I'm just writing 2D numeric arrays. Curious... with TDMS, should I still save up data so it's a multiple of 512 for a faster disk write? Also, would you suggest open/write/close for every time I write to the file, or a open/close once at the beginning and end and then many write/flushes in between? Thanks again!
  5. Thanks for all the suggestions! I'm trying some tests to compare Binary/TDMS and I'll let you know how it turns out. In the mean time, I found this article on ni.com which gives some good information about optimizing RT applications with file I/O and DAQ: http://zone.ni.com/devzone/cda/tut/p/id/5424
  6. I need to stream a lot of data to disk quickly with a LVRT system running on PXI. The data is being acquired at up to 5kHz from my DAQ card of about 350 channels. (So, if all the data was SGL's, it's up to 7 MB/sec) Right now, I have my data aquisition running in a timed loop and writing the data to RT FIFOs. The FIFOs are then read by a consumer loop which will write the data to files. My question is -- What's the best way to write this data to file to make sure that the rest of my application doesn't die? I can write in pure binary, but I know that I need to wait for 512-byte chunks. What about TDMS? Since the 'S' stands for streaming, is this optimized for streaming data to disk? Will it automatically do the 512-byte chunks for me? Has anyone had luck with TDMS and fast data? Can you share any experiences? Thanks for all your help!
  7. Doh! Now that you say that, it makes perfect sense! Thanks! ~Jeff
  8. I'm trying to take a waveform and do a bandpass filter with corner frequencies 7k and 9k to extract an 8k component. However, when I run the VI, it extracts the necessary frequency, but it re-centers my signal around 0. I've attached a screenshot of my problem. Should this happen? I really want to keep it centered around what my 8k component should be. I could find the avg DC value on the original waveform and add it to the resultant waveform, but that wouldn't be mathematically correct and would only give me an approximation. For details, I'm using the Filter Express VI configured as a 10th order Butterworth IIR Filter (I don't care about phase shifting -- I'm looking for steep corner frequencies) So, I guess I'm looking for a way either to explain these findings and/or a way to get LabVIEW to keep my DC offset value. Thanks! ~Jeff
  9. Yes, every time you write to the Value (Sgnl) property, you'll fire the event structure, regardless of if the value actually changed. To keep the same architecture as you have now, you'll want to compare the old value (within the boolean control) to the DAQ value, and only change the boolean control on a change. I've posted an example for you. ~Jeff
  10. No, I have that input unwired. Hmm... I wonder if that may be the problem -- After a number of runs of the program, Windows starts giving out local ports which are out of range for the other computers. Is that possible? Would I be ok to give the same Remote Port and Local Port?
  11. You know, I've never thought of that -- Making a custom probe gives you a boolean out to allow for a conditional probe style. Thanks Michael!
  12. Just to be sure, you're creating your custom methods for your XControl by right clicking on the XControl in the Project Explorer and choosing New > Method, correct?
  13. Hi Gary, While I'm not sure on why conditional probes are only available for certain types -- I'll tell you that nothing has changed in LV8. Of course, there's a few more conditional probes for non-numerics (which are in LV 7, too) -- Strings, Booleans, Error Clusters. Anytime I want a conditional probe on a numeric which isn't I32/U32/DBL I normally split the wire and convert the offshoot to DBL and then make that wire go to a structure (which I don't use) and use a conditional probe on that one new DBL wire. That way, I'm not messing with the original wire's data type, but of course, it's a bit quirky...
  14. I'm having a problem where I'm trying to connect via TCP/IP and TCP Connect gives me error 42 (Generic Error). I have 5 different TCP connections simultanously, and normally, my program will work OK for the first several runs of the program. I always make sure to do a TCP Close before I exit the program. Then, after about the 4th or 5th time running the program, all TCP Connects will give error 42 without any wait (I have 10 sec timeout wired)... Subsequent times will yield the same results. During this time, I can ping the other IPs that I'm trying to connect to OK and I can even connect to them with other programs (non-LV). I'm using LV 8.0, so maybe this is a new feature... It seems as if LV stops handling TCP/IP connections after a while. Has anyone else seen this before? Thanks! ~Jeff
  15. I've found a 'workaround', however definitely not memory-efficient. You basically need to do something in the inner loop which will cause LV to re-create the array in memory. It seems that LV is using the same memory pointer for the input and output tunnels of the inner loop, thus causing the uninitialized shift register effect. In my quick example, I take my array, convert to a variant, then back, and throw it into Replace Array Element. The VI works OK now. ~Jeff Download File:post-4078-1142978780.vi
×
×
  • Create New...

Important Information

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