TcCOM基本概念與說明_第1頁
TcCOM基本概念與說明_第2頁
TcCOM基本概念與說明_第3頁
TcCOM基本概念與說明_第4頁
TcCOM基本概念與說明_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第1頁TTcCOM基本概念與說明作者:余洋職務(wù):技術(shù)支持工程師郵箱:yang.yu@日期:2023-08-04摘要:TcCOM基于COM(MicrosoftWindows世界的組件對象模型),旨在模塊化不同的組件。一個驅(qū)動程序可以由一個或者多個TcCOM模塊組成。附件:序號文件名備注歷史版本:免責(zé)聲明:我們已對本文檔描述的內(nèi)容做測試。但是差錯在所難免,無法保證絕對正確并完全滿足您的使用需求。本文檔的內(nèi)容可能隨時更新,如有改動,恕不事先通知,也歡迎您提出改進建議。參考信息:目錄1. TcCom中的交互流程 31.1. 模塊ID 32. TcCom接口說明 33. TcCom中模塊的使用壽命(周期) 44. TcCom中模塊的屬性 45. TcCom模塊狀態(tài)機(TwinCATModuleStateMachine) 56. TcCom中模塊的通訊 76.1. IO映射 76.2. IO數(shù)據(jù)指針 76.3. 接口關(guān)聯(lián) 76.4. ADS通訊 7

TcCom中的交互流程首先是不同的TcCOM類,首先這些需要被創(chuàng)建實例。實例之間可以通過方法調(diào)用交互,實例需要通過objectserver實現(xiàn)。(objectserver是TwinCAT系統(tǒng)中的一個核心組件,它充當(dāng)了一個中央服務(wù)器的角色,用于管理和協(xié)調(diào)系統(tǒng)中的對象)類的實例與ObjServer訪問是通過TcQueryInterface交互(TcQueryInterface是TwinCAT中的一個函數(shù),用于查詢對象是否實現(xiàn)了指定的接口,并獲取該接口的引用)。模塊ID模塊自身會帶有ID,TcCOM使用的ID有兩種:GUIDs:ModulIDs,ClassIDsandInterfaceIDs.32bitlongintegers:ParameterIDs,ObjectIDs,ContextIDs,CategoryID.TcCom接口說明接口是TcCOM非常很重要的組成部分?;赥winCAT規(guī)范,所有接口都派生自基本接口ItcUnknown。(ItcUnknown提供了TcQueryInterface和控制模塊生命周期的服務(wù))因此,每個模塊都有一些固定的接口:ITcCyclic:由模塊實現(xiàn),這些模塊稱為循環(huán)(“CycleUpdate”)。該模塊可以通過TwinCAT任務(wù)的ITcCyclicCaller接口注冊以獲取循環(huán)調(diào)用。ITcADI:可用于訪問模塊的數(shù)據(jù)區(qū)域。ITcWatchSource:用于ADS設(shè)備通知和其他功能。ITcTask:由實時系統(tǒng)任務(wù)實現(xiàn),提供有關(guān)周期時間,優(yōu)先級和其他任務(wù)信息的信息。ITComObjectServer:接口由ObjectServer實現(xiàn),并由所有模塊引用。TcCom中模塊的使用壽命(周期)模塊的使用壽命通過參考計數(shù)器(RefCounter)確定。每當(dāng)查詢模塊接口時,參考計數(shù)器都會遞增。釋放接口時,計數(shù)器遞減。當(dāng)模塊登錄到ObjectServer(ITComObject接口)時,還會查詢接口,此時計數(shù)器至少為1。注銷時計數(shù)器遞減。當(dāng)計數(shù)器達到0時,模塊會自動刪除釋放內(nèi)存資源。如果有別的模塊通過接口指針調(diào)用此模塊,那么該模塊將繼續(xù)存在,并且接口指針保持有效,直到釋放此指針。TcCom中模塊的屬性TcCOM模塊中有很多屬性,有些是可選(淺藍色),有些是必帶屬性(深藍色):ModuleDesctiption:每個TcCOM模塊都有一些通用描述參數(shù),比如ClassID,Class描述文件(.tmc)和實例描述文件(.tmi)。StateMachine(狀態(tài)機):每個Module都包含一個狀態(tài)機,它描述了模塊的初始化狀態(tài)以及可以從外部修改此狀態(tài)的方法。狀態(tài)機描述在模塊啟動和停止期間發(fā)生的狀態(tài)。這涉及模塊的創(chuàng)建、參數(shù)化等等。TcCOM模塊的狀態(tài)機定義了狀態(tài)INIT、PREOP、SAFEOP和OP。盡管狀態(tài)名稱與EtherCAT現(xiàn)場總線下的名稱相同,但實際上是完全不同的兩個概念。ITComObjectInterface/interface:兩種接口一種是模塊通用的接口,每個模塊都必須有,另外一種是開發(fā)用戶可以自定義的接口。Parameters:參數(shù)是用戶自定義的一些數(shù)據(jù),參數(shù)可以在初始化期間讀取或?qū)懭耄部梢栽谶\行時讀取或?qū)懭耄∣P狀態(tài))。每個參數(shù)都由對應(yīng)的參數(shù)ID指定。參數(shù)ID可以是全局的、有限的全局或特定于模塊的。Interfacepointers:接口指針是接口的對應(yīng)項,如果一個模塊想要使用另一個模塊的數(shù)據(jù)接口,必須具有接口類型的指針才能調(diào)用,確保它能夠指向另一個模塊。DataAreas:模塊里包含了數(shù)據(jù)區(qū)域,用于存放數(shù)據(jù)。數(shù)據(jù)區(qū)域里可以包含任何數(shù)據(jù),比如輸入輸出,或者中間變量等等。DataAreaPointer:同樣,如果一個模塊下要訪問其他模塊的數(shù)據(jù)區(qū)域,它必須包含了數(shù)據(jù)區(qū)域的指針,訪問直接到內(nèi)存區(qū)域。Context:在模塊處理任務(wù)時,即對應(yīng)的是實時任務(wù)。需要考慮上下文信息。這個內(nèi)容對于配置模塊十分重要。如EtherCAT主站可以支持多個獨立的實時任務(wù),也就是多個與時間相關(guān)的上下文(代碼)。這些內(nèi)容必須在模塊描述中進行配置和指定。Categories:模塊可以通過實現(xiàn)接口ITComObjectCategory來提供類別。類別由ObjectServer枚舉。ADS:每個模塊都可以通過ADS訪問,每個模塊都有對應(yīng)的ADS端口,通過該端口可以接受專用的ADS指令(非實時)。模塊可以用C++和ST語言創(chuàng)建。TwinCATPLC的面向?qū)ο髷U展就是為創(chuàng)建模塊量身定制。兩個不同類型的模塊可以通過接口進行交互,方式與純C++模塊相同。面向?qū)ο蟮臄U展使接口與C++中相同。PLC模塊也通過ObjectServer進行注冊,并且通過它訪問。PLC模塊在復(fù)雜性方面有所不同。無論是只生成一個小的FB模塊,還是將完整的PLC程序打包到一個模塊中,都沒有區(qū)別,因為每個PLC程序都是TwinCAT模塊意義上的模塊。PLC程序會自動打包到一個模塊中,并在ObjectServer和一個或多個任務(wù)模塊中注冊自身。對模塊過程數(shù)據(jù)的訪問(例如,與現(xiàn)場總線驅(qū)動器有關(guān)的映射)也通過定義的數(shù)據(jù)區(qū)域和ITcADI進行控制。TcCom模塊狀態(tài)機(TwinCATModuleStateMachine)每個TwinCAT模塊都有對應(yīng)的狀態(tài)機(INIT、PREOP、SAFEOP、OP),這個狀態(tài)機和EtherCAT狀態(tài)機的概念類似,但是內(nèi)容缺大相徑庭。除了某一個特定的狀態(tài)之外TwinCAT模塊還有對應(yīng)的轉(zhuǎn)換過程狀態(tài)(IP、PI、PS、SP、SO、OS)。(1)INIT:初始化狀態(tài)只是一個虛擬狀態(tài)。創(chuàng)建模塊后,模塊就會立即從INIT轉(zhuǎn)化為PREOP,即執(zhí)行IP狀態(tài)轉(zhuǎn)換。實例化和IP同時發(fā)生,因此模塊不會保持INIT狀態(tài)。只有當(dāng)模塊被移除時,它才會在短時間內(nèi)保持INIT狀態(tài)。(2)IP(INITTOPREOP):在IP狀態(tài)轉(zhuǎn)換期間,模塊使用其唯一的ObjectID向?qū)ο蠓?wù)器(ObjectServer)注冊。初始化參數(shù)(也在對象創(chuàng)建期間分配)將傳輸?shù)侥K。在此轉(zhuǎn)換期間,模塊無法建立與其他模塊的連接,因為不清楚其他模塊是否已存在并已注冊到ObjectServer。當(dāng)模塊需要系統(tǒng)資源(例如內(nèi)存)時,可以在狀態(tài)轉(zhuǎn)換期間分配這些資源。同理,在從PREOP反過渡到INIT(PI)期間,必須再次釋放所有分配的資源。(3)PREOP:在PREOP狀態(tài)下,模塊創(chuàng)建完成,模塊通常已完全參數(shù)化(不排除在從PREOP過渡到SAFEOP期間可能會添加更多參數(shù))。該模塊已在ObjectServer中注冊,但尚未創(chuàng)建與其他模塊的連接。(4)PS(PREOPTOSAFEOP):在此狀態(tài)轉(zhuǎn)換中,模塊可以與其他模塊建立連接。為此,它通常會接收其他模塊的ObjectID以及初始化數(shù)據(jù),這些ObjectID現(xiàn)在通過ObjectServer轉(zhuǎn)換為與這些模塊的實際連接。在此狀態(tài)轉(zhuǎn)換期間,可以傳輸更多參數(shù)。例如,父模塊可以將自己的參數(shù)傳輸?shù)阶幽K。(5)SAFEOP:模塊在此階段仍處于非實時上下文中,正在等待系統(tǒng)或其他模塊切換到OP狀態(tài)。(6)SO(SAFEOPTOOP):從SAFEOP到OP狀態(tài)的轉(zhuǎn)換在實時上下文中進行,此時不再分配系統(tǒng)資源。該模塊的資源現(xiàn)在可以由其他模塊請求,同時該模塊也可以向其他模塊注冊,例如為了在任務(wù)期間獲得循環(huán)調(diào)用。(此轉(zhuǎn)換不應(yīng)用于長時間運行的任務(wù):如,文件操作應(yīng)在PS期間執(zhí)行。)(7)OP:在OP狀態(tài)下,模塊開始工作,并在TwinCAT中完全處于活動狀態(tài)。(8)OS(OPTOSAFEOP):在此狀態(tài)轉(zhuǎn)換在實時上下文中發(fā)生。SO轉(zhuǎn)換中的所有操作都將被撤消,SO轉(zhuǎn)換期間請求的所有資源將再次釋放。(9)SP(SAFEOPTOPREOP):PS轉(zhuǎn)換中的所有操作都將撤消,并且PS轉(zhuǎn)換期間請求的所有資源將再次釋放。(10)PI:(PREOPTOINIT)IP轉(zhuǎn)換中的所有操作都將被撤消,并且IP轉(zhuǎn)換期間請求的所有資源都將再次釋放。模塊從ObjectServer注銷并通常會自行刪除(見使用壽命)。TcCom中模塊的通訊IO映射TcCOM中模塊的輸入和輸出可以通過IO映射進行鏈接,就像PLC鏈接到實際物理模塊的輸入輸出通道一樣。對于C++模塊,可以在TMC編輯器中創(chuàng)建描述相應(yīng)輸入/輸出的數(shù)據(jù)區(qū)域。然后將這些鏈接在TwinCAT解決方案中。C++、PLC、MATLAB都可以使用該方法。IO數(shù)據(jù)指針可以通過TMC編輯器中創(chuàng)建的數(shù)據(jù)區(qū)域指針在任務(wù)中直接去訪問內(nèi)存。但是如果出現(xiàn)一個任務(wù)的多個調(diào)用方或其他任務(wù)的調(diào)用方,用戶必須通過適當(dāng)?shù)臋C制確保數(shù)據(jù)一致性,可用于C++和MATLAB。接口關(guān)聯(lián)TcCOM模塊可以提供也在TMC編輯器中定義的接口。在TMC編輯器當(dāng)中建立完接口之后,它將提供適當(dāng)?shù)姆椒?。然后,調(diào)用模塊將具有指向該模塊的“接口指針”,以便調(diào)用方法。使用接口的方式可能會造成調(diào)用阻塞(返回值產(chǎn)生之后才會釋放)。如果出現(xiàn)一個任務(wù)的多個調(diào)用方或其他任務(wù)的調(diào)用方,用戶必須通過適當(dāng)?shù)臋C制確保數(shù)據(jù)一致性。一般使用在C++里。ADS通訊作為TwinCAT系統(tǒng)的內(nèi)部通信方式,ADS可用于模塊之間的通信(C#中是非實時的)。ADS還可用于從UserMode收集或提供數(shù)據(jù),并與其他控制器通信(即通過網(wǎng)絡(luò))。此外ADS還可用于確保數(shù)據(jù)一致性通信,例如任務(wù)/內(nèi)核/CPU之間的通信。在這種情況下,TcCOM模塊既可以是客戶端,也可以是服務(wù)器。PLC,C++,Matlab都可以使用(具體的使用方法見對應(yīng)語言的ADS庫文件以及AutomationInterface)上海(中國區(qū)總部)中國上海市靜安區(qū)汶水路299弄9號(市北智匯園)電話 北京分公司北京市西城區(qū)新街口北大街3號新街高和大廈407室電話 郵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論