目标模块

更新时间:2022-10-25 11:22

目标模块是指用C语言编程时,通常要建立一些用户函数。如果这些函数具有通用性,一般的方法是将它们作成头文件,当需要时用“#include”命令将其包含到源程序之中,以提高编程效率。

概念

目标模块在特定的程序中一般仅使用这些函数的一部分,若用上述方法包含所有函数,无疑会使源程序变得庞大而难于理解,并会影响编译和执行效率。建立用户目标模块库可以解决这个问题,当把一个程序与一个库连接时,连接程序将扫描该库并自动选择当前程序所需的模块。

TurboC2.0提供的TLIB.EXE是管理目标模块库的实用程序。用户建立自己的目标模块库,需要以下几个步骤:

1.编写C语言源程序。源程序中不要定义main函数,而只包含其它若干个函数的定义。为了叙述方便假设源文件名为ABC.C。

2.编译源程序。注意,只进行编译,不要连接。若源程序有错误,经修改之后再编译,直到最后通过为止。这时系统就在指定的目录中建立了与源文件相对应的目标文件:ABC.OBJ。

3.建立用户目标模块库。在DOS提示符下直接运行TLIB,TLIB命令行的一般格式如下:

TLIBlibname[/C][/E][commands][,listfile]

libname:要建立的用户目标模块库,缺省的扩展名为.LIB

/C:大小写敏感标志。该选项不常用。

/E:建立扩展字典。建立扩展字典可以加速大的库文件的连接过程。

Listfile:建立列表文件。列表文件按字母顺序将库中各模块列表,为文本文件,可用DOS的TYPE命令查看。例如,用目标文件ABC.OBJ建立用户目标模块库ABC.LIB,并获取列表文件ABC.LST,命令行如下:

TLIBABC.LIB+ABC.OBJ,ABC.LIB

如果用户又编写了新的函数,通过编译之后同样可利用上述方法将其加到用户目标模块库ABC.LIB之中,命令为:

TILBABC.LIB/E+A.OBJ+B.OBJ+C.OBJ

在上面的命令中,假设A.OBJ、B.OBJ、C.OBJ是用户函数模块。命令中的/E参数表示建立扩展字典。

如果要用ABC1.OBJ模块代替ABC.LIB中的ABC.OBJ模块,并在屏幕上显示经替换后的ABC.LIB库中的模块列表,可这样实现:TLIBABC.LIB-ABC.OBJ+ABC1.OBJ,CON(CON为DOS的设备文件名,在这个命令中表示显示器)。

在Navigator,似乎更容易将目标模块(ObjectModel)视为Javascript的一大功能。它的句法是Javascript,而各种Objects的集合看上去、使用起来都象是ArrayObjects(队列对象)。对大多数人来说,一个页面的ObjectModel和Javascript没有本质的区别。

微软推出了IE4.0。笔者本人就十分倾向使用这种浏览器,IE4.0的DOM是多数人选择IE浏览器的其中一个原因。

IE4.0将ObjectModel从语言中分离出来,并将之纳入到浏览器里。它不是说具有一种语言,能将不同目标对象放到一个页面上,而是具有这种浏览器,能够提供页面的结构和显示,并将这类信息通过程序语言或编纂组件以便于阅读和管理。你没有必要指定div标签在Javascript的位置,只需弄清楚它在VBScript中位置有什么不同。

总之,利用Javascript管理HTML就跟利用VBScript进行管理一样简易。同样,跟利用Javaapplet,、利用ActiveX管理、利用Cobol一样简易。

同时,这种目标模块并不仅仅处理定位、图象、嵌入标签方面的问题,它还可以管理整个网页结构。因此,如果你想知道一个页面上有多少个标签,或者想将第五段落变成蓝色,或者想修改网页元素的CSS-P值,你只需如法炮制,管理控制这些Objects,你使用的语言就能达到你的目的。

分区方法

研究背景

法国电力公司提出的三级电压控制模式已在国内外得到广泛应用,取得了良好的效果。该模式中,二级电压控制是协调本地控制和全局控制的中间环节,起到了承上启下的重要作用。作为二级电压控制的关键组成部分,电压控制分区受到了诸多学者的关注。电压控制分区问题属于NP(Nondeterministic Polynomial)难题,分区方法主要关注满意解的求取,常用的方法如聚类分析和智能算法等,其中聚类分析因物理意义直观明确而得到了广泛的应用和研究。

电气距离的定义和最优分区的筛选是聚类分析的关键。文献提出了经典的电气距离定义,定义方式简洁、易于计算,在基于凝聚聚类、分裂聚类(如α分解)及模糊聚类的分区方法中得到广泛应用,但该定义将所有节点设为PQ节点,没有突出无功源的控制特性;基于控制空间的电气距离定义成为趋势。该定义相比文献的定义更详细地刻画了无功源的电压控制特性,但 涉及多维数据。而文献指出,随着系统规模增大,聚类数据的维度增大,该定义对节点耦合程度的辨识能力会变差,导致聚类结果不准确甚至错误,即产生“高维聚类问题”。

多层次电压控制分区方法

本文利用数据降维的思想处理高维聚类问题。在电力系统中,一个节点通常与其附近的若干节点电气联系紧密,可看作一个节点簇。由于每一簇节点的电压特性可由其中枢节点的信息表征,若保留中枢节点的信息而略去其余节点的信息,可大幅降低电压控制向量的维度,从而提高聚类准确性和计算效率。据此本文提出了基于多目标模块度的多层次电压控制分区方法,如图1所示。多层次框架分为以下3个阶段。

a. 化简阶段:通过聚类找出节点簇,识别中枢节点,将系统原拓扑G0=(VT0,E0)(VT0为图G0节点集,E0为边集)逐步简化至Gk=(Vk,Ek),电压控制向量维度降至设定水平。

b. 分区阶段:基于简化后的系统,首先形成初始分区,再按各分区之间的电气联系逐步凝聚分区,并根据 M鄱选出最优方案。

c. 还原调整阶段:将分区阶段得到的简化后系统分区方案还原为原系统方案,适当调整边界节点的区域归属,进一步优化分区质量,得到最终分区方案。

研究结论

研究了区域电压的可控性和解耦性,提出了无功源节点电气距离定义以及评价电压控制分区质量的多目标模块度指标,在此基础上利用多层次分区方法对系统进行分区。IEEE118节点系统算例验证了本文方法的有效性,分区方案的区域内部联系紧密,区域间解耦程度较高,保证了区域内部连通性,符合分区原则。若干大系统算例测试表明,通过“化简-分区-还原调整”机制,多层次分区方法可以有效地处理高维聚类问题,降低问题规模,使算法以较高的计算效率得到高质量的分区方案,对于大系统电压控制分区和在线分区等问题有一定价值。

应用流程

研究背景

随着电子技术的不断进步,特别是3C(计算机、通信、消费电子)的飞速发展,电子设备日趋数字化、小型化和集成化,嵌入式芯片逐渐成为设计开发人员的首选。DSP作为嵌入式芯片的典型代表之一,在信息产业领域得到了广泛应用。

DSP虽然为3C产品的开发提供了很好的硬件支撑平台,但设计者仍得花费一定的时间去掌握DSP内部各种寄存器的正确设置、软件编程方法以及控制算法设计,这必然会增大产品开发难度,延长产品开发周期, 从而影响开发效率。Matlab公司最新推出的针对DSP应用控制系统而开发的嵌入式目标模块Embedded Target for TI C2000 DSP即可解决上述问题,用户通过使用该模块,不仅可以进行电路的系统级仿真,还可编译生成相应的C语言代码,并下载到目标板,直接运行程序,进行算法的探索与设计思路的验证,提高开发效率。

DSP的特点及开发应用流程

作为一种专用的集成开发环境,Matlab公司最新推出的Embedded Target for TI C2000 DSP开发平台能够让设计人员直接进行(半)实物仿真、算法的探索与研究,以及产品可靠性的验证,从而有效地减少了设计开发过程中的消耗,加快了原型开发的速度。该平台有如下几个优点:

1)在TI C2000 DSP上自动测试、执行Simulink仿真模型;

2)提供模块化的系统和功能,比如PWM、ADC、CAN以及目标板载内存等;

3)生成文档化的易读可编辑的C语言代码,并生成Code Composer Studio项目文件 ;

4)在F2407 eZdsp评估板和F2812 eZdsp评估板上进行自动化实时测试;

5)对TI推出的IQmath Library提供模块化的支持,可以用于仿真和代码生成 ;

6)可以进行定点系统的设计、仿真、自动定标和代码生成工作。

Embedded Target for TI C2000 DSP 提供了将MATLAB和Simulink与TI eXpressDSP工具、TI C2000DSP控制器集成在一起进行系统开发的手段。通过Real-Time Workshop和TI的开发工具将Simulink模型转变为实时C代码,这样就可以利用这些产品在TI C2000 DSP系统上(如F2812 eZds评估板和F2407 eZdsp评估板等)实现自动代码生成、产品原型和嵌入式系统实现,并可实时进行算法验证,极大地提高了开发效率。另外,该模块还有强大的可扩充能力,用户可以增加自己的代码、中断服务程序、IO设备驱动到CCS(Code Composer Studio)的工程项目中,这样就可以直接驱动自行开发研制的控制板卡或第三方的硬件设备板卡,完成产品的设计。采用该平台,开发人员不用编写一行代码,就可以完成几乎所有设计、仿真和编程下载的工作,整个开发流程如图2所示。

DSP应用实例

数字式逆变器采用单相半桥逆变结构,逆变控制器核心芯片选用TMS320F2812,输出两路 SPWM,EXB841 模块作为SPWM信号的驱动放大器,控制开关采用全控器件IGBT,输入电压311V,输出电压为100V(有效值),开关频率为10kHz,逆变输出电压频率为50Hz。逆变控制器的系统原理及接口框图如图3所示,逆变系统的电流和电压通过电压霍尔传感器和电流采样电路分别检测出来,送入模拟信号处理电路中进行模拟滤波处理和幅值调整,处理后的信号送入DSP芯片之中,经过 DSP片内的12位A/D转换模块,变为数字信号,DSP对信号进行数字滤波后,判断单相半桥的输出电压、电流是否过压或过流,并采取相应的保护措施;再根据控制算法进行处理,通过DSP片内的PWM输出模块,得到所需要的两路SPWM波形信号,经过EXB841驱动放大模块进行处理,最后对IGBT逆变半桥进行控制,从而实现直流-交流的逆变。同时还利用DSP片内的CAN2.0B模块,保留一个对外的CAN网络接口,便于使用网络通信对数字逆变控制器进行实时控制和监测。

在Matlab下输入c2000lib命令,可以显示Embedded Target for TIC2000 DSP所能够支持的各种DSP功能模块及相关信息。仿真时,主要利用Embedded Target for TI C2000 DSP所提供的C28X ADC、C28X PWM以及Mailbox子模块。如图4所示,系统利用A/D转换模块,将采集到的逆变电流和电压作为SPWM 输出的控制源。并通过CAN通道1将A/D转换值以及PWM输出占空比输送出来,同时还可以通过CAN通道0接收来自于网络上的通信命令,执行相应的子程序。C28XADC模块在功能上完全等同于TMS320F2812的12位A/D转换模块,可以选择合适的模拟输入通道。C28X PWM模块在功能上完全等同于TMS320F2812事件管理器中带死区的全比较单元模块,同样可以选择定时器、PWM 输出单元、PWM引脚极性以及设置死区时间。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}