北京科技大学软件课程设计资料报告材料-自动化专业_第1页
北京科技大学软件课程设计资料报告材料-自动化专业_第2页
北京科技大学软件课程设计资料报告材料-自动化专业_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、科技大学课程设计(软件设计)报告班 级:姓 名:学 号:同组同学:指导教师:曾慧日 期: 2014 年 11 月 13日1设计容1.1.1实验目的1.1.2实验容1.2应用程序总体分析与设计1.2.1项目建立 建立一个 Visual Basic工程22.2 OPC建立 设置 OPC包装 DLL2建立一个 OPC对象23应用程序各功能模块分析与设计 43.1界面设计4.3.2服务器的断开与5.连接OPC服务器和建立 OPC组5添加OPC标签5.断开服务器 6.3.3数据读取与显示7.棒状图显示7.文本框显示7.3.4数据保存8.3.5实时曲线绘制8.4程序测试1.04

2、.1测试过程1.04.2测试结果1.05程序文档1.25.1使用说明1.25.2程序清单1.26总结176.1问题与解决1.76.2感想与致1.77参考文献1.81设计容1.1实验目的通过实际操作进一步了解OPC的各种概念,掌握OPC客户端的编写方法。 并对微软的DCOM有一定的了解,要求通过合适的 DCOM配置,使客户端能够 读取网络上服务器中的数据。1.2实验容1)利用VB语言编写出一个简单的OPC客户端程序,要求这个客户端能够 读取服务器中的数据,并显示出来。2)配置DCOM,使客户端能够能过DCOM读取另一台服务器上的数据。2应用程序总体分析与设计应用程序与OPC服务器进行连接并读取服

3、务器端的数据,同时把读取到的数据通过棒柱和文本框显示,并可以保存数据便于查找,同时应用了Picture控件对实时数据变化趋势分析。2.1项目建立2.1.1 建立一个 Visual Basic 工程1)启动 Visual Basic新建一个 Visual Basic工程。选择Standard EXE作为新建工程的类型。图2.1 Visual Basic工程的建立2.2 OPC 建立设置OPC包装DLL对 OPC包装 DLL进行注册:从 Visual Basic菜单里选择Project-References。在Available References表示中,选择OPC Automation 2.0

4、。图2.2引用的设置建立一个OPC对象在Visual Basic里,是以对象的单位对 OPC服务器进行访问。OPC自动化接 口是由以下四种对象所定义。OPC服务器OPCffl( OPC组集合)OPC标签(OPC标签集合)OPC浏览器1)变量声明r反(|l -f-LUip Tep: TwtOHLplDptUb Ej:pZLi C21二Pin FiJiExiiZ ©biS如A? Opts wetDlh objr*?t :ups H DJCjiroDin ntijTiTUrrii te OrCrjpZlLffl nhjl+sw " l?1litfiil =©Ln JS

5、-zjT-LrR.iaB.dL«z IJ 上 L :ikDin 汕旳2J 血 Sir. rrlO. 2)怙Diri eqI A? InitRFDin jl 鼬 IategeiOinLt ItririgUm M 丹FLikf 7 Vq&Jsol!DLm SeTtPL* fL= |!:>dl1*4x%b CgwiciA> Sding Optioml 耳trlTMi b Strinc)If obiS4ri*r I e Sot hum- TS»el'苑一啊F-秋话:庁Sei匸 He aPCStrvtrEoJIEIf 皿石订叭ju 4e5u:«

6、- OICDL&cotriecUd Th叙l辻接叭壬与烹Csrmiti宅让斤白甘 址闸龍鼻Eai IeIf oL |r caps IsIi-cu茸l?i柯加吾Sei ofcjGr吨m 二 hjServer 0r"«5rcsEnd IEIf Jrj7宅 rGt. 1= Kclii-f: Thm新丹讶del vbjTs灶p -吐iGmapi 兄H'.ft;)ItjS IEin i汕Bin atr IleTiLD2&) H Lri£»图2.3 OPC对象变量的声明 其中,部分变量声明意义见表所示。表2.1 OPC对象变量的声明变量名说明

7、objServerOPCServe对象,用于连接OPC服务器。objGroupsOPCGroups对象,用于添加OPC组的OPC组集合objTestGrpOPCGroup对象,演示用的 OPC组。objItemsOPCItems对象,用于添加 OPC标签的OPC标签集合。IServerHa ndles()长整型的数组,用于保存OPC标签的服务器句柄。3应用程序各功能模块分析与设计3.1界面设计j OC Ac p catic1' Z'ernonbt?)S孫统讥fj找杰品不-车时救据更羽IT好注LobeLVLnbrl4宜时曲鲨彊踪nit 連五r、温帝轻示诰膜站、Eha/5iup口

8、| 国r I , I I I I r I I I I 擬作血扳AtDeii trier张怛刘启瞎图3.1界面效果图窗体中所使用的控件种类如表3.1所示表3.1 FmMain的控件控件名称窗体(Form)FmMai n命令按钮(CommandButton)Bt nConnect命令按钮(CommandButton)Bt nAddltem命令按钮(CommandButton)Bt nQuit命令按钮(CommandButton)Btn Save命令按钮(CommandButton)Bt nStop命令按钮(CommandButton)Btn draw定时器(Timer)tmUpdate定时器(Ti

9、mer)dataUpdate对话框(CommonDialog)Common Dialog1图像(PictureBox)picBar(作为数组使用,从左开始12)标签(Label)lbBar(作为数组使用。从左开如12)文本框仃extBox)dataI nfo图像(Picture)Picture13.2服务器的断开与321连接OPC服务器和建立OPC组这里用“ NEW'关键词生成OPC服务器的对象,然后调用OPC服务器对象的“ Connect”方法,和OPC服务器连接。Connect子程序如下:'连接OPC服务器和建立OPC组Sub Connect(strProglD As St

10、ring, Optional strNode As String)If objServer Is Nothing Then'建立一个OPC服务器对象Set objServer = New OPCServerEnd IfIf objServer.ServerState = OPCDisconnected Then'连接OPC服务器objServer.Connect strProgID, strNodeEnd IfIf objGroups Is Nothing Then'建立一个OPC组集合Set objGroups = objServer.OPCGroupsEnd IfI

11、f objTestGrp Is Nothing Then'添加一个OPC组Set objTestGrp = objGroups.Add("TestGrp")End IfEnd Sub添加OPC标签对OPC服务器进行访问前,必须先在OPC组里添加要访问的OPC标签。AddItem子程序如下:添加OPC标签Sub AddItem()Dim strltemlDs(8) As StringDim ICIientHandles(2) As LongDim lErrors() As LongDim I As IntegerIf objTestGrp Is Nothing The

12、nExit SubEnd IfIf Not objItems Is Nothing ThenIf objItems.Count > 0 ThenExit SubEnd IfEnd If'设置组活动状态objTestGrpsActive = True'取消组非同期通知objTestGrpsSubscribed = False'建立OPC项集合Set objltems = objTestGrp.OPCItems'生成标签的项标识符For I = 1 To 2strltemlDs(I) = "TAG"ICIientHandles(l) = I

13、Next'添加OPC项Call objltems.Addltems(8, strltemIDs, _ICIientHandles, IServerHandles, lErrors)End Sub断开服务器连接着OPC服务器的OPC应用程序,在退出前必须断开和OPC服务器的连接。因为OPC服务器并不知道OPE用程序的退出,如果不先断开连接,那么OPC服务器使用的计算机资源就不被释放。如果这样的问题反复发生,久而久之, 连续运转的自动控制系统可能会使计算机资源渐渐枯竭从而发生严重问题。Disco nnect子程序如下:'断开OPC服务器Sub Disconnect()Dim IEr

14、rors() As LongIf Not objltems Is Nothing ThenIf objltems.Count > 0 Then'清除OPC项objltems.Remove 2, IServerHandles, lErrorsEnd IfSet objltems = NothingEnd IfIf Not objTestGrp Is Nothing Then'清除OPC组objGroups.Remove "TestGrp"Set objTestGrp = NothingEnd IfIf Not objGroups Is Nothing T

15、henSet objGroups = NothingEnd IfIf Not objServer Is Nothing ThenIf objServer.ServerState <> OPCDisconnected Then'断开OPC服务器.objServer.DisconnectEnd IfSet objServer = NothingEnd IfEnd Sub3.3数据读取与显示客户端使用2个定时器TmUpdate和dataUpdate,定时为1S 在TmUpdate 事件中调用同步读取数据函数SyncRead每隔1S读取服务器端的数据,同时对棒柱的显示进行刷新。在定

16、时器dataUpdate事件中读取系统时间并不断刷新TextBox的容,显示当前的时间和数据。棒状图显示为了是显示更加人性化,对不同围的数值显示采用了不同的颜色。当数值过低或者过高时分别显示深蓝色和红色以示警告。中间值显示绿色和橙黄色。程序代码如下所示:SyncRead OPCCache, vtltemValues, lErrors'棒图的表示For I = 1 To 2'数据的格式化strBuf = Format(vtltemValues(l), "#.000")'表示数据字符串lbBar(I).Caption = strBufdataTemp(I

17、) = strBuf'计算棒的宽和高nWidth = picBar(l).ScaleWidthnHeight = picBar(l).ScaleHeightsglScale = vtltemValues(I) / 100nDrawHeight = CInt(nHeight * sglScale)'清除现棒图picBar(I).Cls'绘制棒图If vtltemValues(I) < tHoldValuel ThenpicBar(l).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), RGB(0, 0, 255),

18、 BFElseIf vtltemValues(I) < tHoldValue2 ThenpicBar(I).Line (0, nHeight - tHoldValuel / 100 * nHeight)-(nWidth, nHeight), RGB(0, 225, 0), BFpicBar(I).Line (0, nHeight - nDrawHeight)-(nWidth, (1 - tHoldValue1 / 100) * nHeight), RGB(225, 225, 0), BFElsepicBar(I).Line (0, nHeight - tHoldValue1 / 100

19、* nHeight)-(nWidth, nHeight), RGB(0, 225, 0), BF picBar(I).Line (0, nHeight - tHoldValue2 / 100 * nHeight)-(nWidth, (1 - tHoldValue1 / 100) * nHeight), RGB(225, 225, 0), BFpicBar(I).Line (0, nHeight - nDrawHeight)-(nWidth, (1 - tHoldValue2 / 100) * nHeight), RGB(255, 0, 0), BF End IfEnd IfIf I = 1 T

20、heny(num1) = vtltemValues(I)num1 = num1 + 1Elsez(num2) = vtltemValues(I)num2 = num2 + 1End IfNextEnd Sub文本框显示程序代码如下:Private Sub dataUpdate_Timer()If SaveFlag Then'保存数据结束后清除原来的数据datalnfo.Text = Year(Now() & Month(Now() & Day(Now() & "" & Hour(Now() & ":" &a

21、mp;Minute(Now() & ":" & Second(Now() & ""& "反应罐温度:"& dataTemp(1) & "" & "反应罐液位:"& dataTemp(2) & Chr(13) & Chr(1O)SaveFlag = FalseElsedataInfo.Text = dataInfo.Text & Year(Now() & Month(Now() & Day(No

22、w() & ""& Hour(Now()& ":"& Minute(Now() & ":" & Second(Now() & "" & "反应罐温度:"& dataTemp(1) & ""& "反应罐液位:"& dataTemp(2) & Chr(13) & Chr(10)End IfEnd Sub3.4数据保存此处定义bool型的SaveFla

23、g为保存标志,在保存时停止对新的数据的接收。主要用到Com mon Dialog控件。该控件可用于创建“文件打开”、“文件保存”、“文件打印”、“颜色设置”、“字体设置”、“帮助”6种对话框。程序代码如下所示:Private Sub BtnSave_Click()TmUpdate.Enabled = FalsedataUpdate.Enabled = FalseCommonDialog1.DialogTitle ="另存为"CommonDialog1.DefaultExt = "txt"CommonDialog1.ShowSaveIf Len(Commo

24、nDialog1.FileName) > 0 ThenOpen CommonDialogl.FileName For Output As #1Print #1, dataInfo.TextClose #1SaveFlag = TrueEnd IfEnd Sub3.5实时曲线绘制Picture是功能强大坐标图绘制软件,本次设计中采用VB中Picture控件进行实时曲线绘制。在设计时添加2个系列曲线,代表两个通道,即温度和液位与 时间的关系。并在图中绘出两条警戒线,能更直观地比对数据的变化。>.:;实时曲线跟踪: r,-. r震惶善衣tE兀-i It 11faE更善我蛍注:1 !i !

25、1«1 -i i!时间m图 3.2Picture 设置部分程序代码如下所示:Picturel.CIsIf Checkl.Value = 0 ThenIf col < 201 ThenFor u = 1 To 2For j = col To colX = jY = vtltemValues(u)px(j, u) = Xpy(j, u) = 丫Next jNext ucol = col + 1pl = pl + 1ElseFor s = 1 To 2For t = 1 To 199px(t, s) = tpy(t, s) = py(t + 1, s)Next tpy(200, s)

26、 = vtltemValues(s)Next sEnd IfElsecol = colEnd IfIf pl >= 2 ThenFor w = 1 To 2Picture1.PSet (px(1, w), py(1, w)For j = 2 To colPicture1.L ine -(px(j - 1, w), py(j - 1, w), QBColor(w * 2)Next jNext wEnd If'画两条警戒线Picture1.DrawWidth = 2Picture1.Line (0, 150)-(200, 150), vbRedPicture1.Line (0, 60

27、0)-(200, 600), vbBlue'指示警戒值,警戒值以上改变显示颜色If lbBar(1).Caption > 150 Or lbBar(2).Caption > 600 ThenLabel7.Caption ="出现异常!"ElseLabel7.Caption ="正在观测!"End IfIf lbBar(1).Caption > 150 ThenText2.Text ="温度过高!"picBar(1).Line (0, nHeight - nDrawHeight)-(nWidth, nHeigh

28、t), _RGB(255, 0, 0), BFEnd IfIf lbBar(1).Caption < 150 ThenText2.Text ="温度平稳!"picBar(1) .L ine (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(0, 255, 0), BFEnd IfIf lbBar(2).Caption > 600 ThenText1.Text ="液面过高!"picBar(2).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight)

29、, _RGB(255, 0, 0), BF4程序测试4.1测试过程运行程序后,先单击“连接”按钮,保证客户端连接上组态王数据库。然后 单击“加载”按钮,观察数据时候正常显示,棒柱的数据和颜色是否正常,文本 框的时间和数据是否正常以及看是否能实时显示曲线。单击“保存数据”按钮, 弹出对话框,选择路径,填写文件名后保存数据。最后单击“退出”按钮,看成 否正常退出程序。运行程序,注意将bin文件夹放到工程下。4.2测试结果从测试结果上看,整个程序没有bug,各个功能正常。从绘图的结果可以看 出从服务器传来的数据是按正弦规律变化的2014年月切日3 OPC Application Cemo操作面板岀现

30、异常!165. *73温度讨言2实时曲线跟踪雜惊溫度显示富度绿)'Jlun/Sltip逞出Tax 13201 2ClilL14 20H1L14 20141114 2Q141E14 20U1114 20UIL14 3QU1E14歸贯:113. 578:M 358:107. 375:13B 5M:1R2 457:154 449i ILB 033:T4 1549:1076:10:8 9:10:9 10:10 9 10:11 9:1012 Q:10 12 c 10 H90.00(270.( H :4TQ :esn.:590.5! 310110(Cesi sner张恒刘启哈白童图4.1程序测试图

31、一3 QPC Applicat on Demo201411 月 14 日砚在时何:9时14分2秒抹作面板岀現异卒!实时曲线跟踪温蔭讨高!实时歆抵更新夜位、温卓显丢(Sf&tt-爲度辯)|7 Rin/StfltRj另存为S:201电111起3:14:5201411143:14:G201111149:14:7201«1143;14;0331电111屯3:14:9£01411143:14:10h 154. IBS h 150. 49E h 117. 933F; 50.1ST:103. 384 S- i3G-279图4.2程序测试图* *U(E!)卜亨二蚪* »

32、ve »kfliH *爭理文禅夫-.WBE=1- .tni«卜载主雨OPC_数石±xt-7库3 w*=国=T 7*7*5Designer 张恒 刘启畤 白童E!|勺| 橫索VQP归-<&鞘曰悶斎耶1014-11 13 2145丈稈关20JU1 11 14 y:15丈不之也亶件芒恨;tVr?iSi电消图4.3保存数据5程序文档5.1使用说明(1) 运行程序,连接成功后,启动,此时棒状图以及文本框就会显示反应 罐温度和反应罐液位的值。(2) 当数据积累到一定程度之后,点击“绘图”按钮,应罐温度和反应罐液位数值变化曲线就会显示出来,每点击一次,就会刷新一次

33、。从而实现了数据的实时显示。程序中数据刷新为1s,因此在点击“绘图”按钮时频率最好不要 超过1s。(3) 保存数据。点击“保存”按钮,会弹出对话框,输入响应的文件名保 存便可。保存数据后,所有历史数据会被清空。5.2程序清单Option Base 1Option ExplicitDim WithEvents objServer As OPCServerDim objGroups As OPCGroupsDim objTestGrp As OPCGroupDim objItems As OPCItemsDim IServerHandles() As LongDim px(200, 2) As S

34、ingle, py(200, 2) As SingleDim col As IntegerDim pl As IntegerDim dataTemp(2) As StringDim DrawFlag As BooleanDim SaveFlag As BooleanSub Connect(strProglD As String, Optional strNode As String)If objServer Is Nothing Then'建立一个OPC服务器对象Set objServer = New OPCServerEnd IfIf objServer.ServerState =

35、OPCDisconnected Then'连接OPC服务器objServer.Connect strProgID, strNodeEnd IfIf objGroups Is Nothing Then'建立一个OPC组集合Set objGroups = objServer.OPCGroupsEnd IfIf objTestGrp Is Nothing Then'添加一个OPC组Set objTestGrp = objGroups.Add("TestGrp")End IfEnd SubSub AddItem()Dim strltemlDs(2) As S

36、tringDim ICIientHandles(2) As LongDim IErrors() As LongDim I As IntegerIf objTestGrp Is Nothing ThenExit SubEnd IfIf Not objItems Is Nothing ThenIf objItems.Count > 0 ThenExit SubEnd IfEnd If'设置组活动状态objTestGrpsActive = True'取消组非同期通知objTestGrpsSubscribed = False'建立OPC项集合Set objItems =

37、objTestGrp.OPCItems'生成标签的项标识符strltemlDs(l)="反应罐温度.Value"strltemlDs(2)="反应罐液位.Value" ICIientHandles(l) = 1lClientHandles(2) = 2'添加OPC项Call objItems.AddItems(2, strltemIDs, _ ICIientHandles, IServerHandles, lErrors) End SubSub Disconnect()Dim IErrors() As LongIf Not objItem

38、s Is Nothing ThenIf objItems.Count > 0 Then'清除OPC项 objltems.Remove 2, IServerHandles, lErrors End IfSet objItems = NothingEnd IfIf Not objTestGrp Is Nothing Then'清除OPC组objGroups.Remove "TestGrp"Set objTestGrp = NothingEnd IfIf Not objGroups Is Nothing ThenSet objGroups = Nothing

39、End IfIf Not objServer Is Nothing ThenIf objServer.ServerState <> OPCDisconnected Then '断开OPC服务器.objServer.DisconnectEnd IfSet objServer = NothingEnd IfEnd SubPrivate Sub btnConnect_Click()'调用Connect子程序Call Connect("kingview.view.1")Label7.Caption ="与服务器连接成功!"End Su

40、bPrivate Sub btnAddltem_Click()'调用AddItem子程序Call AddItemIf Not objTestGrp Is Nothing ThenIf objTestGrp.OPCItems.Count > 0 Then '启动定时器tmUpdate.Enabled = True dataUpdate.Enabled = True ElseEnd IfEnd IfEnd SubPrivate Sub btnQuit_Click() '卸载窗体Unload fmMainEnd SubPrivate Sub Form_Unload(Ca

41、ncel As Integer) '调用Disconnect子程序Call DisconnectEnd SubPrivate Sub tmUpdate_Timer()Dim vtItemValues() As VariantDim lErrors() As LongDim strBuf As StringDim nWidth As IntegerDim nHeight As IntegerDim nDrawHeight As IntegerDim sglScale As SingleDim I As Integer, u As Integer, j As Integer, s As I

42、nteger, t As Integer, w As IntegerDim X As Single, Y As Single'同期读取SyncRead OPCCache, vtItemValues, lErrors'棒图的表示For I = 1 To 2'数据的格式化strBuf = Format(vtltemValues(l), "#.000")'表示数据字符串lbBar(I).Caption = strBuf dataTemp(I) = strBuf'计算棒的宽和高nWidth = picBar(l).ScaleWidthnHei

43、ght = picBar(l).ScaleHeightsglScale = vtltemValues(I) / 700nDrawHeight = CInt(nHeight * sglScale)'清除现棒图picBar(l).CIs'绘制棒图picBar(l).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BFNext'曲线绘制Picture1.ClsIf Check1.Value = 0 ThenIf col < 201 ThenFor u = 1 To 2For j =

44、 col To colX = jY = vtltemValues(u)px(j, u) = Xpy(j, u) = 丫Next jNext ucol = col + 1pl = pl + 1ElseFor s = 1 To 2For t = 1 To 199px(t, s) = tpy(t, s) = py(t + 1, s)Next tpy(200, s) = vtltemValues(s)Next sEnd IfElsecol = colEnd IfIf pl >= 2 ThenFor w = 1 To 2Picture1.PSet (px(1, w), py(1, w)For j

45、= 2 To colPicture1.Line -(px(j - 1, w), py(j - 1, w), QBColor(w * 2)Next jNext wEnd If'画两条警戒线Picture1.DrawWidth = 2Picture1.Line (0, 150)-(200, 150), vbRedPicture1.Line (0, 600)-(200, 600), vbBlue'指示警戒值,警戒值以上改变显示颜色If lbBar(1).Caption > 150 Or lbBar(2).Caption > 600 Then Label7.Caption

46、="出现异常!"ElseLabel7.Caption ="正在观测!"End IfIf lbBar(1).Caption > 150 ThenText2.Text ="温度过高!"picBar(1) .L ine (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BFEnd IfIf lbBar(1).Caption < 150 ThenText2.Text ="温度平稳!"picBar(1).Line (0, nHeight

47、 - nDrawHeight)-(nWidth, nHeight), _ RGB(0, 255, 0), BFEnd IfIf lbBar(2).Caption > 600 ThenTextl.Text ="液面过高!"picBar(2).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(255, 0, 0), BFEnd IfIf lbBar(2).Caption < 600 ThenText1.Text ="液面平稳!"picBar(2).Line (0, nHeight -

48、nDrawHeight)-(nWidth, nHeight), _RGB(0, 255, 0), BFEnd IfEnd SubSub SyncRead(nSource As Integer, ByRef vtltemValues() As Variant, _ByRef IErrors() As Long)Dim lServerHandlesTemp(2) As LongDim j As IntegerIf objTestGrp Is Nothing ThenExit SubEnd IfIf objTestGrp.OPCItems.Count > 0 Then'同期读取objT

49、estGrp.SyncRead nSource, 2, lServerHandles, _vtItemValues, lErrorsEnd IfEnd SubPrivate Sub Form_Load()tmUpdate.Enabled = FalsetmUpdate.Interval = 100dataUpdate.Enabled = FalsedataUpdate.Interval = 1000'初始化时间变量col = 1pl = 0'调用时间函数,显示时间Call date1'初始化坐标围Picture1.Scale (0, 750)-(200, 0)End Sub'调用系统时间子函数Sub date1()Label3.Caption = Trim(Str(Year(Date) + "年"+ Trim(Str(Month(Date) + "月"+ Trim(Str(Day(Date) + "Label4.Caption ="现在时间:"+ Trim(Str(Hour(Time)

温馨提示

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

评论

0/150

提交评论