




已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选,1,OPC接口技术,谈英姿tanyz东南大学自控系工业自动化教研室,精选,2,内容提要,概述OPC基本原理OPCDA接口标准OPCAE接口标准OPCHDA接口标准OPCXML接口标准,精选,3,OPC基本原理,通用OPC结构及组成对象及接口概述必需的接口定义可选的接口定义服务器地址空间及配置时间同步与顺序发送机制EnumOPC对象属性条目,精选,4,通用OPC结构及组成,OPC数据访问规范OPC报警和事件规范OPC数据交换规范OPC历史数据访问规范OPC批处理规范OPC安全性规范OPCXML规范,精选,5,对象及接口概述,OPC对象OPC对象有三个:服务器(OPCServer)、组(OPCGroup)和项(OPCItem)OPC接口,精选,6,服务器,OPCServer即OPC启动服务器,通过它获得其他对象和服务的起始类,并用于返回OPCGroup类对象。OPCServer级别有多种属性,其中包含一个OPC服务器对象的状态和版本等信息。这种级别中的对象由客户应用创建。IOPCServer接口包含管理OPCGroup级别中的对象的方法。如将组加入服务器或从服务器中删除组的方法(AddGroup,RemoveGroup)。IOPCBrowseServerAddressSpace接口包含查找服务器地址空间的方法。IOPCCommon接口方法用于通知服务器语言的设置和客户机的名称。,精选,7,标准OPC服务器对象,精选,8,必需的接口定义,OPC服务器必需的接口有IunknownIOPCServerIOPCCommerIConnectionPointContainer,精选,9,组(OPCGroup),OPCGroup存储由若干OPCItem组成的Group信息,并用于返回OPCItem类对象。OPCGroup级别管理被称为OPCItem的各个过程变量。IOPCItemMgt接口提供将项加入组或从组中删除项的方法(“AddItem”,“RemoveItem”)。IOPCGroupStateMgt接口的方法用于处理组专用的参数或复制组。,精选,10,标准OPC组对象,精选,11,项(OPCItem),OPCItem存储具体Item的定义、数据值、状态值等信息。OPCItem级别的一个对象代表与一个过程变量的连接。该对象的唯一接口是OPCItemDisp。关于OPCItem的信息可以在属性表中找到,例如数值(“Value”)属性或存取路径(“AccessPath”)属性。,精选,12,OPC项对象,精选,13,OPC的过程数据构造,OPC项代表了与服务器中的数据的连接。客户程序对OPC项的操作都是通过包容此项的OPC组来进行的,而不是直接把OPC项作为一个对象来操作。每个OPC项都有值(Value)。品质(Quality)和时间戳(TimeStamp)三个属性。,精选,14,EnumOPC对象属性条目,精选,15,OPC客户与OPC服务器,精选,16,自定义接口与自动化接口,OPCAutomationwrapper,Automationclient(VisualBasic,Excel,),custominterface,server,Customclient(C+,.),custominterface,server,精选,17,自定义接口与自动化接口,自定义接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C语言的客户一般采用定制接口方案;自动化接口使解释性语言和宏语言访问OPC服务器成为可能,采用VB等语言的客户一般采用自动化接口,精选,18,OPCDA接口标准,数据访问方式DA功能实现过程DA的对象与接口,精选,19,数据访问方式,DA的同步读取DA的异步读取DA的数据更新DA的数据订阅DA的同步写入DA的异步写入,精选,20,DA的同步读取,精选,21,DA的异步读取,精选,22,DA的数据订阅,精选,23,数据订阅传输模式,精选,24,数据源: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),精选,25,DA功能实现过程,OPCDA客户连接到DA服务器,建立OPCGroup和OPCItem;通过Group和Item进行数据访问;处理完毕,关闭连接。,精选,26,OPCDA对象的层次模型,OPCItem,OPCBrowser,OPCServer,OPCGroups(collection),OPCGroup,OPCItems(collection),OPCItem,OPCItem,OPCGroup,精选,27,OPCDA初始化连接,findoutexistingOPCservers,connecttothatOPCserver,createanOPCBrowserobjectcreateanOPCGroupsobject,createanOPCServerobject,createanOPCGroupobject,buildarrayofitemscheckingwiththebrowserthattheseitemsexistinthisserver,additemarraytothegroup,activateandsubscribegroup,nextgroup,精选,28,初始化,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,精选,29,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),精选,30,查找OPC服务器,TheGetOPCServersfunctionappliedtoadummyServerobjectallowtolisttheexistingserversonthisnodeoronanothernode(overDCOM-securitymustbesetcorrectly)TheinformationaboutwhichOPCserversexististakenfromtheregistry,whereithasbeenputbyeachserveratitsinstallationtime。,PrivateSubShowServers(netNodeNameAsString)DimdummyServerAsOPCServerDimServersAsVariantthisisanarrayofstringsDimcntServersAsIntegerSetdummyServer=NewOPCServercreateadummyserverobjectServers=dummyServer.GetOPCServers(netNodeName)returnsallavailableserversForcntServers=LBound(Servers)ToUBound(Servers)displaythenamesMsgBoxServers(cntServers)NextcntServersSetGetserver=Nothingdeletethisobject(wascreatedbyNew)ExitSub,精选,31,连接到OPC服务器,SetMyServer=NewOPCServercreateserverobjectMyServer.Connect(Matrikon.OPC.Simulation)connecttoMatrikonserver,Beforeconnecting,itissafetocheckthenameoftheserverfromtheserverslist.Also,itispreferabletoincludetheconnectioninaseparateroutinesinceitcanfail:,FunctionServerGetCare(NameAsString,ServerNodeAsString)AsOPCServerOnErrorGoToServerGetCareErrDimMyOPCServerAsNewOPCServerMyOPCServer.ConnectServerName,ServerNodeconnectriskySetServerGetCare=MyOPCServerExitFunctionServerGetCare_Err:errorhandlerifconnectfailsErr.ClearMsgBoxCouldnotconnectSetMyServer=NothingExitFunction,精选,32,浏览服务器,TheobjectOPCBrowser(oftypecollection)actsasapointertotheserverstree:,DimMyServerAsOPCServerDimMyBrowserAsOPCBrowserDimvNameAsVariantMyServer.ConnectMatrikon.OPC.Simulation,Orionserverandnodename(DCOM)SetMyBrowser=MyServer.CreateBrowsercreateanOPCbrowserMyBrowser.ShowBranchesshowthebranchesForEachvNameInMyBrowserMsgBoxBranch:Tanks!Level,精选,35,创建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,精选,36,客户端的数据结构,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,.,.,.,.,.,.,精选,37,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的同步读,精选,38,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,精选,39,AsyncRead(source=device),AsyncReadComplete(),server,Call,Reply,client,AsyncRead(source=cache),AsyncRead(source=device),AlthoughtheAsynchReadCompletecarriestheClientHandleofeachitem,itdoesnottellwhichAsynchReadcausedtheAsynchReadCompleteeventtofire.,CallandReplyarelinkedbytheTransactionID:thisIDisreturnedinAsynchReadComplete。Itcanalsobeusedtocanceltheoperation,AsyncCancel(),AsyncCancelComplete(),TransactionID,精选,40,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.,精选,41,GroupsEvents,AlthoughtransmissionbygroupsismoreefficientthanAsyncRead,itcanbeimprovedbyusingGroupsEvents(GlobalDataChange)Thiseventisfiredwheneveravariableofagroupchanges.IfthegroupissubscribedalsotoaGroupEvent(DataChange),I.e.ifthegroupisdeclaredWithEvents,thenbothEventswillbefired.Theapplicationmustsortoutthegroupsandtheitems.,精选,42,GlobalDataChange,DimWithEventsMyGroupsAsOPCGroups.PrivateSubMyGroups_GlobalDataChange(ByValTransactionIDAsLong,=0ifcalledbyRefreshByValGroupHandleAsLong,ByValNumItemsAsLong,ClientHandles()AsLong,identifiestheitemsItemValues()AsVariant,valueoftheitemsQualities()AsLong,valueoftheitemsTimeStamps()AsDate)timestampsoftheitemsSelectCaseGroupHandledependingonthegroup.Case1treatgroup1Case2treatgroup2,TheGlobalDataChangeeventisfiredwhenanyiteminagroupchanged.(ifGroupsisalsowithevents,thecorrespondingGroup_DataChangewillalsobecalled),精选,43,OPCDA:ServerEvents,DimWithEventsMyServerAsOPCServerdefinetheevent.PrivateSubMyserver_ServerShutDown(ByValReasonAsString)MsgBoxmyOPCServer&MyServer.ServerName&quitEndSub,Thiseventsignalstotheclientthattheservershutdown.TheclientmustdeclareitsserverWithEvents“andprovidethecorrespondingeventSubroutineThisshouldstopallactions,otherwiseexceptionswilloccur.,精选,44,OPC的断开,PrivateSubServerShutdownDimdummyServerAsOPCServerDimServersAsVariantthisisanarrayofstringsDimcntServersAsIntegerSetmyGroup1=NothingcreateadummyserverobjectSetmyGroups=NothingreturnsallavailableserversMyServer.RemoveMyServer.RemoveAllGroupsMyServer.Disconnectdeletethisobject(wascreatedbyNew)SetMyServer=Nothing,Tospeedupconnection/disconnection,anOPCserverremembersitsgroupsandclientswhenaclientdisconnects.Todothis,anOPCserverinitialisesitsstructureswithaclientcounterof2,insteadof1.Therefore,itisimperativetoshutdownexplicitlytheserver,otherwiselinkswillsubside(andyouwillhavekilltheservertoclearthem).,精选,45,OPCDA的类库,TheOPCDAspecificationisnotformal,conformancecanhardlybecheckedagainstthisdocument.Toensurethatthestandardisobserved,theOPCfoundationdistributesonitswebsitetheDLLs(opcdaauto.dll,opccomn_ps,)thatcontainthetypelibrariestoaccesstheOPCserver.Thevendorsarenotcompelledtoimplementallfeatures.Forinstance,thedescriptionofthevariablesisseldomused.CallingunimplementedfunctionscausesexceptionsthatmustbecaughtinVisualBasicwithOnErrorstatements.ThereexistthreeversionsofDA,1.0,2.0and3.0,thatbehavedifferently,however,olderserversdonothaveapropertyindicatingwhichversiontheysupport.,精选,46,OPCAE接口标准,AE相关概念AE的组态AE的目的AE通信模式事件的种类报警的条件报警确认,精选,47,AE相关概念,AneventisageneralchangeofstatethatisrelevanttotheOPCserver.Aneventsignalachange:1)inthefielddevice(productionstarted)2)intheOPCserver(alarmacknowledged)3)intheapplication(operatoraction)AnalarmisastateoftheprocessthatrequiresattentionandisrelevanttotheOPCserver.Analarmisrepresentedbyanalarmcondition,(orshort:condition),astatemachineindicatingifthealarmhasbeenenabled,triggeredoracknowledged.,精选,48,AE相关概念,Aneventoranalarmdoesnottransmitanalogueprocessvalues,buttheytransmitinformationabouttheirorigin,thetimeoftheiroccurrenceandamessageintendedforahumanoperator.Alarmsandeventsmaynotgetlost(contrarilytoOPCDA,whichdoesnotguaranteecompleteness)Alarmsandeventarepreciselytime-stampedbytheirsource,(contrarilytoprocessvariables,whicharetime-stampedbythereceivingOPCserver).,精选,49,controller,OPCAECliente.g.eventlogger,OPCAEServer,e.g.Ethernet,controllers,fielddevices,OPCAECliente.g.alarmprinter,OPCA&Especifiedinterface,plantmeasurementpoints,eventnotification,AnOPCAEServerisconfiguredusingtheinformationcomingfromthedevelopmenttoolsforthecontrollers,events,EventsdefinedinthecontrollersaremirroredtotheOPCAEserver,controller,fieldbus,AE的组态,精选,50,AE的目的,Thecontrollers(PLC)generateeventsinresponsetochangesintheplantvariablestogetherwiththeirprecisetimeofoccurrence,type,severityandassociatedmessageforthehumanoperator.AnOPCEventserverregisterstheseeventsandmakesthemavailabletoseveralclients.Aparticularclassofeventsarethealarms,whicharedetailedeventsthatmayrequireacknowledgement.,精选,51,AE的功能,TheOPCAlarms&EventsInterfacegivesaccesstotheOPCEventserver,allowingto:-browsetheOPCA&EServerforpredefinedevents.-enableordisablealarmsandevents-subscribetoalarmsandeventsofinterest-receivetheeventandalarmnotificationswiththeassociatedattributes-acknowledgealarms,精选,52,AE通信模式,OPCAEworksaccordingtothe“messagepassing”paradigm,contrarilytoOPCDA,thatworksaccordingtothesharedmemoryparadigm.Thismeansthataneventiskeptinaqueueuntilallclientshavereadit(ortimedout).Theserverguaranteesthatdifferentclientswillseealleventsinthesamesequence.,OPCAEClient,OPCAEClient,OPCAEServer,12:3423.114,12:3432.334,精选,53,报警与事件的显示,Alarmsandeventsareusuallydisplayeddifferentlyonanoperatorscreen.-Eventsaredisplayedinaneventlistthatcanbecomequitelong(typically1000entries),entriesarenotclearedwhenthesourceoftheeventreturnstonormal-Alarmsaredisplayedinashortlist(typically50alarms)appearancechangeswhenthealarmisacknowledged,analarmlineisclearedwhenthealarmsignaliscleared.,Ackcheckbox,精选,54,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,精选,55,BrowsingtheAEServer,Area1,Area52,Area2,Area5,Area51,Source1,Source2,Source3,AlarmsandEventareorganizedbyarea,whichthemselvesmaycontainotherareas.ContrarilytobranchesinOPCDA,areaandsourceshavepropertiesthatallowtodisableorenableeventsoralarmsbyareaorbysource,correspondingtopartsoftheplants,roomsorspecificequipmentoftheplant.,root,精选,56,Browsingmethods,LikeallotherOPCServers,anOPCA&Epresentsaninterfacethatallowstheclienttobrowsetheservertoexploreitsstructure,withthemethods:BrowseOPCAreaChangeBrowsePosition(up,down,root)GetQualifiedAreaNameGetQualifiedSourceNameThereisnoGetQualifiedItemID,sincetheconditionnameisknownfromthesource.,精选,57,事件的种类,OPCAEdefinesthreekindsofevents:simple:processcontrolsystemrelatedevents(changeofabooleanvariable)condition-related:notifiesachangeofanalarmcondition(CLEARED,ACKNOWLEDGED),(seelater)tracking-related:originoutsideoftheprocess(e.g.operatorintervention),精选,58,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,精选,59,EventPLCFunctionblock,eventsignal(booleanexpression)isanexternalsignaltobeused?signalnameforexternalsignal(20characters)nameofthesource(30characters)message(60characters),SimpleEventfunctionblocksinacontrollerareusedtosignalasimpleevent.Theeventisidentifiedbytheconcatenationofthenameofthecontainingobject(SrcName)andtheeventhandlingfunctionblockname(here:SimpleEventDetector_1).Thesourcenamecanbethatofthecontainingcodemodule(ownerobject),assumingthataplantobjectisrepresentedbyacodemodule.,nameoftheevent,精选,60,Events-Notification,LevelSwitch,OPCAEServer,timestamp,AEClient,eventnotification,Tank1LevelHigh_SimpleEvent(source,timestamp,message,severity,category),EventFB,Controller,Plant,Tank1,message,queue,精选,61,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.,精选,62,PropertiesofanEvent-object,PropertyMeaningSourcesourceobject(area+source)TimetimeofoccurrenceMessageassociatedmessagefortheoperatorEventCategoryuser-definedSeveritypriority(1.1000)OPCEventAttributeConditionNamenameoftheconditionwithinthesourceSubConditionnameoftheactivesubcondition(subconditionsareexclusive)ChangeActiveStateChangeAckStateChangeEnableStateChangeQualityChangeSeverityChangeSubConditionChangeMessageChangeAttributeConditionActionConditionAcknowleddgedQualityAckRequiredActiveTimeCookieserverhandleusedforacknowledgementofalarmsActor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平面向量的内积获奖课件
- FFP-104-生命科学试剂-MCE
- F4-Trp-4-5-6-7-Tetrafluoro-L-tryptophan-生命科学试剂-MCE
- 农发行楚雄彝族自治州禄丰县2025秋招无领导模拟题角色攻略
- 河南郑州电子信息职业技术学院招聘笔试真题2024
- 平车运送法课件
- 2025年辽宁公务员真题
- 2025年物联网技术在智慧农业中的应用与市场前景报告
- 平衡波倒立入门课件
- 农发行唐山市迁安市2025秋招笔试价值观测评题专练及答案
- 2025公司应急预案演练计划(5篇)
- 医疗机构医院全员培训制度
- 2025仓库保管员试题及答案
- 生猪养殖场实施方案
- 矛盾纠纷化解培训课件
- 2025年成人高考语文试题及答案
- DB11-T 2103.14-2025 社会单位和重点场所消防安全管理规范 第14部分:电动汽车充电站
- 病毒感染课件
- 涉案财物处置培训
- 等离子切割机使用培训
- 芳香疗法考试试题及答案
评论
0/150
提交评论