《用MATLAB和Visual+C混合编程及应用.pdf》由会员分享,可在线阅读,更多相关《用MATLAB和Visual+C混合编程及应用.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、文章编号:!#$%$($&()&!%&)%&(工程应用用!#$%和&()*+,*混合编程及应用庞承宗,李宝树,王晓云(华北电力大学 电力系,河北 保定!&()-./01!#$%*21&()*+,*30450*6*21 78(99+:*842+,-./0123%4523,67 895%:0;,95%?;2(-5A0/029 BC1DAD+5E1 F2G1:A?,895H23!&(,/029)收稿日期:$&$%!&%$I/(80*:8:J01 K2DKC1:92H A01 0?LH K539MM23 M1A05H 5NO,J6,8 92H P/*A05;30 O,J6,8,+7 92H
2、 O,J6,8D5MKC1:91 2A5H;D1HQ A0 92 1R9MKC1 5N D9CC23 A01 K5E1:K1DA;M H12:A?N;2DA52 2 A01 O,J6,8 A55CL5R,A01 0?LHK539M M1A05H:CC;:A9A1H;AC423 A01 O,J6,8 12321:A1D02S;1Q 7A:05E:A09A D5MKC?23 A01 K539M L?A01 E9?5N:A9AD 2A1%C2T931 D92 L1 129LC1HQ;R%C923;931 K539M;12321;D5MKC1摘要:论述了通过 O,J6,8 应用程序接口(,+7)和 O
3、,J%6,8 编译器实现和 P/混合编程的原理与方法。以 O,J6,8工具箱中的功率谱密度函数的调用为例,分析说明了利用O,J6,8 引擎技术与 P/互连,实现复杂程序的编译,并介绍了以静态链接库的方式编译程序,保证了程序的通用性。关键词:O,J,68;P/*混合编程;引擎;编译器中图分类号:J+(!文献标识码:,O,J6,8 是美国 O9A0:;9C/*是美国 OD5:5NA 公司推出的可视化/*编程环境,P/*U&是目前功能最强大、最复杂的软件开发工具之一,具有许多先进特性,被广泛应用于 2H5E:($位平台的基础应用程序开发。P/可以很容易实现菜单、工具条等,具有强大的图形界面编程能力,
4、而且最后可以生成脱离 P/环境而独立运行的应用程序。然而当使用它来完成如小波分析、信号处理、绘制图形等功能,就需要用户自己去编写函数,非常繁琐,很不方便。而O,J6,8 虽然具有强大的工程计算功能和丰富的工具包,但界面编写功能简单,不能满足一些用户的要求,而且它不能脱离其编程环境运行。因此,可以采用 O,J6,8 和 P:;9C/*混合编程,各取所长,实现功能互补。!O,J6,8 编译器和 P/互连编程O,J6,8 编译器是 O,J6,8 系统扩展的重要组成部分,用户可以利用此编译器把 O,J6,8 的 O文件转化成/或/*语言的源代码。)U(版之后的O,J6,8 含有的编译器为$U&版本,其
5、主要功能有!:9Q 产生可构造 OB=文件的/语言源代码;LQ 产生/或/*源代码,这些源代码与其他模块相结合,可以形成独立的外部应用程序,该程序可以脱离 O,J6,8 运行环境,但需要 O,J6,8/或/*数学函数库的支持;DQ 产生和 VM;C2T 配合使用的/OB=的 V 函数,可以提高 V 函数的运行速度。其中可以利用前$种类型实现和 P/互连。在使用 O,J6,8 编译器之前,需要对其进行两方面的设置。首先,根据外部编译器的类型、软件位置对 O 编译器进行设置。方法是,在 O,J6,8 命令窗中运行M1R%:1A;K,然后根据屏幕提示选择合适的/或/*编译器,并完成配置。当外部编译器
6、类型、版本或路)W!$&(电力科学与工程B6B/JX7/+YBX V/7B-/B,-Z B-.7-BBX7-.径发生变化,可随时根据需要再次进行配置。然后,为产生独立外部应用程序进行预配置,并对!#$%&数学函数库进行选择。同样,在!#$%命令窗中运行()*+,-./0)1,根据屏幕提示进行配置。该配置也可以随时根据需要修改。在配置完!#$%编译器之后,就可以利用该编译器实现和 2&互连了,方法有以下 3 种。(4)!56 文件!56 文件是!#$%系统的外部程序调用接口,是用&语言或 78909:;语言编写,通过!#-$%的应用程序接口(*;,8?.平台下表现为,+文件。因此,转换后的!56
7、 文件既可在!#$%环境下运行,也可脱离!#$%环境以,+文件形式被其他程序调用。通过这一途径可以实现 2&与!#$%混合编程。(3)可独立运行的程序用!#$%编译器 AA 命令,选择合适的参数选项(各参数功能如表 4 所示)3,就可以把输入的!文件转换成需要的&共享库或&B&CC 的源代码,再经过&B&CC 编译器,生成独立的应用程序。表 4编译器 3D 参数选项功能一览表参数选项功能描述-E将!文件编译链接为&的!56 文件-将!文件转换为&源代码并编译链接为独立的可执行文件-1将!文件转换为&CC 源代码并编译链接为独立的可执行文件-F(大写)将!源代码的 F 函数文件编译链接为&!56
8、 形式的 F 函数。以上程序如果在 2&环境下编译通过,还需要几个库文件+*;(G*+/,+,+*(:0+(,+,+*(AA,+,+*(E,+的支持,建议采用静态链接的方法实现。3用!#$%引擎与 2&互连如果用&B&CC 语言实现矩阵计算、求逆、奇异值分解或进行快速傅里叶变换(77#),是很复杂的,而!#$%的基本数据单位就是矩阵和向量,并且具有功能强大的库函数,调用!#$%实现相应功能很简单。这样,用 2&作前台界面,!#-$%作后台分析计算,就可以扩大编程的灵活性,缩短软件开发时间。!#$%自身提供了=(应用程序接口)来实现与其他程序的通信,该=支持的功能主要有3::H 在!#$%程序中
9、调用已有的&或 789-09:;语言程序;(H 在不同应用程序之间传递数据;AH 建立!#$%程序与其他程序的主从关系;,H在&或 78909:;程序内调用!#$%函数。!#-$%*;,8?.平台下,这一过程通过 A0*J/6 通道实现与!#$%通信,这种方法不要求链接整个!#$%,只需要载入!#$%引擎库,节省了大量的系统资源。!#-$%引擎库中提供的主要&语言调用函数见表 33。表 3支持&语言程序的!#$%引擎函数函数名功能5;IK1/;打开!#$%引擎5;I&+8./关闭!#$%引擎5;I)099:L将数据送入!#$%引擎5;IM/099:L从!#$%引擎中取出数据5;I5J:+F09
10、*;I在!#$%引擎中执行输入的!#-$%命令5;IK)01)0%)GG/9产生一个缓冲区以保存!#$%的输出N2&和!#$%混合编程举例本例程序应用!#$%引擎技术实现与 2&的混合编程。软件编制环境为1?*;OP 第二版,2&CCQD,!#$%RN,2&与!#$%均安装在 5盘。(4)生成静态库文件在利用!#$%引擎实现 2&和!#$%混合编程时,为了保证程序的通用性,应该采用静态链接库的形式。而 3 个必需的!#$%库文件+*(/;I+*(和+*(E+*(在!#$%目录中没有,只有相关的动态链接库文件+*(/;I,+和+*(E,+,所以需要用这 3 个动态链接库生成我们所需要的库文件。可
11、以利用 2&自带的命令行编译工具+*(/E/来DQ电力科学与工程3DDN实现!,除此之外还需要#$%&(和一个动态链接库)*+,-./&,,这!个文件所在的目录分别为 0#1234*456 7#*89:68,#4;724#,JU56CG:D$N4#*#$+3()#$6#;O$G#$!+;F F定义一个引擎指针)(?339L!V NWAA;)(?339L!:MN V NWAA,!X V NWAA;,48-#)!/Y;543(#V/;#Z!/Y;#)#)#V/&/Y!#;F F打开 0?A?B 引擎,建立与 0?A?B 的链接F F为信号建立一个)(?339L向量#5(!(+V$GD+$(NWAA
12、)0*9GB4((TJ9$6*6936 0?A?B$G#$T);(#6(Y);V)(J396C48-0963#((Y,!/Y,)(QO?A);F F 为 0?A?B 变量名)(:6N9)(,TT);)2+L(2H93!))(6P3(),(2H93!)#),!/Y!*#_45(,48-);F F将变量 放入 0?A?B 环境$GP86?339L(+,);F F在 0?A?B 引擎中执行 0?A?B 命令$GO9:63#$G(+,T:MN V*#$(I&/!&Y!a/!);T);$GO9:63#$G(+,TL V:MN I!39$,$(*#_();T);$GO9:63#$G(+,T*8-+46(I
13、,Y,Y);T);$GO9:63#$G(+,T+46(,L);T);$GO9:63#$G(+,T6#6(加噪正弦曲线);T);$GO9:63#$G(+,T(9-(时间);T);$GO9:63#$G(+,TL9-(正弦值);T);$GO9:63#$G(+,TX V 556(L,Ia.);T);$GO9:63#$G(+,TPLL V X&!24$K(X)F Ia.;T);$GO9:63#$G(+,T*8-+46(I,Y,I);T);$GO9:63#$G(+,T5 V Y/!(/:YI=)FIa.;T);$GO9:63#$G(+,T+46(5,PLL(Y:YI9:63#$G(+,T6#6(加噪正弦波
14、功率谱);T);$GO9:63#$G(+,T(9-(b_);T);$GO9:63#$G(+,TL9-(幅值);T);:+(./);F F释放)(?339L内存)(C*634L?339L();)(C*634L?339L(:MN);)(C*634L?339L(X);$GJ4*(+);F F关闭 0?A?B 引擎(!)相关设置在编译之前,需要对 7J 编程环境进行设置。选择 44*1 c 4+6#4$1 c,#32643#*,分别把 0?A?B安装目录里的#$28,文件和#-文件的路径添加到7J 路径中。在本程序中,路径为:;)969-;(163$;#$28,和:;)969-;(63$;#-。编译链
15、接程序并运行,该程序在 7J 的环境下,按照 0?A?B 格式画出了一条添加噪声后的正弦曲线和功率谱曲线,实现了 7J 和 0?A?B 的混合编程。结论(Y)本文程序用7J编写前面板,通过引擎技(下转.a 页)Y.d Y电力科学与工程参考文献:!布罗章斯基#$火用方法及其应用#$北京:中国电力出版社,!%&$项新耀(工程火用分析方法#(北京:石油工业出版社,!%)(*朱明善(能量系统的火用分析#(北京:清华大学出版社,!%+(,王加璇(火用方法及其在火电厂中的应用#(北京:水利水电出版社,!%*(-王军,张定才,周光辉(实际制冷循环的火用分析.(郑州纺织工学院学报,),!(*):-*/-(&姚
16、立为(制冷与热泵系统的火用分析.(应用能源技术,),():!/*(0朱培根,虞维平,张晓松(热泵空调器节能火用分析及优化.(低温工程,),(-):-,/-%(+张永贵,胡亚范(热泵定义及火用效率及计算方法探讨.(节能与环保,)!,():!&/!+(%宋淑英(电厂热力循环的火用分析.(天津电力技术,!%0,(,):!/&(!)张洪波,王静(火用分析在小型热电站热电联产中的应用.(上海节能,)!,(-):,/,-(!周旭康(小型热电站热电联产火用分析及节能评价.(节能,),(!)):)/*(!徐绍红,杨秀琴,苗郁(在化工企业节能设计中应使用火用分析法.(平原大学学报,),!0():/(!*祝立萍,
17、龚义书(高炉能量平衡与火用平衡分析.(节能,!%,(0):-/+(!,王清照,程伟良,王加璇(火用在生态建模中的作用.(现代电力,!%0,!,(!):)/-(!-项新耀(火用传递方程及火用传递分析.(大庆石油学院学报,!%+,():0/!(!&王松平,陈清林,尹清华,等(火用传递规律.(华南理工大学学报,!%+,&(&):*)/*&(!0王松平,陈清林,尹清华,等(火用传递和转换规律的探讨.(华南理工大学学报,!%+,&(%):0/*(!+王松平(热火用传递的基本规律.(广西师范大学学报,!%+,!&(!):+/+&(!%项新耀(火用传递方程及火用传递分析.(油田节能,!%,(!):0/!()
18、吴志刚,魏琪,翁锦萍(1233 系统的火用分析.(江苏理工大学学报,),!():*/*+(!刘泽龙,金红光,林汝谋(整体煤气化联合循环火用(1233)损分布结构研究.(工程热物理学报,),!(&):&0&/&0%(赵旭,田贵山,徐廷相(整体煤气化燃气蒸汽联合循环的火用分析方法.(西安交通大学学报,!%,*(*):0&/+)(*王永青,陈安斌,闻雪友(456 循环的能量模型和火用分析.(热力发电,!%,(*):*!/*,,*&(,赵军,郑宗和,朱强(火用分析的发展与应用.(新能源,),(!):*%/,*(-郑宏飞,吴欲远(火用分析方法论.(西安交通大学学报,)!,-&(!):0-/+)(&程伟良
19、,王加璇(热经济学的辉煌发展.(热能动力工程,!%,!,():0%/+(作者简介:甄志(!%0+/),女,天津人,华北电力大学硕士生,从事热力设备及系统的仿真与自动化技术方面的研究;崔晓钢(!%0%/)男,山东烟台人,华北电力大学硕士生,从事热力设备及系统的仿真与自动化技术方面的研究;陈鸿伟(!%&-/)男,重庆人,华北电力大学动力系教授,从事煤燃烧及热力系统节能方面的!研究。(上接&!页)术调用#5675 信号产生函数和功率谱分析函数,非常简便地实现了信号的功率谱分析。()使用静态链接库方式编译程序,比使用动态链接库方式更能够保证程序的通用性。(*)利用引擎技术实现 83 和#5675 的混
20、合编程,可以缩短软件开发周期,提高软件编程效率,但程序运行的实时性较差,且不能完全脱离#56975 环境运行。参考文献:!刘质俭(#5675 应用程序接口用户指南#(北京:科学出版社,)(张志涌(精通#5675#(北京:北京航空航天大学出版社,)(*石波,陈淑珍,沈海鸥(83 与#5675 接口方法的剖析.(计算机工程,),&(*):%+/!)(作者简介:庞承宗(!%0+/),男,河北保定人,华北电力大学硕士生,从事现代电磁测量技术方面的研究;李宝树(!%-/),男,河北衡水人,华北电力大学教授,从事现代电磁测量、微机检测等方面的研究。-&:!电力科学与工程用MATLAB和Visual C+混
21、合编程及应用用MATLAB和Visual C+混合编程及应用作者:庞承宗,李宝树,王晓云作者单位:华北电力大学,电力系,河北,保定,071003刊名:电力科学与工程英文刊名:INFORMATION ON ELECTRIC POWER年,卷(期):2003,(1)被引用次数:10次 参考文献(3条)参考文献(3条)1.刘质俭 MATLAB应用程序接口用户指南 20002.张志涌 精通MATLAB 20003.石波.陈淑珍.沈海鸥 VC与 Matlab 接口方法的剖析期刊论文-计算机工程 2000(03)引证文献(10条)引证文献(10条)1.郭建龙.陈世元 一种新型基于Matlab/pdetoo
22、l的有限元前处理程序开发方法期刊论文-微电机 2007(11)2.关宏伟.钟伟红.吴飞青.李英道.孙荣春 滚动H控制在三容实验系统中的应用研究期刊论文-安徽电子信息职业技术学院学报 2007(1)3.于红博.于红霞.杨劼.查书平.陈钟荣 基于VC+和Matlab的双基地多普勒天气雷达反演风场系统设计期刊论文-计算机应用与软件 2006(2)4.莫江涛.王静文 基于MATLAB与Visual C+实现主应力的编程求解期刊论文-湖南工程学院学报(自然科学版)2005(3)5.祖向荣.徐燕.王素琴 电力市场发电公司竞价策略仿真模型期刊论文-华北电力大学学报 2005(1)6.孙荣春.关宏伟.徐抒岩 滚动H控制方法在非对称约束系统中的改进算法期刊论文-光学精密工程 2005(z1)7.黄素媚.王巧巧 Matlab与VC+结合使用浅析期刊论文-大众科技 2005(11)8.燕东升 智能液位控制系统可视化仿真平台的研制学位论文硕士 20059.秦振汉 神经网络专家系统在卫星故障诊断中的应用研究学位论文硕士 200510.孙荣春 基于LMI的滚动时域H控制在三容实验系统中的应用研究学位论文硕士 2004 本文链接:http:/