第七章_机器人编程语言_20100512.ppt_第1页
第七章_机器人编程语言_20100512.ppt_第2页
第七章_机器人编程语言_20100512.ppt_第3页
第七章_机器人编程语言_20100512.ppt_第4页
第七章_机器人编程语言_20100512.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、本课程知识结构图,机器人语言的基本特点、分类 工业机器人语言实例 PUMA机器人语言 VAL RH6机器人语言,第七章 Robot Programming Language,机器人控制编程语言的分类,根据作业描述水平的高低,依次为: 示教水平级: 动作水平级; 作业目标水平级(任务级) 根据作业描述水平的细化程度,依次为: 操作水平级 原始动作水平级: 结构型动作水平级 对象状态水平级: 作业目标水平级:,一些机器人编程语言,VAL语言:Unimation开发的适用于PUMA机器人; SIGLA语言:适用于SIGLA机器人; IML语言:适用于动作级机器人; AL语言:Stanford开发的适

2、用于机器人动作级; 针对各种专门用途的机器人,相继开发了一系列机器人控制编程语言,如:ARIL,WAVE,MCL,PLAW等等; JPL开发的JARS语言是基于Pascal语言的机器人语言; ABB开发的RAPID语言;,至今还没有真正的机器人任务级编程语言,机器人编程语言的特殊问题,内部世界模型与外部实际环境的关系 程序前后的关联性 Context sensitivity 自下而上的编程方法 误差校正,VAL-II语言简介,产生: 由1979年美国Unimation公司推出,初期适用于LSI-11/03小型计算机,后来改进为VAL-II,可在LSI-11/23上运行。 VAL语言的主要特征为

3、: 编程方法和全部指令可用于多种计算机控制的机器人; 指令简明,指令语句由指令字和数据组成,实时和离线编程军可应用; 指令级功能均可扩展,可用于装配线及制造过程控制; 可调用子程序组成复杂操作控制; 可连续实时计算,迅速实现复杂运动控制;能连续产生机器人控制指令,同时实现人机交联;,VAL-II语言的硬件支持系统,VAL-II系统框图,VAL-II系统框图说明,文本编辑: 在文本编辑状态下,可用终端键盘输入文本程序,也可以通过示教盒按时教方式输入程序,编辑过程包括对程序文件的生成和修改,编辑好的文件随即就存储在内存,也可以用存盘命令(STORE =)存入软盘,需要时还可在调入(LOAD); 系

4、统命令: 包括位置定义、程序和数据列表、程序和数据存储、程序控制、系统状态的设置和控制、系统开关控制、系统诊断和修改等; 编程语言: 语言指令由一条语句组成,在运行命令(EXECUTE)发出后,指令被逐条执行。在执行程序的同时,系统 可进行命令控制。,VAL-II语言的监控指令(6种),1)定义位置、位姿: POINT 末端执行器位姿的齐次变换或以关节角表示的精确点位置; DPOINT取消已经定义的位姿齐次变换,精确点的赋值; HERE 定义位姿的现值; WHERE 显示位姿、关节置和手爪张开量; BASE 机器人基准坐标系置位; TOOL 工具终端相对工具支承面的位置位姿赋值。 2)程序编程

5、: 用EDIT指令进入编辑状态后,可用C、D、E、I、L、P、R、S、T等编辑指令; 3)列表指令: DIRECTORY 显示存储器中的全部用户程序名; LISTL 显示任意个位置变量值; LISTP 显示任意个用户的全部程序;,VAL-II语言的监控指令(6种),4) 存储指令: FORMAT 磁盘格式化; STOREP 在指定磁盘文件中存储指定程序; STOREL 存储用户程序中注明的全部位置变量名字和值; LISTF 显示软盘中当前输入的文件目录: LOADP 将文件中的程序送入内存; LOADL 把所有文件中指定的位置变量送入系统内存; DELETE 撤销磁盘中指定的文件; COMPR

6、ESS 压缩磁盘空间; ERASE 擦储软盘内容并初始化;,VAL-II语言的监控指令(6种),5)控制程序执行命令: ABORT 紧急停止命令; DO 执行单指令; EXECUTE 按给定次数执行用户程序; NEXT 控制程序单步执行; PROCEED 在某部暂停、紧停或运行错误后,下一步起继续执行程序; RETRY 在某步出现运行错误后,仍自某步重新运行程序; SPEED 运动速度选择; 6)系统状态控制: CALIB 关节位置传感器校准; STATUS 用户程序状态显示; FREE 显示当前未使用的存储容量; ENABLE 使用开关系统硬件; ZERO 清楚全部用户程序和定义的位置、重新

7、初始化; DONE 停止监控程序,进入硬件调试状态;,VAL-II语言的程序指令(6种),1)运动指令: MOVE,MOVES,APPRO,APPROS,DEPART,DRIVE,READY,OPEN,OPENI,DELAY; 2) 机器人位姿控制指令: RIGHT,LEETY,ABOVE,BELOW,FLIP,NOFLIP; 3) 赋值指令: SETI,TYPEI,HERE,SET,SHIFT,TOOL,INVERSE,FRAME; 4)控制指令:GOTO,GOSUB,RETURN,IF,IFSIG,REACT,REACTI,IGNORE,SIGNAL,WAIT,PAUSE,STOP; 5)

8、 开关控制指令: SPEED,COARSE,FINE,NONULL,NULL,INTOFF,INTON; 6) 其它指令: REMARK,TYPE.,VAL-II程序举例之一,/* 该程序的功能是:将物体从位置1(PICK位置)搬运至位值(PLACE位置) */ EDIT DEMO /* 启动编辑状态,文件名为:DEMO */ PROGRAM DEMO 1. SET PICK=TRANS(-400 , 400 , 250 , -90 , 90 , 0) 2. SET PLACE=TRANS(-50 , 600 , 250 , -90 , 90 , 0) 3. OPEN /* 下一步手张开 */

9、 APPRO PICK , 50 /* 运动至距PICK位置50mm处 */ SPEED 30 /* 下一步将至30%满速 */ MOVE PICK /* 运动至PICK位置 */ CLOSEI /* 闭合手 */ DEPAT 70 /* 沿矢量方向后退70cm */ APPROS PLACE , 75 /* 沿直线运动至PLACE位置75mm处 */ SPEED 20 /* 下一步降至20%满速 */ MOVES PLACE /* 沿直线运动至PLACE位置上 */ OPENI /* 在下一步之前手张开 */ DEPART 50 /* 自PLACE位置后退50cm */ E /* 退出编辑状

10、态,返回监控状态 */,DEMO程序执行的操作过程,程序中定位数据的给定: (用示教盒手动引导) HERE PLACE x/jt1 y/jt2 z/jt3 o/jt4 a/jt5 t/jt6 255.66 618.84 -131.94 154.86 89.187 -131.347 CHANGE ? /* 问数据是否需要变更? */ SPEED 30 /* 用30%的速度运行实验程序是否合适*/ EXECUTE DEMO 3 /* 执行DEMO程序 三次 */ STATUS /*为监视程序执行,显示机械手的状态*/ 。 RPOGRAM COMPLETED HALTED AT 12 /* 程序执行

11、完毕,终止在12步 */,VAL-II程序举例之二,/* 该程序的功能是:使用机械手整齐排列桌上的十个零件 */ SET N.PARTS=0 /* 已排零件数初始化为0 */ 100 VPICTURE VLOCATE PART 100 /* 初始化零件的位置 */ APPRO CAMERA:PART:PICKVP 50 /* 初始化机械手的位置*/ MOVES CAMERA:PART:PICK VP /*机械手接近待取零件*/ GRASP 25 /* 抓取零件 */ DEPART 50 /*携带零件离开 */ APPRO PALLET 50 /* 接近零件排放位置 50cm处 */ MOVES

12、 PALLET /* 接近零件待排放位置 */ OPENI /* 张开机械手 */ SHIFT PALLET BY 5.2 25 4.0 /* 定义下一个零件的排放位置 */ SETI N.PARTS=N.PARTS + 1 /* 已排放的零件计数 */ IF N.PARTS NE 10 GOTO 100 /* 若还没排完,继续排 */ STOP /* 若已经排完,则退出程序 */,!未上机验证 (对 vpicture,vlocate指令不熟,且很多变量没定义),VAL-II程序举例之三,本程序说明:下面几个程序重点介绍用VAL-II语言对机器人的运动与力的控制。开始的两个程序允许用户了解关节

13、插置与直线运动的区别,还可以帮助用户了解命令Approach的功能。在程序执行之前,利用示教盒,在Joint模式下定义两各坐标变量,Onespot和Twospot. Program touch.n.go 1 Set Onespot=Trans(-400 , 400 , 250 , -90 , 90 , 0) 2 Set Onespot=Trans(-50 , 600 , 250 , -90 , 90 , 0) 3 Appro Onespot, 75 4 Move Onespot 5 Appro Onespot , 75 6 Appro Twospot, 75 7 Move Twospot 8

14、Appro Twospot , 75 End,VAL-II程序举例之四,下面的例子介绍命令Move的使用,利用命令Xstep但不执行该程序,来观察机器人的运动序列。 .Program touch.n.go.with.tool 1 set onespot=trans(-400 , 400 , 250 , -90 , 90 , 0) 2 set twospot=trans(-50 , 600 , 250 , -90 , 90 , 0) 3 appro onespot , 75 4 movet onespot ,25.4 5 appro onespot , 75.00 6 appro twospot

15、 , 75.00 7 movet twospot , 0.00 8 appro twospot,75.00 .End,VAL-II程序举例之五,运行下面的例子,可以加深对命令Speed的理解。在该实例测湖中,使用命令Speed定义了几种机器人监控速度。注意运行下面的例子时,开关CP处于无效状态。 Program speed.control set a=trans(480 , -10 , 780 , 80 , -30 , 40) set b=trans(390 , 570 , 500 , 145 , 10 , 60) set c=trans(-260 , 780 , 240 , -160 , 2

16、5 , 65) set d=trans(-630 , 450 , -120 , -110 , 60 , 80) speed 25 move a speed 50 move b End,speed 75 move c speed 100move d,VAL-II程序举例之六,下面的程序介绍命令Open 与 Close,Openi,Closei 的区别。该程序执行事情用较低的监控速度货单步执行。 Program hand.open 1. set a=trans(-400 , 400 , 250 , -90 , 90 , 0) 2. set b=trans(-50 , 600 , 250 , -90

17、 , 90 , 0) 3. set safe=trans(-20 , 150 , 920 , 90 , -90 , 0) 4. open 5. appro a, 75 6. move a 7. closei 8. appro a, 75 9. appro b, 75 10. move b 11. openi End,12. closei 13. move safe,VALL-II 程序示例之七,下面的程序介绍整型数的算术运算等操作。在程序中使用的delay命令将使得用户在程序多次循环时有充足的时间退出正在运行的程序。运行下面的程序将产生代表ascii字符的十进制数。 Program integ

18、er 1 n=0 2 type n 3 n=n+2 4 type n 5 n=n*2 6 type n 7 n = n+1 8 n = n mod 2 9 type n 10 n=n*2 11 n = n/2 12 type n 13 delay 1 End,VAL-II 程序示例之八,Program ascii 1 n = A 2 type n 3 n = B 4 type n 5 n = C 6 type n End Program octal 1 n = 177777 /* 65535 or -1 */ 2 type n 3 100 n =n+177777 4 type n 5 if n

19、 -4 goto 100 End,VAL-II 程序示例之九,在用户程序重要经常使用各种用户定义的变量。为了方便用户,VAL-II系统允许用户用易读,易记的字符串单词来表示变量。下面的两个程序一个用来定义变量,一个用来完成机器人的运动轨迹。 Program set.up set pick=trans(-400 , 400 , 250 , -90 , 90 , 0) set place=trans(-50 , 600 , 250 , -90 , 90 , 0) the.conveyor = 100 the.part = 100 the.clamp = 1 set ach.to.a.point.1

20、00mm.above = pick set to.the.part = pick to.a.point.100mm.above.the.part = 100 set to.the.conveyor = place End,VAL-II 程序示例之十,.PROGRRAM pick.and.place 1 OPEN the.clamp 2 APPRO ach.to.a.point.100mm.above, the.part 3 MOVE to.the.part 4 CLOSE the.clamp 5 DEPART to.a.point.100mm.above.the.part 6 APPRO to

21、.the.conveyor,the.conveyor 7 MOVE to.the.conveyor 8 OPEN the.clamp 9 DEPART the.conveyor .END,VAL-II 程序示例之十一,下面的例子中介绍用命令HERE定义位姿变量的值,利用命令SET和函数SHIFT定义两个变量的相对关系。 Program define.location 1 speed 25 2 ready 3 move trans(-100,600,-200,-90,90,0) 4 break 5 here r 6 set a=shift(r by 50,50,50) 7 set b=shift

22、(r by 75,75,75) 8 move a 9 move b End,VAL-II 程序示例之十二,执行该程序后,使用命令listp 和 listp将在终端显示如下的内容: Listp define.locaton Program define.location 1 speed 25 2 ready 3 move trans(-100,600,-200,-90,90,0) 4 break 5 here r 6 set a = shift(r by 50,50,50) 7 set b = shift(r by 75,75,75) 8 move a 9 move b End Listl r,

23、 a, b X/jt1 Y/jt2 Z/jt3 O/jt4 A/jit5 T/jt6 r -101.19 600.69 -199.09 -89.764 89.835 0.000 a -51.19 650.69 -149.09 -89.764 89.835 0.000 b -26.19 675.69 -124.09 -89.764 89.835 0.000,VAL-II 程序示例之十三,下面的程序介绍当函数shift的输入变量为已表示位置的变量的情况。 Program move.n.shift 1 chang=0 2 100 move shift(oneplace by chang) 3 cha

24、ng = chang+50 4 if chang 250 goto 100 End,VAL-II 程序示例之十四?,下面的程序将介绍当重新定义机器人的基(base)坐标系时,机器人运动的情况。 Program base.cube set a=trans(480 , -10 , 780 , 80 , -30 , 40) set b=trans(390 , 570 , 500 , 145 , 10 , 60) set c=trans(-260 , 780 , 240 , -160 , 25 , 65) set d=trans(-630 , 450 , -120 , -110 , 60 , 80)

25、n=0 100 moves a moves b moves c moves d n=n+1 base , , int(n mod 2) *(-100) goto 100 End,/* 没找到合适的 a,b,c,d*/,VAL-II 程序示例之十五,执行下面的程序,机器人将离开原来的位置后,根据坐标位置的反变换,再回到原来的位置。 Program inverse ready break here a move shift (a by ,50 ) break here a:b set c = inverse (b) move a:b:c 用命令listl 显示a, b, c 的值如下: X/jt1

26、 Y/jt2 Z/jt3 O/jt4 A/jt5 T/jt6 a -19.66 149.06 920.94 90.006 -89.923 0.000 b 0.00 0.00 -49.69 90.006 -89.995 0.000 c 0.00 0.00 49.69 89.995 -89.995 0.000,VAL-II 程序示例之十六,VAL-II系统中的 tool 命令可以用来定义工具坐标系。在运行下面的例子前,先定义坐标变量 new.tool 的值为 (0,0,100,90,-90,0)。该操作可以用命令 point 来完成。,.PROGRAM null.tool 1 TOOL 2 MOV

27、E a 3 MOVE b 4 MOVE c 5 MOVE d .END,.PROGRAM new.tool 1 TOOL 2 MOVE a 3 MOVE b 4 MOVE c 5 MOVE d .END,请比较两个程序的区别,观察运行时的结果!,未上机验证(没找到合适的a,b,c,d),1 SET origin = TRANS(-100, 600, -200, -90, 90, 0) 2 SET c1 = origin 3 SET c2 = TRANS( 0 , 600, -200, -90, 90, 0) 4 SET c3 = TRANS(-100, 700, -200, -90, 90,

28、0) 5 SET c4 = origin 6 SET first = FRAME(c1, c2, c3, c4) 7 FOR loop = 1 TO 5 8 MOVE first:TRANS( 0, 50, 0, -90, 90, 0) 9 MOVE first:TRANS(50, 50, 0, -90, 90, 0) 10 MOVE first:TRANS(50, 0, 0, -90, 90, 0) 11 MOVE first:TRANS( 0, 0, 0, -90, 90, 0) 12 END,.PROGRAM frame.demo,用户可以使用函数frame 在原来的坐标系上定义自己的笛

29、卡尔坐标系。下面的程序可用来解释函数frame 的含义。在该程序中定义了坐标系first 和 second.,VAL-II 程序示例之十七,VAL-II 程序示例之十八,下面的示例介绍命令detach 和 attach 的使用方法。 在程序中使用detach 命令,可以释放程序对机器人的控制权,当程序释放了对机器人的控制权,机械手的电源可以接通或切断,示教盒可用来控制机器人的运动。当用户运行程序时,有时要求机器人处于一定的状态,这时detach 命令显得非常有用,程序执行该命令,将控制权释放,用户便可以 通过终端或者手控制盒来控制系统的运行。使用attach 命令可以示的程序重新获得对机器人的

30、控制权,当执行该命令时,一般要求机械手的电源接通,并且手控制盒处于comp状态,使用语句 wait pendant(z) =16 就可以检查系统是否满足上述条件。,VAL-II 程序示例之十八,Program set.up.pallet 1 type “OPERATOR,IT IS NESSARY TO DEFINATE” 2 type “ THE FIRST LOCATION ON THE PALLET.” 3 type “ PROGRAM WILL WAIT WHILE YOU MOVE THE END TO ” 4 type “ THAT POSITION. WHEN YOU HAVE

31、DEFINED ” 5 type “THE FIRST LOCATION ,STRIKE” 6 type “ THE COMP MODE PUSHBUTTON ON THE TEACH PANDANT” 7 detach 8 wait pendant (2) =16 9 attach 10 call pallet.message 11 type “ PALLET.MESSAGE PROGRAM HAS NOW EXECUTED” End Program pallet.message 1 type “This is program pallet.message normall executed.

32、” 2 type “It would perform a palletizing roution.” 3 type “Cease it simply contains type lines .” 4 return End,本课件参考书目,请参看机器人编程语言 VAL II简介 ,刘景泰 审订,RH06A- GRC系统先进性表现,除考虑性能指标的先进性之外,还考虑了系统结构的先进性 采用32位计算机全数字控制;开放式和模块化结构 如硬件采用模块化结构,软件则采用分层结构和功能模块等方式 在控制方式和部件方面也采用最新科技成果 如加减速采用了软件动态控制方式和采用数字位置伺服控制 采用现场总线通讯

33、技术 增加离线编程功能模块等,RH06A焊接机器人控制器硬件系统,CAN,RH06A焊接机器人控制柜组成,嵌入式主控计算机采用基于PC总线S104/486DX 工业控制级嵌入式单板计算机。其核心是 AMD 80486 DX微处理器。 脉冲分配及I/O控制板连接主控计算机和伺服驱动器的数控部分,以及6路I/O扩展接口。 主控逻辑板基本机器人控制逻辑,作为控制板的子模块。将主控计算机的控制命令传送至各伺服驱动器和其他执行部件,同时将伺服驱动器和机器人的各个相关部件的状态传送至主控计算机。 输入输出模块用户I/O板是系统扩展的I/O子模块,实现系统对周边设备的控制,提供了32点光耦输入与32点继电器

34、输出。 伺服驱动器(伺服包)用于控制机器人的运动。交流伺服驱动器最终输出部件采用脉宽调制。由位置反馈、速度反馈和电流反馈三环控制,因而具有高精度、高响应性。 示教编程盒信息的键入与显示,完成机器人的运动规划、插补(关节、直线、圆弧插补)和位置伺服以及主控逻辑、数字I/O等功能,主控计算机,脉冲分配及I/O控制板,脉冲分配部分 : 将主控计算机的运动控制命令转换成伺服驱动器可接收的含有位置速度信息的脉冲串,并发送至伺服驱动器;同时将伺服驱动器反馈的电机位置传送至主控计算机。,控制部分: 连接主控计算机和所有开关量,包括基本机器人系统I/O量和所有周边设备I/O量,通过各个相关模块将主控计算机的I

35、/O控制命令传送至各执行部件,同时将各个相关部件的状态传送至主计算机。,绝对码盘输入口(DB25/F),软件系统,采用软件工程的思想,充分发挥VRTX实时多任务操作系统的功能,实现以功能键驱动的全菜单操作的汉字机器人操作系统。 机器人软件系统由机器人基本系统和机器人应用(扩展)系统组成。基本系统完成机器人示教、执行、系统检查等功能。在此基础上我们进行了功能扩充,增加了内嵌PLC功能和机器人的协调运动算法,使机器人控制器的控制轴数增加到12个轴,即机器人可对多个弧焊工作站进行协调运动。,VRTXsa 基本体系结构,硬 件,用户定义扩展例程,中断支持,基本调用,Clock,PROM,Micro-

36、processor,Char I/O Dev,RAM,Other Peripherals,软 件,多 任 务 应 用 程 序,基本系统调用处理程序,I/O系统调用处理程序,用户定义系统调用,应用对VRTXsa 的扩展例程,任务管理 通信同步 内存管理,ISR,ISR,ISR,基于VRTX的机器人控制器软件系统,VRTX 软件系统特点,机器人整个软件采用VRTX实时多任务操作系统实现。 VRTX是确定性,抢占式和基于优先级的实时多任务操作系统。 VRTX实时多任务操作系统根据功能来分层,每一层都使用下一层提供的功能。 系统硬件构成了系统的最底层。紧接着一层包括了最简单的,大多是硬件相关的操作系统

37、功能,最上层是应用程序。 从技术的角度来看,每一层都为其上一层定义了一个虚拟机。 在更高的层上,是不能分辨出由软件提供的功能与由硬件提供的功能,每一层都增加了一些功能。,RH06A机器人控制器任务间数据流程,RH06A机器人控制器示教系统,面板式键盘(示教键/编程键/控制键;运动类键/非运动类键) 液晶显示屏(128* 240全点阵式,字符方式为16行*40列) 指示灯(标明坐标系、运动速度、控制方式、运动状态和用户区域) 急停按钮和上电按钮直接与系统控制逻辑电路相连。,示教编程器面板,示教编程器屏幕显示,编程示教器屏幕说明,1)状态提示行包括: 工作方式: 示教:示教一个新程序或修改原程序;

38、执行:对示教好的程序执行再现操作。 程序名: 11 HOME 等 操作提示: 示教: R1 MOVJ R1 MOVL R1 MOVC 执行: 自动 启动 一次 暂停 单步 停止、急停、报警 一级菜单 : 显示 选择 用户 功能 编辑 下组菜单 : 表明有下组菜单 2)数据信息区: 包括屏幕名和内容。 3)语句提示行: 提示要输入的语句。 4)参数输入行: 输入语句参数。 5)信息提示行: 显示提示信息和错误信息。 6)软键提示行: 提示当前软键功能(F1F5)。,RH06A焊接机器人基本指令表,注释 1.在 中的数据不显示 2.在中为要输入的数据,运动指令,协调运动指令,控制指令,输入输出指令

39、,弧焊指令,RH6示教程序范例,机器人程序是用机器人语言描述的机器人完成的操作。下面以一个简单的弧焊程序为例,介绍机器人程序的示教编程。 1.示教准备 在开始示教前,按下列步骤操作: 进入示教工作方式并设定示教锁; 选择机器人运动模式; 输入一个程序名; 设定为编辑状态。 2.示教一个程序 在A、B两点之间进行焊接。 工件放在变位机上。,RH6示教程序范例,RH6示教程序范例,RH6示教程序范例,RH6示教程序范例,RH6示教程序范例,RH6示教程序范例,注意:当机器人运动到示教点时,须抬起正向运动键,接着再次按下,机器人向下一个示教点运动。在机器人运动过程中,抬起正向运动键,机器人立即停止运动。,RH06A机器人控制器示教系统硬件结构,示教编程盒以80

温馨提示

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

评论

0/150

提交评论