带死区温度控制系统_第1页
带死区温度控制系统_第2页
带死区温度控制系统_第3页
带死区温度控制系统_第4页
带死区温度控制系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#目录实习内容及其要求……………02AC6611多功能过程通道卡……………………02功能特点与技术指标……………………02应用方法和步骤……………03方案设计………………………03加热器的过程特性………03加热器温度控制系统的实现方案………03AC6611和加热器接线图设计……………03控制程序的方案设计和模块划分…………04数据采集与输出程序设计……………………04AC6611数据采集与温度换算程序………04控制量与D/A代码换算及输出程序……05控制算法程序设计…………05显示曲线的程序实现……………………055.2带死区PID算法06PID算法程序设计07控制程序的调试………………07主要调试内容………………07调试方法……………………07调试步骤和结果……………08七PID参数的整定08整定方法……………………08整定结果及分析……………08八技术小结………………………08九参考文献………………………09附录……………10一、实习内容及其要求实习目的:通过实训,让学生了解计算机控制系统的基本组成,提出计算机控制系统的设计思路,初步学会计算机控制系统软硬件设计及调试的方法,具备技术实现能力;基本上能够处理实践过程中出现的问题并提出解决办法,进一步提高学生的计算机应用水平。实习内容:通过温度的设定值和反馈值,计算其偏差,并使用带死区PID控制算法输出控制信号,整定PID参数,使被控的温度达到设定值。具体实训内容包括AC6611过程卡的接线和测试、数据采集程序设计、PID算法程序设计、控制输出程序设计、人机界面程序设计、PID参数整定、实训报告。要求:完成带死区PID温度控制系统的设计和调试过程。二、AC6611多功能过程通道卡AC6611是一款廉价通用A/D、D/A板,AD工作在查询方式,采用PCI总线支持即插即用、无需地址跳线。AC6611具有16路单端模拟输入、32路开关量(16路输入及16路输出)、一路12位D/A。AC6611采用大规模可编程门阵列设计,提高可靠性。功能特点与技术指标模拟量模拟量输入(A/D)A/D转换器:120KHZ,12位A/D,ADS7816,A/D内置采样保持器。工作方式:软件查询。16路单端输入,输入阻抗:1MQ最大输入耐压电压:<+12V/—5.5V,瞬时输入耐压:-25V-+30V连接器:DB25孔式输入连接器。A/D最大通过率:70KHZ,输入通道建立时间<8us。双极性输入范围:“,单极性输入范围:5V、10V。输入范围跳线器选择。5V对应输入幅度及精度如下表1所示:输入系统精度(FSR)跳字0—10V0.1%1LSB

(2)模拟量输出(D/A)1路12位DA,分辨率12位,精度:0.2%,最大输出电流:5毫安。输出零点误差小于±10毫伏。输出范围:10伏、±10伏,跳线器选择。0-5V0.1%±1.5LSB0-5V0.1%±1.5LSB-5V-+5V0.1%土1LSB输出插座:DB25(孔)连接器。表1开关量输入/输出16路开关量输入(2个8位),16路开关量输出(2个8位)TTL电平(兼容3伏逻辑)开关量输出复位后为输出为低电平“0”。输出高电压>2.5V,低电压<0.5V,最大输出电流:8mA输入电流:<0.1mA输入高电压门限:〉2V,低电压:〈0.8V。输入耐压:高电平最大耐压:8伏,低电平:-0.4伏。连接器:40脚扁平电缆插座。系统符合PCIV2.1标准,供电:+5伏、+12伏、-12伏。AC6611占用64个I/O选通空间(自动分配)。工作温度:0-70°C,尺寸:12(W)X9(H)(厘米)应用方法和步骤(1)AC6611与端子板接线如下图1所示图1连接:图1安装AC6611驱动,安装步骤如下:1、关闭计算机的电源;2、将ac6611板卡插入PCI槽中;3、打开计算机电源,启动Windows2000;4、Windows2000将会显示找到新硬件,可按找到新硬件向导进行下一步;5、选择搜索适用与我的设备的驱动程序(推荐),下一步;6、选择驱动所在目录,进行安装(\ac6611\driver\);7、按找到新硬件向导的提示进行下一步;8、Windows2000将显示完成添加/删除硬件向导,单击完成即可完成安装过程安装AC6611的驱动程序,安装完成后需要运用AC6611(静态)测试程序对AC6611板卡的功能进行测试,以检查AC6611卡是否完好和正确,测试程序界面如下图2所示。设置好AC6611的模拟输入范围及DA量程跳线器,关掉PC机电源,将AC6611插入主机的任何一个PCI插槽中并将外部的输入、输出线连好。选择输入输出范围为0-10V,然后接入端子板,就可以连接对象的进行采集和控制。在静态测试完成后,就可以编程对AC6611进行测试,其步骤如下:1)加载DLL;调用AC6611_CreateDevice()调用AC6611_AD();调用AC6611_DA();调用AC6611_DI();调用AC6611_DO();AC6611_CloseDeivce()。三、方案设计加热器的过程特性加热器的工作原理是把一个匝数较多的初级线圈和一个匝数较少的次级线圈装在同一个铁芯上。输入与输出的电压比等于线圈匝数之比,同时能量保持不变。因此,次级线圈在低电压的条件下产生大电流。我们这次做的死区PID温度控制系统中,使用的加热器其加热范围是o-ioo°c。在加热器加热的过程中,通过死区PID算法的控制,使其温度稳步地逼近设定值,并在允许的偏差范围内有较小的波动。加热器温度控制系统的实现方案硬件上我们采用的是AC6611板卡、AC157接线板和一个专用加热器。在软件上我们采用的标准的PID控制算法对其进行的控制输出。从而有机的把软硬件整合成为一个整体,构成一个比较简易的加热器温度控制系统。AC6611和加热器接线图设计实验室用的加热器是通过温度传感器,转换成了标准的工业标准(4MA—20MA)。参照AC6611板卡手册,最大输入耐压电压:<+12V/—5.5V,瞬时输入耐压:-25V-+30V,DB25孔式输入连接器。输入:双极性输入范围:5V,单极性输入幅度:5伏、10伏。为此我们选择0—10V为益。所以AC6611和加热器接线图要满足要求,可以做一个I/V变换在变送器的输出端串一个500欧的电阻,板卡采集的电压范围就在2—10V,这样在程序中做一个标度变换就能实现温度OC—100C的显示。其接线图如图3所示。

图3AC6611与加热器的接线图3.4控制程序的方案设计和模块划分控制程序的方案设计主要分为以下三点:第一,界面设计,界面如图4所示第二,数据采集处理程序的设计;第三,程序设计。图4界面设计包括趋势曲线,设定值,过程量,控制量的显示,死区设定值的显示以及PID参数整定值的显示等。数据采集和处理程序设计包括AC6611数据采集程序、D/A输出程序、标度换算等程序设计。PID控制算法程序包括基本PID算法、死区控制等程序的设计。1)在趋势曲线的显示时,我们分别用红、蓝、绿三种颜色的线条显示SP、PV和MV的相应实时值,MV值来自于PID算法的输出。2)在编辑栏中我们可以修改死区PID控制算法相应的参数P、I、D及死区的值。当修改完成后,我们可以点击确认按钮,将修改后的参数送入到算法程序中去。数据采集齐全后可点击退出,结束运算。四、AC6611数据采集与温度换算程序AC6611数据采集与温度换算程序AC6611数据采集第一个步骤调用动态链接库,然后加入头文件(一些函数的申明)。硬件连接好就直接调用AC6611_AD()函数,就可以把板卡寄存器中的数据读入电脑内存中,提供给程序计算。温度换算程序的设计要考虑到我们采集的数据是2—10V,而实际的温度则是0—100度,如果要达到可视化的目的,必须做一个转换算法:unsignedlongad_data;AC6611_AD(hDevice,14,&ad_data);//采集数值0-4095adv=ad_data*10.0/4095.0;//转换为电压PV=(adv-2.0)*100.0/(10.0-2.0);//转换为温度Edit12->Text=FloatToStrF(PV,2,3,4);//显示输出温度4.2控制量与D/A代码换算及输出程序从图5中可以看到,通过当前温度的数据采集,然后与设定值进行比较,然后利用基本PID算法,就可得出控制量。图5加热器温度控制图控制量与D/A转换代码如下:void__fastcallTForm1::Timer1Timer(TObject*Sender){unsignedlongad_data;unsignedlongda;AC6611_AD(hDevice,14,&ad_data);//采集数值0-4095adv=ad_data*10.0/4095.0;//转换为电压PV=(adv-2.0)*100.0/(10.0-2.0);//转换为温度Edit12->Text=FloatToStrF(PV,2,3,4);//显示输出温度En=SP-PV;if(fabs(En)>PID_DB)//PID死区功能{DeltaUn=q0*En+q1*En1+q2*En2;Un=Un1+DeltaUn;if(Un>100.0)Un=100.0;if(Un<0)Un=0;Un1=Un;En2=En1;En1=En;}elseUn=Un1;da=(unsignedshortint)(Un*4095.0/100.0);AC6611_DA(hDevice,da);}输出程序包括PID参数设定显示,量程显示,设定温度显示,当前温度显示,PID输出显示,为了避免重复,这里只介绍PID参数设定显示和设定温度显示程序,其程序如下:五、控制算法程序设计显示曲线的程序实现t1++;for(inti=0;i<479;i++){pvtrend[i]=pvtrend[i+1];pvtrend[479]=300*PV/(HS-LS);sptrend[i]=sptrend[i+1];sptrend[479]=300*SP/(HS-LS);mvtrend[i]=mvtrend[i+1];mvtrend[479]=300*Un/100.0;}Image2->Picture->LoadFromFile("bangtu.bmp");Image2->Canvas->Pen->Color=clRed;Image2->Canvas->Pen->Width=5;Image2->Canvas->MoveTo(35,294);Image2->Canvas->LineTo(35,294-SP*288/(HS-LS));Image2->Canvas->Pen->Color=clBlue;Image2->Canvas->MoveTo(55,294);Image2->Canvas->LineTo(55,294-PV*288/(HS-LS));Image2->Canvas->Pen->Color=clGreen;Image2->Canvas->MoveTo(70,294);Image2->Canvas->LineTo(70,294-Un*288/100.0);//绘制趋势曲线Image1->Picture->LoadFromFile("qushi.bmp");Image1->Canvas->Pen->Width=1;Image1->Canvas->Pen->Color=clRed;Image1->Canvas->MoveTo(0,300);for(inti=0;i<480;i++)Image1->Canvas->LineTo(i,300-sptrend[i]);Image1->Canvas->Pen->Color=clBlue;Image1->Canvas->MoveTo(0,300);for(inti=0;i<480;i++)Image1->Canvas->LineTo(i,300-pvtrend[i]);Image1->Canvas->Pen->Color=clGreen;Image1->Canvas->MoveTo(0,300);for(inti=0;i<480;i++)Image1->Canvas->LineTo(i,300-mvtrend[i]);带死区PID算法带死区PID算法的控制框图如图6所示:图6通过设定值与过程量的比较,产生一个偏差,若偏差在死区之外,则做基本PID运算,若偏差在死区之内,则使PID输出保持上一时刻输出值不变。相应算式为:e(k),当r(k)-y(k)=e(k)>£P(k)=s0,当r(k)-y(k)=e(k)<£V带死区PID算法程序设计En=SP-PV;if(fabs(En)>PID_DB)//PID死区功能{DeltaUn=q0*En+q1*En1+q2*En2;Un=Un1+DeltaUn;if(Un>100.0)Un=100.0;if(Un<0)Un=0;Un1=Un;En2=En1;En1=En;}elseUn=Un1;q0=(100.0/P)*(1+TS/I+D/TS);q1=-(100.0/P)*(1+2*D/TS);q2=(100.0/P)*D/TS;其中,P为比例带参数,I为积分时间,D为微分时间。六、控制程序的调试主要调试内容通道数据的采集以及输出控制调试;曲线的显示和棒图显示调试;PID控制算法调试。调试方法通道的数据采集调试主要是看A/D,D/A转换是否正确,运行程序,观察输出温度变化,在加热器未加热之前,此时观察到得温度应与室温相差不大,否则就是A/D,D/A变换或标度变换出现了问题,应再次检查程序。曲线的显示和棒图显示调试首先检查曲线显示和棒图显示的尺寸是否符合要求,按规定曲线显示图片尺寸应为480*300,棒图应为100*300,运行程序,观察各曲线走势是否正常,如不正常则检查程序是否写对,应特别注意零点的变化,调整好各种曲线的颜色和粗细。PID控制算法调试主要验证PID算法是否正确,由于采用的是基本PID的增量式算法,如果发现算法错误,对照书上进行检查即可,主要调试内容在于死区,为了进行有效的调试,应先使PID具有一定的输出值,就是先设定一个值,使得偏差位于死区之外,然后检查死区是否起作用,输入一个设定值使偏差位于死区之内,观察此时PID输出。调试步骤和结果调试步骤应先进行硬件调试,后进行软件调试,硬件调试包括各种板卡,器件以及接线等的检查,数据的采集,界面的布置等,软件调试包括数据的转换是否正确,曲线的绘制是否正确,数据是否可以正确显示,算法是否正确等。调试好了之后,显示结果应是曲线显示三根颜色不同的线,并与SP,PV,MV的值相对应,当然,棒图的变化也能够反应这些值的变化,要求设置的参数可以随意设置这些功能全部正常实现。七、PID参数的整定PID比例积分微分各环节的特点:(1)比例调节的特点:1、调节作用快,系统一出现偏差,调节器立即将偏差放大K倍输出;2、系统存在余差。K越小,过渡过程越平稳,但余差越大;K增大,余差将减小,但是不能完全消除余差,只能起到粗调作用,但是K过大,过渡过程易振荡,K太大时,就可能出现发散振荡。(2)积分调节的特点:积分调节作用的输出变化与输入偏差的积分成正比,积分作用能消除余差,但降低了系统的稳定性,T1由大变小时,积分作用由弱到强,消除余差的能力由弱到强,只有消除偏差,输出才停止变化。(3)微分调节的特点:微分调节的输出是与被调量的变化率成正比,在引入微分作用后能全面提高控制质量,但是微分作用太强,会引起控制阀时而全开时而全关,因此不能把T2取的太大,当T2由小到大变化时,微分作用由弱到强,对容量滞后有明显的作用,但是对纯滞后没有效果。整定方法及结果分析(1)在整定过程中,感到经验凑试法在实践中最为实用。在整定参数时,必须认真观察系统响应情况,根据系统的响应情况决定调整那些参数。观察系统响应效果,可以通过查看控制回路细目画面中的实时趋势曲线,衰减曲线最好是4:1,即前一个峰值与后一个峰值的比值为4:1。(2)根据整定方法整定得出一组比较好的参数,PID中:16<P<20;5<TI<10;0.5<TD<5;从曲线图中也可以看出加热器也是一个带惯性的一介对象。8、技术小结我在此次实训中认识到这次实习更加的综合一些,要用到以前学过的CB编辑器、C语言、《计算机控制技术》和《自动控制原理》综合知识。灵活运用上面的只是,得到在实习中的经验,从而可以使我们的综合应用能力得到了提高。在实验和以后的工作中,认识到外部硬件(板卡)与PC的底层硬件连接,windows操作系统对这两部分的硬件通过硬件商提供的硬件驱动和动态链接库实现数据交换,实际是windows与板卡的寄存器实现数据交换。当然在实习中约到了很多困难,比如pv的值调整很慢,达到稳定后仍然有波动,这里可能是PID参数的问题,也有的是正常原因,因为温度很难控制在一个特定的温度不变,仍有些波动是正常的。最后完成了这次实训,学到了很多东西,感到很有它的价值所在。参考文献1】陆卫忠.C++Builder程序设计教程.2版.北京.科学出版社,2009.2】于海生.计算机控制技术.北京.机械工业出版社,2007.3】(荷)AndrewS.Tanenbaum.现代操作系统.北京:机械工业出版社,2009【4】叶蓓华•数字控制技术[M].北京:清华大学出版社,2002.附录:模块及算法程序://#include<vcl.h>#pragmahdrstop#include"Unit1.h"//#pragmapackage(smart_init)#pragmaresource"*.dfm"floatSP=6.0,PV=0.0,MV=0.0,SP_T=0;floatHS=10.0,LS=2.0,HL=7.5,LL=2.5;floatP=0.5,I=10,D=5,T=1.0,Tf=1.0;floatUk=0.0,Uk1=0.0,DeltaUk=0.0,DeltaUk1=1.0;floatEk=0.0,Ek1=0.0,Ek2=0.0;floata,q0,q1,q2;intpvtrend[480];intsptrend[480];intmvtrend[480];TForm1*Form1;//__fastcallTForm1::TForm1(TComponent*Owner):TForm(Owner){}//void__fastcallTForm1::FormCreate(TObject*Sender){hDLL=LoadLibrary("ac6611.dll");if(hDLL!=NULL)Label1->Caption="AC6611.dllloadok!";(FARPROC&)AC6611_CreateDevice=GetProcAddress(hDLL,"AC6611_CreateDevice");//创建驱动句柄(FARPROC&)AC6611_CloseDevice=GetProcAddress(hDLL,"AC6611_CloseDevice");//关闭驱动句柄(FARPROC&)AC6611_DI=GetProcAddress(hDLL,"AC6611_DI");//数字量输入,port=0-1两个通道,8位数据由DiData返回(FARPROC&)AC6611_DO=GetProcAddress(hDLL,"AC6611_DO");//数字量输出,port=0-1两个通道,8位数据由DoData输出(FARPROC&)AC6611_DiBit=GetProcAddress(hDLL,"AC6611_DiBit");//数字量输入,port=0-1两个通道,指定位输入(FARPROC&)AC6611_DoBit=GetProcAddress(hDLL,"AC6611_DoBit");//数字量输出,port=0-1两个通道,指定位输出(FARPROC&)AC6611_DA=GetProcAddress(hDLL,"AC6611_DA");//DA输出,0-4095(FARPROC&)AC6611_VoltageToDA=GetProcAddress(hDLL,"AC6611_VoltageToDA");(FARPROC&)AC6611_AD=GetProcAddress(hDLL,"AC6611_AD");〃通用AD采样(FARPROC&)AC6611_AD_CHN=GetProcAddress(hDLL,"AC6611_AD_CHN");〃设置AD通道0-15(FARPROC&)AC6611_ADS=GetProcAddress(hDLL,"AC6611_ADS");//直接AD采样,为单通道AD采样设计(FARPROC&)AC6611_ADToVoltage=GetProcAddress(hDLL,"AC6611_ADToVoltage");//创建驱动,选//创建驱动,选择第0块卡if(hDevice!=-1){Label2->Caption="AC6611CardIsExist!";}else{Label2->Caption="AC6611CardIsnotExist!";}}//void__fastcallTForm1::Timer1Timer(TObject*Sender){unsignedlongad;unsignedlongda;/*AC6611_AD(hDevice,5,&ad);//tongdaoPV=ad*(HS-LS)/4095.0;Edit14->Text=FloatToStrF(PV,0,4,4);*/PV=StrToFloat(Edit14->Text);floatTemp=(PV-LS)*100/(HS-LS);SP_T=(SP-LS)*100/(HS-LS);Edit1->Text=FloatToStrF(Temp,0,4,4);Ek=SP-PV;DeltaUk=a*DeltaUk1+(1-a)*(q0*Ek+q1*Ek1+q2*Ek2);Uk=Uk1+DeltaUk;if(Uk>100.0)Uk=100.0;if(Uk<0)Uk=0;DeltaUk1=DeltaUk;Uk1=Uk;Ek2=Ek1;Ek1=Ek;da=(unsignedshortint)(Uk*4095.0/100.0);AC6611_DA(hDevice,da);MV=Uk;Edit15->Text=FloatToStrF(MV,0,4,4);for(inti=0;i<479;i++){pvtrend[i]=pvtrend[i+1];sptrend[i]=sptrend[i+1];mvtrend[i]=mvtrend[i+1];}pvtrend[479]=300*PV/(HS-LS);sptrend[479]=300*SP/(HS-LS);mvtrend[479]=300*MV/100.0;//绘制趋势曲线Image1->Picture->LoadFromFile("qushi.bmp");Image1->Canvas->Pen->Width=1;Image1->Canvas->Pen->Color=clBlue;Image1->Canvas->MoveTo(0,300);for(inti=0;i<480;i++)Image1->Canvas->LineTo(i,300-sptrend[i]);if(Temp<30)Label27->Color=clFuchsia;if(30<Temp&&Temp<80)Label27->Color=clBlack;if(Temp>80)Label27->Color=clRed;if(Temp<30)Image1->Canvas->Pen->Color=clFuchsia;if(30<Temp&&Temp<80)Image1->Canvas->Pen->Color=clBlack;if(Temp>80)Image1->Canvas->Pen->Color=clRed;Image1->Canvas->MoveTo(0,300);for(inti=0;i<480;i++)Image1->Canvas->LineTo(i,300-pvtrend[i]);Image1->Canvas->Pen->Color=clGreen;Image1->Canvas->MoveTo(0,300);for(inti=0;i<480;i++)Image1->Canvas->LineTo(i,300-mvtrend[i]);Image2->Picture->LoadFromFile("bangtu.bmp");Image2->Canvas->Pen->Color=clRed;Image2->Canvas->Pen->Width=5;Image2->Canvas->MoveTo(35,294);Image2->Canvas->LineTo(35,294-SP*288/(HS-LS));if(Temp<30)Image2->Canvas->Pen->Color=clFuchsia;if(30<Temp&&Temp<80)Image2->Canvas->Pen->Color=clBlack;if(Temp>80)Image2->Canvas->Pen->Color=clBlack;Image2->Canvas->MoveTo(55,294);Image2->Canvas->LineTo(55,294-PV*288/(HS-LS));Image2->Canvas->Pen->Color=clBlue;Image2->Canvas->MoveTo(70,294);Image2->Canvas->LineTo(70,294-MV*288/100.0);}//void__fastcallTForm1::Button1Click(TObject*Sender){HS=StrToFloat(Edit3->Text);LS=StrToFloat(Edit4->Text);HL=StrToFloat(Edit5->Text);LL=StrToFloat(Edit6->Text);P=StrToFloat(Edit8->Text);I=StrToFloat(Edit9->Text);D=StrToFloat(Edit10->Text);Tf=StrToFloat(Edit12->Text);q0=(100.0/P)*(1+T/I+D/T);q1=-(100.0/P)*(1+2*D/T);q2=(100.0/P)*D/T;SP=StrToFloat(Edit13->Text);}//void__fastcallTForm1::Button2Click(TObject*Sender){Close();}//驱动加载程序://#ifndefUnit1H#defineUnit1H//#include<Classes.hpp>#include<Controls.hpp>#include<StdCtrls.hpp>#include<Forms.hpp>#include<ExtCtrls.hpp>#include<Graphics.hpp>#include<ComCtrls.hpp>//classTForm1:publicTForm{__published://IDE-managedComponentsTTimer*Timer1;TPageControl*PageControl1;TTabSheet*TabSheet2;TLabel*Label1;TLabel*Label2;TImage*Image1;TLabel*Label4;TLabel*Label5;TLabel*Label6;TLabel*Label7;TLabel*Label8;TLabel*Label9;TLabel*Label10;TLabel*Label11;TLabel*Label12;TLabel*Label13;TLabel*Label14;TLabel*Label15;TLabel*Label17;TLabel*Label18;TLabel*Label19;TLabel*Label21;TLabel*Label22;TLabel*Label23;TLabel*Label24;TLabel*Label26;TLabel*Label27;TLabel*Label29;TImage*Image2;TLabel*Label16;TLabel*Label3;TButton*Button1;TEdit*Edit3;TEdit*Edit4;TEdit*Edit5;TEdit*Edit6;TEdit*Edit8;TEdit*Edit9;TEdit*Edit10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论