纯电动汽车冷却系统分为2个独立的系统:PEB/驱动电机冷却系统和电池冷却系统。
电机冷却系统处于较低温度时,冷却液泵不工作。温度上升后,冷却液泵工作。冷却液泵的工作温度不能超过7 5℃,最合适的工作温度应该低于65℃。PEB/电机冷却液泵安装在前右纵梁上
BMS用于控制电池冷却系统电动水泵,在电池温度上升到32 5℃时开启,在温度低于27 5℃时关闭。BMS发出要求电池冷却器膨胀阀关闭和水泵运转的信号。20℃时电池的冷却液泵电阻值为1M左右。电池冷却液泵安装在车身底盘上膨胀水箱盖的额定压力为140kPa
元件作用:控制电子风扇运转,不提供信号给仪表。PEB计算冷却液温度并将它与PEB冷却温度传感器信号进行比较,判断是否需要使用PEB冷却液温度传感器控制冷却风扇运转。电池冷却系统温度传感器在电池组内部,从外面看不到。
电池冷却器(Chiller)安装在车身底盘中部,位置见图5。其组成部件为热交换器、带电磁阀的膨胀阀(TXV)、管路接口和支架。电池冷却器主要用于完成电池冷却液和制冷系统的制冷剂的热交换,将电池冷却液中的热量转移到制冷剂中。
电池冷却器一膨胀阀控制/冷却液温度控制如下所述。
ETC收到BMS的膨胀阀电磁阀开启的信号要求,首先打开电池冷却器膨胀阀的电磁阀,并给EAC发启动信号。电池组最适宜温度值为20~30℃。当电池的冷却液温度在30℃以上时,ETC限制乘客舱制冷量;当冷却液温度在48℃以上时,ETC关闭乘客舱制冷功能,但除霜模式除外。ETC只控制冷却液温度。BMS控制冷却液与BMS电池内部的热量交换(控制冷却泵)。快速充电冷却必要条件:快速充电时,会被网关模块唤醒,此时电池冷却系统进人正常工作状态。
冷却风扇受VCU控制。冷却风扇工作时,VCU控制PWM模块使冷却风扇以在20%~90%的占空比范围内的8个挡位的速度工作。冷却风扇开启条件取决于EAC和PEB冷却液温度这两个重要因素。当EAC开启或PEB冷却液温度高于52℃时,冷却风扇即开始工作。冷却风扇停止工作条件:PEB冷却液温度低于65℃(实测47℃),并且EAC关闭。点火开关关闭、EAC关闭时,若PEB冷却液温度高于6 5 ℃,则冷却风扇继续工作:环境温度低于10℃时工作30s;环境温度高于10℃时工作60s。
楼上们说的都是最后的方法了。
你先试试我的这个几办法:
1、关于d出或重新启动,很有可能是驱动不兼容。
你应该在“驱动之家”需要合适你主板的驱动。或直接去官方网站寻找。
你的主扳的官方网站:>
很高兴为您解答:
软件需要更新,(腾讯电脑管家,软件升级,下载,覆盖安装,winrar可以不升)
系统有新的漏洞等待安装,(打开腾讯电脑管家一漏洞修复一扫描修复)
显卡或内存cpu,或风扇的接触不良和松动或有灰尘覆盖,(拔下橡皮擦擦)
内存cpu过热,散热性不好!(开机时间不要太长,关机散热)
电脑存在恶评插件! (扫描出来,立即清理)或磁盘碎片过多,(使用腾讯电脑管家),清理碎片!
祝楼主工作顺利、生活愉快!!
一. 什么是动态连接库
动态连接库使用标准的PE文件格式,在动态连接库里可以定义资源并使用各种资源,并且可以导入并使用其它动态连接库里定义的函数(动态连接库嵌套)。它提供函数给其它程序在运行的时候调用。通常动态连接库文件的扩展名是dll,但是系统中某些exe文件,字体文件fon,一些驱动程序drv,各种控件ocx和输入法模块ime等都是动态连接库。
二. 动态连接库框架
;--------------------------------------------------------------------------------------
;DLLSkeletonasm
;--------------------------------------------------------------------------------------
386
modelflat,stdcall
optioncasemap:none
include\masm32\include\windowsinc
include\masm32\include\user32inc
include\masm32\include\kernel32inc
includelib\masm32\lib\user32lib
includelib\masm32\lib\kernel32lib
data
code
DllEntryprochInstDLL:HINSTANCE,reasonWORD,reserved1WORD
moveax,TRUE
ret
DllEntryEndp
;---------------------------------------------------------------------------------------------------
;下面是一个空函数,您可以象下面一样插入您的函数。
;----------------------------------------------------------------------------------------------------
TestFunctionproc
ret
TestFunctionendp
EndDllEntry
;-------------------------------------------------------------------------------------
;DLLSkeletondef
;-------------------------------------------------------------------------------------
LIBRARYDLLSkeleton
EXPORTSTestFunction
1入口点和初始化代码
DllEntryprochInstDLL:HINSTANCE,reasonWORD,reserved1WORD
moveax,TRUE
ret
DllEntryEndp
每一个动态连接库必须有一个入口函数,以方便 *** 作系统使用。(注意入口函数对调用的应用程序是透明的)函数的名称是什么没有特定的要求,但是格式是有规定的。看看什么情况下要用到入口函数:
■当动态链接库被加载时
■当动态链接库卸载时
■同一进程的线程生成时
■同一进程的线程退出时
hInstDLL是该动态链接库模块的句柄。它和进程的实例句柄不一样。如果您以后要用,可以保存它,因为以后再要获得它不容易。
根据不同的时机,reason传入的值可能是下面的四个值中的一个:
DLL_PROCESS_ATTACH动态链接库第一次插入进程的地址空间时。当传入的参数是该值时,可以做一些初始化的工作。
DLL_PROCESS_DETACH动态链接库从进程的地址空间卸出时。可以在此做一些清理的工作。譬如:释放内存等。
DLL_THREAD_ATTACH新线程生成。
DLL_THREAD_DETACH线程销毁。
如果想要库中的代码继续执行,返回TRUE,否则返回FALSE,那样动态链接库就不会加载了。譬如:想分配一块内存,如果不成功的话就退出,这时就可以返回FALSE。那样动态链接库就不会加载了。可以加入的函数,它们的位置并不重要,把它们放在入口点函数的前面或后面都可以。只是如果您想要它们能被其它的程序调用的话,就必须把它们的名字放到模块定义文件(def)中去。
动态链接库在它们自己的编译过程就需要,而不只是提供给其它要引用它的程序参考。它们如下:
LIBRARYDLLSkeleton
EXPORTSTestFunction
第一行是必须的。LIBRARY定义了DLL的模块名称。它必须和动态链接库的名称相同。
EXPORTS关键字告诉链接器该DLL的引出函数,也就是其它程序可以调用的函数。举个例子:其它的程序想要调用函数TestFunction,我们就把它放到EXPORTS中。
2链接选项
链接器的选项中必须放入开关项:/DLL和/DEF,就像下面这样:
link/DLL/SUBSYSTEM:WINDOWS/DEFLLSkeletondef/LIBPATH:c:\masm32\libDLLSkeletonobj
编译器的开关选项是一样的,即:/c/coff/Cp。在链接好后,链接器会生成lib和dll文件。前者是引入库,当其它的程序要调用自己的动态链接库中的函数时就需要该引入库,以便把必要的信息加入到其可执行文件中去。
三. 动态连接库的调用方法
1在include文件定义的时候包含动态连接库的rc和lib库文件,在程序中直接调用动态连接库里的函数
2动态加载所需的DLL。
那我们该如何解决这个问题呢?
在Windows中提供了两个函数LoadLibrary和GetProcAddress,LoadLibrary函数用来动态加载DLL,而GetProcAddress函数用来从某个DLL中获取指定函数的地址。这两个函数的用法如下:
HINSTANCELoadLibrary(
LPCTSTRlpLibFileName//addressoffilenameofexecutablemodule
);
FARPROCGetProcAddress(
HMODULEhModule,//handletoDLLmodule
LPCSTRlpProcName//nameoffunction
);
LoadLibarary函数用来加载一个DLL模块,如果成功,则返回该模块的句柄。这个句柄可以用于GetProcAddress函数。而GetProcAddress函数则从DLL模块中查找特定函数名的函数的地址。例如下面两句代码就是从kernel32dll中取得CreateProcess函数的地址:
HMODULE hModule=LoadLibrary(“kernel32dll”);
FARPROC fn=GetProcAddress(hModule,”CreatePrcess”)
但现在又出现了一个问题,函数LoadLibrary和GetProcAddress的地址又从哪得到呢?这就像一个现有鸡还是先有蛋的问题一样。
在WinNT中,进程的环境块(PEB)地址总是在0x7FFDF000处。而在PEB中由该进程加载的每个DLL的地址,当然包括Kernel32dll的地址。找到Kernel32dll的地址之后,就可以通过Kernel32dll的PE文件头找到其导出函数表,再查找该导出函数表就可以找到函数“GetProcAddress”的地址,之后就可以通过GetProcAddress函数得到“LoadLibrary”的地址了。
完成这个功能的Win32汇编代码给出。
;
;下面这部分汇编需要对PEB结构非常的了解
;
mov eax,7FFDF00Ch
;7FFDF000的位置是PEB的位置,其偏移0x0C(即7FFDF00Ch)是PEB_LDR_DATA结构
mov eax,dwordptr[eax]
mov esi,dwordptr[eax+1Ch]
;在PEB_LDR_DATA+0x1c地方就是一些动态连接库的地址了,如第一个指向ntdlldll
;第二个就是我们需要的kernel32dll的地址,第三个是msvcrtdll,一个指针链表
lodsd
mov eax,dwordptr[eax+8]
;此时得到了Kernel32dll的位置,eax等于77E60000
mov [ebx+hModule],eax
;此时hModule等于kernel32dll的位置,即77E60000
;
;从PE文件头的数据目录获取导出表地址
;
mov esi,[ebx+hModule]
add esi,[esi+3ch]
assume esitrIMAGE_NT_HEADERS
mov esi,[esi]OptionalHeaderDataDirectoryVirtualAddress
add esi,[ebx+hModule]
assume esitrIMAGE_EXPORT_DIRECTORY
;esi指向kernel。dll的导出表
;
;查找符合名称的导出函数名
;
mov eax,[esi]AddressOfNames
add eax,[ebx+hModule]
xor edx,edx
repeat
push esi
mov edi,[eax]
add edi,[ebx+hModule]
lea esi,[ebx+offset_szGetProcAddress]
mov ecx,14
repz cmpsb
if ZERO
pop esi
jmp @F
endif
pop esi
add eax,4
inc edx
until edx>= [esi]NumberOfNames
jmp return
@@:
;
;API名称索引-->序号索引-->地址索引
;
sub eax,[esi]AddressOfNames
sub eax,[ebx+hModule]
shr eax,1
add eax,[esi]AddressOfNameOrdinals
add eax,[ebx+hModule]
movzx edx,wordptr[eax]
shl edx,2
add edx,[esi]AddressOfFunctions
add edx,[ebx+hModule]
;
;从地址表得到导出函数地址
;
mov eax,[edx]
add eax,[ebx+hModule]
;取得GetProcAddress函数的地址
mov [ebx+_lpGetProcAddress],eax
;取得LoadLibrary函数的地址
lea esi,[ebx+offset_szLoadLibrary]
_invoke [ebx+_lpGetProcAddress],[ebx+hModule],esi
mov [ebx+_lpLoadLibrary],eax
assume esi:nothing
以上就是关于请问ZXJ10程控交换机中用户模拟板中编解码芯片PEB2466或者PEB2446的工作原理是什么全部的内容,包括:请问ZXJ10程控交换机中用户模拟板中编解码芯片PEB2466或者PEB2446的工作原理是什么、求组成Windows内核的前十条汇编指令、荣威E50电池冷却控制单元ECT-ECU 是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)