在S7300400型PLC中使用高级语言编程参考模板

上传人:无*** 文档编号:135376277 上传时间:2022-08-15 格式:DOC 页数:27 大小:361KB
收藏 版权申诉 举报 下载
在S7300400型PLC中使用高级语言编程参考模板_第1页
第1页 / 共27页
在S7300400型PLC中使用高级语言编程参考模板_第2页
第2页 / 共27页
在S7300400型PLC中使用高级语言编程参考模板_第3页
第3页 / 共27页
资源描述:

《在S7300400型PLC中使用高级语言编程参考模板》由会员分享,可在线阅读,更多相关《在S7300400型PLC中使用高级语言编程参考模板(27页珍藏版)》请在装配图网上搜索。

1、在S7300/400型PLC中使用高级语言编程S7-SCL是一种类似于Pasical、Deliphi的高级编程语言,其符合国际标准IEC 61131-3,也就是说支持该标准的任意厂家的PLC均可以使用与之相似的语言编程。这种语言适合于处理复杂的逻辑和大量的数学运算,由于其具有高级语言的编程结构,因此和S7的STL语句表编程方式比较起来有着更加方便的控制方式,可以这样说,只要是必须使用语句表的地方,我们均可以考虑使用SCL,也许STL在执行时比SCL更加高效,但事实上也不一定,首先SCL可以编译成STL,同时SCL设计时可以优化编程,而STL若运用不当,可能还会将低效率。当然在目前的这种系列的P

2、LC上,效率对于我们来说已是次要的,我们更关心的是编程结构。就像在PC机上,舍弃了汇编语言,而主要采用C/C+等高级语言。总体来说,SCL适合于编写标准功能块,由于在维护中,它和STL一样,不象Lad一样利于维护,因此这些标准功能块都应该有文档说明,以便用户了解其功能。 下面的内容主要是参考西门子的S7-SCL文档,对SCL进行了系统的介绍,最后给出了示例。 这里假设读者是学过S7-300/400编程,并曾经学过至少一种计算机高级编程语言。 一、 软件的使用1、 创建一个新的S7-SCL Source 文件 打开工程项目选择CPU站选择S7 Program选择Sources在右边窗口的空白处点

3、右键选Insert New Object点击SCL Source双击创建的SCL Source文件,进入SCL编辑界面。 2、 块保护 在SCL Source文件的开头添加关键字:KNOW_HOW_PROTECT,当打开由其创建的块时,只能显示参数,而看不到内容。 3、主菜单”Insert”下的”Block Template”可用于插入如OB,FB等各种块的结构。”Control Structure”菜单可插入各种流程控制结构,这些都可以简化编程。 4、在运行程序之前,首先必须对它进行编译,可以编译整个Source文件或者某个被选择的块,通过选择菜单File Compile Selected

4、Blocks。也可以把几个Source文件一起进行编译,其方法是创建一个S7-SCL compilation control file.在该文件中依次输入需要编译的SCL Source文件名,然后执行编译即可。 二、语法规则1 / 271、编写SCL Source文件的一般规则 FB, FC, OB, DB以及用户定义的UDT,它们使用的任意数字号均可以在SCL Source中编辑。 每种块类型都有它自己的结构。 每段落或者每个变量的声明以符号”;”标志结束。 不区分大小写。 注释仅存在于程序文档中,它不影响程序运行。 当一个功能块被调用时,其背景数据块被自动创建,因此它们不需要被编辑。 DB

5、0有特定用途,因此在程序中不能创建DB0. 2、 编写块的先后次序 被调用的块必须位于调用块之前。 UDT的定义必须位于其被使用的位置之前。 共享数据块必须位于那些使用它的所有块之前。 三、 数据类型1、数据类型预览、基本数据类型2、补充、DATE_AND_TIME Data Type其值的范围:DT#1990-01-01-0:0:0.0-DT#2089-12-31-23:59:59.999该类型以BCD码形式存储。 例如20/Oct./1995 12:20:30 and 10 milliseconds显示如下:DATE_AND_TIME#1995-10-20-12:20:30.10DT#19

6、95-10-20-12:20:30.10 STRINGe.g. 声明VARText1 : String 123; /该字符串的最大容量为123个字符Text2 : String; /该字符串的默认容量为254个字符END_VAR 初始化:x : STRING7:=Address; /在使用STRING前,必须对它赋值。 FUNCTION Test : STRING45VAR_TEMPx : STRING45;END_VARx := a;x := concat (in1 := x, in2 := x);Test := x; /返回值END_FUNCTION 数组类型e.g.VARCONTROLL

7、ER1 : /声明3行、4列的二位整数数组,并对其初始化ARRAY1.3,1.4 OF INT:= -54, 736, -83, 77,-1289, 10362, 385, 2,60, -37, -7, 103 ;CONTROLLER2 : ARRAY1.10 OF REAL ; /声明10个数的一维实数数组END_VAR注:数组的最大维数为6维,数组的索引范围为-32768 - 32767之间的任意整数。所有的基本数据类型均可用于数组。数组可以使用变量进行索引,例如:arrname_1 i := arrname_2 j ; STRUCT类型e.g. 声明一个结构MOTOR中包含另一个结构DA

8、TA。对结构声明时,可以初始化元素,也可以在使用之前再初始化。VARMOTOR : STRUCTDATA : STRUCTLOADCURR : REAL ;VOLTAGE : INT := 5 ;END_STRUCT ;END_STRUCT ;END_VAR结构以WORD的形式结尾,否则系统自动把丢失的字节补到结构中去。 用户定义类型UDT (使用关键字TYPE)TYPE /定义名字为MEASVALUES的数据类型MEASVALUES: STRUCTBIPOL_1 : INT := 5;BIPOL_2 : WORD := W#16#FFAA ;BIPOL_3 : BYTE := B#16#F1

9、 ;BIPOL_4 : WORD := W#16#1919 ;MEASURE : STRUCTBIPOLAR_10V : REAL ;UNIPOLAR_4_20MA :REAL ;END_STRUCT;END_STRUCT;END_TYPE/在FB10中使用该类型FUNCTION_BLOCK FB10VARMEAS_RANGE : MEASVALUES; /创建UDT数据END_VARBEGIN/ 使用UDT数据MEAS_RANGE.BIPOL_1 := -4 ;MEAS_RANGE.MEASURE.UNIPOLAR_4_20MA := 2.7 ;END_FUNCTION_BLOCK POIN

10、TER类型e.g./定义功能块FC100FUNCTION FC100 : VOID /VOID表明该功能不返回值VAR_IN_OUT /定义FC100的输入输出型参数N_out : INT;out : POINTER; /定义POINTER型数据类型,参数均为临时变量END_VARVAR_TEMP /定义临时变量ret : INT;END_VARBEGIN /进入函数主体/ .ret := SFC79(N := N_out, SA := out);END_FUNCTION/定义功能块FB100FUNCTION_BLOCK FB100VAR /定义静态变量,即离开块后仍旧保存状态的变量ii :

11、INT;aa : ARRAY1.1000 OF REAL;END_VARBEGIN/ .FC100(N_out := ii, out := aa); /调用FC100,使用指针的方式传递整个数组/ .END_FUNCTION_BLOCK ANY类型e.g.VAR_INPUT /输入型变量iANY : ANY; /定义为ANYEND_VARVAR_TEMPpANY : ANY; /定义为ANYEND_VARCASE ii OF /CASE分支语句1: pANY := MW4; / 将MW4的地址赋给pANY/ of MW43.5: /等于3,4,5的情况下pANY:= aINTii; / pAN

12、Y contains the address/ of the ii th/ element of the aINT field;100:pANY := iANY; / pANY contains the value/ of the iANY input variableELSEpANY := NIL; / pANY contains the value/ of the NIL pointerEND_CASE;SFCxxx(IN := pANY); 四、局部变量和参数的声明1、变量 静态变量:用于保持块的数据,该数据存在背景数据块中。临时变量:仅在块运行过程中存在。若多个变量的数据类型一致,可用

13、如下方式:VALUE2, VALUE3,VALUE4,.: INT;声明时可以初始化:VALUE :REAL := 20.25;数组的初始化有两种方式:CONTROLLER1 : ARRAY 1.2, 1.2 OF INT := -54, 736, -83, 77;当把相邻的数组元素赋相同的值时,例如,把A32到A311的值设为100.0:A3 : ARRAY1.12 OF REAL := 0.0, 10(100.0), 1.0; 2、块参数 输入参数: 用于接收当块被调用时的输入值,他们是只读的。输出参数: 传输当前值到这个调用块,在被调用块中应该对该参数赋值输入/输出参数:用于接收当块被调

14、用时的输入值,并可以把结果返回到调用块。 3、使用多重背景 声明方式如下:Supply1 : FB10; / Supply1为FB10的背景DBSupply2,Supply3,Supply4 : FB100; /为FB100声明多个背景DBMotor1 : Motor ; / Motor为某个FB的符号名 4、 变量的声明五、常量S7-SCL常量分位常量、数字常量、字符常量、时间常量,使用CONSTEND_CONST声明。e.g.CONSTNumber := 10 ; /整数常量TIMEOFDAY1 := TIME#1D_1H_10M_22S_2MS ; /时间常量NAME := SIEMEN

15、S ; /字符串常量NUMBER2 := 2 * 5 + 10 * 4 ; NUMBER3 := 3 + NUMBER2 ;END_CONST 1、 位常量 Bool#false 位的值为TRUE或者FALSE8#177777 8进制DW#16#0000_0000 16进制 2、 整数常量,它有多种表达方式 15 10进制值为152#1111 2进制值为1516#F 16进制值为15Value_2:=2#0101; / 2进制值为5Value_3:=8#17; / 10进制值为14Value_4:=16#F; / 16进制值为15Value_5:=INT#16#3f_ff / 16进制值,类型

16、被定义 3、 Real常量 NUM4:= -3.4 ;NUM5:= 4e2 ;NUM6:= real#1.5; 4、 字符常量(单个字符) Charac_1 := B;Charac_2 := char#43; Charac_3 := char#B; /字符BCHARACTER := $41 ; /字符A 5、 字符串常量 NAME:= SIEMENS; 6、日期常量 TIMEVARIABLE1:= DATE#1995-11-11 ;TIMEVARIABLE2:= D#1995-05-05 ; 7、 时间常量 Interval1:= TIME#10.5S ;Interval2:= T#3D_2S

17、_3MS ; 8、 Time-of-Day常量 TIMEOFDAY1:= TIME_OF_DAY#12:12:12.2 ;TIMEOFDAY2:= TOD#11:11:11 ; 9、Date and Time常量 TIMEOFDAY1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ;TIMEOFDAY2:= DT#1995-02-02-11:11:11; 六、CPU的内存区域1、可以直接操作字节、字、位STATUSBYTE :=IB10;STATUS_3 :=I1.1;MEASVAL :=IW20;2、可以通过索引对位、字、字节操作,该索引可以是变量MEASVAL

18、_1 :=IWCOUNTER; /若COUNTER=5,则MEASVAL_1的值为IW5OUTLABEL :=IBYTENO, BITNO; / 若BYTENO=3,BITNO=1,则OUTLABEL=I3.1注:当获取的数据类型是BYTE, WORD or DWORD,时,使用一个索引参数,当获取的数据类型为BOOL时,必须使用两个索引参数,分别指定字节号和位号。3、对数据块的操作STATUSBYTE :=DB101.DB10; /字节操作STATUS_2:= DB12.DXWNO, BITNO; /位操作,支持索引STATUSBYTE :=Status_data.DWCOUNTER; /字

19、操作,支持索引MEASVAL :=Measdata.DW20;STATUS_1 :=WORD_TO_BLOCK_DB(INDEX).DW10;注:和Lad及STL语言比较起来,SCL在对数据块中的字、字节等操作时,少一个”B”字符。七、表达式、操作符和地址1、操作符预览八、控制流程1、IF选择语句IF condition THENELSIF condition THEN / ELSIF语句可以不使用,或者使用一个或者多个ELSE / ELSE语句可以不使用END_IF ;e.g.IF ARRAYINDEX = INDEX THENCONTINUE ;END_IF ;2、CASE选择语句CASE

20、 intVariant OF1 : DISPLAY:= OVEN_TEMP;2 : DISPLAY:= MOTOR_SPEED;3.10: DISPLAY:= INT_TO_DINT (TW); /可以指定连续的值QW4:= 16#0004;11,13,19: DISPLAY:= 99; /也可以把一系列值列出来QW4:= 16#0005;ELSE: / ELSE:可以省略DISPLAY:= 0;TW_ERROR:= 1;END_CASE ; 3、FOR循环语句FUNCTION_BLOCK FOR_EXAVARINDEX: INT ;IDWORD: ARRAY 1.50 OF STRING;E

21、ND_VARBEGINFOR INDEX := 1 TO 50 BY 2 DO /从1到50,增量为2IF IDWORD INDEX = KEY THENEXIT; /退出循环END_IF;END_FOR;END_FUNCTION_BLOCK注:一些关键字EXIT 退出其所在的循环。CONTINUE 终止当前循环的执行,控制程序进入下一循环。RETURN 退出当前正在被执行的块。4、WHILE循环WHILE INDEX = 50 AND IDWORDINDEX KEY DO /两个条件均满足才执行循环INDEX := INDEX + 2;END_WHILE ; 5、REPEAT循环REPEAT

22、INDEX := INDEX + 2 ; /该语句与WHILE的区别是UNTIL之前的语句总是先执行一次UNTIL INDEX 50 OR IDWORDINDEX = KEY /这两条件之一若满足,则退出循环END_REPEAT ; 6、GOTO跳转语句IF A B THENGOTO LAB1 ; /若条件满足,则跳到LAB1处ELSIF A C THENGOTO LAB2 ;END_IF ;/ . . .LAB1: INDEX := 1 ;GOTO LAB3 ;LAB2: INDEX := 2 ;7、调用块绝对地址调用,例如:FB10.DB20(X1:=5,X2:=78,.); /参数可以任

23、意排列FC31 (X1:=5, Q1:=Checksum) ;符号地址调用,例如:DRIVE.ON (X1:=5,X2:=78,.);DISTANCE (X1:=5, Q1=:Checksum) ;每一个功能块有一个输入隐藏参数EN,和一个输出隐藏参数ENO,这两个参数是系统设定的,均为BOOL型,不需要声明,但在编程中可以使用,例如:/若MY_ENABLE为FALSE,则FC85不会被执行,只有为TRUE,才会执行Result := FC85(EN:= MY_ENABLE, PAR_1:= 27); FB30.DB30 (Parameter supply);IF ENO THEN /若FB3

24、0的调用没有问题,则/ . . .ELSE/ . . .END_IF; 九、定时器和计数器1、计数器S_CU 增计数器S_CD 减计数器S_CUD 增/减计数器e.g.S_CUD (C_N=C12, /绝对调用定时器,指定计数器号CD:=I0.0,CU:=I0.1,S:=I0.2 & I0.3, /置位条件PV:=120, /设定计数器值R:=FALSE, /复位条件CV:=binVal, /输出参数,二进制计数值Q:=actFlag); /输出参数,计数器的状态FUNCTION_BLOCK COUNTVAR_INPUTCount: ARRAY 1.4 of STRUCTC_N INT;PV

25、: WORD;END_STRUCT;END_VARFOR I:= 1 TO 4 DO /动态调用计数器S_CD(C_N=CountI.C_NO, S:=true, PV:= CountI.PV);END_FOR;FUNCTION_BLOCK COUNTERVAR_INPUTMYCounter:COUNTER;END_VARCurrVal:=S_CD(C_N=MyCounter,.); /动态调用计数器 2、定时器定时器有5种,依次为:S_PULSE S_PEXT S_ODT S_ODTS S_OFFDT VARCurrTime : S5time;BiVal : word;ActFlag : b

26、ool;END_VAR/在调用定时器时,部分参数可以省略,但左边的赋值变量一定不能省略。CurrTime:=S_ODT(T_N=T10, /绝对调用,制定定时器号S:=TRUE, /置位条件TV:=T#1s, /设定定时器值R:=FALSE, /复位条件BI:=biVal,Q:=actFlag);FUNCTION_BLOCK TIMEVAR_INPUTMY_TIMER: ARRAY 1.4 of STRUCTT_N INT;TV : WORD;END_STRUCT;END_VARFOR I:= 1 TO 4 DOCurrTime:= S_ODT(T_N=MY_TIMERI.T_NO, S:=t

27、rue,MY_TIMERI.TV);END_FOR; FUNCTION_BLOCK TIMERVAR_INPUTmytimer:TIMER;END_VARCurrTime:=S_ODT(T_N=mytimer,.); 十、S7-SCL中的标准功能1、数据类型转换函数隐式转换,其依照的顺序为:BOOL BYTE WORD DWORDINT DINT REAL e.g.VARPID_CTRLLER_1 : BYTE ;PID_CTRLLER_2 : WORD ;END_VARIF (PID_CTRLLER_1 PID_CTRLLER_2) THEN . /此时PID_CTRLLER_1被转换成WO

28、RD当然,也可以使用以下功能显示的转换: BOOL_TO_BYTE 、 BOOL_TO_DWORD 、BOOL_TO_WORD 、BYTE_TO_DWORD 、BYTE_TO_WORD 、 CHAR_TO_STRING 、DINT_TO_REAL 、INT_TO_DINT 、INT_TO_REAL、WORD_TO_DWORD BYTE_TO_BOOL :Copies the least significant bitDINT_TO_TOD :Copies the bit string YDINT_TO_BOOL :DWORD_TO_BOOL(DINT_TO_DWORD(x) YDINT_TO_

29、BYTE :DWORD_TO_BYTE(DINT_TO_DWORD(x) YDINT_TO_STRING :DI_STRNG YDINT_TO_BCD(x)DINT_TO_BCD_DWORD(x)2、ROUND和TRUNCROUND():将REAL数四舍五入取整返回DINTTRUNC():舍弃REAL数的小数部分取整返回DINT 3、一般数学函数例子:RESULT := ABS (-5) ; /5RESULT := SQRT (81.0); /9RESULT := SQR (23); /529RESULT := EXP (4.1); /60.340 .RESULT := EXPD (3); /

30、1_000PI := 3. 141 592 ;RESULT := SIN (PI / 6) ; /0.56、移位函数ROL、ROR、SHL、SHR例子:RESULT := ROL (IN:=BYTE#2#1101_0011, N:=5); /2#0111_1010 ,左移5位 ,移出的填充到右边空位RESULT := ROR (IN:=BYTE#2#1101_0011, N:=2); /2#1111_0100 ,右移2位 ,移出的填充到左边空位RESULT := SHL (IN:=BYTE#2#1101_0011, N:=3); /2#1001_1000 ,左移3位,空余部分用0填充RESUL

31、T := SHR (IN:=BYTE#2#1101_0011, N:=2); /2#0011_0100 ,右移2位,空余部分用0填充 7、字符串函数由于PLC编程中字符、字符串的使用比较少,这里不详叙,感兴趣的可以参考西门子文档中的 14.4 Functions for Processing Strings (P293-P303) 8、 选值函数最大值函数/用于获取这些参数中的最大值,参数最多可以有32个,其参数类型除了S5TIME以外,任意其他数/子类型均可以,但所有的参数数据类型必须一致。A:=MAX(IN1:=a, IN2:=b, IN3:=c, IN4:=d.);最小值函数/用于获取这

32、些参数中的最小值,参数最多可以有32个,其参数类型除了S5TIME以外,任意其他数/子类型均可以,但所有的参数数据类型必须一致。A:=MIN(IN1:=a, IN1:=b, IN1:=c, IN1:=d);极限值函数A:=LIMIT(MN:=5, IN:= Execution steps, MX:= 10);MUX函数A:=MUX(K:=SELECT, IN0:= Steps, IN1:=Number, IN2:=Total);9、系统功能/功能块、标准库SCL像其他语言一样,可以调用各种功能块,包括系统功能、功能块SFC/SFB 十一、示例 (均在PLC-SIM上测试通过)1、编写位偏移程序

33、传递M变量的起始字节和位、偏移量,然后根据偏移量,算出当前M变量的字节和地址。例如针对M5.4,若给定偏移量1,则当前还是M5.4,若给定2,则为M5.5,依次类推,若给定偏移量6,则为M6.1/根据偏移量来设定字节和位FUNCTION FC200: voidVAR_INPUT /输入变量byteNINT; /指定M起始字节号bitNINT; /指定起始位号bitNum:INT; /指定位数END_VARVAR_OUTPUT /输出变量currBit:INT; /当前位currByte:INT; /当前字节END_VARVAR_TEMPtmp:INT;END_VARBEGINtmp:=(bit

34、No+bitNum-1)DIV 8;currByte:=byteNo+tmp;currBit:=bitNo+bitNum-(8*tmp+1);END_FUNCTION2、功能选择程序 假设某个机床有若干过手动功能,使用两个按钮”+”和”-“,按一次”+”,功能号加一,然后相应的功能选择指示灯被点亮,譬如,当前功能3被选中,与之对应的指示灯亮,这时按一次按钮”+”,则功能4被选中,与之对应的指示灯亮,而与功能3对应的指示灯灭,同时,当功能号到达最大值时,若再按一次按钮”+”,则功能号转到1,重新开始循环,按钮”-“与”+”正好相反,用于控制功能号递减。同时要求,当按住某个按钮超过1s时,则功能号

35、每过200ms钟加一或者减一。/主要控制功能FC10/FUNCTION FC10: VOIDVAR_INPUT /输入变量fnAdd:BOOL; /接收+按钮fnSub:BOOL; /接收-按钮 byteNINT; /指定M起始字节号,这些M位与相应得某个功能对应。bitNINT; /指定起始位号bitNum:INT; /指定总的位数END_VARVAR /静态变量pus1:BOOL; /记录按钮+的脉冲pus2:BOOL; /记录按钮-的脉冲button:BOOL; /确定按钮+或者按钮-被按下currNINT; /记录当前的功能号 currBit:INT; /当前位currByte:INT

36、; /当前字节/定时器输出p1:BOOL;p2:BOOL;p11:BOOL; /记录按钮+的时钟p111:BOOL;p22:BOOL; /记录按钮-的时钟p222:BOOL;CurrTime:S5TIME;END_VARVAR_TEMPi:INT;END_VARBEGIN/若都接通,则推出块IF fnAdd&fnSub THENRETURN;END_IF; /获取按钮+的脉冲/IF fnAdd &(button=false) THENpus1:=true; ELSEpus1:=false;END_IF;/按钮-的脉冲/IF fnSub &(button=false) THENpus2:=tru

37、e; ELSEpus2:=false;END_IF;IF (fnSub&(fnAdd=false)OR (fnAdd&(fnSub=false) THENbutton:=true;ELSEbutton:=false;END_IF;/添加定时器监测/CurrTime:=S_ODT(T_N=T10, S:=fnAdd, TV:=T#800ms,Q:=p1); /按钮按下的时间CurrTime:=S_ODT(T_N=T11, S:=p1&p111, TV:=T#200ms,Q:=p11);IF p11=true THENp111:=false; /当定时器有输出后,断开信号,使其在下一扫瞄周期中无输

38、出ELSEp111:=true; /在按钮按下的情况下重启定时器计时END_IF;CurrTime:=S_ODT(T_N=T20, S:=fnSub, TV:=T#1s,Q:=p2);CurrTime:=S_ODT(T_N=T21, S:=fnSub&p222, TV:=T#200ms,Q:=p22);IF p22=true THENp222:=false; /当定时器有输出后,断开信号,使其在下一扫瞄周期中无输出 ELSEp222:=true; /在按钮按下的情况下重启定时器计时END_IF;/功能号从1开始,最后一个的号等于bitNumIF pus1=true OR p11 THEN /按

39、钮+的脉冲IF currNo currN=currNo+1;ELSEcurrN=1;END_IF;ELSIF pus2=true OR p22 THEN / 按钮-的脉冲IF currNo1 THENcurrN=currNo-1;ELSEcurrN=bitNum;END_IF;END_IF;/把它的上一个功能置0mcurrByte,currBit:=false;fc200(byteN=byteNo,bitN=bitNo,bitNum:=currNo,currBit:=currBit, currByte:=currByte);/把当前功能置1mcurrByte,currBit:=true;END_FUNCTION注:上程序有些繁琐,主要是在编写按钮脉冲时有些费事,好像SCL不提供脉冲沿检测函数。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!