DNP3协议简要介绍_第1页
DNP3协议简要介绍_第2页
DNP3协议简要介绍_第3页
DNP3协议简要介绍_第4页
DNP3协议简要介绍_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

DNP3.0规约简介综述DNP3.0规约采用异步方式,一个起始位,一个结束位,8个数据位,无奇偶校验位。信号电平符合EIA—RS232标准。DNP3.0规约采用EPA模型,分为三层结构:数据链路层,伪传输层和应用层。数据链路层负责通信链路的建立、数据的接收、发送和初步处理;伪传输层负责应用数据的分包和组包;应用层实现真正的信息处理。DNP3.0规约多采用问询—应答方式,但也允许从站主动上送信息。一个典型的DNP应答处理过程一般为:主站:应用层组织好信息后交给伪传输层;传输层把应用层报文分帧,每帧前加上一个报头TH,然后交给链路层;链路层则把每帧报文分块,每块最多16字节,每个块后加一个16位的CRC校验码,同时链路层有一个固定长度的报头,包含有地址、长度等信息;主站链路层发送报文,并且在规定时间内没有收到对方确认时进行重发(如果要求);从站:链路层接收完一帧报文后,进行CRC、地址、长度等合法性检查,如对方链路层要求确认,则回答ACK或NACK报文,然后把接收正确的报文去掉报头和每块的CRC后交给传输层;传输层检查TH报头,并在多帧报文时按顺序把报文组成一个完整的应用层数据包,然后交给应用层;应用层收到报文后,如对方应用层要求确认,先回答一个Confirm报文,然后对信息进行处理,再组织回答报文(回答过程类似主站)。数据链路层DNP3.0的数据链路层采用一种可变帧长格式:FT3。FT3帧长格式:一个FT3帧被定义为一个固定长度的报头,随后是可选的数据块,每个数据块附有一个16位的CRC校验码。固定的报头含有2个字节的起始字,一个字节的长度(LENGH),一个字节的链路层控制字(CONTROL),一个16位的目的地址,一个16位的源地址和一个16位的CRC校验码。块0块1块N起始字节0x05起始字节0x64长度链路层控制字目的地址源地址CRC校验码用户数据CRC校验码…….用户数据CRC校验码定长的报头主体起始字:2字节,0x05,0x64;长度:1字节,是控制字、目的地址、源地址和用户数据之和(不含CRC)。5≤长度≤255;目的地址:2个字节,低字节在前;0xFFFF为广播地址;源地址:2个字节,低字节在前;用户数据:跟在报头之后的数据块,每16个字节一块,最后一个块包含剩下的字节,可以是1到16个字节。每个数据块都有一CRC循环冗余码挂在后面。CRC循环冗余码:2个字节。在一个帧内,挂在每个数据块之后。CRC生成多项式:G(x)=x16+x13+x12+x11+x10+x8+x6+x5+x2+1(0x3d65);CRC按字节反向排列;控制字与功能码:链路层通信控制字包含有本帧的传输方向,帧的类型以及数据流控制信息。76543210DIRPRMFCBFCV功能码RESDFCDIR:方向位(direction),表示此帧是由主站发出(1)还是从站发向主站(0)。PRM:源发标志位(primary),表示此帧是来自源发方还是来自响应方。DNP允许从站主动上送报文,因此源发方既可以是主站,也可以是从站。FCB:(源发站报文PRM=1)帧的计数位,0、1交替变化,设计此位的目的是进行简单的纠错。FCV:(源发站报文PRM=1)帧的计数位的有效标志,为1时,FCB位有效。DFC:(响应站报文PRM=0)数据链路层数据缓冲区溢出;当主站收到此位后,应该停止发送,改为询问对方的链路层状态,直到对方回答链路层可用后再发送报文;RES:(响应站报文PRM=0)保留(0);功能码:主站(Primary)从站(Secondary)功能码帧类别功能FCV帧类别功能0SEND-要求CONFIRM复位远方链路0CONFIRMACK-确认回答1SEND-要求CONFIRM复位用户进程0CONFIRMNACK-否定回答:链路忙,消息未接收2SEND-要求CONFIRM测试链路功能1-未使用3SEND-要求CONFIRM用户数据UserData1-未使用4SEND-不要求回答不需确认数据报文0-未使用5-8-未使用--未使用9REQUEST-要求RESPONSE请求链路状态0-未使用10-未使用--未使用11-未使用-RESPOND链路状态(DFC=0/1)12-15-未使用--未使用RESET命令(0):Primary(主):在上电或通信失败后,不断向SECONDARY下发(FCV=0,FCB=x,PRM=1,DIR=x)并等待,直到有ACK回答;Secondary(从):在上电或通信失败后,一直等待RESET命令;然后回答ACK响应(DFC=x,PRM=0,DIR=x),将FCB设为1(即接收到的下一帧应该其FCB=1)。Resetofuserprocess(1):用于复位链路使用者(指传输层)进程,主要是复位链路状态;回答ACK/NACK;Test(2):从站收到后,将FCB与预期的FCB比较,如相符,回答ACK(FCB翻转),否则,重复送上次发送的最后一帧;UserData(3):从站收到后,如果链路使用者(指传输层)可以接收数据,回答ACK,否则回答NACK;UnconfirmedUserData(4):从站收到后交给链路使用者(指传输层),不做回答;RequestLinkStatus(9):从站收到后,回答链路状态,如果链路使用者(指传输层)可以接收数据,DFC=0,否则DFC=1。*注:FCV/FCB:主站在上电或通信失败后,不断向从站下发RESET命令,FCV=0,FCB=x(即不进行FCB校验);从站回答ACK,完成握手,并保存主站FCB状态(设为FCB’=1);接着主站下发其他命令,如果主站需要进行FCB校验,其下发命令中FCB=1,FCV=1;从站收到命令后,如FCV=1,则将主站命令中的FCB与保存的FCB’比较,如相等,FCB校验OK,把FCB’翻转为0,否则丢弃本帧报文。当FCV=0时,不进行FCB校验。传输层DNP的传输层是一个伪传输层。伪传输层功能专门设计用于在源站和从站之间传送超出链路规约数据单元(LPDU)定义长度的信息。其格式如下:TH(传输层报头)数据块其中:传输层报头TH:传输控制字,1个字节数据块:应用层用户数据1-249个字节由于数据链路层的FT3帧格式中长度字的最大限制为255,因此传输层数据块的最大长度为:255-5(链路层控制字+源地址+目的地址)-1(TH)=249。当应用层用户数据长度大于249字节时,传输层将以多帧报文方式传送,并每帧前加TH控制字。如1234=249+249+249+249+238,分5帧传送。传输层报头(TH)格式:76543210FINFIR序号FIN:此位置“1”FIR:此位置“1”序号:表示这一数据帧是用户信息的第几帧,帧号范围为0~63,每个开始帧可以是0~63中的任何一个数字,下一帧自然增加,63以后接0。当用户数据只有一帧时,FIR和FIN都为1。传输层收到一帧报文后,如果FIR等于1,则记下帧序号,等待下一帧,直到收到有FIN标志的帧为止。如果接收帧系列的序号都正确,则把所有帧组成一个完整的包,否则认为报文出错。应用层DNP的应用层负责真正的信息处理。其报文分为请求报文和响应报文两类。在DNP中,只有指定的主站能够发送应用层的请求报文,而从站则只能发送应用层的响应报文。4.1应用报文格式:应用请求报文RequestHeader请求报头ObjectHeader对象标题Data数据ObjectHeader对象标题Data数据应用响应报文:ResponseHeader响应报头ObjectHeader对象标题Data数据ObjectHeader对象标题Data数据其中:请求(响应)报头:标识报文的目的,包含应用规约控制信息(ACPI);对象标题:标识随后的数据对象;数据:在对象标题内指定的数据对象;4.2应用报文报头字段的定义:请求报头有两个字段。每个字段为8位的字节,说明如下:ApplicationControl应用控制(8bit)FunctionCode功能码(8bit)响应报头有三个字段。前两个字段为8位的字节,第三个字段为两个字节,说明如下:ApplicationControl应用控制(8bit)FunctionCode功能码(8bit)InternalIndications内部状态字(16bit)其中:应用控制:一个字节的长度,格式如下:765543210FINFIRCON序号FIR:此位置“1”FIN:此位置“1”CON:此位置“1”序号:表示分段的序号,0-15(RESPONSE响应报文)或16-31(UNSOLICITED非请求报文);响应报文的序号应等于请求报文的序号(如是多分段请求报文,则响应序号等于末分段的序号),多分段响应报文的首段序号等于请求报文的序号,后续段顺序增加。注:规约推荐每个分段的缓冲区长度为2048字节(约9个链路帧)。当应用层数据超过本层的缓冲区长度时,就把数据分成几段。但每段都应该是一个完整的应用层报文。同一个对象标题的数据不应该跨段。*“段、帧”的有关说明:DNP规约中,报文以帧(FRAME)为单位发送,链路层每次最多收/发一帧,除去报头等控制信息外,最多只能有249字符用于应用数据。但应用数据一般都超过249个字节,因此,需要在传输层把一个完整的应用层回答数据分成几帧发送,每帧前加一个TH头。假设需要3帧,第一帧TH头中FIR位=1,表示是第一帧,记录初始帧序号THSEQ=帧序号SQ0(值可以是0-63中任意数),第二帧TH头中FIR=FIN=0,帧序号THSEQ=SQ0+1;第三帧TH头中FIR位=0,FIN=1,表示是最后一帧,帧序号THSEQ=SQ0+2。这样,就形成“一问多答”,如主站发“读全遥测数据”命令,从站连续回答3帧,主站根据FIR/FIN和THSEQ,把3帧报文拼成一个完整的应用数据段,再交给应用层处理。在分帧时,不考虑应用数据的具体含义。“段”的使用与“帧”类似,但一般很少有多段数据。功能码:标识报文的目的,一个字节的长度;功能码功能描述传输功能码0Confirm(确认)报文确认。无需回答。1Read(读)请从站送所指定的数据对象;要求响应2Write(写)向从站存入指定的对象;要求回答操作结果控制功能码3Select(选择)选择操作输出对象但不进行操作;要求回答所选点的状态4Operate(执行)对已选择的输出对象进行操作;要求回答操作结果5DirectOperate(直接控制)直接对输出对象进行操作;要求回答操作结果6DirectOperate-NoAck.(直接控制-无须回答)直接对输出对象进行操作;但不要求回答冻结功能码7ImmediateFreeze(立即冻结)将指定数据对象拷贝到冻结缓冲区;要求回答操作结果8ImmediateFreeze–NoAck.(立即冻结-无须确认)将指定数据对象拷贝到冻结缓冲区;不要求回答9Freeze&Clear(冻结并清除)将指定数据对象拷贝到冻结缓冲区,清除原数据;要求回答操作结果10Freeze&Clear-NoAck.(冻结并清除-无须回答)将指定数据对象拷贝到冻结缓冲区,清除原数据;不要求回答11FreezewithTime(带时间冻结)在指定时刻及期间将指定数据对象拷贝到冻结缓冲区;要求回答操作结果12FreezewithTime-NoAck.(带时间冻结-无须回答)在指定时刻及期间将指定数据对象拷贝到冻结缓冲区;不要求回答应用控制功能码13ColdRestart(冷启动)执行指定重启系列;待从站可用后回答时间对象14WarmRestart(热启动)执行部分重启系列;待从站可用后回答时间对象15InitializeDatatoDefaults(数据恢复缺省值)将指定时间对象恢复为上电缺省值;回答操作结果16InitializeApplication(应用初始化)初始化指定应用;回答操作结果17StartApplication(应用启动)启动指定应用;回答操作结果18StopApplication(应用停止)停止指定应用;回答操作结果配置功能码19SaveConfiguration(保存配置)将指定配置保存到不可变存储区;待从站可用后回答时间对象20EnableUnsolicitedMessages(自发报文使能)允许自发上送指定数据对象;回答操作结果21DisableUnsolicitedMessages(自发报文禁止)禁止自发上送指定数据对象;回答操作结果22AssignClass(类别分配)将指定数据对象设为某一类别对时功能码23DelayMeasurement(时间延迟测量)让应用计算某一从站的传输路径延迟保留功能码24-120-保留121-128-保留(用于测试)响应功能码0Confirm(确认)报文确认。无需回答。129Response(响应)回答Request请求130UnsolicitedMessage(自发上送消息)主动上送没有请求的消息内部状态IIN:共两个字节,16位,每一位分别表示从站的当前的各种状态。字节位说明字节10广播报文收到;响应后清除1一类数据可用2二类数据可用3三类数据可用4主站要求对时;对时后清除或由主站显式清除5从站的部分或全部数字输出点处于“当地”状态时置位,此时这些点无法遥控;处于“遥控”状态时清除6设备故障7设备重启;主站显式清除(直接写从站的IIN)字节20功能码未实现1被请求对象未知(从站没有或类别不对)2限定词或变程非法3事故或其它应用缓冲区溢出4所请求的操作已经执行5当前配置受到破坏6保留(保持0)7保留(保持0)对象标题(ObjectHeader):报文的对象标题指定包含在报文中的数据对象或是被用来响应此报文的数据对象。格式如下:Object对象(2BYTE)Qualifier限定词(1BYTE)Range变程(范围)(由限定词确定)对象(Object):两个字节,指定对象组以及跟在标题后面的对象的变化。对象段的格式如下:Group对象组Variation变体对象段规定一个对象组和在该组内的对象变体。对象的组别与变体结合起来可以唯一的规定报文所指定的对象。对象组指定数据的基本形式(如:模拟输入),对象变体指定数据的形式(如16位模拟输入或32位模拟输入)。当请求报文的变体=0时,意味着请求所有该对象组的数据。DNP3.0规定的对象见4.3。限定词(Qualifier)、变程(范围,Range)限定词为1个8位的字节段,规定变程段的意义。变程说明数据对象的数量、起点和终点的索引或所讨论的对象的标识符。限定词段的格式如下:RIndexSize索引规模QualifierCode4位限定词码其中:R:保留位,置为零。索引规模(IndexSize):3个Bits,规定前置于每个数据对象的索引规模或对象的规模。报文索引规模说明请求报文且QualifierCode=110无效1数据对象标志符为8位2数据对象标志符为16位3数据对象标志符为32位4-7保留响应报文或有数据的请求报文0数据对象前没有前缀索引1数据对象前有一个1字节的前缀索引2数据对象前有一个2字节的前缀索引3数据对象前有一个4字节的前缀索引4数据对象前有一个1字节的前缀,说明对象长度5数据对象前有一个2字节的前缀,说明对象长度6数据对象前有一个4字节的前缀,说明对象长度7保留限定词码(QualifierCode):4个Bits,用以规定变程(Range)意义。限定词码说明0变程段由一个8位起始索引和一个8位停止索引组成1变程段由一个16位起始索引和一个16位停止索引组成2变程段由一个32位起始索引和一个32位停止索引组成3变程段由一个8位实际起始地址和一个8位实际停止地址组成4变程段由一个16位实际起始地址和一个16位实际停止地址组成5变程段由一个32位实际起始地址和一个32位实际停止地址组成6没有变程段(此时指所有该类数据对象);要求IndexSize=07变程段包含一个8位的对象(可能包括索引)数目(变程段值=n)IndexSize=0:变程段后跟的是数据对象0—n-1的值;IndexSize=1,2,3:变程段后跟的是n个数据对象的(索引+值);8变程段包含一个16位的对象(可能包括索引)数目9变程段包含一个32位的对象(可能包括索引)数目11自由限定词码(见详细说明)10,12-15保留变程段(Range)当限定词码取值0~5时,变程段包含1个开始范围(StartRange)和1个结束范围(StopRange)。当限定词码取值6时,表示所指定的是所要求的数据类型的全部数据对象,因此Range段的长为零(即无变程段)。当限定词码取值为7~9时,则变程段由一个计数值所组成,它指明所讨论的数据对象的数目。常用的限定词段组合如0x01,0x17,0x28等,举例说明如下:0x01:01020100000500010101818101对象组号变体QC起始索引停止索引数据0数据1数据2数据3数据4数据5变程QC=0x01中,索引规模为0,表示数据项前没有索引(即数据的序号);限定词码=1,表示有变程段,变程段由一个16位起始索引(0)和一个16位停止索引(5)组成。变程段后为数据项,每项数据为一个字节(大小由数据对象组01和变体02确定),依次为遥信点0到5。0x17200217020803ff10007对象组号变体QC变程:数目索引号值索引号值数据项一数据项二QC=0x17中,索引规模为1,表示数据项有一个8位的索引(即数据的序号);限定词码=7,表示有变程段,变程段由一个8位的数据项数目(2)组成,表示有2个数据项。变程段后为数据项,每项数据由一个8位索引和一个16位的值(值的位数数据对象组20和变体02确定)组成,例子中是遥测点8和16。0x28:类似0x17,只是索引号部分为16位。4.3DNP数据对象定义类别组号变体对象定义备注数字位输入01011bit数字输入*0102带状态数字输入*0201不带时间数字输入变位*0202带时间的数字输入变位*0203带相对时间的数字输入变位数字输出10011bit数字输出(1位)1002带状态*数字输出(8位)1201控制继电器输出块*1202方式(pattern)控制块计数器输入2001/0232/16位计数器值*2003/0432/16位计数器差值2005/0632/16位不带状态计数器值2007/0832/16位不带状态计数器差值2101/0232/16位计数器冻结值2103/0432/16位计数器冻结差值2105/0632/16位计数器带时间冻结值2109/1032/16位计数器不带状态冻结值2111/1232/16位计数器不带状态冻结差值2201/02不带时间的32/16位计数器值越限事件2203/04不带时间的32/16位计数器差值越限事件2205/06带时间的32/16位计数器值越限事件2207/08带时间的32/16位计数器冻结差值越限事件2301/02不带时间的32/16位计数器冻结值越限事件2303/04不带时间的32/16位计数器冻结差值越限事件2305/06带时间的32/16位计数器值越限事件2307/08带时间的32/16位计数器冻结差值越限事件模拟量输入3001/0232/16位模拟输入值*3003/04不带状态的32/16位模拟输入值*3101/0232/16位模拟输入冻结值3103/0432/16位模拟输入带时间冻结值3105/0632/16位模拟输入不带状态冻结值3201/02不带时间的32/16位模拟输入值越限事件3203/04带时间的32/16位模拟输入值越限事件3301/02不带时间的32/16位模拟输入冻结值越限事件3303/04带时间的32/16位模拟输入冻结值越限事件模拟输出4001/0232/16位模拟输出4101/0232/16位模拟输出块(BLOCK)时间5001日期和时间*5002带持续时间的日期和时间5201近似延时(16位:秒)5202精细延时(16位:毫秒)类6001CLASS0类数据(所有非1,2,3类数据)6002CLASS1类数据(通常为某组信息对象的变化)6003CLASS2类数据(通常为某组信息对象的变化)6004CLASS3类数据(通常为某组信息对象的事件)下面简单描述以下几种常用对象的编码格式:一位数字量输入(01/01)1/0说明:该对象常常是由多个一起组成位串,形成完整的字节(空闲的位为0),如:76543210null(0)Null(0)B5B4B3B2B1B0带状态数字量输入(01/02)76543210StateReservedChatterFilterLoca1forceddataRemoteforceddataCommunicationlostRestartOn_line其中:On_line:该测点在线且读数有效;Restart:该测点的设备目前正在重启;Communicationlost:报文源发方设备与上报该测点的设备通信中断;Remoteforceddata:该测点被其它设备强制置成当前值;Localforceddata:该测点被当地设备强制置成当前值;ChatterFilter:该测点已经经过滤波以滤除不必要的中间变化状态;Reserved:保留,恒=0;State:该测点当前状态(0/1)不带时间的数字量输入变位(02/01)76543210StateReservedChatterFilterLoca1forceddataRemoteforceddataCommunicationlostRestartOn_line说明:该对象类似普通遥信变位;带时间的数字量输入变位(02/01)Flag(0-7)Time(0-48)其中:Flag同上(01/02和02/01)所述的状态字节;Time为48位的无符号整数,低字节在先,其值为自1970年1月1日0:0:0起的毫秒数;说明:该对象即普通所谓SOE;控制继电器输出块(12/01)ControlCode(0-7)Count(0-7)OnTime(0-31)OffTime(0-31)Status(0-7)其中:ControlCode76543210Trip/CloseClearQueueCode各部分含义为:Code:码值说明0NULL;不进行任何操作。1脉冲式合上,即先在指定的on_time时间内合上(on),然后在指定的off_time时间内断开(off),最后保持在断开状态(off)。2脉冲式断开,即先在指定的off_time时间内断开(off),然后在指定的on_time时间内合上(on),最后保持在断开状态(on)。3锁定式(Latch)合上——合上该点并保持4锁定式(Latch)断开——断开该点并保持5-15未定义Queue:当操作完成后把操作指令放到队列的尾部;Clear:立即取消当前正在执行的操作并把受影响的操作序列从队列中移走;Trip/Close<00:NUL;01:Close;10:Trip>:对于有Trip/Close继电器组的系统,指定要操作的继电器;NUL值则指定选择继电器;对于没有Trip/Close继电器组的系统,该字段应该总是NUL,具体操作由控制点确定;Count:指定连续执行几次控制操作,=0时,不进行操作,控制完成;On_Time:指定输出为On状态的时间(毫秒);Off_Time:指定输出为Off状态的时间(毫秒);Status:76543210ReservedStatusStatus返回操作的结果,具体含义如下:值说明0操作请求被接受,启动,或排入队列1超时,2没有收到过与本命令对应的Select消息3控制命令格式有错4该点不支持这种控制操作5操作请求不被接受(控制队列溢出或该点已经进入该状态)6操作请求不被接受(硬件错误)7-127未定义32/16位计数器值(20/01,20/02)FLAG(0-7)Value(0-31)/(0-15)无符号整数其中,FLAG含义为:76543210ReservedReservedRoll_overLoca1forceddataRemoteforceddataCommunicationlostRestartOn_lineRoll_over:计数器值已经溢出;其它位含义同上;32/16位模拟输入(30/01,30/02)FLAG(0-7)Value(0-31)/(0-15)有符号整数其中,FLAG含义为:76543210ReservedReferencecheckOver-rangeLoca1forceddataRemoteforceddataCommunicationlostRestartOn_lineOver-range:值越限;Referencecheck:参考信号不稳定,模入值可能不正确;其它位含义同上;日期和时间(50/01)绝对时间(ms)48位无符号整数低字节在先绝对时间为48位的无符号整数,低字节在先,其值为自1970年1月1日0:0:0起的毫秒数;几个典型过程说明下面列出几个典型的应答过程,其中当链路层不需要确认时,相应过程中的ACK就没有,若应用层也不需要确认,则Confirm也没有。上电握手过程(主站上电呼叫)(主站)(从站)-----------------------------------------------------------------------------------------------------------------应用层链路层链路层应用层Reset--->(fcv=0,fcb=x) <-----ACK (destfcv=1,destfcb=1)WriteIIN(bit7=0)--->(FUNC=2,OBJECT=80,1)(fcb=1,fcv=1) <-----ACK<-----Response(writeiin.bit7=0) (fcv=1,fcb=1,con=1)ACK--->(fcv=1,fcb=1,con=0)Confirm-----> <-----ACK读数过程(包括遥测、遥信、SOE和电度,依据数据对象来区别)(主站)(从站)------------------------------------------------------------------------------------------------------------应用层链路层链路层应用层Readalldata------>(FUNC=1,OBJ=0X3C,XX, <-----ACK <------Response(con=1)ACK------->Confirm----><-----ACK对时过程(主站)(从站)-------------------------------------------------------------------------------------------------------------应用层链路层链路层应用层TimeDELAY-->(func=23) <--ACK <---response(通道时延)ACK--->CONFIRM---> <---ACKWRITETIME--->(FUNC=2,OBJECT=50,1) <---ACK<---RESPONSEACK--->CONFIRM---> <---ACKYK过程预选,执行(主站)(从站)-----------------------------------------------------------------------------------------------------应用层链路层链路层应用层SELCECT--->(FUNC=3,OBJECT=0C,01) <---ACK --->向LON网发选择令 ….等待装置回答 <---RESPONSE

温馨提示

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

最新文档

评论

0/150

提交评论