12TC3第十二章TwinCAT3的C++使用篇_第1页
12TC3第十二章TwinCAT3的C++使用篇_第2页
12TC3第十二章TwinCAT3的C++使用篇_第3页
12TC3第十二章TwinCAT3的C++使用篇_第4页
12TC3第十二章TwinCAT3的C++使用篇_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.软件安装PremiumorUltimate及以上版本。本例程是以VS2012做演示。1.1软件的安装步骤。(1)开始安装VS2012,打开安装程序(注:WIN7系统需要以“管理员运行”)。根据提示完成安装.VisualStudio(2)安装Twincat3了,和之前安装完整版的唯一区别是在安装过程中多了一个选项,TC3软件会自动识别你当前的电脑有VS2012还是VS2013,之后让你选择把Twincat3的runtime嵌入到哪一个工程界面中,其他步骤可以参考之前的安装文档。如果在安转VS完整版之前已经装好的TwinCAT3,则请先卸载TwinCAT3,待待VS完整版安装完成之后再进行TwinCAT3的安装。TwinCAT3-Version3.14018.5-SetupExistingsettingswillbeoverwritten!MiaogoftYisualStudio2010MicrosoftVisuslStudio2012√MicrosoftVisualStudio2013ProfessionalInstallshield<BackNext>Cancel(5)接下来需要安装一个很重要的插件:"WindowsDriverKit"(WDK)下载链接:/downloads/en/details.aspx?displaylang=en&FamilylD=36a2630f-5d56-43b5-b996-7633f2ec14ff安装这个插件是为了能在TwinACT3工程环境创建和编辑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)弹出窗口点击(6)弹出窗口点击OKSelectInstallPathEdittheinstallpathandclickOKtoproceedwithinstall,orselectCanceltoretumtotheKtConfigurationDiaiog.Usethebrowsebuttontoselectaninstallationpathorthedefaultbuttontosetthedefaultinstalationpath.WhDDK76D06R85Browse(7)选择“Iagree”后点击OKNWeeDefaultCancelThenelicansetermsareanagvamentbetweenMacrosoftCurperatian(arbasedunwhereyoulhe,aneafesaftnatesyansyou.Heasereadthem.TheyapelytotheThetorrisaltoappytaanyMernroftwoftworennmedabov,whichinducoetheThetorrisaltoappytaanyMernroftappleimeits,tothessnftwars,uriessothertarmsacoxtipeeythosetnmn.ITse,thisetermeItyoucomplywiththeseicenseterms,yuuhavethenghtsbolow.¥TA=*CansslJ(8)开始安装MicrosoftWDKGonfigurathion38%complete(9)安装完成后点击Finish结束MicrosoftWDKCortiguration100MicrosoftWindowsDriverKtIMicrosoftWDKComponer(10)随后打开【系统属性】修改环境变量,点击【环境变量】系统星性系统星性计算机名硬件高级系统保护远程性能设置(S)启动和故障恢复(11)点击系统变量下的“新建”,分别填入变量名和变量值,装装充量名W英重值说新英要SFP_W0,ntR普取有C,WindhnleyntsnleVced.msmmunBA和在1(12)设置好后会出现在系统变量中VS100COMNT00LSWIXDDK⁷windnwstrac取消C:\ProgramFiles\MicrosoftC;WiaDDK17E0O:18365.1C:AWindows新建()。确定值Visu.2.TwinCAT3在64位操作系统中数字证书的安装。TwinCAT3安装在64位操作系统上的时候,运行PLC没什么问题,但如果要运行matlab-simulink或者C++则需要安装测试证书,以下步骤就是教大家如何正确安装数字证书。(1)以管理员权限打开VisualStudio2012/2013命令提示窗口(所有应用程序命令提示窗口)。aainehcutTae.IhhrrhreVuicaU64wriaraernatdaykieotnwisualBEuaieth.BWcmaheesaYrvaranFIlet(k⁰6?iiraueftWArnaEtu⁴irth.SaG)(3)命令栏输入certmgr.msc打开证书管理查看到刚才的证书创建成功注意:千万不要多次添加,如果看到有重复的必须手动删除。(4)再次以管理员权限打开VisualStudio2012/2013命令提示窗口,输入命令激SettingenvironnentforusingHierosoftVisualStudio2818×64tools.C:ProsranFiles<×86>NicrosoftUisualStudio18.8UC>hcdedit/settestsigning操作成功完成。(5)接下来打开系统环境变量添加新的系统变量5,taausnnem.aneens中用/名建#与在学有和的能量份生健量et0tm注意:做好以上步骤后必须重启电脑,你会发现电脑右下角显示以下内容。测过惶式测过惶式内部板本7601(6)随后打开TwinCAT3,新建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)最后如果你的电脑进行以上操作后运行程序还是会有报错,则可以把环境环境变量环境变量变里值TMPC:\WinDDK\7600,16385.1N确定值C:AWinDDK\7600.16385.1VC:Awindows3新建(W),编辑I)删除L)确定系统变量(S)变量Windiywindows_tracwindnwstrac编辑系统变量变量名QD:变量值V):USERPROFILE%\AppData\Local\TempKUSERPROFILE%\AppData\Local\Temp新建N编辑(E)删除D)取消3.C++程序和硬件做链接3.1C++程序和硬件连接的步骤。(1)新建项目,注意:名称是英文(不能是中文和符号)。tet.MSneHV实体用当县判生制miCAT开AAT速N)加日(码加日(码l.ShN#WWShin-a*N于关范格2方出1)从宾列代开册意实目法acatwmmih(2)新建C++项目,名称是英文(不能是中文和符号)。SVsTEM@MOTIQNSAFETVAtmtcoce5nnsaWecAsa(5)定义一个shortname或者用默认的Module1也可以,随后点击OK。TwinCATTwinCATClassWizardTwinCATClassWizaShertrameHeaderfilenameSourcefilenameModuieLhModulelcppModule!(6)双击(6)双击TMCFiles下的test.tmc开始创建变量,B三odinlempHainemuanmfthsals可以发现系统已经创建了3个变量,可以用系统给的变量,当然也可以手动新建。DataPointsrsInterfacePointers(8)先手动创建一个Inputs变量,右键Inputs下的Symbols,选择Addnewsymbol,WalusA1izxAlissWalusA1izxAlissVa(9)把新建的变量名字和类型分别改成如图所示:Name:change;Select:bool。¥am=cbasgeDenehedatstiritypeInforrationNa=spaceabel:DataPointerg(10)同样也创建一个输出变量icount,类型为int,Xodule!DatzAreas4Input:4b TMC代码。Valustatan²TeQ(12)双击SourceFiles文件夹下的Module1.cpp开始写C++程序,程序编写在//TOD0:Replacethesamplewithyourcycliccode下面,也就是下图中红色部分,可以发现新创建的C++项目中已经自带一条简单的程序,我们可以删除,替换成我们所需要的程序。mi*Ore中wheseMBhn·maHTP46841t<L*Haa,t<#iYemtA2其1m-飞课#mnmdo**=*wakalsewidtstrk=t=iiils,.CeTtErtln)IitrtrOtsimyishs/ddwintait.Itrtamsedin.&bsletWlsm*taa.ugitivetan.katYitnr*(13)把程序删除后用刚才创建的2个变量编辑一条简单的程序,change导通触发icount计数器累加计数的功能。//I0D0tEeplasethetanplewithyourcyoliecadeim_Outputs.icount++;(14)程序写好后右键testProject选择生成开始编译C++项目。MeTwinCATPublichModulestes重新生成旧编译完成后在消息窗口可以看到如下提示:辅出1>生成成功。1>已用时间00:00.06.08二生成,成功1个,失败0个,最新0个,跳过0个=-=----(15)右键(15)右键test选择添加新项开始添加C++接口模块,梅添加新项(W)_.重的名(M)SavetetAs(16)弹出窗口选择CModule1[module]后点击OK,SeaickName.test0bi1[CModue1]OKBslbsdFed\documentsvsualstudo2010NPrqiecl;Mesfteat\testlesttmeRMutole(17)添加完成后可以在test这个C++项目中看到此项目的一些IO变量,changeValue(18)右键SYSTEM下的Tasks,选择添加新项开始创建C++项目所需的Task。(19)双击test_Obj1(CModule1),把新建的Task分配给C++项目,AA(20)右键(20)右键Devicso,选择Scan开始扫描设备。(21)本次试验用了简单的几个模块。 Term1(EK1100)Term2(EL1004)Term4EL9011*nsat*nsatUatmaat无¥Eeih6*dehystykaiMki1eNMwK*241.1fam)RLh24CNhwOutgHad=mex211ⅡDee?tmciT)tnduwetis)H以X1MDTsT(22)把C++项目中change变量连接到EL1004的通道1上,点击OK。kAmecnVeighsghay·Tnm2kAmecnVeighsghay·Tnm2twtPrnjatVatsDmVuhee0um*ingumpimesteim1E100mldnfim(23)最后双击Real-Time,把C++Debugger中EnableC++Debugger勾选,这样我们才可以在C++我们才可以在C++中进行调试。test4Real-TimeTcCOMObjectsSettinggOnline|PrioritiesC+Debugger(24)打开TwinCAT,选择ActivateConfiguration把配置下载到控制器中,TwinCATPIC团队[M]数画(A)工具T]体系站构们)断GenerateMappingsActivateConfiguration2罪RestartTwinCATSystemRestartTwinCAT(ConfigMode)ReloadDevices5canToggleFreeRunStateShowOnlineDataShowSubltemsAcxetsBusCoupler/IPLinkRegister-UpdateFirmware/EEpROMShowRealtimeEthernetCompetibleDevices.(25)弹出窗口点击确定。(25)弹出窗口点击确定。TwinCATXAEActivateConfiguration(OldConfigurationswillbeoverwrittenl)取海确定(26)提示切换到运行模式点击确定。确定取消观察右下角图标是否变成绿色运行状态(27)点击test_Obj1(CModule1)下的icount,观察Online,当外部按钮导通Kt2鬣·VAmtastPrjodmt.Ohi1mpncNv=D4.C++程序调试操作4.1C++程序调试步骤。(1)点击调试菜单下的“attachtoprocess”,DEBUGTWINCATPLCTEAMSQLTOOLSTESWindowsGraphicsF5Ctrl+F5AItF5Ctrl+F5AIt+F2Ctrl+Alt+F2Ctrl+Alt+E▶StartWithoutDebugging图StartPerformanceAnalysisAttachtaProcess图ExceptionsExceptions..G.G.StepIntoF11GStepOverF10ToggleBreakpoingNewBreakpointDeleteAllBreakpointsF9Ctrl+Shitt+PGearAllBataTipsEportDataTipe…ImportDataTips…OptionsandSettings…(2)弹出窗口,把传输改成TwinCATXAE,限定符改成AllRoutes,随后双击可用进程中您想要调试的哪一个进程。用进程中您想要调试的哪一个进程。QafhmFasisneaitShnnsfsfemstusseEisHotistapedAHa市thenueeh=mmhPuncA?AETu(3)随后右键(3)随后右键C++项目找到debug→startnewinstance。ofdeGuetOntmlesiesPMieauigOnaarMuafcstitAEEdemgDepemHesderFilsfourerFeeefwmcattTuinCATUHFsttnyaurcreltrdode(4)随后会自动弹出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)随后就可以看到一个模型的实例可以在线监控,你可以任意选择需要监控的变量,比如我把之前创建的2个变量双击加入监控栏中。ArrangedbyObjectIDSearchP>ITcWatchSource)m_refCntm_objdDm_parentObjldm_spSrvm_eTcomStatem_ePendState>m_accessCntNameValueType(6)双击需要修改的变量输入修改值,随后点击左上角的绿色download按钮就可以在线修改变量。4Oid:01010020test_Obj1(CModule1)NITComObiectITcADI▶ITcWatchSourceITcCyclicm_refCntm_objld>m_parentObjld)m_objNameDm_spSrvDm_eTcomStatem_ePendStateDm_accessCntNameValueType((0i401010020).mInpis)Chengefatetiiebol(7)可以发现icount开始循环累加。ValueValue((Oid:01010020).m_Inputs).changetrue(8)当然你也可以在程序中直接添加断点进行调试,添加断点方式很简单只需要在右边灰色框中直接点击就可以添加新断点。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)同时在消息窗口可以观察到断点位置,和当前调试的整个过程emseesCsut雨esCsuthheNa=Cam=hheNa=Cam=mecmdRlnihil2aHe!eM5.C++程序和PLC程序做链接。(1)用之前的C++的案例程序,首先我们需要添加PLC程序,右键PLC选择“添加新项”标配PPeistewithLinls1mportPiCopenXML.Ctri+Shit+AIK(2)弹出窗口后把名称改成英文(不能是(2)弹出窗口后把名称改成英文(不能是中文和字符)。MfranieBteyleNeteetelatarcsshiiAT(3)打开POUs下的MAIN编辑PLC程序,创建两个变量即可,解决方案资零管理园解决方案资零管理园SYSTEMMOTIONtestProjectExternalTypesReferencesDUTsGVLsMAIN(PRG)VISUsPkTask(PeTask)testInstanceSAFETYC++9×MAN*×PRDCRAMMATIEMD_VAR(4)程序写好后右键testProject选择“生成”开始编译程序。44test登录登录里新生成(E)里新生成(E)编译好后消息窗口显示如下:编译好后消息窗口显示如下:输出Siteofeaneratedcode15828hytesSireofglobaldata6184bytes内存区0包括数据,输入,输出,内存,代码和持续型数据:最常使用地址:1040578,最大连续内存空闲:517213(49%)Buildcomplete-0errors,Owarningsreadyfordownload!生成成功或最新1个,失败0个,跳过0个====(5)清除之前C++项目中变量链接ValueDataValue4懂智通。懂智通。Aifr*mHisebnimmtetAeathVaisdieMaiNcoInoa工tntunatsaSwlgpeUMss5e1630mF立0*6=)5420TPRCheyCs1*0NT109lmf2*105b0tTuef/vseeleeHaelg0mr2mCBemD4(6)分别把PLC程序中两个变量链接到C++程序中两个变量上去。ot#egot#egNimtNhawntNAINrmMairezta44*44*RmAPntOlnCAnatrVadisMalohangeOimmtDu0-1hVuiealmtaMTgesbkg#F区TwinCATPLC团队[M]数画(A)工具[T]体系结构)GenetateMappingsActivateConfiguration2@壁RestartTwinCATRestartTwinCATReloadDevicesToggleFreeRun5ystemStateShowOnlineDataAccessBusCoupler/IPLinkRegister.UpdateFirmware/EEPROMShowRealimeEthernetCompatibleDevices.(8)提示切换到运行模式点击确定。(8)提示切换到运行模式点击确定。确定取满(9)打开PLC菜单,选择“登录到”把程序在线。2登录到(10)打开PLC菜单,选择“启动”把程序运行,PLC队(M)数据(A)工具(T)体系结和(C)测试(SWindowsViaualizationStylesRepository-LbraryRepository习查荣到带止进出(11)在change类型旁边的准备值点成TRUE,如图2*0(12)打开PLC菜单,选择“所有在线应用中写入值”对change强制操作。PLC由队)数描(A)工具(T)体系结构(C)激试(5)WindowsVisualizationStylesRepository..ubraryRepository-登录到停止退出x总世毒下一算句出型示三前酒印白对全部在线应用墨制得对全部在计范出样的金部日所有在线应用中写入值Shift+fsF11F10ShiH-FI1最终就可以观察到icount在不断做累加表达式mange类型BooL值6.C++模型调用简介TC3中的C++开发除了直接可以指定Task循环执行,输入输出mapping之外,当然还可以发布成一个模型直接给另一个模型调用,例如PLC,因此这篇会介绍如何用PLC调用C++创建的模型。6.1创建C++模型步骤。TWinCATDrNePipiedTwinCATC++DrNETwinCATStaticLibraryProjectTwinCATC++Driverf=B=f=B=tHSmd(-msFanatMchieClasoytnwm(ATMesseS,eTCATfeeinOaDRratmcATMaiuClasheECanidNTse(ATC·hAlr1eintat(-eaTuaCATC·MhtfiuimcaTZ-auseuuneml-fTmmuimmm-DPnefmnCAT<…MsdeCiseuacatwhutiimpeestentwinsmrihetyattsie二mpasdaSeitty(2)打开tmc文件,首先创建一个输出变量,选择output→symbol,点击加号新建一个变量。 Add,removeandreordAdif,rurnoveandreordur5ymbiUuaelediFimseititemalDepeedenomireul,eneSolutonTanCATProjeatdgrojectS45TπMMCHON5AfHSmiummlpfe(3)随后修改新建变量的变量名和类型为bool。TMCTMCParametersDataAreasOutputsSymbolsValueControlInterfacePointersDeploymentSpecncaionNormalTypeAiasTMCTMCCModu(5)随后在新建接口下新增一个方法,并且修改接口名字和2个方法的名字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)接口和方法创建好后,开始实现他,所以选择implementedinterfaces,点击加号。同DataTypes4I_PLCcontrolMethodsModulesCModule1mplemenieemplemenieelhterfacsDataAreasShowstheimplementedinterfacesofthemodule.NameITComObject{00000012-0000-0000-E000-000000000064}[03000010-0000-0000-E000-000000000064}{03000012-0000-0000-03000018-0000-0000-7)找到刚才创建的interface进行添加,补blGrrntol(aa!TcAppsevces208300102-0000-0000-2000-000000000004nteindce4701870TITcAppServices²{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-398d8c¹f1747)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++项目点击TwinCATTMCCodeGenerator,SearchSolutionEsplorer(Ctrl+:)TwinCATTMCCodeGeneratoraSolutionTwinCATProject1'(1projesTwinCATProject1MOTIONSAFETYUntitledl出面TwinCATPublishModulesBuildRebuildCleanProjectOnlyNewSolutionExplorerViewProfileGuidedOptimizationProjectDependencies…ProjectBuildOrder…BuildCustomizations…AddReferences.… Unttled1ProjectDDDHeaderFilesSourceFilesTMCFilesUntitled1.tmcTwinCATRTFilesTwinCATUMFiles在Module1.cpp中就可以看到新增的接口实现可以写代码(GlobalScope)}7T/KAutoGeneratedContentid-ImplemekationOfIPLCcontrol">EHRESULTCModule1::Set(){HRESULThr=E_NOTINPL;}EHRESULTCModule1::Reset(){HRESULThr=E_NOTINPL;</AutoGeneratedContent)SolutionExplorerAMOTIONPLCSAFETYUntitled1DEtemalDependenciesHeaderFiles45SourceFilesModulel.cppTcPch.cppUntitled1.rc+*Untitled1ClassFactory.c45TMCFilesUntitledl.tmc(9)写一个简单的实现2个方法的例子,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)写好实现代码后右键项目进行编译检查是否有错。 BuildRebuildCleanAddReferences.苗ManageNuGet(11)编译没有错后就可以把这部分代码导出成二进制模型TcModule,重新打开TMC,选择Deployment,选择需要导出的平台(32位还是64位)。hhFbgsHutniFbgsHutnikonMHHTATkonMHHTATYRUHONEEPJTHETEATTCATRY(12)例如我电脑是64位的,那我就可以只导出64位模型,把32位删除。TwinCATRT(x64)▼(13)从新更新下TMC文件。neD0neD0MOTIONUntitledi SourceFilesHeaderFilesProjectDependencies SourceFiles44TwinCATProject4SearchSolutionExplIwinCALTMCCadeGeneratorTwinCATPublishModulesgSolutionTwinCATProjectl'(1projectTwinCATProject1BuildMOTIONRebuildPLCCleanUntitled1ProjectOnly面NewSolutionExplorerViewDHeaderFilesDTwinCATRTFilesProfileGuidedOptimization▶ProjectDependencies…ProjectBuildOrder…BuildCustomizations…Add消息窗口中提示模型导出成功Showoutputfrom;BuildNumberoferrors:0Donebuildingproject"Untitledl.vexproj"Project"Untitledl.vexproj"(TePublishAdditionalFilestarget(s)):Donebuildingproject"Untitled1,vexproj"ErrorListOutput(15)我们也可以通过路径C:\TwinCAT\3.1\CustomConfig\Modules找到导出的模CATwinCAT\3.1\CustomConfig\Modules\Untit分ktopwnloadsNameUntitled1,pdbUntitledl.sysDatemodified2015/4/3013:552015/4/3013:55Pro以上是C++创建模型部分5.2接下来就是创建PLC项目调用这个模型(1)右键TcCOMObjects添加新项目。SVSTEMSVSTEMlicenseTasksLRoutesTcCoMObijectsMOTIONC++DevicesMappingsAddNewItem…AddExistingItem.…ReloadSystemTMCFiles…Cl+V4国图官国图官肉用口(2)选择C++Modules下刚刚导出的模型进行添加。Type:BerkhoffAutomatBeckhoffAutomationGmbH白国CodlesMettielMetteFile:C;NTwinCAT\3.1\CustomConfig\Modules\Unt(3)新建PLC项目。会mNruiasAewn-(4)添加功能块。修改功能块名称并把implements打勾,点击图片中红色选项。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++项目创建好的接口I_PLCcontrol。CategoriesInterfacesNameUnttledi-TypeSystemInterfaces一.~0I_PLCcontrolITcAppServicesITcAppServices2ITcBaseClassFador0ITcCydlicTcloCydicTypeOriginApplicatinINTERFACEEIN⁷ERFACFINTERFACEIWTERFACFINTERFAEINTERFACEINTERFACEINTERFACEINTERFACEINTFRFACEINTERFACE☑Structuredview(6)选择好后点OK。默认实现这个接口的功能块是空的,所以里面有很多需要自己写。ConttolModuieConttolModuie(FBTcAddRefTcQueryInterfaceTcRelease玉:★玉:★(7)首先把不必要的一些method删除,只留下reset和set,并且更具需求可(8)接下来写简单的代码,以下代码仅供参考,截图如下:1FUNCTIONBLO3lattribute'cInitsymbol':=]4oid:OTCID;6ENDVAR 234567///ifTRUE,theexitENDVARmethodcalled.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论