Specifications

Appendix A
S-function C-code
A.1 Analog In file
/*
Analog input S-function for:
United Electronic Industries
PowerDAQ board type: PD2-MF-16-500/16H
Input Fifo size: 1024 samples
CL FIFO Size: 256 entries
Output Fifo size: 2048 samples
Mfg. date: 01-JAN-2003
Cal. date: 21-NOV-2003
Firmware type: MFx rev: 3.31/30819
(c) Frederik Klomp, Februari 2005
*/
#define S_FUNCTION_NAME uei_pd2mf_ai #define S_FUNCTION_LEVEL 2
#include "simstruc.h" #include <math.h>
#define NPARAMS 6 #define BoardID ssGetSFcnParam(S,0) #define ChannelList
ssGetSFcnParam(S,1) #define Range ssGetSFcnParam(S,2) #define GainSet
ssGetSFcnParam(S,3) #define SlowBit ssGetSFcnParam(S,4) #define AcquiDelay
ssGetSFcnParam(S,5)
#ifndef MATLAB_MEX_FILE #include <stdio.h> #include <stdlib.h> #include <stdint.h>
#include <fcntl.h> #include <sys/io.h> #include <sys/mman.h> #include <sys/types.h>
#include <sys/time.h> #include <unistd.h> #include "win_sdk_types.h" #include "rtai.h"
#include "rtai_sched.h" #include "powerdaq.h" #include "powerdaq32.h" #endif
int i;
#ifndef MATLAB_MEX_FILE
static PWRDAQ_PCI_CONFIG pciConfig;
static DWORD RangeTypes;
int j;
int retVal = 0;
int board; // board number to be used for the AI operation
static int Handle; // board Handle
void* bar0Address;
int mem_fd;
unsigned long aiCfg;
int scanSize;
int range;
static double BitWeight;
static double Displacement;
static int Gain;
static int Delay;
//FUNCTIONS
#define CHAN(c) ((c) & 0x3f)
#define GAIN(g) (((g) & 0x3) << 6)
15