综合测控实验下内容摘要:

t real_T *)ssGetInputPortRealSignalPtrs(S,2)。 • double Fs=u1[0]。 //采样频率 • if( ADCardInit() != 1 ) //采集卡初始化 • { • ssSetErrorStatus(S,Can39。 t find the DAQCard!)。 • } • DAQ1(0x1, 5000, 1024*4 , buffer)。 //开启采集 Fs=5000 • pnum=0。 //初始化 buf指针位置 采集卡初始化及开启数据采集 : • if( u2[0] == 1 ) • DAQ1(0x1, Fs, 1024 , buffer)。 • else if(u2[0] == 2 ) • DAQ1(0x2, Fs, 1024 , buffer)。 • else if(u2[0] == 3 ) • DAQ1(0x4, Fs, 1024 , buffer)。 • else if(u2[0] == 4 ) • DAQ1(0x8, Fs, 1024 , buffer)。 • else if(u2[0] == 5 ) • DAQ1(0x10, Fs, 1024 , buffer)。 • else if(u2[0] == 6 ) • DAQ1(0x20, Fs, 1024 , buffer)。 • else if(u2[0] == 7 ) • DAQ1(0x40, Fs, 1024 , buffer)。 • else if(u2[0] == 8 ) • DAQ1(0x80, Fs, 1024 , buffer)。 • else • ssSetErrorStatus(S,channel number is wrong。 )。 • ADCardInit()是采集卡 DLL函数,作用是初始化采集卡。 如果初始化成功则返回 1,用于判断是否连上采集卡。 • DAQ1()函数为采集卡 DLL单通道采样函数,作用是启动采集卡进行单通道数据采集。 参数 1为采样通道,是以 8位 2进制数表示各个通道是否开启,如对通道 1进行采集,该参数即为: 0000 0001;同理,对 3通道进行采集,其参数为 0000 0100。 各通道对应关系分别为: • 0x1:通道 1 0x2:通道 2 0x4:通道 3 • 0x8:通道 4 0x10:通道 5 0x20:通道 6 • 0x40:通道 7 0x80:通道 8 • DAQ2( ch,Fs,len,buffer1,buffer2) 为双通道采样函数,第一个参数为通道号,和 DAQ1一样,同样是以 2进制数表示,如对 1, 2通道进行采集,该参数即为 0000 0011;对 3, 4通道进行采集,即为 0000 1100;下面是几组通道的对应关系 • 0x3:通道 2 0x0A:通道 4 0x0C:通道 4 • 0x11:通道 5 0x12:通道 5 0x22:通道 6 • 程序中使用位操作,首先获取采样通道号,例如 1和 2,将通道变量置 0,即程序中的: • unsigned char channel=0x00。 //初始化采集通道 • 用位操作方法,设置 channel的第 0位、第 1位为 1: • channel |= (1ch1)。 //设置采样通道 1(该例子中 ch1为 0) • channel |= (1ch2)。 //设置采样通道 2(该例子中 ch2为 1) • 第二个参数 Fs为采样频率;第三个参数 len为采样长度;第四、五个参数为两个通道的缓存区指针。 数据输出 • 数据输出在 mdlOutputs()函数内实现。 • int Length=1024*4。 //读取的 buffer长度 • const real_T *u2 = (const real_T *)ssGetInputPortRealSignalPtrs(S,1)。 • ReadDaq(u2[0],Length, buffer)。 //从采集卡读取 buffer • real_T *y = ssGetOutputPortRealSignal(S,0)。 //获取输出指针 • if( pnum = Length ) pnum=0。 //判断指针是否已满 • *y = buffer[pnum]。 //输出第 pnum个点的值 • pnum++。 //指针加 1 • • 函数 ReadDaq()作用是读取下位机 buf里的采样数据。 • 参数 1为通道号,分别为 18; • 参数 2为 buffer长度; • 参数 3为保存的 buffer指针。 • 退出采集卡:函数 ADCardQuit()是采集卡 dll函数,其作用是退出采集卡。 • static void mdlTerminate(SimStruct *S) • { • ADCardQuit()。 • } • 再次在 MATLAB的 Command Window中输入 mex ,完成数据采集卡的程序编写。 • 打开测试实验平台上的直流电源,打开通道 1的信号源,返回使用该模块形成的 ,将运行时间改为 inf,点击菜单栏上的 “ 保存 ” 图标,点击菜单栏上的 “ 运行 ” 图标,进行执行。 双击Scope可以查看采集的信号波形。 调用界面设计 • clf reset • set(gcf,39。 menubar39。 ,39。 none39。 ) • set(gcf,39。 unit39。 ,39。 normalized39。 ,39。 position39。 ,[,5])。 • set(gcf,39。 defaultuicontrolunits39。 ,39。 normalized39。 ) • %设置用户缺省控件单位属性值 • h_axes1=axes(39。 position39。 ,[,])。 • h_axes2=axes(39。 position39。 ,[,])。 • 有两轴对象和两个按钮对象。 • hpush1=uicontrol(gcf,39。 Style39。 ,39。 push39。 ,... • %制作 “ 采集 ” 按钮 • 39。 position39。 ,[,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。