MSVC技术原理及应用(论文)--修改
cmake+msvc编译指令

cmake+msvc编译指令CMake是一个跨平台的开源构建工具,主要用于管理和自动化软件的构建过程。
MSVC(Microsoft Visual C++)是微软开发的一款基于C++的集成开发环境。
本文将介绍使用CMake和MSVC编译指令的方法。
CMake是一个非常强大的构建工具,可以支持多种编译器,并且可以生成多种不同平台的构建文件。
在使用CMake和MSVC编译指令前,首先需要安装好CMake和MSVC开发环境。
一、安装CMake和MSVC开发环境1. 下载CMake安装包,并按照提示完成安装。
2. 下载并安装MSVC开发环境,确保系统已经配置好了MSVC编译器。
二、创建CMakeLists.txt文件在项目的根目录下创建一个名为CMakeLists.txt的文件,该文件用于定义项目的配置。
下面是一个示例的CMakeLists.txt文件:```cmake_minimum_required(VERSION 3.10)project(MyProject)set(CMAKE_CXX_STANDARD 11)# 添加源文件set(SOURCE_FILES main.cpp)# 添加可执行文件add_executable(MyProject ${SOURCE_FILES})```上述示例中,通过cmake_minimum_required命令指定了CMake的最低版本要求,project命令定义了项目的名称,set命令定义了项目使用的C++标准版本,set命令添加了项目的源文件,add_executable命令定义了可执行文件的名称。
三、使用CMake生成构建文件1. 在项目的根目录下创建一个名为build的文件夹,用于存放生成的构建文件。
2. 打开命令行终端,进入到build文件夹所在路径。
3. 使用以下命令生成构建文件:```cmake ..```该命令表示在当前路径下搜索CMakeLists.txt文件,并生成构建文件。
MSVC

情 况 下 ,系 统 需 从 电 网 吸 收 的最 大 无 功 为 8 0 0 0
k V A R, 最小 为 3 0 0 0 k V A R。 3 ) 1 1 0 k V母 线 功 率 因数 。 由于 电铲 、 地 面生 产
1 . 2 5 %/ 3 8 . 5±5 %/ 6 . 3 k V变压 器 , 1用 1备 ; 1 1 0 k V 电源 进 线 两 回 ,取 自锡 林 浩 特 市西 郊 1 1 0 k V变 电
了基 础 。
关键 词 : 无功 补偿 ; MS V C技 术 ; 效益分析
中图分 类号: T D 6 1 3 文献标 志码 : B 文章编 号: 1 6 7 1—9 8 1 6( 2 0 1 5 ) 0 2— 0 0 7 2— 0 3
Appl i c a t i o n o f MS VC t y pe d y na mi c r e a c ive t po we r c o m pe ns a t i o n d e v i c e i n o pe n- - pi t c o a l mi ne po we r s upp l y s ys t e m
在变 电站 二楼 3 5 k V配 电室 内 。 6 k V侧接 线方 式为 单母 线 分段 , 6 k V配 电设 备采 用铠 装 移 开式 户 内交
结论 : ① 本 系统所 有母 线 电压波 动不 大 , 电压水 平正
常, 系统 较平 稳 ; ②本 系统 所有 母线 段母 线 电压 谐波 畸变较 小 , 在 国标 规 定 的合 理 范 围内 ; ③ 本 系统 所 有
何 涛
( 神 华北 电胜 利能源有 限公 司, 内蒙古 锡 林浩特 0 2 6 0 0 0 )
msvc 增量编译

MSVC 增量编译1. 什么是增量编译增量编译是一种编译技术,它只重新编译发生了变化的源代码文件和相关依赖文件,而不是对整个项目进行重新编译。
通过只编译发生变化的部分,可以显著提高编译速度,减少开发过程中的等待时间。
传统的编译方式是将所有的源代码文件一起编译成目标文件,然后再链接生成可执行文件。
当项目较大时,每次修改源代码都需要重新编译整个项目,这对于开发效率来说是非常低效的。
而增量编译则只编译发生变化的文件,可以大大减少编译时间,提高开发效率。
2. MSVC 编译器MSVC(Microsoft Visual C++)是微软公司开发的一款C++编译器,它是Visual Studio开发环境的一部分。
MSVC编译器支持增量编译,可以在开发过程中利用增量编译来加快编译速度。
3. MSVC 增量编译的原理MSVC增量编译的原理是通过比较源代码文件的时间戳和目标文件的时间戳来确定源代码文件是否发生了变化。
如果源代码文件的时间戳晚于目标文件的时间戳,说明源代码文件发生了变化,需要重新编译;如果源代码文件的时间戳早于或等于目标文件的时间戳,说明源代码文件没有发生变化,可以跳过编译过程,直接使用已编译的目标文件。
MSVC编译器会在编译过程中生成一个增量编译数据库(IntelliSense database),用于记录每个源代码文件和目标文件的时间戳。
当进行增量编译时,编译器会根据数据库中的时间戳信息来判断哪些文件需要重新编译。
4. 如何使用 MSVC 增量编译要使用MSVC增量编译,需要满足以下条件:•使用支持增量编译的版本的MSVC编译器。
通常,Visual Studio 2015及更高版本都支持增量编译。
•在项目属性中启用增量编译选项。
可以在项目的属性页面中的“C/C++”选项卡下找到“增量编译”选项,并将其设置为“是”。
•确保项目的设置允许增量编译。
有些项目的设置可能会禁用增量编译,例如使用了预编译头文件(PCH)或使用了特定的编译选项。
qtmsvc和mingw语法

qtmsvc和mingw语法Qtmsvc是一个Qt的辅助工具,它提供了一些辅助Qt开发的功能。
它被用于Qt的元对象工厂、信号和插槽列表、Runtime Type Information的支持以及Qt的动态属性系统中。
Qtmsvc的功能非常关键,有很多开发者都使用它来编写Qt应用程序。
它可用于执行以下工作:1.生成Moc文件当我们在Qt中定义了一个类并使用信号和插槽时,Qt需要将这些信号和插槽存储为元对象。
Qtmsvc通过为每个Qt类生成一个Moc文件来完成这项工作。
Moc文件包含了元对象。
2.支持Qt的运行时类型信息(RTTI)Qtmsvc提供了关于Qt类的运行时类型信息。
RTTI是一个C++特性,它能够在运行时确定一个对象类型,并允许使用dynamic_cast运算符来验证是否支持继承关系。
Qtmsvc的RTTI支持使得用户能够使用运行时类型信息来检查和转换Qt对象。
3.为动态属性添加支持Qtmsvc为Qt提供了动态添加属性的机制。
这种属性是在编译时期不存在的,可以在运行时被添加。
它们可以用于数据绑定和一些其他的任务。
Qtmsvc与Mingw有什么关系?Mingw是Windows下的一个GNU C/C++编译器集合,它可以生成Windows平台上的可执行文件。
Qt常常使用Mingw来编译和构建应用程序。
在Qt中使用Mingw编译器时,Qtmsvc也被用来生成Moc文件。
它是Qt开发所必需的一个工具,可以帮助开发者在Windows环境下使用Mingw编译器构建Qt应用程序。
总结Qtmsvc是一个用于辅助Qt开发的工具。
它提供了元对象工厂、信号和插槽列表、Runtime Type Information的支持以及Qt的动态属性系统。
Qtmsvc与Mingw也密切相关,它作为Qt开发的辅助工具,帮助开发者在Windows环境下使用Mingw编译器构建Qt应用程序。
MSVC介绍ppt

MSVC原理概述: 1、MSVC技术原理:
应用磁控电抗器实现系统无功功 率的动态跟踪、无级连续的补偿,简 称MSVC 。 装置由补偿(滤波)支路(SVC) 和磁控电抗器(MCR)支路组成,两 个支路并联连接。
MSVC原理概述: 2、系统组成:
补偿(滤波)支路经隔离开关固 定地接于母线,通过调节磁控电抗器 的输出容量(感性无功),实现系统 容性无功功率的连续补偿。与其他补 偿技术的主要区别,在于应用了磁控 电抗器技术,故下面集中对新型磁路 并联漏磁自屏蔽式可控电抗器(MCR) 技术,进行介绍。
励磁电流的大小取决于可控硅控制 导通角а,а越小产生的励磁电流越大, 使电抗器处于励磁程度低的区域铁芯 的磁化程度加强,同时,使处于励磁程 度高的区域铁芯的磁化程度也加强, 电抗器电抗值变小而输出电流变大。
磁控电抗器(MCR)专利技术介绍 9、结构示意图解释4:
由此,实现了通过改变可控硅 导通角а,可以平滑调节电抗器的容量; 并且,可以根据设定铁芯的励磁磁化 程度,以满足电抗器对调节速度的要 求。
磁控电抗器(MCR)专利技术介绍 2、结构特点:
采用直流助磁原理,利用直流励磁 磁化铁心,改变铁心磁导率,实现电 抗值连续可调。 铁心采用并联磁路,磁密不饱和、 漏磁自屏蔽,结构对称等设计方法, 绕组采用自耦式、对称结构,有效地 减少损耗和噪声;
磁控电抗器(MCR)专利技术介绍 3、技术特点:
综合应用了大型变压器、超/特高 压互感器、高压电容器、电力电子控 制等先进技术;真正实现了质量可靠、 成本低、性能先进、结构合理、制造 工艺成熟、运行稳定。即:解决了磁 控电抗器易于制造、可靠使用的问题。
磁控电抗器(MCR)专利技术介绍 10、伏安特性:
磁控电抗器伏安特性 如图5所示,可见, 在一定控制导通角 (等于180度-触发 角)下,磁控电抗器 伏安特性近似线性。
MinGW与MSVC生成DLL各种情况的折腾笔记

MinGW与MSVC⽣成DLL各种情况的折腾笔记写这篇博客,主要是刚折腾 MinGW,相关内容⽹上的资料不全,⽽且错误很多其实之前我根本没把这个当回事,我就想 MinGW 跟 Linux 上的 GNU 编译器不会有差别,但是事实却不是这样。
提⽰:所有代码均使⽤ __stdcall安装 MSVC 和 MinGWMSVC:安装 Visual Studio,之后即可在开始菜单中找到“Visual Studio开发⼈员命令提⽰”,启动后会⾃动配制环境变量,不多说了(之前我写过提取 MSVC 编译器的博客)MinGW:这真是⼀个悲伤的故事,官⽅的下载⼯具总是失败,看起来需要,其实,有⼀种更简单的⽅法。
MSYS 环境就不⽤了,这个下来不好⽤,版本很⽼,不知道官⽅为什么不更新,其实,只需要安装⼀个 msysgit,MSYS 环境就有了,版本也是最新的,不过 msysgit 在 AWS 上,还是需要才能下载。
嘿嘿,写⼀个超简单的脚本!bashexport PATH="/c/Users/abc/Downloads/MinGW/MinGW/bin:$PATH"bash123把 /c/Users/abc/Downloads/MinGW/MinGW/bin 换成你的 MinGW/bin ⽬录即可,双击打开⼀个可以⽤ MinGW GCC、G++ 的 Bash 终端。
MinGW 调⽤ MinGW ⽣成的 DLL⾃家调⽤⾃家的,也会出现问题,别不信,⽐如这⼉有 dll.cpp 和 dlluse.cppinclude <Windows.h>BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) {return TRUE;}extern "C" __declspec(dllexport) void WINAPI showMessage() {MessageBoxA(0, "I am showMessage", 0, 0);}extern "C" __declspec(dllexport) void WINAPI showMessage2() {MessageBoxA(0, "showMessage2", 0, 0);}123456789101112131415161718include <Windows.h>extern "C" void WINAPI showMessage();extern "C" void WINAPI showMessage2();int main() {showMessage();}12345678如果我们这样编译:$ g++ -mwindows -static -shared -o 1.dll dll.cpp -Wl,--out-implib,lib1.a $ g++ -mwindows -static dlluse.cpp -l1 -L.$ ./a.exe12345这样是没有问题的,但是,问题出现在了 –kill-at 选项上我们先⽤微软的 dumpbin ⼯具来看⼀下导出表:dumpbin /exports 1.dllMicrosoft (R) COFF/PE Dumper Version 14.00.23918.0Copyright (C) Microsoft Corporation. All rights reserved. Dump of file 1.dllFile Type: DLLSection contains the following exports for 1.dll//....ordinal hint RVA name1 0 000012BB showMessage2@02 1 0000128C showMessage@0Summary//....1234567891011121314151617181920每个函数后⾯都出现了⼀个“@n”,如果我们不希望 DLL 的导出函数中还要带着⼀个 “@n” 标记(就像Windows的DLL⼀样都是没有的),在MSVC 中我们可以通过 DEF 导出,MInGW 则提供了 –kill-at 选项。
msvc编译参数

msvc编译参数(原创版)目录1.msvc 编译参数简介2.msvc 编译参数的分类3.常用 msvc 编译参数及其作用4.msvc 编译参数的应用示例5.总结正文一、msvc 编译参数简介msvc(Microsoft Visual C++)编译器是微软公司开发的一款 C/C++编译器,广泛应用于 Windows 平台下的软件开发。
msvc 编译参数是指在编译过程中,可以通过命令行或项目文件设置的各种选项。
合理的编译参数设置可以优化编译效果,提高程序性能。
二、msvc 编译参数的分类msvc 编译参数主要分为以下几类:1.优化参数:用于优化编译后的程序性能,如/Ox、/Oy 等。
2.调试参数:用于控制编译后的程序是否进入调试模式,如/ZI、/ZD 等。
3.链接参数:用于指定链接器使用的库文件或设置链接选项,如/LIB、/LD 等。
4.输出参数:用于控制编译结果的输出形式,如/Fe、/Fa 等。
5.预处理参数:用于控制预处理指令的执行,如/P、/EP 等。
三、常用 msvc 编译参数及其作用1./Ox:优化参数,用于优化编译后的程序性能。
在不影响程序正确性的前提下,尽量提高程序的执行速度。
2./Oy:优化参数,与/Ox 类似,但会生成较小的可执行文件。
适用于对程序体积有要求的场景。
3./ZI:调试参数,用于在编译后的程序中启用调试功能。
在调试模式下,程序会暂停执行并提供调试信息,方便开发者查找问题。
4./ZD:调试参数,用于在编译后的程序中禁用调试功能。
适用于发布版程序,以提高程序的执行效率。
5./LIB:链接参数,用于指定链接器使用的库文件。
如:/LIB/libmylib.lib,表示链接器需要将 mylib.lib 库文件链接到目标程序中。
6./LD:链接参数,用于指定链接器使用的附加库目录。
如:/LD:pathtolib,表示链接器需要在pathtolib 目录中查找库文件。
7./Fe:输出参数,用于指定编译结果的输出文件名。
VisualC改变文件和文件夹属性的方法

文章编号:1OO8-14O2(2OO2)O1-O1O2-O6Visual C ++改变文件和文件夹属性的方法D陈美莲(湛江海洋大学计算中心 广东湛江524O88)摘要:文件的属性包括文件的产生修改和访问时间以及读写隐现等 在DOS 下文件的属性可以用DOS 命令加以修改 在WINDOWS 下 可以通过右键的属性改变一组文件和文件夹的读写属性 但是却不能修改文件的产生修改和访问时间 并且不能修改子目录下的文件和文件夹的属性.本文基于WindOWs 的API 设计了通用的文件和文件夹的属性(包括文件的产生修改和访问时间以及读写隐现等)的修改方法 并实现了其Visual C ++程序编码.关键词:文件G 文件夹G 读写G 属性G 产生时间G 修改时间G 访问时间中图分类号:TP 311文献标识码:AO引言文件的属性的修改具有广泛的使用价值 修改文件的读写隐现等属性 可以实现文件的保护和控制 尤其是修改文件的产生修改和访问时间 可以避免因防病毒更改系统时间而造成的文件修改时间的紊乱所形成的不便 例如 对程序员来说 编译时 系统有可能又重新编译那些修改时间紊乱的文件 造成不必要的麻烦.1应用的API 函数(1)API 中的文件函数组提供了文件读写~属性设置的众多API 函数 在本编码中用到的该函数组中的函数有:ANDLE CreateFile (LPCTSTR DWORD \DWORD LPSECURITYATTRIBUTESDWORD DWORD ANDLE )G该函数产生或者打开一个系统对象 并返回一个用以访问该对象的句柄 这些对象可以是文件~文件夹~管道等.ANDLE FindFirstFile (LPCTSTR LPWIN 32FINDDATA )G 该函数在指定目录寻找与指定文件名匹配的文件和文件夹 并返回一个查询句柄.BOOL FindNextFil ( ANDLE LPWIN 32FINDDATA )G 该函数继续一个由查询句柄指定的查询过程.BOOL FindClOse ( ANDLE )G 该函数关闭指定的查询句柄 结束指定的查询.DWORD etFileAttributes (LPCTSTR )G 该函数检取指定的文件的属性信息.BOOL SetFileAttributes (LPCTSTR DWORD )G 该函数设置指定的文件的属性信息.(2)API 中的时间函数组提供了有关时间转换的众多API 函数 在本编码中用到的该函数组中的函数有:BOOL SystemTimeTOFileTime (CONST SYSTEMTIME % LPFILETIME )G 该函数将系统时间转换成文件时间 文件时间是一个64位长度的数 表示从16O1年1月1日起的时间偏移 以千万分之一第20卷第1期佳木斯大学学报(自然科学版)Vol.20No.12002年3月Journal of Jiamusi university(Natural science ition) ar.2002D收稿日期:2OO1-11-28作者简介:陈美莲(1972 ) 女 广东茂名人 湛江海洋大学计算中心助教.秒为单位.BOOL LOcalFileTimeTOFileTime (CONST FILETIME e 9LPFILETIME );该函数将本时区的文件时间转换成格林威治时间的文件时间.BOOL SetFileTime (~ANDLE 9CONST FILETIME e 9CONST FILETIME e 9CONST FILETIME e );该函数设置文件产生修改和访问的时间.2编码实现(1)首先建立一个基于对话框的工程9在对话框窗体中放置以下控制并通过类管理向导为这些控制添加适当变量:文件名编辑框9输入要改变的文件的全路径9文件名中可以有通配符e 和?;变量类型CString 9名称m FILENAME ;修改包括子目录文件的检查框9变量类型BOOL 9名称m DIRECTORY ;修改文件访问时间检查框9变量类型BOOL 9名称m ACCESS ;文件访问时间日编辑框9变量类型BOOL 9名称m ADAY ;文件访问时间月编辑框9变量类型BOOL 9名称m AMONT~;文件访问时间年编辑框9变量类型BOOL 9名称m AYEAR ;修改文件产生时间检查框9变量类型BOOL 9名称m CREATE ;文件产生时间日编辑框9变量类型BOOL 9名称m CDAY ;文件产生时间时编辑框9变量类型BOOL 9名称m C~OUR ;文件产生时间分编辑框9变量类型BOOL 9名称m CMINUTE ;文件产生时间月编辑框9变量类型BOOL 9名称mCMONT~;文件产生时间秒编辑框9变量类型BOOL 9名称m CSECOND ;文件产生时间年编辑框9变量类型BOOL 9名称m CYEAR ;修改文件修改时间检查框9变量类型BOOL 9名称m MODIFY ;文件修改时间日编辑框9变量类型BOOL 9名称m MDAY ;文件修改时间时编辑框9变量类型BOOL 9名称m M~OUR ;文件修改时间分编辑框9变量类型BOOL 9名称m MMINUTE ;文件修改时间月编辑框9变量类型BOOL 9名称mMMONT~;文件修改时间秒编辑框9变量类型BOOL 9名称m MSECOND ;文件修改时间年编辑框9变量类型BOOL 9名称m MYEAR ;修改文件属性检查框9变量类型BOOL 9名称m PROPERTY ;文件隐藏属性检查框9变量类型BOOL 9名称m ~IDE ;文件只读属性检查框9变量类型BOOL 9名称m READ ;文件存档属性检查框9变量类型BOOL 9名称m SAVE ;文件系统属性检查框9变量类型BOOL 9名称mSYSTEM ;执行更改的按钮9点击该按钮后执行选定的更改操作.以上成员变量可在对话类的构造函数中用当前系统时间予以初始化.(2)在对话类中加入以下成员:char filter [16];int ChangeThePrOperty(LPSTR Filename 9BYTE OFlag :0);其中成员变量filter 用以存放带通配符的文件名.成员函数ChangeThePrOperty 中实现了带通配符301第1期陈美莲:Visual C ++ 改变文件和文件夹属性的方法4O1佳木斯大学学报(自然科学版)2OO2年的文件的属性的改变,考虑到要遍历子目录,该函数采用了递归调用,并请注意参数bFlag,其缺省值为O, 1表示调用发生自子目录[1].其实现如下:int CChangePropertyDlg::ChangeTheProperty(LPSTR FileName,BYTE bFlag){char pathname[MAX PAT~];////存放路径char allname[MAX PAT~];////存放全路径文件名int num=strlen(FileName);////初始化for(int i=num-1;i>=O;i--){if(FileName[i]==\\)break;}if(i==-1)return O;strncpy(pathname,FileName,i+1);pathname[i+1]=\O;////查找并修改所有子目录下符合条件的文件DWORD stat=O;WIN32FIND DATA fileinfo;if(bFlag){char DFileName[MAX PAT~];strcpy(DFileName,pathname);strcat(DFileName,%.%);~ANDLE handle=FindFirstFile(DFileName,8fileinfo);if(handle==INVALID~ANDLE VALUE)return O;do{if(fileinfo.cFileName[O]==.)continue;strcpy(allname,pathname);strcat(allname,fileinfo.cFileName);////检取文件属性,可以使用fileinfo的dWFileAttributes成员[2]stat=GetFileAttributes(allname);if(stat==O xffffffff){MessageBox(警告,获取文件信息时出错U U,allname,MB OK|MB ICONINFORMATION); continue;}////如果查询到的是文件夹if(stat8FILE ATTRIBUTE DIRECTORY88m DIRECTORY){char temp[MAX PAT~];sprintf(temp,s s\\ s,pathname,fileinfo.cFileName,filter);////递归改变该子目录下的文件ChangeTheProperty(temp,1);}}While(FindNextFile(handle,8fileinfo));FindClose(handle);}[2]////查找并修改符合条件的文件和文件夹~ANDLE handle =FindFirstFile (FileName ,S fileinfO );if (handle ==INVALID ~ANDLE VALUE )return 0;dO {if (fileinfO .cFileName [0]== . )cOntinue ;strcpy (allname ,pathname );strcat (allname ,fileinfO .cFileName );}[Z ]////设置文件属性BOOL tt =SetFileAttributes (allname ,0);if (I tt ){MessageBOX (警告,文件信息出错I I ,allname ,MB OK MBICONINFORMATION );cOntinue ;}~ANDLE hd =CreateFile (allname ,GENERIC WRITE ,FILES~AREWRITE ,NULL ,OPEN EXISTING ,FILEFLAGBACKUPSEMANTICS ,NULL );if (hd I =INVALID ~ANDLEVALUE ){SYSTEMTIME st [3];GetLOcalTime (S st [0]);st [1]=st [0];st [Z ]=st [0];FILETIME ft [3];FILETIME lft [3];BYTE ff [3];ff [0]=0;ff [1]=0;ff [Z ]=0;////改变文件访问时间if (mACCESS ){ff [0]=1;st [0].WDay =m ADAY ;st [0].WMOnth =m AMONT~;st [0].WYear =mAYEAR ;BOOL bb =SystemTime TOFileTime (S st [0],S ft [0]);bb =LOcalFileTimeOFileTime (S ft [0],S lft [0]);}[3]////改变文件产生时间if (mCREATE ){ff [1]=1;st [1].WDay =m CDAY ;st [1].W~Our =mC~OUR ;st [1].WMinute =mCMINUTE ;st [1].WMOnth =mCMONT~;st [1].WSecOnd =mCSECOND ;st [1].WYear =mCYEAR ;BOOL bb =SystemTimeTOFileTime (S st [1],S ft [1]);bb =LOcalFileTimeTOFileTime (S ft [1],S lft [1]);}[3]501第1期陈美莲;Visual C ++ 改变文件和文件夹属性的方法601佳木斯大学学报(自然科学版)2002年////改变文件修改时间if(m-MODIf Y){ff[2]=1;St[2].WDay=m MDAY;St[2].W~our=m M~OUR;St[2].WMinute=m MMINUTE;St[2].WMonth=m MMONT~;St[2].WSecond=m MSECOND;St[2].WYear=m MYEAR;BOOL bb=SyStemTimeTof ileTime(8St[2],8ft[2]);bb=Localf ileTimeTof ileTime(8ft[2],8lft[2]);}[3]////改变文件时间BOOL tt=Setf ileTime(hd,ff[1]?8lft[1];NULL,ff[0]?8lft[0];NULL,ff[2]?8lft[2];NULL);if(U tt){MeSSageBox(警告,文件信息出错U U,allname,MB OK MB ICONINf ORMATION);}CloSe~andle(hd);}[3]////改变文件属性if(m PROPERTY){if(m~IDE)Stat=f ILE ATTRIBUTE~IDDEN;elSe Stat8=~f ILE ATTRIBUTE~IDDEN;if(m READ)Stat=f ILE ATTRIBUTE READONLY;elSe Stat8=~f ILE ATTRIBUTE READONLY; if(m SAVE)Stat=f ILE ATTRIBUTE ARC~IVE;elSe Stat8=~f ILE ATTRIBUTE ARC~IVE;if(m SYSTEM)Stat=f ILE ATTRIBUTE SYSTEM;elSe Stat8=~f ILE ATTRIBUTE SYSTEM;}[1]////设置文件属性tt=Setf ileAttributeS(allname,Stat);if(U tt){MeSSageBox(警告,文件信息出错U U,allname,MB OK MB ICONINf ORMATION); continue;}[1]////查找并修改当前目录下所有符合条件的文件if(Stat8f ILE ATTRIBUTE DIRECTORY88U bf lag){char temp[128];Sprintf(temp,%S%S%S,pathname,fileinfo.cf ileName,filter);////递归改变该子目录下的文件ChangeTheProperty(temp,1);continue;}}While (FindNextFile (handle ,S fileinfO ));FindClOse (handle );return 1;}(3)在执行更改的按钮的BN CLICKED 消息处理器中加入以下代码,这段代码首先解析了输入的文件名全路径,并初始化了filter 成员变量,UpdateData (TRUE );int num =m FILENAME .GetLength ();fOr (int i =num -1;i >=0;i --){if (mFILENAME .GetAt (i )== )brea ;}if (i I =-1){CString ss =mFILENAME .Right (num -1-i );strcpy (filter ,ss .GetBuffer (15));ss .ReleaseBuffer ();ChangeTheprOperty (m FILENAME .GetBuffer (128));mFILENAME .ReleaseBuffer ();}(4)编译连接后,在文件名编辑框中输入要改变的文件的带通配符的全路径,设置文件的创建修改访问时间以及只读隐藏等属性,点击该按钮后执行选定的更改操作.参考文献,[1]官章全,韩元君,李显.Visual c ++6.0高级编程范例[M ].北京,电子工业出版社,2001.[2]方可燕.Visual c ++6.0实战与精通[M ].北京,清华大学出版社,2000.[3]黄维通,戢彦泓,关继来.边用边学Visual c ++编程[M ].北京,清华大学出版社,2001.TO CHANGE THE ATTRIBUTES OF APPOINTED FILE ANDFOLDER WITH VISUAL C ++CHEN Mei -lia n(C omputer C entre of zhanjiang O cean U niversity ,zhanjiang 524088,C hina )ABSTRACT ,The file s attributes include the time When it is created ,mOdified and accessed ,itsbeing read and Written ,cOncealed and shOWn .They can be mOdified by D O S cOmmand under D O S .But under W IND OW S ,the read -Write prOperties can be changed by the prOperties shOWn On the right ey While the file s creatiOn ,mOdificatiOn and access time can t ,nOr can the prOperties Of files and fOlders under subdirectOry .Based On the W indOWs ApI ,the article cOntri v es the mOdificatiOn methOds Of the prOperties Of cOmmOn files and fOlders ,including the file s creatiOn ,mOdificatiOn and access time as Well as it s being cOncealed Or shOWn ,and achie v es the Visual C ++prOgram cOding .K E Y WORDS ,file ;fOlder ;read -Write ;prOperty ;creatiOn time ;mOdificatiOn time ;access time701第1期陈美莲,Visual C ++ 改变文件和文件夹属性的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
磁阀式静止型动态无功补偿装置原理及在电力系统中的应用周晋中,许学亮(山西晋中供电分公司山西晋中030600)摘要:该文介绍了磁阀式静止型动态无功补偿装置(MSVC)的基本原理和应用,并针对国内现有的几种先进补偿技术进行了原理及性能比较。
关键词:MCR(磁阀式可控电抗器) SVC(静止型动态无功补偿装置) 无功补偿谐波1.前言电力系统电压、无功、谐波三大指标对全网经济效益和改善供电质量至关重要。
根据电力工业的现状和发展,新型无功补偿装置的研制和应用是我国电网系统解决电能质量的重大关键技术课题。
目前,无功补偿主要装置是电容器、电抗器和少量的动态无功补偿装置,其技术存在明显不足之处:如开关(断路器)投切电容器组的调节方式是离散的,不能取得理想的补偿效果【4】;开关投切电容所造成的涌流和过电压对系统和设备本身都十分有害。
本文主要介绍的磁阀式可控电抗器(MCR)型SVC,具有输出谐波小、结构简单、可靠性高,价格低廉,占地面积小、免维护等显著优点,是高压和超高压电网理想的动态无功补偿,电压调节,谐波治理设备。
它由磁阀式可控电抗器、控制器、电容器(C) 或滤波器(FC) 、晶闸管阀柜构成,下面集中对MCR作简介。
2、磁阀式可控电抗器工作原理无功补偿设备采用直流助磁式可控电抗器,其原理是利用附加直流励磁磁化铁芯,改变铁芯磁导率,实现电抗值的连续可调,其内部为全静态结构,无运动部件,工作可靠性高。
图1为单相可控电抗器的铁芯、线圈结构示意图【1】。
图1 单相可控电抗器铁芯、线圈示意图可控电抗器采用小截面铁芯和极限磁饱和技术,如图四柱铁芯结构,在中间两工作铁芯柱上分布着多个小截面段,在电抗器的整个容量调节范围内,仅有小截面段铁芯磁路工作在饱和区,而大截面段始终工作于未饱和线性区,其上套有线圈。
如图1所示,电抗器中间两工作铁芯分别有小截面S A 段,在整个工作过程中,大截面A 铁芯段始终不饱和,仅小截面S A 段饱和,且饱和的程度很高。
图3为铁芯磁化曲线示意图,曲线中间部分为未饱和线性区,左、右两边为极限饱和线性区。
若使电抗器工作在极限饱和线性区,不仅可以减小谐波含量,同时亦能大幅降低铁芯磁滞损耗,电抗器铁损控制在理想状态【2】。
图2 磁阀式可控电抗器铁芯结构图3铁芯磁饱和特性可控电抗器原理接线图如图4所示。
在可控电抗器的工作铁芯柱上分别对称地绕有匝数为N/2的两个线圈,其上有抽头比为2δ=N /N 的抽头,它们之间接有可控硅1T 、2T ,不同铁芯的上下两个主绕组交叉连接后并联至电源,续流二极管接在两个线圈的中间。
K N 2N2N2图4 磁控电抗器原理接线图3.磁阀式可控电抗器特性 3.1谐波特性磁阀式可控电抗器产生的谐波比相控电抗器(TCR )小50%。
如图5所示。
可见最大3次谐波电流为额定基波电流的7%左右,5次谐波电流为2.5%左右【2】。
基波电流/10总谐波电流含量3次谐波电流含量5次7次图5可控电抗器谐波电流分布3.2伏安特性在一定控制导通角α下,磁阀式可控电抗器伏安特性近似线性【2】。
3.3控制特性可控电抗器输出电流(容量)随控制角增加而减少【2】。
3.4响应时间图6示出可控电抗器从空载到额定或从额定到空载容量的电流过渡过程波形,时间约为0.3秒。
例如,额定容量为300MVA 的可控电抗器,紧急情况下可在0.3秒内可提供300MVA 的无功功率。
图6可控电抗器调节过渡过程波形4.特点MCR型SVC的特点电感平衡部分的结构是由一台磁控电抗器组成,其优缺点大致表现在以下几个方面:⏹磁控电抗器控制部分的可控硅一般工作在系统额定电压的百分之几的水平上,由于是在控制磁阀的饱和度,所以无需很大的控制功率,晶闸管工作在低电压小电流的工况下,大大提高了系统的稳定运行系数【1】。
⏹磁控电抗器本身就像一台变压器,可以采用不同的冷却方式,在35KV电压等级以下均采用风冷和油冷两种自然冷却方式,所以没有辅助冷却设备,可以为无人值守的变配电系统配套使用。
⏹由于可控硅部分工作在支流运行方式,所以不会产生谐波电压,近乎于TCR型所产生谐波量一半以下的谐波是因为磁化的非线性过程造成的。
⏹磁控电抗器的缺点是反应速度相对较慢,在0.3S左右,与饱和速度成反比。
目前正在开发反应速度更快的产品。
⏹磁控电抗器免维护,占地面积小,安装方便【2】。
5.可靠性这种可控电抗器不需要外接电源,完全由电抗器的内部绕组来实现自动控制;其控制系统从输电线路进行数据采集,通过控制可控硅晶闸管的导通角进行自动控制,因此可实现连续可调,并且从最小容量到最大容量的过渡时间很短,因此可以真正实现柔性输电【3】;网侧绕组不需要抽头,所有绕组的联接也很简单,保证了高压或特高压可控电抗器的可靠性;从产品的运行情况看,俄罗斯500kV及以下等级已大量采用该技术【2】,国内750KV 系统也在实际操作中,方案可见是先进、成熟和可靠的。
6.安全性●MCR仅仅需要一只二极管、两只可控硅,磁控电抗器,可控硅不需要串、并联,承受电压只有系统总电压的1%-2%,运行稳定可靠【2】。
●可控硅动作,整流控制产生的谐波不流入外交流系统。
●即使可控硅或二极管损坏,磁控电抗器也仅相当于一台空载变压器,不影响系统其他装置的运行。
●接入三相系统的MCR采用角形连接,并不是将磁控电抗器取代滤波电容中的串联电抗器,因此与电容器不会产生谐振【2】。
当MCR容量与电容器容量相等时,发生并联谐振,等效阻抗无穷大,相当于从系统中断开。
7.经济性采用低电压水平的电子器件(可控硅)控制,就可以实现各个电压级别电压的自动调整,保持电压的稳定;在相同电压下可提高30%的输电容量;降低输电线路的损耗;提高电力系统的稳定性;在系统的静态和动态情况下均能最大限度地传输功率;电网中采用这种可控电抗器可取消自耦变压器第三绕组以及相配套的补偿电容器,工程总造价降低。
磁控电抗器结构简单,占地面积小,基础投资大大压缩。
MSVC自身有功损耗低【2】。
8.使用范围广泛适用于电力无功变化迅速,电压、无功、谐波需控制或综合治理的供用电场所:冶金:A.工业用电炉和铁合金炉电炉(铁合金电炉)在工业上用途非常广泛,炼钢、炼铁、炼铁合金都需要很大功率的电炉。
电炉的工作特性特殊性,会对电网造成很大的冲击破坏,如造成电网电压波动;电压的闪变;三相严重不平衡;无功功率快速变化;产生大量的高次谐波等【4】。
B.轧钢系统系统的功率因数都十分的低,一般的补偿装置,但都存在没有动态调整部分的问题,对于这类设备,采用磁控电抗器组成的SVC是十分合适的,咬钢的过程都在数秒的惯性范围内,完全可以适应系统的要求,甩钢后又能及时地由电抗器保持平衡,不会出现过补现象【4】。
C.原料及高炉系统一般区域变电系统的功率因数都很低,同时电机的工作负荷也很不稳定,所以可以大量的采用MCR型SVC作为补偿装置。
D.有色冶金冶炼铜和铝:一般都采用电炉冶炼,其过程比钢铁冶炼炉稳定,也是高耗能的化学反应过程,但稳定波动系数更大,所以也存在电压波动大、谐波丰富及功率因数很低等方面的问题【4】,是推广应用MCR型SVC的另一个对象。
电解铜和铝:大量采用整流装置,由于会产生的谐波和槽内电流变化的不稳定性都导致了电压的无序波动,而设备的调节系统的工作会进一步加剧这种波动,因此稳定供电一直是电解系统的一大难题,采用MCR型SVC将会很好的解决此类问题【3】。
煤炭:煤炭企业主要的生产工艺过程为采掘和运输(提升),工辅系统为通风和排水,百分之九十的动力设备为旋转电机,而且以交流电机为主。
煤炭企业最大的特点是单机容量都较大,独立分布和一些设备启动频繁等特点,由此造成了系统供电品质因素很低,稳定性很差等诸多问题,改善这类问题的很好办法也是采用反应速度要求不高,但运行可靠,投资与其它类型SVC有较大竞争的磁控型静补设备。
建材水泥:大部分水泥企业都采用活性水泥生产工艺,与煤炭企业唯一不同的就是它基本在地表以上操作,通风变成了除尘,也存在大量的皮带运输的问题,所以与煤炭企业相似。
电力系统:a.可用于并联电抗器:长距离高压输电线路,在一定条件下,末端会造成容升电压升高,可调电抗器并接入线路,可自动调节电感,吸收无功电流,防止电压升高【3】。
b.用于消弧线圈:中压输电系统发生单相接地时,对地电容电流会严重威胁电网的安全【3】。
传统的方法是在系统的中性点处装设电感不可调的消弧线圈,用以抵消电容电流,达到灭弧的目的。
由于电感不可调,灭弧效果并不理想。
用可调电抗器作成消弧线圈,可任意调节电感,灭弧可靠性更高【1】。
c.用于输电线路:可调电抗器和电容器串联接入输电线路,可以补偿输电线路的电感,提高线路输电能力;改善系统的稳定性;降低系统的损耗,改善线路的电压分布;优化线路间的负荷分配【3】。
9.同类其他技术特性9.1 相控式动态无功补偿装置(TCR):原理:相控式原理的可控电抗器的调节原理见图7所示。
通过对可控硅导通时间进行控制,控制角为α,电流基波分量随控制角α的增大而减小,控制角α可在0°~90°范围内变化【4】。
i图7 相控式电抗器的结构原理技术特点:电感平衡部分的结构一般是由可控硅、平衡电抗器、控制设备及相应的辅助设备组成,其优缺点大致表现在以下几方面:a.晶闸管要长期运行在高电压和大电流工况下,容易被击穿。
b.晶闸管发热量大,一般情况采用纯水冷却,除了要有一套水处理装置可靠的水源而外,还需配有监护维修人员。
c.由于调整主电抗电感量只能靠控制可控硅器件的导通角,关闭则需靠交流电的过零特性,所以必然会产生不同程度的谐波电压污染电网。
d.需要较大的设备安装和运行工作位置,即占地面积很大。
e.反应速度快9.2 开关分组投切技术:原理:利用对系统无功功率的取样,自动控制开关分组投切电容器,其调节方式是离散式的,容易过补和欠补。
技术特点:a.开关投切时产生的涌流至少在7倍以上,威胁设备的安全。
b.为离散式调节,容易产生过补和欠补,同时引起电压波动。
c.需要对滤波支路进行自动投切,虽然能调节无功功率的补偿容量,但必然影响滤波效果。
d.响应时间为0.8S,难以跟踪负载变化,影响补偿效果。
分组投切技术设计的滤波装置,因无功功率需求的变化而引起滤波补偿支路的投运或切除。
一旦系统所需补偿无功功率较小而切除某个滤波补偿支路,则该支路的滤波功能完全丧失,对谐波的治理非常不利,导致整个滤波设备不能达到设计的谐波治理功效【4】。
9.3 TSC型高压补偿滤波装置:原理:利用串联晶闸管代替真空接触器作为投切开关,对无功补偿进行离散式调节。
技术特点:a.晶闸管串联在高压回路,容易被击穿。
b.正常运行时晶闸管承受高电压、大电流,发热量非常大,需要辅助冷却设备和大量的维护工作。
c.为离散式调节,容易产生过补和欠补,同时引起电压波动【3】。