




已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OPC接口技术,谈英姿tanyz东南大学自控系工业自动化教研室,内容提要,概述OPC基本原理OPCDA接口标准OPCAE接口标准OPCHDA接口标准OPCXML接口标准,OPC基本原理,通用OPC结构及组成对象及接口概述必需的接口定义可选的接口定义服务器地址空间及配置时间同步与顺序发送机制EnumOPC对象属性条目,通用OPC结构及组成,OPC数据访问规范OPC报警和事件规范OPC数据交换规范OPC历史数据访问规范OPC批处理规范OPC安全性规范OPCXML规范,对象及接口概述,OPC对象OPC对象有三个:服务器(OPCServer)、组(OPCGroup)和项(OPCItem)OPC接口,服务器,OPCServer即OPC启动服务器,通过它获得其他对象和服务的起始类,并用于返回OPCGroup类对象。OPCServer级别有多种属性,其中包含一个OPC服务器对象的状态和版本等信息。这种级别中的对象由客户应用创建。IOPCServer接口包含管理OPCGroup级别中的对象的方法。如将组加入服务器或从服务器中删除组的方法(AddGroup,RemoveGroup)。IOPCBrowseServerAddressSpace接口包含查找服务器地址空间的方法。IOPCCommon接口方法用于通知服务器语言的设置和客户机的名称。,标准OPC服务器对象,必需的接口定义,OPC服务器必需的接口有IunknownIOPCServerIOPCCommerIConnectionPointContainer,组(OPCGroup),OPCGroup存储由若干OPCItem组成的Group信息,并用于返回OPCItem类对象。OPCGroup级别管理被称为OPCItem的各个过程变量。IOPCItemMgt接口提供将项加入组或从组中删除项的方法(“AddItem”,“RemoveItem”)。IOPCGroupStateMgt接口的方法用于处理组专用的参数或复制组。,标准OPC组对象,项(OPCItem),OPCItem存储具体Item的定义、数据值、状态值等信息。OPCItem级别的一个对象代表与一个过程变量的连接。该对象的唯一接口是OPCItemDisp。关于OPCItem的信息可以在属性表中找到,例如数值(“Value”)属性或存取路径(“AccessPath”)属性。,OPC项对象,OPC的过程数据构造,OPC项代表了与服务器中的数据的连接。客户程序对OPC项的操作都是通过包容此项的OPC组来进行的,而不是直接把OPC项作为一个对象来操作。每个OPC项都有值(Value)。品质(Quality)和时间戳(TimeStamp)三个属性。,EnumOPC对象属性条目,OPC客户与OPC服务器,自定义接口与自动化接口,OPCAutomationwrapper,Automationclient(VisualBasic,Excel,),custominterface,server,Customclient(C+,.),custominterface,server,自定义接口与自动化接口,自定义接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C语言的客户一般采用定制接口方案;自动化接口使解释性语言和宏语言访问OPC服务器成为可能,采用VB等语言的客户一般采用自动化接口,OPCDA接口标准,数据访问方式DA功能实现过程DA的对象与接口,数据访问方式,DA的同步读取DA的异步读取DA的数据更新DA的数据订阅DA的同步写入DA的异步写入,DA的同步读取,DA的异步读取,DA的数据订阅,数据订阅传输模式,数据源:cache/device,clientapplication(OPCclient),fieldbus,OPCserver,cache,fieldbus,device,fieldbus,device,fieldbusconnection,serversamplesitems(attheRequestedUpdateRate)andputsthemintocache,synchronouscalloverthefieldbustotheenddevice(takesawhile),noneedfor“deviceaccess”whenfieldbusoperatescyclically,FBmanager,FBagent,FBagent,SynchReadreadsthedataeitherfromcache(localtothePC)orreadssynchronousfromthedevice.Writeisalwaystodevice(DA3.0allowswritetocache),DA功能实现过程,OPCDA客户连接到DA服务器,建立OPCGroup和OPCItem;通过Group和Item进行数据访问;处理完毕,关闭连接。,OPCDA对象的层次模型,OPCItem,OPCBrowser,OPCServer,OPCGroups(collection),OPCGroup,OPCItems(collection),OPCItem,OPCItem,OPCGroup,OPCDA初始化连接,findoutexistingOPCservers,connecttothatOPCserver,createanOPCBrowserobjectcreateanOPCGroupsobject,createanOPCServerobject,createanOPCGroupobject,buildarrayofitemscheckingwiththebrowserthattheseitemsexistinthisserver,additemarraytothegroup,activateandsubscribegroup,nextgroup,初始化,myDummyServer.GetOPCServers,myServer.Connect,SetmyBrowser=myServer.BrowserSetmyGroups=myServer.Groups,myServer=newOPCServer,SetmyGroup1=myGroups.AddSetMyItems=MyGroup1.OPCItems,FQItems11=Device1.Temp1ClientHandle11=101ReDimServerHandle1(nrItems)ReDimServerErrors1(nrItems)ReDimValue1(nrItems),myGroup1.AddItems,myGroup1.IsActivemyGroup1.IsSubscribed,Declarations,OptionBase1OPCarraysindicesstartwith1DimWithEventsMyServerAsOPCServerOPCServerObject(Eventsoptional)DimWithEventsMyGroupsAsOPCGroupsOPCGroupCollection(Eventsopt.)DimWithEventsMyGroupAsOPCGroupOPCGroupObjectitemsDimnrItemsAsIntegerDimMyItemsAsOPCItemsOPCItemCollectionObjectDimMyItemAsOPCItemOPCItemObjectDimItemsID(2)AsStringfullyqualifieditems(seelater)DimClientHandles(2)AsLongDimServerHandles()AsLongmustbeadynamicarrayDimServerErrors()AsLongmustbeadynamicarray,Reference:OPCAutomation2.0mustbeincludedintoVisualBasicorC#(ifmissing:copyopcdaauto.dlltoC:WINNTSystem32opddaauto)andregisterit:C:regsvr32C:WINNTSystem32opddaauto.Asimplewaytodoit:installSoftwareToolboxsTopServer(freeware),查找OPC服务器,TheGetOPCServersfunctionappliedtoadummyServerobjectallowtolisttheexistingserversonthisnodeoronanothernode(overDCOM-securitymustbesetcorrectly)TheinformationaboutwhichOPCserversexististakenfromtheregistry,whereithasbeenputbyeachserveratitsinstallationtime。,PrivateSubShowServers(netNodeNameAsString)DimdummyServerAsOPCServerDimServersAsVariantthisisanarrayofstringsDimcntServersAsIntegerSetdummyServer=NewOPCServercreateadummyserverobjectServers=dummyServer.GetOPCServers(netNodeName)returnsallavailableserversForcntServers=LBound(Servers)ToUBound(Servers)displaythenamesMsgBoxServers(cntServers)NextcntServersSetGetserver=Nothingdeletethisobject(wascreatedbyNew)ExitSub,连接到OPC服务器,SetMyServer=NewOPCServercreateserverobjectMyServer.Connect(Matrikon.OPC.Simulation)connecttoMatrikonserver,Beforeconnecting,itissafetocheckthenameoftheserverfromtheserverslist.Also,itispreferabletoincludetheconnectioninaseparateroutinesinceitcanfail:,FunctionServerGetCare(NameAsString,ServerNodeAsString)AsOPCServerOnErrorGoToServerGetCareErrDimMyOPCServerAsNewOPCServerMyOPCServer.ConnectServerName,ServerNodeconnectriskySetServerGetCare=MyOPCServerExitFunctionServerGetCare_Err:errorhandlerifconnectfailsErr.ClearMsgBoxCouldnotconnectSetMyServer=NothingExitFunction,浏览服务器,TheobjectOPCBrowser(oftypecollection)actsasapointertotheserverstree:,DimMyServerAsOPCServerDimMyBrowserAsOPCBrowserDimvNameAsVariantMyServer.ConnectMatrikon.OPC.Simulation,Orionserverandnodename(DCOM)SetMyBrowser=MyServer.CreateBrowsercreateanOPCbrowserMyBrowser.ShowBranchesshowthebranchesForEachvNameInMyBrowserMsgBoxBranch:Tanks!Level,创建OPCGroupsandOPCItems,SetMyGroups=MyServer.OPCGroupscreategroupscollectionSetMyGroup1=MyGroups.Add(GRP1)addgroup,nameprivateSetMyItems=MyGroup1.OPCItemsdefinetheOPCItemsofgroupFQItemIDs(1)=Area2.Tank1.LevelfullyqualifieditemIDClientHandles(1)=5arbitraryFQItemIDs(2)=Area2.Tank1.TemperaturefullyqualifieditemIDClientHandles(2)=6arbitrary(butdifferent)nrItems=2MyItems.AddItems_addstheitemstocollectionnrItems,_inputparameterFQItemIDs,_supplyfullyqualifiedIDClientHandles,_supplyClientHandlesServerHandles,_returnparameterServerHandlesServerErrorsreturnparameterServerErrorsMyGroup1.ClientHandle=1handleofthegroup(nos)!MyGroup1.IsActive=TruenowreadytosendandreceiveMyGroup1.IsSubscribed=Trueandtogenerateevents,TheroleoftheServerHandlesandClientHandleswillbeexplainedlater,客户端的数据结构,FullyQualifiedItemID,ClientHandle,ServerHandle,Channel1.Device1.Temp1,communicatedtoserverbyregisteringgroup,ServerError,Value,Quality,TimeStamp,100,34543,0,123.4,OK,12:09.234,Channel1.Device1.Speed1,102,22532,0,999.8,OK,12:02.214,Channel1.PLC2.Door,203,534676,0,0,OK,12:03.002,Channel1.PLC2.Valve3,204,787234,0,1,OK,12:02.345,Channel1.PLC2.CloseDoor,205,58432,0,0,BAD,12:02.345,returnedbyserverwhenregistering,dynamicchanges(refreshedonchange),Theclientpreparesdatastructuresforitsitemsandgivestheserverthecorrespondingpointerssotheservercanupdatethem.Itemstobewrittenandreadcanbemixedinthesamegroup.Thetypeoftheitem(Boolean,Float,)isimplicit,butknownattheserver,.,.,.,.,.,.,DimthisGroupAsOPCGroupDimcntItemsAsIntegerDimsourceAsIntegerDimserverHandles(2)AsLongDimvalues()AsVariantDimerrors()AsLongserverHandles(1)=ServerHandle(11)copyfromglobalvariablesserverHandles(2)=ServerHandle(14)source=OPCcachecouldalsobeOPCDevicethisGroup.SyncReadsource,nrItems,serverHandles,identifiestheitemstoberead!values,returnsbeadynamicarrayerrorsreturnsadynamicarrayForcntItems=LBound(serverHandles)ToUBound(serverHandles)1.nMsgBoxCStr(cntItems)&:&values(cntItems)NextcntItems,myGroup.SynchRead(),client,Call,Reply,server,Group的同步读,singleItems的异步读,AsyncRead(),AsyncReadComplete(),server,DimWithEventsMyGroup.MyGroup.AsyncReadnrItems,ServerHandles,ServerErrors,TransactionID,CancelID,Call,Reply,client,PrivateSubMygroup_AsyncReadComplete(ByValTransactionIDAsLong,ByValNumItemsAsLong,ClientHandles()AsLong,ItemValues()AsVariant,Qualities()AsLong,TimeStamps()AsDate,Errors()AsLong)MsgBox(AsyncReadComplete)EndSub,AsynchronousreadseparatesCallandReply.CallsuppliestheServerHandlesReplyreturnsthecorrespondingClientHandles,AsyncRead(source=device),AsyncReadComplete(),server,Call,Reply,client,AsyncRead(source=cache),AsyncRead(source=device),AlthoughtheAsynchReadCompletecarriestheClientHandleofeachitem,itdoesnottellwhichAsynchReadcausedtheAsynchReadCompleteeventtofire.,CallandReplyarelinkedbytheTransactionID:thisIDisreturnedinAsynchReadComplete。Itcanalsobeusedtocanceltheoperation,AsyncCancel(),AsyncCancelComplete(),TransactionID,Reading(byevents)theOPCgroup,DimWithEventsMyGroup.PrivateSubMyGroup_DataChange(_ByValTransactionIDAsLong,_ByValNrItemsAsLong,_ClientHandles()AsLong,_returnedbytheservertotheclientItemValues()AsVariant,_Qualities()AsLong,_TimeStamps()AsDate)DimcntItemsAsIntegerForcntItems=LBound(ClientHandles)ToUBound(ClientHandles)index1.nTextValue(cntItems-1).Text=ItemValues(cntItems)displayTextTimeStamp(cntItems-1).Text=DateAdd(h,9,TimeStamps(cntItems)TextQuality(cntItems-1).Text=Qualities(cntItems)NextcntItemsEndSub,ThisfunctioniscalledeachtimeaniteminthegroupchangesTheClientHandles(here:5and6)identifiesthevariables,notthe“fullyqualifieditemID”ThevaluesaredisplayedintheTextValue,TextTimeStampandTextQualityfields.Therefreshrateisgiveninthegroupdefinition.,GroupsEvents,AlthoughtransmissionbygroupsismoreefficientthanAsyncRead,itcanbeimprovedbyusingGroupsEvents(GlobalDataChange)Thiseventisfiredwheneveravariableofagroupchanges.IfthegroupissubscribedalsotoaGroupEvent(DataChange),I.e.ifthegroupisdeclaredWithEvents,thenbothEventswillbefired.Theapplicationmustsortoutthegroupsandtheitems.,GlobalDataChange,DimWithEventsMyGroupsAsOPCGroups.PrivateSubMyGroups_GlobalDataChange(ByValTransactionIDAsLong,=0ifcalledbyRefreshByValGroupHandleAsLong,ByValNumItemsAsLong,ClientHandles()AsLong,identifiestheitemsItemValues()AsVariant,valueoftheitemsQualities()AsLong,valueoftheitemsTimeStamps()AsDate)timestampsoftheitemsSelectCaseGroupHandledependingonthegroup.Case1treatgroup1Case2treatgroup2,TheGlobalDataChangeeventisfiredwhenanyiteminagroupchanged.(ifGroupsisalsowithevents,thecorrespondingGroup_DataChangewillalsobecalled),OPCDA:ServerEvents,DimWithEventsMyServerAsOPCServerdefinetheevent.PrivateSubMyserver_ServerShutDown(ByValReasonAsString)MsgBoxmyOPCServer&MyServer.ServerName&quitEndSub,Thiseventsignalstotheclientthattheservershutdown.TheclientmustdeclareitsserverWithEvents“andprovidethecorrespondingeventSubroutineThisshouldstopallactions,otherwiseexceptionswilloccur.,OPC的断开,PrivateSubServerShutdownDimdummyServerAsOPCServerDimServersAsVariantthisisanarrayofstringsDimcntServersAsIntegerSetmyGroup1=NothingcreateadummyserverobjectSetmyGroups=NothingreturnsallavailableserversMyServer.RemoveMyServer.RemoveAllGroupsMyServer.Disconnectdeletethisobject(wascreatedbyNew)SetMyServer=Nothing,Tospeedupconnection/disconnection,anOPCserverremembersitsgroupsandclientswhenaclientdisconnects.Todothis,anOPCserverinitialisesitsstructureswithaclientcounterof2,insteadof1.Therefore,itisimperativetoshutdownexplicitlytheserver,otherwiselinkswillsubside(andyouwillhavekilltheservertoclearthem).,OPCDA的类库,TheOPCDAspecificationisnotformal,conformancecanhardlybecheckedagainstthisdocument.Toensurethatthestandardisobserved,theOPCfoundationdistributesonitswebsitetheDLLs(opcdaauto.dll,opccomn_ps,)thatcontainthetypelibrariestoaccesstheOPCserver.Thevendorsarenotcompelledtoimplementallfeatures.Forinstance,thedescriptionofthevariablesisseldomused.CallingunimplementedfunctionscausesexceptionsthatmustbecaughtinVisualBasicwithOnErrorstatements.ThereexistthreeversionsofDA,1.0,2.0and3.0,thatbehavedifferently,however,olderserversdonothaveapropertyindicatingwhichversiontheysupport.,OPCAE接口标准,AE相关概念AE的组态AE的目的AE通信模式事件的种类报警的条件报警确认,AE相关概念,AneventisageneralchangeofstatethatisrelevanttotheOPCserver.Aneventsignalachange:1)inthefielddevice(productionstarted)2)intheOPCserver(alarmacknowledged)3)intheapplication(operatoraction)AnalarmisastateoftheprocessthatrequiresattentionandisrelevanttotheOPCserver.Analarmisrepresentedbyanalarmcondition,(orshort:condition),astatemachineindicatingifthealarmhasbeenenabled,triggeredoracknowledged.,AE相关概念,Aneventoranalarmdoesnottransmitanalogueprocessvalues,buttheytransmitinformationabouttheirorigin,thetimeoftheiroccurrenceandamessageintendedforahumanoperator.Alarmsandeventsmaynotgetlost(contrarilytoOPCDA,whichdoesnotguaranteecompleteness)Alarmsandeventarepreciselytime-stampedbytheirsource,(contrarilytoprocessvariables,whicharetime-stampedbythereceivingOPCserver).,controller,OPCAECliente.g.eventlogger,OPCAEServer,e.g.Ethernet,controllers,fielddevices,OPCAECliente.g.alarmprinter,OPCA&Especifiedinterface,plantmeasurementpoints,eventnotification,AnOPCAEServerisconfiguredusingtheinformationcomingfromthedevelopmenttoolsforthecontrollers,events,EventsdefinedinthecontrollersaremirroredtotheOPCAEserver,controller,fieldbus,AE的组态,AE的目的,Thecontrollers(PLC)generateeventsinresponsetochangesintheplantvariablestogetherwiththeirprecisetimeofoccurrence,type,severityandassociatedmessageforthehumanoperator.AnOPCEventserverregisterstheseeventsandmakesthemavailabletoseveralclients.Aparticularclassofeventsarethealarms,whicharedetailedeventsthatmayrequireacknowledgement.,AE的功能,TheOPCAlarms&EventsInterfacegivesaccesstotheOPCEventserver,allowingto:-browsetheOPCA&EServerforpredefinedevents.-enableordisablealarmsandevents-subscribetoalarmsandeventsofinterest-receivetheeventandalarmnotificationswiththeassociatedattributes-acknowledgealarms,AE通信模式,OPCAEworksaccordingtothe“messagepassing”paradigm,contrarilytoOPCDA,thatworksaccordingtothesharedmemoryparadigm.Thismeansthataneventiskeptinaqueueuntilallclientshavereadit(ortimedout).Theserverguaranteesthatdifferentclientswillseealleventsinthesamesequence.,OPCAEClient,OPCAEClient,OPCAEServer,12:3423.114,12:3432.334,报警与事件的显示,Alarmsandeventsareusuallydisplayeddifferentlyonanoperatorscreen.-Eventsaredisplayedinaneventlistthatcanbecomequitelong(typically1000entries),entriesarenotclearedwhenthesourceoftheeventreturnstonormal-Alarmsaredisplayedinashortlist(typically50alarms)appearancechangeswhenthealarmisacknowledged,analarmlineisclearedwhenthealarmsignaliscleared.,Ackcheckbox,Server的组成,Areas,Events,Conditions(alarmsonly),Subconditions(alarmsonly),A2,A23,E1,C2,SC3,SC1,SC1,E2,simple,conditionrelated,A24,C2,SC3,SC1,SC1,E2,conditionrelated,S2,Sources(objects),E1,S1,E2,S3,Aneventisidentifiedbyasource(ownerobjectinthecontroller)andaneventnamethiscombinationmustbeuniqueintheAEServer.,C2,SC1,E3,conditionrelated,tracking,branches,properties,leaves,BrowsingtheAEServer,Area1,Area52,Area2,Area5,Area51,Source1,Source2,Source3,AlarmsandEventareorganizedbyarea,whichthemselvesmaycontainotherareas.ContrarilytobranchesinOPCDA,areaandsourceshavepropertiesthatallowtodisableorenableeventsoralarmsbyareaorbysource,correspondingtopartsoftheplants,roomsorspecificequipmentoftheplant.,root,Browsingmethods,LikeallotherOPCServers,anOPCA&Epresentsaninterfacethatallowstheclienttobrowsetheservertoexploreitsstructure,withthemethods:BrowseOPCAreaChangeBrowsePosition(up,down,root)GetQualifiedAreaNameGetQualifiedSourceNameThereisnoGetQualifiedItemID,sincetheconditionnameisknownfromthesource.,事件的种类,OPCAEdefinesthreekindsofevents:simple:processcontrolsystemrelatedevents(changeofabooleanvariable)condition-related:notifiesachangeofanalarmcondition(CLEARED,ACKNOWLEDGED),(seelater)tracking-related:originoutsideoftheprocess(e.g.operatorintervention),Event-identification,Tank1,Tank2,Tank3,event,HiLevelCond,HiLevelCond,Aneventisidentifiedby-itssource(theobjectthatgeneratestheevent.e.g.Tank1)and-theeventname(whichcanbethesameasinanotherobject,e.g.HiLevelCond),event,HiLevelCond,event,event,LoLevelCond,LoLevelCond,event,LOLevelCond,event,EventPLCFunctionblock,eventsignal(booleanexpression)isanexternalsignaltobeused?signalnameforexternalsignal(20characters)nameofthesource(30characters)message(60characters),SimpleEventfunctionblocksinacontrollerareusedtosignalasimpleevent.Theeventisidentifiedbytheconcatenationofthenameofthecontainingobject(SrcName)andtheeventhandlingfunctionblockname(here:SimpleEventDetector_1).Thesourcenamecanbethatofthecontainingcodemodule(ownerobject),assumingthataplantobjectisrepresentedbyacodemodule.,nameoftheevent,Events-Notification,LevelSwitch,OPCAEServer,timestamp,AEClient,eventnotification,Tank1LevelHigh_SimpleEvent(source,timestamp,message,severity,category),EventFB,Controller,Plant,Tank1,message,queue,Events-TimeStamp,Therearethreeplaceswhereeventscanbetime-stamped:-atthedevicethatoriginallyproducedthedata(externalevent-low-levelevent)allowingSequence-Of-Eventswithahighresolution,downtomicroseconds-atthecontroller,(internalevent)usingthecontrollersclocktotime-stampmessagesgivingprecisionnotgreaterthantheperiodofthetasks,about1ms.-attheOPCServer,whenaneventmessagearrives(trackingevents)notmoreprecisethanDA,about10ms),TheOPCservercanbeconfiguredtoregisterthetimestampattheinstantoftheeventtransition(positiveornegative)andtheinstantoftheacknowledgement.,PropertiesofanEvent-object,PropertyMeaningSourcesourceobject(area+source)TimetimeofoccurrenceMessageassociatedmessagefortheoperatorEventCategoryuser-definedSeveritypriority(1.1000)OPCEventAttributeConditionNamenameoftheconditionwithinthesourceSubConditionnameoftheactivesubcondition(subconditionsareexclusive)ChangeActiveStateChangeAckStateChangeEnableStateChangeQualityChangeSeverityChangeSubConditionChangeMessageChangeAttributeConditionActionConditionAcknowleddgedQualityAckRequiredActiveTimeCookieserverhandleusedforacknowledgementofalarmsActorIDidentifiedwhoacknowledgedthealarm(forclient-sideacknowledgement),allevents,condition-relatedevents,报警的条件,An(alarm)conditionisanamedstatemachinethatdescribesthestateofanalarmTheconditionstateisdefinedbythreevariables:Enabled:theconditionisallowedtosendeventnotificationsActive:thealarmsignalistrueAcknowledged:thealarmhasbeenacknowledged,Alarmsignal(e.g.FIC101.PV100ANDFIC101.PV150),Acknowledgementsignal(apositivetransitionofabooleanvariable),Conditionstate,Enable(posit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级磨工考试试题及答案
- 浮选药剂工岗位操作技能考核试卷及答案
- 水(油)压机锻造工效率提升考核试卷及答案
- 孤残儿童护理员特殊工艺考核试卷及答案
- 坯布缝接工抗压考核试卷及答案
- 2025年茶文化专业考试题及答案
- 2025年肝炎如何预防题库及答案
- 大班造句试卷题目及答案
- 粉末冶金制品制造工四新考核试卷及答案
- 印刷设备电气装调工协同考核试卷及答案
- 机关档案管理工作培训课件
- 生物武器伤害及其防护课件
- 简约大气商业计划书项目融资模板
- 内经选读上古天真论课件
- GJB9001C标准内审员考试自测题试题含答案
- 一、长方体和正方体表面涂色的
- GB∕T 36667-2018 船舶和海上技术 船舶系泊和拖带设备舷内带缆桩(钢板型)
- 猪肉采购服务方案(完整版)
- kinetix6200和6500模块化多轴伺服驱动器用户手册
- 【图文】GB8624-2012建筑材料及制品燃烧性能分级(精)
- “日本经济”课程教学大纲
评论
0/150
提交评论