DAQman
-
Posts
1,703 -
Joined
-
Last visited
Reputation Activity
-
DAQman got a reaction from Nico_C in Errors using DT9806 USB daq with LabVIEW + LV-Link
I'm sorry, I provided incorrect information. Instead of DtAinThermocoupleContinuous use DtAinContTEMP. For convenience, I have attached it below.
Best regards,
John
DtAinContTEMP.vi
-
DAQman got a reaction from CRB in DAQami Math operation between 2 channels
Hello,
The DAQami software does not have a math channel feature. Instead, you could switch to the DASYLab Lite software ($499.99 US). It makes available an arithmetic module that features a two-channel mode for addition, subtraction, multiplication, division, and exponential channel1 ^ channel2. Of course, you could do it using MatLab, C++, and VB, but that is way more work.
https://www.mccdaq.com/dasylab-chart.aspx
Best regards,
John
-
DAQman got a reaction from ALR723 in MCDAQ USB-1616HS-4: Python Driver Returns Incorrect Status Information
Hello,
The USB-1616HS series device does not have a flash led function.
Best regards,
John
-
DAQman got a reaction from Darryl Stein in Replacement Screw Terminal Connectors for QUAD08
Hello,
We used to sell a replacement kit but discontinued it some time ago due to low sales. Attached is the screw terminal block datasheet. The manufacture p/n is 31379108.
Best regards,
John
USB_QUAD08_Screw_Terminal_BlockType 379.pdf
-
DAQman got a reaction from ThomMoun in USB-1208FS C language
Hello,
Your device has two 8-bit ports, FIRSTPORTA and FIRSTPORTB, or 16 bits altogether. In my example code, the following two lines set D0 on FIRSTPORTA.
dataValue = 1;
ULStat = cbDOut(BoardNum, FIRSTPORTA, dataValue);
dataValue is 0-255, depending on which bits you want to set. Using 128 will turn on D7, and 129 will turn on D0 & D7.
You could use the cbDBitOut function instead. It uses only FIRSTPORTA, a bit number, and a bit level (0 or 1). Bit numbers are 0 to 15.
Best regards,
John
-
DAQman got a reaction from ThomMoun in USB-1208FS C language
Hello,
I have yet to try to use DevC++ IDE or Code: Blocks on Windows. MCC uses Microsoft Visual Studio. I recommend downloading the free Community version of Visual Studio for your project. Create a 32-bit C console project and add to it the cbw.h, cbw32.lib files and your code file. Below is a simple 32-bit C console program that toggles D0 on FirstPortA and D0 or FirstPortB.
#include "stdafx.h"
/* Include files */
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include "cbw.h"
#define MAXNUMDEVS 100
void main()
{
/* Variable Declarations */
int ULStat = 0;
int numberOfDevices = MAXNUMDEVS;
DaqDeviceDescriptor inventory[MAXNUMDEVS];
DaqDeviceDescriptor DeviceDescriptor;
int BoardNum = -1;
float Rev = (float)CURRENTREVNUM;
ULStat = cbDeclareRevision(&Rev);
cbErrHandling(PRINTALL, STOPALL);
printf("Digital output demonstration\n\n");
//Ignore InstaCal device discovery
cbIgnoreInstaCal();
//locate USB devices
ULStat = cbGetDaqDeviceInventory(USB_IFC, inventory, &numberOfDevices);
for (int i = 0; i < numberOfDevices; i++)
{
DeviceDescriptor = inventory[i];
//Product IDs can be found in ULProps.txt located in
// C:\Program Files (x86)\Measurement Computing\DAQ
if (DeviceDescriptor.ProductID == 0xE8)
{
BoardNum = i;
ULStat = cbCreateDaqDevice(BoardNum, DeviceDescriptor);
printf("Device Name: %s\n", DeviceDescriptor.ProductName);
break;
}
}
if (BoardNum < 0)
{
printf("USB device not found...press any key to exit\n");
getch();
return;
}
ULStat = cbDConfigPort(BoardNum, FIRSTPORTA, DIGITALOUT);
ULStat = cbDConfigPort(BoardNum, FIRSTPORTB, DIGITALOUT);
unsigned short dataValue = 0;
while (!_kbhit())
{
ULStat = cbDOut(BoardNum, FIRSTPORTA, dataValue);
ULStat = cbDOut(BoardNum, FIRSTPORTB, dataValue);
dataValue = 1;
ULStat = cbDOut(BoardNum, FIRSTPORTA, dataValue);
ULStat = cbDOut(BoardNum, FIRSTPORTB, dataValue);
dataValue = 0;
if (ULStat != 0){
printf("Digital IO error\n");
break;
}
}
cbReleaseDaqDevice(BoardNum);
printf("Completed...press any key to exit\n");
getch();
}
-
DAQman got a reaction from jpavlich in continuous scans USB-1608gx and USB-1808x
Hello,
num_points is a 32-bit integer, so the value can be quite large. Size the buffer to hold one second of data, usually, this is big enough. Buffers need to be at least a multiple of the USB packet size * the number of channels. A buffer is allocated using win_buf_alloc. The USB-1808X will use win_buf_alloc32. The USB-1608GX-2AO packet is 256, the USB-1808X is 128. Take a look at the attached Python script.
Best regards,
John
a_in_scan_USB_1608G.txt
-
DAQman got a reaction from mzlatinov_erg in USB-2416 Digital I/O not available in InstaCal
Your USB-2416 analog input channel must be configured with the InstaCal utility, not the digital IO. To set the digital IO direction with LabVIEW, place a ULx Create Channel VI on the block diagram and change the bottom selector from Analog Input to Digital Input or Output. Do this before connecting any wires. The ULx LabVIEW digital IO examples are in \National Instruments\LabVIEW 2022\Examples\ULx\Digital. To test the outputs, open the library called Generate Values.llb and run ULx Write Dig Chan.vi. To test the inputs, open the library called Read Values.llb and run ULx Read Dig Chan.vi.
-
DAQman got a reaction from Michelle Joon in USB-2404-10 MC and Matlab
According to MatLab's website, the USB-2404-10 is supported.
https://www.mathworks.com/hardware-support/measurement-computing.html
You must install InstaCal and have the MatLab Data Acquisition Toolbox to use it. We don't provide MatLab technical support, but we have some articles explaining the basics.
https://kb.mccdaq.com/KnowledgebaseArticle50721.aspx
https://kb.mccdaq.com/KnowledgebaseArticle50723.aspx
-
DAQman got a reaction from mzlatinov_erg in USB-2416 Digital I/O not available in InstaCal
The InstaCal digital IO test is not available for the USB-2416 series. I'm unsure why it was left out while other devices have it; however, instead of InstaCal, use our DAQami program to test the digital IO.
-
DAQman got a reaction from Fukuda in How to collect analog input data every trigger edge detection for USB-231
The External Trigger input is used to signal the start of data collection. What you need is a device that has an external clock input like the USB-1608G.
https://digilent.com/shop/mcc-usb-1608g-series-high-speed-multifunction-usb-daq-devices/
-
DAQman got a reaction from cjanand in Execution times using USB-DIO96H
National Instruments DAQ's are not compatible with InstaCal. Instead, they use Measurement & Automation Explorer.
We did not add artificial delays to the USB-DIO96H communication process.
-
DAQman got a reaction from cjanand in Execution times using USB-DIO96H
The USB-DIO96H is not a speedy device, and my test indicates that a single 8-bit port can be updated about 2600 times per second. I used a 32-bit C program with a while loop to write ones & zeros continuously for my test. To determine the update rate, I measured the output square wave which was about 1300 Hz (2600 updates).
-
DAQman got a reaction from ScottB in USB-1808X streaming latency
Our products are not designed to be control devices, we don't consider them real-time, and there is no published latency information.
-
DAQman got a reaction from Chandana Narayan in How to read all Port Values at once in USB 1024LS daq ?
getDioInfoFirstSupportedPortType is not part of the Universal Library, it is a utility function found only in the examples. The function to configure the direction of a port is ulDConfigPort(BoardNum, PortType, Direction). Your port types are FirstPortA, FirstPortB, FirstPortCL and FirstPortCH. To read an individual bit, use the ulDBitIn function with FirstPortA and bit numbers of 0 to 23. To read a port, use the ulDIn function and one of the four port types. It is not possible to read all four at the same time. The best you can do is to read them one after another. If you do this, expect a 10mS time skew between each read.
The following is a link to the Linx C UL Help for your device
https://www.mccdaq.com/PDFs/Manuals/UL-Linux/c/1024ls.html
-
DAQman got a reaction from Nils in DASylab. Get time difference in milliseconds.
Assuming you have a device like the USB-1608G, the digital input is too slow to record the pulses. But you could use two analog inputs to digitize the two pulses at a high sample rate. Connect the analog input signals to a Combi trigger module set to trigger using two signals. Set both the start and stop conditions to the rising edge. One signal will make the Combi output go high and the other will set it back low, producing a pulse. Then use the Pulse Analysis module to measure the pulse width. The whole thing will be clocked using the device time base, which can be set relatively high.
-
DAQman got a reaction from cjanand in DIO Board configuration
The attached file uses C# to demonstrate how to discover the device and how to program and update the ports. Use the DOut function to update all eight bits on a port and the DBitOut function to update a single line on any port. Note that DBitOut uses FirstPortA as the port type with bit numbers ranging from 0 to 95. The same holds for DBitIn. To run the attached code, use Visual Studio and create a 32-bit C# Console application that references our MccDaq dll. To add the reference, right-click references in the Project Explorer, select Add Reference, select Extensions, find, and select MccDaq from the list.
Program.cs
-
DAQman got a reaction from Nils in Scan Rate Error
The HW time base uses the USB-1208HS-4AO internal scanning circuitry to collect data at high speeds. DASYLab and the SW time base are executed in a software loop, so their rate is limited.
I don't know how fast you can R/W a global variable. I use it primarily to reduce a faster input down to a slower module like the digital output.
-
DAQman got a reaction from cjanand in USB requires Product Vendor ID - USB-DIO96H
Hello,
The hexadecimal ID number for the USB-DIO96H is 0x92.
The USB-DIO96H-50, the ID is 0x95.
Attached is a copy of the ulprops.txt file.
Best regards,
John
ulprops.txt
-
DAQman got a reaction from Nils in Scan Rate Error
Hello,
The 16-bit port on the USB-1208HS-4AO does not have the high-speed scanning circuitry found on the analog input and output channels. Because of this, it is slow, usually less than 100 Hz, depending on the number of output lines. The module that proceeds the digital output will dictate the output speed. You should use the DASYLab time base for the analog input. Press the Measurement button on its setup dialog to change the time base.
The analog output can be fussy. Depending on the update rate, it will want block sizes that can be pretty large. The output's time base, rate, and block size must match the analog input. Try the following: Set the analog input time base to USB-1208HS-4AO Device1 - Input HW. Set the rate to 1000 Hz with a block size of 5000. Set the analog output time base to USB-1208HS-4AO Device1 - Output HW. Set the rate to 1000 Hz with a block size of 5000. You will see a lag between the input and the output; it won't be simultaneous.
Because there is one analog input time base, if you configure it for analog output, your digital output will generate an error. A way around this issue is to write the analog input value to a global variable. Then use a global variable read module to send the value to the digital output. This separation will allow the analog input to run faster while maintaining the slow speed required by the digital output.
If this is your first day with DASYLab, you unknowingly stepped into one of the more difficult DASYLab topics: time bases.
Best regards,
John
-
DAQman got a reaction from Marc Pearlman in Multiplexing Time Delay on the MCC USB-1608GX
Hello,
The USB-1608GX has a single ADC with multiplexed channels and because of this, there will be a phase difference from channel to channel. The amount of time between each channel depends on the aggregate sample rate. For instance, four channels times 62.5k S/s is 250k S/s. To figure the time between each channel, take the inverse or 1 / 250k or 4uS. At 500k S/s, it's 2uS. The USB-1608GX can run in one of two modes: Burst and non-Burst. Burst Mode forces the device to rapidly sample the channels irrespective of the sample rate. The only way to take advantage of Burst Mode is to create a C or Python program using the Universal Library. MCC's higher-level programs, like DAQami, TracerDAQ, DASYLab, or LabVIEW, cannot enable it.
There is a downside to Burst Mode. Switching from channel to channel at a high rate reduces the channel settling time. If the connected signals have an output impedance of 100 ohms or less, it is usually not a problem. However, large output impedance sensors, such as resistor dividers, can cause crosstalk between channels because they require more settling time.
Best regards,
John
-
DAQman got a reaction from AlvyAhmed in How can I upgrade the QuickDAQ software's license from FFT Analysis option to Advanced FFT Analysis option?
Hello,
Please get in touch with our Data Translation distributor for India: https://www.mccdaq.com/templates/distributor.aspx?cid=18. I'm pretty sure they handle sales for Bangladesh.
Best regards,
John
-
DAQman got a reaction from Valid in USB-1608G -10V on all channels
What you described is a normal operation. The USB-1608G is designed to work with low-impedance (<100 ohms) sources. Open or unconnected channels are high impedance. This causes the inputs to charge to some unknown voltage (-10v sounds right). Connect the other 15 channels to AGND to simulate a low-impedance source. If you do this, you will not see an image of the 16th channel on them.
Best regards,
John
-
DAQman got a reaction from F. Y. in Analog outputs cannot calibrate back to 0
The analog output accuracy is about 1.8mV plus 0.083% of reading. When set to 5.0 volts, the accuracy is 1.8mV + 0.9mV. When set to zero, if your multimeter reads higher than 1.8mV and is less than a year old, I can arrange for free factory calibration. Otherwise, the USB-1808X fee is about $150.00. What is the make and model of your multimeter - I would like to check its accuracy too.
As for calibrating the device yourself, Measurement Computing chose not to add calibration functions to the programming interface. Instead, you could do something simple like check the offset and adjust each setting by that amount in your code.
Regarding the Python example, it is normal for the analog output to remain set to the last value. If it is a problem, add the code to put it to zero before the program exits.
-
DAQman got a reaction from Ron Byron in What value to use for MccService.DeclareRevision
Hello,
The original intent for DeclareRevision was so that we could make changes or fix bugs and not have to worry that we broke your program. However, we stopped managing it quite some time ago because no matter what you set it to, it returns 5.5, and GetRevision returns 5. One indication that this is true is the GetRevision function. It has a parameter for a VXD library, which was old Visual Basic 6 technology. I think you should use MccService.DeclareRevision(out revNum) where revNum = 6.73. It may not do anything, but later when someone reads your code, they'll know you had InstaCal 6.73.
Best regards,
John