DNP3.0规约快速入门_第1页
DNP3.0规约快速入门_第2页
DNP3.0规约快速入门_第3页
DNP3.0规约快速入门_第4页
DNP3.0规约快速入门_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、DNP3.0快速入门白银魁2002-04-15一、学习DNP规约的必要性DistributedNetworkProtocol由Harris公司提出,于1993年开始应用。近一段时间,DNP规约在国内的应用有上升的趋势,特别是大型综合自动化变电站采用的国外的智能设备,有很多都要求采用DNP规约。目前,与我们三部相关的产品主要是DF1700及DF1331。二、培训目标通过学习,使大家都达到能够分析报文的水平。三、DNP规约的分层结构DNP规约虽然很庞大,但它层次清晰,只要掌握好DNP的分层结构,DNP规约就非常好理解了。DNP规约共分为3层:链路层、传输层和应用层。以下面的一包报文为例(16进制显

2、示,下同):0564FE4403000300CE52(固定格式帧头)F1A58100000102010000EC00010101016DDB01010101010101010101010101010101BBC301010101010101010101010101010101BBC30101010101010101010181818181810118F101010101010101010101010101010101BBC301010101010101010101010181018181F47281010101010101010101010101010101B7F481010101810101

3、010101010101010101F0FF010101018101818101010101010181010611010181010101010101010101010101019A4A0101810101018101010101010101010146830101010101010181818101810101018184DC810101018181010101818101010181811ECE01010181810101018181010101818101458501018101010101018101010181810101503C0181810101018181019925报文例(

4、1)上面曰是一一包完整报文的分行显示。整个这一包报文我们称之为链路层报文。其中的粉红色部分为16位的CRC校验码,上面这条报文的第一行共10个字节,我们称之为链路报文头,其中含2个字节的CRC校验码,所有的DNP链路层报文都有一个这样的链路报文头。链路报文头以外的部分每18个字节为一组,其中用户数据为16个字节,最后2个字节为CRC校验码,最后一组最少为3个字节,其中最后的2个字节仍为CRC校验码。链路层报文中,去掉CRC校验码及链路报文头,剩下的部分为传输层报文,也就是桔黄色部分加上一个字节的蓝色部分。这个蓝色字节称为传输层报文头字节。传输层报文中,去掉传输层报文头字节,剩下的部分为应用层报

5、文,也就是桔黄色部分(在以后的学习中我们将认识到,这一部分不一定是一条完整的应用层报文,有时,它只是一条应用层报文的一个块)。链路报文头是所有的DNP报文都有的,但并不是所有的DNP报文都有传输层报文及应用层报文。而在DNP报文中传输层报文与应用层报文是同时存在或同时不存在的。各层报文间的关系为:链路层报文中可以封装有传输层报文,也可以没有传输层报文;传输层报文内封装了应用层报文。各层之间除了封装与被封装关系外,没有其它的关系。四、链路层报文结构以报文例(1)为例,粉红色部分为16位的CRC校验码,这条报文的第一行共10个字节,我们称之为链路报文头,其中最后2个字节为CRC校验码,所有的DNP

6、报文都有这样一个链路报文头。链路报文头以外的部分每18个字节为一组,其中用户数据为16个字节,最后2个字节为CRC校验码,最后一组最少为3个字节,其中最后的2个字节仍为CRC校验码。这就是链路层报文的框架。其中关键的部分就是链路报文头。链路报文头的结构05640500030003005DD1报文例(2)05645F44030003002807报文例(3)0564为起始标志字,类似于CDT92规约中的EB90。05及5F为链路层报文长度,为1个字节,它包括链路报文头中的5个字节,超出5个字节的部分为传输层报文的长度,也就是说,链路层报文长度计数中不含CRC校验码字节。链路层报文长度的最小值为5,

7、最大值为255。一条DNP链路层报文的最短长度为链路报文头的长度:10个字节。一条DNP链路层报文的最大长度为10+(250/16)X18+(250%16+2)=292字节。00及44为链路控制字节,它用来指出本条链路层报文要实现的链路层功能。对于封装有应用层报文的链路层报文来说,根据链路控制字节并不能判断出应用层要实现的功能。应用层报文的含义要根据应用控制字节及应用层功能码等信息共同判断。链路控制字节的具体定义,将在下面讲解。两个0300为目的地址。两个0300为源地址。粉红色部分为16位的CRC校验码。综上所述,链路报文头的结构为:(注:每格为1个字节)05H64HXXXXXXXXXXXX

8、XXXX起始字起始字链路报链路控目的地目的地源地址源地址CRCCRC节1节2文长度制字节址L址HLH校验L校验H链路控制字节定义链路控制字节是链路层中的难点,不过看过之后你就会觉得非常简单。首先,我们先来了解一下源方站(发启站,PrimaryStation)与副方站(响应站,SecondaryStation)的概念。源方站与副方站仅仅是相对于一次通讯过程而言,我们不能说主站就是源方站,子站就是副方站,反过来,我们也不能说子站就是源方站,主站就是副方站。实际上,主站和子站都是既可以作为源方站也可以作为副方站。但在一次通讯过程中,主站和子站中只能有一个作为源方站,另一个作为副方站。在一次通讯过程中

9、,源方站处于主导地位,源方站实现的功能有:检测副方链路层是否在线,复位副方链路,向副方发送应用层数据、应用层命令以及实现应用层的其它功能;副方站在通讯过程中处于被动响应地位,副方站实现的功能有:处理收到的数据及命令,在需要的时候给出对源方站链路层报文的链路层响应。下面,以主站向子站召唤变化遥测为例,说明一下源方、副方的交替。.主站作为源方站,向子站召唤变化遥测数据。f一此时子站作为副方站,正确接收到这条命令后,发出链路层肯定确认给主站。本次通讯过程结束。一子站作为源方站,向主站发送变化遥测数据。.此时主站作为副方站,在正确接收到这些数据后,发出链路层肯定确认给子站f本次通讯过程结束。.主站作为

10、源方站,向子站发出变化遥测已正确接收的应用层确认f一此时子站作为副方站,正确接收到这条命令后,发出链路层肯定确认给主站。召唤变化遥测过程结束。在实际的通讯过程中,、这两条报文是肯定要有的,有时、这两条报文并不出现,这取决于、这两条报文是否需要链路层的确认。这条报文是否存在,取决于这条报文是否需要应用层的确认。这条报文只有当这条报文存在并且需要链路层确认时才会存在。源方站的链路控制字节结构D7D6D5D4D3D2D1D0DIRPRMFCBFCV链路层功能码副方站的链路控制字节结构D7D6D5D4D3D2D1D0DIRPRMRESDFC链路层功能码DIR:方向位,1:本条报文为主站到子站的报文;0

11、:本条报文为子站到主站的报文。PRM:源方站标志位,1:本条报文为源方站报文;0:本条报文为副方站报文。FCV:帧计数有效位,1:接收方收到本报文后,应检查FCB位的正确性。0:接收方收到本报文后,不检查FCB位的正确性。FCB:帧计数位,只有当FCV=1时,FCB才有意义。对于发送方而言,如果本条报文的FCV=1,那么FCB位的状态应为上次FCV=1时FCB位状态的翻转。RES:保留位。DFC:数据流控制位,1:发出此报文的一方接收缓冲区已满,不能再接收数据了。链路层功能码:要结合PRM位进行分析。源方站链路层功能码(PRM=1)功能码帧类型服务功能FCV位0SEND/期待CONFIRM使远

12、方链路复位01SEND/期待CONFIRM使用户过程复位02SEND/期待CONFIRM对链路的测试功能13SEND/期待CONFIRM用户数据14SEND/不期待回信非确认的用户数据09查询/期待响应查询链路状态05-8未用10-15未用副方站链路层功能码(PRM=O)功能码帧类型服务功能0肯定确认ACK=肯定的确认1否定确认NACK=报文未收到;链路忙11响应链路的状态(DFC=0或DFC=1)2-10未用12-13未用14链路服务不工作了15未用链路服务,或未实现链路服务思考题:分析下面这条报文,并回答下列问题:056414F303000300709AD9C5013C02063C0306

13、3C04063C0106065E、请列出本条报文中的应用层报文、本条报文是发向主站的还是发向子站的?、本条报文需要接收方给出链路层确认吗?ApplicationControlApplicationFunCodeIINLIINH对于所有的应用层报文而言,应用层报文头是必需的,而数据对象部分是否存在是与应用层报文头的内容相关的。主站发出的应用层报文与子站发出的应用层报文在结构上总体上是一致的,其中,数据对象部分完全一致,而在应用层报文头部分,子站比主站多了2个字节的内部信号标志(InternalIndication,简称IIN)。下面以子站发出的应用层报文的报文头为例,讲一下应用层报文头的结构。(

14、1格表示1字节)五、应用层报文结构应用层报文的结构可以分为应用层报文头和数据对象两部分应用层报文头数据对象部分ApplicationControlApplicationFunCodeIINLIINH应用控制字节应用层功能码IIN低字节IIN高字节应用控制字节的结构D7D6D5D4D3D2D1D0FIRFINCON应用层报文序号FIR:首包标志。1:本条应用层报文为完成某应用层功能或传送某些应用层数据的所有报文中的第一包。0:本条应用层报文不是第一包。FIN:尾包标志。1:本条应用层报文为完成某应用层功能或传送某些应用层数据的所有报文中的最后一包。0:本条应用层报文不是最后一包。如果某包应用层报

15、文的FIR=1并且FIN=1,则表示完成此应用层功能只需1包报文就够了。CON:需要应用层确认标志。1:本条报文需要接收方给出对这条报文的应用层确认。0:本条报文不需要接收方给出对这条报文的应用层确认。应用层报文序号:对于普通报文,值的范围为015,对于主动上送报文,值的范围为1631。发送方每发出一包应用层报文后,此值就加1,当计满15后就归0(或计满31后就从16继续计起)。如果本包报文是完成某应用层功能的第一包报文(FIR=1),那么应用层报文序号采用015(或1631)中的任何一个值都是合法的,其余的包要在第一包序号的基础上依次加1,并且仍要遵循计满15后归0(或计满31后就从16继续

16、计起)原则。引入FIR、FIN标志及应用层报文序号的目的:对于所有的主站或子站而言,应用层的收、发缓冲区是有限的,它的典型大小为2048字节。我们就以2048字节为例,2048字节只能传输16位的遥测量1024个或带品质描述的遥信量2048个等等。这些数据量在大型综合自动化系统中还远远不够。当2048字节的容量不能满足要求时,我们就要用多条应用层的报文来实现同一个应用层的功能。为了让接收方能够区分出实现同一个应用层功能的多包报文的起、止以及报文是否有重复或丢失现象,就引入了FIR、FIN标志,它们与应用层报文序号配合,就可以使接收方很容易的判断出报文的起、止以及报文是否有重复或丢失现象。应用层

17、功能码子站到主站方向的应用层功能码如下表功能码值功能解释0对收到的应用层报文的肯定确认,此报文不需要应用层响应。129响应主站请求的报文。130非请求响应(主动上送)报文。主站到子站方向的应用层功能码比较多,最常用的部分如下表:功能码值功能解释0对收到的应用层报文的肯定确认,此报文不需要应用层响应。1读命令,请求子站上送所指定的数据项2写命令,赋予子站的指定数据项以指定的值3输出选择命令(遥控预置)4输出先前已选择了的控制点(遥控执行)5直接输出,不需要有先前的选择命令(遥控直接执行)想要了解全部的应用层功能码,可参阅马君华等人翻译的Dnpv30应用层.doc13页14页。IIN标志:再次重申

18、一下,主站发出的应用层报文中无IIN标志。子站上传的报文中,应该把自身当前的状态在IIN标志中体现出来。主站接收到子站的IIN标志后,要依据这个标志对子站进行数据召唤或进行其它的操作。IIN共有16位,各位的含义参阅Dnpv30应用层.doc15页16页。数据对象部分前面已经提到过,数据对象部分的存在与否是与应用层报文头的内容相关的,在这里可以说得确切一些,它实际上是与应用层功能码相关的。最常用的应用层功能码中只有“0:确认”后面没有数据对象部分。主站发出的报文与子站发出的报文在数据对象部分的结构是完全相同的。这一部分又分为携带数据元素的情况与不携带数据元素的情况。例如:主站向子站下发的对钟报

19、文中,就是要向子站中的系统时钟数据项中写入指定的值,这条报文的数据对象部分就是携带数据元素的;子站为了响应主站的召唤数据命令,向主站传送的各种数据报文,无疑也是携带数据元素的。而主站下发给子站的召唤数据报文中的数据对象部分仅仅指定了数据项的范围而已,因此是不携带数据元素的。先讲一下不携带数据元素的情况。(用于数据召唤命令)ObjGroupObjVariationQualifierRange附加的点号描述部分数据对象组别数据对象变体限定词变程长度不定1字节1字节1字节08字节数据对象组别与数据对象变体的组合,是DNP规约特有的数据对象分类的编码方式。这两者一定要组合使用。需要特别指出的是,DNP

20、规约中,把系统时钟、分级数据等都当作是一种数据类型来处理,对于对钟操作,就是向相应的时钟数据项内写入指定的值。还有对象变体可以为0,此时数据对象组别与数据对象变体的组合所指的数据类型为从属于此数据对象组中的所有数据类型。但是,对象变体为0的情形只能用于请求报文(即数据召唤报文)中。DNP规约对数据对象组别及变体的具体描述,参阅DNP对象库.doc。最常用的数据类型见下表:(下表为10进制编码)对象组别对象变体数据对象描述11不带品质描述的单点输入,即压缩格式的遥信量,8点/字节12带品质描述的单点输入,1字节/点的遥信量21带品质描述不带时标的单点变位信息,1字节/点22带品质描述带绝对时标的

21、单点变位信息,7字节/点121继电器输出控制(遥控)对象,11字节/点30216位带品质描述不带时标的静态当前模拟量,3字节/点30416位不带品质描述不带时标的静态当前模拟量,2字节/点32216位带品质描述不带时标的变化当前模拟量,3字节/点20132位带品质描述不带时标的静态累加脉冲量,5字节/点20532位不带品质描述不带时标的静态累加脉冲量,4字节/点22132位带品质描述不带时标且变化了的累加脉冲量,5字节/点501表示日历钟的绝对时间对象,6字节/点6010级数据,即静态数据,仅用于召唤命令,无确切的对象6021级数据,优先级最高的变化数据,仅用于召唤命令6032级数据,优先级仅

22、次于1级数据的变化数据,仅用于召唤命令6043级数据,优先级次于2级数据的变化数据,仅用于召唤命令所有数据对象的点号都由0点计起。对象类型相近且点号相同的数据点,有时所指的就是同一数据元素。最常用的数据类型中这样的情形有注:下面描述数据对象时采用的格式为:“(对象组别,对象变体)”:(1,1)、(1,2)、(2,1)、(2,2)这4个数据类型当其点号相同时,所指的为同一个数据元素;(30,2)、(30,4)、(32,2)这3个数据类型当其点号相同时,所指的为同一个数据元素。限定词、变程及附加的点号描述部分是用于描述数据对象的点号的。有时变程部分或附加的点号描述部分或是其两者是不存在的,这取决于

23、限定词的内容。限定词,简单的说,就是对变程部分及附加的点号描述部分的限定。现在把最常用的限定词列表解释如下:限定词表(其中,附加的点号描述部分注释仅适用于不携带数据对象的报文)限定词值变体类型变体部分附加的点号描述部分0 x00起止模式2个字节,第一个字节为起始点号(含),第二个字节为终止点号(含)。无0 x01起止模式4个字节,前2个字节为起始点号(含),后2个字节为终止点号(含)。无0 x02起止模式8个字节,前4个字节为起始点号(含),后4个字节为终止点号(含)。无0 x07数量模式1个字节,记其值为N,所涉及到的点号为:0N-1无0 x08数量模式2个字节,记其值为N,所涉及到的点号为

24、:0N-1无0 x09数量模式4个字节,记其值为N,所涉及到的点号为:0N-1无0 x17数量模式1个字节,记其值为N为N个点号,每个点号占1个字节0 x18数量模式2个字节,记其值为N为N个点号,每个点号占1个字节0 x19数量模式4个字节,记其值为N为N个点号,每个点号占1个字节0 x27数量模式1个字节,记其值为N为N个点号,每个点号占2个字节0 x28数量模式2个字节,记其值为N为N个点号,每个点号占2个字节0 x29数量模式4个字节,记其值为N为N个点号,每个点号占2个字节0 x37数量模式1个字节,记其值为N为N个点号,每个点号占4个字节0 x38数量模式2个字节,记其值为N为N个

25、点号,每个点号占4个字节0 x39数量模式4个字节,记其值为N为N个点号,每个点号占4个字节0 x06全部模式无。仅用于召唤命令。涉及的点号为接收方支持的所召唤的数据类型的所有点无对于携带数据元素的情况,其应用层报文的数据对象部分的结构如下:ObjGroupObjVariationQualifierRange数据兀素部分数据对象组别1字节数据对象变体1字节限定词1字节变程18字节长度不定在数据对象组别与数据对象变体部分(数据类型部分)与携带数据元素的情况相差无几。两者在这一部分的区别是:携带数据元素的情况必须明确指出所携带的数据类型,因此不能使用数据对象变体值0。基于与上一条相同的原因,携带数

26、据元素的情况不能使用分级数据对象类型(60,1)、(60,2)、(60,3)、(60,4)。在限定词部分,携带数据元素的情况必须明确指出所携带的数据的点号,因此不能使用限定词6。在变程部分,因携带数据元素的情况不能使用限定词6了,而只有限定词6对应的变程为0字节,所以变程为0字节的情况就是非法的了。不携带数据元素的情况中,变程后面可能跟随有附加的点号描述部分,而携带数据元素的情况中,变程后面必定要跟随数据元素部分。数据元素部分与附加的点号描述部分虽说在结构上不一致,但它们之间的关系是非常密切的。下面按附加的点号描述部分的几种形式分别讨论一下数据元素部分的结构。没有附加的点号描述部分的情况。这种

27、情况下,所涉及到的数据元素的点号都是连续的。变体部分为“起止模式”的不必细说,变体部分为“数量模式”且没有附加的点号描述部分时,其涉及的数据元素的点号也可以归入起止模式,即:起始点为0终止点为N-1。与之对应的数据元素部分的结构为:变体中指定的相关点号的数据元素的顺序排列。附加的点号描述部分为N个点号规模为X字节/点号的点号描述的情况。(X取值为1、2或4)这种情况下,我们可以把“X字节/点号”这样的一个点号描述称为一个小组,那么,附加的点号描述部分就是由N个这样的小组组成的。与之对应的数据元素部分也是由N个小组组成的,只不过这时每个小组的结构变成了“X字节的点号+该点号对应的数据元素”了。不

28、论是否携带数据元素,应用层报文的数据对象部分都可以有多个。结构如下:应用层报文头数据对象部分1数据对象部分2数据对象部分m六、传输层报文结构在主站与子站间传输的任何命令及数据最终都要以链路层报文的面目出现。一条链路层的报文最多只能携带250字节的用户数据,而一条应用层报文超出1000字节是很常见的。怎样才能传输这么大的应用层报文而又能防止出错呢?DNP规约中采用了下面的方式:传送应用层报文的一方,先把整条应用层报文分成若干个块,每一块不超过249字节(当然,每块的长度没有过多的限制),然后在每一块的最前面加上一个字节,这个字节称为传输层报文头。在第一块前面的传输层报文头中有首块标志及起始的块序

29、号,在中间块前面的传输层报文头中有该块的块序号,在最后一块前面的传输层报文头中有末块标志及该块的块序号。相邻两个块的块序号是连续的。接收应用层报文的一方,先把传输层报文取出来,分析传输层报文头,如果先前未收到过具有首块标志的传输层报文头就先不处理应用层数据块,直到收到了首块标志为止,收到首块标志后,就记录该块的序号并取出应用层报文块开始组装,当收到下一块时检测其序号是否与上次收到的序号连续,如果连续就接着组装,并判断它是不是末块,直到收到末块,才把这些块组装成了一条完整的应用层报文,这时才开始应用层的处理。当然,在接收时还应考虑应用层报文只分为一块的情况以及传输出错的情况。传输层报文头的结构D

30、7D6D5D4D3D2D1D0FINFIR应用层报文块序号FIN:首块标志。1:本块为首块;0:本块非首块。FIR:末块标志。1:本块为末块;0;本块非末块。注意:传输层报文头的FIN及FIR标志的位置与应用控制字节中的FIN及FIR标志的位置是不同的。应用层报文块序号:范围为:063,计满63后归0。传输层报文的结构为:传输层报文头应用层报文块1字节1249字节思考题:分析下面这条报文,并回答下列问题:056414F303000300709AD9C5013C02063C03063C04063C0106065E、本条报文中的应用层报文是一条完整的应用层报文呢还是应用层报文的一个块?、本条报文中

31、的应用层报文是应用层报文的首块还是末块?、本条报文要完成的应用层功能是什么?七、通讯过程描述注:与顺序有关部分,其先后顺序以前面的序号标注。粉红色为必需过程,蓝色为可选过程。因DNP是一个很灵活的规约,下面的召唤数据部分的顺序仅供参考。、主站作为源方站复位子站的链路。复位子站链路的目的有2个:确认子站是否在线、统一主站到子站方向的FCB位。主站发出:056405C0050006009508如果站号为5的子站在线,它正确接收了这条复位命令后,就把自己下次接收到FCV=1的报文的FCB期望值置为1,同时返回链路层肯定确认报文给主站:子站返回:0564050006000500B1E3主站正确接收后,

32、把自己下次发往该站的FCV=1的报文时的FCB位置为1。如果主站接有多个子站,主站就要分别复位各子站的链路,并分别记录发向各子站的FCB位。、子站作为源方站复位主站的链路。复位主站链路是为了统一子站到主站方向的FCB位。当子站发往主站的所有报文均不需要主站对其的链路层确认时,可以没有这一过程。子站发出:0564054006000500XXXX注:为什么要强调“主站到子站方向”呢?因为主站和子站都可以作为源方站,当源方站发出的报文中FCV=1时,其FCB位的状态应为上次FCV=1时FCB位状态的翻转,副方站当接收到FCV=1的报文时就要判断一下FCB位的状态与副方站自己存储的FCB位期望值是否一

33、致,不一致就认为传送过程中出现错误。主站正确接收了这条复位命令后,就把自己下次接收到该站FCV=1的报文的FCB期望值置为1。同时返回一条链路层肯定确认报文给该子站。主站发出:0564058005000600XXXX子站正确接收后,把自己下次发送的FCV=1的报文时的FCB位置为1。如果主站不复位子站的链路,子站不响应主站发出的其它任何报文。而如果子站不复位主站的链路,主站却可以接收该子站的FCV=O的报文。双方相互复位链路后,就可以相互接收FCV=1的报文了。正常通讯时,一旦检测出通讯中断,都要重新复位链路。、主站复位子站的用户进程。主站发出:056405C105000600XXXX子站接收

34、后,进行相应的处理,并返回肯定确认报文给主站。子站返回:0564050006000500B1E3、主站测量通道延时。主站发出:056408C405000600XXXXC0C017XXXX、主站对子站对时。对时有两种方式,一种是一一对时方式,另一种是广播对时方式。两者的区别是:目的站址不同,一一对时方式的地址就是该子站的地址,广播对时要用广播地址:OxFFFF。下面的报文为对时方式,时间为2002年4月19日15时0分0秒0毫秒:TOC o 1-5 h z主站发出:056413C405000600XXXXC1E102320117010000E0D45CED00XXXX子站应答:05640AC40

35、5000600XXXXC1C1000000XXXX、主站召唤子站的全数据。这一过程虽然是必定要有的,但不同的主站下发命令时采用的对象组与对象变体不同。例如,以分级数据召唤的报文:主站发出:05640BC405000600XXXXC2C2013C0106XXXX以遥测、遥信的具体对象类型下发的报文:主站发出:05640EC405000600XXXXC2C2010100061E0006XXXX子站在应答时,必需采用确切的对象类型。05645E4406000500XXXXF1E58100000102010000230001010101XXXX01010101010101010101010101010101BBC301010101010101010101010101010101BBC31E040100001000000000000000000000XXXX00000000000000000000000000000000FFFF000000000000000000FFFF、主站召唤子站的变化数据。这一过程虽然是必定要有的,但不同的主站下发命令

温馨提示

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

评论

0/150

提交评论