Jump to content

Tim_S

Members
  • Posts

    873
  • Joined

  • Last visited

  • Days Won

    17

Posts posted by Tim_S

  1. QUOTE (KatieT @ Jul 1 2008, 12:31 AM)

    Hi, I just started using labview for about a month and have a quick question on tab control. I'm wondering if there's any way to make tabs in a tab control different sizes. That is, how do I make the active tab twice bigger than the inactive tab? I've been poking around for days but still couldn't figure this out. Thanks for helping!

    If you're looking to make the tabs different sizes (rather than the contents of each tab), then you can right click on the tab area of the tab control to change properties. The area you're looking for is: Advanced->Tab Size. There are options under there as to how the tabs appear.

    Tim

  2. QUOTE (Ravi0709 @ Jun 21 2008, 01:41 PM)

    I'm trying to generate a arbitrary signal, which has a duration of 5 to 6 mins. [snip]

    My initial thought is that your timebase (how fast you're updating the output) is faster than you're thinking. Without seeing code, any of us are grasping at straws, though.

    Tim

  3. QUOTE (Doon @ Jun 20 2008, 10:19 AM)

    I suggest that unless you need to incorporate .NET in LabVIEW (for example, to use the DataGridView control ), you are probably going to save a lot of time and heartache simply mimicking the window features as discussed above.

    You got me curious enough to take a short gander at the DataGridView. You wouldn't happen to have a simple example of using it?

    Tim

  4. QUOTE (Antoine @ Jun 19 2008, 05:56 AM)

    Now I'd like to go one step further and generate a trigger on a digital output ( to trigger an image acquisition) "as soon as possible" after detecting the first noise of the pattern.

    I'm not really familiar with DAQmx, and I don't really know what is the best way to go.

    I've tried to set a trigger generation on the threshold and to set it as automatically retriggerable, but then I get a trigger for the 3 peak of the pattern ; I'd like only one trigger on the first peak.

    Any ideas ?

    My first idea is to use FPGA based hardware. I'm guessing you're locked into the hardware you're using, though.

    My second though, and I've not investigated what's possible here, would be to leverage counter timers to as to provide a triggered reset line for, say, 100 msec (think of a off-after-delay relay). I'm assuming you have a PCI-6221 instead of a PCI-6227 (can't locate a 6227 on the website); the PCI-6221 doesn't have any counter/timers, so that's out.

    My third-and-least-favorite thought is to keep your loop timed to work at, oh, 20 to 60 Hz (166 msec ~= 6 Hz, so this is at least double to 10 times the rate) and programically re-arm the trigger. This option is entirely at the mercy of the operating system.

    Good luck.

    Tim

  5. QUOTE (sasinew @ Jun 18 2008, 04:29 AM)

    I want labview to control a windows application. For example, i want to open word and write something on that doc and print the doc, is it possible in LabVIEW? I mean control word menus. Please guide me.

    thank you.

    It's certainly possible. ActiveX would give you control of Word directly. The report generation VIs should also be able to generate Word documents and print them.

  6. QUOTE (djolivet @ Jun 16 2008, 10:37 AM)

    I was wondering if anyone has used United Electronic Industries (www.ueidaq.com) hardware with LabVIEW. I'm primarily interested in their 'PowerDNA' product line, but any feedback (good and/or bad) would be appreciated.

    I have had some demo units of the PowerDNA cube some revisions back (about 2 years ago now). What I saw was a mixed bag. The PowerDNA appears to be a nice little rugged system, but it lacked the quantity of I/O points at the rates we needed and wasn't expandable (I understand they have been working on a synchronizing signal since). Data throughput was far better than what we have accomplished using TCP to a cRIO unit (some of that is our code, some of that is using standard TCP) and the people that visited us were very willing to work with us on getting what we needed. There were some software features we needed at the driver level which UEI added to a beta (most are now part of the standard distribution) driver; the driver was returning bogus A/D conversions along with the streaming data. Note that while the hardware/software/firmware didn't perform as we needed and had a blatent bug, UEI did get on a plane and visit us multiple times (manager and technical expert) while there was only a vague possibility of a sale (we've not paid them for any of this).

    The PowerDNA cube is a nice little (size-wise) expandable package. The cables UEI sells are nice, heavy duty with large metal thumb screws (versus the small plastic onces I've stripped skin off with from NI). The terminal blocks were a let down; they look like the NI TBX-96, but do not have common wires next to each other. For example, on NI's terminal blocks the pins are numbered (and I'm making this up) 68, 34, 16... which will correspond to channel 0 +, channel 0 -, shield, etc. The UEI terminal block had signal + on one screw terminal, signal - on another screw terminal and shield somewhere far away from everything else.

    The PowerDNA system does not appear to (moderately-)directly cable to any signal conditioning. This may not be an issue for you, but my customers expect 3B/5B modules. More discrete wiring is more chances for noise or much, much worse to get into the DAQ system (things don't work so well when you let the magic smoke out).

    Hope that helps you out.

    Tim

  7. QUOTE (ned @ Jun 12 2008, 09:36 AM)

    I'm using an ActiveX component that crashes every once in a while (maybe once a month). When it crashes, it takes down my entire application. If I use VI server calls to launch the VI that contains the component, instead of calling the VI directly, will my application continue running even if the ActiveX component crashes (and if so, do I need to use the Run VI method instead of call by reference)? Is there an easy way to detect that the VI has crashed and I need to restart it? Unfortunately due to the infrequency of crashes, and my inability to cause them consistently, I can't test this out easily.

    I don't know if using VI server to run the containing VI will help; I expect you'll get the same results. As for detecting if the application has crashed, something to consider is a separate "watchdog application". This separate application regularly checks for your application or regularly receives a ping from your application (within a timeout). If the watchdog application detects your application went out to lunch, it can restart the monitored application. My VB counterparts use this to ensure that their critical RT applications stay running (funny what users will shut down when they perceive the system is running show).

  8. QUOTE (Chelectro @ Jun 3 2008, 10:13 AM)

    I have a 6229 PCI DAQ connected to a CB-68LP connecting(PIN68 & PIN33)Analog Inputs. The electrical measure is an AUDIO differential signal, How can I performed a MATH function (V+)-(V-)?

    I can see both signal at 180 degrees dephase please see attachement.

    If you are acquiring the signal as differential, then you will automatically get signal + with respect to signal -. If you can see both signals, then you are not acquiring a differential signal. Without looking up the channels, it sounds as if you have the wiring correct (the signal + should be connected to channel 0 and the signal - should be connected to channel 8).

    Tim

  9. QUOTE (Mahmoud @ May 22 2008, 07:36 PM)

    My company builds ATE and lab equipment that includes engine cold test (which includes engine control module simulation for ignition events and cylinder cutout). You want something FPGA based and not a M-Series card. It may be possible to do what you need with a series of counter/timers; unfortunately, the 6250 card likely doesn't contain enough counters to decode TDC position much less create the timing signals you'll need.

    Tim

  10. QUOTE (Dan Bookwalter @ May 22 2008, 09:07 AM)

    We have an issue here where I dont have all the info but am hoping that maybe someone has some idea what might be going on , we have an ActiveX control that is written by a third party vendor who doesnt know LabVIEW. This driver uses mouse calls to talk to 24 USB devices , the issue is that when it is used in VB or VBA in Excel it works fine and is very fast , but , in LV it works but takes very long to return , longer than 300ms per USB device , so as you add more devices it gets slower and slower and slower.... We put the VI into the DAQ thread and it made no difference , if you put it in the User Interface thread it runs very fast , but , it doesnt always return the proper values..... any ideas ?? the vendor is not being cooperative :-( the developer has spent over two months on the LabVIEW program so changing languages is not an option....

    From what you've posted, I believe your best bet is to simplify your application to one VI (if possible) and then contact National Instruments technical support if you're still having issues.

    Tim

  11. QUOTE (gparant @ May 20 2008, 08:03 PM)

    Does anyone have a copy of Labview 6 that I can buy or rent from you. I need it to open an application source code that's ancient.

    Thanks

    Ganesh

    Our local NI field support has copies of everything NI has put out since... well, I think they showed me a copy of LabVIEW 2. The Field Engineers are pretty good about handing out older versions of licenses of software you've purchased.

  12. QUOTE (fuzzycontrolfreak @ May 18 2008, 01:41 AM)

    Setting the sampling rate as part of your data acquisition will set the dt based on the samping rate.

    QUOTE (fuzzycontrolfreak @ May 18 2008, 01:41 AM)

    This brings me to another scary thought, what if my DAQ is not able to sample at the specified sampling rate, due to computational time or whatsoever, will the FFT block assume samples are being fed at the specified 'dt' intervals, rather than actually referring to the actual time stamp of each sample?!

    The FFT should be ignoring the t0 and only use the dt and Y data of the waveform. If your analysis is not able to keep up, you'll have to look at alternative archetectures to acquire/analyze your data or look to optimize your data acquisition and analysis.

    Tim

  13. QUOTE (Anders Björk @ May 16 2008, 07:23 AM)

    The 0.5 you are talking about is probally not 0.5Hz! It is most likely 0.5*SampleRate. This is standard signal processing.

    That's an interesting thought. I don't see anywhere in the documentation that would indicate such and the sample graphs of the express VI configuration show the X axis as frequency, not order. Thinking about it, I would expect a power spectrum to return an x-axis in Hz as that's how a power spectrum is defined mathmatically.

    The documentation for the express VI indicates it operates similarly to the FFT Power Spectrum. Replacing the express VI with the FFT power spectrum produces an error because the dx is 0. Correcting the dx with a constant (say 0.001), the VI runs correctly and produces a graph that displays the x-axis out to 490 Hz (slightly less than half the sampling rate).

    Tim

  14. If you open up the express VI, the sample graph shows the bandwidth output goes to 0.5 Hz. I assume this is how the express VI works as it does not appear to have a means of setting the bandwidth and changing the sampling frequency and number of points of the input data does not change the output bandwidth (though this seems hard to believe). I would suggest nixing the express VI and using the power spectrum function.

    Tim

  15. QUOTE (george seifert @ May 7 2008, 08:53 AM)

    But they can't actually run at the same time can they? Let's break it down to the bare minimum. Say all each VI does is add two numbers. Those adds don't execute at the exact same time, right?

    I think the answer to this is the same as the answer to if a system is "real time"... it depends on your perspective. If your perspective is (sub-)nanoseconds, then no the VIs do not execute at the same time as a single processor can only perform one task at a time. If your perspective is in milliseconds, then the VIs execute simultaneously.

    The first caveat is that both VIs have to have all the data for their inputs at the same time so they start at the same time. If data flow is such that one VI obtains all of it's inputs before the other does then the first will start and can terminate before the second starts execution.

    The second caveat is that many PCs out there have more than one processor; this allows the PC to perform two (or more depending on the number of processors) tasks at the same time. Two subVIs that both have all of their data can start, execute and terminate at, quite literally, the same time down to the (sub-)nanosecond level on a dual processor PC.

    The assignment of threads to processors is at the mercy of the operating system, which could decide to run two threads on one processor because, say, someone assigned a database to run on the second processor exclusively.

    Tim

  16. QUOTE (sara @ Apr 30 2008, 04:25 AM)

    i have a problem with DAQ when i shut down the computer a 5 volts are on the digital output port thi means all the relays are on ?

    can any body help me?/

    Assuming that you have a board that outputs a logical "high" by default... One means we used to resolve this is to have one output that controlled an on-after-day physical relay. The relay would provide control power only after the PC had control of the outputs. I unfortunately forget the relay logic we used.

    Tim

  17. QUOTE (reem @ Apr 27 2008, 03:44 PM)

    how is it possible to control the amplitude, frequency of signal from DAQcard?? should i use any other function in between??

    Without knowing what hardware you're using, I would suggest creating a task and then writing chunks of the output as needed. You would change the amplitude and frequency as you write out chunks, though I would recommend completing at least a half-cycle (waveform is a 0) to avoid discontinuities.

    Tim

  18. QUOTE (SPM @ Apr 27 2008, 01:40 PM)

    Could some of the gurus here help me out? I need to advise a customer tomorrow about whether they should chose LabVIEW or Measurement Studio as an ADE for TestStand. The application will be engineering system test of a life-critical networked system, especially at large scales.

    LabVIEW is a programming language; Measurement Studio is a group of controls. You would have to pick a programming language (C/C++, VB, etc.) to use Measurement Studio in to create a front end. This point may resolve your issue.

    I've not used TestStand, but I have talked with a company who has created LabVIEW front ends for TestStand before; they did not seem to think it was difficult to do so and my little tests indicate that the two play nice together (though there is a learning curve there!). The dataflow paradigm is not an issue any more than the object-oriented nature of C++ is an issue compared to C. There are differences in thinking and programming and each has advantages and disadvantages; neither is better or worse.

    LabVIEW has an advantage for what you're talking about in that it is (in my opinion) easier to develop complex programs in and it is a NI product so there is one place to go for support and the finger-pointing that can occur is minimized. That being said, I worked with a man about 15 years ago who could whip out a complex Fortran program with GUI in a half-hour that suited his needs; to learn a new programming language and convert his libraries over was cost and time prohibitive.

  19. QUOTE (farnoosh @ Apr 26 2008, 12:50 PM)

    what i tried to do ,is using web publishing to send the waveform through internet ,and the waveform ,i want to transmitt is a nonperiodic signal(ECG,Electrocardigragh),

    Have you tried using the Web Publishing tool? It's located under Tools->Web Publishing Tool... (at least on LabVIEW 8.0). This will publish a VI's front panel to a webpage. I've not used it, but it sounds like what you're looking for.

    Tim

  20. QUOTE (panithan @ Apr 23 2008, 04:55 PM)

    I've attached a screenshot of my program here.

    One thing that will help is if you make sure to use "good LabVIEW coding practices". This will help you as well as others debug your code and will make the code look "more professional" (which could help you with your capstone). The main points I see is to keep your wires neat (not a lot of bends, wires don't overlap on each other, etc.), to keep the dataflow from left to right and top to bottom, and to put comments in the code.

    As mross pointed out, the motor will take 100 pulses to move one rotation, so if you have an output frequency of 100 Hz the motor will actually turn at 1 Hz (1 rotation per second = 100 steps per second). If your motion is not somewhat smooth, you may have an issue in the electronics that are driving the stepper motor are not powerful enough to cause the motor to move from pole to pole in one step. A way to check this independantly of your program would be to hook up a signal generator to the driving circutry. If you don't know how to use an oscilloscope, this would be a good time to learn. Sometimes the issues run into are not in the software or the hardware, but this dubious area inbetween.

    Good luck!

  21. QUOTE (Cat @ Apr 21 2008, 01:45 PM)

    But here I am at the beginning of a (not so) huge project and I thought I'd give it a try again. I've gone thru as many of the links listed here and NI that I can find, and many of the posts to this forum. I'm stuck at a fundamental issue of OOP being about programming "components" as opposed to "functions".

    Am I making this too hard?

    I had a lot of trouble with OOP at first, partially because (in my opinion) the NI examples tend to not be very "real world". It's nice that animals are composed of cats and dogs and sheep, but how do I abstract that to my problem? Of course, this is an issue with describing any feature for a wide audience.

    I have two systems where I've implemented an object-like structure. The first is a test stand where the error handling is an object, the database access is an object, the test sequencer is an object, etc. The objects, in this case, are subsystems of the large application. I was explaining the code to a layman today and he descibed the structure as an API for a [Windows] service.

    The second system I have with objects is a test plan editor. The editor can load and edit multiple test plans at a time; think similar to the way Microsoft Office applications work. A "test plan" object makes it much easier to deal with data than a 1D array of a cluster of.... This also allowed me to create "properties and methods" of the test plan object to perform all of the creation, opening, and editing into individual VIs; readability and maintenance was much easier with this structure.

    The by-reference object is more similar to C++ than the by-value object; I find the by-reference object more useful to me (more-so with the first implementation). I've played with the by-value object a bit and can see where I may have use for it in the future (as in the second implementation). As with any tool, though, it only makes sense to apply it where appropriate (using a screwdriver for a hammer is not advised).

×
×
  • Create New...

Important Information

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