![OPC-Client-動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)和應(yīng)用_第1頁(yè)](http://file4.renrendoc.com/view/09da3eb212dfaba3439de50c8dc02a2a/09da3eb212dfaba3439de50c8dc02a2a1.gif)
![OPC-Client-動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)和應(yīng)用_第2頁(yè)](http://file4.renrendoc.com/view/09da3eb212dfaba3439de50c8dc02a2a/09da3eb212dfaba3439de50c8dc02a2a2.gif)
![OPC-Client-動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)和應(yīng)用_第3頁(yè)](http://file4.renrendoc.com/view/09da3eb212dfaba3439de50c8dc02a2a/09da3eb212dfaba3439de50c8dc02a2a3.gif)
![OPC-Client-動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)和應(yīng)用_第4頁(yè)](http://file4.renrendoc.com/view/09da3eb212dfaba3439de50c8dc02a2a/09da3eb212dfaba3439de50c8dc02a2a4.gif)
![OPC-Client-動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)和應(yīng)用_第5頁(yè)](http://file4.renrendoc.com/view/09da3eb212dfaba3439de50c8dc02a2a/09da3eb212dfaba3439de50c8dc02a2a5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、引言
現(xiàn)在有很多工業(yè)控制產(chǎn)品都支持OPCServer,如西門(mén)子SIMATICNET、WINCC、WINAC、Protool/pro,亞控公司組態(tài)王等,這些產(chǎn)品本身在一些需要實(shí)現(xiàn)很復(fù)雜的數(shù)據(jù)模型功能上還顯得缺乏,由于支持了OPC,我們就可以在VB或C++上通過(guò)OPC獲取數(shù)據(jù)進(jìn)而實(shí)現(xiàn)較復(fù)雜的功能〔如強(qiáng)大的數(shù)據(jù)庫(kù)管理或數(shù)據(jù)分析〕。本文討論了如何在VB中開(kāi)發(fā)一個(gè)動(dòng)態(tài)連接庫(kù),以方便開(kāi)發(fā)者實(shí)現(xiàn)對(duì)OPC效勞器的數(shù)據(jù)采集,將精力更多的放在界面開(kāi)發(fā)和數(shù)據(jù)處理上。二、功能設(shè)計(jì)
類(lèi)型設(shè)計(jì)為ActiveXDll,名稱(chēng):OPC_Dll.dll,可以在VB工程[引用]中加載,加載后通過(guò)創(chuàng)立類(lèi)BCA_OPC的實(shí)例來(lái)實(shí)現(xiàn)OPC數(shù)據(jù)通訊,BCA_OPC的調(diào)用功能如下:
1、配置初始化:Dll_Initial(strConfigFileAsString)AsBoolean
其中strConfigFile為連接OPC效勞器對(duì)應(yīng)的配置文件名稱(chēng)〔*.ini〕,用戶(hù)建立的配置文件應(yīng)遵循一定的格式〔在下面應(yīng)用中說(shuō)明〕,并且應(yīng)放在系統(tǒng)目錄下〔如C:\WINNT下〕。配置文件中包含了要連接的OPC效勞器名稱(chēng)、log文件名稱(chēng)、變量組定義及對(duì)應(yīng)組內(nèi)的變量定義〔本連接庫(kù)最多支持1024個(gè)變量通訊,對(duì)變量組的數(shù)目沒(méi)有限制〕。配置成功返回TRUE。
2、連接OPC效勞器:ConnectServer(OptionalIPAddressAsString)AsBoolean
IPAddress為可選的遠(yuǎn)程O(píng)PC效勞器所屬PC的IP地址,如“”,如果不提供IPAddress參數(shù),那么默認(rèn)為本機(jī)OPC效勞器。連接成功返回TRUE。
3、配置通訊變量〔組態(tài)OPC客戶(hù)機(jī)〕:SetConfiguration()AsBoolean
根據(jù)提供的ini配置文件組態(tài)OPC客戶(hù)機(jī)與效勞器的變量通訊,組態(tài)成功返回TRUE。
4、讀變量數(shù)據(jù):GetData(ItemNameAsString)
ItemName為變量名稱(chēng),必須與ini配置文件中的變量名稱(chēng)一致。本功能返回該變量的實(shí)際數(shù)據(jù)。
5、寫(xiě)變量數(shù)據(jù):WriteData(ItemNameAsString,ItemWriteDataAsVariant)
ItemName為變量名稱(chēng),ItemWriteData為變量數(shù)據(jù)。
三、實(shí)現(xiàn)代碼
1、在VB6.0中新建ActiveXDll工程,如下列圖:
2、在工程菜單中添加引用,如下列圖:
如果系統(tǒng)中沒(méi)有OPCAutomation,你需要安裝注冊(cè)O(shè)PC自動(dòng)化。一般裝了OPC支持的軟件,系統(tǒng)都支持OPC自動(dòng)化。
3、在工程中添加模塊,如下列圖:
模塊API_Function為軟件所需的一些API函數(shù)。
模塊Global_constants為一些系統(tǒng)常量
類(lèi)模塊BCA_OPC為實(shí)現(xiàn)主類(lèi)
類(lèi)模塊ItemInfo和ItemsInfo實(shí)現(xiàn)變量信息的封裝
4、以下為各模塊的程序代碼:
API_Function:
OptionExplicit'----------------------------------
'獲取一個(gè)與給定初始化文件指定域中的一個(gè)鍵相聯(lián)系的整數(shù)值(1)
PublicDeclareFunctionGetPrivateProfileIntLib"kernel32"Alias_
"GetPrivateProfileIntA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,_
ByValnDefaultAsLong,ByVallpFileNameAsString)AsLong
'從一個(gè)初始化文件中獲取指定段的所有鍵和值(2)
PublicDeclareFunctionGetPrivateProfileSectionLib"kernel32"Alias_
"GetPrivateProfileSectionA"(ByVallpAppNameAsString,ByVallpReturnedStringAsString,_
ByValnSizeAsLong,ByVallpFileNameAsString)AsLong
'獲取初始化文件中的制定斷下的一個(gè)字符串(3)
PublicDeclareFunctionGetPrivateProfileStringLib"kernel32"Alias_
"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsAny,_
ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLong,_
ByVallpFileNameAsString)AsLongGlobal_constants:
OptionExplicit
OptionBase1
'Globalconstrants
'------------------------------
GlobalConstEnglish=&H409
GlobalConstOPC_DS_CACHE=1
GlobalConstOPC_DS_DEVICE=2BCA_OPC:
OptionExplicit
OptionBase1'InterfaceObjects接口對(duì)象
'----------------------------------------------------------------------------
'必須使用WithEvents來(lái)申明對(duì)象OPCServer和OPCGroup,
'WithEvents指定申明的對(duì)象用于處理對(duì)象的事件
DimWithEventsServerObjAsOPCServer
'定義OPCServer
DimGroupObjAsOPCGroup
'定義OPCGroup
DimWithEventsGroupCollectionAsOPCGroups'定義OPCGroups
DimItemCollectionAsOPCItems
'定義OPCItems
DimItemObjAsOPCItem
'定義OPCItem
'----------------------------------------------------------------------------
'GlobalVariables全局變量
'----------------------------------------------------------------------------
DimServerNameAsString
'OPC效勞器名稱(chēng)
DimServerConnectedAsBoolean
'OPC效勞器已連接標(biāo)志
'OPCServer和OPCGroup都有ServerHandle和ClientHandle參數(shù);
'ServerHandle用于OPC效勞器定位;ClientHandle用于OPC客戶(hù)端定位;
DimServerGroupHandle()AsLong
'效勞器-組句柄(索引)
DimServerItemHandle()AsLong
'效勞器-條目句柄
DimClientGroupHandle()AsLong
'客戶(hù)機(jī)-組句柄
DimClientItemHandle()AsLong
'客戶(hù)機(jī)-條目句柄
DimDll_is_InitialAsBoolean
'DLL初始化
DimConfiguration_is_SetAsBoolean
'是否已組態(tài)
DimTraceOnAsBoolean
'跟蹤開(kāi)關(guān)
DimTraceFileAsString
'跟蹤文件
DimConfigFileAsString
'組態(tài)文件
DimItemData(1024)AsVariant
'讀取變量數(shù)據(jù)的儲(chǔ)存地址
DimAllItemsInfoAsNewItemsInfo'log文件記錄操作
PrivateFunctionTrace(TraceMsgAsString)
IfTraceOn=TrueThen
DimfsAsObject,fAsObject
DimmHour,mMinute,mSecond,mMSecondAsString
Setfs=CreateObject("Scripting.FileSystemObject")
Setf=fs.OpenTextFile(TraceFile,8,-2)
mHour=Format(Fix(Timer/3600),"00")
mMinute=Format(Fix((Timer-mHour*3600)/60),"00")
mSecond=Format(Fix((Timer-mHour*3600-mMinute*60)),"00")
mMSecond=Format(Fix((Timer-Fix(Timer))*1000),"000")
f.Writeline"["&mHour&":"&mMinute&":"&mSecond&"."&mMSecond&"]
"&TraceMsg
f.Close
Setfs=Nothing
Setf=Nothing
EndIf
EndFunction'(1).DLL初始化
PublicFunctionDll_Initial(strConfigFileAsString)AsBoolean
DimResultAsString*255,fsAsObject,fAsObject
ConfigFile=strConfigFile
GetPrivateProfileString"TRACE","TraceOn",_
"ERROR",Result,255,ConfigFile
IfResult<>"ERROR"Then
IfResult=1Then
GetPrivateProfileString"TRACE","TraceFile",_
"ERROR",Result,255,ConfigFile
IfResult<>"ERROR"Then
TraceFile=Result
Else
TraceFile=App.Path&"\Trace.log"
EndIf
Setfs=CreateObject("Scripting.FileSystemObject")
Setf=fs.CreateTextFile(TraceFile,True)
f.Writeline("***BCA_OPCTraceStarted,BeiChenAutomation2003/ZhangPeng***")
f.Close
TraceOn=True
Else
TraceOn=False
EndIf
Dll_is_Initial=True
Dll_Initial=True
Trace">Dll_Initial"
Trace"<Dll_InitialOK"
Else
MsgBox"無(wú)法找到配置文件:"&strConfigFile,vbOKOnly,"錯(cuò)誤"
Dll_is_Initial=False
Dll_Initial=False
EndIf
EndFunction'(2).連接OPC效勞器
PublicFunctionConnectServer(OptionalIPAddressAsString)AsBoolean
Trace">ConnectServer"
IfDll_is_Initial=FalseThen
Trace"<ConnectServerCancelled,BecauseDll_Initialhasnotbeencalled"
ExitFunction
EndIf
IfNotServerConnectedThen
ServerName=GetServerName
OnErrorGoToErrorHandler
SetServerObj=NewOPCServer
ServerObj.ConnectServerName,IPAddress
ServerConnected=True
Trace"<ConnectServerOK"
Else
Trace"<Serverhasbeenconnected,Pleasedonotconnectitagain"
EndIf
ConnectServer=ServerConnected
ExitFunction
ErrorHandler:
Trace"<ConnectServerError,PleasebesurethatServerisrunning"
ConnectServer=False
EndFunction'(3).組態(tài)OPC客戶(hù)機(jī)
PublicFunctionSetConfiguration()AsBoolean
Trace">SetConfigurationstart..."
IfDll_is_Initial=FalseThen
Trace"<SetConfigurationCancelled,BecauseDll_Initialhasnotbeencalled"
ExitFunction
EndIf
IfServerConnected=FalseThen
Trace"<SetConfigurationCancelled,BecauseConnectServerhasnotbeencalled"
ExitFunction
EndIf
IfConfiguration_is_Set=TrueThen
Trace"<SetConfigurationCancelled,Becauseconfigurationhasbeenset"
ExitFunction
EndIf
'Begintoconfigure
Dimf_retAsLong,ReturnedStringAsString*1024,Valid_ReturnedStringAsString
DimReturnedString1AsString*1024,Valid_ReturnedString1AsString
DimSpace_posAsInteger,GroupNameAsString
DimSpace_pos1,Equal_posAsInteger,ItemNameAsString,ItemIndexAsLong
DimNumItemsAsLong,ItemIDs(1)AsString,ClientHandles(1)AsLong,Serverhandles()AsLong
DimErrors()AsLong
ReturnedString=""
ReturnedString1=""
OnErrorGoToErrorHandler
SetGroupCollection=ServerObj.OPCGroups
GroupCollection.DefaultGroupIsActive=False
f_ret=GetPrivateProfileSection("GROUP",ReturnedString,1024,ConfigFile)
Valid_ReturnedString=Left(ReturnedString,f_ret+1)
DoUntilInStr(Valid_ReturnedString,Chr(0))<0
Space_pos=InStr(Valid_ReturnedString,Chr(0))
GroupName=Left(Valid_ReturnedString,Space_pos-1)
IfGroupName=""Then
GoTonxt3
EndIf
SetGroupObj=GroupCollection.Add(GroupName)
GroupObj.IsSubscribed=False
Trace"<Addgroup:"&GroupName&"OK"
SetItemCollection=GroupObj.OPCItems
ItemCollection.DefaultIsActive=True
f_ret=GetPrivateProfileSection(GroupName,ReturnedString1,1024,ConfigFile)
Valid_ReturnedString1=Left(ReturnedString1,f_ret+1)
DoUntilInStr(Valid_ReturnedString1,Chr(0))<0
Space_pos1=InStr(Valid_ReturnedString1,Chr(0))
ItemName=Left(Valid_ReturnedString1,Space_pos1-1)
IfItemName=""Then
GoTonxt2
EndIf
IfInStr(ItemName,"UpdateRate")>0OrInStr(ItemName,"IsSubscribed")>0Then
GoTonxt1
EndIf
ItemCollection.DefaultRequestedDataType=GetItemDataType(ItemName)
ItemIndex=ItemIndex+1
NumItems=1
ItemIDs(1)=ItemName
ClientHandles(1)=ItemIndex
ItemCollection.AddItemsNumItems,ItemIDs,ClientHandles,Serverhandles,Errors
AllItemsInfo.ItemInfo_AddItemName,GroupName,ItemIndex,Serverhandles(1)
Trace"<AddItem:"&ItemName&"OK"
nxt1:
Valid_ReturnedString1=Mid(Valid_ReturnedString1,Space_pos1+1)
Loop
nxt2:
f_ret=GetPrivateProfileInt(GroupName,"UpdateRate",0,ConfigFile)
GroupObj.UpdateRate=f_ret
Trace"<Setgroup:"&GroupName&"UpdateRate="&f_ret&"OK"
f_ret=GetPrivateProfileInt(GroupName,"IsSubscribed",0,ConfigFile)
GroupObj.IsSubscribed=IIf(f_ret=1,True,False)
GroupObj.IsActive=True
Trace"<Setgroup:"&GroupName&"IsSubscribed="&f_ret&"OK"
Valid_ReturnedString=Mid(Valid_ReturnedString,Space_pos+1)
SetGroupObj=Nothing
SetItemCollection=Nothing
Loop
nxt3:
Trace"<SetConfigurationend"
Configuration_is_Set=True
SetConfiguration=True
ExitFunction
ErrorHandler:
Trace"<SetConfigurationError,Pleasebesurethatconfigfileiscorrect"
Configuration_is_Set=False
EndFunction'獲取效勞器名稱(chēng)
PrivateFunctionGetServerName()AsString
DimResultAsString*255
GetPrivateProfileString"SERVER","Server",_
"ERROR",Result,255,ConfigFile
GetServerName=RemoveSpaces(Result)
EndFunction'獲取效勞器連接狀態(tài)
PrivateFunctionGetConnectStatus()AsBoolean
GetConnectStatus=ServerConnected
EndFunction'功能塊:移除空格
PrivateFunctionRemoveSpaces(ItemAsString)AsString
DimResultAsString
DimiAsInteger
i=1
While(Mid$(Item,i,1)<>Chr(0))
Result=Result&Mid$(Item,i,1)
i=i+1
Wend
RemoveSpaces=Result
EndFunctionPrivateSubClass_Initialize()
Configuration_is_Set=False
Dll_is_Initial=False
ServerConnected=False
EndSub'DLL終止
PrivateSubClass_Terminate()
SetServerObj=Nothing
'釋放ServerObj
SetGroupCollection=Nothing
'釋放GroupCollection
SetItemCollection=Nothing
'釋放ItemCollection
ServerConnected=False
Dll_is_Initial=False
Configuration_is_Set=False
Trace"<Dllisterminate"
EndSub
'全局?jǐn)?shù)據(jù)改變
PrivateSubGroupCollection_GlobalDataChange(ByValTransactionIDAsLong,ByValGroupHandleAsLong,ByValNumItemsAsLong,ClientHandles()AsLong,ItemValues()AsVariant,Qualities()AsLong,TimeStamps()AsDate)
DimiAsInteger,GroupNameAsString,ItemNameAsString
Trace"<==GlobalDataChange!Followingisthedata:"
GroupName=GroupCollection.GetOPCGroup(GroupHandle).Name
Trace"<==GroupName:"&GroupName&"NumberofItems:"&NumItems
Fori=1ToNumItems
ItemData(ClientHandles(i))=ItemValues(i)
Trace"<==Item'sName:"&AllItemsInfo.GetItem_Name(ClientHandles(i))&"Values:"&ItemValues(i)&"ChangedData:"&TimeStamps(i)
Next
Trace"<==GlobalDataChangeEnd"
EndSub
'獲取單個(gè)變量數(shù)據(jù)
PublicFunctionGetData(ItemNameAsString)
Trace">GetDatastart:ItemName="&ItemName
IfDll_is_Initial=FalseThen
Trace"<GetDataCancelled,BecauseDll_Initialhasnotbeencalled"
ExitFunction
EndIf
IfServerConnected=FalseThen
Trace"<GetDataCancelled,BecauseConnectServerhasnotbeencalled"
ExitFunction
EndIf
IfConfiguration_is_Set=FalseThen
Trace"<GetDataCancelled,Becauseconfigurationhasnotbeenset"
ExitFunction
EndIf
DimItemClientHandleAsLong
ItemClientHandle=AllItemsInfo.GetItem_ClientHandle(ItemName)
GetData=ItemData(ItemClientHandle)
Trace"<GetDataOK:ItemData="&GetData
EndFunction'寫(xiě)入單個(gè)變量數(shù)據(jù)
PublicFunctionWriteData(ItemNameAsString,ItemWriteDataAsVariant)
Trace">WriteDatatoWinccstart..."
Trace">ItemName:"&ItemName&"Value:"&ItemWriteData
IfDll_is_Initial=FalseThen
Trace"<WriteDataCancelled,BecauseDll_Initialhasnotbeencalled"
ExitFunction
EndIf
IfServerConnected=FalseThen
Trace"<WriteDataCancelled,BecauseConnectServerhasnotbeencalled"
ExitFunction
EndIf
IfConfiguration_is_Set=FalseThen
Trace"<WriteDataCancelled,Becauseconfigurationhasnotbeenset"
ExitFunction
EndIf
OnErrorGoToErrorHandler
SetGroupObj=GroupCollection.GetOPCGroup(AllItemsInfo.GetItem_Group(ItemName))
SetItemObj=GroupObj.OPCItems.GetOPCItem(AllItemsInfo.GetItem_ServerHandle(ItemName))
ItemObj.WriteItemWriteData
Trace"<WriteDatatoWinccOK"
SetGroupObj=Nothing
SetItemObj=Nothing
ExitFunction
ErrorHandler:
Trace"<WriteDatatoWinccError,PleasemakesureItem'sNameandWrite-dataiscorrect"
SetGroupObj=Nothing
SetItemObj=Nothing
EndFunction
'列舉某個(gè)變量的屬性
PrivateFunctionGetItemProperty(ItemIDAsString)
DimCountAsLong,iAsLong
DimPropertyIDs()AsLong
DimDescriptions()AsString
DimDataTypes()AsInteger
DimPropertyValues()AsVariant
DimErrors()AsLong
ServerObj.QueryAvailablePropertiesItemID,Count,PropertyIDs,Descriptions,DataTypes
ServerObj.GetItemPropertiesItemID,Count,PropertyIDs,PropertyValues,Errors
Trace"=====GetItemIDPropertyStart======"
Fori=1ToCount
Trace"="&PropertyIDs(i)&"
"&Descriptions(i)&"
"&PropertyValues(i)
Next
Trace"=====GetItemIDPropertyEnd======"
EndFunction
'獲取某個(gè)變量的數(shù)據(jù)類(lèi)型
PrivateFunctionGetItemDataType(ItemIDAsString)AsLong
DimCountAsLong
DimPropertyIDs(1)AsLong
DimPropertyValues()AsVariant
DimErrors()AsLong
Count=1
PropertyIDs(1)=1
ServerObj.GetItemPropertiesItemID,Count,PropertyIDs,PropertyValues,Errors
GetItemDataType=PropertyValues(1)
EndFunction
'效勞器關(guān)閉
PrivateSubServerObj_ServerShutDown(ByValReasonAsString)
Trace"!Dllisshutdown,FollowingistheReason:"
Trace"!"&Reason
ServerObj.Disconnect
Configuration_is_Set=False
Dll_is_Initial=False
ServerConnected=False
EndSub
'獲取效勞器連接狀態(tài)
PublicPropertyGetServer_Connected()AsBoolean
Server_Connected=Configuration_is_Set
EndPropertyItemInfo:
OptionExplicitPublicItemNameAsString
PublicGroupNameAsString
PublicItemServerHandleAsLong
PublicItemClientHandleAsLongItemsInfo:
OptionExplicitDimCollection_ItemsInfoAsNewCollection
'定義OPCItem信息PublicFunctionItemInfo_Add(NameAsString,GroupAsString,ClientHandleAsLong,ServerHandleAsLong)
DimInfoAsNewItemInfo
WithInfo
.ItemName=Name
.GroupName=Group
.ItemClientHandle=ClientHandle
.ItemServerHandle=ServerHandle
EndWith
Collection_ItemsInfo.AddInfo
EndFunction'獲取Item屬于的組名
PublicFunctionGetItem_Group(ItemIDAsString)AsString
DimInfoAsItemInfo
ForEachInfoInCollection_ItemsInfo
IfInfo.ItemName=ItemIDThen
GetItem_Group=Info.GroupName
ExitFunction
EndIf
Next
EndFunction'獲取Item的ServerHandle
PublicFunctionGetItem_ServerHandle(ItemIDAsString)AsLong
DimInfoAsItemInfo
ForEachInfoInCollection_ItemsInfo
IfInfo.ItemName=ItemIDThen
GetItem_ServerHandle=Info.ItemServerHandle
ExitFunction
EndIf
Next
EndFunction'獲取Item的ClientHandle
PublicFunctionGetItem_ClientHandle(ItemIDAsString)
DimInfoAsItemInfo
ForEachInfoInCollection_ItemsInfo
IfInfo.ItemName=ItemIDThen
GetItem_ClientHandle=Info.ItemClientHandle
ExitFunction
EndIf
Next
EndFunction'獲取Item的名稱(chēng)
PublicFunctionGetItem_Name(ItemClientHandleAsLong)
DimInfoAsItemInfo
ForEachInfoInCollection_ItemsInfo
IfInfo.ItemClientHandle=ItemClientHandleThen
GetItem_Name=Info.ItemName
ExitFunction
EndIf
Next
EndFunction將以上代碼輸入VB并編譯生成OPC_DLL.dll文件,完成后注冊(cè)。OPC調(diào)用函數(shù)請(qǐng)參閱opcdataaccessautov2-02_76文件。四、應(yīng)用介紹
1、
新建ini配置文件〔保存于系統(tǒng)目錄下〕,如wincc.ini。注意組中定義的變量名稱(chēng)必須存在于OPCServer中!右邊//后的內(nèi)容僅
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房屋置換與家居定制服務(wù)合同范本3篇
- 二零二五年度校園雕塑作品采購(gòu)合同范本3篇
- 2025年度環(huán)境監(jiān)控系統(tǒng)工程合同2篇
- 海南職業(yè)技術(shù)學(xué)院《文獻(xiàn)檢索》2023-2024學(xué)年第一學(xué)期期末試卷
- 襄陽(yáng)汽車(chē)課程設(shè)計(jì)招聘
- 海南師范大學(xué)《物流信息技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度名校學(xué)區(qū)二手房買(mǎi)賣(mài)合同范本2篇
- 二零二五年度國(guó)際貿(mào)易實(shí)務(wù):磋商與訂立合同實(shí)務(wù)操作與法律風(fēng)險(xiǎn)防范手冊(cè)9篇
- 二零二五年度海寧房產(chǎn)買(mǎi)賣(mài)糾紛調(diào)解及法律援助合同3篇
- 2025年度房地產(chǎn)項(xiàng)目銷(xiāo)售代理合同3篇
- 閱讀理解(專(zhuān)項(xiàng)訓(xùn)練)-2024-2025學(xué)年湘少版英語(yǔ)六年級(jí)上冊(cè)
- 民用無(wú)人駕駛航空器產(chǎn)品標(biāo)識(shí)要求
- 2024年醫(yī)院產(chǎn)科工作計(jì)劃例文(4篇)
- 2024-2025學(xué)年九年級(jí)英語(yǔ)上學(xué)期期末真題復(fù)習(xí) 專(zhuān)題09 單詞拼寫(xiě)(安徽專(zhuān)用)
- 無(wú)創(chuàng)通氣基本模式
- 江西省贛州市尋烏縣2023-2024學(xué)年八年級(jí)上學(xué)期期末檢測(cè)數(shù)學(xué)試卷(含解析)
- 《臨床放射生物學(xué)》課件
- 腸造口還納術(shù)手術(shù)配合
- 2024年中考語(yǔ)文試題分類(lèi)匯編:詩(shī)詞鑒賞(學(xué)生版)
- 科學(xué)計(jì)算語(yǔ)言Julia及MWORKS實(shí)踐 課件 3-MWORKS簡(jiǎn)介
- 2024年10月自考04532財(cái)務(wù)會(huì)計(jì)專(zhuān)題試題及答案含解析
評(píng)論
0/150
提交評(píng)論