您当前的位置:五五电子网电子知识电工技术电工文摘VB与V混合编程在电机设计中的应用 正文
VB与V混合编程在电机设计中的应用

VB与V混合编程在电机设计中的应用

点击数:7417 次   录入时间:03-04 11:52:37   整理:http://www.55dianzi.com   电工文摘
 摘  要 本文首先介绍了VB与VC混合编程的优点,然后通过几个实例说明
了VB与VC混合编程在电机设计程序编制中的应用。  
    关键词 电机设计 VB与VC混合编程 动态链接库


1 引言
  VB以其强大的图形界面和简单的语法深受工程技术人员的欢迎,VB可以方便灵活地处理电机设计中的绝大部分数据,但也有一些数据结构在VB中的表达比较困难;VC目标代码的简洁高效远非VB所能及,但VC难度较大学习周期长,使用起来不方便,在很大程度上掩盖了其本身的优点。利用VB与VC混合编程来编制电机设计程序可以充分发挥两者的优点,提高电机设计程序的执行效率和程序编制的灵活性。
2 电机设计中使用VB与VC混合编程的优点
  电机设计程序中要处理的数据量很大,单纯地使用VB编制会因其语法的限制使整个电机设计程序的代码变得冗长,同时也会使程序的可读性与执行效率明显变差,甚至于某些代码的表达会十分困难(如大型的数组);如果单纯地使用VC,在代码的可读性及程序的整体运行效率上会得到相当程度上的改善,但VC对程序编制人员的编程素质的要求过于严格,在编制程序的过程中会使编程人员将过多的精力放于VC程序的编制而不是电机设计本身上。使用VB与VC混合编程会使上述问题得到很好的解决。
  VB与VC混合编程在以下几个方面表现出一定的优势。  
2.1 大型数组的处理
  电机设计中的数据常以数组的形式在程序中存在,数组的操作在编制电机设计程序中有着十分关键的地位。数据结构中,数组与指针有着密切的联系。利用指针,VC能以其强大的数据表达能力高效简洁地完成对大型数据的操作。而VB对指针的使用有很大的限制,在VB中只允许使用传递向动态链接库的指针,VB不允许VB内部的指针的传递[1]。在VB中,对于数组的操作通常是通过数组的下标来完成的,这从本质上决定了其效率不会太高,即便是勉强实现,也会因语法的限制而使代码冗长。而且VB对多维数组的支持并不尽如人意,在VB中对多维数组的操作通常是通过一维数组间接进行,这样直接导致对多维数组的操作难度的增加。采用混合编程的方法在VB中使用VC来处理多维数组可以使数组的处理效率得到最大限度的提高。
2.2 迭代和优化设计中的应用
  对于电机设计中常用的循环和迭代程序,其重复执行的次数很多,如果使用VB编程,其效率问题会相对突出。这直接受制于VB对可执行代码的优化能力和VB的语法特点。采用好的程序结构会在一定程度上改善这一问题,但很难达到VC代码执行的效率。
  同样的问题也体现在电机的优化设计中。一种优化算法的效率是衡量其性能的重要指标,VB因代码特点使得优化算法的空间代价和时间代价[2]均会在不同程度上变大,并直接导致程序的执行效率较差。在VB编制的电机设计程序中,如采用VC来编制电机的优化程序,会最大可能地提高优化程序的效率,发挥优化算法的最佳性能。同时由于使用VB编制电机设计的主程序,使得电机设计程序的代码难度较低,可以由编程基础不是太好但电机设计经验丰富的电机设计人员来编写这部分代码。而优化代码因其通用性较强,而且对其优化效率有较严格的要求,可组织专业的编程人员来编写。这样大大提高了电机设计程序编制的灵活性,也给多人合作编制大型的电机设计程序提供了可能,符合现代的软件结构思想。  
2.3 图形表达中的应用
  电机设计的后处理程序中常要求程序有图形表达能力(如电机槽形图),在复杂的电机CAD系统中甚至要求有更复杂的图形交互界面。VB的图形表达能力相对较好,而用操作简单,但效率却并不尽如人意。我们可以用VB完成对简单图形的表达,而用VC来做复杂的图形处理。这样能更好地发挥VB的图形表达能力与VC目标代码简洁高效的优点。在要求更为严格的场合下,我们甚至可以将整个的绘图程序分离出来用VC来实现,以保证程序的执行效率。  
2.4 代码的模块化与程序可重复使用的改善
  混合编程要求将程序划分为多个程序段,而且这些程序段之间有相当强的独立性。这些程序段不同于传统的子程序,它们与主程序之间有标准的接口,而且这种接口不受编程环境的制约,可以独立于编程环境和编程语言对这些代码进行调用。这能有效地避免代码在不同编程环境下的重复开发问题。
  通过VB与VC混合编程可以充分发挥VB与VC的优点,使VB编制的电机设计程序有更大的灵活性和更强大的功能。
3 实现方法
  在WINOOWs环境下可以通过多种途径实现VB与VC的混合编程。面向WINOOWs编程,微软公司提供了多种方法,我们可以使用自动化组件、动态链接库、ActiveX等多种方法。下面用几个实例来说明混合编程在电机设计中的应用。  
3.1 函数的实现方法
  考虑到电机设计的实际情况,比较常用的方法是在VC中编制动态链接库,在VB中对封装于动态链接库中的函数进行操作[3],从而实现VB与VC的混合编程。我们重点分析一下动态链接库对函数的实现。

  WINOOWs为电机设计程序的开发提供了更方便的手段,多数的WINOOWs编程工具都对DLL提供了支持。以电机设计中常见的插值函数为例,在传统的编程方法中,通常是把插值函数作为子程序供主程序调用,程序的结构可以用图1来表达。我们以面向对象的编程思想来观察图1中的流程图,会发现流程图中的子函数正符合DLL的特征。将图1中的程序结构按动态链接库的要求稍作调整就可以将子函数完全独立出来。图2将图1中的子函数按照动态链接库的接口要求封装起来,用DLL实现与图1中子函数相同的功能。即使在不同的开发环境中使用不同的编程语言也可以直接使用这些被封装在动态链接库中的函数。
  在实际的应用中我们用这种方法处理异步电机槽下部比漏磁导[4]的二元二次插值并取得了良好的效果。图3所示的曲线是在VB中调用动态库中的电机槽下部比漏磁导的二元二次插值函数的图形表达。

  在以VB实现的电机优化设计中,可以将运算量较大的迭代部分甚至整个优化程序用VC以上述方法封装成动态链接库。这样可以使迭代问题中所蕴含的优化算法与主程序相对独立,在保证代码执行效率得到提高的同时也从最大限度上实现了优化程序的通用性。  
3.2 电机设计图形表达与数据后处理的应用
  VB在处理图形方面有一定的优势,但VB的运算能力相对较弱。电机设计结果中的图形有严格的参数,其中也包含了大量的运算。在不使用第三方软件的前提下VB很难胜任这些复杂的运算,而配合使用VC则可以灵活地解决这些问题。
  VC是典型的面向对象的编程语言,我们可以充分发挥其面向对象的优势,以面向对象的方法来实现。以电机的槽形图为例,考虑到使用混合编程的方法,可以用面向对象的思想建立如图4所示的对象关系。在VC环境下建立相应的类,并在主程序中生成相应的对象,这样就可以用面向对象的方法实现电机槽形图的绘制。
  虽然图形处理程序相对复杂,但在混合编程中由于使用VC,用面向对象方法来实现并不太难。由于我们把这部分程序从VB中独立出来,在VB中图形的处理会变得像调用一个普通函数一样简单。在实际操作中VB与VC的接口的处理可以根据个人的习惯,用动态链接库和ActiveX控件均可方便地实现。
  图5为实际应用中生成的异步电机槽形图。程序采用VB与VC混合编程,绘图程序的核心代码用VC编写,以面向对象的方法来实现。在VC中开发ActiveX控件,在VB中对其引用,实际操作中收到了良好的效果。

4 结论
  VB与VC是两种强大的编程工具,VB因简单易学而深为电机设计人员所接受,但VB的代码执行效率低,数据的表达能力弱在很大程度上制约了电机设计人员的思维。VC虽然学习困难,但它却继承了传统的C的一系列优点。本文以VB与VC混合编程的方法解决了电机设计程序中几个较关键问题,充分发挥了这两种编程工具的优点,可使电机设计程序的编制有更强的灵活性。本文所提到的这几种方法均在实际工作中得到验证。

参考文献
1 Microsoft Corporation.MSDN.
2 殷人昆,陶永雷等.数据结构.清华大学出版社,1999.
3 余英,梁刚.Visual C++实践与提高.中国铁道出版社,2001.
4 陈世坤.电机设计.机械工业出版社,1997.


本文关键字:电机  电工文摘电工技术 - 电工文摘

《VB与V混合编程在电机设计中的应用》相关文章>>>