中直流跟踪器范文

2024-05-22

中直流跟踪器范文(精选3篇)

中直流跟踪器 第1篇

干涉型光纤电压传感器多用于测量电网中的电压,具有灵敏度高、线性好、动态范围大等优点,它将被测电压的变化转变为信号相位的变化,利用测量相位差来实现测量电压变化量的目的[1,2]。可见,对相位差的检测是干涉型光纤电压传感器的主要任务。但是相位差很小,无法直接精确测量。直流相位跟踪检测法可以实现对相位差微小变化的测量,而且,还可以解决由于相位随机漂移而产生信号衰落问题,可使系统始终处于正交工作点[3]。

1 直流相位跟踪的原理分析

直流相位跟踪的基本思想是在接收干涉仪光路中加入一个相位调制器(如PZT压电陶瓷),使之在反馈电压的控制下产生一相移。直流相位跟踪系统的原理图如图1所示。图中接收双模光纤的输出光强经光电转换后的电压值为:

V1,2(t)=V{1±12cos[S(t)+ϕs-ϕr-A(t)]}(1)

其中,S(t)是由电网中信号调制产生的相位差,和电压信号成正比,为50 Hz的正弦信号,ϕs、ϕr分别是传感干涉仪和接收干涉仪的随机相位漂移,受温度等缓慢变化的信号影响,A(t)是接收干涉仪中相位调节器的补偿相移。V常为电压常量。

V1,2(t)经差动放大器放大后的值为:

V3(t)=kacos[S(t)+ϕs-ϕr-A(t)]=-kasin[S(t)+ϕs-ϕr-A(t)-π2](2)

当系统处于正交工作点附近时,即:

S(t)+ϕs-ϕr-A(t)=mπ+π2,(m),(3)

式(2)可化为:

V3(t)-ka[S(t)+ϕs-ϕr-A(t)-π2](4)

式中,k为差动放大器的增益,a为相位差与电压幅度的转换系数。

由(4)式可知,在正交工作点附近,V3(t)可以近似等于零。当信号相移S(t)使系统偏离正交状态时,V3(t)不再为零,从而产生一个误差信号。将此误差信号积分后作为反馈控制电压控制压电陶瓷,使之产生的补偿相移A(t),抵消S(t)变化产生的相位影响,将系统重新拉回到正交工作点。也就是说,在相位跟踪的作用下相位差一直锁定在正交状态。这样,当传感光纤在被测电压作用下有一个相位变化时,相位跟踪器随之产生一个相同的相位变化,根据相位跟踪器的控制电压就可以测出被测电压的大小和相位,从而将信号相移的检测转换为对相位补偿器补偿相移的检测。这样,反馈电压Vf(t)与信号S(t)之间满足线性关系,通过适当的滤波就可以从Vf(t)中提取出信号。

直流相位跟踪检测系统多采用积分器作为反馈电路,以积累误差,使系统稳定运行。经过积分后的电压V3(t)作为控制电压加在PZT上,使接收双模光纤中干涉光产生相位变化。反馈电压为:

Vf(t)=g0toV3(t)dt(5)

式中,g为积分电路的积分常数。前面已经说明加在PZT上的反馈电压引起接收光纤中的两个模式的相位变化为A(t)=K Vf(t),则调整系数ka、g、K,使系统始终保持在正交工作点,有:

S(t)=ΚVf(t)-ϕs+ϕr+π2(6)

可见,S(t)如果与ϕsr的频谱不交叠,则可从Vf(t)中滤波得S(t)。

2 基于FPGA的直流相位跟踪系统设计

以往一般采用模拟电路来实现直流相位跟踪检测系统,然而由于模拟器件存在温漂和时漂等固有特性,模拟电路存在受外界干扰大等问题[4],而且电路还需手动调节,可扩展性差,在实际应用时受到限制。针对以上问题,本文提出了一种基于FPGA实现的直流相位跟踪检测系统。此系统为一自适应系统,无需人工调节,受外界干扰小,而且便于扩展系统功能,可实现与多种数字显示、计量设备的连接,系统成本不高,适合实际应用。

采用FPGA实现直流相位跟踪,需先将光电转换器输出的信号进行数字化,而且,由于存在压电陶瓷筒谐振峰所造成的几万赫兹的高频串扰,必然会在A/D转换时造成频谱混叠,致使后续电路无法正确检测信号。因此,需在A/D转换之前对输入信号进行预滤波,滤除压电陶瓷筒谐振峰处的频率,以保证A/D转换的正确。

图2是直流相位跟踪检测电路的顶层设计文件。其中,NSUB是一个由超前进位加法器构成的减法器,将减数先进行求补运算,再与被减数做加法运算。INTEGRATOR是一个采用梯形公式算法的数字积分器。BPS是一个中心频率为50 Hz的带通滤波器,采用分布式算法,基于查找表结构来实现[5]。ADJUST一个调节单元,由于FIR带通滤波器存在时延,所以加入ADJUST单元来调整输出和输入同步。

测量时,必须以较高的采样率对输入模拟信号进行采样,才能正确实现相位跟踪。这是由于,减法器的输入输出公式为:

S=φi-φo=φi(t)-φi(t-Δt)=φi(t)-φi(t-Δt)ΔtΔt(7)

当Δt足够小时,即采样率足够大时,上面的公式可化为:

S=d(φi)(8)

可见,此时的减法器亦相当于一个微分器。相位跟踪系统是将经过微分后的正弦信号再经后续的积分器将其还原为幅度和相位都一样的正弦信号,同时将干扰噪声信号滤除,从而实现了输出到输入的跟踪。

经仿真分析,得知在较高的采样率下,总保持反馈信号序列比输入信号序列延时一个时钟周期,当以2.5 kHz信号对50 Hz输入信号采样时,误差为:

ε=5025000×100=0.2(9)

此时的仿真结果见图3。从图3中可见,输出信号序列基本与输入信号序列相等,只在时间上差一个时钟周期。将上述仿真结果在Matlab中用插值法恢复成波形图,如图4所示。

由仿真结果可见,输出信号从反馈信号滤波得到,输出信号和与输入信号是等幅度且同相位的。这表明此系统也可以完成相位检测功能。

3 实验结果

FPGA采用Altera公司的EP1C6F256C7,该芯片具有5 980个逻辑单元,以及92 160位RAM,资源丰富,基于 SRAM 配置型 FPGA 器件具有无限次数下载。配置芯片采用EPCS1,该配置器件是配置中低密度的FPGA的一个比较好的选择,有了它,就可以保证掉电后再上电FPGA的正常工作。系统采用40 MHz的晶振,为FPGA提供工作时钟。

用双踪示波器来显示的实验结果,如图5所示。输入设定:

S(t)=0.22sin(100πt)(10)

如双踪示波器显示的波形2所示,波形1表示系统输出的结果.由图中对比可见,FPGA电路无手动需调整,输出就可实时跟踪输入的变化,实现了干涉型光纤电压传感器对信号检测的要求。

4 结束语

基于FPGA实现的直流相位跟踪检测系统,可以完成对相位稳定、精确、实时的测量,准确度高,并且相较模拟系统而言,有着无需手动调节、受外界干扰小、可扩展性高等优点,也可应用到其它相位补偿系统,在实际应用中有着很大的优势。

参考文献

[1]娄凤伟,郑绳楦,席政宏.光纤电压传感器传感头的设计[J].仪表技术与传感器.2004,41(12):3-5.

[2]史东军,史战军,史永基.高压电力系统中的光纤电压传感器[J].传感器世界,2002,8(7):17-23.

[3]周效东,汤伟中,张宇.干涉型光纤传感器相位载波调制解调技术的研究与实现[J].光学学报,1996,16(8):1177-1181.

[4]李昕彤,廖延彪.干涉型光纤传感器直流相位跟踪检测系统的改进[J].激光杂志,2003,24(4):16-17.

最优跟踪在电液位置系统中应用 第2篇

最优跟踪在电液位置系统中应用

对液压位置饲服系统进性了建模,并且采用最优控制理论使误差和控制能消耗最小.在反馈方式上不采用传统状态反馈方式,而采用液压系统固有的压力、伺服阀阀芯位移、位置传感器等信号进行反馈,从而不用构造状态观测器,简单、可行性好.和古典控制理论相比:有误差小,响应快,控制能耗小等优点.

作 者:杨逢瑜 张小安 肖飞 YANG Feng-yu ZHANG Xiao-an XIAO Fei 作者单位:兰州理工大学,流体动力与控制学院,甘肃,兰州,730050刊 名:液压与气动 ISTIC PKU英文刊名:CHINESE HYDRAULICS & PNEUMATICS年,卷(期):“”(5)分类号:HT137关键词:最优跟踪 位置控制 调节器

软件保护中的反跟踪技术 第3篇

关键词:调试器 断点 反加载 反监视 父进程

1、反调试

调试器是工作于CPU和操作系统之间,运行在Ring0级,能够调试操作系统内核的软件。Compuware NuMega公司的SoftICE 软件就是一个调试器,另外流行的还有OllyDbg和TRW2000。这些调试器可以将已经是机器码的EXE文件加载入内存,并可以完成单步运行、下断点等许多功能,软件如果没有反跟踪的机制,调试者利用这些调试器,可以单步跟踪、下断点、甚至可以跟踪分析得到注册算法做出注册机。

反调试技术中主要使用以下技术:

1.1句柄检测

利用CreateFileA()或_lopen()函数来获取SoftICE的驱动程序的句柄,如果成功,就说明SoftICE驻留在系统内存中,这时就可以采取退出、不让程序再往后正常运行或者其它措施,SoftICE驱动程序在9X核心的Windows中是“\.SICE”,在NT核心的Windows中是“\.NTICE”

下面是检测9x核心Windows中的SoftICE的VC++代码,NT核的代码类似。

BOOL IsSoftIce9xLoaded()

{

HANDLE hFile;

hFile = CreateFile( “\\.\SICE”,

GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ | FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL);

if( hFile != INVALID_HANDLE_VALUE )

{

CloseHandle(hFile);

return TRUE;

}

return FALSE;

}

1.2 利用UnhandledExceptionFilter函数检测

对于NT核心的Windows,如果SoftICE在运行,SoftICE会在kernel32!UnhandledExceptionFilter函数第一字节处设一个INT3指令,也就是用“CC”代替原来的“55”,以此来判断SoftICE是运行,下面的代码就是用来判断这一个字节是否被替换:

BOOL NT_IsSoftICELoaded()

{

FARPROC Uaddr ;

BYTE Mark = 0;

(FARPROC&) Uaddr =GetProcAddress (

GetModuleHandle(“kernel32.dll”),

“UnhandledExceptionFilter”);

Mark = *((BYTE*)Uaddr); // 取第一字节

if(Mark ==0xCC)

return TRUE;

else

return FALSE;

}

2、断点检测

下断点是调试器的一个最重要的功能,调试者设置一个断点时,就会发送一个命令给调试器,调试器接到这个命令后,就用INT 3指令的机器码0xCC替换断点地址的第一字节,以后程序运行到断点时(也就是执行了INT 3中断指令),调试器就会中断,并还原这句指令,也就是用原来的机器码替换0xCC 。

要检测调试器是否设置了断点,可以利用调试器对API设置断点时,会在函数前插入“INT 3”指令(机器码为0xCC)这个特点,检测函数首地址机器码是否被改为0xCC就可以知道是否被调试器设置了断点跟踪。可以使用C++内嵌汇编来实现检测:

BOOL IsBPX(void *address)

{

_asm{

mov esi,address

mov al,[esi]

cmp al,0xcc

je BPXed

}

return FALSE;

BPXed:

return TRUE;

}

3、反加載

如果调试者使用用户模式的调试器时(如OllyDbg),前面“反调试”中的方法就失效了,用户级调试器是使用Microsoft提供的DBGHELP.DLL来实现对软件跟踪调试的,被调试的软件的父进程就是调试器。可以下面的方法来检测用户级调试器是否存在:

3.1 调用API函数IsDebuggerPresent()来检测是否有用户级调试器存在

BOOL IsInDebugger()

{

HINSTANCE hInst = LoadLibrary(“kernel32.dll”);

if (hInst != NULL)

{

FARPROC pIsDebuggerPresent = GetProcAddress(hInst,

“IsDebuggerPresent”);

if (pIsDebuggerPresent != NULL)

return pIsDebuggerPresent();

}

return FALSE;

}

3.2 检测父进程

通常情况下,普通的Win32进程的父进程是Explorer.exe,所以可以采用遍历系统中所有进程,找到自已的进程后检测父进程是不是Explorer.exe,如果不是,则很可能是被其他程序或调试器加载了,这时就可以退出、不正常执行等多种方法。由于篇幅原因这里不把遍历和检测的代码写出了,主要用到的API函数有:

得到所有进程列表快照的函数:CreateToolhelp32Snapshot();

查找进程函数:Process32First()、Process32Next();

4、反监视

调试者常用各种监视工具辅助破解,比如:文件监视工具FileMon、注册表监视工具Regmon等,如果有这些监视工具存在,软件对于注册表、文件的操作就可被调试者轻易地发现了。检测监视工具是否驻留在内存中,可以采用搜索应用程序的窗口标题,或者是句柄检测的方法。

4.1 利用窗口标题检测

TCHAR AppName[]=Text(“窗口标题”);

hWnd=FindWindow(NULL,AppName);

if(hWnd==0)

没有检测到监视工具存在;

else

检测到监视工具存在;

下面是常见的两个监视工具的窗口标题

FileMon的窗口标题是:

“File Monitor-Sysinternals:www.sysinternals.com”

RegMon的窗口标题是:

“Rigistry Monitor-Sysinternals:www.sysinternals.com”

4.2 利用句柄检测

利用CreateFileA()等函数测试是否可获得监视程序的驱动程序句柄,如果成功,则说明监视程序驻留于内存中。

下面是常见的两个监视工具的驱动名:

FileMon的驱动名:“\.FILEVXD”

RegMon的驱动名:“\.REGVXD”

5、反静态分析

静态分析是指在反汇编出来的程序清单上分析程序流程,反静态分析技术主要是从扰乱汇编代码可读性入手,一般使用大量的花指令、将提示信息隐藏等。

5.1 扰乱汇编代码

在关键部位插入大量无用的运算以误导破解者,比如添加大量的跳转指令、比较指令,以及一些循环等。

5.2 花指令

用花指令可以有效地防止调试者把反汇编出来的程序代码打印出来慢慢分析。X86指令体系中,不同的机器指令包含的字节数并不相同,有的是单字节指令,有的是多字节指令。对于多字节指令,反汇编软件需要确定指令的第一个字节的起始位置,也就是操作码的位置,这样才能正确地反汇编这条指令,否则它就可能反汇编成另外一条指令了。“花指令”就是在指令流中插入很多“垃圾”,干扰反汇编软件的判断,从而使它错误地确定指令的起始位置,这样就不能正确地反汇编出软件的汇编代码了。

6、文件完整性检验

对软件主执行程序以及使用到的DLL的完整性检查可以防止破解者对执行程序和DLL的修改,可达到防止爆破、防止重要信息被非法修改。

可采用CRC磁盘文件校验的方法,也可使用检测PE(Win32可执行文件)可选映像头的CheckSum字段的校验和的方法,Windows提供了一個API函数MapFileAndCheckSumA来测试文件的CheckSum 。

7、代码与数据结合

一般情况下,程序代码和数据是分开的,如果将序列号(也叫授权号、注册码)与程序代码结合起来,那么在得到正确序列号前,结合起来的那段代码是不可用的。实现原理如下:

在软件程序中有一段加密过的密文C,这个C可以是注册版本中的一段关键代码,也可以是使用注册版程序的某个功能所必需的数据;

当用户输入用户名和序列号之后,计算解密用的密钥:密钥=F(用户名,序列号);

对密文进行解密:明文=Decrypt(密文C,密钥);(Decrypt为解密函数)

利用SEH(结构化异常处理)技术处理解密出来的代码,如果序列号不正确,产生的是垃圾代码一定会导致异常发生;如果序列号正确,则生成的代码正常,不会导致异常产生

参考文献:

1、邓安文. 《密码学——加密演算法》. 中国水利水电出版社. 2006年03月

2、段钢. 《加密与解密》. 电子工业出版社2003.09

上一篇:九年级的历史教学下一篇:人文形象