Difference between revisions of "626"

From Sensoray Technical Wiki
Jump to: navigation, search
(Migrating to PCI Express)
(Migrating to PCI Express)
Line 59: Line 59:
 
|-
 
|-
 
| Counters
 
| Counters
| 6: 24-bit w/latch
+
| 6 channels<br>24-bit resolution<br>24-bit sample latch
| 6: 32-bit w/16-deep FIFO and 32-bit timestamps
+
| 6 channels<br>32-bit resolution<br>sample FIFO (16-deep) with 32-bit timestamps
 
|-
 
|-
 
| GPIOs
 
| GPIOs
| 48: 40 w/edge detection (1 Msps), no debounce filters
+
| 48 channels<br>40 w/edge detection (1 Msps)<br>no debounce<br>not fail-safe
| 48: 48 w/edge detection (50 Msps), w/debounce & fail-safe outputs
+
| 48 channels<br>48 w/edge detection (50 Msps)<br>debounce filter<br>fail-safe outputs
 
|-
 
|-
 
| Analog out
 
| Analog out
| 4: 14-bit @ 20 Ksps
+
| 4 channels<br>14-bit resolution<br>20 Ksps<br>not fail-safe
| 8: 16-bit @ 900 Ksps, w/fail-safe outputs
+
| 8 channels<br>16-bit resolution<br>900 Ksps<br>fail-safe outputs
 
|-
 
|-
 
| Analog in
 
| Analog in
| 16: 16-bit @ 15 Ksps
+
| 16 channels<br>16-bit resolution<br>15 Ksps
| 16: 16-bit @ 300 Ksps
+
| 16 channels<br>16-bit resolution<br>300 Ksps
 
|-
 
|-
 
| Watchdog timer
 
| Watchdog timer
| Single w/4 selectable intervals
+
| Single stage<br>4 shunt-selectable intervals
| 3-stage w/fully programmable intervals
+
| 3 timer stages<br>software programmable intervals
 
|-
 
|-
 
| Fail-safe controller
 
| Fail-safe controller

Revision as of 09:55, 20 June 2017


Contents

C/C++ apps must call S626_DLLOpen

Why do I get null pointer exceptions when I call API functions?

Windows application programs written in C/C++ must call S626_DLLOpen before calling any other API functions; failure to do this will cause null pointer de-referencing when you try to call other API functions. The following example shows how to do this:

#include <windows.h>
#include "win626.h"

int main(int argc, char* argv[])
{
  switch (S626_DLLOpen()) {   // Open the API. MUST CALL THIS FIRST!
  case ERR_LOAD_DLL:
    printf("can't open s626.dll\n");  // check dll path
    return -1;
  case ERR_FUNCADDR:
    printf("dll function(s) not found\n");  // check dll version
    S626_DLLClose();    // Close the API.
    return -1;
  default:  // if dll was successfully opened ...
    S626_OpenBoard(0, 0, NULL, THREAD_PRIORITY_NORMAL);
    if (S626_GetErrors(0))
      printf("errors opening board\n");
    else {              // Board was successfully opened, so ...
      RunApplication();    // App can now call other API functions.
      S626_CloseBoard(0);  // Close board before app terminates.
    }
    S626_DLLClose();    // Close the API.
    return 0;
  }
}

64-bit Windows

I successfully built a 626 program for my 64-bit Windows 7 system but it crashes when it executes. What could be the problem?

The 626 works with 64-bit Windows, but only with 32-bit applications. When building your application, make sure the CPU target is selected as 32-bit or Win32.

Encoder errors

The encoder interface misses some encoder clocks, especially at higher rotation speeds.

This can be caused by slow slew rates on the encoder signals. Examine the encoder clock signals with an oscilloscope. If you don't see sharp, fast rise and fall times, you may need to add external termination or pull-up resistance to the clock lines to speed up the edges.

Migrating to PCI Express

When upgrading your system to PCIe, we recommend Model 826 as a replacement for model 626. The following table compares the interfaces on the two boards:

Interface 626 826
System bus PCI PCI Express
Counters 6 channels
24-bit resolution
24-bit sample latch
6 channels
32-bit resolution
sample FIFO (16-deep) with 32-bit timestamps
GPIOs 48 channels
40 w/edge detection (1 Msps)
no debounce
not fail-safe
48 channels
48 w/edge detection (50 Msps)
debounce filter
fail-safe outputs
Analog out 4 channels
14-bit resolution
20 Ksps
not fail-safe
8 channels
16-bit resolution
900 Ksps
fail-safe outputs
Analog in 16 channels
16-bit resolution
15 Ksps
16 channels
16-bit resolution
300 Ksps
Watchdog timer Single stage
4 shunt-selectable intervals
3 timer stages
software programmable intervals
Fail-safe controller None Integrated
Personal tools
Namespaces

Variants
Actions
Toolbox