版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.軟件安裝PremiumorUltimate及以上版本。本例程是以VS2012做演示。1.1軟件的安裝步驟。(1)開始安裝VS2012,打開安裝程序(注:WIN7系統(tǒng)需要以“管理員運(yùn)行”)。根據(jù)提示完成安裝.VisualStudio(2)安裝Twincat3了,和之前安裝完整版的唯一區(qū)別是在安裝過程中多了一個(gè)選項(xiàng),TC3軟件會(huì)自動(dòng)識(shí)別你當(dāng)前的電腦有VS2012還是VS2013,之后讓你選擇把Twincat3的runtime嵌入到哪一個(gè)工程界面中,其他步驟可以參考之前的安裝文檔。如果在安轉(zhuǎn)VS完整版之前已經(jīng)裝好的TwinCAT3,則請(qǐng)先卸載TwinCAT3,待待VS完整版安裝完成之后再進(jìn)行TwinCAT3的安裝。TwinCAT3-Version3.14018.5-SetupExistingsettingswillbeoverwritten!MiaogoftYisualStudio2010MicrosoftVisuslStudio2012√MicrosoftVisualStudio2013ProfessionalInstallshield<BackNext>Cancel(5)接下來需要安裝一個(gè)很重要的插件:"WindowsDriverKit"(WDK)下載鏈接:/downloads/en/details.aspx?displaylang=en&FamilylD=36a2630f-5d56-43b5-b996-7633f2ec14ff安裝這個(gè)插件是為了能在TwinACT3工程環(huán)境創(chuàng)建和編輯C++模塊。下載后用鏡MicronaftWindowsDriverKit600Features-checktonstal,unchecktoremovePendingsetuptasks:McrosoftWndowsDrverGt600FulDevelopmentEnvronment]pebuggngTooisforWndows.]Devce5muationFramework]windowsDeviceTestingFramewarkeatureStatuscickfeaturenodeab18.Instal:pfd_x86Fre19.Instat:wstalbs_a64fre20.Instal:vstalbs_x64fre21.Instal:vstalbs_x86fre22.Instal:wcoinstalers24.Instal:wnetibs_x64fre25.Instal:wnetinsx?6f,26.InstatwxplbsxB6freCicktheOkbuttontoexecutetheandupdatetheconfigurationofthiscomputer.KITFEATURE:BuidEnvionmentsIncudesWndowsheadersandWbranesandacompletesetofbuldtoosforbuloingWindowsdnversanddeviceonentedapplkatons.BuitSupoortsprowdedforItanum-based,x64,andx86CPU's,andforWindows7,WindowsVista,WindowsServer2008,WndowsServer2003,andWindowsXP.STATUS:HebThsfeatureisinstallabie.UndoOKGnce(6)彈出窗口點(diǎn)擊(6)彈出窗口點(diǎn)擊OKSelectInstallPathEdittheinstallpathandclickOKtoproceedwithinstall,orselectCanceltoretumtotheKtConfigurationDiaiog.Usethebrowsebuttontoselectaninstallationpathorthedefaultbuttontosetthedefaultinstalationpath.WhDDK76D06R85Browse(7)選擇“Iagree”后點(diǎn)擊OKNWeeDefaultCancelThenelicansetermsareanagvamentbetweenMacrosoftCurperatian(arbasedunwhereyoulhe,aneafesaftnatesyansyou.Heasereadthem.TheyapelytotheThetorrisaltoappytaanyMernroftwoftworennmedabov,whichinducoetheThetorrisaltoappytaanyMernroftappleimeits,tothessnftwars,uriessothertarmsacoxtipeeythosetnmn.ITse,thisetermeItyoucomplywiththeseicenseterms,yuuhavethenghtsbolow.¥TA=*CansslJ(8)開始安裝MicrosoftWDKGonfigurathion38%complete(9)安裝完成后點(diǎn)擊Finish結(jié)束MicrosoftWDKCortiguration100MicrosoftWindowsDriverKtIMicrosoftWDKComponer(10)隨后打開【系統(tǒng)屬性】修改環(huán)境變量,點(diǎn)擊【環(huán)境變量】系統(tǒng)星性系統(tǒng)星性計(jì)算機(jī)名硬件高級(jí)系統(tǒng)保護(hù)遠(yuǎn)程性能設(shè)置(S)啟動(dòng)和故障恢復(fù)(11)點(diǎn)擊系統(tǒng)變量下的“新建”,分別填入變量名和變量值,裝裝充量名W英重值說新英要SFP_W0,ntR普取有C,WindhnleyntsnleVced.msmmunBA和在1(12)設(shè)置好后會(huì)出現(xiàn)在系統(tǒng)變量中VS100COMNT00LSWIXDDK?windnwstrac取消C:\ProgramFiles\MicrosoftC;WiaDDK17E0O:18365.1C:AWindows新建()。確定值Visu.2.TwinCAT3在64位操作系統(tǒng)中數(shù)字證書的安裝。TwinCAT3安裝在64位操作系統(tǒng)上的時(shí)候,運(yùn)行PLC沒什么問題,但如果要運(yùn)行matlab-simulink或者C++則需要安裝測(cè)試證書,以下步驟就是教大家如何正確安裝數(shù)字證書。(1)以管理員權(quán)限打開VisualStudio2012/2013命令提示窗口(所有應(yīng)用程序命令提示窗口)。aainehcutTae.IhhrrhreVuicaU64wriaraernatdaykieotnwisualBEuaieth.BWcmaheesaYrvaranFIlet(k?6?iiraueftWArnaEtu?irth.SaG)(3)命令欄輸入certmgr.msc打開證書管理查看到剛才的證書創(chuàng)建成功注意:千萬不要多次添加,如果看到有重復(fù)的必須手動(dòng)刪除。(4)再次以管理員權(quán)限打開VisualStudio2012/2013命令提示窗口,輸入命令激SettingenvironnentforusingHierosoftVisualStudio2818×64tools.C:ProsranFiles<×86>NicrosoftUisualStudio18.8UC>hcdedit/settestsigning操作成功完成。(5)接下來打開系統(tǒng)環(huán)境變量添加新的系統(tǒng)變量5,taausnnem.aneens中用/名建#與在學(xué)有和的能量份生健量et0tm注意:做好以上步驟后必須重啟電腦,你會(huì)發(fā)現(xiàn)電腦右下角顯示以下內(nèi)容。測(cè)過惶式測(cè)過惶式內(nèi)部板本7601(6)隨后打開TwinCAT3,新建C++項(xiàng)目,你就會(huì)發(fā)現(xiàn)調(diào)用測(cè)試證書編譯成功:1>~……Buildstarted:Project:Untitled2,Configuration:DebugTwinCATRT(x64)-------1>headerfile<<C:XTwinCAT\3.1\SDK\\_products\TwinCATRT(x64)\Debug\Untitled2\\Untitled2Version.h>>isup-to-date!1>TcPch.cpp1>Module1.cppUntitled2ClassFactory,cppSHA1hash:E27A66E6A0C7BC0C86DFDD093DDF2486D1EE5O2ESuccessfullysignedandtimestamped:C:\TwinCAT\3.1\SDK\\_pNumberoffilessuccessfullySigned:1Numberofwarnings:8Numberoferrors;0====s=Build:1succeeded,0failed,0up-to-date,0skipped=Issuedto:MyTestSigningCertIssuedby:MyTestSigningCert-(7)最后如果你的電腦進(jìn)行以上操作后運(yùn)行程序還是會(huì)有報(bào)錯(cuò),則可以把環(huán)境環(huán)境變量環(huán)境變量變里值TMPC:\WinDDK\7600,16385.1N確定值C:AWinDDK\7600.16385.1VC:Awindows3新建(W),編輯I)刪除L)確定系統(tǒng)變量(S)變量Windiywindows_tracwindnwstrac編輯系統(tǒng)變量變量名QD:變量值V):USERPROFILE%\AppData\Local\TempKUSERPROFILE%\AppData\Local\Temp新建N編輯(E)刪除D)取消3.C++程序和硬件做鏈接3.1C++程序和硬件連接的步驟。(1)新建項(xiàng)目,注意:名稱是英文(不能是中文和符號(hào))。tet.MSneHV實(shí)體用當(dāng)縣判生制miCAT開AAT速N)加日(碼加日(碼l.ShN#WWShin-a*N于關(guān)范格2方出1)從賓列代開冊(cè)意實(shí)目法acatwmmih(2)新建C++項(xiàng)目,名稱是英文(不能是中文和符號(hào))。SVsTEM@MOTIQNSAFETVAtmtcoce5nnsaWecAsa(5)定義一個(gè)shortname或者用默認(rèn)的Module1也可以,隨后點(diǎn)擊OK。TwinCATTwinCATClassWizardTwinCATClassWizaShertrameHeaderfilenameSourcefilenameModuieLhModulelcppModule!(6)雙擊(6)雙擊TMCFiles下的test.tmc開始創(chuàng)建變量,B三odinlempHainemuanmfthsals可以發(fā)現(xiàn)系統(tǒng)已經(jīng)創(chuàng)建了3個(gè)變量,可以用系統(tǒng)給的變量,當(dāng)然也可以手動(dòng)新建。DataPointsrsInterfacePointers(8)先手動(dòng)創(chuàng)建一個(gè)Inputs變量,右鍵Inputs下的Symbols,選擇Addnewsymbol,WalusA1izxAlissWalusA1izxAlissVa(9)把新建的變量名字和類型分別改成如圖所示:Name:change;Select:bool。¥am=cbasgeDenehedatstiritypeInforrationNa=spaceabel:DataPointerg(10)同樣也創(chuàng)建一個(gè)輸出變量icount,類型為int,Xodule!DatzAreas4Input:4b TMC代碼。Valustatan2TeQ(12)雙擊SourceFiles文件夾下的Module1.cpp開始寫C++程序,程序編寫在//TOD0:Replacethesamplewithyourcycliccode下面,也就是下圖中紅色部分,可以發(fā)現(xiàn)新創(chuàng)建的C++項(xiàng)目中已經(jīng)自帶一條簡(jiǎn)單的程序,我們可以刪除,替換成我們所需要的程序。mi*Ore中wheseMBhn·maHTP46841t<L*Haa,t<#iYemtA2其1m-飛課#mnmdo**=*wakalsewidtstrk=t=iiils,.CeTtErtln)IitrtrOtsimyishs/ddwintait.Itrtamsedin.&bsletWlsm*taa.ugitivetan.katYitnr*(13)把程序刪除后用剛才創(chuàng)建的2個(gè)變量編輯一條簡(jiǎn)單的程序,change導(dǎo)通觸發(fā)icount計(jì)數(shù)器累加計(jì)數(shù)的功能。//I0D0tEeplasethetanplewithyourcyoliecadeim_Outputs.icount++;(14)程序?qū)懞煤笥益ItestProject選擇生成開始編譯C++項(xiàng)目。MeTwinCATPublichModulestes重新生成舊編譯完成后在消息窗口可以看到如下提示:輔出1>生成成功。1>已用時(shí)間00:00.06.08二生成,成功1個(gè),失敗0個(gè),最新0個(gè),跳過0個(gè)=-=----(15)右鍵(15)右鍵test選擇添加新項(xiàng)開始添加C++接口模塊,梅添加新項(xiàng)(W)_.重的名(M)SavetetAs(16)彈出窗口選擇CModule1[module]后點(diǎn)擊OK,SeaickName.test0bi1[CModue1]OKBslbsdFed\documentsvsualstudo2010NPrqiecl;Mesfteat\testlesttmeRMutole(17)添加完成后可以在test這個(gè)C++項(xiàng)目中看到此項(xiàng)目的一些IO變量,changeValue(18)右鍵SYSTEM下的Tasks,選擇添加新項(xiàng)開始創(chuàng)建C++項(xiàng)目所需的Task。(19)雙擊test_Obj1(CModule1),把新建的Task分配給C++項(xiàng)目,AA(20)右鍵(20)右鍵Devicso,選擇Scan開始掃描設(shè)備。(21)本次試驗(yàn)用了簡(jiǎn)單的幾個(gè)模塊。 Term1(EK1100)Term2(EL1004)Term4EL9011*nsat*nsatUatmaat無¥Eeih6*dehystykaiMki1eNMwK*241.1fam)RLh24CNhwOutgHad=mex211ⅡDee?tmciT)tnduwetis)H以X1MDTsT(22)把C++項(xiàng)目中change變量連接到EL1004的通道1上,點(diǎn)擊OK。kAmecnVeighsghay·Tnm2kAmecnVeighsghay·Tnm2twtPrnjatVatsDmVuhee0um*ingumpimesteim1E100mldnfim(23)最后雙擊Real-Time,把C++Debugger中EnableC++Debugger勾選,這樣我們才可以在C++我們才可以在C++中進(jìn)行調(diào)試。test4Real-TimeTcCOMObjectsSettinggOnline|PrioritiesC+Debugger(24)打開TwinCAT,選擇ActivateConfiguration把配置下載到控制器中,TwinCATPIC團(tuán)隊(duì)[M]數(shù)畫(A)工具T]體系站構(gòu)們)斷GenerateMappingsActivateConfiguration2罪RestartTwinCATSystemRestartTwinCAT(ConfigMode)ReloadDevices5canToggleFreeRunStateShowOnlineDataShowSubltemsAcxetsBusCoupler/IPLinkRegister-UpdateFirmware/EEpROMShowRealtimeEthernetCompetibleDevices.(25)彈出窗口點(diǎn)擊確定。(25)彈出窗口點(diǎn)擊確定。TwinCATXAEActivateConfiguration(OldConfigurationswillbeoverwrittenl)取海確定(26)提示切換到運(yùn)行模式點(diǎn)擊確定。確定取消觀察右下角圖標(biāo)是否變成綠色運(yùn)行狀態(tài)(27)點(diǎn)擊test_Obj1(CModule1)下的icount,觀察Online,當(dāng)外部按鈕導(dǎo)通Kt2鬣·VAmtastPrjodmt.Ohi1mpncNv=D4.C++程序調(diào)試操作4.1C++程序調(diào)試步驟。(1)點(diǎn)擊調(diào)試菜單下的“attachtoprocess”,DEBUGTWINCATPLCTEAMSQLTOOLSTESWindowsGraphicsF5Ctrl+F5AItF5Ctrl+F5AIt+F2Ctrl+Alt+F2Ctrl+Alt+E?StartWithoutDebugging圖StartPerformanceAnalysisAttachtaProcess圖ExceptionsExceptions..G.G.StepIntoF11GStepOverF10ToggleBreakpoingNewBreakpointDeleteAllBreakpointsF9Ctrl+Shitt+PGearAllBataTipsEportDataTipe…ImportDataTips…OptionsandSettings…(2)彈出窗口,把傳輸改成TwinCATXAE,限定符改成AllRoutes,隨后雙擊可用進(jìn)程中您想要調(diào)試的哪一個(gè)進(jìn)程。用進(jìn)程中您想要調(diào)試的哪一個(gè)進(jìn)程。QafhmFasisneaitShnnsfsfemstusseEisHotistapedAHa市thenueeh=mmhPuncA?AETu(3)隨后右鍵(3)隨后右鍵C++項(xiàng)目找到debug→startnewinstance。ofdeGuetOntmlesiesPMieauigOnaarMuafcstitAEEdemgDepemHesderFilsfourerFeeefwmcattTuinCATUHFsttnyaurcreltrdode(4)隨后會(huì)自動(dòng)彈出twincatlivewatch,如果沒有彈出,可以在debug→windowsDEDJGWndowsM元 00L元nCn+-種Cm*A#*n日址紅nenzeut【4QugCs.AB,BCtnshn=Q,Kn+2hn-0$CssAlt·,ACam·At*N.LCm-A+aCinsAB+CQi-AM·HCe-Aa+ussat.tGid-An·G-Am·GMPisdiFwlniTusahTaitifadrWhAtiisteahceDetiugyimXDetarhAlTmneAnadhfhhecssFaanptimg.MewEhaslp=tintslitnen材toee*lThmihxeieAemanbTainsatewatch(5)隨后就可以看到一個(gè)模型的實(shí)例可以在線監(jiān)控,你可以任意選擇需要監(jiān)控的變量,比如我把之前創(chuàng)建的2個(gè)變量雙擊加入監(jiān)控欄中。ArrangedbyObjectIDSearchP>ITcWatchSource)m_refCntm_objdDm_parentObjldm_spSrvm_eTcomStatem_ePendState>m_accessCntNameValueType(6)雙擊需要修改的變量輸入修改值,隨后點(diǎn)擊左上角的綠色download按鈕就可以在線修改變量。4Oid:01010020test_Obj1(CModule1)NITComObiectITcADI?ITcWatchSourceITcCyclicm_refCntm_objld>m_parentObjld)m_objNameDm_spSrvDm_eTcomStatem_ePendStateDm_accessCntNameValueType((0i401010020).mInpis)Chengefatetiiebol(7)可以發(fā)現(xiàn)icount開始循環(huán)累加。ValueValue((Oid:01010020).m_Inputs).changetrue(8)當(dāng)然你也可以在程序中直接添加斷點(diǎn)進(jìn)行調(diào)試,添加斷點(diǎn)方式很簡(jiǎn)單只需要在右邊灰色框中直接點(diǎn)擊就可以添加新斷點(diǎn)。Modulel.cppX子CModulelCycleUpdate(TcTask*ipTask,ITcUnknom_Trace,Log(tlVerbose,FLEAVEA"hr=0x%08x",}///<AutoGeneratedCantentid="ImplementationOf_ITeCyclic">CModule1:;CModule1:;CycleUpdate(ITcTask*ipTask,ITcUnknown*ipCa){HRESULThr=S_OK;//T0D0:Replacethesamplewithyourcycliccodeicount++;吵{m_Outputs.}///</AutoGeneratedContent)同時(shí)在消息窗口可以觀察到斷點(diǎn)位置,和當(dāng)前調(diào)試的整個(gè)過程emseesCsut雨esCsuthheNa=Cam=hheNa=Cam=mecmdRlnihil2aHe!eM5.C++程序和PLC程序做鏈接。(1)用之前的C++的案例程序,首先我們需要添加PLC程序,右鍵PLC選擇“添加新項(xiàng)”標(biāo)配PPeistewithLinls1mportPiCopenXML.Ctri+Shit+AIK(2)彈出窗口后把名稱改成英文(不能是(2)彈出窗口后把名稱改成英文(不能是中文和字符)。MfranieBteyleNeteetelatarcsshiiAT(3)打開POUs下的MAIN編輯PLC程序,創(chuàng)建兩個(gè)變量即可,解決方案資零管理園解決方案資零管理園SYSTEMMOTIONtestProjectExternalTypesReferencesDUTsGVLsMAIN(PRG)VISUsPkTask(PeTask)testInstanceSAFETYC++9×MAN*×PRDCRAMMATIEMD_VAR(4)程序?qū)懞煤笥益ItestProject選擇“生成”開始編譯程序。44test登錄登錄里新生成(E)里新生成(E)編譯好后消息窗口顯示如下:編譯好后消息窗口顯示如下:輸出Siteofeaneratedcode15828hytesSireofglobaldata6184bytes內(nèi)存區(qū)0包括數(shù)據(jù),輸入,輸出,內(nèi)存,代碼和持續(xù)型數(shù)據(jù):最常使用地址:1040578,最大連續(xù)內(nèi)存空閑:517213(49%)Buildcomplete-0errors,Owarningsreadyfordownload!生成成功或最新1個(gè),失敗0個(gè),跳過0個(gè)====(5)清除之前C++項(xiàng)目中變量鏈接ValueDataValue4懂智通。懂智通。Aifr*mHisebnimmtetAeathVaisdieMaiNcoInoa工tntunatsaSwlgpeUMss5e1630mF立0*6=)5420TPRCheyCs1*0NT109lmf2*105b0tTuef/vseeleeHaelg0mr2mCBemD4(6)分別把PLC程序中兩個(gè)變量鏈接到C++程序中兩個(gè)變量上去。ot#egot#egNimtNhawntNAINrmMairezta44*44*RmAPntOlnCAnatrVadisMalohangeOimmtDu0-1hVuiealmtaMTgesbkg#F區(qū)TwinCATPLC團(tuán)隊(duì)[M]數(shù)畫(A)工具[T]體系結(jié)構(gòu))GenetateMappingsActivateConfiguration2@壁RestartTwinCATRestartTwinCATReloadDevicesToggleFreeRun5ystemStateShowOnlineDataAccessBusCoupler/IPLinkRegister.UpdateFirmware/EEPROMShowRealimeEthernetCompatibleDevices.(8)提示切換到運(yùn)行模式點(diǎn)擊確定。(8)提示切換到運(yùn)行模式點(diǎn)擊確定。確定取滿(9)打開PLC菜單,選擇“登錄到”把程序在線。2登錄到(10)打開PLC菜單,選擇“啟動(dòng)”把程序運(yùn)行,PLC隊(duì)(M)數(shù)據(jù)(A)工具(T)體系結(jié)和(C)測(cè)試(SWindowsViaualizationStylesRepository-LbraryRepository習(xí)查榮到帶止進(jìn)出(11)在change類型旁邊的準(zhǔn)備值點(diǎn)成TRUE,如圖2*0(12)打開PLC菜單,選擇“所有在線應(yīng)用中寫入值”對(duì)change強(qiáng)制操作。PLC由隊(duì))數(shù)描(A)工具(T)體系結(jié)構(gòu)(C)激試(5)WindowsVisualizationStylesRepository..ubraryRepository-登錄到停止退出x總世毒下一算句出型示三前酒印白對(duì)全部在線應(yīng)用墨制得對(duì)全部在計(jì)范出樣的金部日所有在線應(yīng)用中寫入值Shift+fsF11F10ShiH-FI1最終就可以觀察到icount在不斷做累加表達(dá)式mange類型BooL值6.C++模型調(diào)用簡(jiǎn)介TC3中的C++開發(fā)除了直接可以指定Task循環(huán)執(zhí)行,輸入輸出mapping之外,當(dāng)然還可以發(fā)布成一個(gè)模型直接給另一個(gè)模型調(diào)用,例如PLC,因此這篇會(huì)介紹如何用PLC調(diào)用C++創(chuàng)建的模型。6.1創(chuàng)建C++模型步驟。TWinCATDrNePipiedTwinCATC++DrNETwinCATStaticLibraryProjectTwinCATC++Driverf=B=f=B=tHSmd(-msFanatMchieClasoytnwm(ATMesseS,eTCATfeeinOaDRratmcATMaiuClasheECanidNTse(ATC·hAlr1eintat(-eaTuaCATC·MhtfiuimcaTZ-auseuuneml-fTmmuimmm-DPnefmnCAT<…MsdeCiseuacatwhutiimpeestentwinsmrihetyattsie二mpasdaSeitty(2)打開tmc文件,首先創(chuàng)建一個(gè)輸出變量,選擇output→symbol,點(diǎn)擊加號(hào)新建一個(gè)變量。 Add,removeandreordAdif,rurnoveandreordur5ymbiUuaelediFimseititemalDepeedenomireul,eneSolutonTanCATProjeatdgrojectS45TπMMCHON5AfHSmiummlpfe(3)隨后修改新建變量的變量名和類型為bool。TMCTMCParametersDataAreasOutputsSymbolsValueControlInterfacePointersDeploymentSpecncaionNormalTypeAiasTMCTMCCModu(5)隨后在新建接口下新增一個(gè)方法,并且修改接口名字和2個(gè)方法的名字TMCTMC密ModugCModulelITComObieciITcCyclicITcwatchSa{00000012-0000-0000-E000-000000000064}{03000010-0000-0000-E000-000000000064}{03000012-0000-0000-E000-000000000064}{03000018-0000-0000-E000-000000000064}???_PLCcontrol{d8f1c134-4cef-48c4-94dd-e5ec7b2b3a93}(6)接口和方法創(chuàng)建好后,開始實(shí)現(xiàn)他,所以選擇implementedinterfaces,點(diǎn)擊加號(hào)。同DataTypes4I_PLCcontrolMethodsModulesCModule1mplemenieemplemenieelhterfacsDataAreasShowstheimplementedinterfacesofthemodule.NameITComObject{00000012-0000-0000-E000-000000000064}[03000010-0000-0000-E000-000000000064}{03000012-0000-0000-03000018-0000-0000-7)找到剛才創(chuàng)建的interface進(jìn)行添加,補(bǔ)blGrrntol(aa!TcAppsevces208300102-0000-0000-2000-000000000004nteindce4701870TITcAppServices2{08500104-0000-0000-e000-000000000064}Interface4.0(8.0)ITcBaseClassFactoryf00000018-0000-0000-e000-000000000064}Interface4.0(8.0){0300001e-0000-0000-e000-000000000064}Interface4.0(8.0)ITcEthenetAdapter{03010060-0000-0000-e000-000000000064]4.0(8.0)TcFileAccess{742a7429-da?d-4c1d-80d8-398d8c1f1747)Interface4.0(8.0)ITrloArpPing{0301009e-0000-0000-e000-000000000064}Interface4.0(8.0)ITdoArpPingRecv{03010096-0000-0000-e000-000000000064}Interface4.0(8.0)ITcloCyclic{03000011-0000-0000-e000-000000000064}4.0(8.0){0300001f-0000-0000-e000-000000000064}Interface4.0(8.0)ITcloECatLrwMemory{03021018-0000-0000-e000-000000000064}Interface4.0(8.0)ITcoEthProtocol{03010035-0000-0000-e000-000000000064}Interface4.0(8.0)ITclolpStackControl{0301009d-0000-0000-e000-000000000064}Interface4.0(8.0){03010098-0000-0000-e000-000000000064}Interface4.0(8.0){03010099-0000-0000-e000-000000000064}Interface4.0(8.0){03010097-0000-0000-e000-000000000064}Interface4.0(8.0)ITcloUdpProtocolRecv{03010095-0000-0000-e000-000000000064}Interface4.0(8.0)ITcNcDcConvert{05000005-0000-0000-e000-000000000064}Interface4.0(8.0)ITcNcDcConvert2{05000006-0000-0000-e000-000000000064}Interface4.0(8.0)ITcNcTrafo{05010001-0000-0000-e000-000000000064}Interface4.0(8.0)ITComCreatelnstance{00000031-0000-0000-e000-000000000064}Interface4.0(8.0)ITComlicenseServer{01010001-0000-0000-e000-000000000064]Interface4.0(8.0)100000063-0000-0000-e000-000000000064}Interface4.0(8.0)ITComObjCon{00000016-0000-0000-e000-000000000064}4.0(8.0){00000030-0000-0000-e000-000000000064}Interface4.0(8.0)ITComObjind{00000013-0000-0000-e000-000000000064}Interface4.0(8.0){00000015-0000-0000-e000-000000000064}Interface4.0(8.0)ShowhiddendatatypesGroupbyNoneOKCancelTMCTMC4DataTypes4I_PLCcontrolMethodsSetResetModulesCModule1mplementedIrtefetsParametersDataAreas(8)TMC編輯完畢后,右鍵C++項(xiàng)目點(diǎn)擊TwinCATTMCCodeGenerator,SearchSolutionEsplorer(Ctrl+:)TwinCATTMCCodeGeneratoraSolutionTwinCATProject1'(1projesTwinCATProject1MOTIONSAFETYUntitledl出面TwinCATPublishModulesBuildRebuildCleanProjectOnlyNewSolutionExplorerViewProfileGuidedOptimizationProjectDependencies…ProjectBuildOrder…BuildCustomizations…AddReferences.… Unttled1ProjectDDDHeaderFilesSourceFilesTMCFilesUntitled1.tmcTwinCATRTFilesTwinCATUMFiles在Module1.cpp中就可以看到新增的接口實(shí)現(xiàn)可以寫代碼(GlobalScope)}7T/KAutoGeneratedContentid-ImplemekationOfIPLCcontrol">EHRESULTCModule1::Set(){HRESULThr=E_NOTINPL;}EHRESULTCModule1::Reset(){HRESULThr=E_NOTINPL;</AutoGeneratedContent)SolutionExplorerAMOTIONPLCSAFETYUntitled1DEtemalDependenciesHeaderFiles45SourceFilesModulel.cppTcPch.cppUntitled1.rc+*Untitled1ClassFactory.c45TMCFilesUntitledl.tmc(9)寫一個(gè)簡(jiǎn)單的實(shí)現(xiàn)2個(gè)方法的例子,Set方法中RUN為true,Reset方法放///<AutoGeneratedContentid="ImplementationOf_I_PLCcontrol">EHRESULTCNodule1::Set(){}{}///</AutoGeneratedContent)}SearchSolutionExplorer(Ctrl+;)TwinCATProjectlCodeGeneratorASYSTEMMOTIONPLCSAFETYC++Pe4SearchSolutionExplorer(Ctrl+;)TwinCATProjectlCodeGeneratorASYSTEMMOTIONPLCSAFETYC++Pe4Untitledlder…DExternalDependen HeaderFilesSourceFilesModulel.cpp*+TcPch.cppUntitledl.rc4TMCFilesUntitled1,tmcDTwinCATRTFilesTwinCATUMFilesPackages.TwinCATPubiishModulesBuildRebuildCleanProjectOnlyTwinCATProjectiTwinCATTMCCodeGenerator(10)寫好實(shí)現(xiàn)代碼后右鍵項(xiàng)目進(jìn)行編譯檢查是否有錯(cuò)。 BuildRebuildCleanAddReferences.苗ManageNuGet(11)編譯沒有錯(cuò)后就可以把這部分代碼導(dǎo)出成二進(jìn)制模型TcModule,重新打開TMC,選擇Deployment,選擇需要導(dǎo)出的平臺(tái)(32位還是64位)。hhFbgsHutniFbgsHutnikonMHHTATkonMHHTATYRUHONEEPJTHETEATTCATRY(12)例如我電腦是64位的,那我就可以只導(dǎo)出64位模型,把32位刪除。TwinCATRT(x64)▼(13)從新更新下TMC文件。neD0neD0MOTIONUntitledi SourceFilesHeaderFilesProjectDependencies SourceFiles44TwinCATProject4SearchSolutionExplIwinCALTMCCadeGeneratorTwinCATPublishModulesgSolutionTwinCATProjectl'(1projectTwinCATProject1BuildMOTIONRebuildPLCCleanUntitled1ProjectOnly面NewSolutionExplorerViewDHeaderFilesDTwinCATRTFilesProfileGuidedOptimization?ProjectDependencies…ProjectBuildOrder…BuildCustomizations…Add消息窗口中提示模型導(dǎo)出成功Showoutputfrom;BuildNumberoferrors:0Donebuildingproject"Untitledl.vexproj"Project"Untitledl.vexproj"(TePublishAdditionalFilestarget(s)):Donebuildingproject"Untitled1,vexproj"ErrorListOutput(15)我們也可以通過路徑C:\TwinCAT\3.1\CustomConfig\Modules找到導(dǎo)出的模CATwinCAT\3.1\CustomConfig\Modules\Untit分ktopwnloadsNameUntitled1,pdbUntitledl.sysDatemodified2015/4/3013:552015/4/3013:55Pro以上是C++創(chuàng)建模型部分5.2接下來就是創(chuàng)建PLC項(xiàng)目調(diào)用這個(gè)模型(1)右鍵TcCOMObjects添加新項(xiàng)目。SVSTEMSVSTEMlicenseTasksLRoutesTcCoMObijectsMOTIONC++DevicesMappingsAddNewItem…AddExistingItem.…ReloadSystemTMCFiles…Cl+V4國(guó)圖官國(guó)圖官肉用口(2)選擇C++Modules下剛剛導(dǎo)出的模型進(jìn)行添加。Type:BerkhoffAutomatBeckhoffAutomationGmbH白國(guó)CodlesMettielMetteFile:C;NTwinCAT\3.1\CustomConfig\Modules\Unt(3)新建PLC項(xiàng)目。會(huì)mNruiasAewn-(4)添加功能塊。修改功能塊名稱并把implements打勾,點(diǎn)擊圖片中紅色選項(xiàng)。DPOUsMAVISUsdd日POU.…題ImportPLCopenXML.…盤ExportPLCopenXML.BPOUforimplicitchecks…DUT…GiobalVariableList.ReferencedTask...Visualization….VisualizationManager…ImagePool.…Interface…&CutCopyXDeleteRenameCtrl+XCtrl+CDelSAFETYDevicesMappingsPropertiesAlt+EnterMSG「2015/4/301240:07Name:Type:Extends:?Implements;Accessspeafier:Methodimplementationlanguage:StructuredText(ST)Rebrn:type:Implementationlanguage:StructuredText(ST)(5)從中找到之前在C++項(xiàng)目創(chuàng)建好的接口I_PLCcontrol。CategoriesInterfacesNameUnttledi-TypeSystemInterfaces一.~0I_PLCcontrolITcAppServicesITcAppServices2ITcBaseClassFador0ITcCydlicTcloCydicTypeOriginApplicatinINTERFACEEIN?ERFACFINTERFACEIWTERFACFINTERFAEINTERFACEINTERFACEINTERFACEINTERFACEINTFRFACEINTERFACE?Structuredview(6)選擇好后點(diǎn)OK。默認(rèn)實(shí)現(xiàn)這個(gè)接口的功能塊是空的,所以里面有很多需要自己寫。ConttolModuieConttolModuie(FBTcAddRefTcQueryInterfaceTcRelease玉:★玉:★(7)首先把不必要的一些method刪除,只留下reset和set,并且更具需求可(8)接下來寫簡(jiǎn)單的代碼,以下代碼僅供參考,截圖如下:1FUNCTIONBLO3lattribute'cInitsymbol':=]4oid:OTCID;6ENDVAR 234567///ifTRUE,theexitENDVARmethodcalled.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人信用貸款協(xié)議(2024年版)
- 2025年度健康食品研發(fā)與購(gòu)銷合作框架協(xié)議3篇
- 2025年寵物醫(yī)院聯(lián)合科研項(xiàng)目合作協(xié)議3篇
- 2025版事業(yè)單位新員工試用期勞動(dòng)合同范本3篇
- 小學(xué)課外閱讀與語文學(xué)科素養(yǎng)的培育
- 科技型企業(yè)組織架構(gòu)的靈活性與穩(wěn)定性
- 二零二五年餐飲業(yè)食品安全宣傳教育合作協(xié)議書模板3篇
- 2025版仙崇線道路養(yǎng)護(hù)與管理服務(wù)合同3篇
- 中介服務(wù)居間合同范本(2024年版)版B版
- 二零二五版集裝箱堆場(chǎng)管理及服務(wù)合同3篇
- 《色彩基礎(chǔ)》課程標(biāo)準(zhǔn)
- 人力資源 -人效評(píng)估指導(dǎo)手冊(cè)
- 大疆80分鐘在線測(cè)評(píng)題
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復(fù)習(xí)必背初中英語單詞詞匯表(蘇教譯林版)
- 《現(xiàn)代根管治療術(shù)》課件
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費(fèi)報(bào)銷單
- 2021年上海市楊浦區(qū)初三一模語文試卷及參考答案(精校word打印版)
- 八年級(jí)上冊(cè)英語完形填空、閱讀理解100題含參考答案
評(píng)論
0/150
提交評(píng)論