基于FPGA的步进电机的PWM控制-细分驱动的实现解读_第1页
基于FPGA的步进电机的PWM控制-细分驱动的实现解读_第2页
基于FPGA的步进电机的PWM控制-细分驱动的实现解读_第3页
基于FPGA的步进电机的PWM控制-细分驱动的实现解读_第4页
基于FPGA的步进电机的PWM控制-细分驱动的实现解读_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、山东大学威海分校课程设计报设计题目:一基于FPGA的步进电机的PWM控制一细分驱动的实现_姓名_秦正运学号20059002029院系_信息工程学院_专业_电子信息科学与技术年级_052009年5月3日目录TOC o 1-5 h z目录2摘要3关键词3 HYPERLINK l bookmark4 o Current Document Abstract3 HYPERLINK l bookmark6 o Current Document Keywords3一、引言4二、步进电机细分驱动的基本原理4三、QuartusII概述5 HYPERLINK l bookmark8 o Current Docum

2、ent 四、课题设计6(一)总体设计6(二)细分电流的实现6(三)细分驱动性能的改善6(四)程序设计7 HYPERLINK l bookmark10 o Current Document 六、仿真与测试结果分析10 HYPERLINK l bookmark14 o Current Document 七、结论12参考文献13注释14附录15谢辞21摘要在对步进电机细分驱动原理进行分析研究的基础上,提出一种基于FPGA控制的步进电机细分驱动器。利用FPGA中的嵌入式EAB构成LPM-ROM,存放步进电机各相细分电流所需的PWM控制波形数据表,并通过FPGA设计的数字比较器,同时产生多路PWM电流波

3、形,实现对步进电机转角进行均匀细分控制。实验证明,所研制的步进电机驱动器不仅体积小,简化了系统的设计,减少了延迟,改善了低频特性,有良好的适应性和自保护能力,提高了驱动器的稳定性和可靠性。关键词步进电机;细分驱动;脉宽调制;FPGAAbstractInthispaper,adivideddrivingcircuitforsteppingmotorcontrolledbyFPGAisputforward,basedontheanalysisoftheprincipleofsteppingmotordivideddriving.UsingembeddedEABinFPGAtocomposeLPM-

4、ROM,storePWMcontrolwaveformdatawhichsteppingmotoreachphasesubdivideddrivingcurrentisneededThemagnitudecomparatordesignedwithFPGAgeneratesseveralPWMcurrentwaveformsynchronously,torealizethestepanglesevendivisioncontrolforthreephasesteppingmotor.Experimmentshaveprovedthatthedevelopedsubdivisiondriveri

5、snotonlysmaller,samplerinsystem,canshortenthedelaytime,improvethestabilityinlowfrequency,buthasgoodself-adaptationandself-protectionability,anditsstabilityandrelibilityarehigher.Keywordssteppingmotor;divideddriving;PWM;FPGA一、引言步进电机是把脉冲信号转换成角位移或直线位移的执行元件,是一种输出与输入数字脉冲相对应的增量驱动元件。具有定位精度高、惯性小、无积累误差、启动性能好

6、、易于控制、价格低廉及与计算机接口方便等优点,被广泛应用于数控系统中。但由于脉冲的不连续性又使步进电机的运行存在许多的不足之处,如低频震荡,噪声大,分辨率不高及驱动系统的可靠性差等,严重制约了其应用范围。步进电机的细分控制有效的解决了这一问题,步进电机细分驱动技术可以减小步进电机的步距角,提高电机运行的平稳性,增加控制的灵活性等。但是传统的步进电机驱动大多数采用的是用单片机作为控制芯片,外加分立的数字逻辑电路和模拟电路构成。受单片机工作频率的限制,细分数不是很高,因此控制器的精度较低,控制性能不是很理想。近年来随着可编程逻辑器件的飞速发展,似的可编程逻辑器件功能越来越强大从而促使高集成化高精度

7、的驱动器的出现。本系统是以FPGA为核心的控制器件,将驱动逻辑功能模块和控制器成功地集成在FPGA上。利用FPGA中的嵌入式EAB可以构成存放电机各相电流所需的控制波形表,再利用数字比较器同步产生多路FPGA电流波形,对多相步进电机进行控制。若改变控制波形表的数据、增加计数器和比较器的位数,提高计数精度,就可以提高PWM波形的细分精度,进而对步进电机的步进转角进行任意级细分,实现转角的精确控制。二、步进电机细分驱动的基本原理步进电机的驱动是靠给步进电机的各相励磁绕组轮流通以电流,实现步进电机内部磁场合成方向的变化来使步进电机转动的。设矢量Ta、Tb、Tc、Td为步进电机A、B、C、D四项励磁绕

8、组分别通电时产生的磁场矢量;Tab、Tbc、Ted、Tda为步进电机中AB,BC,CD,DA两相同时通电产生的合成磁场矢量。当步进电机的A、B、C、D四相轮流通电时,步进电机内部磁场从TA-TB-TC-TD,即磁场产生了旋转。一般的,当步进电机的内部磁场变化一周时,电机的转子转过一个齿距,即改变一次通电状态,转子转过一个步距角。该步距角的计算公式为:0_360bamZX其中:a代表接入绕组的线路状态数,m代表电动机的相数,Zx代表转子齿数。由此可见,步进电机一旦制造出来,其相数与转子齿数将为定值,要想减小步距角,以达到细分的目的,用户能改变的只有a。在无细分的步进电机驱动系统中,通过各相绕组的

9、电流幅值是不变化的,仅在各相通电状态变化时,a值才相应地变化。如对于四相步进电机来说,单四拍或双四拍运行时,a=l;当电机以四相八拍运行时,a=2,实现了步距角的二细分。由于各相绕组的电流是个开关量,即绕组中的电流只有零和某一额定值两种状态,相应的各相绕组产生的磁场也是个开关量,只能通过各相电流的通电组合来改变步距角。所以要想增大a,必须使绕组中的电流按阶梯上升和下降,即在零与最大相电流之间有多个稳定的中间电流状态,相应的磁场矢量幅值也存在多个中间状态,这样,相邻两相或多相的合成磁场的方向也将有多个稳定的中间状态。图1所示为四相步进电机八细分时各相电流波形,各相电流均以最大电流值的1/4上升和

10、下降。与单四拍方式相比,a值从2增加到8,步距角0b为单四拍运行方式时的1/8。所以步进电机细分驱动的关键在于控制电机各相励磁绕组中的电流大小及其稳定性。图1三相步进电机八细分各相电流状态图A相B相C相D相改变步进电机相电流通常采用电流矢量恒幅均匀旋转的细分方法来实现,即同时改变两相电流iA和iB的大小,使电流合成矢量等幅均匀旋转iA和iB的变化曲线可描述为:iA=ImcosxiB=Imsinx三相步进电机八细分时的各相电流是以1/4的步距上升或下降的,在两相稳定的中间状态,原来一步所转过的角度将由八步完成,实现了步距角的八细分。三、QuartusII概述Quartusll是Altera公司的

11、综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tel脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。QuartusII支持Altera的IP核,包含了LPM/MegaFunetion宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方E

12、DA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(S0PC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在QuartusII中包含了许多

13、诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。四、课题设计(一)总体设计从图1中可以看出,一般情况下总有二相绕组同时通电。一相电流逐渐增大,另一相逐渐减小。对应于一个步距角,电流可以变化N个台阶,也就是电机位置可以细分为N个小角度,这就是电机的一个步距角被N细分的工作原理。也可以说,步距角的细分就是电机绕组电流的细分,从而可驱动步进电机平滑运行。图2为步进电机细分驱动系统结构图。步距细分电路是由PWM计数器、ROM地址发生器、PWM波形存储器、比较器、功放

14、电路所组成。其中,PWM计数器在时钟脉冲作用下递增计数,产生阶梯形上升的周期性锯齿波,同时加载到四相步进电机各相数字比较器的一端;波形ROM输出的数据q15.12,q11.8、q7.4、q3.O分别加载到比较器的另一端。当PWM计数器的计数值小于波形ROM输出数值时,比较器输出高电平;而当大于波形ROM输出值时,比较器输出低电平。由此可输出周期性的PWM波形。根据图1步进电机八细分电流波形的要求,将各个时刻细分电流波形所对应的数值存放于波形ROM中,波形ROM的地址由地址计数器产生,地址计数器有3个控制端,可用于改变步进电机的旋转方向、转动速度、工作/停止状态。FPGA以产生的PWM信号控制驱

15、动电路的导通和关断。PWM信号随ROM数据而变化,改变ROM中的数据就可以改变输出信号的占空比,实现限流及细分控制,最终使电机绕组电流呈现阶梯形变化,从而达到步距细分的目的。脉宽控制方向控制使能地址产生时钟图2步进电机细分驱动系统结构图二)细分电流的实现从LPM_ROM输出的数据加在比较器的A端,PWM计数器的计数值加在比较器的B端,当计数值小于ROM数据时,比较器输出低电平;当计数值大于ROM数据时,比较器输出高电平。如果改变ROM中的数据,就可以改变一个技术周期中高低电平的比例。(三)细分驱动性能的改善在线性电流的驱动下,步进电机的微步进是不均匀的,呈现出明显的周期性波动。磁场的边界条件按

16、齿槽情况呈周期性重复是导致微步距周期性变化的原因。同时,不可避免的摩擦负载(摩擦力矩是不恒定的,或者说在一定范围内也是不确定的)以及其他负载力矩的波动导致失调角出现不规则的小变动或小跳跃,也使微步距角曲线在周期性波动上出现不光滑的小锯齿形。步进电机的电流矩角特性并非线性函数,而是近似于正弦函数。若电流呈线性上升或者下降,必然会造成每一细分步的步距角不均匀,从而影响步距精度。为此,要在设计中提高LPM_ROM的数据精度,将数据提高到16位,使输出的步进细分电流近似为正弦电流,这样不仅提高了步距精度,而且可以改善低频震荡。(四)程序设计图3为步进电机PWM控制电路。CNT8是十六进制计数器,构成P

17、WM计数器,将整个PWM周期分成4等份,产生阶梯形上升的周期性锯齿波,同时加载到四相步进电机各相数字比较器的一端;CNT32是三十二进制计数器构成ROM地址发生器,计数器的u_d为方向控制,EN为使能控制,clk_d为速度控制,可以通过u_d、EN和clk_d控制步进电机的旋转方向、工作/停止和旋转速度;s为模式选择控制,可以选择正常运转模式或者是细分驱动模式。ROM是宽度为16位,深度为32位的存储器,存放了各个时刻细分电流波形所对应的数值;CMP为数字比较器,用于ROM输出的数据和PWM计数器计数值的比较。输出细分电流信号采用FPGA中ROM查表法,它是通过在不同地址单元内写入不同的PWM

18、数据,用地址选择来实现不同通电方式下的可变步距细分。从ROM输出的数据加在比较器的“a”端,PWM计数器的计数值加在比较器的“b”端,当计数值小于ROM数据时,比较器输出高电平;当计数值大于ROM数据时,比较器则输出低电平。如果改变ROM中的数据,就可以改变一个计数周期中高低电平的比例。图3步进电机PWM控制电路下面具体来阐述一下各个元件的设计:图5为十六进制计数器的RTL图,通过不断输出十六进制数与ROM中的数据作比较。计数器的VHDL语言程序见附录2.图6为三十二进制计数器RTL图,可以输出五位二进制的地址,以便可以查询ROM表。程序见附录3。图5三十二进制计数器图六为四个比较器的RTL图

19、,当计数值小于ROM数据时,比较器输出高电平;当计数值大于ROM数据时,比较器则输出低电平。比较器的输出为步进的四相输入端提供PWM波形,从而达到PWM控制。程序见附录4OUTanDllLESSTHAM图6比较器LessThan0s=0时,步进电机为soccc图7为多路选择器,利用s端可以选择控制步进电机的运转方式PWM控制,s=1是步进电机的普通运转方式。程序见附录5.图7多路选择器b3-QCZa3-0C图9的功能是从三十二进制计数器的输出端引入数据并把它转化成步进电机的普通四相驱动方式。程序见附录6PWM波形ROM表是通过QuartusII中的宏功能模块定制而成,利用FPGA中的嵌入式EA

20、B构成LPM-ROM,存放步进电机各相细分电流所需的PWM控制波形数据表ROM数据和程序见附录7和附录8.六、仿真与测试结果分析图9是四相步进电机PWM仿真波形图,图中展示了FPGA控制步进电机的情况。ROM输出的16位数据q15.O,作为步进电机各相电流的参考值,每4位二进制(1位八进制)数值控制一个相,分别用于控制步进电机A、B、C,D四相的工作电流。对于每一相来说,当输出数据为0时,该相电流为0;输出数据为1时,脉宽高电平占一个PWM周期的1/4当输出数据为2时,脉宽高电平占一个PWM周期的2/4;当输出数据为4时,整个PWM周期均输出高电平。PWM输出电流的平均值与旋转角度成正比。图9

21、中也给出了步进电机从A-AB-B-BC-C-CD-D-DA四相八拍工作过程的仿真波形。首先,步进电机A相导通,B、C、D相截止,q15.0输出数据为F000;A相的数据为F,其他相的数据为0。然后逐渐过度到AB相导通,q16.0输出数据为F600-F900-FC00-FF00,B相的数据逐渐增大,从1增大到4。电机中的磁场经过4拍,从A相转到了AB相。再经过4拍,从AB相转到B相;q15.0输出数据为CF00-9F00-6F00-0F00,A相的数据逐渐减小,从4变为0。从A到AB到B共经过了8拍,实现了步距角的8级细分。此外由于步进电机是电感性负载,对输出的PWM电流具有平滑滤波作用,对电机

22、线圈起作用的是PWM的平均电流,因此在效果上将图中的细小毛刺电流滤除。图9仿真波形1图10是在clk_d的频率比较高的情况下的仿真图。和图9比较可以看出,clk_d的频率越大,PWM波形比较密集,步进电机的转速越高,即clk_d是速度控制信号。N:=LjTieelkclk_denu_dwy0摻1K2yl3.1piVrTl_.:ilte.“r-1ps320.0ns640.0ns960.0ns1.28us1.6he1.92ue2.24us2.56us2.88us3.2us3.52uValu!_丄!_!_I1LL!_113E13.B5nsJjiruwnnjiwmwinMmmwmmruwuwuumMm

23、jumjmjmwiwiwmjwuwmm._j_rL_nL_rL_nL_rT_rL_rL_rT_rL_rT_rL_nL_rr_rL_r001X1000)1001引1001X001OW(3001(0011X0011X)010及页为01嗽010刃11111Ld1!I111JI11;J:11-1ddiQdOO;:006/i丽西丽衽COOFXgdOF:颈(5西X3曲y006F?:00F2(mcf:-.ooff;;oof(::00F9;1of6;ocf6逼图10仿真波形2图11仿真波形3图11和图9对比,可以看出,当u_d为高电平时,ROM表中输出的数据和图9顺序相反,输出的PWM波形也和图9相反。因此,

24、步进电机的内部磁场从DDCCfBCBfABfAfDA,电机反转。图12是在s为高电平时的仿真图,当s=1时,步进电机为单四拍常规运转方式,内部磁场从ABfBCfCDfDA。实测结果表明,要是步进电机细分后获得均匀的步进转角,其PWM驱动电流应近似于正弦电流,而非线性递增的电流,因此ROM文件中的数据进行适当选择,使每一步的电流增加量近似正弦波,并根据实际转角做了适当调整。由于PWM的输入时钟频率较高,因此可以获得均匀的平均电流,并且每一步的时间间隔相等,转角近似均匀。七、结论通过利用FPGA中嵌入式EAB构成的LPM-ROM存放电机转角细分电流所需的数据表,由数字比较器同步产生多路PWM电流波

25、形,对多相步进电机的转角进行均匀细分,有效地控制步进电机。若提高波形表数据的位数,增加计数器和比较器的位数,就可以提高PWM波形的细分精度,对步进电机的步进转角进行任意细分,实现步进转角的精确控制。此实现方法比目前单片机加D/A的控制方案更加高效。试验证明,此系统功能满足设计要求,控制灵活,集成度高。驱动器在减少体积、降低开发成本的同时,又增加了稳定性和可靠性,具有较好的动态和静态驱动特性,有效地提高步进电机的运行效果。参考文献李华德等,交流调速控制系统.北京:电子工业出版社,2003.3:22-27潘松等,EDA技术实用教程M.北京:科学出版社2005雷凯等,步进电机细分驱动中绕组电流的修正

26、J.苏州大学学报2003.1:38-40杨忠宝,林海波,基于8OC196MC的步进电机斩波恒流均匀细分电路的实现J.微计算机信息2003.7:51-52袁丽肖,王健等,直接转矩控制系统的自适应模糊控制方法的研究J.微电机2006.33(9):26-29翁良科,伊仕基于VerilogHDL描述的多用途步进电机控制芯片的设计J.电子技术应用,2002程浩.三相混合步进电机细分驱动的研制D.浙江:浙江大学.2001李恩光.机电伺服控制技术.东华大学出版社,2003注释PWM技术:脉宽调制(PWM:(PulseWidthModulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的

27、技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪

28、声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。附录附录1:顶层程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydjxfisport(clk,clk_d,u_d,s,en:instd_logic;y:out

29、std_logic_vector(3downto0);endentitydjxf;architecturebehavofdjxfiscomponentcnt8port(clk:instd_logic;cq:outstd_logic_vector(3downto0);endcomponent;componentdec2port(clk:instd_logic;a:instd_logic_vector(1downto0);d:outstd_logic_vector(3downto0);endcomponent;componentcnt32port(clk,en,u_d:instd_logic;cq

30、:outstd_logic_vector(4downto0);endcomponent;componentpwm_romPORT(address:INSTD_LOGIC_VECTOR(4DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(15DOWNTO0);endcomponent;componentcmpport(a,b:instd_logic_vector(3downto0);agb:outstd_logic);endcomponent;componentmuxport(a,b:instd_logic_vector(3downto0);s

31、:instd_logic;y:outstd_logic_vector(3downto0);endcomponent;signalsgn1:std_logic_vector(3downto0);signalsgn2:std_logic_vector(4downto0);signalsgn3:std_logic_vector(15downto0);signalsgn4,f:std_logic_vector(3downto0);beginu1:cnt8portmap(clk=clk,cq=sgn1);u2:cnt32portmap(clk=clk_d,en=en,u_d=u_d,cq=sgn2);u

32、3:pwm_romportmap(inclock=clk_d,address=sgn2,q=sgn3);cmp1:cmpportmap(a=sgn3(15downto12),b=sgn1,agb=f(3);cmp2:cmpportmap(a=sgn3(11downto8),b=sgn1,agb=f(2);cmp3:cmpportmap(a=sgn3(7downto4),b=sgn1,agb=f(1);cmp4:cmpportmap(a=sgn3(3downto0),b=sgn1,agb=f(0);u4:dec2portmap(clk=clk,a=sgn2(1downto0),d=sgn4);m

33、:muxportmap(a=f,b=sgn4,s=s,y=y);endarchitecturebehav;附录2:十六进制计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt8isport(clk:instd_logic;cq:outstd_logic_vector(3downto0);endcnt8;architecturebehavofcnt8issignalcqi:std_logic_vector(4downto0);beginprocess(clk)beginifclkeve

34、ntandclk=1thencqi=cqi+1;endif;endprocess;cq=cqi(4downto1);endbehav;附录3:三十二进制计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt32isport(clk,en,u_d:instd_logic;cq:outstd_logic_vector(4downto0);endcnt32;architecturebehavofcnt32issignalcqi:std_logic_vector(4downto0);begin

35、process(clk,en,u_d)beginifen=1thencqi=cqi;elsifclkeventandclk=1thenifu_d=1thencqi=cqi+1;elsecqi=cqi-1;endif;endif;endprocess;cq(4downto0)bthenagb=1;elseagb=0;endif;endprocess;end;附录5:多路选择器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymuxisport(a,b:instd_logic_vector(3do

36、wnto0);s:instd_logic;y:outstd_logic_vector(3downto0);endentitymux;architectureoneofmuxisbeginprocess(a,b,s)beginifs=0theny=a;elseyddddnull;endcase;endprocess;process(clk)beginifclkeventandclk=1thencq=a;endif;endprocess;end;附录7:PWM_ROM表数据width=16;depth=32;address_radix=hex;data_radix=hex;contentbegin0:f000;1:f600;2:f900;3:fc00;4:ff00;5:cf00;6:9f00;7:6f00;8:0f00;9:0f60;a:0f90;b:0fc0;c:0ff0;d:0cf0;e:09f0;f:06f0;10:00f0;11:00f6;12:00f9;13:00fc;14:00ff;15:00cf;16:009f;17:006f;18:000f;

温馨提示

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

评论

0/150

提交评论