通讯管理机产品研制项目详细设计说明书_第1页
通讯管理机产品研制项目详细设计说明书_第2页
通讯管理机产品研制项目详细设计说明书_第3页
通讯管理机产品研制项目详细设计说明书_第4页
通讯管理机产品研制项目详细设计说明书_第5页
已阅读5页,还剩22页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PAGE通讯管理机产品研制项目详细设计说明书

目录1 引言 11.1编写目的 11.2背景 11.3定义 11.4参考资料 22 系统设计总体说明 32.1系统结构 32.2开发工具和软件运行平台 32.2.1运行环境 32.2.2开发机器和工具 43 功能模块简介 53.1规约模块 53.2内核模块 53.3通讯接口模块 53.4初始化模块 54 功能模块详细说明 74.1规约模块 74.1.1功能描述 74.1.2类设计说明 74.1.3接口函数说明 84.1.4程序流程 84.1.5质量要求 104.2内核模块 114.2.1功能描述 114.2.2类设计说明 114.2.3接口说明 134.2.4程序流程 134.2.5质量要求 144.3通讯接口模块 154.3.1功能描述 154.3.2类设计说明 154.3.3接口说明 164.3.4程序流程 174.3.5质量要求 184.4初始化模块 184.4.1功能描述 184.4.2配置文件说明 184.4.4质量要求 195 硬件平台 205.1概述 205.2外观与尺寸 205.3主要技术参数 216 代码设计原则 226.1设计原则 226.2涉及范围 226.3代码方案 227 错误处理设计 237.1概述 237.2远程调试信息 23附录一:WXF配置软件详细设计说明书 24WXF产品研制项目详细设计说明书PAGE23引言1.1编写目的本文档是根据WXF通讯管理机的开发需求进行详细分析和讨论后得出的详细设计说明书,旨在明确WXF通讯管理机的功能实现。通过本详细设计说明书,可以了解到WXF通讯管理机的总体设计、功能边界、各个功能的模块设计等。借助该文档,可以规范和指导WXF通讯管理机的开发人员开始产品的研发工作。本文档面向的读者是:WXF通讯管理机的开发人员、测试人员、产品经理,WXF通讯管理机详细设计说明书的评审人员。1.2背景设备名称:WXF通讯管理机。传统的前置通讯管理机主要采用工控机加串口卡的模式,该种模式结构简单、扩展性强从而被普遍采用。但是随着前置系统的日益发展,该种模式的弊端也日渐显现:由于前置系统经常运行在环境恶劣的工业现场,工控机的风扇、硬盘等机械部件将成为制约系统7×24长时间稳定运行的瓶颈。工控机体积庞大只能组屏安装,对于不具备组屏条件的现场将不能适用。由于工控机加MOXA卡的模式与普通的PC系统没有差异,将会导致很多不必要的人为干预。现场各种类型的项目对系统的组网方式提出了更高的要求,作为综自系统中的通讯枢纽通讯管理机,需要更高的可靠性和灵活性。基于以上几点,需要开发一种系统相对安全、更加稳定可靠、安装配置更加灵活的通讯转换装置充实现在的单一的前置通讯管理机的解决方案。1.3定义下表列出本报告中专门术语的定义、英文缩写词的原词组和意义、项目组内达成一致意见的专用词汇,同时继承全部的先前过程中定义过的词汇。词汇名称词汇含义备注1.4参考资料编号资料名称说明2WXF产品研制项目需求规格说明书V1.002WXF产品研制项目概要设计说明书V1.00系统设计总体说明2.1系统结构通讯管理机软件通过设备侧协议与间隔层智能设备进行通讯,采集间隔层智能设备的遥测、遥信、遥脉等数据,读取SOE、保护事件等事件信息,进行遥控、定值操作的远方操作。通讯管理机软件通过系统侧协议与后台监控系统进行通讯,向后台监控系统转发遥测、遥信、遥脉、SOE、保护事件等数据和事件信息,同时接收后台的遥控、定值等操作命令并转发给相应的设备侧协议。工程调试人员通过配置工具软件根据工程现场的实际情况进行工程配置,并通过配置工具软件进行系统文件和配置文件的下载和读取,通过配置工具软件进行远程模拟操作,并通过报文监视功能实现系统调试和故障诊断。2.2开发工具和软件运行平台2.2.1运行环境硬件运行环境类别要求备注CPU400MHz及以上内存128MB及以上程序存储器64MB及以上电源220VAC以太网口4个485口10个及以上CAN总线接口2个硬件狗有设备状态指示LED灯软件运行环境类别要求备注操作系统嵌入式Linux2.6内核应用软件支持GDB、FTP、TELNET、NFS需要在系统裁剪时添加2.2.2开发机器和工具开发用机器类别要求备注CPU1.8GHz以上CPU内存最少1024MB主机硬盘最少80GB网卡10/100Mb/s串口1个软件环境类别要求备注操作系统WindowsXPLINUX系统Redhat9.0编译器GCC、G++库文件GLIBC应用软件VMWEAR虚拟机FTP工具功能模块简介3.1规约模块规约模块是通讯管理机开发的一个重要模块。在通讯管理机开发完毕后,后续主要的工作量就是根据实际工程中现场设备采用的通讯规约的不同进行开发规约。由于国内各个保护装置厂家采用的通讯协议各异,有些厂家即使采用同样的通讯规约标准如IEC103,也会在根据需要在某些方面有所异化,所以后续通讯规约的开发任务比较繁重,因此规约工作方式和管理模式的设计的好环直接影响到后续工作的开展。规约分为两种类型:一种是对IED设备的规约,负责与设备通讯,采集设备数据;另外一种是远传规约,负责将通讯管理机下接入的设备按照需要转发给后台或其他上位系统。3.2内核模块内核模块是通讯管理机中信息交互的枢纽,内核模块通过不同通道间消息转发,实现了数据传送、协议转换和接口转换。内核模块封装了系统实时库,包括设备数据区、遥测数据区、遥信数据区、遥控数据区、遥脉数据区和转发通道区,同时封装了对内存实时库的访问接口。考虑到系统的模块化设计,各个装置协议将设计成.so的动态链接库的内核模块将设计成独立的.so动态链接库,便于各个规约模块与软总线模块直接调用,而不需要再走通讯的方式。3.3通讯接口模块WXF通讯管理机应设有10路或以上RS485口、4路及以上以太网口和2路CAN通讯口,涉及的通讯方式主要有串口、CAN网、以太网TCP和UDP这四种,本模块主要实现对对这四种通讯方式的驱动支持,对这四种通讯方式做成以.SO的动态链接库的形式做封装,供主程序以及各个通讯规约调用。3.4初始化模块初始化模块是实现定义了程序的初始化,实现工程配置文件的读取和解析,根据配置文件加载所需的规约模块,并初始化通道和设备。初始化模块包含以下功能:配置文件的加载。工程配置文件由上位机远程配置软件编译生成,并通过FTP工具下载到通讯管理机终端设备中,在终端启动后,通讯管理机应用软件通过流文件方式将工程配置文件读入内存中。配置文件应该包括工程配置和设备模板两个部分。工程配置:包括各个通讯端口系统,端口配置,端口协议,设备数量,设备类型等信息;设备模板指本通讯管理机中接入设备的信息,包括设备名称、遥测、遥信、遥脉、遥控、定制、压板、事件信息等。规约的加载。规约采用动态加载的模式,主程序启动时在指定系统指定目录(当前目录)加载规约模块文件(.so动态链接库),并通过系统API调用规约模块的导出接口函数,作为内核模块和规约模块的交互接口。各任务的初始化和关闭应用软件启动时,初始化模块通过规约模块的接口发送初始化命令初始化设备配置启动规约模块,系统推出时关闭并释放各个设备规约。功能模块详细说明4.1规约模块4.1.1功能描述规约模块与间隔层智能设备以及上位机监控系统进行数据通信,主要实现通讯数据的解析和下发报文的组包,规约分为两种类型:一种是对IED设备的规约,负责与设备通讯,采集设备数据;另外一种是远传规约,负责将通讯管理机下接入的设备按照需要转发给后台或其他上位系统。规约模块同时支持多个端口,每个端口支持多个设备,每个规约提供一个接口作为与内核通讯的接口,内核通过该接口向规约发送系统命令和操作指令。系统命令包括规约初始化、规约退出、端口初始化、设备初始化、获取规约名称等;操作指令包括遥控命令、定值操作、定值区操作、对时命令、远方操作等。4.1.2类设计说明规约类类名classCProtocol主要属性说明串口链表:std::list<CComPort*>m_ListComPort设备链表:std::list<CDevice*>m_ListDevice消息链表:std::list<CMessage*>m_ListMessage超时时间:UINTm_uTimeOut定时器时间:UINTm_uTimer重操作次数:UINTm_uTimes通讯中断后轮询时间:UINTm_uWait主要方法说明消息处理:intMessageCall(UINTmsg,void*wParam,longlParam)通讯回调:voidCommCall(UINTuMsg,HANDLEhandle,void*wParam,longlParam)断帧处理:BOOLFrameCheckCall(BYTE*pData,int&nLength)初始化:intInitPrem()规约退出:voidExitPrem()由串口句柄得到串口对象指针:CComPort*GetComPort(HANDLEhandle)由串口端口号得到串口指针:CComPort*GetComPort(UINTuPort)由设备地址得到设备对象指针:CDevice*GetDevice(BYTEbtNo)通讯接口类类名classCComPort主要属性说明串口句柄:HANDLEm_hComPort当前设备:CDevice*m_pCurDevice串口设置:charm_szSetting[64]设备链表:std::list<CDevice*>m_ListDevice主要方法说明处理接收数据:voidRecv()轮询设备:void*Protocol_Task(void*arg)将一个设备加入串口设备链表:voidAddDevice(CDevice*pDevice)打开当前串口:BOOLOpen(constchar*szSetting)重设串口:BOOLResetComm()得到当前串口的端口号:UINTGetPortNO();由设备地址得到设备对象:CDevice*GetDevice(BYTEbtAddr)得到串口当前设备的下一台设备:CDevice*GetNextDevice(CDevice*pCurDevice)设备类类名classCDevice描述设备地址(设备编号):BYTEm_btAddr设备编号:intm_nID设备名称:charm_szName[32]串口指针:CComPort*m_pComPort主要方法说明发送处理:voidProcessSend()接收处理:voidProcessReceive(BYTE*pData,intnLength)通报设备通信恢复:voidOnCommOK()通报设备通信中断:voidOnCommError()初始化:voidDeviceInit()4.1.3接口函数说明消息回调intMessageCall(UINTmsg,void*wParam,longlParam)规约模块的导出函数,由内核调用,向规约模块发送初始化、退出、控制命令等消息。通讯回调voidCommCall(UINTuMsg,HANDLEhandle,void*wParam,longlParam)当通讯接口收到符合要求的数据时,由通讯接口模块调用,触发规约模块的数据处理操作。断帧处理BOOLFrameCheckCall(BYTE*pData,int&nLength)当通讯接口接收到数据时调用,检查接收缓冲区中数据是否符合帧要求。4.1.4程序流程控制命令处理流程内核模块的控制命令通过调用规约模块的消息回调函数MessageCall发送给规约模块。规约模块收到消息后暂存在消息队列中,然后向各个端口的处理任务发送信号,端口处理任务收到信号后主动到消息队列中取出该消息进行处理。根据消息的类型组织成报文下发到间隔层终端设备,并对间隔层设备的返校数据进行处理,通过内核的接口WriteRtdbData向内核写入数据。接收数据处理流程通讯介质层对于接收的数据进行缓存管理,规约模块可以借助通讯介质层的管理进行接收数据的处理。规约模块在处理通讯介质层缓存的接收数据时,应该先判断数据的接收数据帧的格式,再移除数据进行处理。通讯介质层应该能提供了两种读取接收数据的方式,一种是只查看数据内容,即获得接收缓冲区数据的一份拷贝;另一种是获取该数据,即将接收缓冲区的数据移出接收缓冲区。两种读取数据方式的区别在于,是否在获得数据的同时删除接收缓冲区中的数据。例如,在处理设备报文时,规约模块必须等待接收到完整的数据帧后进行解释,因此当通讯模块通知规约模块有数据到达时,规约模块采用第一种方式读出帧头,计算出整帧数据的长度,与接收到的数据总长度比较,如果数据全部收到,则可以使用第二种方式将数据取出进行处理,缓冲区指针移向下一帧数据的起始位置;如果数据未全部收到,则规约模块可以结束本次处理,等待下次通讯模块的接收事件通知。数据处理流程图如下:4.1.5质量要求性能指标每个规约支持端口数目<=32。每个端口支持设备数目<=64。设备支持数据点数目<=65535。同一设备同时只支持一个远方操作过程。遥测测量误差<0.5%。遥控正确率达到100%。重要遥测量数据更新周期<3s、遥信变位响应时间<2s。事件顺序记录(SOE)、站间分辨率≤20ms。功能测试要点采用黑盒测试的方法即可。通过系统侧规约模块接入上位机监控系统,通过设备侧规约模块接入智能设备,通过保护测试源在智能设备上接入相关模拟量或状态量,在上位机监控系统验证数据处理的正确性。在装置进行遥信变位、保护事件等试验,在上位机监控系统查看事件信息。检查规约模块处理的正确性。由上位机模拟远方操作,检查操作过程处理的正确性。4.2内核模块4.2.1功能描述内核模块主要封装了实时库,包括设备数据区、遥测数据区、遥信数据区、遥控数据区、遥脉数据区和转发通道区,同时封装了对内存实时库的访问接口。同时还进行遥信变位和遥测越限的处理。系统中采用统一的实时库,对于多转发的情况只考虑在转发通道规约内做额外的处理。在设备索引时采用二分查找算法,以提供设备遍历的效率。4.2.2类设计说明实时库类类名classCRtdbDataBase主要属性说明设备数目:intm_nTotalDevice转发数目:intm_nTotalTransmit设备存储区指针:CRtdbDevice*m_pRtdbDevice转发存储区指针:CRtdbTransmit*m_pRtdbTransmit主要方法说明数据加载:BOOLLoadData()数据释放:voidFreeData()获取设备数目:intGetDeviceNum()获取指定设备索引号:intGetDeviceIndex(CRtdbDevice*pDevice)根据设备号获取设备指针:CRtdbDevice*GetRtdbDevice(intnNo)根据索引号获取设备指针:CRtdbDevice*FindRtdbDevice(intnIndex)获取转发数目:intGetTransmitNum()获取指定转发索引号:intGetTransmitIndex(CRtdbTransmit*pTransmit)根据转发通道号获取转发指针:CRtdbTransmit*GetRtdbTransmit(intnNo)根据索引号获取转发指针:CRtdbTransmit*FindRtdbTransmit(intnIndex)数据写入:voidWriteRtdbData(UINTmsg,void*wParam,longlParam)实时库设备类类名classCRtdbDevice主要属性说明设备ID:intm_nID设备名:charm_szName[32]规约接口函数指针: LPPROTCALLm_lpProtocolCall数据库指针:CRtdbDataBase*m_pDataBase设备模拟量数目:intm_nTotalAnalogue设备开关量数目:intm_nTotalDigital设备遥控点数目:intm_nTotalRelay设备脉冲点数目:intm_nTotalPulse模拟量存储区指针:CRtdbAnalogue*m_pRtdbAnalogue开关量存储区指针:CRtdbDigital*m_pRtdbDigital遥控点存储区指针:CRtdbRelay*m_pRtdbRelay脉冲点存储区指针:CRtdbPulse*m_pRtdbPulse主要方法说明获取设备ID:intGetID()获取设备名:constchar*GetName()根据模拟量号获取模拟量指针:CRtdbAnalogue*GetRtdbAnalogue(intnNo)根据数字量号获取数字量指针:CRtdbDigital*GetRtdbDigital(intnNo)根据遥控点号获取遥控点指针:CRtdbRelay*GetRtdbRelay(intnNo)根据模拟量号获取模拟量指针:CRtdbPulse*GetRtdbPulse(intnNo)根据模拟量索引号获取模拟量指针:CRtdbAnalogue*FindRtdbAnalogue(intnIndex)根据数字量索引号获取数字量指针:CRtdbDigital*FindRtdbDigital(intnIndex)根据遥控点号获取遥控点指针:CRtdbRelay*FindRtdbRelay(intnIndex)根据脉冲点索引号获取脉冲点指针:CRtdbPulse*FindRtdbPulse(intnIndex)转发通道类类名classCRtdbTransmit主要属性说明转发ID:intm_nID转发名:charm_szName[32]转发类型:WORDm_wTransmitType规约接口函数指针: LPPROTCALLm_lpProtocolCall数据库指针:CRtdbDataBase*m_pDataBase设备模拟量数目:intm_nTotalAnalogue设备开关量数目:intm_nTotalDigital设备遥控点数目:intm_nTotalRelay设备脉冲点数目:intm_nTotalPulse模拟量链表:std::list<CRtdbAnalogue*>m_ListAnalogue开关量链表:std::list<CRtdbDigital*>m_ListDigital遥控点链表:std::list<CRtdbRelay*>m_ListRelay脉冲点链表:std::list<CRtdbPulse*>m_ListPulse主要方法说明获取设备ID:intGetID()获取设备名:constchar*GetName()根据模拟量号获取模拟量指针:CRtdbAnalogue*GetRtdbAnalogue(intnNo)根据数字量号获取数字量指针:CRtdbDigital*GetRtdbDigital(intnNo)根据遥控点号获取遥控点指针:CRtdbRelay*GetRtdbRelay(intnNo)根据模拟量号获取模拟量指针:CRtdbPulse*GetRtdbPulse(intnNo)根据模拟量索引号获取模拟量指针:CRtdbAnalogue*FindRtdbAnalogue(intnIndex)根据数字量索引号获取数字量指针:CRtdbDigital*FindRtdbDigital(intnIndex)根据遥控点号获取遥控点指针:CRtdbRelay*FindRtdbRelay(intnIndex)根据脉冲点索引号获取脉冲点指针:CRtdbPulse*FindRtdbPulse(intnIndex)4.2.3接口说明写实时库接口voidWriteRtdbData(UINTmsg,void*wParam,longlParam)写时候库的接口函数,规约模块调用该函数向实时库写入数据,包括遥测、遥信、SOE、遥测越限、遥信变位、遥控返校、保护事件、定值操作的返校等。4.2.4程序流程系统侧协议转发设备侧协议流程系统侧协议接收到上位机下发的控制命令后,调用内核模块的接口函数WriteRtdbData将任务下发到内核模块,然后内核模块根据命令消息的格式以及控制对象设备的设备号,找到实时库中该设备,调用作为该设备成员函数指针变量的设备侧规约接口MessageCall将控制命令下发给设备所属规约模块,规约模块将命令消息加入到消息队列中,然后发送接收任务信号给设备所属的端口处理线程通知他来取,并传输过程结束。设备侧协议转发系统侧协议流程设备侧协议接收到间隔层只能设备的事件报文后,解析成事件信息调用内核接口函数WriteRtdbData将事件信息发送给内核模块,内核模块遍历所有的转发规约,将事件信息通过规约模块的接口函数MessageCall发送给系统侧规约后返回4.2.5质量要求性能指标支持数据点数目<=65535。支持设备数目<=65535。功能测试要点采用黑盒测试,测试所有功能模块。通过系统侧规约模块接入上位机监控系统,通过设备侧规约模块接入智能设备,通过保护测试源在智能设备上接入相关模拟量或状态量,在上位机监控系统验证数据处理的正确性。在装置进行遥信变位、保护事件等试验,在上位机监控系统查看事件信息。检查规约模块处理的正确性。由上位机模拟远方操作,检查操作过程处理的正确性。4.3通讯接口模块4.3.1功能描述通讯接口模块实现对TCP、UDP、串口、CAN总线协议等通讯接口的封装,将各种通讯接口模块做成独立的.SO动态链接库文件,供各个模块的调用。通讯接口模块与系统中其他功能模块的关系如下图所示:4.3.2类设计说明串口设置结构typedefstruct_tagSERIALPARAM{intserial_mod; intbaud_rate; intparity; intdata_bits; intstop_bits; }SERIALPARAM;串口类类名classCSerial主要属性说明端口名称:charm_nSerialName[32]端口句柄:intm_handle端口设置:SERIALPARAMm_nSerialParam规约通讯回调指针:LPCOMMCALLm_lpCommCall规约帧处理回调指针:LPFRAMECALLm_lpFrameCall主要方法说明串口打开:intSerialOpen(constchar*deviceName,SERIALPARAMserial_info);关闭串口:intSerialClose();串口读:intSerialRead(char*pBuffer,intnRead);串口写:intSerialWrite(char*pBuffer,intnWrite);发送数据:intSend(char*pBuffer,intnlen);接收数据:intReceive(char*pBuffer,intnlen);通讯任务:staticvoid*CommTask(void*arg);UDP设置结构typedefstruct_tagUDPPARAM{ structsockaddr_insocket_addr; structsockaddr_inremote_socket_addr;}UDPPARAM;UDP通讯类类名classCUdp主要属性说明端口名称:charm_nEthName[32]端口设置:ETHPARAMm_nEthParam端口句柄:intm_handle规约通讯回调指针:LPCOMMCALLm_lpCommCall规约帧处理回调指针:LPFRAMECALLm_lpFrameCall主要方法说明串口打开:intUdpOpen(constchar*deviceName,ETHPARAMm_nEthParam);关闭串口:intUdpClose();串口读:intUdpRead(char*pBuffer,intnRead);串口写:intUdpWrite(char*pBuffer,intnWrite);发送数据:intSend(char*pBuffer,intnlen);接收数据:intReceive(char*pBuffer,intnlen);通讯任务:staticvoid*CommTask(void*arg);4.3.3接口说明打开端口intOpenComm(constchar*pBuffer,LPCOMMCALLlpCommCall,UINTuIdleTime)打开通讯端口,参数pBuffer为端口名,参数lpCommCall为规约回调函数,uIdleTime为中断判断时间单位毫秒,返回端口句柄。关闭端口voidCloseComm(inthandle)关闭通讯端口,参数handle为端口句柄。端口读数据intCommRead(inthandle,char*pBuffer,intnLength)读并取出数据。端口写数据intCommWrite(inthandle,char*pBuffer,intnLength);端口假读数据intCommPseudoRead(inthandle,charFAR*pBuffer,intnLength);只读数据,不取出数据。4.3.4程序流程数据读取流程规约模块通讯介质层的交互采用通讯事件驱动的方式。规约模块发送数据可以直接调用通讯模块的接口,将数据交给通讯模块作发送处理,当通讯模块收到数据时,则主动通知规约模块,然后规约模块可以调用通讯模块的接口,获得接收到的数据。采用通讯事件驱动的方式有效地减少了规约模块对于通讯的管理,降低规约模块的复杂程度。4.3.5质量要求性能要求支持串口、以太网TCP、UDP、CAN等多种接口类型支持通讯接口的插拔并能恢复正常状态。功能测试要点采用黑盒测试的方法即可。在通讯端口上接入上位机监控系统或间隔层设备,检查通讯数据正确性。插拔通讯物理接口,检查通讯状态。4.4初始化模块4.4.1功能描述初始化模块是实现定义了程序的初始化,实现工程配置文件的读取和解析,根据配置文件加载所需的规约模块,并初始化通道和设备。初始化模块包含以下功能:配置文件的加载。工程配置文件由上位机远程配置软件编译生成,并通过FTP工具下载到通讯管理机终端设备中,在终端启动后,通讯管理机应用软件通过流文件方式将工程配置文件读入内存中。配置文件应该包括工程配置和设备模板两个部分。工程配置:包括各个通讯端口系统,端口配置,端口协议,设备数量,设备类型等信息;设备模板指本通讯管理机中接入设备的信息,包括设备名称、遥测、遥信、遥脉、遥控信息等。规约的加载。规约采用动态加载的模式,主程序启动时在指定系统指定目录(当前目录)加载规约模块文件(.so动态链接库),并通过系统API调用规约模块的导出接口函数,作为内核模块和规约模块的交互接口。各任务的初始化和关闭应用软件启动时,初始化模块通过规约模块的接口发送初始化命令初始化设备配置启动规约模块,系统推出时关闭并释放各个设备规约。4.4.2配置文件说明protocol.dat通道配置文件,以流方式存储,包含全站系统侧协议和设备侧协议信息。device.dat设备配置文件,以流方式存储,包含全站设备信息。analogue.dat模拟量配置文件,以流方式存储,包含全站模拟量信息。digital.dat开关量配置文件,以流方式存储,包含全站开关量信息。relay.d

温馨提示

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

评论

0/150

提交评论