2021西门子S7-SCL编程指南_第1页
2021西门子S7-SCL编程指南_第2页
2021西门子S7-SCL编程指南_第3页
2021西门子S7-SCL编程指南_第4页
2021西门子S7-SCL编程指南_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

S7-SCL编程ProgrammingwithS7-SCLA&DService&SupportPagePAGEA&DService&SupportPage39摘 要本文档主要用于讨论与S7-SCL编程相关的以下问题:编程软件的基本信息基本概念讲解基本使用讲解用于示例工程的简单应用例子实际使用中常见问题及讲解关键词编程工具;Step7;语句表;S7-SCL;KeyWordsProgrammingtools;Step7;STL;S7-SCL;目 录S7-SCL编程 1前言 5软件的基本信息 5S7-SCL简介 5S7-SCL与STL: 6S7-SCL的安装与使用: 6S7-SCL软件兼容性 6S7-SCL应用于虚拟工程 7虚拟工程工艺要求 7S7-SCL简单示例 7重要提示: 16S7-SCL常见问题 17程序编写相关问题 17问题:S7-SCL支持哪些STEP7块,与其它语言有什么关系? 17问题:如何规范地的开发一个S7-SCL程序? 17问题:如何加密我的S7-SCL程序? 17问题:为什么双击打开S7-SCL类型的程序后,显示的格式却是STL格式? 18问题:什么是OKFlag? 18问题:S7-SCL中读取一个组织块的信息 19问题:如何理解FC/SFC的输出参数返回值)? 20问题:在S7-SCL程序中,PLC中的地址标识使用的注意事项 21问题:为什么用户人工输入的程序在编译时经常提示语法错误? 22问题:如何对S7-SCL程序中的数据块及静态变量初始化? 23问题:什么是“AT”指令,如何使用? 23问题:S7-SCL程序中如何使用多重背景? 28问题:如何在S7-SCL程序中实现数据块间接寻址? 28问题:在S7-SCL程序中调用FC/FB与在STL/LAD中有何区别? 29问题:转换到“REAL”数据类型需要使用哪种数据类型转换程序? 30问题:在S7-SCL中如何区分变量名是本地变量,还是符号名? 30问题:如何访问一个字符串中的单个字符? 30程序优化相关问题 31问题:如何在访问结构时优化运行时间? 31问题:如何用布尔型变量优化IF语句来缩短循环时间? 32编译错误相关问题 34问题:S7-SCL程序在别人的计算机上打不开或无法编译? 34问题:为什么我的程序与别人的程序完全一致,却通不过编译? 34问题:包含比较类型为WORD/DWORD的变量的IF语句不能被编译通过? 35问题:当给一个双字类型变量分配了一个实型数值时,出现非法数据类型错误 35问题:在输出窗口中的错误消息与程序行数字不符 35问题:"TheFBisnotavailableortheinstancedeclarationismissing" 36问题:"Characterstringshavedifferentlengths" 36问题:CPU消息"STOPduetounknownOPcode" 37问题:在编译UDT时出现"SyntaxerrorwithUNLINKED" 37问题:在编译DB时出现"Syntaxerrorwith38与监控调试相关问题 38问题:为什么我的程序编译通过,但无法运行? 38问题:为什么我的程序无法被监控? 38问题:在S7-SCL哪些变量在监控时无法被显示? 39重要提示:本文为技术交流文档,不能作为订货、选型等重要事宜的唯一依据,建议您参考Siemens的标准产品样本和技术手册进行产品的选型和订货。前言S7-SCLS7-SCLS7-SCLS7-SCL通过点击Windows->Simatic->Documentation->English“S7-SCLforS7-300andS7-400PDF16S7-SCLS7-SCLPLCS7-SCLPASCALVBS7-SCLS7-SCLS7-SCL快速入门。在讲解例子内容之后,再列举出一些用户在实际使用当中经常会遇到的问题。这部分内容大多来自实际用户,具有较强的针对性,希望能够对用户有所帮助。相关手册地址连接:S7-300和S7-400的语句表(STL)编程/CN/view/zh/18653496使用STEP7V5.3编程/CN/view/zh/18652056S7-SCLV5.3forS7-300/400/CN/view/zh/5581793软件的基本信息S7-SCLS7-SCL(StructuredControlLanguage结构化控制语言)具有以下特点:是一种类似于PASCAL的高级编程语言,符合国际标准IEC61131-3PLCopen基础级认证SIMATICS7-300(推荐用于CPU314以上CPU),S7-400,C7andWinACS7-SCL为PLC做了优化处理,它不仅仅具有PLC典型的元素(例如输入/输出,定时器,计数器,符号表循环选择分支数组高级函数S7-SCL其非常适合于如下任务:复杂运算功能复杂数学函数数据管理过程优化S7-SCLSTL:S7-SCLSTL,STL编程有所增加,但我们更关心的是程序结C/C++等高S7-SCLS7-SCLSTEP7S7-SCLSTEP7ProfessionalS7-SCLS7,S7-SCLSTEP7S7-SCLS7-SCLASCII构成,所以它非常容易被导入或导出。S7-SCL不同S7-SCL软件版本与STEP7及操作系统之间的兼容性:图中的X表示兼容,-表示不兼容S7-SCLV5.1+SP1S7-SCLV5.1+SP1S7-SCLV5.1+SP1S7-SCL应用于虚拟工程虚拟工程工艺要求S7-SCL虚拟工程工艺参数环节要求:采集某个过程量,进行工程量转换,对其进行软件滤波,计算10个采样值去除最大值(见下面举例)将过程参数存储,并进行分析,优化控制策略(限于篇幅,不做介绍)S7-SCLFB1,FB1,过程变量,存储在FIFO101010平均值(滤波输出)=(10平均值(非滤波输出)=转换后的实时采样值SCLSource图3-1:新建SCLSource双击,SCLSourceSCLFB图3-2:使用FB模板注意要更改成需要的FB编号,如:FB1注意要更改成需要的FB编号,如:FB1图3-3:更改FB编号使用参数模板图3-4:添加FB输入输出参数编辑输入,输出,临时,静态等变量FB编辑输入,输出,临时,静态等变量图3-5:添加FB输入输出参数使用调用功能块向导图3-6:使用调用功能块向导FC105图3-7:调用FC105SCLFC105,SIMATICManagerFC105添加到项目中图3-8:SIMATICManager中打开库文件FC105图3-9:将FC105复制到当前项目中FB1图3-10:FB1参数定义FC105图3-11:FC105调用IF模板图3-12:使用IF模板IF,FOR-NEXT图3-13:编写滤波程序Option-Customize编译选项中要选择生成调试信息编译选项中要选择生成调试信息图3-14:生成调试信息File-CompileFB1OB35FB1OB35:输出参数SCALED_VAL输出参数SCALED_FILTED假设OB35的执行周期为T,2T的时间,此时的输入值的两次采样值会被滤掉一个采样值,而另一个采样值将参与平均值的运算。图3-15:监控OB35程序栏监控栏信息栏程序栏监控栏信息栏图3-16:监控FB1S7-SCLS7-SCLS7-SCL手册。重要提示:本文的虚拟工程与真实工程实例有重大差别,示例中并未遵循规范的工程设计流程进行编程,请读者切勿将其与工程实例相混淆。由于此例子是免费的,任何用户可以免费复制或传播此程序例子。程序的作者对此程序不承担任何功能性或兼容性的责任,使用者风险自负。西门子不提供此程序例子的错误更改或者热线支持。S7-SCL常见问题程序编写相关问题问题:S7-SCLSTEP7块,与其它语言有什么关系?问题:S7-SCL支持哪些STEP7块,与其它语言有什么关系?解答:S7-SCLSTEP7OB,FC,FB,DB,UDTS7,S7-SCLS7-SCLSTL,S7-SCLS7-SCLASCIIS7-SCL程序?问题:如何规范地的开发一个S7-SCL程序?解答:开发一个S7-SCL程序,应当遵循如下流程:FCOB,FB等规划子任务(FB,FC等等)定义各个子任务的之间输入/输出接口定义各个子任务在原文件中的顺序及调用关系定义符号表编译检查下载调试S7-SCL程序?问题:如何加密我的S7-SCL程序?解答:S7-SCL程序加密与STL程序加密方法几乎一样,用户可以在程序中加入关键字:FC1S7-SCL(例如下图L源代码。FC1SCL源程序中的关键字图4-1:S7-SCL源程序加密S7-SCLSTL格式?问题:为什么双击打开S7-SCL类型的程序后,显示的格式却是STL格式?项目视图中FC1的属性L程序编译后生成的执行代码实际上为STL,SCLSourceFC1FC1项目视图中FC1的属性图4-2:块的SCL属性注意:提供给最终用户的项目中如果删除S7-SCL源代码,用户将只能看到STL格式的程序,稍微复杂些的S7-SCL程序在STL格式下几乎是无法阅读的。此方法类似于加密的效果。OKFlag?问题:什么是OKFlag?解答:在S7-SCL程序中,OK是一个布尔类型的特殊本地变量。它用来显示块执行是否正确。OKSTLFC/FBENO处理(STLBR位来保存状态)KTUR(0作为除数OK标志改写为ENO当OKS7-SCLOptions>Customize>CompilerSetOKflag.ENO将无法被评估。OK标志使用的例子:OK:=TRUE;Division:=1/IN;IFOKTHEN //除法操作正常;//此处可以添加在除法操作正常情况下,其它的用户程序ELSE //除法操作不正常;//:END_IF;问题:S7-SCL中读取一个组织块的信息问题:在STL中可以读取一个组织块的信息(例如OB1中的循环时间),在S7-SCL中是否存在同样的可能?OBOB1中的变量OB1_PREV_CYCLE即为CPU上个扫描周期所用的时间。在S7-SCL编辑器中,通过“Insert>Block>OBOB模板。在缺省情况下,此模板的临时变量区域将创OFBYTEOBOB块内的特有变量,请按下列步骤进行:STEP7的安装路径OBSTL格式模板,(OB31.awl)S7-SCL源文件并插入刚才复制的变量定义。S7-SCL源文件中的语法结构在这个程序的开始部分,可以设置"Title"和,例如Title=' '和'0.1'在BEGIN语句后面插入一个分号,至此,即完成格式修改。S7-SCL44S7-SCL源文件格式的组织块。FC/SFC返回值)?问题:如何理解FC/SFC的输出参数RET_VAL(返回值)?语言或者高级编程语言非常熟悉,可能此问题就非常容SFC系统功能)返回值)STEP7在线帮助中提供有更多关于系统功能和输出参数SFC然后按“F1”键可以获取相关的在线帮助信息。FCS7-SCL中调用带有返)的功能(FCSFC)。定义FC1,函数类型为INT(返回值)图4-3:带有返回值FC的定义调用FC1,得到返回值:用户可以根据用户可以根据FC的返回值判断FC的运行结果图4-4:调用带有返回值的FC调用一个系统功能)C“B()主内存中一个数据块的信息。SFC24确定指定DB的数据字节数,并检查该DB是否受到写保护。DBDB_LENGTHWRITE_PROT”包含关于DB的写保护ID的信息表示没有写保护)。返回值用于返回值用于SFC行是否正常图4-5:调用带有返回值的SFCS7-SCL程序中,PLC中的地址标识使用的注意事项S7-SCLSTL/LADS7-SCLSTL/LADS7-SCLPLCS7-SCL程序地址标识格式:图中一些格式有些特殊,实际上,下面的格式在S7-SCL中都是正确的。DB1.D0.0:=DB1.DBX0.1;DB1.DB1:=DB1.DBB1;DB1.DW2:=DB1.DBW2;DB1.DD4:=DB1.DBD4;QX0.0:=Q0.0;IX0.0:=I0.0;MX0.0:=M0.0;所以说,在一般情况下,编程人员依旧可以STL的标识方式用于S7-SCL。注意:如果数据块编号及地址都使用了间接寻址方式,则必须使用S7-SCL特定的标识方式,例如如下语句:STATUS_1:=WORD_TO_BLOCK(INDEX).DW[COUNTER];(此格式正确)STATUS_1:=WORD_TO_BLOCK(INDEX).DBW[COUNTER];(此格式错误)4-6:S7-SCLPLCx065535(绝对地址)y可以为0至7之间的数字(位地址)CLL问题:为什么用户人工输入的程序在编译时经常提示语法错误?问题:为什么用户人工输入的程序在编译时经常提示语法错误?解答:S7-SCL程序和所有的高级语言一样,有着自己特定的语法,而很多编程人员容易在人工输入程序时忽视语法格式,这样就造成编译错误。因此强烈建议编程人员使用S7-SCL的模板向导。向导中的通配符用户需自行更改为所需值用户经常将END_FUNCTION与END_FUNCTION_BLOCK混淆,导致错误DO向导中的通配符用户需自行更改为所需值用户经常将END_FUNCTION与END_FUNCTION_BLOCK混淆,导致错误DO遗忘,导致错误图4-7:S7-SCL常见的录入格式错误S7-SCL程序中的数据块及静态变量初始化?问题:如何对S7-SCL程序中的数据块及静态变量初始化?STLDAT1:REAL:=100.5;A1:INT:=10;A2:STRING[6]:='FACTOR';A3:ARRAY[1..12]OFREAL:=0.0,10(100.0),1.0;问题:什么是“AT”指令,如何使用?问题:什么是“AT”指令,如何使用?S7-SCLS7-SCL中有着非常重要的地位,很多应用程序都必须使用此指令。下面将对此指令进行详细讲解。AT指令可以使用户能够以不同的数据类型来访问一个已经声明的变量。此指令类似于高级编程语言中的“继承”概念。此指令有如下特点:特点一:定义仅在块内有效,在接口参数中不出现特点二:在块中可以使用其它数据类型的视图它特性相同。UDT100,UDT200,120E84个字节;UDT2006个字(12个字节2BufeFrame1,Frame:Frame1Buffer类型是新的,其它特性相同。此处的Frame1Buffer类型是新的,其它特性相同。此处的UDT100长度应小于等于所继承的Buffer大小,否则编译错误UDT200长度应小于等于所继承的Buffer大小,否则编译错误注意:UDT100,UDT200Buffer特性OB1FC2,并将一个数组赋值给Buffer输入参数3内有效,在接口参数仅出现Buffer输入参数图4-8:AT指令特点说明(a)BufferFrame1,Frame2将Buffer的前8个字节认为是TEST_DT中图4-9:AT指令特点说明(b)STLMB03M0.2S7-SCL中,由于其具备高级语言的特点,所以定义的变量的STLS7-SCL中却复杂起来。但是通过使用8指令,将输入继承到以BOOL数据类型组成的数组中定义输出参数BOOL方式输出图4-10:AT指令应(a)2S7-SCL中,ANY指令的使用,下面ANY数据类型中的内容。程序执行结果相当于:CALL "BLKMOV"SRCBLK:=P#DB1.DBX0.0BYTE10RET_VAL:=MW0DSTBLK:=P#DB1.DBX0.0BYTE10此结构请参考此结构请参考STEP7中关于ANY数据类型的讲解执行结果:Data_Source=P#DB1.DBX0.0BYTE10执行结果:Data_Destination=P#DB1.DBX0.0BYTE10图4-11:AT指令应用(b)AT指令在使用当中,还有如下注意事项:指令用于对某个变量进行其它数据类型的声明时,必须放在此变量的声明语句后面指令生成的变量不可以初始化指令用于对某个变量其它数据类型的声明时,占用内存大小要小于等于此变量的长度指令用于对某个变量其它数据类型的声明时,如下的组合是允许的:视图数据类型变量数据类型ElementaryComplexANY/POINTERFB声明类型VAR,VAR_TEMP,VAR_IN,VAR_OUTElementaryComplexANY/POINTERxxxxx(1)x(1)声明类型VAR_IN_OUTElementaryComplexANY/POINTERxxFC声明类型VAR,VAR_TEMPElementaryComplexANY/POINTERxxxxxx声明类型VAR_IN,VAR_OUT,VAR_IN_OUTElementaryComplexANY/POINTERxx图4-12:AT指令使用限制ANY中是不允许的Elementary(基本数据类型包括):BOOL,BYTE,WORD,DWORD,INT,DINT,DATE,TIME,S5TIME,CHARComplex(复杂数据类型包括):ARRAY,STRUCT,DATE_AND_TIME,STRING问题:S7-SCL程序中如何使用多重背景?问题:S7-SCL程序中如何使用多重背景?解答:S7-SCL程序中可以使用多重背景,下面的程序列出了正确格式,声明完成后,在程序中即可调用:Supply1FB10; //Supply1FB10类型Supply2,Supply3,Supply4FB100; //Supply2,Supply3,Supply4FB100类型S7-SCL程序中实现数据块间接寻址?问题:如何在S7-SCL程序中实现数据块间接寻址?解答:S7-SCL确格式:STATUS_1:=DB11.DW[COUNTER]; //字节间接寻址STATUS_2:=DB12.DX[WNO,BITNO]; //位间接寻址,用户改变WNO,BITNO数值即STATUS_1:=Database1.DW[COUNTER]; //Database1为DB类型的本地变量STATUS_2:=Database2.DX[WNO,BITNO];STATUS_1:=WORD_TO_BLOCK_DB(INDEX).DW[COUNTER];//INDEX被定义为BLOCK_DB数据类型,COUNTER为整数数据类型,这样可以实现/数据块编号,字节地址同时间接寻址,此功能是一种功能很强间接寻址方式。//以下是数据块直接寻址方式格式,仅供参考。STATUSBYTE:=DB101.DB10; //字节直接寻址格式STATUS_3:=DB30.D1.1; //位直接寻址格式MEASVAL:=DB25.DW20; //STATUSBYTE:=Status_data.DB10;STATUS_3:="Newdata".D1.1;MEASVAL:=Measdata.DW20;STATUS_1:=WORD_TO_BLOCK_DB(INDEX).DW10;S7-SCLFC/FBSTL/LAD中有何区别?问题:在S7-SCL程序中调用FC/FB与在STL/LAD中调用FB/FC有何区别?STL的调用格式SCL中,FB的输入/输出参数必须填写完整,而且对输入参数赋值格式与对输出参FB起重视对输入赋值对输出赋值STL/LADFBSTL的调用格式SCL中,FB的输入/输出参数必须填写完整,而且对输入参数赋值格式与对输出参FB起重视对输入赋值对输出赋值图4-13:STL/S7-SCL调用FB区别问题:转换到“REAL”数据类型需要使用哪种数据类型转换程序?S7-SCL中的位数据类型(BYTEWORDDWORD)转换到“REAL”数据类型时,需要使用哪种数据类型转换程序?解答:为了将S7-SCL中的位数据类型(BYTE,WORD或DWORD)转换到数字数据类型“REAL”时,需要使用以下指令:BYTE到REALDINT_O_REAL(DWORD_T_DINT(BYTE_T_DWORD(value))”WORD到REAL:“DINT_TO_REAL(DWORD_TO_DINT(WORD_TO_DWORD(value))”DWORDREAL:“DINT_TO_REAL(DWORD_TO_DINT(value))”BYTEWORDDWORDREAL中常见的错误可以参考下例:D到REAL)”(错误程序)。如果执行了这一转换,会得到错误的结果。原因:DINT_TO_REAL函数将把源数据转换并按照IEEE REAL的格式存储到目的变量,而DWORD_TO_REAL仅仅是从源数据拷贝位串至目的变量。因此,为了获得正确的“REAL”数,必须总是通过中间步骤“DWORD_TO_DINT”和“DINT_TO_REAL”实现。S7-SCL中如何区分变量名是本地变量,还是符号名?S7-SCL解答:S7-SCL如果引用中只有变量名,则此变量为本地变量,如:Motor_Status:=Motor_1如果引用中变量名称上包括“”,则此变量为符号名,如:Motor_Status:=“Motor_1”问题:如何访问一个字符串中的单个字符?问题:如何访问一个字符串中的单个字符?解答:对于字符串中的单个字符,使用如下的访问格式,是错误的:MB10:=str[5]5MB10IEC函数MID来得到字符串的某个部分,例子如下:VARstr:STRING[20];END_VARMB10:=CHAR_TO_BYTE(STRING_TO_CHAR(MID(IN:=str,L:=1,P:=5)));程序优化相关问题问题:如何在访问结构时优化运行时间?问题:如何在访问结构时优化运行时间?S7-SCL代码中也创建一个同样类型的临时变量来优化运操作:DB4.Field.Value:=DB4.Field.Value1*DB4.Field.Value2*DB4.Field.Value3;DB4的数据结构DB4DB4的数据结构DB4图4-14:定义数据块解决方法:在FC4DB4“field”变量结构相同的临时变量(例如“Temp”DB4Temp:=DB4.field;对以上所描述的语句,可将DB变量“DB4.Field”替代为临时变量“Temp”:DB4.field.Value:=Temp.Value1*Temp.Value2*Temp.Value3;CPULLCPUL就实现了数据访问的优化。图4-15:优化数据块访问注意事项:变量声明“VAR_TEMPCPUCPUIF语句来缩短循环时间?问题:如何用布尔型变量优化IF语句来缩短循环时间?IF语句完整格式编程时需(TRUE。示例1:当一个模拟量值(REAL变量)超过限定(此处是100)时设置一个比特位。函数“IF_Test”包含了查询限定值的IF语句。整个IF语句可用以下语句代替:IF_Test:=(100<value)。IFIF语句的完整格式IF语句的紧凑格式图4-16:IF语句不同格式(a)示例2:查询在一个WORD变量中指定比特位X是否置位。BitXIFBitX:=status16#0004。IFIF语句的完整格式IF语句的紧凑格式图4-17:IF语句不同格式(b)IF理解。编译错误相关问题问题:S7-SCL程序在别人的计算机上打不开或无法编译?S7-SCLS7-SCLS7-SCLV5.3SP1(ES7-SCL环境下无法通过编译。问题:为什么我的程序与别人的程序完全一致,却通不过编译?问题:为什么我的程序与别人的程序完全一致,却通不过编译?解答:除了前面问题所需注意的事项外,符号表是初学者经常忽略的因素,这里额外单独强调一S7-SCLS7-SCL程序中经常出现不清楚的名称定义,从而导致编译错误。WORD/DWORDIF问题:为什么包含比较类型为WORD/DWORD的变量的IF语句不能被编译通过?解答:当在IFWORD和DWORD类型,S7-SCL仅允许比>”和“<”。作为一种补救措施,建议将变量类型声DINT。如果变量的类型不能声明为DINT,在此比较之前则必须首先进行类型转换。问题:当给一个双字类型变量分配了一个实型数值时,出现非法数据类型错误解答:当给一个双字类型变量分配了一个实型数值时,出现"InvaliddatatypeBOOL,BYTE,WORDDWORDDB地址访问。下图举例说明何时数据类型必须转换.图4-18:数据类型转换问题:在输出窗口中的错误消息与程序行数字不符问题:在输出窗口中的错误消息与程序行数字不符解答:当S7-SCL程序行数超过65535, S7-SCL编译器把行计数器重新从1开始计数。例如,在S7-SCL源程序中,一个编程错误出现在第65537行,以下行数字将被输出:"F:L00001errorxyz”,而不是"F:L65537errorxyz"S7-SCL在所指示的行,你可以使用菜单命令"Edit>GoTo>Line..."然后输入"65536+显示错误数字"跳至有错误语句的行。问题:"TheFBisnotavailableortheinstancedeclarationismissing"问题:"TheFBisnotavailableortheinstancedeclarationismissing"FC/FB/SFB/SFC1:BLOCKS7-SCL。FC/FB/SFB/SFCS7-SCLInsert>BlockCallS7-SCLFC/FB/SFB/SFCBLOCK问题:"Characterstringshavedifferentlengths"问题:"Characterstringshavedifferentlengths"FC1FC2"name_1"与"name_2",FC1"Characterstringshavedifferentlengths"。在运行期间,在赋值的右侧("name_1")可能是STRING("name_2"STRING"name_2"254STRINGFC

温馨提示

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

评论

0/150

提交评论