- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
综合测控实验Simulink概论
综合测控实验(下);主要内容:
Matlab、Simulink 测控系统应用:Matlab、Simulink调用*.dll,结合PID算法,实现对外部设备的闭环控制
;Matlab/
Simulink;PWM 脉宽调制 实现调压 —— 直流斩波调压; 利用C写的S-Function执行步骤 ;*;*;S-Function模板创建DLL ;在mdlOutputs(SimStruct *S,int_T tid)函数中进行修改,将
real_T *y = ssGetOutputPortSignal(S,0);
替换为 real_T *y = ssGetOutputPortRealSignal(S,0);
Matlab命令窗口,输入:mex MyOn.cpp,可以看到出现了一个MyOn.dll文件
在simulink窗口下,新建一个mdl文件(可为mytemp1,mdl的文件名不能与sfunction的名字相同,即不能为MyOn,否则会出现命名冲突。)),向其中添加一个S-Function模块,双击模块,将其中的S-Function Name改为dll的文件名(不加后缀,也就是MyOn)。 ;; 输入输出设置及采集编程 ;标注输入输出设置: ;在该cpp文件mdlStart(SimStruct *S)函数中添加采集卡初始化以及开启采集任务。
const real_T *u1 = (const real_T *)ssGetInputPortRealSignalPtrs(S,0);
const real_T *u2 = (const real_T *)ssGetInputPortRealSignalPtrs(S,1);
const real_T *u3 = (const real_T *)ssGetInputPortRealSignalPtrs(S,2);
double Fs=u1[0]; //采样频率
if( ADCardInit() != 1 ) //采集卡初始化
{
ssSetErrorStatus(S,Cant 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通道进行采集,即为000
文档评论(0)