All Activity

This stream auto-updates     

  1. Earlier
  2. Then just assign it to another variable: global testDataSmoothed = smooth(testData,12)
  3. I was wanting to do the smooth before it went into the graph so I can use the data shown in the graph for reference points for a high/low, pass/fail setup.
  4. Just reference it by name like you would a channel. For example to graph it smoothed, just do something like: smooth(testData,12) in the Y Expression.
  5. how do I call the data up and modify it? I wanted to smooth it and put it in a graph once it has been smoothed, After i have stopped the stream.
  6. You don't need to have streamed data show up in a channel. And it is not an "event channel" but rather the Event of a channel. The Event of a channel is script that is associated with any channel that executes whenever new data comes in. In the case of streamed data, the data comes into DAQFactory in blocks so the Event is only triggered with each block. Block size is determined by the LabJack driver. This makes it more challenging to use Channel Events. The script you posted will capture your stream data and put it into a global variable called "testdata" from there you can work on the data as needed.
  7. I was told it was easier to create an event channel and have the streamed data stored there and then clean it up and do my max and min test off of that, and then if im right i can clear the channel at the start of the next test. I am reading through the help file but can't find where i would save my stream data to the event channel. right now it is just being used in the testdata command. global endtime = systime() global testdata = Sensor[starttime + .5,endtime] beginSeq(StopStream) if ((min(testdata) < 4) || (max(testData) > 6)) OutofRange = 1 endif
  8. AzeoTech

    Text Rotation

    Not yet. It will be in the next release.
  9. I don't recommend smoothing incoming data as you will be unable to get back to the raw data. It is a much better idea to collect it raw in the channel, and then smooth it later. It isn't really hard to smooth incoming data, it just isn't a beginner task for streaming data unless you use the Average function, which isn't the same thing. The channel's average feature allows you to do oversampling, which will smooth your signal, but results in fewer data points. The smooth() function does a rolling average and smooths the signal but maintains the same number of data points.
  10. global endtime = systime() global testdata = Sensor[starttime,endtime] global smoothedData = smooth(testData,12) beginSeq(StopStream) if ((min(testdata) < 4.81) || (max(testData) > 5.11)) OutofRange = 1 endif i was wanting to smooth the raw data as it came in but another Azeotech told me it's really hard so since in am testing the (testdata) i tried to smooth it before it was processed, but i am still having a hard time getting the good part to pass inside the numbers i set. They are the ones from the graph that is set to with the same smooth command smooth(Sensor,12) as my Y expression. Also the first half second of the signal is a high spike, how to i keep that out of the testdata?
  11. I'm confused. Do you want to find these peaks in the smoothed data or in the raw data?
  12. I am trying to read an analog signal coming in that I am streaming from a Labjack, I was trying to figure out how to smooth the sign wave before it was picked up on my graph. I ended up smoothing it in the graph. The only problem with that is I am using high and low peaks to tell whether the part that its reading is bad. If I set the numbers to the information that has been smoothed on the graph it fails every part. Is there a way to smooth it as it comes in or do I have to do it in the graph? If I need to upload my sequence I can, I am just trying to figure out how to use the smoothed info to set my high and low limit.
  13. The Windows Startup folder only triggers when you login. This is because the Start menu itself is user specific, and until you have logged in, there is no user, so no menu. You have two choices: a) have Windows login automatically. How this is done depends on the Windows version, and there are lots of sites on the web that explain how it is done. b) use the Windows Task tool to trigger a start of DAQFactory on boot. This method will get it to run before a login, but note that depending on how you do it, you may not be able to get to the DAQFactory UI after you login, especially if you login with different credentials than what you used for the Task.
  14. Win 7 PC was running an older version of DF from about 2012 and I installed v16.3 over the top of the older version yesterday. DF starts with a shortcut in "All Programs / Startup" as before, however the start does not happen until I log in to the PC, then it starts up normally. Or perhaps it executes but waits for a user logon. In any case. I don't do anything to initiate the start; on logon I see the startup splash screen and then the program runs normally. There is, of course, a gap in the logged data from the time of the reboot until a logon occurs. ???
  15. I have not used Kipling. I will try to do that. I do have the latest LJM Installer (I checked that before I came here to the forum). In the short term I have switched to using counter instead of timer. I just continuously count the pulses and then reconstruct the frequency in post processing after logging. This may end up being a workable solution for me. Please be reminded that I ran the program with a function generator as input, and monitored the signal with an oscilloscope to confirm good signal integrity. So I don't see much point in using DAC1 to generate a "known good" waveform. But thank you for the suggestion anyway.
  16. asomer

    Text Rotation

    Is there any way to change the rotation of text components?
  17. Reading the AIN should not influence the digital features of the T4 unless you are using stream mode, in which case your maximum edge rate would drop. Before anything else, please ensure you are using the most recent release version of firmware. This is easiest to check using the Device Updater tab of Kipling. Also install the latest version of LJM. See our LJM installer page: https://labjack.com/support/software/installers/ljm I would recommend you start troubleshooting by closing DAQFactory and configuring the frequency in feature in Kipling as described in the guide below. Add your AIN channels to the active registers just so that everything is consistent with your current program: https://labjack.com/support/software/applications/t-series/kipling/register-matrix/configuring-reading-frequency If you do not have the issue in Kipling, that suggests something going on in your program. Otherwise there is likely something going on at a hardware level. Another good test would be to connect FIO4 to DAC1 and write a 1 to the register DAC1_FREQUENCY_OUT_ENABLE. This will generate a 10Hz square wave on DAC1 that the frequency in feature should agree with. The DAC1 frequency out function is described in our T-series datasheet: https://labjack.com/support/datasheets/t-series/dac
  18. I'll let LabJack comment, but I will say this: you really should use the same identifier in both your channels and your script. Otherwise DAQFactory thinks you are connecting to two different devices and will ask the LJM driver for two different connections to your single device. Probably not the cause here, but just a pointer.
  19. Yes, I've always wanted some sort of reset option from the menu. The panels are all handled by the framework. As for the current forum link, there are current ones available. The one you found points to our old forum because it was created many years ago. We have many thousands of posts on this forum so unfortunately could not update all links when we moved the forum. If you ever find a dead link, you can fix it by simply replacing "www.azeotech.com/board" with "support.azeotech.com"
  20. I am encountering erroneous frequency data when reading frequency with labjack T4. I am using DAQ factory express. Initially I encountered this in a real application, but I have been able to duplicate it in a simple .ctl, which is attached. I am reading frquency on FIO4 using the time interval method (time between rising edges). I display the result (after some calculations) and also graph the result. I am also sampling three analog channels. In experimentation I have noticed that the problem seems to go away when I delete the three analog channels. Is there any reason why the analog read operations would interfere with the read to FIO4? As far as my test setup goes, I am testing using a function generator to supply 100 Hz square wave to FIO4. I have probed it with an oscilloscope and it is a very clean signal. I do not suspect noise is any part of the problem. I have tried it on two T4 devices, and they both behaved the same way. I also attached a screenshot of the ctl file "in action." RPM is calculated from the FIO4. Basically RPM is proportional to frequency. The correct result SHOULD be 600 RPM. But often I see much higher frequencies (corresponding to shorter intervals) which are not correct. Any help or suggestions would be much appreciated. quick_freq_test_with_ADC.ctl
  21. During development, UI Panels can be lost from view by inadvertently moving them offscreen. Since the screen dimensions are retrievable from Windows, there should be some method of preventing the loss of Panels. In the Forum currently (20201005), a link given for recovering lost panels does not lead to a solution, just a list of subforums.
  22. AzeoTech

    Capture Incoming Data

    That is all ASCII data. Uncheck the box in the monitor that says "Display ASCII chars as codes" and you will see. To capture the data, just do a bunch of readuntil(10) commands until it times out, then stick the result of each into a string or wherever else you want. I see multiple lines of ASCII data, so readuntil(10) will work a number of times, then when done it will time out. If the response is always a certain number of lines, you can repeat readuntil(10) that many times in a for() loop, and then stop. You should probably do a purge() before doing the write() to trigger the response.
  23. Andre

    Capture Incoming Data

    Here is an example of the data that is generated from the device. Tx: \001 Rx: \076\097\115\116\032\080\097\103\101\032\114\101\099\111\114\100\101\100\032\032\049\048\032\111\102\032\050\048\052\055\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013\078\111\032\068\097\116\097\032\010\013
  24. I am working on a new project and need to capture data from the Comm monitor after triggering the device to dump the data. I have two triggering options. Option 1 Device.DeviceName.SetRegisterS16(247,103,1) Option 2 device.DeviceName.Write(chr(1)) Is there any way I can capture the incoming data? The data will need to be loaded into an array. In total 94 values will be dumped.
  25. To make it easier, I would use Test channels, then in the Event of the test channel, have it update the array: MyArray[3] = mychannel[0] Don't use Append since you need the values in a certain location. Remember, you can do: global x x[3] = 4 and it will automatically expand the array to 4 elements (filling with 0's). Anyhow, this way you can continue to use channels, which are a bit easier with the user interface elements, having the array automatically update. Then as you said, in script, send the whole array to the other software in a single function call.
  26. Originally, DF WAS a TCP server, but Wonderware for whatever reason was having trouble getting a response to the polled registers. Round 2: Installing a Modbus RTU (slave) to Modbus/TCP (server) gateway. I want DF to be the RTU master, so that I can control the frequency and timing of data transfer to the gateway. What I didn't realize is that outgoing (write) channels are ONLY event driven on a write (which most times is what you want). You can't enter timing and offset in the channel table, and there's no WriteGroup() equivalent to ReadGroup(). So my problem was that as I calculated the 20-25 values in sequence, each time I calculate one, DF is going to generate a one-channel write, which is not what I want. What I want is to write all 25 or whatever on a timed interval, analogous to the way reads are done. I ended up using option (2) above. Create a new array variable, execute MyArray.Append(CalcedVarNN) as I calculate the variables, then do a single write of the entire array from sequence on a time schedule.
  1. Load more activity