Re: Filtering out and sending data to the correct graph depending
Thanks for a fast reply with relevant information! :) I think using a history buffer and have one graph will be to slow. The satellite will be active for 6 - 8 hours, and towards the end of that time, I think (I don't know) that the time it would take to read in the buffer and then display the data would be significant, taking away resources needed to keep logging the new, incomming information. So, I will try and play with the property node and see if I can get anywhere. Now, the first part of my question still remains valid for anyone who has a few minutes to answer it, about how to multiplex the incomming command and data to the correct branch. Yet again, thanks to Greg McKaskie for his quick reply.
Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
Gerd, Why not just add up the complex fft's of the various segments prior to computing the magnitude and phase. Works every time. Sanjay Gupta +-+ + Chief Scientific Officer Former Head Phones:0512-2597830 (Off)+ + Advanced Centre for Materials Science 2574628, 3117477 (Res)+ + Indian Institute of Technology + + Kanpur 208016, India Fax:+91-(0)512-2597459 + + + +-+
Re: importing vi from old LV versions (Mac to Win)
I believe that opening the old VI's and re-saving them in LV 4 would also work. If you don't have LV4 or 5 then a conversion kit for old VI's is supposedly available from NI. You might be able to find a workaround for problem (2) by temporarily moving some of the problem VI's out of where they currently are in the hierarchy (vi.lib?) before you load your old VI's, and/or creating 'wrapper' VI's to go around the new VXI VI's that have the connectors in the places you need. If the conversion in (3) is a problem, can you avoid it by saving the VI's into an LLB on the Mac before bringing them to Windows?
Re: Synchronize read from RS232
If the message transmitted by your sensor is always terminated by a specific character, e.g. CR or LF, just enable that as the VISA termination character for serial reads and set a timeout that is a bit longer than the sensor interval, e.g. 2-3 times as long. Use a VISA Read function and wire a large value to 'bytes to read' (larger than the maximum expected message length). VISA Read will wait until a complete message is received and then return it. If the message doesn't have a termination character, read one byte at a time in a while loop and assemble the bytes into a string or array using a shift register. Use appropriate code to detect when a complete message has been assembled. Either of these methods will return the sensor response to your LV program as soon as possible after the sensor has sent it, which is what I assume you mean by 'on time'. There are two possible problems to bear in mind when you have a device that sends data continuously, rather than in response to a request: first, that readings may build up in the serial buffer before your program starts reading them, and second, that the first response you read may have the beginning chopped off, if you opened the port while the device was half-way through sending something. Make sure you've considered both of these. (Using the 'flush' function can help, but remember you might flush the buffer while the device is half-way through sending!)
ScreenPrinting pauses LabVIEW application
System Configuration: LabView 6.02 Windows NT 4.0 Pentium III 800 MHZ dual CPU, 256 Mbytes PXI chassi Problem: My LabView application encounters two intermittent problems while printing. A printer is directly connected to the system thru the printer port. The first problem occurs in the serial communication (RS232) with another computer (VAX) while printing. Characters are detected missing from the string of characters that my system is receiving from the VAX (other computer). This problem occurs almost every time that my system prints a page. The second problem is not as frequent as the first one. This one appears to occur the first time that you try to print after a long time without printing. What occurs is that if one tries to print at the same time that one of the Control fields (String control) number is changed, the field is locked out and the number can not be changed unless the file that is open (recording data) is closed.
Re: How can I move keyfocus on different contols using a keybord input?
It works as I anticipated. This is the answer. Just out of curiosity how would you programmatically control the order. I think turning the order off will use property settings of contorls to false. To program the order of keyfocus I need to know what user is typing and whenever tab is pressed I need to set keyfocus property to true. Not sure how to read user'skeyboard input.
Re: Waveform Chart Y-T Values
The only difference is that the 6.1 version that creates an x array is just called Get Waveform Time Array.
Re: Automation close (windows) does not work.
Have you test your vi over long period of time? Did you see the memory increased steadly? Or does it go to a level and then drop back to a lower level? From what I tested, it seems the memory does not increase all the time. The memory usage increased to a certain amount and then maintain that level (decrease and increase to that level again). Therefore I don't think there is a memory leak. The memory profile I did also does not indicate any memory leak. -Joe
Re: Quel est le VI actif ?
as tu essay=E9 de peser sur pause une fois qu'il est pris dans une loop, et ensuite tu peux faire avancer le program step by step.
can labview record data through a serial connection from a load cell controller?
I am assembling a system and need to be able to control both a newport motion controller (already has LV drivers, so I am sure that's all set) as well as take load data from a Sensotec load cell controller - the controller uses a serial connection for data transfer. Can I use labview to readily acquire data from the load cell controller (it's a sensotec 2000, if that helps)?
DLL calling convention
Hello Here's my problem. DLL looked always magic to me, so I tried to work with them to see how it works. I wrote a DLL in Labwindow/CVI 6.0 and my first fonction had the following prototype extern int __cdecl MyDLL_Init (int In1,char *Out2); I did'nt exactly know why using a C type declaration or a standard one but the I followed a typical example found in the Developer zone. Actually my function had one integer input (In1) and two output: a status Integer and a C string parameter. I called the function in Labview 6i following the example given and I was surprised that everything worked the first time. I wanted to add another output string to my function, so I changed the prototype extern int __cdecl MyDLL_Init (int In1,char *Out2,char *Out3); I changed the configuration in Labview Call Library Function and then Labview crashed all the time. I tried to call the DLL in a CVI program and everything went well. I came back to Labview and it crashed again. I came back to the first prototype and it worked well. I thought it might be the fact that Labview does not use C type string but it worked fine with only one output string, so it does do the conversion if the String Format is correctly chosen in the configuration. Finally I just changed the convention from cdecl to stdcall and everything worked well. As a mechanical engineer, I am more a self-taught programmer and most of the time I change everything till it works without understanding very well but I wonder why this happens like this. Thank you very much Louis
Re: Comment effacer un startup.exe dans un field point
as tu essay=E9 via le ftp!
Re: GPIB Read.vi does not output right data?
Based on the data you included in your question, I would guess your (A) analyzer is set to return data in ASCII format while your (B) analyzer is set to return data in binary format. Typically data encoding format is settable on many instrument. Therefore, you can set (B) to return data in the same format as (A). Alternatively, the binary format is probably an IEEE 488.2 definite length block format. You might choose to return data in binary format for improved performance. Below is a link to some examples for parsing definite length block format: a href=http://sine.ni.com/apps/we/niepd_web_display.DISPLAY_EPD4?p_guid=C993A8A8911F19DDE034080020E74861p_node=DZ52341p_submitted=Np_rank=p_answer=p_source=External;Waveform Encoding and Scaling for Instrument Control Applications /a
Re: Best books to get up to speed with LabView 7?
You can see the classes and books NI offers at the a href=http://www.ni.com/training/;customer education page/a.
Re: Filtering out and sending data to the correct graph depending on data identifier
Regarding your string parsing... Maybe I don't understand your protocol, but it looks to me like it's just a simple query/response protocol. So I'm not sure what you mean when you talk about a continuous stream of data. It seems like you'd just send ?Temperature1\n and immediately do a VISA Read knowing that the data you expect back is for Temperature1. I'd suggest that you terminate your data with an end of line character, and use VISA's termination character functionality to simplify the read. E.g., have the satellite return something like !Temperature1[Data]\n. Then configure \n as your VISA termination character. You could leave out the Temperature1, since you should know what you queried for. But, it does make a good sanity check if you identify the data that comes back with the appropriate channel name. Is the data encoded in ASCII? If so, then the Scan from String and Spreadsheet String to Array functions will be useful. If it's in binary format, you'll probably end up using the Type Cast function. I'd suggest downloading some of the native LabVIEW instrument drivers on http://ni.com/idnet/. E.g., download something for an oscilloscope that includes a serial interface. This should provide you with several examples of how to read data with VISA and parse it. This should also show you many examples of how to get real-valued data (orange) instead of pink or blue. I hope this helps. Brian
Re: General LS Linear Fit - Number of Equations
I'm having the same problem. Seems that if you have more than 90 parameters, the General LS Linear Fit.vi returns error -20021. Seems like there is an unstated maximum array size for the GenLSFit_head function in the DLL the vi calls. Did you ever find a workaround?
Re: do all the sub VIs in a reentrant VI need to be reentrant?
It depends on how you want your sub-vis to behave. Any sub-vi will follow what is set in its execution properties. So if it=92s set for reentrant operation, it will run that way. If it=92s not set for reentrant operation, the same instance of the VI will be used regardless of what is calling it. So reentrant VI=92s can call the same instance of sub-vis and they will share data within the non reentrant sub-vis. So you=92ll need to decide how you want the sub-vis to work and set them appropriately. Ed
Getting Library Function Call errors!
Just recently, we've been trying to upgrade our testers to an Analogic Digitizer which uses Dll files for programming. So we've modified our test code with the appropriate library function calls and have tried to run the software via our labview test executive. It seems that when we run the new software via the test executive, we see errors induced in the operation of our Asset 3.1.1 Boundary Scan Library function calls...? These older Asset LFC's have not been modified with the latest upgrades and are currently running with the older version of production test software without issues. I'm thinking we've run into a memory constraint of some type that my be due to the 5.1.1 version of LabView software. Could you tell me if there are any memory constraints with this version of Labview...? If there's a limitation to the number of vi's and/or library function calls that can be contained within a single library...? We are trying to run the software via a library without diagrams... Could you also give me the name and number of your nearest technical representative so I may be able to hash this out with him/her over the phone if need be...?
Stopping Labview when it has to search for a file...?
When loading opening a new test sequence in labview, the software may go off and search for a dll that may be located in another unexpected directory. Usually, the software will find the file before you can determine which file it was searching for and what path it expected to find the it and where it eventually found it. Is there a way to stop the software load when labview has to search for a file so that the user can easily determine what files may be in an incorrect directory...?
Re: Problem with converting levenberg marquardt fitting program from LV6.1 to LV7
Ruud, Thank you for contacting National Instruments. The problem does in fact have to do with the very small values of Y. As you mentioned, the solution is to scale the Y values, perhaps by multiplying them by 10^+8. The following link will take you to a knowledge base article that will give you more information: http://digital.ni.com/public.nsf/websearch/6F23B120B7A2C585862566F700130A0A?OpenDocument Hope this helps! Matthew C Applications Engineer National Instruments
RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
The only way to get meaningful phase is to start your acquisition at the same phase for every segment. An example of this would be an encoder pulse. If each acquisition starts at a once per rev pulse from the encoder, they will all have the same phase components. Another possibility is doing order tracking, where there is a fixed number of samples per revolution. If you shift your window by the number of samples per revolution, you will get the same phase again. Any time you have a steady stream of data with no reference point, the phase data is essentially useless. If it is a repeating signal you should be able to identify a reference point. I suppose if you don't have a hardware signal, you could use convolution to identify repeating cycles of data. If phase is important, you should have a reference signal. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 3:36 AM To: [EMAIL PROTECTED] Subject: Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi Hi folks, I know the overlapping average technology from signal analysers. In those cases I used them up to now, phase was not relevant. Now I have an idea about a different use where phase would be important. Scott's comment that phase would be meaningless if overlapping averaging is used is making me thinking. What about this: 1. Cut the long waveform stream into a number of (overlapping) pieces. 2. Use the FFT vi for each piece, which will produce amplitudes and phases for each frequency bin. 3. Average apmlitude and phase for each frequency bin separately. Would this create meaningful phase? I would guess yes, as all pieces were acquired in a consistant stream of data originally. Seems that my mathematical understanding does not reach far enough to understand this completely. Cheers Gerd
Re: How do I create a code interface node on OS X?
Hi, Yes, you can create a CIN on Mac OS X. You can find more information on it in the a href=http://digital.ni.com/manuals.nsf/websearch/8D930295FFBF9F7686256D2C00624728?OpenDocumentnode=132100_US;Using External Code in LabVIEW/a manual pages 3-10 to 3-12. I hope this helps. Feroz National Instruments
Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
At 16:19 +0530 02/04/2004, Dr Sanjay Gupta wrote: Gerd, Why not just add up the complex fft's of the various segments prior to computing the magnitude and phase. Works every time. Works differently. That is a vector addition. For a varying phase it will reduce your signal. For overlapping FFTs phase slip will reduce the signal to zero after enough time. RMS averaging will average the magnitude. Very different. -Scott -- Dr. Scott Hannahs, Head of User Research Instrumentation http://sthmac.magnet.fsu.edu National High Magnetic Field Laboratory, Florida State University 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 Do not meddle in the affairs of sysadmins, for they are easy to annoy and have the root password.
synchronize communication on tcp/ip
want to achieve synchronous Bi directional Communication in a client server setup using tcp ip . The client sends some data to the server and immediately start waiting for an acknowledgement from the server. now, how do i ensure that the client reads the acknowledge ment and not the data that it wrote to the server( i am using character 'A' for acknowledgement and the server data being sent back to client can easily have it). I am not sure if I am very clear in asking the question . Please revert if you think you understood the query or may be with little more elaboration you would be able to.
Re: Channel configuration with HP34970A
The driver comes with a complete set of functions and several high level examples that incorporate them. There's one called HP34970A Advanced Scan Example that will take voltage and/or resistance measurments from a single scan list. It is easily modified to take other measurments. There's another one called HP34970A EZ Scan Example. To use either one as is, open it, specify the address of the instrument, enter a channel list, pick the configuration, and then run it.
Re: Item names in a strictly typed ring control do not update.
Sudhir, This is an expected behavior with strictly typedef ring constants. Instead of menu rings, you will want to use enums. A Strict typedef keeps its cosmetic information on the front panel but not on the Block Diagram. The type of the ring does not depend upon its strings - like it does with enums. See a similar post on this topic bellow: a href=http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101RPAGEID=135HOID=506500080016B2UCATEGORY_0=_49_%24_6_UCATEGORY_S=0;Strict Type Def with Menu Ring does not automatically update linked constants/abr Zvezdana S. National Instruments
Re: what is the difference between wiring a datasocket reference...
John, Thank you for contacting National Instruments. To answer your first question, whether it is better to wire a URL or reference into a DataSocket Read/Write depends on your application. When you are going to be writing or reading multiple times to the same connection (such as using a loop), it is more efficient to first open a DataSocket connection before the loop, pass a reference to your write/read functions within the loop, and then close the connection after the loop. Using only a DataSocket Read/Write will cause your connection to open and close each time the loop repeats. This can significantly increase the load on your processor and system resources. LabVIEW will allow you to supply a URL directly to a DataSocket Read/Write, which is useful if you are only going to be making one read or write. You can open multiple DataSocket connections simultaneously using DataSocket Open. It is recommended, however, that you close every connection once you have finished performing the necessary tasks for that connection. I believe you can perform both read and write functions to the same connection before closing it if you wire a =93ReadWrite=94 constant to the =93mode=94 connector of the DataSocket Open VI. I hope this helps! Matthew C Applications Engineer National Instruments
Re: Invoke Node Method: Close FP (LV7)
Very Slick. Thanks for the indepth reply. It certainly has helped. I've just been playing it safe and closing all references. It was indeed the creation of a bigger badder VI in which I came to wonder about this. Thanks for clearifying. Steve
RE: RE: IMAQ references/LV7
Don, Thanks for the IMAQ examples. What I am finding is that if you drag the property node into another blank VI then drag the reference to the blank VI front panel problems occur: 1. The reference does not show as an IMAQ reference but a odd looking thing with a red x PlugInContol Refnum when I try to connect this reference to the property node in the blank VI I get an insane error and LV7 crashes. 2. I cant seem to find the proper IMAQ reference. I really what to do the coding at a sub-VI level not on the top level this is where the problems lie. Jack Hamilton Hamilton Design [EMAIL PROTECTED] www.Labuseful.com 714-839-6375 Office
Teststand help
Can anyone help me pass variables from my VI into teststand to run the pass/fail test? I'm able to get my VI to run but cannot get the info out of my VI and into teststand after the VI runs. How do I do this? How do I also pass that info into the pass/fail test? Any other teststand tips would be appreciate. Thanks. Scott
Re: Invoke Node Method: Close FP (LV7)
I've just been playing it safe and closing all references Good go! Someone will benefit by this appraoch. It may even be you. Thanks for the kind words. Ben a href=http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101RPAGEID=261HRedirected=TrueHUserId=101_3529RFORMNUMBER=6;Ben Rayner/a a href= http://volt.ni.com/niwc/common.jsp?page=products_certification_cldnode=10638; Certified LabVIEW Developer /a www.DSAutomation.com
Re: Is there a way to create a multi-state button or have a pict ring behave like boolean?
I just had a thought (don't everyone cringe at once)... You could change the text on the button programmatically using property nodes and then when the button was pressed, read the button text to see which state it was in. A little clunky but it should work. There are other, better ways of doing this, but I think that this is a workable solution. By building a typedef list of texts for the button, you could change it quite easily. I may try this just to see how it works. Rob
RE: [W] Image acquisition
I don't really see a need for anything else for your application. If you are using a non-NI driver to acquire from the image, you should be getting a 2D array from the camera. If not, you should be able to easily convert it to a 2D array. The summing operations are standard array manipulation. You can always display the results using an intensity plot or picture control. If you want higher speed, you could use the new image control in LV 7. You might have to install IMAQ to get that control. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jean-Pierre Drolet Sent: Wednesday, February 04, 2004 10:18 AM To: Info-LabVIEW Subject: [W] Image acquisition Hello all. I'm not familiar with image acquisition and I have to communicate with a CCD camera, Photometrics CE 300, using its driver PVCAM. The camera acquires a spectrum and the only processing required is to sum horizontal or vertical lines into bins. I have LabVIEW 7 Pro and I would like to know if someone here can tell me what else is required to get this job done. Thanks Jean-Pierre Drolet Avensys.
Why the control passes the previous value to my function?
I want to use a control to subscribe to value of a modbus register through datasocket and pass the present register value to other functions. I found that after subscribing, the control shows the present register's value but pass the previous value to others instead of current value. When I put breakpoint into the program, the operation is correct. But when I remove the breakpoint away, that strange thing happens again. It looks as if there is some delay. How can I solve it? Thank you for your help. Steven
Re: i am trying to communicate with a robotic arm which is...
You said that the robot arm came with a driver. Typically this is DLL. I'm assuming that this works but you want to integrate control of the arm with a LabVIEW program. Hopefully the vendor can provide and API (Application Program Interface) that describes the functions in the DLL. The DLL would do all of the communication to the device through the parallel port. If you want to use LabVIEW functions (i.e. outport or VISA Write) to talk to the serial port, then I think you'll have to uninstall the driver and duplicate it's functions.
Re: Filtering out and sending data to the correct graph depending on data identifier
Hi Brian and thanks for your feedback. A few comments: I'm tagging the data, because I want to be able to sample and send in a loop from the satellite side, without querying for the data. But I also want to be able to query specifically for data manually. I don't know what I will end up doing in the final application though, so right now I'll go with ASCII (easyer to check for errors and read for humans) and the identifiers, I might remove them later. Also, I'm not sure if using just a /n character (8 bit ASCII code) is good enough, because the data comming is from an ADC circuit (or actually 10) and they can have any value from 0 to 1024 and the data might accidentally contain a sequence that in ASCI corresponds to the /n character. Thats why I will use at least 2 characters for the end of data sign. :)
Re: tcp read / tcp write ?
No.
Re: when to consider giving different port number to every new client that is connecting to the server?
When the server receives requests from the clients, does it really reply in parallell, or does it handle the requests sequencially? If the latter, improve the performance by dynamically creating connection handlers that process requests from each client individually. Compression is another thing that may improve the performance.
Re: intaller remove other labview applications
Use different compile scripts for different versions of your program--what needs to be different in the compile script is the registry key the installer is looking for. When an install package finds that the key is already registered it will try and do the uninstall, which is really handy if you want it to do that, and not handy at all if you don't :)
Re: Filtering out and sending data to the correct graph depending on data identifier
So it sounds like you want to send back a sequence of two-byte binary data samples. Thus, you'll use the Type Cast function. (When I talked about ASCII, I meant that encoded the value 142 as three ASCII characters, '1', '4' and '2'. It sounds like you are not going to encode your data this way.) Back to the continuous vs. query mode... It's kind of weird to be combining both of those. Usually devices either constantly spew data, or they are queryable. Maybe they can do either, but they are typically put into one mode or the other as part of their configuration. But let's run with this. Here's what I'm envisioning, and you can tell me if I'm right. When no queries are going on, the satellite is constantly spewing out... !Temp1[data]End !Temp2[data]End !Temp3[data]End and starting over... !Temp1[data]End etc. If the satellite receives a query, it reports the results back at the next opportunity. Something like this... !Temp1[data]End !Temp2[da Computer queries for ?Temp1 while receiving !Temp2 ta]End !Temp1[data]End !Temp3[data]End etc. If that's the case, then I think you'll want two parallel loops. One is responsible for waiting for a reason to query for a specific data value. It doesn't do anything until that data is needed. The other loop is constantly reading, and has no idea whether data was queried, or just received as part of the normal spewage. It is responsible for taking whatever is read, parsing it and updating some data structure (e.g., a set of globals) that contain the latest data values. The rest of your program that needs to display or log or analyze the data just looks at the globals. Is any of this making sense? Am I off track? Brian PS: I think any posting that contains the noun spewage is worthy of a 4-star rating, don't you? ;-)
RE: Teststand help
In LabVIEW, there are TestStand Native VI's for: Get Boolean, Set Boolean, Get String Set String Get Number, Set Number Get Variant, Set Variant etc. These are all available in the scalar, or array variety, (and I've actually created multi-dimensional array VI's also.) and these are available from the TestStand Pallet on the LV Block Diagram and Front Panel If these TestStand VI's are not available, you may need to either reinstall TS, or find the TS .llb on NI web site and download and copy it to the vi.lib directory under LV. In TS, you need to wire a sequence reference in to the LV connector from TS. You must enable the Sequence reference check box in TS's Specify module dialog. Then use the Seq Ref and wire to the TS VI's and pass data back and forth at will. The variable can be accessed via name stored on the Locals tab of any sequence. These are referenced by Locals.variablename in LV. actually, the examples are quite good for this detail... Rick Mahoney Equipment Test Design Lockheed Martin Corp Syracuse, New York 13221 -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Scott Serlin Sent: Wednesday, February 04, 2004 12:03 PM To: [EMAIL PROTECTED] Subject: Teststand help Can anyone help me pass variables from my VI into teststand to run the pass/fail test? I'm able to get my VI to run but cannot get the info out of my VI and into teststand after the VI runs. How do I do this? How do I also pass that info into the pass/fail test? Any other teststand tips would be appreciate. Thanks. Scott
RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
I don't see any benefit to averaging parts of the signal. If you average within a single revolution, you will lose your phase information. There is no benefit of averaging sections of repeated signals either. Just do a large FFT for each revolution and average them. FYI, you could average the signals themselves or the complex FFTs for repeated signals. I don't recommend averaging magnitude and phase in this case. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 10:26 AM To: Bruce Ammons Cc: Info LabVIEW Subject: AW: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi I have a phase reference pulse once per rev which starts the acquisition. So I should get consistent phase readings for repeated measurements. However, I was wondering if it would make sense to average parts of the signal(using overlapping segments) for speeding up the averaging process. The idea is to make as much use as possible out of the data that I get into the PC. Gerd -Ursprungliche Nachricht- Von: Bruce Ammons [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 4. Februar 2004 15:27 An: 'Gerd Rech'; [EMAIL PROTECTED] Betreff: RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi The only way to get meaningful phase is to start your acquisition at the same phase for every segment. An example of this would be an encoder pulse. If each acquisition starts at a once per rev pulse from the encoder, they will all have the same phase components. Another possibility is doing order tracking, where there is a fixed number of samples per revolution. If you shift your window by the number of samples per revolution, you will get the same phase again. Any time you have a steady stream of data with no reference point, the phase data is essentially useless. If it is a repeating signal you should be able to identify a reference point. I suppose if you don't have a hardware signal, you could use convolution to identify repeating cycles of data. If phase is important, you should have a reference signal. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 3:36 AM To: [EMAIL PROTECTED] Subject: Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi Hi folks, I know the overlapping average technology from signal analysers. In those cases I used them up to now, phase was not relevant. Now I have an idea about a different use where phase would be important. Scott's comment that phase would be meaningless if overlapping averaging is used is making me thinking. What about this: 1. Cut the long waveform stream into a number of (overlapping) pieces. 2. Use the FFT vi for each piece, which will produce amplitudes and phases for each frequency bin. 3. Average apmlitude and phase for each frequency bin separately. Would this create meaningful phase? I would guess yes, as all pieces were acquired in a consistant stream of data originally. Seems that my mathematical understanding does not reach far enough to understand this completely. Cheers Gerd
RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
The benefits are that you can see the signal change during the 120 second acquisition time. You could see a 200 hz signal oscillate back and forth for example. This is the approach taken by the JTFA (joint time frequency analysis) toolkit. They use gabor spectrograms that take gaussian windows of the data. There is a tradeoff between response time (ie time to put that frequency on the screen) and accuaracy (ie long data sets). The overlapping FFT with exponential averaging is a tradeoff but it all depends on the requirements of the job. If you want real time display then you can't wait for that long 120 second acquisition time. Also if you want information about frequency changes within that 120 seconds. -Scott At 13:56 -0500 02/04/2004, Bruce Ammons wrote: I don't see any benefit to averaging parts of the signal. If you average within a single revolution, you will lose your phase information. There is no benefit of averaging sections of repeated signals either. Just do a large FFT for each revolution and average them. FYI, you could average the signals themselves or the complex FFTs for repeated signals. I don't recommend averaging magnitude and phase in this case. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 10:26 AM To: Bruce Ammons Cc: Info LabVIEW Subject: AW: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi I have a phase reference pulse once per rev which starts the acquisition. So I should get consistent phase readings for repeated measurements. However, I was wondering if it would make sense to average parts of the signal(using overlapping segments) for speeding up the averaging process. The idea is to make as much use as possible out of the data that I get into the PC. Gerd -Ursprungliche Nachricht- Von: Bruce Ammons [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 4. Februar 2004 15:27 An: 'Gerd Rech'; [EMAIL PROTECTED] Betreff: RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi The only way to get meaningful phase is to start your acquisition at the same phase for every segment. An example of this would be an encoder pulse. If each acquisition starts at a once per rev pulse from the encoder, they will all have the same phase components. Another possibility is doing order tracking, where there is a fixed number of samples per revolution. If you shift your window by the number of samples per revolution, you will get the same phase again. Any time you have a steady stream of data with no reference point, the phase data is essentially useless. If it is a repeating signal you should be able to identify a reference point. I suppose if you don't have a hardware signal, you could use convolution to identify repeating cycles of data. If phase is important, you should have a reference signal. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 3:36 AM To: [EMAIL PROTECTED] Subject: Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi Hi folks, I know the overlapping average technology from signal analysers. In those cases I used them up to now, phase was not relevant. Now I have an idea about a different use where phase would be important. Scott's comment that phase would be meaningless if overlapping averaging is used is making me thinking. What about this: 1. Cut the long waveform stream into a number of (overlapping) pieces. 2. Use the FFT vi for each piece, which will produce amplitudes and phases for each frequency bin. 3. Average apmlitude and phase for each frequency bin separately. Would this create meaningful phase? I would guess yes, as all pieces were acquired in a consistant stream of data originally. Seems that my mathematical understanding does not reach far enough to understand this completely. Cheers Gerd
Re: [W] Image acquisition
Hi Jean-Pierre; I had to look for this particular camera (photometrics 300). I did not spend much time but it seems to me that the camera is made by Roperscientific and they also provide the frame grabber (PCI bus). By the sound of it, I guess the camera is RS170 and most probably has some special features which makes is so special! (I guess it communicates with the card). Now, I don't know what exactly you want to do? I guessed you want to write a particular program in LV. If you want to have the functionality of PVCAM (I think it is Roper's software) then you will need more information regarding their DDL's and most probably their SDK. If you can get hold of the pointer to the pixel values in the memory, (assuming you would know the image format) then the rest of the job is a piece of cake! But getting hold of that pointer may not be an easy job. What would I do? I would buy a frame grabber from NI and a compatible camera according to my application and then IMAQ 7 and viola! If you need further help please contact me Regards + Dr. Hamid R. Yazdi Federal Mogul Manufacturing technology 3935 Research park drive Ann Arbor, MI 48108 Tel: 734 222 4108
RE: [W] VI Server vs. System Exec.
As I understand it a version of LabVIEW can always(?) open a VI written with an earlier LV version but the converse is not true. If you have access to LV7 you can try 'Save with Options' to save those LV7 VIs as LV6.1 VIs. Sometimes this causes errors though... Probably the better option is to mass compile (Tools -- Advanced -- Mass Compile) your LV6.1 VIs to LV7. Make sure you keep a backup of your 6.1 code in a safe place, as a recent poster to this list recently learned. If you don't have access to LV7 you might be out of luck, unless someone on the list offers to 'downgrade' your VIs. I don't have LV7 yet, so I'm not volunteering. :) Johann Junginger Research Scientist Xerox Research Centre of Canada [EMAIL PROTECTED] Ph: (905) 823-7091 x306 Fax: (905) 822-7022 -Original Message- From: Niesen, Melissa [EPM/MTN] [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 04, 2004 18:03 To: '[EMAIL PROTECTED]' Subject: [W] VI Server vs. System Exec. I have several built VIs I want my users to have easy access to. So, I made a program launcher in LabVIEW that they can use to browse through the available programs and start them, among other things. I used VI Server in this launcher to run the built applications. Now, I've run into a problem. The launcher is built in LV 6.1 and some of the programs are in 7.0, which gives me unhelpful errors. Could it be that VI Server in the 6.1 launcher cannot start programs written in 7.0? If so, would there be any drawbacks if I just went ahead and started the programs using the System Exec? Or is there a way to get around the problem and still use VI Server? All of the computers are running Windows, but I like to keep things as platform-neutral as possible. Thanks for any tips, Melissa Niesen Fisher Controls Division of Emerson Process Management
Position adjustment of cursor name in XY-graph
I put tens of cursors on X-Y graph using property node. Also. I used the names of the cursors as some indicators. Is there a way to decide the position of the cursor name? e.g., like using the property node. Presently, I adjust the position menually one by one. I am not talking about the position of cursor, but about the position of the cursor name(possibly the position seem to be related to the cursor position). The second problem occurs when I copy the X-Y graph to another vi. In that case, the position of cursor name changes to a wierd position, such as out of the graph. Please let me know to control the position of the cursor name.