Home
Handbuch TC3 C++
Contents
1. a Object Context Parameter Init Parameter Online Data Area Interfaces Interface Point ZJ Solution TwinCAT Project154 1 project S er a faces ace Pointer a BB TwinCAT Project154 Context 7 z a SYSTEM Real Time Depend On Manual Config a BD Tasks Need Call From Sync Mapping fe ptt Data Areas Interfaces Sis Routes Eege 28 TcCOM Objects 1 Outputs iA NC Motion IS CDs ES SAFETY Data Pointer Interface Pointer fa C a fe Untitledi 2 Untitled1 Project gt el Untitled1_Obj1 CModulel vo Task Name Priority Cycle Time us ADS Port Sort Or 02000101 xj Task1 1 10000 350 default Aktivierte Symbole f r Zugriff ber ADS verf gbar Es besteht die M glichkeit einzelne Symbole oder gar vollst ndige Datenbereiche f r den Zugriff ber ADS bereitzustellen oder eben nicht bereitzustellen Navigieren Sie zur der Registerkarte Data Area Ihrer Instanz und aktivieren deaktivieren die Spalte C S In diesem Beispiel sind alle Symbole gekennzeichnet und demzufolge f r den ADS Zugriff verf gbar Nach den nderungen bitte die Konfiguration aktivieren TC3 C Version 1 0 213 C C Beispiele BECKHOFF geg Object Context Parameter Init Parameter Online Data Area Interfaces Interface Pointer lod Solution AdsCommunicationsample 1 proje 4 E AdsCommunicationSampl
2. od Solution TwinCAT Project with DPRAM 1 p a Gi TwinCAT Project with DPRAM Offset Hex Show Characters a system 0000 01 00 01 00 10 06 04 OA A4 88 00 00 43 43 41 54 A E License 0010 00 00 00 00 00 00 op op oo oo 00 op op 00 op op m p Real Time 0020 00 00 00 00 00 00 00 00 op 00 00 op op 00 00 op gt E Tasks 0030 00 op 00 00 00 00 00 00 op op op op op op op 00 0040 09 00 00 00 00 48 80 80 op op 07 00 00 00 01 00 siz Routes 0050 OD 00 00 00 18 00 00 00 oo 03 op op 20 00 op 00 E TcCOM Objects 0060 10 00 00 00 00 00 00 00 oo 04 op 00 20 00 op 00 MOTION 0070 03 00 00 00 00 10 00 10 op 00 02 00 00 20 00 00 fj Pic 0080 11 00 00 00 00 00 00 00 8 amp 0 02 00 00 10 00 00 00 SAFETY 0090 00 00 00 op 00 00 00 op op op 00 op op o0 op op gt ce 00A0 OF 00 00 on 00 00 00 op op oe oo op op oe op op Bun 00B0 12 00 00 00 00 00 00 00 op 02 00 op 20 00 00 op Devices ooco 00 00 00 op oo 00 op oo op oo oo op op oo op op e d 00D0 00 00 oo op 00 oo 00 op oo oo 00 op op oo op op a leet NOWDP RAM 00EO 00 00 00 op 00 00 00 op oo op 00 op op 00 op op 3 Image ooro 00 00 00 op 00 00 00 00 oo op op op op op op 00 Inputs 0100 00 00 00 00 00 00 00 00 op op op op op op op 00 Wh Outputs 0110 00 00 00 op op 00 00 op op oo oo op op o0 op op Mappings 0120 00 00 00 00 00 00 00 00 op oo 00 op op oo op op X 15 16 Beispiel25 Statische Bibliothek Dieser Artikel beschreibt die Implementierung
3. A ag Moduleilnputs PModuleilnputs ed untitled Untitled1 Project a eier Altypedef struct ModuleiOutputs zt External Dependencies Gy Header Files D Modulet h unsigned long Value D Resource h unsigned long Control D TcPch h unsigned long Data h UntitlediClassFactory h ModuleiOutputs PModulelOutputs h UntitlediInterfaces h DE untitlediServices h lt AutoGeneratedContent gt Gy Source Files c Module opp C TePch cpp EA Untitledt re lt AutoGeneratedlontent id InterfacelDs gt C Untitled1 ClassFactory cpp fiizi AutoGeneratedContent gt E TMC Files RE Untitled tmc 9 6 Einen Task erstellen um eine TwinCAT 3 C H Modulinstanz aufzurufen Bevor ein Aufruf fur eine TwinCAT 3 C Modulinstanz konfiguriert werden kann muss es eine Modulinstanz geben Um eine Modulinstanz zu erzeugen folgen Sie den ersten Schritten zur Erzeugung einer TwinCAT 3 C Modulinstanz Ubersicht Dieser Konfigurationsschritt muss nur einmal ausgef hrt werden F r sp tere Erstellungen Neukompilierungen des C Moduls muss kein neuer Task konfiguriert werden e Einen TwinCAT 3 Task erstellen gt 48 Grundlegende Aufgabe eines Tasks ist es auszuf hrende TwinCAT 3 Module zyklisch aufzurufen e TwinCAT 3 C Modulinstanz konfigurieren die den TwinCAT 3 Task aufrufen soll gt 50 TwinCAT 3 Task erstellen Nach Erstellen eines TwinCAT 3 Projekts de
4. Methoden Sym Name Beschreibung bol H GetCycleCounter gt 153 Anzahl Taskzyklen seit Taskstart abfragen H GetCycleTime gt 153 Abfrage der Taskzyklenzeit in Nanosekunden d h Zeit zwischen begin of task und nachstem begin of task GetPriority gt 151 Abfrage der Taskpriorit t GetCurrentSysTime gt 152 Abfrage der Zeit bei Taskzyklusstart in Intervallen von 100 Nanosekunden seit dem 1 Januar 1601 UTC H GetCurrentDcTime gt 152 Abfrage der Distributed Clock Zeit bei Taskzyklusbeginn in Nanosekunden seit dem 1 Januar 2000 H GetCurPentiumTime gt 153 Abfrage der Zeit bei Methodenaufruf in Intervallen von 100 Nanosekunden seit dem 1 Januar 1601 UTC Anmerkungen Mit der ITcTask Schnittstelle kann die Zeit im Echtzeitkontext gemessen werden Begin of Task End of Task Begin of Task 1 4 6 8 _ _ __ _ _ me cyclin dl Bi timer interrupt tick F read of time stamp in task Function read time stamps at Reference ITeTask ees e m IT TI Sehen Sie dazu auch Schnittstelle ITCRTimeTask gt 149 Beispiel30 Zeitmessung gt 256 IM IM 12 4 12 1 Methode ITcTask GetPriority Abfrage der Taskpriorit t Syntax virtual HRESULT TCOMAPI GetPriority PULONG pPriority 0 TC3 C Version 1 0 151 Programmierreferenz BECKHOFF Parameter pPriority Typ PULONG out Prioritatswert des Tasks
5. Haltepunkte setzen Setzen von Haltepunkten auf herk mmliche Art und Weise ist ebenfalls m glich DI HINWEIS Beachten Sie die Folgen f r die Maschine Solution Explorer ax Objectl h Objectls TwinCAT Project49 Objectl cpp x h TwinCAT Live Watch Sl aE a CObjectl CycleUpdate TcTask ipTask TcUnknown ipCaller A aif Scorch b G External Depenc a Header Files 7 Irecyclic SHRESULT CObjecti CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG context m_eTcomState t 10 Objecti h b m_ePendState d Objectiserv HRESULT hr S_OK i EEN F coe TODO Replace the sample with your cyclic code wm Parameter h Tcbch m_counter b m_Inputs h UntitlediChe Bp m_Outputs Value m_counter m_Outputs h UntitledlInt m_counter h Untitled1Ser return hr il m J TUTTLE a amp Source Files C Objectl cpp Name CObject1 0x860D3F40 m_counter 442 unsigned i Value TePch cpp MEI P CAhtartt Alles fent Ier Clean up Trennen Es wird empfohlen die Debug Umgebung beim Verlassen zu bereinigen Debugger vom Prozess trennen 58 Version 1 0 TC3 C BECKHOFF Schnellstart 13 Klicken Sie auf Debug gt Detach All
6. 248 Version 1 0 TC3 C BECKHOFF C C Beispiele Der gesamte Quellcode der vom Assistenten nicht automatisch generiert wird wird mit dem Kommentarbeginn Flag sample code und dem Kommentarende Flag sample code end gekennzeichnet Somit k nnen Sie nach diesen Zeichenketten in den Dateien suchen um sich ein Bild von den Einzelheiten zu machen Beschreibung Dieses Beispiel beschreibt den Zugriff auf Dateien ber die TwinCAT Schnittstelle ITCFileAccess Der Zugriff ist synchron und kann z B f r das Lesen einer Konfiguration beim Starten eines Moduls verwendet werden Das Beispiel beinhaltet ein C Modul TcFileTestDrv mit einer Instanz von diesem Modul TcFileTestDrv_Obj1 Bei diesem Beispiel findet der Dateizugriff beim bergang PREOP to SAFEOP statt also in der SetObjStatePS Methode Hilfsmethoden kapseln den Umgang mit Dateien ein Zuerst wird als Beispiel eine allgemeine Dateiinformation und eine Verzeichnisliste in die Protokollvorrichtung von TwinCAT 3 gedruckt Anschlie end wird eine Datei TC_TARGETPATH DefaultConfig xml normalerweise C TwinCAT 3 x Target DefaultConfig xm auf TC_TARGETPATH DefaultConfig xml bak kopiert Zwecks Zugang zu den Protokolleintr gen siehe Registerkarte Error List vom TwinCAT 3 Ausgabefenster Sie k nnen die Informationsmenge mittels nderung der Variablen TraceLevelMax in der Instanz TcFileTestDrv_obj1 in Registerka
7. Login Flow Control Start Stop Logout Force values to all online applications Unforce all values on all online applications Kb T Ru v mE Write values to all online applications Single Cycle Reset warm Reset cold P Continue F5 H Break All Ctril Alt Break Stop Debugging Shift F5 Start Performance Analysis Alt F2 b TMC Files E Win32 Files EXP Files v TC3 C Version 1 0 59 Debuggen BECKHOFF 10 Debuggen TwinCAT C bietet verschiedene Mechanismen f r das Debuggen der unter Echtzeitbedingungen laufenden TwinCAT C Module Die meisten von ihnen entsprechen denjenigen die von der normalen C Entwicklungsumgebung bekannt sind Die Automatisierungswelt ben tigt zus tzliche leicht abweichende Debugging Mechanismen die hier dokumentiert sind Das Debugging muss freigegeben sein Dies kann ber den C Knoten der Solution konfiguriert werden Doppelklick auf den C Knoten und Wechsel zum C Debugger Reiter um auf das Pr fk stchen zuzugreifen TwinCAT Project X Modulel cpp Modulel h ao Be General C Debugger Search Solution Explorer Ctrl Pr enable C Debugger Sad Untitled 4 Untitledi Project b KZ External Dependencie 4 a Header Files Modulel h Resource h TcPch h Untitled1 ClassFac Untitled1 Interface Untitled1 Services D D D E Er F r jegliches Debuggen in TwinCAT C muss das TwinCAT Engineering
8. In diesem Fall zu System gt Real Time navigieren Registerkarte C Debugger w hlen und Option Enable C Debugger aktivieren Solution Explorer eam TwinCAT Project176 x WALTER bod Solution TwinCAT Project176 1 project a a ZE TwinCAT Project176 Enable C Debugger a Zi SYSTEM ER Licence 7 Real Time gt Di Tasks sts Routes Y TcCOM Objects NC Motion fj PLC RS saretv 4 fed C a fe Untitledi 4 2 Untitledi Project gt el External Dependencies b Header Files Settings Online Priorities C Debugger m TC3 C Version 1 0 193 Fehlersuche BECKHOFF 14 4 Activation invalid object id 1821 0x71d Wenn im Verlauf des Starts der ADS Return Code 1821 0x71d berichtet wird bitte den Kontext der Modulinstanz wie in Schnellstart gt 48 beschrieben berpr fen Untitledi tmc TMC Editor TwinCAT Projectl2 x BRUCEI Rasy Modulel h Context Parameter Init Data Area Interfaces Interface Pointer a 29 08 2014 13 52 32 432 ms TwinCAT System 10000 Sending ams d command gt gt Init16 IO Set State TComObj SAFE GiRateilenet Object Untitledl_Objl CModulel to OP gt gt AdsWarnind 1821 oa ADS ERROR invalid object id lt lt failed 14 5 Fehlermeldung VS2010 und LNK1123 COFF W hrend der Kompilation eines TwinCAT C Moduls weist die Fehlermeldung LINK 3 tatal erro
9. System Requirements Install Instructions 2 Brennen Sie sich nach dem Download entweder eine CD des heruntergeladenen ISO Abbilds oder verwenden Sie ein virtuelles softwarebasiertes CD Laufwerk 3 KitSetup exe auf CD heruntergeladenem ISO Abbild starten auf Windows7 PCs Installation mit Run As Administrator starten TC3 C Version 1 0 13 Vorbereitung nur einmal BECKHOFF 4 Option Build Environment w hlen alle anderen Komponenten werden von TwinCAT 3 nicht ben tigt und OK klicken um fortzufahren E Microsoft Windows Driver Kit 7 1 0 760 kei f Features check to install uncheck to remove Pending setup tasks Microsoft Windows Driver Kit 7 1 0 7600 Install pfd_x86fre C Full Development Environment Install vistalibs_ia64fre ronments Install vistalibs_x64fre Install vistalibs_x86fre Sg Install wcoinstallers x y Install wnetlibs_ia64fre C Help Documentation Collection Install wnetlibs_x64fre C Debugging Tools for Windows Install wnetlibs_x86fre C Device Simulation Framework Install wxplibs_x86fre C Windows Device Testing Framework Click the OK button to execute these tasks and update the configuration of this computer Feature Status click feature node above for details KIT FEATURE Build Environments Includes Windows headers and libraries and a complete set of build tools for building Windows drivers and device oriented applicati
10. gt il Win32 p h Attach to Process 01 gt G XP Pie Exceptions Ctrl Alt E a fall Untitled _O S3 Ser Into Fil 2 F r den Transport nicht die Default Einstellung von Visual Studio w hlen sondern TwinCAT XAE 3 Zielmaschine oder All Routes als Qualifizierer w hlen 54 Version 1 0 TC3 C BECKHOFF Schnellstart 4 ENTER drucken um die Prozessliste zu aktualisieren Attach to Process SIS Transport TwinCAT XAE z Qualifier All Routes Transport Information There is no additional information available for this transport TwinCAT XAE Debugger code Attach to Available Processes Process ID Title Type User Name Session CX 1088DE NetId 172 17 36 163 1 1 Version 3 1 4011 TwinCAT XA 0 F Show processes from all users Die verf gbaren Prozesse werden aufgelistet 5 Wahlen Sie den Zielprozess 6 Klicken Sie auf die Taste Attach Option2 Alternativ 7 Rechtsklicken Sie auf das C Projekt 8 Navigieren zu Debug Show processes in all sessions 55 Version 1 0 TC3 C Schnellstart BECKHOFF 9 Start new instance w hlen DT Broiect Microsoft Visual Studio Administrator File Edit View Project Build Debug TwinCAT PLC Team Data Tools Architecture Test Analyze Il aale a 3 Z gt Debug Mixed Platforms A lt Local gt 4 w leeepnono AOE Objectl cpp Objectl h Ob inCA
11. Eh Data Pointers SC l Z Interface Pointers Type Information B Deployment Namespace Guid 18071995 0000 0000 0000 000000000008 Configure the parameter ID Select the property which should be taken from the given context f Sort order of task Select the context 1 sl ID Value x030020B0 Constant Name PID_Ctx_TaskSortOrder 7 Bitten starten Sie den TMC Code Generator um die Standardimplementierung zu erhalten 8 Da der Code im n chsten Schritt ge ndert werden wird deaktivieren Sie bitte die Kodegenerierung f r diesen Parameter jetzt 4 DV TMC Data Types Optional parameter settings 4 iq Modules 4 fa CSortOrderModule Size Bits x64 specific o 2 Implemented Interfaces x64 specific a 4 Parameters TracelevelMax TaskSortOrderContextiParameter Comment Context ID 1 sl 4 IS Data Areas a M Inputs Zu E Symbols Y Disable code generation D Outputs P STSramer Eh Data Pointers EI Hide sub items Interface Pointers X Deployment E Online parameter Bu E Read only 9 Vergewissern Sie sich dass Sie die nderungen bernehmen bevor Sie den TMC Code Generator erneut starten Werfen Sie bitte einen Blick auf das CPP Modul SortOrderModule cpp im Beispiel Die Instanz des Smart Pointers des zyklischen Aufrufers beinhaltet Informationsdaten zu denen ein Feld f r die Sortierreihenfolge geh rt In diesem Feld wird der Parameterwert gespeichert EE Set parameters of CSortOrderModule BEGI
12. Handbuch TC3 C TwinCAT 3 Version 1 0 02 10 201 Bestell Nr TC1300 BECKHOFF BECKHOFF Inhaltsverzeichnis Inhaltsverzeichnis 1 VON WOME E 6 1 1 Hinweise Zur Dokumentation 32 3 susanne 6 1 2 Sicherheilshinwelse un ea 7 WE nee ee une A T 8 3 Einleit ng scscsccccceccccccce ce ccececceedsscccens casctectceeedeectece scececeenscescdbctevesdedeincesceececs REESEN seduction essedsbctesacs ectessedeesteess 9 e E Un ege le EE 12 5 Vorbereitung nur CiniMall vviisicccccccsisccecccesscccecceessoceeccvassscecevesseneecvendscaeceees sccceceees scene cuusdsececevessscceeeessscoees 13 5 1 Microsoft Windows Driver Kit WDK Installation eccceiceeeeee teen reese nnnnnnnnnnnnnnnnnnnnnnnnn nn 13 5 2 Visual Studio TwinCAT XAE Base Symbolleiste nn 15 5 3 Visual Studio vorbereiten Konfigurations und Plattformsymbolleiste 44 16 9 4 Mee le BE 16 DAT Ree e UE EE 17 5 4 2 Testsignierungfreigeben rsrensie seen nenne 17 5 4 3 Testzertifikat l schen ee aan 19 9 4 4 ee E El 21 GB UU 23 6 1 Ve EE OTT 23 6 2 TwinCAT Component Object Model TCCOM rorserosrarnorieriit inn r EEE 26 e De VE 27 6 4 Klassenbeschreibungsdateien wi sccccssccvecrcesscvcedeesesvventecesseessnccevennedtesvennsntuessvens cates ensecteateesentenuseneece 29 7 Module Handhabung iiiicceccsicssccccvies scctecees sccce evens secseceees saeeecvensttee cxvessececeevessteesveesscaee ceed ssnceesvesseieesvers steers 31 1 1 Module exportieren nad co n
13. ME Glee in d lution Explc i FB_StateMachine MAIN x te HN tag Meme EE ug 1 PROGRAM MAIN gt ge ITcTask 2 VAR pie S yee re e Machine S i PicAppSysteminfo 5 StateMachine FB_StateMachine FF PlcTaskSystemInfo an vak aa C3 DUTs bel C3 GVLs m 3 a 3 POUs 1 nCounter nCounter 1 a FB_StateMachine FB ol Convert to Global Data Type IF nCounter 500 THEN f h Import PLCopenXML on Export PLCopenXML Property D e Cut Ctrl X Transition gt np Ka Copy Ctrl C New tem Ctrl Shift A E PLC ca X Delete Del 3 Existing Item Shift Alt A SAFETY geg Rename z IF nCounter 1500 THEN P E StateMach O Open fb_StateMachine Stop q K StateN Open With nCounter 0 K END IF gt E Statem Properties u gt vo m r Cal Solution Explorer BET gm I AW m TC3 C Version 1 0 237 C C Beispiele BECKHOFF 9 F gen Sie die Methoden FB_exit und ER mt hinzu beide mit Structured Text GT als Implementation language 10 Dialog mittels Klicken auf Open verlassen 238 Version 1 0 TC3 C BECKHOFF C C Beispiele 11 Rechtsklick auf FB_StateMachine im Baum und Add gt Method ausw hlen um die FB_init Methode hinzuzuf gen Solution Explorer ax FB StateMachine FB_ext x FB_StateMachine TwinCAT Project PLC calling C N 1 M
14. Modul enthaltene TC3 C statische Bibliothek verwendet werden kann 26 Beispiel26 Ausf hrungsreihenfolge in Dieser Artikel beschreibt die Bestimmung der einem Task gt 254 Taskausf hrungsreihenfolge wenn einem Task mehr als ein Modul zugeordnet ist 30 Beispiel30 Zeitmessung gt 256 Beschreibt die Messung der TC3 C Zyklus oder Ausfuhrungszeit 31 Beispiel31 Funktionsbaustein TON in Dieser Artikel beschreibt die Implementierung eines TwinCAT3 C gt 257 Verhaltens in C das vergleichbar mit einem TON Funktionsbaustein von SPS 611371 ist 37 Beispiel37 Daten archivieren gt 259 Beschreibt das Laden und Speichern des Zustands eines Objekts w hrend der Initialisierung und Deinitialisierung 15 2 Beispiel01 Zyklisches Modul mit lO Dieser Artikel beschreibt die Implementierung eines TC3 C Moduls dessen Modul lO mit einem physikalischen IO gemappt ist 198 Version 1 0 TC3 C BECKHOFF C C Beispiele Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Dieses Beispiel beschreibt den Schnellstart zwecks Erstellung eines C Moduls das einen Z hler bei jedem Zyklus inkrementiert und den Z hler dem logis
15. Typ ITcloCyclic in Schnittstellenzeiger der vom zyklischen Il O Aufrufer verwendet wird context Typ ULONG_PTR optional ein Kontextwert der bei jedem Aufruf an die ITcloCyclic InputUpdate und ITcloCyclic OutputUpdate Methode bergeben wird sortOrder Typ ULONG optional die Sortierreihenfolge kann f r die Steuerung der Ausf hrungsreihenfolge verwendet werden wenn verschiedene Modulinstanzen vom gleichen zyklischen Aufrufer ausgef hrt werden R ckgabewert Typ HRESULT Beschreibung Eine TwinCAT Modulklasse verwendet normalerweise einen Smart Pointer um auf den zyklischen 1 0 Aufrufer vom Typ ITcloCyclicCallerPtr zu verweisen Die Objekt ID des zyklischen I O Aufrufers ist in diesem Smart Pointer gespeichert und eine Referenz kann ber den TwinCAT Objektserver erhalten werden Dar ber hinaus enth lt die Klasse des Smart Pointers bereits einen Listeneintrag Demzufolge kann der Smart Pointer als erster Parameter f r die AddloDriver Methode verwendet werden Das folgende Codebeispiel veranschaulicht die Anmeldung der ITcloCyclicCaller Schnittstelle 148 Version 1 0 TC3 C BECKHOFF Programmierreferenz HRESULT hr S_OK if m_sploCyclicCaller HasOID if SUCCEEDED DBG hr m spSrv gt TcQuerySmartObjectInterface m_sploCyclicCaller if FAILED hr m sploCyclicCaller gt AddIoDriver m spIoCyclicCaller MLS ICAS iTelotycilac m_sploCyclicCaller NULL 12 4 10 2 Method
16. WinCE 6 0 CX_012FC5 10 1 128 144 5 1 47 197 1 1 Win CE 6 0 CX O2154F 0 1 128 135 0 1 128 135 1 1 0 3051 Mim SE LG UEL 10 1 128 112 5 3 252 104 1 1 Win CE 5 0 Se m Route Name Target O lt _02154F Route Name Remote AmsNetld 10 1 128 135 1 1 Target Route Remote Route Transport Type TCP_IP si ic Project R None z 9 Static Static Address Info Cx_02154F Temporary 5 Temporary HostName IP Address Connection Timeout s 1 V Add Route Close 5 auf Broadcast Search klicken Es erscheinen alle verf gbaren TwinCAT Laufzeitger te im Netzwerk 6 Um ein C Programm herunterzuladen und zu berwachen muss die Ziellaufzeit eine TwinCAT 3 3 xxx Laufzeit sein 7 Nach Auswahl des korrekten Zielger ts Add Route anklicken um eine ADS Verbindung zwischen Engineering PC und Laufzeitger ten herzustellen Alternativ k nnen Sie auch Name oder IP des Zielger ts direkt in das Feld eingeben und auf Enter Host Name IP klicken 8 Geben Sie aus Sicherheitsgr nden Nutzername und Passwort des Ziel PCs ein Nur g ltige Zugangsdaten erm glichen die Konfiguration einer ADS Route Logon Information Sa Enter a user name and password that is valid for the remote system User name Administrator Password 182 Version 1 0 TC3 C BECKHOFF How to gt Wenn Nutzername Passwort vom Remote PC akzeptiert werden ist das gew hlte
17. ausw hlen Wenn das gr ne C Symbol nicht aufgef hrt ist dann wird die Installation von Microsoft Visual Studio 2010 Level Professional Premium oder Ultimate nicht erkannt und Visual Studio Shell l uft Bitte Visual Studio Professional Premium oder Ultimate erneut installieren TwinCAT Project8 Microsoft Yisual Studio File Edit view Project Debug TwinCAT PLC Team Data Debug al SC g i KEE 2 x E ar lt tocal gt Solution Explorer zs ax La Solution TwinCAT Proiect 1 project El 7 Twincar Projects g system LAJ NC Motion Sid PLC SAFETY Uu E Add New Item Ctrl Shift 4 ki Add Existing Item Shift Alt 4 gt Der TwinCAT C Projekt Assistent gt 65 wird eingeblendet 2 Es werden alle bestehenden Projektvorlagen aufgef hrt normalerweise ist TwinCAT Driver Project auszuw hlen optional kann ein verwandter Projektnamen eingegeben und mit OK fortgefahren werden Alternativ kann das TwinCAT Static Library Project verwendet werden das eine Umgebung f r das Programmieren von statischen TC C Bibliotheken bereitstellt siehe Beispiel25 gt 252 add New Item TwinCAT Project7O U NEE cz ER Installed Templates Sort by Default gt HE Search Installed Templates P TwinCAT C Driver T TwinCAT C Driver i TwinCAT Driver Project TwinCAT C Driver w g TwinCAT Static Library Project TwinCAT C Driver Name Untitled2 Locat
18. ximale Anzahl von TCBs betr gt 64 0x1006 4102 RTERR_NOMORESEMAS Keine freien Semaphoren zur Verf gung Maximale An zahl der Semaphoren betr gt 64 0x1007 4103 RTERR_NOMOREQUEUES Kein freier Platz in der Warteschlange zur Verf gung Maximale Anzahl der Pl tze in der Warteschlange be tr gt 64 0x100D 4109 RTERR_EXTIRQALREADYDEF Ein externer Synchronisations Interrupt wird bereits an gewandt Ox100E 4110 RTERR_EXTIRQNOTDEF Kein externer Synchronisations Interrupt angewandt Ox100F 4111 RTERR_EXTIRQINSTALLFAILED Anwendung des externen Synchronisierungs Interrupts ist fehlgeschlagen 0x1010 4112 RTERR_IRQLNOTLESSOREQUAL Aufruf einer Service Funktion im falschen Kontext 0x1017 4119 RTERR_VMXNOTSUPPORTED Intel VT x Erweiterung wird nicht unterst tzt 0x1018 4120 RTERR_VMXDISABLED Intel VT x Erweiterung ist nicht aktiviert im BIOS 0x1019 4121 RTERR_VMXCONTROLSMISSING Fehlende Funktion in Intel VT x Erweiterung Ox101A 4122 RTERR_VMXENABLEFAILS Aktivieren von Intel VT x schl gt fehl TCP Winsock Fehlercodes Hex Dec Name Beschreibung 0x274c 10060 WSAETIMEDOUT Verbindungs Timeout aufgetreten Fehler beim Herstellen der Verbindung da die Gegenstelle nach einer be stimmten Zeitspanne nicht ordnungsgem reagiert hat oder die hergestellte Verbindung konnte nicht aufrecht erhalten werden da der verbundene Host nicht reagier
19. 0 Input Destination Inputs 1 EI Bp 1 Output Source Outputs 1 EI D Outputs 3 Standard DataArea3 1 E b Dh DataArea3 b Dh Data Pointers b Interface Pointers En Deployment 3 Um die Eigenschaften des Datenbereichs zu erhalten auf die Tabelle doppelklicken oder auf den Knoten klicken 4 LM TMC Data Types a Edit the properties ofthe Data Area a EC Modules 4 fE CModule e 3 Implemented Interfaces General properties Ba Parameters a M Data Areas Number 3 CG Inputs we Bt b gh Outputs DataAres3 Name DataArea3 Eh Data Pointers Interface Pointers Le Deployment Optional data area settings Size Bytes x64 specific Comment Context ID ar 4 Den Datenbereich umbenennen Eine neue Variable erzeugen 5 Den Unterknoten Symbols des Datenbereichs ausw hlen 6 Dieser Datenbereich kann mit einem Klick auf die Schaltfl che um eine neue Variable erweitert werden Daraufhin wird Symbol4 als neuer Eintrag aufgef hrt a BG TMC fi Modus 4 lodul a R CModulet Implemented Interfaces Parameters fh Add remove and reorder Symbols t Bye HM Name Specification BaseType Size Size X64 Unit 4 Eh Data Areas Value Alias UDINT 4 pote Status Alias UDINT Data Alias UDINT Symb Alias INT m Status m Data m Symbol4 WW Outputs a DN DataAres3 Symbols Dh Data Pointers Interface Pointers al Deployment Name oder Datentyp von bestehenden Variablen bearbeiten
20. 12 4 2 1 Methode ITcComObject TcGetObjectid Die Methode speichert Objekt ID mit Hilfe der gegebenen OTCID Referenz Syntax HRESULT TcGetObjectId OTCID amp objId Parameter objld Typ OTCID amp Referenz auf OTCID Wert R ckgabewert Informiert ber Erfolg der OTCID Abfrage Beschreibung Die Methode speichert Objekt ID mit Hilfe der gegebenen OTCID Referenz Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 124 Version 1 0 TC3 C BECKHOFF Programmierreferenz 12 4 2 2 Methode ITcComObject TcGetObjectid Die Methode speichert die Objekt ID mit Hilfe der gegebenen OTCID Referenz Syntax OTCID TcGetObjectId void Parameter R ckgabewert OTCID Gibt die OTCID des Objekts zur ck Beschreibung Die Methode speichert die Objekt ID mit Hilfe der gegebenen OTCID Referenz Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 3 Methode ITcComObject TcSetObjectid Die Methode TcSetObjectld setzt die Objekt ID des Objekts auf die gegebene OTCID Syntax HRESULT TeSetObjiectid OTCID objId Parameter objld Typ OTCID Die zu setzende OTCID Ruckgabewert Es wird empfohlen stets S_OK zur ckzugeben Derzeit wird der Ruckgabewert von den TwinCAT Tasks ignoriert Beschreibung Zeigt den Erfolg der id nderung an Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 4 Methode ITcComObject TcGetObjectName Die Methode TcGetObjectNa
21. Beginn der Modulentwicklung Erstellen eines TwinCAT C Moduls mit Hilfe des ADS Port Assistenten Dadurch wird al les was Sie zum Aufbau einer ADS Kommunikation ben tigen eingerichtet Einfach die Hinweis notwendigen ADS Methoden von ADS h wie im Beispiel gezeigt verwenden und ber schreiben Siehe auch ADS Kommunikation gt 155 15 8 Beispiel10 Modulkommunikation Verwendung von Datenzeigern Dieser Artikel beschriebt die Implementierung von zwei TC3 C Modulen die Uber einen Datenzeiger kommunizieren Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Diese Kommunikation baut auf einen geteilten Datenbereich auf Von einem Modul bereitgestellt und ber Zeiger von einem anderen Modul aus erreichbar Es ist nicht m glich dass zwei verschiedene Datenzeiger mit dem selben Eintrag in einen Ausgangs oder Eingangsdatenbereich verkn pft sind weil es ohne diese Limitierung zu Synchronisationsproblemen k me Aus diesem Grunde sammelt ein ModuleDataProvider Modul Ein und Ausgang in einen Standarddatenbereich der nicht dieser Einschr nkung unterliegt Alles in allem beinhaltet dieses Beispiel di
22. Ben tigtes include TcIoInterfaces h Methoden Sym Name Beschreibung bol e CycleUpdate gt 130 Wird ein Mal pro Taskzyklus aufgerufen wenn die Schnittstelle bei einem zyklischen Aufrufer angemeldet ist Anmerkungen Die Schnittstelle ITcCyclic wird von TwinCAT Modulen implementiert Diese Schnittstelle wird der Methode ITcCyclicCaller AddModule bergeben wenn sich ein Modul bei einem Task anmeldet normalerweise als letzter Initialisierungsschritt beim bergang von SafeOP zu OP Nach der Anmeldung wird die Methode CycleUpdate der Modulinstanz aufgerufen 12 4 3 1 Methode ITcCyclic CyclicUpdate Die Methode CyclicUpdate wird normalerweise von einem TwinCAT Task aufgerufen nachdem die Schnittstelle angemeldet wurde Syntax HRESULT TCOMAPI CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG PTR context Parameter ipTask Typ ITcTask verweist auf den aktuellen Task Kontext ipCaller Typ ITcUnknown verweist auf die aufrufende Instanz Context Typ ULONG_PTR Kontext beinhaltet den Wert der an die Methode ITcCyclicCaller AddModule bergeben wurde R ckgabewert Es wird empfohlen stets S_OK zur ckzugeben Derzeit wird der R ckgabewert von den TwinCAT Tasks ignoriert Beschreibung In einem Taskzyklus wird die Methode CycleUpdate aufgerufen nachdem InputUpdate f r alle angemeldeten Modulinstanzen aufgerufen wurde Demzufolge muss diese Methode verwendet werden um eine z
23. C CoE Zugriff Uber AIDS nennen 209 15 6 Beispiel06 Ul C ADS Client l dt die Symbolik vom Modul hoch 210 15 7 Beispiel07 Empfang von ADS Notifications seseeeeeseesreetneneseeeetrntrtrrernsttestttttrnnnnnnn nnne te nne nnn 215 15 8 Beispiel10 Modulkommunikation Verwendung von Datenzeigem en 216 15 9 Beispiel11 Modulkommunikation SPS Modul ruft eine Methode eines C Moduls auf 217 15 9 1 Beispiel11 Eine Methode zur Verf gung stellendes TwinCAT 3 C Modul 218 15 9 2 Beispiel11 SPS um eine Methode aufzurufen die von einem anderen Modul angeboten wird hier TwinCAT 3 C Modul manner 231 15 10 Beispiel11a Modulkommunikation C Modul f hrt eine Methode in C Modul an 247 15 11 Beispiel12 Modulkommunikation Verwendet IO Mapping sossnsssssnnnnnsesssesseessrnnnrnnssnesrennnnnnnnnn 248 15 12 Beispiel19 Synchroner Datetzuort esrorienar r a AOE 248 13 18 Beispiel20 FilelO RE ege Ae ee endete 249 15 14 Beispiel20a FilelO Cyclic Read Wie 250 15 15 Beispiel22 Automation Device Driver ADD Zugang DPRAM sassssesrrriserrrrssrrerrsserrrrsssrrerss 251 15 16 Beispiel25 Statische Bibli thek u ale 252 15 17 Beispiel26 Ausf hrungsreihenfolge in einem Task 254 19 18 Beispiel30 Zeitmessung aa O 256 15 19 Beispiel31 Funktionsbaustein TON in TwmnC ATC 257 15 20 Beispiel35 Ethernet Zugriff nnsenssssnnnnnnnssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
24. DI HINWEIS Aber es sind auch Stack Gr en ber 4KB m glich Wir empfehlen Speicherplatz ber Modulsymbole zu allozieren die also im TMC Editor gt 69 definiert sind 13 10 Siehe Version Herstellerinformation Windows bietet einen Mechanismus um Hersteller und Versionsressourcen abzufragen die im Verlauf einer rc Datei f r die Kompilationszeit definiert sind Diese sind z B ber den Karteireiter Details von jeder Eigenschaften Datei zug nglich a VersionVendorlnfo sys Properties General Digital Signatures Security Details Previous Versions Property Value Description File description VersionVendorinfo TwinCAT C Driver Type System file File version 1 2 3 4 Product name Beckhoff Customer Project Product version 1 0 0 0 Copyright TODO Add legal copyright Size 294 KB Date modfied 01 09 2014 12 54 Language English United States Original filename VersionVendorInfo sys Remove Properties and Personal Information OK Cancel Apply TwinCAT bietet dieses Verhalten Uber die bekannten Windows Mechanismen von rc Dateien die im Verlauf der TwinCAT C Projekterstellung erzeugt werden 188 Version 1 0 TC3 C BECKHOFF How to 4 EJ VersionVendorinfo 4 VersionVendorInfo Project 5 External Dependencies b Header Files 4 Source Files I VersionVendorlnfo rc actory cop Bearbeiten Sie bitte die rc Datei im Source Files Ordner
25. Dazu geh ren die folgenden Informationen typedef struct TcFileStatus union ULONGLONG ulFileSize struct ULONG ulFileSizeLow ULONG ulFileSizeHigh ULONGLONG ulCreateTime ULONGLONG ulModifiedTime ULONGLONG ulReadTime DWORD dwAttribute DWORD wReserved0 TcFileStatus PTcFileStatus 12 4 5 10 Methode ITcFileAccess FileFindFirst M glichkeit die Dateien eines Verzeichnisses zu durchlaufen 138 Version 1 0 TC3 C BECKHOFF Programmierreferenz Syntax virtual HRESULT TCOMAPI FileFindFirst PCCH szFileName PTcFileFindData pFileFindData PTcFileFind Handle phFileFind Parameter szFileName Typ PCCH in Verzeichnis oder Pfad und Name der gesuchten Datei Der Dateiname kann Platzhalterzeichen wie Sternchen oder Fragezeichen enthalten pFileFindData Typ PTcFileFindData out die Beschreibung der ersten Datei Vergleiche mit TcFileAccessServices h phFileFind Typ PTcFileFindHandle out Handle um weiter mit FileFindNext zu suchen Ruckgabewert Typ HRESULT Wenn eine Datei gefunden werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode beginnt mit der Suche nach Dateien in einem vorgegebenen Verzeichnis Die Methode gew hrt Zugriff auf PTcFileFindData der ersten gefundenen Datei mit folg
26. INOUT sein Dar ber hinaus kann er als NONE definiert werden damit dieser Parameter bei Remoteprozeduraufrufen RPC ignoriert wird 11 3 4 Module Modules Zeigt die Module des Treibers 90 Version 1 0 TC3 C BECKHOFF Assistenten Unitied tmc TMC Editor x EEE GA a ya TMC b Data Types a fg Modules gt Shows the Modules of the driver 4 fa CModule1 Implemented Interfaces b Ba Parameters b Gh Data Areas Eh Data Pointers b Interface Pointers Le Deployment Class Name CModule1 7f7e0c25 1719 41c0 a82d 50feec331043 Class Id Class Name Name des Moduls Class ID Eindeutige ID des Moduls Module Properties Ein Klick auf den Knoten im Baum oder der Zeile in der Tabelle ffnet die Moduleigenschaften 2 4 0 4 WG TMC 4 Data Types DataTypei 4 o IInterface2 a 9 Methods Method1 a Rj Modules 4 El CModule1 Z9 Implemented Interfaces b Da Parameters b Data Areas b Eh Data Pointers b Z Interface Pointers Ra Deployment zg Shows the properties of the Module General properties Name CModule1 Class ID CLSID 6a84bf6d ddd8 463b b910 a3ddicc48121 Class Factory Untitled1 Image O Choose image Reset image Init Sequence SO e Instantiable in RT Context Define the contexts of the module Kl ID a Optional properties del t Name Value Description Allgemeine Eigenschaften Name Name des Moduls TC3 C Ve
27. ITcFileAccess _ declspec novtable ITc FileAccess public ITcUnknown Ben tigtes include TcFileAccessInterfaces h Methoden Sym Name Beschreibung bol FileOpen gt 133 Offnet eine Datei 4 FileClose 134 Schlie t eine Datei e FileRead gt 135 Liest aus einer Datei D FileWrite 135 Schreibt in eine Datei e FileSeek gt 136 Setzt Position in einer Datei e FileTell gt 136 Fragt Position in einer Datei ab D FileRename gt 137 Nennt eine Datei um FileDelete gt 137 L scht eine Datei H FileGetStatus gt 138 Erhalt den Zustand einer Datei D FileFindFirst gt 138 Sucht nach einer Datei erste Iteration e FileFindNext gt 139 Sucht nach einer Datei n chste Iteration _ FileFindClose gt 140 Schlie t eine Dateisuche H MkDir gt 140 Erstellt ein Verzeichnis RmDir gt 141 L scht ein Verzeichnis Anmerkungen Die ITcFileAccess Schnittstelle wird f r den Zugriff auf Dateien in Dateisystemen verwendet Weil die zur Verf gung gestellten Methoden Blockaden verursachen sollte diese Schnittstelle nicht in CycleUpdate Echtzeitkontext verwendet werden Die abgeleitete Schnittstelle ITcFileAccessAsync gt 141 f gt eine Check Methode hinzu die stattdessen verwendet werden kann Siehe Beispiel20a FilelO Cyclic Read Write gt 250 Die Schnittstelle wird ber die Modulklasse CID_TcFileAccess implementiert 12 4
28. Januar 1601 UTC Syntax virtual HRESULT TCOMAPI GetCurPentiumTime PLONGLONG pCurTime 0 Parameter pCurTime Typ PLONGLONG out in diesem Parameter wird die aktuelle Zeit UTC in 100 Nanosekunden Intervallen seit dem 1 Januar 1601 gespeichert R ckgabewert E_POINTER wenn Parameter pCurTime gleich NULL sonst S_OK Beschreibung Beispiel30 Zeitmessung gt 256 veranschaulicht die Verwendung dieser Methode 12 4 12 5 Methode ITcTask GetCycleCounter Anzahl Taskzyklen seit Taskstart abfragen Syntax virtual HRESULT TCOMAPI GetCycleCounter PULONGLONG pCnt 0 Parameter pCnt Typ PULONGLONG out die Anzahl von Taskzyklen seit Task gestartet wurde wird in diesem Parameter gespeichert R ckgabewert E_POINTER wenn Parameter pCnt gleich NULL ansonsten S_OK Beschreibung Beispiel30 Zeitmessung gt 256 veranschaulicht die Verwendung dieser Methode 12 4 12 6 Method ITcTask GetCycleTime Abfrage der Taskzyklenzeit in Nanosekunden d h Zeit zwischen begin of task und n chstem begin of task Syntax virtual HRESULT TCOMAPI GetCycleTime PULONG pCycleTimeNS 0 Parameter pCycleTimeNS Typ PULONG out in diesem Parameter wird die konfigurierte Taskzyklenzeit in Nanosekunden gespeichert TC3 C Version 1 0 153 Programmierreferenz BECKHOFF Ruckgabewert E POINTER wenn Parameter pCnt gleich NULL sonst S_OK Beschreibung Beispiel30 Zeitmessung gt 256 ve
29. Projekts berpr fen Muss gegebenenfalls neu konfiguriert werden wenn Solutions von einer zu anderen Visual Studio Version migrieren Measurement Property Pages TAEA Configuration Active Debug v Platform Active TwinCAT RT 686 Configuration Manager Common Properties 4 General 4 Configuration Properties Output Directory SolutionDir Configuration General Intermediate Directory Configuration Target Name Target Extension Extensions to Delete on Clean Emile lol El Jai DAGAS BuildProjectName log nable Managed Incremental build 4 Project Defaults Confiquration Type Application exe 192 Version 1 0 TC3 C BECKHOFF Fehlersuche 14 3 Debug Unable to attach Wenn diese Fehlermeldung beim Starten des Debuggers zum Debugging eines TwinCAT C Projekts erscheint fehlt ein Konfigurationsschritt Si Ro e include Modulel h outes TcCOM Objects i ifdef _DEBUG NC Motion define new DEBUG_NEW ij Pic endif E SAFETY DEE IE Crs Microsoft Visual Studio es a EI Untitled z de J 4 Untitled1 Project D 7 gt al External Dependencies OO Unable to attach gt EI Header Files D 7 gt E Source Files 7 le b D TMC Files BE b TwinCAT RT Files gt TwinCAT UM Files gt Pi Untitledi_Objl CModule1 INTERFACE ENFRY TID_TTcMertcht fi uo lt AutoGeneratedContent id Inte INTERFACE_ENTRY IID_ITcCyclic T Devices lt AutoGeneratedContent gt RA
30. R ckgabewert void TC3 C Version 1 0 169 Programmierreferenz BECKHOFF 12 5 7 4 AdsAddDeviceNotificationCon Die Methode AdsAddDeviceNotificationCon best tigt eine ADS Ger t Hinzuf gen Notification Anforderung AdsAddDeviceNotificationReg gt 168 bildet das Gegenst ck und muss zuvor aufgerufen Syntax void AdsAddDeviceNotificationCon AmsAddr amp rAddr ULONG invokeld ULONG nResult ULONG handle Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes Handle handle Typ ULONG in Handle auf generierte Ger te Notification R ckgabewert void 12 5 8 AdsDelDeviceNotification 12 5 8 1 AdsDelDeviceNotificationReq Die Methode AdsDelDeviceNotificationReq erm glicht das Senden eines ADS Ger t L schen Notification Befehls um eine Ger te Notification von einem ADS Ger t zu entfernen Die AdsDelDeviceNotificationCon gt 171 wird beim Eingang der Antwort aufgerufen Syntax int AdsDelDeviceNotificationReq AmsAddr amp rAddr ULONG invokeld ULONG hNotification Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in
31. Repository TC_DRIVERPATH DriverDir C TwinCAT 3 x Driver TC_DRIVERAUTOINSTALLPAT H DriverAutolnstallDir C TwinCAT 3 x Driver Autolnstall TC_SYSSRVEXEPATH C TwinCAT 3 x SDK Bin TwinCAT UM x86 CLASSFACTORYNAME lt Name der Class Factory gt wobei x durch die installierte TwinCAT Version ersetzt wird 13 4 Module ver ffentlichen Der Abschnitt Module exportieren gt 31 beschreibt wie TwinCAT Module ver ffentlicht werden sodass sie auf ein beliebiges TwinCAT System bertragen und importiert gt 32 werden k nnen Das Engineering System XAE muss sich nicht notwendigerweise auf den gleichen Plattformtyp wie das Ausf hrungssystem befinden Hierzu erstellt TwinCAT im Verlauf der Ver ffentlichung alle Versionen des Moduls Bestimmte Anwendungsfalle erfordern eine Anpassung der Ver ffentlichung der Module e Beim Arbeiten in einer reinen 32Bit x86 Umgebung k nnen die x64 Erstellungen bersprungen werden sodass keine Zertifikate ben tigt werden e Die User Mode UM Erstellungen k nnen Ubersprungen werden wenn sie nicht verwendet werden Migration D Hinweis Wenn ein Build nicht im ver ffentlichten Modul enthalten ist kann die entsprechende Platt form nicht als Ausf hrungssystem verwendet werden Bitte die entsprechenden Zielplattformen in Bereitstellung gt 111 des TMC Editors hinzuf gen entfernen Folgende Bereitstel
32. S_OK Le TEE EE EE if SUCCEEDED DBG hr m _spSrv gt TcQuerySmartObjectInterface m spCyclicCaller if FAILED hr m _spCyclicCaller gt AddModule m spCyclicCaller TELSSCRSTITTECyelie D 2 m_spCyclicCaller NULL Sehen Sie dazu auch B Schnittstelle ITcCyclic gt 130 B Schnittstelle ITcloCyclicCaller gt 147 12 4 4 2 Methode ITcCyclicCaller RemoveModule Eine Modulinstanz vom Aufruf durch einen zyklischen Aufrufer abmelden Syntax virtual HRESULT TCOMAPI RemoveModule STcCyclicEntry pEntry 0 Parameter pEntry Typ STcCyclicEntry verweist auf den Listeneintrag der aus der internen Liste des zyklischen Aufrufers zu entfernen ist R ckgabewert Wenn der Eintrag nicht in der internen Liste ist gibt die Methode E_FAIL zur ck Beschreibung Vergleichbar mit der Methode AddModule wird der Smart Pointer f r den zyklischen Aufrufer als Listeneintrag verwendet wenn die Modulinstanz aus dem zyklischen Aufrufer entfernt werden soll Deklaration und Verwendung des Smart Pointers ITcCyclicCallerInfoPtr m_spCyclicCaller ae g m_spCyelicCaller m _spCyclicCaller gt RemoveModule m spCyclicCaller m_spCyclicCaller NULL 132 Version 1 0 TC3 C BECKHOFF Programmierreferenz 12 4 5 Schnittstelle ITcFileAccess Schnittstelle fur Zugriff auf Dateisystem von TwinCAT C Modulen aus Syntax TCOM_DECL_ INTERFACE 742A7429 DA6D 4C1D 80D8 398D8C1F1747
33. Search siz Name Untiled _Obj1 CModulet C Module Vendor Cancel E C Modules CModulel Module ine Multiple fi Type Insert Instance File c documents and settings S venG my documents visual studio 2010 Projects T winCAT Die neue Instanz Untitled1_Obj1 CModule1 wird Teil der TwinCAT 3 Solution Der neue Knoten findet sich genau unter der TwinCAT 3 C Quelle Untitled1 Project Das Modul stellt bereits eine einfache I O Schnittstelle mit je 3 Variablen zur Verf gung e Input area Value Status Data e Output area Value Control Data Die Beschreibung dieser Schnittstellen entspricht einander an zwei Stellen e lt Classname gt Services h in diesem Beispiel Untitled1Services h TC3 C Version 1 0 Schnellstart BECKHOFF winCAT Module Configuration tmc Datei in diesem Beispiel Untitled1 tmc TwinCAT Project8 Microsoft Yisual Studio File Edit View Project Build Debug TwinCAT PLC Team Data Tools Test Window Help e 22 ISG SZ 32 Ek OBERE s nA ER S CH A gt S Solution Explorer A X untitlediServices h x Lo Ex E gt _Module 1 Inputs m Solution TwinCAT Projects 1 project ES TwinCAT Project8 typedef struct _Modulellnputs SYSTEM Ex NC Motion unsigned long Value PLC unsigned long Status SAFETY unsigned long Data
34. Size Bits x64 specific x64 specific Unit Comment E Create symbol E Hide sub items Optional Defaults Value Enum String Value Min Max Optional properties iT Name Value Description Allgemeine Eigenschaften Number Nummer des Datenbereichs Type Definiert den Zweck und die Lage des Datenbereichs Verf gbar sind Verknupfbare Datenbereiche im Systemmanager e Input Source e Input Destination e Output Source e Output Destination Weitere Datenbereiche e Standard sichtbar aber nicht verkn pfbar im Systemmanager e Internal ber ADS erreichbare aber im Systemmanager nicht sichtbare Symbole e MArea f r internen Gebrauch e Retain f r internen Gebrauch e Not specified gleich Standard 104 Version 1 0 TC3 C BECKHOFF Assistenten Name Name des Datenbereichs Optionale Parametereinstellungen Size Bytes Gr e in Byte Fur x64 wird eine besondere Gr enkonfiguration bereitgestellt Comment Optionaler Kommentar der z B im Instanzenkonfigurator sichtbar ist Context ID Kontext ID aller Symbole dieses Datenbereichs Wird f r die Bestimmung des Mappings verwendet Data type name Wenn angegeben wird ein Datentyp mit dem angegebenen Namen im Typsystem erstellt Create Symbol Standardeinstellung f r ADS Symbolerstellung Disable Code Generation Die Code Generierung freigeben sperren Optionale Standardeinstellungen Die Standardeinstellungen k nnen in Funktion des Datentyps defin
35. Solution Explorer Alz 1 PROGRAM MAIN I Solution TwinCAT Project PLC calling C VAR a D TwinCAT Project PLC calling C Methoc p weng delt s E system 4 bInit BOOL Met MOTION 5 fbStateMachine FB StateMachine a grc 4 PLC calling statemachine 4 Si PLC calling statemachine P E External Types 1 nCounter nCounter 1 gt aj References Gy DUT 3 IF nCounter 500 THEN Ga GVLs 4 fbStateMachine SetState 1 a POUs 5 fbStateMachine Start E FB_StateMachine FB a ge E MAIN PRG S a vISUs o IF nCounter 1000 THEN PLC calling statemachin 10 fbStateMachine SetState 2 gt k i PlcTask PlcTask 11 END IF PLC calling statemachine In 12 8 KS SAFETY 13 IF nCounter 1500 THEN 4 C 14 fbStateMachine Stop 4 StateMachineDrv 15 nCounter 0 4 StateMachineDrv Project 1 END IF gt al External Dependencies b i Header Files n E Source Files Schritt 8 SPS Code kompilieren Hoffentlich wurde alles korrekt implementiert Ein guter Moment um das Projekt zu speichern und den SPS Code zu kompilieren 244 Version 1 0 TC3 C BECKHOFF C C Beispiele 8 Rechtsklick auf das SPS Projekt und Auswahl von Build GIE a ig SYSTEM License Real Time a amp Tasks amp Task1 PlcTask sfe Routes TcCOM Objects MOTION a D pc 4 PLC calling statemachine m Solution TwinCAT Project PLC calling C Method 1 project a Gi TwinCAT
36. TwinCAT hat keine Unterst tzung f r dynamic_cast lt gt Stattdessen kann die TCOM Vorgehensweise m glicherweise verwendet werden Definieren Sie eine Schnittstelle ICustom die von ITcUnknown abgeleitet ist und die die Methoden enth lt die von einer abgeleiteten Klasse aufgerufen werden Die Basisklasse CMyBase wird von ITcUnknown abgeleitet und diese auch implementieren Die Klasse CMyDerived wird von CMyBase und von ICustom abgeleitet Sie berschreibt die TcQuerylnterface Methode die dann anstelle von dynamic cast verwendet werden kann TcQuerylnterface kann auch zur Darstellung der IsType Funktion mittels Auswertung des R ckgabewerts verwendet werden Siehe Schnittstelle ITcUnknown gt 121 TC3 C Version 1 0 119 Programmierreferenz BECKHOFF 12 3 Speicherallozierung Im Allgemeinen wird empfohlen Speicher mit Hilfe von Member Variablen der Modulklasse zu reservieren Dies wird automatisch f r im TMC Editor definierte Datenbereiche gemacht Nichtsdestotrotz besteht die M glichkeit Speicherplatz dynamisch zu allozieren Diese dynamische Zuweisung wird zum Beispiel vom new Operator und den STL Containern verwendet Wird die Speicherallozierung in einem Nicht Echtzeitkontext vorgenommen dann wird der Speicher im non paged Pool des Betriebssystems blau im Diagramm alloziert Im TwinCAT Echtzeitkontext wird der Speicher im Routerspeicher rot im Diagramm alloziert 12 4 Schnittstellen F r die Inter
37. ULONGLONG ui64LastWriteTime DWORD dwFileSizeHigh DWORD dwFileSizeLow DWORD dwReservedl DWORD dwReserved2 CHAR cFileName 260 CHAR cAlternateFileName 14 WORD wReserved0 TcFileFindData PTcFileFindData 12 4 5 12 Methode ITcFileAccess FileFindClose Die Suche nach Dateien in einem Verzeichnis schlie en Syntax virtual HRESULT TCOMAPI FileFindClose TcFileFindHandle hFileFind Parameter hFileFind Typ PTcFileFindHandle in Handle um die Suche zu schlie en R ckgabewert Typ HRESULT Wenn die Dateisuche geschlossen werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E _TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode schlie t die Suche nach Dateien in einem Verzeichnis 12 4 5 13 Methode ITcFileAccess MkDir Ein Verzeichnis in einem Dateisystem erstellen Syntax virtual HRESULT TCOMAPI MkDir PCCH szDir Parameter szDir Typ PCCH in zu erstellendes Verzeichnis 140 Version 1 0 TC3 C BECKHOFF Programmierreferenz Ruckgabewert Typ HRESULT Wenn Verzeichnis erstellt werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode erstellt ein Verzeichnis entsprechend der Defi
38. abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode benennt eine Datei mit einem neuen Namen um 12 4 5 8 Methode ITcFileAccess FileDelete Nennt eine Datei um Syntax virtual HRESULT TCOMAPI FileDelete PCCH szFileName Parameter szFileName Typ PCCH in Name der zu l schende Datei R ckgabewert Typ HRESULT Wenn die Datei gel scht werden konnte wird S_OK zur ckgegeben TC3 C Version 1 0 137 Programmierreferenz BECKHOFF Besonders interessante Fehlercodes e AIDS E TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode l scht eine Datei aus dem Dateisystem 12 4 5 9 Methode ITcFileAccess FileGetStatus Fragt den Zustand einer Datei ab Syntax virtual HRESULT TCOMAPI FileGetStatus PCCH szFileName PTcFileStatus pFileStatus Parameter szFileName Typ PCCH in der Name der fraglichen Datei pFileStatus Typ PTcFileStatus out der Zustand der Datei Vergleiche mit TcFileAccessServices h R ckgabewert Typ HRESULT Wenn Zustand zur ckgegeben werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode fragt Zustandsinformationen bez glich eines gegebenen Dateinamen ab
39. gung und kann einer Ausgangsklemme analog oder Anzahl digitaler IOs zugeordnet werden Wie die in C geschriebene TC3 ADS Server Funktionalit t zu implementieren ist gt 201 Einen C ADS Client erstellen um mit C ADS Server zu interagieren Der Client stellt eine Ul zur Verf gung um lokal oder ber Netzwerk mit einem ADS Server mit zu z hlender ADS Schnittstelle verbunden zu werden Die Ul erm glicht das Starten Stoppen Lesen berschreiben und Zur cksetzen des Z hlers Beispielcode ADS Client UI geschrieben in C gt 205 Das Beispiel verstehen Im Beispiel werden M glichkeiten zur automatischen Bestimmung eines ADS Ports verwendet Dies hat den Nachteil dass der Client bei jedem Start konfiguriert werden muss um auf den richtigen ADS Port zuzugreifen Alternativ kann der ADS Port im Modul wie unten gezeigt hartkodiert werden Nachteil hier Das C Modul kann nicht mehr als einmal instanziiert werden da das Teilen eines ADS Ports nicht m glich ist Z MKE gt ULI LAGSLOMMUNICATIONMOQULE SETUDJSTATErS rILOminitvatanar pinitvata m_Trace Log tlVerbose FENTERA HRESULT hr S OK IMPLEMENT_ITCOMOBJECT_EVALUATE_INITDATA pInitData a9 ADS Client UI os e js hr SUCCEEDED hr InitAmsPort m_spSrv cleanup on failure if FAILED hr NetID 127 0 0 1 1 1 ShutdownAmsPort Port 03039 m_Trace Log tlVerbose FLEAV return hr Connect Client port 32968 opened Count
40. rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes noteAttrib Typ AdsNotificationAttrib in enth lt die Spezifikation der Notification Parameter cbLength TransMode MaxDelay R ckgabewert void 12 5 7 3 AdsAddDeviceNotificationRes Die Methode AdsAddDeviceNotificationRes erm glicht das Senden von einer ADS Ger t Hinzuf gen Notification Antwort AdsAddDeviceNotificationCon gt 170 bildet das Gegenst ck und wird anschlie end aufgerufen Syntax void AdsAddDeviceNotificationCon AmsAddr amp rAddr ULONG invokeld ULONG nResult ULONG handle Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes Handle Typ ULONG in Handle auf generierte Ger te Notification
41. schen bestehender Variablen im Datenbereich die Variable ausw hlen und dann auf das L schen Symbol klicken In diesem Beispiel MachineStatus1 ausw hlen und auf Delete symbol klicken a BG TMC b Data Types f Add remove and reorder Symbols a fg Modules f 4 fed CModule1 d 1 8Byte i al Ka i Z9 Implemented Interfaces Parameters Name Specification BaseType Size Size X64 Unit 4 M Data Areas Value Alias UDINT i a Inputs Status Alias UDINT a E Symbols Data Alias UDINT i m Value bEnable Alias INT i m Status 4 m Data m bEnable Bh Outputs a Dh DataArea3 E Symbols Eh Data Pointers Interface Pointers B Deployment 2 Den TMC Code Generator erneut ausf hren 11 3 4 3 2 Datenbereichseigenschaften Data Areas Properties Dialog zum Bearbeiten der Datenbereichseigenschaften TC3 C Version 1 0 103 Assistenten BECKHOFF 4 4 TMC a Data Types g Edit the properties of the Symbol DataType1 4 IInterface2 z a Ze Methods General properties Method 4 Wa AEN Name Value 4 fE CModule1 Specification Alias x 9 Implemented Interfaces 4 ig Parameters Choose data type SS TraceLevelMax 4 Data Areas SE t 4 Dh Data Description Normal Type a fh Symbols Value Type Information gt Eh Data Pointers Namespace b Interface Pointers e 18071995 0000 0000 0000 000000000008 ES Deployment keng f Optional symbol settings Offset Bits x64 specific
42. x86 Release TempContr TempContrClassFactory obj C TwinCAT3 SDK _products TwinCAT UM x86 Release TempContr TempContrCtrl obj C TwinCAT3 SDK _products TwinCAT UM x86 Release TempContr TempContrDrv obj C TwinCAT3 SDK _products TwinCAT UM x86 Release TempContr TempContrw32 obj Creating library C TwinCAT3 SDK _products TwinCAT UM x86 Release TempContrW32 1lib and ol TempContr vexproj gt C TwinCAT3 SDK _products TwinCAT UM x86 Release TempContrwW32 d11 C Program Files x86 Microsoft SDKs Windows v7 A bin mt exe nologo verbose out C TwinG Done building project TempContr vcxproj Project TempContr vcxproj TcPublishAdditionalFiles target s Done building project TempContr vcxproj Done building project TempContr vcxproj TwinCAT Publish Modules finished at 84 89 2012 12 11 29 Die bin ren Dateien und die TMC Modulbeschreibung werden in den Ordner TempContr unter C TwinCAT 3 x CustomConfig Modules exportiert 4 Kopieren Sie f r den Import lediglich den Ordner TempContr auf jede andere TwinCAT 3 Maschine gO Wb gt Computer OS Win7 C TwinCAT3 CustomConfig Modules TempContr Organize v Include in library v Share with e Burn New folder EN J TwincaT3 S Name Date modified Type Ji AdsApi A Boot J Common32 Common64 A Components A Config A CustomConfig p Modules J ContrSysPT2 1 TempContr J TwinCAT RT 86 E TwinCAT UM 686 A WTC
43. 0 231 C C Beispiele BECKHOFF e Schritt 10 Die Ausf hrung von beiden Modulen SPS und C beobachten gt 246 Schritt 1 Verf gbare Schnittstellen berpr fen Option 1 Zu C Modulinstanz navigieren Karteireiter Interfaces ausw hlen Die Schnittstelle IStateMachine befindet sich in der Liste mit ihrer spezifischen IID Interface ID od Solution TwinCAT Project PLC calling C Method 1 project a Gi TwinCAT Project PLC calling C Method a system License Real Time D ei Tasks Ste Routes TcCOM Objects MOTION gt Dec E sarety a face a E StateMachineDrv IZ StateMachineDrv Project a E StateMachineDrv_Objl CStateMachineModule D EN Inputs gt Mi Outputs ITComObject ITcCyclic 03000010 0000 0000 E000 000000000064 03000012 0000 0000 E000 000000000064 ITcADI 03000018 0000 0000 E000 000000000064 ITcWatchSource 6CA406AF 38C4 4CB9 9B8A 3497CA353A3F IStateMachine Option 2 Zu System navigieren Karteireiter Interfaces ausw hlen Die Schnittstelle IStateMachine befindet sich in der Liste mit ihrer spezifischen IID Interface ID Solution Explorer fa General Boot Settings Protection Data Types 5 Solution TwinCAT Project PLC calling C Method 1 project 4 TwinCAT Project PLC calling C Method Name a dl system License Real Time gt B Tasks Ste Routes TcCOM Objects MOTION gt Eric sarety 4 fa
44. 149 Abfrage von erweiterten TwinCAT Taskinformationen ITcTask gt 150 Abfrage von Zeitstempel und taskspezifischen Informationen eines TwinCAT Tasks Dar ber hinaus k nnen von TwinCAT 3 bereit gestellte mathematische Funktionen gt 173 verwendet werden 12 4 1 Schnittstelle TcUnknown ITcUnknown definiert die Referenzz hlung sowie das Abfragen einer Referenz auf eine spezifischere Schnittstelle Syntax TCOM_DECL_INTERFACE 00000001 0000 0000 e000 000000000064 ITcUnknown Deklariert in Tclnterfaces h Ben tigtes include Methoden Sym Name Beschreibung bol H TcAddRef gt 122 Inkrementiert den Referenzzahler H TcQueryInterface gt 122 Abfrage der Referenz an eine implementierte Schnittstelle ber der IID H TcRelease 123 Dekrementiert den Referenzzahler Anmerkungen Jede TcCOM Schnittstelle ist direkt oder indirekt von ITcUnknown abgeleitet Demzufolge implementiert jede TcCOM Modulklasse ITcUnknown weil sie von ITComObject abgeleitet ist Die standardm ige Implementierung von ITcUnknown sorgt daf r dass das Objekt nach Freigabe der letzten Referenz gel scht wird Aus diesem Grunde muss ein Schnittstellenzeiger nach dem Aufruf von TcRelease nicht dereferenziert werden TC3 C Version 1 0 121 Programmierreferenz BECKHOFF 12 4 1 1 Methode ITcUnknown TcAddRef Diese Methode inkrementiert den Referenzz hler
45. 2012 2013 mit Rechtsklick auf Run As Admin installieren Selbst dann wenn Sie der Admin auf der Maschine sind Microsoft Windows Driver Kit WDK Wenn Sie C Module implementieren und debuggen wollen muss Microsoft Windows Driver Kit WDK installiert sein Windows Driver Kit WDK installieren gt 13 TwinCAT 3 Installation XAE Engineering Auf dem Laufzeit PC IPC oder Embedded CX Rechner mit Microsoft Betriebssystem Windows XP oder Windows 7 oder h her Microsoft Visual Studio muss nicht installiert werden Microsoft Windows Driver Kit WDK muss nicht installiert werden F r die Integration und Nutzung bestehender bin rer C Module in eine TwinCAT 3 SPS Umgebung ist keine zus tzliche Installation erforderlich TwinCAT 3 Installation XAR Laufzeit Limitierungen auf dem Laufzeit PC TwinCAT 3 0 unterst tzt 32 Bit Betriebssysteme nur als Zielplattform Laufzeit PC Auf x64 PCs kann TC3 0 als Engineering Plattform verwendet werden das Programm kann ber Netzwerk auf einen 32bit x86 Remote PC bertragen und dort ausgef hrt werden TC3 1 unterst tzt auch x64 Bit Betriebssysteme als Zielplattform Laufzeit PC Die Ziellaufzeit muss auf Windows NT Kernel basieren wie Windows XP Windows 7 oder die embedded Versionen wie Windows XP Embedded Windows Embedded Standard 2009 Windows Embedded Standard 7 12 Version 1 0 TC3 C BECKHOFF Vorbereitung nur einmal
46. 5 1 Methode ITcFileAccess FileOpen ffnet eine Datei Syntax virtual HRESULT TCOMAPI FileOpen PCCH szFileName TcFileAccessMode AccessMode PTcFileHandle phFi le TC3 C Version 1 0 133 Programmierreferenz BECKHOFF Parameter szFileName Typ PCCH in der Name der zu ffnenden Datei AccessMode Typ TcFileAccessMode in Art des Zugriffs auf die Datei siehe TcFileAccessServices h phFile Typ TcFileHandle out zuruckgegebener Datei Handle Ruckgabewert Typ HRESULT Bei Erfolg gibt die Methode S_OK zur ck Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Die Methode gibt einen Handle f r den Zugriff auf die Datei zur ck dessen Name in szFileName definiert ist AccessModes k nnen folgenderma en verwendet werden typedef enum TcFileAccessMode amRead 0x00000001 amWrite 0x00000002 amAppend 0x00000004 amPlus 0x00000008 amBinary 0x00000010 amReadBinary 0x00000011 amWriteBinary 0x00000012 amText 0x00000020 amReadText 0x00000021 amWriteText 0x00000022 amEnsureDirectory 0x00000040 amReadBinaryED 0x00000051 amWriteBinaryED 0x00000052 amReadTextED 0x00000061 amWriteTextED 0x00000062 amEncryption 0x00000080 amReadBinEnc 0x00000091 amWriteBinEnc 0x00000092 amReadBinEncED 0x000000d1 amWriteBinEncED 0x000000d2 Tc
47. 5 Vorbereitung nur einmal Ein PC f r das Engineering von TwinCAT C Modulen muss vorbereitet werden Diese Schritte m ssen nur einmal durchgef hrt werden e Microsoft Windows Driver Kit WDK gt 13 muss installiert werden und e TwinCAT Basis gt 15 sowie Konfigurations und Plattform gt 16 Symbolleiste m ssen konfiguriert werden e Auf x64 PCs m ssen Module signiert sein damit sie ausgef hrt werden k nnen Siehe Dokumentation zum Setup einer Testsignierung gt 16 5 1 Microsoft Windows Driver Kit WDK Installation bersicht Die Implementierung von TwinCAT 3 C Modulen erfordert Teile des Windows Driver Kit WDK El HINWEIS Die Installation ist nur f r die TwinCAT 3 Engineering Umgebung erforderlich um C Module erstellen und bearbeiten zu k nnen F r die Zielplattform der TwinCAT 3 Runtime wird sie nicht ben tigt 1 Windows Driver Kit 7 1 aus dem Microsoft Download Center herunterladen http www microsoft com downloads en details aspx displaylang en amp FamilyID 3632630f 5d56 43b5 b996 7633f2ec14ff Windows Driver Kit Version 7 1 0 The Windows Driver Kit WDK Version 7 1 0 is an update to the WDK 7 0 0 release and contains the tools code samples documentation compilers headers and libraries with which software developers create drivers for Windows 7 Windows Vista Windows XP Windows Server 2008 R2 Windows Server 2008 and Windows Server 2003 Details
48. 7 Wahlen Sie den Unterknoten Symbol4 oder doppelklicken Sie auf die Zeile Die Variableneigenschaften werden eingeblendet 102 Version 1 0 TC3 C BECKHOFF Assistenten 8 Geben Sie einen neuen Namen z B boEnableJob ein und ndern den Typ in BOOL ga TMC b Data Types Le Edit the properties of the Symbol a EC Modules a ER CModule e 3 Implemented Interfaces Generel properties Parameters 4 7 Data Areas Name 4 E Inputs Specification Alias a Eh Symbols un m Value Ch e m Status type m Data GE set g Eh Outputs Description Normal Type a Dh DataArea3 m E bel Tyne Information Choose data type Dg Name Namespace Guid Specification Size ADMSYNC_COPYINFO 18071995 0000 0000 0000 000000000051 Struct 32 0 a AMSADDR 18071995 0000 0000 0000 000000000042 Struct 8 0 AMSHEAD 18071995 0000 0000 0000 000000000043 Struct 32 0 AMSNETID 18071995 0000 0000 0000 000000000041 Array lso E 18071995 0000 0000 0000 000000000010 Alias 18071995 0000 0000 0000 000000000017 Alias E 18071995 0000 0000 0000 000000000030 Enumeration 1 0 9060ae9d 214d 4685 a4c0 cd1082626764 Enumeration 4 0 Av miie PATE In EELER D Letztendlich wird die neue Variable bEnableJob im Datenbereich Input erzeugt DI HINWEIS Nicht vergessen den TMC Code Generator erneut auszuf hren Bestehende Variablen l schen 1 Zum L
49. AddPostModule gt 144 Modul anmelden das die ITcPostCyclic Schnittstelle implementiert DH RemovePostModule gt 145 Zuvor angemeldete ITcPostCyclic Schnittstelle eines Moduls abmelden Anmerkungen Die ITcPostCyclicCaller Schnittstelle wird von TwinCAT Tasks implementiert Ein Modul verwendet diese Schnittstelle um seine ITcPostCyclic Schnittstelle bei einem Task anzumelden normalerweise als letzten Initialisierungsschritt beim SafeOP zum OP bergang Nach der Anmeldung wird die Methode PostCycleUpdate der Modulinstanz aufgerufen Die Schnittstelle wird ebenfalls zum Abmelden des Moduls verwendet damit es nicht mehr vom Task aufgerufen wird 12 4 8 1 Methode ITcPostCyclicCaller AddPostModule Meldet die ITcPostCyclic Schnittstelle eines Moduls bei einem zyklischen Aufrufer z B einem TwinCAT Task an Syntax virtual HRESULT TCOMAPI AddPostModule STcPostCyclicEntry pEntry ITcPostCyclic ipMod ULONG PTR context 0 ULONG sortOrder 0 0 Parameter pEntry Typ STcPostCyclicEntry in Zeiger auf einen Listeneintrag welcher in die interne Liste des zyklischen Aufrufers eingef gt wird Siehe auch Beschreibung ipMod Typ ITcPostCyclic in Schnittstellenzeiger der vom zyklischen Aufrufer verwendet wird context Typ ULONG_PTR optional ein Kontextwert der bei jedem Aufruf an die ITcPostCyclic PostCyclicUpdate Methode bergeben wird 144 Version 1 0 TC3 C BECKHOFF Programmierreferenz sortOrder
50. Aufruf durch einen zyklischen Aufrufer abmelden Syntax virtual HRESULT TCOMAPI RemovePostModule STcPostCyclicEntry pEntry 0 Parameter pEntry Typ STcPostCyclicEntry verweist auf den Listeneintrag der aus der internen Liste des zyklischen Aufrufers zu entfernen ist R ckgabewert Wenn der Eintrag nicht in der internen Liste ist gibt die Methode E_FAIL zur ck TC3 C Version 1 0 145 Programmierreferenz BECKHOFF Beschreibung Vergleichbar mit der Methode AddPostModule wird der Smart Pointer fur den zyklischen Aufrufer als Listeneintrag verwendet wenn die Modulinstanz aus dem zyklischen Aufrufer entfernt werden soll Deklaration und Verwendung des Smart Pointers ITcPostCyclicCallerlnfoPtr m_spPostCyclicCaller AE DE EE EE ee ech m_spPostCyclicCaller gt RemovePostModule m_spPostCyclicCaller MESpPoseGycilicGalilier NULE 12 4 9 Schnittstelle ITcloCyclic Diese Schnittstelle wird von TwinCAT Modulen implementiert die bei Eingang Aktualisierung und bei Ausgang Aktualisierung innerhalb eines Taskzyklus aufgerufen werden Syntax TCOM_DECL_INTERFACE 03000011 0000 0000 e000 000000000064 ITcIoCyclic struct _ declspec novtable ITcIoCyclic public ITcUnknown Ben tigtes include TcIoInterfaces h Methoden Sym Name Beschreibung bol e InputUpdate gt 146 Wird zu Beginn eines Taskzyklus aufgerufen wenn die Schnittstelle bei einem zyklischen O Au
51. Bestimmung der verf gbaren Variablen siehe Live Watch Fenster Alle aufgef hrten Variablen k nnen f r die Formulierung von Bedingungen herangezogen werden Dazu geh ren sowohl TMC definierte Symbole als auch lokale Member Variablen Beispiele m counter 129 ep he l m counter 123 m coumeer2 321 amp amp hr a Cowmceie 123 Weitere Anmerkungen e berwachung von Modul Instanzen Die OID des Objekts ist in m_objId gespeichert somit kann z B die berwachung des OID folgenderma en aussehen m objId 0x01010010 e berwachung von Tasks Es wird eine spezielle Variable taskId bereitgestellt um auf die OID des aufrufenden Tasks zugreifen zu k nnen Z B taskID 0x02010010 Option Has changed Die Option Has changed ist einfach zu verstehen Indem Variablennamen bereitgestellt werden wird der Wert berwacht und die Ausf hrung angehalten wenn der Wert sich gegen ber dem vorangegangenen Zyklus ge ndert hat Beispiele TC3 C Version 1 0 63 Debuggen BECKHOFF m counter m counter amp amp m counter2 64 Version 1 0 TC3 C BECKHOFF Assistenten 11 Assistenten Um den Einstieg in das Engineering des TwinCAT C Systems zu vereinfachen stehen Assistenten zur Verf gung e Der TwinCAT Projekt Assistent 65 erstellt ein TwinCAT C Projekt Im Falle von Treiber Projekten wird anschlie end der TwinCAT Class Wizard gestartet Der TwinCAT Module Class Wizard
52. Bin rkonfiguration von einer Maschine Quelle zu einer anderen Maschine Ziel v Bitte den Ordner C TwinCAT 3 x Boot auf der Quell Maschine leeren 1 Das Modul auf der Quellmaschine erstellen oder aktivieren 2 Den Ordner C TwinCAT 3 x Boot von der Quelle zum Ziel bertragen 3 Den Treiber selber von C TwinCAT 3 x Driver Autolnstall MYDRIVER sys und MYDRIVER pdb bertragen Die Zielmaschine kann gestartet werden 186 Version 1 0 TC3 C BECKHOFF How to Umgang mit Lizenzen Beachten Sie dass die Lizenzen nicht auf diese Weise bertragen werden k nnen Ver R wenden Sie bitte vorinstallierte Lizenzen Volumenlizenzen oder andere Mechanismen um Hinweis Lizenzen bereitzustellen 13 6 Zugriff auf Variablen ber ADS Variablen von C Modulen sind ber ADS erreichbar wenn die Variable im TMC Editor als Create Symbol gekennzeichnet sind CModule1 Comment Controls the amount of log messages Implemented Interfaces Context ID 1 4 4 Parameters TraceLevelMax u Create symbol Parameter Disable code generation Eh Data Areas dl Hide parameter Der Name der Variablen f r den Zugriff per ADS ist abgeleitet vom Name der Instanz F r den TraceLevelMax Parameter k nnte er lauten Untitledi_Obj1 CModulel TraceLevelMax 13 7 TcCallAfterOutputUpdate f r C Module Vergleichbar mit dem SPS Attribut TcCallAfterOutputUpdate k nnen C Module nach d
53. CAdsCommunicationModule AdsPort Name AdsCommunicationModule_Obj1 CAdsCommunicationModule Counter AdsCommunicationModule_Obj1 CAdsCommunication Module opge Data Index Group AdsCommunicationModule_Obj1 CAdsCommunicationModule Inputs Status AdsCommunicationModule_Obj1 CAdsCommunicationModule Inputs Value Index Offset AdsCommunicationModule_Obj1 CAdsCommunicationModule Outputs Control AdsCommunication Module _Obj1 CAdsCommunicationModule Outputs Data Size i AdsCommunicationModule_Obj1 CAdsCommunicationModule Outputs Value Datatype Datatype Id Value Load Symbols N flat NetID 127 0 0 1 1 1 ADS Port 350 Write using WriteSymbol Watch Symbol Name Value Watch Current Symbol New Value Write using Variable Handle m Symbol Info Symbol Name MAIN INT32_1 Read Symbol Info Find Symbol 15 7 Beispiel07 Empfang von ADS Notifications Dieser Artikel beschreibt die Implementierung eines TC3 C Moduls das ADS Notifications bez glich Daten nderungen auf anderen Modulen empf ngt Weil jede andere ADS Kommunikation auf hnliche Weise implementiert werden muss kann dieses Beispiel als allgemeiner Einstiegspunkt f r die Initialisierung der ADS Kommunikation von TwinCAT C Modulen aus betrachtet werden Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem aus
54. Ctri Alt Y F a Ei Untitiedi_Obji I Restart CtrleShift F5 e IntelliTrace Calls Ctrl Alt Y T Objectlinpu jh Attach to Process a pee Se 1 Items 0 changed a Wy ObjectlOuty Cirle AlteE 7 Be Value Memory gt Control ru amp Disassembly Ctri Alt D F E Data FLO E Registers Ctri Alt G 5 VO Configuration Shift FL1 S 4 LS ec S TwinCAT LiveWatch 000 LM amp 3 QuickWatch Shift F9 STAA 23 Solutio ae Toggle Breakpoint Di Ready na S SCH in125 Col8 SE INS gt Die TwinCAT Live Watch Fenster zeigen eine Liste aller Variablen im Modul Per Drag amp Drop in die Uberwachungsliste watch list gezogene Variablen werden ohne das Setzen eines Haltepunktes berwacht 11 Um den Wert einer Uberwachungsvariablen zu ver ndern einfach einen neuen Wert eingeben Der neue Wert wird in rot und in Klammern angezeigt a Search p mpe m_eTcomState m_ePendState m_accessCnt m_spCaller m_Parameter m_Inputs m_Outputs m_counte m m Name Value Type CObject1 0x860D3F40 m_counter 8485 1 unsigned TC3 C Version 1 0 57 Schnellstart BECKHOFF 12 Durch Klicken auf das gr ne Symbol wird der neue Wert in den Prozess geschrieben m_eTcomState m_ePendState L m_accessCnt m_spCaller m_Parameter L m_Inputs L m_Outputs m_counter d Name Value Type CObject1 0x860D3F40 m_counter 1 unsigned i
55. Data Pointers Define the data type b Interface Pointers Deployment Select TeTraceLevel mn Description Normal Type e Type Information Name TcTraceLevel Namespace Guid Optional parameter settings Size Bits Unit Comment Controls the amount of log messages Context ID 1m Create symbol Disable code generation s Hide parameter Online parameter E Read only 100 Version 1 0 TC3 C BECKHOFF Assistenten 11 3 4 3 Datenbereiche Data Areas Dialog zum Bearbeiten der Datenbereiche Ihres Moduls Untitled1 tmc TMC Editor X ws ga TMC Data Types th Add remove and reorder Data Areas a fg Modules a t se BEI I Number Area Type Name Size Size X64 Context Disable Code Generation a LD Data Areas 0 Input Destination Inputs 1 EI Inputs 1 Output Source Outputs 1 EI D Outputs 3 Standard DataAre 1 E DN DataAres3 Eh Data Pointers Interface Pointers BE Nenlovment Symbol Funktion J Einen neuen Datenbereich hinzuf gen L scht den ausgew hlten Datenbereich Verschiebt das ausgew hlte Element um eine Position nach unten Verschiebt das ausgew hlte Element um eine Position nach oben Byte Alignment ausw hlen 8 Byte CH Ausgew hlten Datentyp ausrichten EI Datenformat des ausgew hlten Bereichs zur cksetzen Bei der Festlegung des Alignment eines Datenbereichs wird dieses f r alle seine Elemente Symbole und auch de
56. Data Type Information b Bi Outputs Na a a Bi DataArea3 Symbols Guid 18071995 0000 0000 0000 000000000030 Eh Data Pointers Interface Pointers Be Deployment Configure the parameter ID User defined Enter a unique ID Value x00000001 Generate ID Constant Name PID_Module1bEnable Optional parameter settings Size Bits x64 specific x64 specific Unit Comment Context ID 1 sl E Create symbol E Disable code generation E Hide parameter E Hide sub items Online parameter E Read only Optional properties Name Value Description Allgemeine Eigenschaften Name Name der Schnittstelle Specification Datentyp des Parameters Siehe Spezifikation Datentyp ausw hlen Select Datentyp ausw hlen Typinformation e Namespace Benutzerdefinierter Namensraum des Datentyps e GUID Eindeutige ID des Datentyps Enter a unique ID Value Einen eindeutigen ID Wert eingeben Siehe Parameter gt 93 Constant Name Quellcodename der Parameter ID Optionale Parametereinstellungen Size Bits Berechnete Gr e in Bits wei e Felder und in Byte Bit Notation graue Felder Fur x64 wird eine besondere Gr enkonfiguration bereitgestellt Unit Eine Einheit der Variablen Comment Kommentar der z B im Instanzenkonfigurator sichtbar ist Context ID Kontext welcher beim Zugriff auf den Parameter durch ADS verwendet wird TC3 C Version 1 0 99 Assistenten BECKHOFF Create S
57. Folgen Sie dieser schrittweisen Einf hrung bez glich der Implementierung eines C Moduls das eine Schnittstelle zur Zustandsmaschine zur Verf gung stellt e Ein SPS Modul um die Funktionalit t des C Moduls aufzurufen Dass keine hartkodierte Verkn pfung zwischen der SPS und dem C Modul existiert ist ein gro er Vorteil Stattdessen kann die aufgerufene C Instanz im Systemmanager konfiguriert werden Folgen Sie dieser schrittweisen Einf hrung bez glich der Implementierung eines SPS Projekts das Methoden von einem C Modul aufruft Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Das Beispiel auf Ihre lokale Maschine erstellen auf beide Projekte rechtsklicken und auf Build klicken 4 Das Programm starten auf die activate configuration Schaltfl che in TwinCAT 3 dr cken TC3 C Version 1 0 217 C C Beispiele BECKHOFF 15 9 1 Beispiel11 Eine Methode zur Verf gung stellendes TwinCAT 3 C Modul Dieser Artikel beschreibt die Erstellung eines TwinCAT 3 C Moduls das eine Schnittstelle mit einigen Methoden zur Verf gung stellt die von einer SPS aber auch von anderen C Modulen aufgerufen werden kann Die Idee besteht darin eine einfache Zustandsmaschine in C zu erstellen die von anderen Modulen von au en gestartet und gestoppt werden kann aber auch das Setzen oder Lesen des bestimmten
58. Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen hNotification Typ ULONG in enth lt das Handle der zu entfernenden Notification R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes gt 260 12 5 8 2 AdsDelDeviceNotificationind Die Methode AdsAddDeviceNotificationCon erm glicht den Empfang von einer ADS Ger t L schen Notification Best tigung Das empfangende Modul muss diese Methode bereitstellen Die AdsDelDeviceNotificationRes gt 171 muss aufgerufen werden um den Vorgang zu best tigen 170 Version 1 0 TC3 C BECKHOFF Programmierreferenz Syntax void AdsDelDeviceNotificationCon AmsAddr amp rAddr ULONG invokeId ULONG nResult Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 R ckgabewert void 12 5 8 3 AdsDelDeviceNotificationRes Die Methode AdsAddDeviceNotificationRes erm glicht den Empfang von einer ADS Ger t L schen Notification AdsDelDeviceNotificationCon gt 171 bildet das Gegenst ck und wird anschlie end aufgerufen Syntax int AdsDelDevic
59. ITcADI 03000012 0000 0000 E000 000000000064 Implemented Interfaces P o f T Parameters b E Data Areas Dh Data Pointers b Interface Pointers Deployment Choose data type Ea Name Namespace Guid Specification Size ITcAppServices 08500102 0000 0000 000 000000000064 Interface Jan 8 0 ITcAppServices2 08500104 0000 0000 e000 000000000064 Interface 4 0 8 0 TTcBaseClassFactory 100000018 0000 0000 e000 000000000064 Interface 14 0 8 0 ITcCyclicCaller 0300001 e 0000 0000 2000 000000000064 Interface 14 0 8 0 TTeFthernetAdanter Ttaan anan nnnn nann ennn nnnnnnnnnas4t linterface Tanam Schritt 3 Die neue Schnittstelle zu Implemented Interfaces hinzuf gen ir a W qi 13 W hlen Sie das Modul das mit der neuen Schnittstelle erweitert werden soll in diesem Falle w hlen Sie das Ziel Modules gt CModule1 14 Die Liste der implementierten Schnittstellen wird mittels Klicken auf die Schaltfl che mit Add a new interface to the module um eine neue Schnittstelle erweitert Untitled1 tmc TMC Editor X A B 3a TMC b Data Types 3 Shows the implemented interfaces of the module 4 ei Modules 4 R CModule1 t Q Implemented Interfaces e I Parameters Name Interface ID Disable Code Generation b m Data Areas ITComObject 100000012 0000 0000 E000 000000000064 7 Eh Data Pointers ITeCyclic 03000010 0000 000
60. In diesem Falle wird ein Z hler um den Wert der Variablen Value im Logik Eingangsabbild inkrementiert Ersetzen Sie eine Zeile um den Zahler zu inkrementieren ohne Abhangigkeit des Werts vom Logik Eingangsabbild Diese Zeile bp CouUmEsi m Iams Value durch diese ersetzen m_countertt 3 Speichern Sie die Anderungen 9 4 Compile Build a TwinCAT 3 C project In diesem Artikel wird beschrieben wie eine bereits implementierte C Modulklasse erstellt wird Nach der Implementierung der zyklischen benutzerdefinierten Logik in das TwinCAT C Projekt muss das Projekt nach jeder Code Anderung kompiliert werden 1 Wahlen Sie die Zielplattform aus entsprechend der die Kompilierung vorgenommen werden soll TwinCAT RT x86 ist die standardm ige und sie kann auch f r dieses Beispiel beibehalten werden TwinCAT Project8 Microsoft Yisual Studio File Edit View Project Build Debug TwinCAT PLC Team Data Tools Tr tee glg2s e oor RW TwinCAT RT x86 wee TwinCAT RT x86 TwinCAT UM x66 r A a da A pea a P Solution TwinCAT Project8 1 project H 9 Twincat Projects SYILTTTETETT 44 Version 1 0 TC3 C BECKHOFF Schnellstart 2 Rechtsklick auf das TwinCAT 3 C Projekt und Auswahl von Build oder Rebuild DI HINWEIS In den ersten Versionen muss TwinCAT 3 im Zustand Config Mode sein TwinCAT Project8 Microsoft Yisual Studio File Edit Yiew Project Build Debug TwinCAT P
61. Interface ID Disable Code Generation gt ij Data Areas ITComObject 00000012 0000 0000 E000 000000000064 i Data Pointers ITeCyclie 03000010 0000 0000 E000 000000000064 t Interface Pointers ITcADI 03000012 0000 0000 E000 000000000064 ES Deployment ITcWatchSource 03000018 0000 0000 E000 000000000064 IStateMachine 9f4c3fe 4a6b 4a97 8f97 1e5b 15cb 1bb5 226 Version 1 0 TC3 C BECKHOFF C C Beispiele Schritt 6 Starten Sie den TwinCAT TMC Code Generator um einen Code fir die Modulklassenbeschreibung zu erzeugen 27 Um den C C Code anhand von diesem Modul zu generieren klicken Sie mit der rechten Maustaste in das C C Projekt und w hlen dann den TwinCAT TMC Code Generator s aie E r 4 i i StateMachineDrv tmc Tmc H ala m Solution TwinCAT Project PLC calling C Method 1 a Gi TwinCAT Project PLC calling C Method gt system MOTION Gj Pic E SAFETY TwinCAT TMC Code Generator a face Build 4 StateMachineDrv Rebuild a 7 StateMachineDrv Project gt gill External Dependencies Check all objects PLC_calling_stater Header Files Clean i Source Files Project Only a BB TMC Files Profile Guided Optimization m Da Lin NM 2 Daraufhin enth lt das Modul StateMachineModule cpp die neuen Schnittstellen CModule1 Start CModule1 Stop CModule1 SetState SHORT State CModule1 GetState SHORT pState Schritt 7 Implementierung der Membervariablen und de
62. Konfiguration von Modulinstanzen e Programmierreferenz gt 117 Dieses Kapitel enth lt ausf hrliche Informationen zur Programmierung in TwinCAT C Hier findet man Schnittstellen und andere TwinCAT Funktionen f r ADS Kommunikation und Hilfsmethoden e Das How to gt 180 Kapitel enth lt n tzliche Tipps f r das Arbeiten mit TwinCAT C e Beispiele gt 196 Einige Schnittstellen und deren Verwendung sind ausf hrlich in Form eines ausf hrbaren Programms beschrieben das als Download mit Quellcode und Solution zur Verf gung gestellt wird Sehen Sie dazu auch B Module exportieren gt 31 Einleitung gt 9 Schnittstellen gt 120 8 Version 1 0 TC3 C BECKHOFF Einleitung 3 Einleitung Die Methode klassische Automatisierungsgerate wie speicherprogrammierbare Steuerungen SPS und numerische Steuerungen NC als Software auf leistungsstarker Standard Hardware nachzubilden ist seit vielen Jahren der Stand der Technik und wird nun von vielen Herstellern praktiziert Es gibt viele Vorteile aber der wichtigste ist sicher dass die Software weitgehend hardwareunabhangig ist Das hei t zum einen dass die Leistungsf higkeit der Hardware speziell an die Anwendung angepasst werden kann und zum anderen dass man automatisch von ihrer Weiterentwicklung profitieren kann Dies gilt insbesondere f r PC Hardware deren Leistung noch immer dramatisch schnell ansteigt Die relative Unabh ngigkeit von
63. M Edit the properties of the method 4 StateMachine 4 Methods e Stert General properties a E Modules S 4 Fed CStateMachineModule 3 Implemented Interface Define the data type l Parameters b Eh Data Areas Select HRESULT mm E PEPEE Description Normal Type b Inte ointers Beete Type Information H Name HRESULT Namespace Guid 18071995 0000 0000 0000 000000000019 Define the parameters of the method p t Name Type Description Default Value 15 Ein dritte Methode hinzuf gen und diese SetState nennen TC3 C Version 1 0 223 C C Beispiele BECKHOFF 16 Anschlie end k nnen Sie mit einem Klick auf Add a new parameter Parameter hinzuf gen Parameter der Methode SetState bearbeiten 4 WW TMC a gt Data Types 4 o StateMachine a Methods Start Stop 4 Ki Modules 4 fj CStateMachineModule 29 Implemented Interfaces I Parameters b Eh Data Areas i Data Pointers b Interface Pointers Lei Deployment M Edit the properties of the method General properties Name SetState Define the data type Select HRESULT Description Normal Type e Type Information Name HRESULT Namespace Guid 18071995 0000 0000 0000 000000000019 Define the parameters of the method p 7 Name Type Description Default Value ee 17 Standardm ig wird der neue Parameter Parameter als Normal Type INTEGER erzeugt 18 Auf den Name
64. Modus gewechselt werden soll Restart TwinCAT System in Run Mode gt Bei OK wechselt das TwinCAT 3 Projekt in den Run Modus Bei Cancel bleibt TwinCAT 3 im Config Modus Nach dem Wechsel in den Run Modus leuchtet das TwinCAT System Service Symbol in der Taskleiste gr n auf 19 20 28 07 2011 oe gt ee CALS bad 9 9 TwinCAT 3 C Projekt debuggen Dieser Artikel beschreibt das Debuggen des TwinCAT 3 C Beispielprojekts Hauptbestandteile sind An C Modulinstanz anh ngen gt 53 1 2 Membervariablen berwachen ohne Haltepunkte gt 56 3 Haltepunkte setzen gt 58 4 Clean up Trennen gt 58 An C Modulinstanz anh ngen Das C Zielmodul kann auf zwei Arten angebunden werden Option Um an das TwinCAT Modul anzuh ngen TC3 C Version 1 0 53 Schnellstart BECKHOFF 1 Debug gt Attach to process in der Visual Studio Umgebung w hlen Windows gt PLC Solution Explorer Login fA S R Flow Control gt Si External b Start a Header l m Stop nl ms amp Logout in Obj E Force values to all online applications F Ei Unforce all values on all online applications in Untit GI Write values to all online applications D Until W Single Cycle in Untit Reset warm a rn Reset cold ei Start Debugging F5 Za Untit gt Start Without Debugging Ctri F5 3 de WA Start Performance Analysis Alt F2 D iki
65. Programmierreferenz 12 5 6 2 AdsWriteControllnd Mit der Methode AdsWriteControllnd kann ein ADS Schreibsteuerungsbefehl zur nderung des ADS und Ger testatus eines ADS Ger ts gesendet werden Die AdsWriteControlRes gt 167 muss aufgerufen werden um den Vorgang zu best tigen Syntax void AdsWriteControllnd AmsAddr amp rAddr ULONG invokeld USHORT adsState USHORT deviceState ULONG cbLength PVOID pDeviceData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen adsState Typ USHORT in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes deviceState Typ USHORT in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbLength Typ ULONG in enth lt die L nge in Bytes der Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem die geschriebenen Daten sich befinden R ckgabewert void 12 5 6 3 AdsWriteControlRes Die Methode AdsWriteControlRes erm glicht das Senden von einer ADS Schreibsteuerungsantwort AdsWriteControlCon 168 bildet das Gegenst ck und wird anschlie end aufgerufen Syntax int AdsWriteControlRes AmsAddr amp rAddr ULONG invokeld ULONG nResult Parameter rAddr Typ AmsAdd
66. Project PLC calling C Method gt External Type gt lt j References a 2 FB_StateN a EjPLC calling statr m Login IF ipSta Stop END IF N Ww DUTs Rebuild GVLs a Pous Check all objects Clean Gratulation das Ergebnis der Kompilation zeigt 1 succeeded 0 failed al c i FB_StateMac hine PROGRAM MAIN TwinCAT Project PLC calling C Method MAIN x NK MOTION H 0 a m PLC 3 gies INT 4 fa PLC calling statemachine Sans i a 5 4 Sj PLC calling statemachine Project e END VAR 8 PZP s gt E External Types Ga DUT u GVLs 1 IF bInit THEN gt 9 POUs 2 fbStateMachine Init VISUs 3 bInit FALSE Library Manager ben gl PLC calling statemachine tm E SS PlcTask PlcTask a nCounter nCounter 1 Pi PLC calling statemachine Instanc K IF nCounter 500 THEN E am 9 fbStateMachine SetState 1 fc 10 fbStateMachine Start a E StateMachineDrv b 2 StateMachineDrv Project dl m CH Solution Expl RS Team Explorer BR Class View Output END_IF TF nfanntrer 1999 THEN Show output from Build 4 lalala E Size of generated code 16636 bytes Size of global data 6511 bytes Total allocated memory size for code and data 532392 bytes Memory area contains Data Input Output Memory Code and Persistent Data highest used address 1048576 Build complete errors warn
67. Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Lesebefehls Siehe AdsStatuscodes gt 260 cbLength Typ ULONG in enth lt die L nge in Bytes der gelesenen Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem sich die Daten befinden TC3 C Version 1 0 159 Programmierreferenz BECKHOFF Ruckgabewert void 12 5 3 AdsWrite 12 5 3 1 AdsWriteReq Die Methode AdsWriteReq erm glicht das Senden eines ADS Schreibbefehls f r bertragung von Daten an ein ADS Ger t Beim Eingang der Antwort wird AdsWriteCon gt 161 aufgerufen Syntax int AdsWriteReq AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOffset ULONG cbLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbLength Typ ULONG in enth lt die L nge in Bytes der zu schreibenden Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem
68. Sie enthalten sehr ausf hrliche Informationen ber den aufgetretenen Fehler So beschreibt z B der Screenshot oben Folgendes e Der Fehler trat beim bergang von SAFE OP zu OP auf e Das betroffene Objekt ist Untitled1_Obj1 CModule1 e Der Fehlercode 1821 0x71d zeigt an dass die Objekt Id ung ltig ist Die Folge ist dass man die Methode SetObjStateSP die f r diesen bergang verantwortlich ist genauer untersuchen muss Im Falle des generierten Standardcodes sieht man dass das Hinzuf gen des Moduls dort stattfindet Der Grund f r das Auftreten dieses Fehlers besteht darin dass diesem Modul kein Task zugewiesen wurde also kann das Modul keinen Task haben in dem es ausgef hrt wird 12 10 Meldungen aufzeichnen bersicht TwinCAT 3 C bietet Verfolgungsf higkeiten um R ckverfolgung aus C Code in die TwinCAT 3 Visual Studio Workbench einfach zu erm glichen 176 Version 1 0 TC3 C BECKHOFF Programmierreferenz Solution Explorer v A X Modulel cpp X Modulel h a e em o gt CModulel Search Solution Explorer Ctrl Pr Sample to showcase trace logs 8 Solution TwinCAT Projectl 1 project ULONGLONG eae 05 2 E TwincAT Projecti if SUCCEEDED ipTask gt GetCycleCounter amp cnt Do Br if cnt 500 0 MOTION I m_Trace Log tlAlways FNAMEA Level tlAlways cycle llu cnt nc if cnt 510 RS sarety I m_Trace Log tlError FNAMEA Level tlError cycle llu cnt 4 C 4 Unt
69. Siehe Beispiel30 Zeitmessung gt 256 Sehen Sie dazu auch Methode ITcRTimeTask GetCpuAccount gt 150 12 4 11 1 Methode ITcRTimeTask GetCpuAccount Abfrage des CPU Kontos eines TwinCAT Tasks Syntax virtual HRESULT TCOMAPI GetCpuAccount PULONG pAccount 0 Parameter pAccount Typ PULONG out TwinCAT Task CPU Konto ist in diesem Parameter gespeichert R ckgabewert E_POINTER wenn Parameter pAccount gleich NULL sonst S_OK Beschreibung Mit Hilfe der GetCpuAccount Methode kann die aktuelle f r den Task aufgewendete Rechenzeit abgefragt werden Code Ausschnitt der die Verwendung von GetCpuAccount zeigt z B innerhalb einer ITcCyclic CycleUpdate Methode CPU account in 100 ns interval ITcRTimeTaskPtr spRTimeTask ipTask ULONG nCpuAccountForComputeSomething 0 if spRTimeTask NULL ULONG nStart 0 hr FAILED hr hr spRTimeTask gt GetCpuAccount amp nStart ComputeSomething ULONG nStop hr FAILED hr 0 hr spRTimeTask gt GetCpuAccount amp nStop nCpuAccountForComputeSomething nStop nStart 12 4 12 Schnittstelle ITcTask Abfrage von Zeitstempel und taskspezifischen Informationen eines TwinCAT Tasks Syntax TCOM_DECL_INTERFACE 02000002 0000 0000 e000 000000000064 ITcTask struct _ declspec novtable ITcTask public ITcUnknown Ben tigtes include TeRtInterfaces h 150 Version 1 0 TC3 C BECKHOFF Programmierreferenz
70. Sort by Default HF Search Installed Templates Ctri E Pr eS HE Phasen sd TwinCAT Driver Project TwinCAT C Driver Type TwinCAT C Driver gt Online Creates a TwinCAT driver project sd TwinCAT Static Library Project TwinCAT C Driver Click hereto go online and find templates Name Untitledi Location C Users henningm BECKHOFF Documents Visual Studio 2013 Projects bd Browse Add Cancel 2 W hlen Sie eine der Projektvorlagen geben einen Namen und einen Speicherort an gt Das TwinCAT C Projekt wird erstellt gt Im Falle eines Treibers wird der TwinCAT C Klassenassistent gt 66 gestartet 11 2 TwinCAT Module Klassenassistent TwinCAT 3 bietet verschiedene Klassenvorlagen e TwinCAT Modules Class e TwinCAT Modules Class mit ADS Port e TwinCAT Modules Class mit zyklischem Aufrufer e TwinCAT Modules Class mit zyklischem Ein Ausgang e TwinCAT Modules Class mit Datenzeiger e TwinCAT Modules Class f r Echtzeitkontext 66 Version 1 0 TC3 C BECKHOFF Assistenten 4 Installed Sort by Default F Search Installed Templates Ctrl E Pr Im Ar Cer Modul TwinCAT Module Class TwinCAT C Module Type TwinCAT C Module gt Online Creates a new TwinCAT module class TwinCAT Module Class with ADS port TwinCAT C Module TwinCAT Module Class with Cyclic Caller TwinCAT C Module TwinCAT Module Class with Cyclic IO TwinCAT C Module TwinCAT Module Class with Data
71. TC3 C Version 1 0 123 Programmierreferenz BECKHOFF Methoden Sym Name Beschreibung bol D TcGetObjectId OTCID amp objid Speichert die Objekt ID mit Hilfe der gegebenen OTCID Referenz gt 124 OTCID TcGetObjectld gt 125 Fragt die Objekt ID vom Objekt ab TcSetObjectld gt 125 Setzt die Objekt ID des Objekts auf die gegebene OTCID H TcGetObjectName gt 125 Speichert den Objektnamen im Puffer mit der gegebenen Lange H TcSetObjectName gt 126 Setzt den Objektnamen des Objekts auf gegebenen CHAR H TcSetObjState gt 126 Initialisiert einen bergang zu einem vorgegebenen Zustand 4 TcGetObjState gt 127 Fragt den aktuellen Zustands des Objekts ab H TcGetObjPara gt 127 Fragt einen mit seiner PTCID identifizierten Objektparameter ab H TcSetObjPara gt 128 Setzt einen mit seiner PTCID identifizierten Objektparameter TcGetParentObjld gt 128 Speichert die Parent Objekt ID mit Hilfe der gegebenen OTCID Referenz H TcSetParentObjld gt 129 Setzt die Parent Objekt ID auf die gegebene OTCID TcTryToReleaseOpState 129 Gibt Ressourcen frei muss implementiert sein Anmerkungen Die ITComObject Schnittstelle wird von jedem TwinCAT Modul implementiert Sie stellt Funktionalit ten zur Verf gung bez glich der Zustandsmaschine und Informationen vom an das TwinCAT System Sehen Sie dazu auch Schnittstelle ITcloCyclic gt 146
72. TC_INSTALLPATH CustomConfig Modules Ver ffentlichtes TwinCAT Treiberpaket normalerweise C TwinCAT 3 x CustomConfig Modules Siehe Module exportieren gt 31 Laufzeit XAR TC_BOOTPRJPATH Derzeitige Konfigurationssetup CurrentConfig normalerweise C TwinCAT 3 x Boot TC_DRIVERAUTOINSTALLP Kompilierter plattformspezifischer Treiber ATH sys pdb e C TwinCAT 3 x Driver Autolnstall System geladen e C TwinCAT 3 x Driver AutoLoad TcLoader geladen TC_BOOTPRJPATH TM OBJECTID tmi TwinCAT Module Instance Datei Beschreibt Variablen des Treibers Dateiname lautet ObjectID tmi Normalerweise C TwinCAT 3 x Boot TMI OTCID tmi Tempor re Dateien sdf IntelliSense Datenbank suo v12 suo Benutzerspezifische und Visual Studio spezifische Dateien tsproj bak Automatisch generierte Sicherungsdatei von tsproj 118 Version 1 0 TC3 C BECKHOFF Programmierreferenz Datei Beschreibung Weitere Informationen ipch Fur vorkompilierter Header erstelltes Zwischen Verzeichnis 12 2 Limitierungen TwinCAT 3 C Module gt 23 werden im Windows Kernel Modus ausgef hrt Deswegen m ssen die Entwickler einige Limitierungen beachten e Win32 API ist nicht im Kernel Modus verf gbar siehe unten gt 119 e Benutzermodusspezifische Bibliotheken DLL k nnen nicht verwendet werden siehe Bibliotheke
73. TT cloCwcliertC aller 147 12 4 11 Schnittstelle ITCRTIMET ASK o oo eee ccc cc cee eecee ee ceeeeeesesaueeeeeseeeeeeeeseuauaeeeeaaeeeeaesesaneeeeeas 149 12 4 12 Schnittstelle 11 6 TASK niena arinn ai a a a aaa a a ia a 150 12 4 13Schnittstelle ITcTaskNotification oo cece ccc ceceece ee cesaeeeeeeseeseeeeesesaueeeesaaeeeeenseuaneeeenas 154 12 5 ADS Kommiunikation 2 48 a a nein 155 12 5 1 AdsReadDevicelnfo u uuu 20 u a aan arena 156 W Ee ET e DEE 158 125 3 Ee E EE 160 WE Ee EE e ln EE 162 12 5 5 AdsReadSta EE 164 RK Ee Ee e ue EEN 166 12 5 7 AdsAddDeviceNodtification u 2 222 0n a ask 168 12 5 8 AdsDelDeviceNotification u 2 22 n e a ana 170 12 5 9 AdsDeviceNotificali n s a u8 u u east 172 12 6 Mathematische Funkttonen anne 173 12 7 ZEMAN EE 175 12 8 e LE GOntalnek 2 2 2er ne ee 175 12 9 Fehlermeldungen Verst ndnis 444444444444HRnn nn nnnnnennennnnnnnnnnnnnnnnnnnpnnnnnnnennnnnnnennnnnnnnn nenn 176 12 10 Meldungenaufzeichnen u nee Hensel 176 13 HOW AO EE 180 13 1 Ziellaufzeit ausw hlen ls aaa hlnihan alien 180 13 2 Verwenden Sie das Automation Interface 184 13 3 Bereitstellung 2 022 ee ee lenken 184 13 4 Module ver ftentiichen anne 185 19 9 e EE 186 13 6 Zugritt aut Variablen Uber ADS seen ia 187 13 7 TcCallAfterOutputUpdate f r C Module 187 13 8 Reihenfolgebestimmung der Ausf hrung in einem Task 187 1
74. Task TC3 C Version 1 0 147 Programmierreferenz BECKHOFF Syntax TCOM_DECL INTERFACE 0300001F 0000 0000 e000 000000000064 ITcIoCyclicCaller struct__declspec novtable ITcIoCyclicCaller public ITcUnknown Ben tigtes include TcIoInterfaces h Methoden Sym Name Beschreibung bol H AddloDriver gt 148 Modul anmelden das die ITcloCyclic Schnittstelle implementiert H RemoveloDriver gt 149 Zuvor angemeldete ITcloCyclic Schnittstelle eines Moduls abmelden Anmerkungen Die ITcloCyclicCaller Schnittstelle wird von TwinCAT Tasks implementiert Ein Modul verwendet diese Schnittstelle um seine ITcloCyclic Schnittstelle bei einem Task anzumelden normalerweise als letzten Initialisierungsschritt beim SafeOP zum OP bergang Nach der Anmeldung wird die Methode CycleUpdate der Modulinstanz aufgerufen Die Schnittstelle wird ebenfalls zum Abmelden des Moduls verwendet damit es nicht mehr vom Task aufgerufen wird 12 4 10 1 Methode ITcloCyclicCaller AddloDriver Meldet die ITcloCyclic Schnittstelle eines Moduls bei einem zyklischen I O Aufrufer z B einem TwinCAT Task an Syntax virtual HRESULT TCOMAPI AddIoDriver STcloCyclicEntry pEntry ITcIoCyclic ipDrv ULONG_PTR context 0 ULONG sortOrder 0 0 Parameter pEntry Typ STcloCyclicEntry Zeiger auf einen Listeneintrag welcher in die interne Liste des zyklischen I O Aufrufers eingef gt wird Siehe auch Beschreibung ipDrv
75. X FB StateMachine x DD TwinCAT Project PLC calling C Method lz 1 FUNCTION BLOCK FB_StateMachine IMPLEMENTS IStateMachine 2 PVOID a 2 VAR_INPUT C3 DUTs ji END VAR GVLs SE 4 Eu POUs 8 be a E FB_StateMachine FB aa iy GetState e Ei SetState Ei Start EM Stop 183 TcAddRef la TeQueryInterface Be Er TcRelease m E MAIN PRG A E visus Library Manager gt a PlcTask PlcTask E PLC calling statemachine Instance m Der FB_StateMachine stellt 4 Methoden zur Verf gung e GetState e SetState e Start e Stop Weitere erzeugte Methoden sind f r dieses Beispiel ohne Belang Solution Explorer A zs FB StateMachine D I TO dE TEE 1 FUNCTION BLOCK FB_StateMachine gt ge ITcTask a 2 VAR_INPUT gt ge ITcUnknown s END_VAR g PlcAppSystemlnfo i kwecset gel ig PlcTaskSysteminfo i ve E DUTs Bi eg ZS E GVLs i A E POUs a EZ FB_StateMachine FB Fy GetState Fa SetState iM Start Ei Stop dl m E MAIN PRG m E visus 236 Version 1 0 TC3 C BECKHO FF C C Beispiele Schritt 5 FB Schnittstellen FB_init und EB evi hinzuf gen 8 Rechtsklick auf FB_StateMachine im Baum und Add gt Method ausw hlen File Edit View Project Build Debug TwinCAT Team Data Tools Architecture Test Analyze Window Help a a OlA aala p 3 5 Debug H Mixed Platforms a CycleUpdate
76. ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Beispiel wie unten beschrieben konfigurieren 6 Die Konfiguration aktivieren Beschreibung Dieses Beispiel beschreibt den Zugriff auf eine EtherCAT Klemme der die Hersteller ID liest und die Baudrate f r die serielle Kommunikation festlegt Dieses Beispiel beschreibt den Schnellstart zwecks Erstellung eines C Moduls das einen Z hler bei jedem Zyklus inkrementiert und den Z hler dem logischen Ausgang Value im Datenbereich zuweist Konfiguration 7 Die EtherCAT Adresse der betreffenden Klemme aktivieren und zuweisen General EtherCAT Process Data Startup CoE Online EL6Gex Online Type EL6001 Interface RS232 Product Revision EL6001 0000 0000 Auto Inc Addr 0 EtherCAT Addr 001 F Advanced Settings 0 Previous Port Master TC3 C Version 1 0 209 C C Beispiele BECKHOFF 8 Den Einschluss der ADS Adresse in den erweiterten Einstellungen der EtherCAT Klemme aktivieren BtherCAT Addr W 1001 Advanced Settings Advanced Settings I E General Behavior Timeout Settings Startup Checking State Machine Identification V Check Vendor Id V Auto Restore State
77. aal ee T r DE 5 4 x64 Treibersignierung Auf x64 PCs m ssen TwinCAT C Module signiert werden damit sie ausgef hrt werden k nnen DI HINWEIS Lediglich die Ausf hrung erfordert Zertifikate das Engineering auf einer x64 Maschine mit Ausf hrung auf einer x86 Maschine erfordert keine Signierung Da ein ver ffentlichtes Modul auf verschiedenen PCs lauff hig sein soll ist f r eine Ver ffentlichung Publish immer eine Signierung erforderlich 16 Version 1 0 TC3 C BECKHOFF Vorbereitung nur einmal 5 4 1 Treiber signieren Ubersicht Fur die Implementierung von TwinCAT 3 C Modulen auf x64 Plattformen muss der Treiber mit einem Zertifikat signiert sein Die Signatur die beim TwinCAT 3 Build Prozess automatisch generiert wird wird von 64 Bit Windows Betriebssystemen fur die Authentifizierung der Treiber verwendet Fur die Signierung eines Treibers wird ein Zertifikat bendtigt Diese Microsoft Dokumentation beschreibt den Prozess und Hintergrundwissen zum Erhalt eines Test und Freigabezertifikats das von 64 Bit Windows Betriebssystemen akzeptiert wird Um ein solches Zertifikat in TwinCAT 3 zu verwenden konfigurieren Sie den Schritt nach Kompilieren Ihres x64 Build Targets wie in Ein Testzertifikat f r den Testmodus erstellen gt 17 dokumentiert Testzertifikate Zum Testen k nnen selbstsignierte Testzertifikate ohne technische Limitierung erstellt und verwendet werden In den fol
78. auf die Interaktionsm glichkeiten eines C Moduls 19 SyncFileAccess 520 WriteFile 520a RW FileAccess Customer User Mode Application 503 ADSServer j S06 SymbolUpload TwinCAT C 01 Cyclic 1 0 S26 TaskOrder 22 ADD DPRAM 35 Ethernet 507 ADSNotification 10 Data Pointers S05 CoE Access Dar ber hinaus ist dies eine Tabelle mit kurzen Beschreibungen der Beispiele 12 IO Mapping Se 502 Cyclic UO Task 530 Timing 11 MethodInvoke 25 Static Lib 31 CTON 337 ArchiveData S11a Methodinvoke TwinCAT PLC TwinCAT C 196 Version 1 0 TC3 C BECKHOFF C C Beispiele Number Beschreibung Beschreibung 01 Beispiel01 Zyklisch mit IO Modul Dieser Artikel beschreibt die Implementierung eines TC3 gt 198 C Moduls das ein mit physikalischem IO gemapptes IO Modul verwendet Dieses Beispiel beschreibt den Schnellstart zwecks Erstellung eines C Moduls das einen Z hler bei jedem Zyklus inkrementiert und den Z hler dem logischen Ausgang Value im Datenbereich zuweist Der Datenbereich kann dem physikalischen IO oder einem anderen logischen Eingang einer anderen Modulinstanz zugewiesen werden 02 Beispiel02 Zyklisch mit IO Task Dieses Beispiel beschreibt die Flexibilitat von C Code gt 199 bei der Arbeit mit IOs welche an dem Task konfigurier
79. calling statemachine a E PLC calling statemachine Project gt C3 External Types E DUTs Gls a 0 POUs b E FB_StateMachine FB 2 MAIN PRG Gi Visus Library Manager d PLC calling statemachine tme _ gt r PleTask PlcTask E PLC calling statemachine Instance MAIN fb_StateMachine oidInstance is we HETI StateMachineDrv_Obji CSt 3 StateMachineDrv Project tr StateMachineDrv_Objl CStateMac Schritt 10 Die Ausfuhrung von beiden Modulen SPS und C beobachten Nach der Aktivierung der TwinCAT Konfiguration dem Herunterladen und Starten des SPS Codes kann die Ausf hrung der beiden Codes SPS und C einfach beobachtet werden 1 Nach dem Login und Start des SPS Projekts befindet sich der Editor bereits im online Modus linke Seite der folgenden Abbildung 246 Version 1 0 TC3 C BECKHOFF C C Beispiele 2 Um auf online Variablen des C Moduls zugreifen zu k nnen aktivieren Sie bitte das C Debugging 51 und folgen den Schritten des Schnellstarts gt 37 um das Debugging zu starten rechte Seite der folgenden Abbildung FB_StateMachine Stop Online TwinCAT Live Watch TwinCAT_Device PLC_calling_statemachine MAIN a Arranged by Object ID Search Expression Type SEJ y Oid 01010010 StateMachineDrv_Objl CStateMachineModule nCounter INT E zz ITComObject binit BOOL ITcADI fbS
80. ck und wird anschlie end aufgerufen Syntax Ine AdsReadStateRes AmsAddr amp rAddr ULONG invokeld ULONG nResult USHORT adsState USHORT devi ceState Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellgerat spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 adsState Typ USHORT in enth lt den ADS Zustand des Ger ts deviceState Typ USHORT in enth lt den Ger testatus des Ger ts R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes 12 5 5 4 AdsReadStateCon Die Methode AdsWriteCon ermdglicht den Empfang von einer ADS Statuslesebestatigung Das empfangende Modul muss diese Methode bereitstellen AdsReadStateReq gt 164 bildet das Gegenst ck und muss zuvor aufgerufen TC3 C Version 1 0 165 Programmierreferenz BECKHOFF Syntax void AdsReadStateCon AmsAddr amp rAddr ULONG invokeld ULONG nResult USHORT adsState USHORT device State Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen n
81. der Schnittstellenzeiger initialisiert ist wenn TcQuerylnterface Erfolg anzeigt Wenn der Bereich bleibt dann gibt der Destructor des Smart Pointers spObj die Referenz frei Variante 2 122 Version 1 0 TC3 C BECKHOFF Programmierreferenz HRESULT GetTraceLevel ITcUnkown ip TcTraceLevel tl HRESULT hr S_OK TComObjectPtr spObj ip if spObj NULL spObj gt TcGetObjParam PID TcTraceLevel amp tl else hr ADS E NOINTERFACE return hr Wenn der Schnittstellenzeiger ip dem Smart Pointer spObj zugewiesen wird dann wird die TcQuerylnterface Methode implizit aufgerufen mit IID_ITComObject auf der Instanz auf die ip verweist Dies f hrt zu einem k rzeren Code aber der urspr ngliche Return Code von TcQuerylnterface geht verloren 12 4 1 3 Methode ITcUnknown TcRelease Diese Methode dekrementiert den Referenzz hler Syntax ULONG TcRelease R ckgabewert Daraus resultierender Referenzzahlwert Beschreibung Dekrementiert den Referenzz hler und gibt den neuen Wert zur ck Wenn der Referenzz hler 0 wird l scht das Objekt sich selber 12 4 2 Schnittstelle ITComObject Die ITComObject Schnittstelle wird von jedem TwinCAT Modul implementiert Sie stellt grundlegende Funktionalit ten zur Verf gung Syntax TCOM_DECL_INTERFACE 00000012 0000 0000 e000 000000000064 ITComObject struct __declspec novtable ITComObject public ITcUnknown Ben tigtes include TcInterfaces h
82. dieser Schnittstellen und die Standardisierung der entsprechenden Parameter und Prozessdaten entsteht ein signifikantes Profil Da die einzelnen Module in eine Laufzeit implementiert sind sind auch direkte Aufrufe anderer Module m glich wiederum ber entsprechende Standard Schnittstellen Die Modularisierung kann so in sinnvollen Grenzen stattfinden ohne dass Kommunikationsverluste ein Thema sind W hrend der Entwicklung oder Inbetriebnahme einzelner Maschinenmodule k nnen die entsprechenden Steuerungsmodule erstellt und auf beliebiger Steuerungshardware mit geeigneter Laufzeit getestet werden Fehlende Anbindungen an andere Module k nnen in dieser Phase emuliert werden Bei der kompletten Maschine werden sie dann zusammen auf der zentralen Laufzeit instanziiert die lediglich so dimensioniert sein muss dass der Bedarf an Ressourcen f r alle instanziierten Module Speicher Tasks und Rechenleistung erf llt wird TwinCAT 3 Runtime TwinCAT Runtime bietet eine Softwareumgebung in der die TwinCAT Module geladen implementiert und verwaltet werden Sie bietet weitere Basisfunktionen sodass die Systemressourcen Speicher Tasks Feldbus und Hardwarezugang usw genutzt werden k nnen Die einzelnen Module m ssen nicht mit demselben Compiler erstellt worden sein Damit k nnen sie voneinander unabh ngig sein und von unterschiedlichen Anbietern stammen Beim Start der Laufzeit werden automatisch einige Systemmodule geladen sodass ihre Eigen
83. einem Lieferanten die aus dieser Trennung von Software und Hardware resultiert ist f r den Nutzer auch sehr wichtig Da SPS und Bewegungssteuerung und m glicherweise andere Automatisierungskomponenten bei dieser Methode unabh ngige Logikbausteine bleiben gibt es im Vergleich zur klassischen Automatisierungstechnologie nur wenige nderungen in der Anwendungsarchitektur Die SPS bestimmt die logischen Abl ufe der Maschine und bertr gt der Bewegungssteuerung die Implementierung bestimmter Achsfunktionen Dank der verbesserten Leistung der Steuerungen und der M glichkeit h here Programmiersprachen IEC 61131 3 zu verwenden k nnen auf diese Weise auch komplexe Maschinen automatisiert werden Modularisierung Um die Komplexit t moderner Maschinen zu meistern und gleichzeitig den daf r n tigen Engineering Aufwand zu senken haben viele Hersteller begonnen ihre Maschinen zu modularisieren Individuelle Funktionen Baugruppen oder Maschineneinheiten werden dabei als Module betrachtet die untereinander so unabh ngig wie m glich sind und ber einheitliche Schnittstellen in das Gesamtsystem eingebettet werden Eine Maschine ist danach idealerweise hierarchisch strukturiert wobei Module der niedrigsten Ebene einfachste st ndig wiederverwendbare Grundelemente repr sentieren Miteinander verbunden bilden sie immer komplexere Maschineneinheiten bis auf h chster Ebene die gesamte Maschine entsteht F r Steuerungssysteme bei Masc
84. glichen Meldungen erreicht Die gesendete Nachricht wird nicht im ADS Monitor an gezeigt 0x504 1284 ROUTERERR_UNKNOWNPORTTYPE Der Porttyp ist unbekannt 0x505 1285 ROUTERERR_NOTINITIALIZED Router ist nicht initialisiert 0x506 1286 ROUTERERR_PORTALREADYINUSE Die gew nschte Portnummer ist bereits vergeben 0x507 1287 _ ROUTERERR_NOTREGISTERED Der Port ist nicht registriert 0x508 1288 ROUTERERR_NOMOREQUEUES Die maximale Anzahl von Ports ist erreicht 0x509 1289 ROUTERERR_INVALIDPORT Der Port ist ung ltig 0x50A 1290 ROUTERERR_NOTACTIVATED Der Router ist nicht aktiv 260 Version 1 0 TC3 C BECKHOFF Anhang Allgemeine ADS Fehlercodes TC3 C Version 1 0 261 Anhang BECKHOFF Hex Dec Name Beschreibung 0x700 1792 ADSERR_DEVICE_ERROR Ger tefehler 0x701 1793 ADSERR_DEVICE_SRVNOTSUPP Service wird vom Server nicht unterst tzt 0x702 1794 ADSERR_DEVICE_INVALIDGRP Ung ltige Index Gruppe 0x703 1795 ADSERR_DEVICE_INVALIDOFFSET Ung ltiger Index Offset 0x704 1796 ADSERR_DEVICE_INVALIDACCESS Lesen und schreiben nicht gestattet 0x705 1797 ADSERR_DEVICE_INVALIDSIZE Parametergr e nicht korrekt 0x706 1798 ADSERR_DEVICE_INVALIDDATA Ung ltige Parameter Werte 0x707 1799 ADSERR_DEVICE_NOTREADY Ger t ist nicht betriebsbereit 0
85. hren zu berwachen und zu debuggen folgen Sie diesen Schritten v Das TwinCAT Symbol muss gr n l uft oder blau Konfigurationsmodus sein nicht rot gestoppt Wenn TwinCAT gestoppt wurde funktioniert das Durchsuchen nicht 180 Version 1 0 TC3 C BECKHOFF How to 2 Um das Netzwerk nach TwinCAT 3 XAR Laufzeitzielen zu durchsuchen w hlen Sie Choose Target System TwinCAT Project129 Microsoft Studi D File Edit View Project Debug TwinCAT PLC Team Data ial id IE aala e I PL Be G A 2 S ler lt Local gt a E TwinCAT Project129 tsp Zi system NC Motion 3 Wahlen Sie in diesem Dialog Search Ethernet Choose Target System EXS 3 3 Lord 10 1 128 27 1 1 OK Search Ethernet Search Fieldbus E Set as Default Connection Timeout s 1 air TC3 C Version 1 0 181 How to BECKHOFF 4 Im nachsten Dialog kann das Netzwerk nach TwinCAT Laufzeitsystemen durchsucht werden E Enter Host Name IP Refresh Status Broadcast Search Host Name Connected Address AMS Netld TwinCAT OS Version Comment u CX 084 38E 10 1 128 114 5 8 163 142 1 1 2 11 2021 WinCE 6 0 E Cx 08B8B2 10 1 128 116 5 8 184 178 1 1 2 11 2021 WinCE 6 0 le Cx_OOBDEC 10 1 128 141 5 0 189 236 1 1 2 11 1553 WinCE 6 0 Cx_OOFE76 10 1 12818 50 254 118 1 1 2 11 2028 WinCE 6 0 CX_012228 10 1 128 29 5 1 34 40 1 1 2 11 2035
86. innerhalb der Code Vorlage verwendet Module gt 23 instanziieren Das Programm beschreibt eine Klasse die als Objekte instanziiert wird Der TwinCAT Module Instance Configurator gt 112 wird f r die Konfiguration der Instanz verwendet Allgemeine Konfigurationselemente sind Task zuweisen Symbolinformation f r Laufzeit TwinCAT Module Instance TMI Datei herunterladen oder Parameter Schnittstellenzeiger festlegen Mapping von Variablen Die Ein und Ausgangsvariablen eines Objekts k nnen mit Variablen von anderen Objekten oder SPS Projekten unter Verwendung des normalen TwinCAT Systemmanagers verkn pft werden Erstellung Building Bei der Erstellung Kompilieren und Verkn pfung des TwinCAT C Projekts werden alle Komponenten f r die ausgew hlte Plattform kompiliert Die Plattform wird automatisch festgelegt wenn das Zielsystem ausgew hlt ist Ver ffentlichung Publishing siehe Module exportieren gt 31 Module importieren gt 32 Die Ver ffentlichung eines Moduls erstellt die Treiber f r alle Plattformen und bereitet es f r die Verteilung vor Das erzeugte Verzeichnis kann verteilt werden ohne dass der Quellcode bergeben werden muss Es wird ausschlie lich Bin rcode mit Schnittstellenbeschreibung bergeben Signatur siehe x64 Treibersignierung gt 16 Die TwinCAT Treiber m ssen f r x64 Laufzeiten signiert sein weil 64 Bit Windows Versionen fordern dass Kernel Module s
87. ist in diesem Parameter gespeichert Ruckgabewert E POINTER wenn Parameter pPriority gleich NULL sonst S_OK Beschreibung Beispiel30 Zeitmessung gt 256 veranschaulicht die Verwendung dieser Methode 12 4 12 2 Methode ITcTask GetCurrentSysTime Abfrage der Zeit bei Taskzyklusstart in Intervallen von 100 Nanosekunden seit dem 1 Januar 1601 UTC Syntax virtual HRESULT TCOMAPI GetCurrentSysTime PLONGLONG pSysTime 0 Parameter pSysTime Typ PLONGLONG out in diesem Parameter ist die aktuelle Systemzeit zu Beginn des Taskzyklus gespeichert R ckgabewert E_POINTER wenn Parameter pSysTime gleich NULL sonst S_OK Beschreibung Beispiel30 Zeitmessung gt 256 veranschaulicht die Verwendung dieser Methode 12 4 12 3 Methode ITcTask GetCurrentDcTime Abfrage der Distributed Clock Zeit bei Taskzyklusbeginn in Nanosekunden seit dem 1 Januar 2000 Syntax virtual HRESULT TCOMAPI GetCurrentDcTime PLONGLONG pDcTime 0 Parameter pDcTime Typ PLONGLONG out in diesem Parameter ist die Distributed Clock Zeit zu Beginn des Taskzyklus gespeichert R ckgabewert E_POINTER wenn Parameter pDcTime gleich NULL sonst S_OK Beschreibung Beispiel30 Zeitmessung gt 256 veranschaulicht die Verwendung dieser Methode 152 Version 1 0 TC3 C BECKHOFF Programmierreferenz 12 4 12 4 Methode ITcTask GetCurPentiumTime Abfrage der Zeit bei Methodenaufruf in Intervallen von 100 Nanosekunden seit dem 1
88. klicken 5 Die Konfiguration aktivieren Beschreibung Beide Instanzen werden anhand einer Modulklasse ModulelnToOut realisiert Die Klasse kopiert zyklisch ihren Eingangsdatenbereich Value auf ihren Ausgangsdatenbereich Value Die Instanz Front agiert als Frontend f r den Nutzer Ein Eingangs Value wird durch die Methode cycleupdate an den Ausgangs Value bergeben Dieser Ausgangs Value von Front wird dem Eingangs Value der Instanz Back zugeordnet verkn pft Die Back Instanz wiederum kopiert den Eingangs Value auf ihren Ausgangs Value was vom Nutzer beobachtet werden kann siehe folgende Schritte des Schnellstarts um das Debugging zu starten TwinCAT 3 C Projekt debuggen gt 53 Letztendlich kann der Nutzer den Eingangs Value der Front Instanz festlegen und den Ausgangs Value von Back beobachten 15 12 Beispiel19 Synchroner Dateizugriff Dieser Artikel beschreibt die Implementierung eines TC3 C Moduls das auf Dateien auf der Festplatte w hrend des Starts eines Moduls also in Echtzeitumgebung zugreifen kann Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren
89. man den Code schrittweise ausf hren Auch stehen die von Visual Studio bekannten Step in F11 und Step out Shift F11 zur Verf gung Bedingte Haltepunkte Eine fortschrittlichere Technologie erlaubt das Setzen von bedingten Haltepunkten Die Ausf hrung des Codes auf H he eines Haltepunktes wird nur dann angehalten wenn eine Bedingung erf llt ist TwinCAT bietet die Implementierung eines bedingten Haltepunktes als Teil der Visual Studio Integration Zum Festlegen einer Bedingung setzen Sie zun chst einen normalen Haltepunkt und klicken anschlie end mit der rechten Maustaste auf den roten Punkt in der Haltepunkt Spalte lt AutoGeneratedContent id Implementationof_ITcCyclic gt HRESULT CModulel CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG_PTR context HRESULT hr S OK TODO Replace the sample with your cyclic code m counter m Inputs Value Delete Breakpoint Disable Breakpoint Ctrl F9 Condition A ount Filter When Hit Edit labels Alt F9 L C Export File Lin Wahlen Sie Condition um das Bedingungsfenster zu ffnen Breakpoint Condition s When the breakpoint location is reached the expression is evaluated and the breakpoint is hit only if the expression is true or has changed Condition m_counter lt 10000 Is true Has changed OK Cancel Einzelheiten zu den Bedingungen und wie diese zu formulieren s
90. mit dem Laufzeitsystem XAR ber die TwinCAT Debugger Schaltfl che verbunden sein FILE EDIT VIEW PROJECT BUILD DEBUG TWINCAT PLC TEAM SQL TOOLS TEST SCOPE ger a2 Wi Lac de Haltepunkte und schrittweise Ausfuhrung In den meisten Fallen werden beim Debuggen eines C Programms Haltepunkte festgelegt und dann der Code schrittweise abgearbeitet wobei die Variablen Zeiger usw beobachtet werden TwinCAT bietet im Rahmen der Visual Studio Debugging Umgebung M glichkeiten um einen in Echtzeit ausgef hrten Code schrittweise abzuarbeiten Zum Festlegen eines Haltepunkts kann man durch den Code navigieren und entweder auf die graue Spalte links neben dem Code klicken oder den Hotkey normalerweise F9 benutzen lt AutoGeneratedContent id ImplementationOf_ITcCyclic HRESULT CModulel CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG_PTR context e HRESULT hr S_OK TODO Replace the sample with your cyclic code m_counter m_Inputs Value Beim Erreichen des Haltepunkts wird mit Pfeil angezeigt wird die Ausf hrung des Codes angehalten 60 Version 1 0 TC3 C BECKHOFF Debuggen lt AutoGeneratedContent id ImplementationOf_ITcCyclic gt HRESULT CModulel CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG_PTR context e HRESULT hr S OK TODO Replace the sample with your cyclic code Durch Dr cken auf Step Over Debug Men Toolbar oder Hotkey F10 kann
91. mit diesen Modulen umgewandelt werden Der bergang kann sowohl im Allgemeinen vom System gem dem Konfigurator als auch von einem anderen Modul z B dem Parent Modul veranlasst werden Im Verlauf dieses Zustands bergangs k nnen auch weitere Parameter bergeben werden So kann z B das Parent Modul eigene Parameter an das Child Modul bergeben SAFEOP Das Modul ist noch im Nicht Echtzeitkontext und wartet darauf vom System oder von anderen Modulen in den OP Zustand geschaltet zu werden SAFEOP zu OP SO Sowohl der Zustands bergang von SAFEOP zu OP als auch der Zustand OP als auch der bergang von OP zu SAFEOP finden im Echtzeitkontext statt Ressourcen des Systems d rfen nicht mehr alloziert werden Auf der anderen Seite k nnen nun Ressourcen von anderen Modulen angefordert werden und Module k nnen sich bei anderen Modulen anmelden z B im Verlauf von Tasks um einen zyklischen Aufruf zu erhalten OP Im OP Zustand nimmt das Modul seine Arbeit auf und ist im Sinne des TwinCAT Systems voll aktiv Alle Zustandsmaschinen stromabw rts k nnen nun starten OP zu SAFEOP OS Dieser Zustands bergang findet im Echtzeitkontext statt Alle Aktionen aus dem SO bergang werden umgekehrt und alle beim SO Ubergang angeforderten Ressourcen werden wieder freigegeben SAFEOP zu PREOP SP Alle Aktionen vom PS bergang werden umgekehrt und alle beim PS bergang angeforderten Ressourcen werden wieder freigegeben PRE
92. mittels seiner PTCID identifizierten Objektparameter ab Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 9 Methode ITcComObject TcSetObjPara Die Methode TcSetObjPara setzt einen mittels seiner PTCID identifizierten Objektparameter Syntax HRESULT TcSetObjPara PTCID pid ULONG nData PVOID pData PTCGP pgp 0 Parameter pid Typ PTCID Parameter ID des Objektparameters nData Typ ULONG max L nge der Daten pData Typ PVOID Zeiger auf die Daten pgp Typ PTCGP f r zuk nftige Erweiterung vorbehalten NULL weitergeben R ckgabewert Informiert ber Erfolg der Objektparameterabfrage Beschreibung Die Methode TcSetObjPara setzt einen mittels seiner PTCID identifizierten Objektparameter Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 10 Methode ITcComObject TcGetParentObjld Die Methode TcGetParentObjld speichert Parent Objekt ID mit Hilfe der gegebenen OTCID Referenz Syntax HRESULT TcGetParentObjId OTCID amp objId Parameter objld Typ OTCID amp Referenz auf OTCID Wert R ckgabewert Informiert ber Erfolg der parentObjld Abfrage 128 Version 1 0 TC3 C BECKHOFF Programmierreferenz Beschreibung Die Methode TcGetParentObjld speichert Parent Objekt ID mit Hilfe der gegebenen OTCID Referenz Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 11 Methode ITcComObject TcSetParentObjld Die Methode TcSetParentObjld setzt P
93. pe TwinCAT Project File Edit View Project Build Debug TwinCAT PLC Team Data Tools Architecture Test Analyze Window CME LEETE AL TwinCAT RT 686 2912 GRR a fe E PLC_calling_statemachin 3 gt m gl d TwinCAT Project PLC calling C Method X K NN a lod Solution TwinCAT Project PLC calling C Method 1 3 a D TwinCAT Project PLC calling C Method Project Name St teMachineDrv a gt g system z i sl gt pic Project Type C Project Pa ject Guid 5AE501DC 275A 49FB ABAA 07E15363D 1BE 8 SS C Project z Rename F2 Save StateMachineDrv As Save StateMachineDrv As Archive _J Send StateMachineDrv By E Mail Disable Mappings Name StateMachineDry_Obj1 CStateMachineModule Er C Module Vendor SM C Modules CStateMachineModule Module Multiple Sal Insert Instance Reload 230 Version 1 0 TC3 C BECKHOFF C C Beispiele 32 Wie blich muss die Instanz einem Task zugeordnet werden a ferret BE Task1 e PicTask sig Routes TcCOM Objects MOTION gt ij Header Files a amp Source Files E StateMachineDrv re StateMachineDrvClassFactory cpp StateMachineModule cpp TePch cop Create Task Wi Inputs Data Areas VII Outputs Data Pointer Interface Pointer Assign Task Schritt 12 Fertig Ergebnis berpr fen 33 Navigieren Sie zum neuen im Solution Bau
94. r die Erstellung einer Instanz des Moduls verwendet wurde Parent Id Beinhaltet die ObjectID des Parent falls vorhanden Init Sequence Legt die Initialisierungszust nde f r die Bestimmung des Startup Verhaltens der interagierenden Module fest Siehe hier 27 f r genaue Beschreibung der Zustandsmaschine CE P Festlegung des Startup Verhaltens von mehreren TcCOM Instanzen TcCOM Instanzen k nnen sich gegenseitig auf einander beziehen z B zwecks Wechselwirkung Uber Daten oder Schnittstellenzeiger Zur Bestimmung des Startup Verhaltens legt die Init Sequenz von jeder TcCOM Instanz zu haltende Zust nde f r alle brigen Module fest Der Name einer Init Sequenz besteht aus dem Kurznamen der TCCOM Zustandsmaschine Wenn der Kurzname eines Zustands I P S O im Namen der Init Sequenz enthalten ist dann werden die Module in diesem Zustand warten bis alle anderen Module zumindest diesen Zustand erreicht haben Beim n chsten bergang kann das Modul sich auf alle anderen Modulinstanzen beziehen um sich mindestens in diesem Zustand zu befinden TC3 C Version 1 0 113 Assistenten BECKHOFF Wenn z B ein Modul die Init Sequenz PS aufweist werden die IP berg nge aller anderen Module ausgef hrt sodass alle Module sich im Zustand Preop befinden Anschlie end wird der PS bergang des Moduls ausgef hrt und das Modul kann sich darauf verlassen dass die anderen Module sich im Preop Zu
95. switch indexGroup case ModuleliIndexGroup1 switch indexOffset case ModulellndexOffsetl 202 Version 1 0 TC3 C BECKHOFF C C Beispiele TODO add custom code here m_bCount TRUE receivedIG 1 IO 1 start counter AdsReadWriteRes rAddr invokeId ADSERR_NOERR 0 NULL break case ModuleliIndexOffset2 TODO add custom code here map counter to data pointer pData amp m Counter received IG 1 IO 2 provide counter value via ADS AdsReadWriteRes rAddr invokeId ADSERR_NOERR 8 pData comment this AdsReadWriteRes rAddr invokeId ADSERR_NOERR 0 NULL break break case ModuleliIndexGroup2 switch indexOffset case ModulellIndexOffsetl TODO add custom code here Stop incrementing counter m bCount FALSE map counter to data pointer pData amp m Counter AdsReadWriteRes rAddr invokeId ADSERR_NOERR 8 pData break case ModulelIndexOffset2 TODO add custom code here Reset counter m Counter 0 map counter to data pointer pData amp m Counter AdsReadWriteRes rAddr invokeId ADSERR_NOERR 8 pData break I break case IG OVERWRITE switch indexOffset case ModuleliIndexOffset1 TODO add custom code here override counter with value provided by ADS client unsigned long pCounter unsigned long pData m Counter pCounter AdsReadWriteRes rAddr invokeId ADSERR_NOERR 4 pData break break break defaul
96. und das Verhalten der Module Das vom Component Object Model COM von Microsoft Windows abgeleitete Modell beschreibt die Art und Weise wie verschiedene Software Komponenten die unabhangig voneinander entwickelt und kompiliert wurden zusammen arbeiten k nnen Damit das m glich ist m ssen ein genau definierter Verhaltensmodus und die Beachtung von Schnittstellen des Moduls ein f r alle Mal genau definiert werden sodass sie mit einander verbunden werden k nnen selbst dann wenn sie unterschiedlicher Herkunft sind Auch wenn das Component Object Model aus der Windows Welt mehr und mehr durch die NET Herangehensweise ersetzt wird sind die Prozeduren und Definitionen von COM f r eine Echtzeitverwendung in TwinCAT viel geeigneter als die NET Herangehensweise Bei NET werden viele Dinge erst w hrend der Laufzeit untereinander gekl rt Reflektion Das Verhalten des Garbage Collectors eignet sich ebenfalls nicht sehr gut f r Echtzeit TcCOM macht demzufolge Anleihen bei COM wobei lediglich eine Untermenge von COM verwendet wird Allerdings enth lt TCCOM im Vergleich zu COM zus tzliche Definitionen die ber COM hinausgehen z B das Modul Zustandsmaschine Schnittstellen Eine wichtige Komponente von COM und also auch von TcCOM sind Schnittstellen Schnittstellen definieren einen Satz Methoden die zusammengefasst werden um eine bestimmte Aufgabe zu erf llen Eine Schnittstelle wird mit einer eindeutigen ID bezeichnet die nachde
97. vom Modul hoch Dieser Artikel beschreibt die Implementierung eines ADS Client um e mit einem ADS Server der ein Prozessabbild Datenbereich bereitstellt in Verbindung zu treten Die Verbindung kann lokal oder fern ber Netzwerk hergestellt werden 210 Version 1 0 TC3 C BECKHOFF C C Beispiele e Symbolinformation hochzuladen e Daten synchron zu lesen schreiben e Symbole abonnieren um Werte bei Ver nderung als Callback zu erhalten Source Erhalten Sie den Quellcode f r dieses Client Beispiel v Dieser Code erfordert NET Framework 3 5 oder h her 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Das Beispiel auf Ihre lokale Maschine erstellen auf das Projekt rechtsklicken und Build klicken 4 Programm starten d h Rechtsklick auf Projekt Debug gt Start new instance Das Client Beispiel sollte mit Beispiel 03 TC3 C ADS Server functionalities verwendet werden Bitte ffnen Sie Beispiel 03 bevor Sie mit diesem client seitigen Beispiel beginnen Beschreibung Anhand von diesem Beispiel werden die M glichkeiten von ADS beschrieben Es zeigt wie Die Einzelheiten der Implementierung werden in Form1 cs das im Download enthalten ist beschrieben Die Verbindung ber ADS mit dem Zielsystem wird in der btnLoad_Click Methode die beim Klicken auf die Load Symbols Schaltfl che aufgerufen wird hergestellt Von dort aus k nnen Sie die ve
98. von ADS Notifications issiciiiiieusiiinuinnninrieiiennnriiniannnei dinana nui ninen niia aini 215 Beispiel10 Modulkommunikation Verwendung von Datenzegem ann 216 Beispiel11 Modulkommunikation SPS Modul ruft eine Methode eines C Moduls auf 217 Beispiel11 Eine Methode zur Verf gung stellendes TwinCAT 3 C Modul 218 Beispiel11 SPS um eine Methode aufzurufen die von einem anderen Modul angeboten wird hier TWINCAT 3 C Modul 231 Beispiel11a Modulkommunikation C Modul f hrt eine Methode in C Modul an 247 Beispiel12 Modulkommunikation Verwendet IO Mapping ssssssssssssrrnnnennssssreerrnnrrnnsnnsseesrrnnnrnnn 248 Beispiel19 Synchroner Dateizugriff nn ea ana na 248 Beispiel20 UE e TEE 249 Beispiel20a FilelO Cyclic Read Write 250 Beispiel22 Automation Device Driver ADD Zugang DPRAM nn 251 Beispiel25 Statische Bibli thek 4 sand 252 Beispiel26 Ausf hrungsreihenfolge in einem Task 254 Beispiel30 Zeitmessung arena ann canes eduabiagevasdecigesvedasiigedeunsinedesaseeceeeess 256 Beispiel31 Funktionsbaustein TON in TwinCAT3 Ce 257 Beispiel35 Ethernet HOESER 257 Beispiel37 Daten archivieren een snnannnn 259 C C Beispiele BECKHOFF 15 C C Beispiele 15 1 bersicht bersicht Es stehen zahlreiche Beispiele zur Verf gung weitere Beispiele werden folgen Dieses Bild zeigt einen berblick in grafischer Form und legt dabei den Schwerpunkt
99. von Ausg ngen bestimmten Ausgangsklemmen zuordnen 14 Das TwinCAT Projekt aktivieren gt 52 5 Finden Sie den ADS Port der Modulinstanz heraus Im Allgemeinen kann der ADS Port vornummeriert sein damit es immer der gleiche Port f r diese Modulinstanz ist e flexibel gehalten werden um mehreren Instanzen des Moduls die M glichkeit zu bieten dass ihnen beim Start des TwinCAT Systems ihr eigener ADS Port zugewiesen wird In diesem Beispiel haben wir uns f r die Standardeinstellung flexibel halten entschieden also m ssen wir den ADS Port herausfinden der dem Modul das wird soeben aktiviert haben zugewiesen wurde 15 Zu Modulinstanz navigieren Karteireiter Parameter Online ausw hlen ADSPort Es ist 0x8235 oder Dezimal 33333 zugewiesen lustig f r ein Beispiel kann aber bei Ihrem Beispiel anders sein Werden mehr und mehr Instanzen erstellt erh lt jede Instanz ihren eigenen eindeutigen AdsPort 204 Version 1 0 TC3 C BECKHOFF C C Beispiele Zahler Immer noch auf 0 da wir die ADS Meldung zum Starten der Inkrementierung nicht gesendet haben Solution Explorer A X Untitledi tmc Tmc Editor Modulel cpp L Be Solution TwinCAT Project154 1 project a ZE TwinCAT Projecti54 gt E system NC Motion Ee Lanz PLC Counter 0 SAFETY 4 Bed C a fe Untitledi gt IE Untitled1 Project 4 Fed Untitled1_Obj1 CModulel a T Inputs Value Status Dat
100. 0 E000 000000000064 CT b Interface Pointers ITcADI 03000012 0000 0000 E000 000000000064 7 el EA Le Deployment ITeWatchSource 03000018 0000 0000 E000 000000000064 80 Version 1 0 TC3 C BECKHOFF Assistenten 15 Alle verf gbaren Schnittstellen werden aufgef hrt w hlen Sie die neue Vorlage IStateMachine und beenden Sie mit OK CADDOETY ITcAppServices2 IT cBaseClassFactory ITcCyclicCaller IT cloCyclic ITcloCyclicCaller ITComLicenseServer ITComObjCon ITComObjectServer ITComObjInd ITComObjReq ITComObjRes ITcPostCyclic ITcPostCyclicCaller ITcPreInputCyclic ITcRTime ITcRTimeTask ITcTask Show hidden data types 08500104 0000 0000 e000 000000000064 00000018 0000 0000 e000 000000000064 0300001 e 0000 0000 e000 000000000064 03000011 0000 0000 e000 000000000064 0300001 f 0000 0000 000 000000000064 01010000 0000 0000 e000 000000000064 00000016 0000 0000 000 000000000064 00000030 0000 0000 e000 000000000064 00000013 0000 0000 e000 000000000064 00000015 0000 0000 e000 000000000064 00000014 0000 0000 e000 000000000064 03000025 0000 0000 e000 000000000064 03000026 0000 0000 e000 000000000064 03000017 0000 0000 e000 000000000064 0200000d 0000 0000 2000 000000000064 02000003 0000 0000 e000 000000000064 02000002 0000 0000 e000 000000000064 Interface Interface Interface Interface Interface Interface Interface Interface
101. 000000000064 Interface Jusen ITePostCyclic __ 03000025 0000 0000 lt 000 000000000064 interface Jaen TrePostCyclicCaller_ ____ 03000026 0000 0000 2000 000000000064 interface sogo ITePreinputCycice _____ 103000017 0000 0000 e000 000000000064 interface 4 080 NS ITcRTime I _______ 102000010 0000 0000 e000 000000000064 Interface Jusen ITcRTimeTask __ 02000003 0000 0000 lt 000 000000000064 Interface Jaen ITcTask __ 02000002 0000 0000 e000 000000000064 Interface 408 0 7 LLUWOOO O O U U Show hidden data types Group by None OK Cancel 11 3 4 2 Parameter Eine TcCOM Modulinstanz wird durch verschiedene Parameter konfiguriert TwinCAT unterst tzt drei Arten von Parameter IDs PTCID im Abschnitt Configure the parameter ID TC3 C Version 1 0 93 Assistenten BECKHOFF e user defined Standardwert neuer Parameter Es wird eine eindeutige Parameter ID generiert die im Nutzercode oder in der Instanzkonfiguration zur Festlegung des Parameters verwendet werden kann e Predefined Spezielle PTCIDs bereitgestellt vom TwinCAT 3 System z B TcTraceLevel Context based Werte des konfigurierten Kontext gt 114 diesem Parameter automatisch zuweisen Die ausgew hlte Eigenschaft wird f r die PTCPID bernommen Das berschreibt den definierten Standardparameter und den Instanzkonfigurationsparameter Parameter Init Es folgt
102. 0x839d Client port 33719 opened Counter stopped value 2273 Counter 2273 Outpu C Programm women em Hier ist der Kern Code des ADS Client f r die GUI usw bitte ZIP Datei oben herunterladen using System using System Collections Generic using System ComponentModel using System Data using System Drawing using System Text using System Windows Forms using TwinCAT Ads namespace adsClientVisu public partial class form Form public form InitializeComponent private void Forml Load object sender EventArgs e create a new TcClient instance DecGiient new TeAdselientii adsReadStream new AdsStream 4 adsWriteStream new AdsStream 4 Connect the client to the local AMS router TC3 C Version 1 0 207 C C Beispiele BECKHOFF 2 private void btConnect Click object sender EventArgs el AmsAddress serverAddress null EEY serverAddress new AmsAddress tbNetId Text Int32 Parse tbPort Text catch MessageBox Show Invalid AMS NetId or Ams port return EEY Stee llient Conneet serverAddress Netld serverAddress Port dee mtem ACG Hemener at reene Toner One uO penecm r catch MessageBox Show Could not connect client private void btStart_Click object sender EventArgs ei ELEY _tcClient ReadWrite 0xl 0x1 adsReadStream adsWriteStream byte dataBuffer adsReadStream ToArray lbOutput It
103. 15 343 ms TCOM Server 10 CSortOrderModule CycleUpdate I am SortOrderl 0x01010010 w SortOrder 150 35 05 09 2014 13 01 15 343 ms TCOM Server 10 CSortOrderModule CycleUpdate I am SortOrder2 0x01010020 w SortOrder 170 36 05 09 2014 13 01 16 343 ms TCOM Server 10 CSortOrderModule CycleUpdate I am SortOrderl 0x01010010 w SortOrder 150 37 05 09 2014 13 01 16 343 ms TCOM Server 10 CSortOrderModule CycleUpdate I am SortOrder2 0x01010020 w SortOrder 170 Im Beispiel ist eine Instanz mit Sort Order 150 und eine mit 170 konfiguriert w hrend beide Instanzen einem Task zugeordnet sind Startup Das Beispiel ben tigt nach dem Entpacken keine Konfiguration 254 Version 1 0 TC3 C BECKHOFF C C Beispiele Das Beispiel verstehen Annahme Ein mit TwinCAT Module Klassenassistent gt 68 erstelltes Modul 6 Das Modul ben tigt einen kontextbasierten Parameter Sort order of task der automatisch PID_Ctx_TaskSortOrder als Namen ausw hlen wird Beachten Sie dass der Parameter ein Alias Spezifikation zum Datentyp UDINT sein muss 232 TMC gt Data Types 4 fi Modules 4 fa CSortOrderModule Edit the properties of the parameter Implemented Interfaces P z 4 4 Parameters Name TaskSortOrderContext1Parameter SS TracelevelMax TaskSortOrderContext1Parameter Specification ss ll a Eh Data Areas a Mh Inputs Choose data type E Symbols D Outputs N
104. 3 9 Stack Size gt AkB verwenden anne 188 13 10 Siehe Version Herstellerinformation anne 188 13 11 Modul l schen z 2 228222 a a A A N E 189 Version 1 0 TC3 C BECKHOFF Inhaltsverzeichnis 13 12 Initialisierung von TMC Membervariablen 0 ececceeeceeeeee eee eene eee nnnnnnnennnnnnnnnnnnnnnnnnen nennen 190 13 13 SPS Zeichenketten als Methodenparameter verwenden 444444sssensnnnnnenneennnnnennn nennen 190 13 14 Bibliotheken von Drittanbietern nennen 191 14 Fehlersuche eegene ra ann aan SEENEN 192 14 1 Build Cannot open include file ntddk bi 192 14 2 Build The target does not exist in the Droe 192 14 3 Debug Unable to attach nn 193 14 4 Activation invalid object id 1821 0x71d 24444444444440Hn nen nnnnnennnnnnnnnnnnennnnnnnnnnnnnnnnnn nenn 194 14 5 Fehlermeldung VS2010 und LNK1123 COFF 220u42422444Hnnnennnnnnnnnnnnnnnnnennnnnnnnennnnnn nenn 194 14 6 Verwendung von C Klassen in TwinCAT C Modulen 194 15 C C Beis TE 196 EEN EE 196 15 2 Beispiel Zyklisches Modul mit 1O ccccccceceseccceeeeeesceeeeeeneeceaeeeueseceeeeenacaeceerbiceaeeeeteaaeeaeeteeaeae 198 15 3 Beispiel02 Zyklische C Logik die IO vom IO Task verwendet nn 199 15 4 Beispiel03 C als ADS Server une nenn nen EEN NEESS EES 200 15 4 1 Beispiel03 Der in C geschriebene TC3 ADS Gerver 201 19 4 2 Beispiel03 ADS Client Um CH 2a aaa 205 15 5 Beispiel05
105. 31 3 erstellt werden Die objektorientierten Erweiterungen des TwinCAT SYS von TwinCAT werden hierzu verwendet Module aus den beiden Welten k nnen ber Schnittstellen auf die gleiche Weise wie reine C Module untereinander interagieren Mit Hilfe der objektorientierten Erweiterung in PLC 3 0 werden die gleichen Schnittstellen bereitgestellt wie in C Die SPS Module melden sich ebenfalls selber beim Modulmanager an und sind demzufolge ber ihn erreichbar Die Komplexit t von SPS Modulen ist unterschiedlich Es macht keinen Unterschied ob nur ein kleines Filtermodul generiert oder ein komplettes SPS Programm in ein Modul hineingepackt wird Und in TC3 C Version 1 0 25 Module BECKHOFF der Tat ist jedes SPS Programm aufgrund der Automation ein Modul im Sinne der TwinCAT Module Jedes klassische SPS Programm wird automatisch in ein Modul gepackt und meldet sich selber beim Modulmanager und bei einem oder mehreren Task Modulen an Der Zugriff auf die Prozessdaten eines SPS Moduls z B Mapping in Bezug auf einen Feldbus Treiber wird ebenfalls Uber die definierten Datenbereiche und ITcADI gesteuert Dieses Verhalten bleibt transparent und unsichtbar f r den SPS Programmierer so lange bis er beschlie t ausdrucklich Teile des SPS Programms als TwinCAT Module zu definieren damit er diese mit geeigneter Flexibilitat nutzen kann 6 2 TwinCAT Component Object Model TcCOM Das TwinCAT Component Object Model definiert die Eigenschaften
106. 4 w hlen Sie eine Priorit t in diesem Fall 15 HINWEIS Wenn mehrere Tasks verwendet werden sollte die h chste Priorit t kleinste Zahl mit der kleinsten Zykluszeit verkn pft werden TC3 C Version 1 0 49 BECKHOFF Schnellstart 5 Legen Sie die Cycle ticks fest in diesem Fall 10ms relativ langsam aber f r dieses Beispiel mehr als ausreichend File Edit View Project Build Debug TwinCAT PLC Team Data Tools Test Window Help in Giag Ge er lt Local gt I TwincAT RT x86 Release art Solution Explorer TIT rer e Task Onine Parameter Online lod Solution TwinCAT Project 1 project e TwinCAT Projects Name Taki Part 350 z 2 g system License IV Auto start Object Id 002010010 1 ae T Auto Priority Management Options ga pen fb E C Disable sig Routes Cycle ticks fio fo ms TC Create symbols TcCOM Objects Al NC Motion Start tick modulo 0 TO Include extemal symbols IT Separate input update Pre ticks jo I Warning by exceeding 7 Message box Watchdog Cycles 0 Comment TwinCAT 3 C Modulinstanz konfigurieren die von dem Task aufzurufen ist Bis jetzt haben wir nur ein C Modul implementiert und eine Instanz dieses Moduls konfiguriert Jetzt konfigurieren wir diese Instanz so dass sie zyklisch ausgef hrt wird 6 C Modulinstanz im Solution Baum w hlen 7 Im rechten Arbe
107. 5 1 AdsReadStateReq Die Methode AdsReadStateReq erm glicht die bermittlung eines ADS Statuslesebefehls f r das Lesen des ADS und des Ger tezustands von einem ADS Server Beim Eingang der Antwort wird AdsReadStateCon gt 165 aufgerufen Syntax int AdsReadStateReq AmsAddr amp rAddr ULONG invokeld Parameter rAddr Typ AmsAddr in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes 260 164 Version 1 0 TC3 C BECKHOFF Programmierreferenz 12 5 5 2 AdsReadStatelnd Die Methode AdsReadStatelnd zeigt einen ADS Statuslesebefehl an f r das Lesen des ADS Zustands und des Ger tezustands von einem ADS Ger t Die AdsReadStateRes 165 muss aufgerufen werden um das Ergebnis zu senden Syntax void AdsReadStateInd AmsAddr amp rAddr ULONG invokeld Parameter rAddr Typ AmsAddr in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen R ckgabewert void 12 5 5 3 AdsReadStateRes Die Methode AdsWriteRes erm glicht das Senden von einer ADS Statusleseantwort AdsReadStateCon gt 165 bildet das Gegenst
108. A SAFETY 4 ei Modules HRESULT Start a face 4 El CModulet HRESULT Stop 3 Implemented Interfaces TwinCAT TMC Code Generator b D TwinCAT Publish Modules b asdf aM key Build EN Rebuild gt Sl Tw Clean b Sa Tw Project Only r b yo al Scope to This EI New Solution Explorer View Daraufhin enthalt das Modul Module1 die neuen Schnittstellen CModule1 Start CModule1 Stop CModule1 SetState SHORT NewState DI Modulel cpp X Untitledi tmc TMC Editor ze Global Scope S i Search Solution Explorer Ctrl i P EES ES s i fal Solution TwinCAT Projectl 1 project m_Trace Log tlVerbose FLEAVEA 1 a D TwinCAT Project gt system a pps lt AutoGeneratedContent id Implem r at r E EIHRESULT CModulel setState SHORT Ne E sarety 4 C HRESULT hr E_NOTIMPL 4 BR Untitled return hr 4 Untitledi Project i D E External Dependencies b fal Header Files EIHRESULT CModulel Start 4 Source Files Modulel cpp TePch cpp HRESULT hr E_NOTIMPL return hr D Untitiedt re Untitled ClassFactory EIHRESULT CModule1 Stop 4 5 TMCFiles Untitledi tme HRESULT hr E_NOTIMPL D gt Sa TwinCAT RT Files return hr b Sm TwinCAT UM Files 11 lt AutoGe dContent gt Bun 2 Fertig der benutzerdefinierte Code kann nun in diesen Bereich eingef gt werden Optionale Anderung der Schnittstelle GE HINWEIS Im Falle von nderu
109. AT Module Class TMC Editor k nnen benutzerdefinierte Datentypen definiert werden Bei diesen Datentypen kann es sich um Typendefinitionen Strukturen Bereiche Aufz hlungen oder Schnittstellen z B Methoden und deren Signaturen handeln Das TwinCAT Engineering System XAE ver ffentlicht diese Datentypen gegen ber allen anderen verschachtelten Projekten des TwinCAT Projekts sodass diese auch z B in SPS Projekten verwendet werden k nnen wie hier 217 beschrieben Namenskonflikt Bitte verwenden Sie keine der SPS vorbehaltenen Schl sselw rter als Namen q Wenn der Treiber im Verbund mit einem SPS Modul verwendet wird kann es zu Namens Hinweis kollisionen kommen In diesem Kapitel wird beschrieben wie die Fahigkeiten des TMC Editors bei der Definition von Datentypen zu verwenden sind 72 Version 1 0 TC3 C BECKHOFF Assistenten 11 3 3 1 bersicht Benutzerinterface Untitledi tmc TMC Editor X ra OK H ee EI a gt Data Types ef Add remove and reorder Data Types DataType1 e IInterface2 te 8 Byte BIR am Ei CModule1 Name Guid Specification Size Size X64 lt 2 Implemented Interfaces DataType1 fc9fb914 67e0 4206 9435 442173e47219 Alias 4 Parameters IInterface2 9ec92408 f51d 4b5e 814c 3294 01fb1fa Interface 5 TraceLevelMax Parameter h Data Areas Eh Data Pointers Interface Pointers En Deployment Symbol Funktion Einen neuen Datentyp h
110. AutoGeneratedContent id ClassIDs gt 4 d Untitled Project gt amp External Dependencies 4 al Header Files Modulel h const CTCID CID_UntitledicModulel x7f7e c25 0x1719 x41c xa8 x2d 0x50 xfe xec x33 0x10 0x43 lt SutoGeneratedContent gt lt AutoGeneratedContent id ParameterIDs const PTCID PID_ModulelParameter 6x 0000001 Bau lt AutoGeneratedContent gt B TePch h UntitlediClassFactory lt AutoGeneratedContent id DataTypes gt e El if defined _TC_TYPE_D6526A1E_8A6F_48EA_A3AD_C2CAC8D56B 4_INCLUDED_ B define _TC_TYPE_D6526A1E_8A6F_48EA_A3AD_C2CAC8D56804_INCLUDED_ Eltypedef struct _stSensorData Modulel cpp x tee ere SHORT nCounter D ee unsigned int tTimeStamp Untitled ClassFactory stSensorData PstSensorData 4 SJ TMC Files pragma pack pop Untitledi tmc aoe gt Sm TwinCAT RT Files PD Sl TwinCAT UM Files gt Evo Wee SAGF_48EA_A3AD_C2CAC8D56B04_INCLUDED_ Eltypedef struct _ModulelParameter ULONG datal ULONG data2 TC3 C Version 1 0 77 Assistenten BECKHOFF Wenn Sie einen weiteren Datentyp oder ein weiteres Unterelement hinzuf gen f hren Sie den TwinCAT TMC Code Generator erneut aus Sehen Sie dazu auch Array gt 87 Enum gt 88 Struct gt 88 Schnittstellen gt 89 mg mg mg mg 11 3 3 3 Schnittstellen hinzuf gen bearbeiten l schen Mit Hilfe des TwinCA
111. C 4 StateMachineDrv Xj StateMachineDrv Project a BB StateMachineDrv_Objl CStateMachineModule gt Inputs gt WW Outputs Schritt 2 Neues SPS Projekt starten TTcWatchSource TTcCyclicCaller ITcPostCyclicCaller TTcNcDcConvert ITcNcDcConvert2 03000018 0000 0000 E000 000000000064 0300001E 0000 0000 E000 000000000064 03000026 0000 0000 E000 000000000064 0300001F 0000 0000 E000 000000000064 03000012 0000 0000 E000 000000000064 01010000 0000 0000 E000 000000000064 08500102 0000 0000 E000 000000000064 08500104 0000 0000 E000 000000000064 05000005 0000 0000 E000 000000000064 05000006 0000 0000 E000 000000000064 6CA406AF 38C4 4CB9 9B8A 3497 CA353A3F Diese Schritte sind in der TwinCAT 3 SPS Dokumentation beschrieben siehe bitte entsprechendes Kapitel Wir erstellten hier ein SPS Projekt genannt PLC calling Statemachine 232 Version 1 0 TC3 C BECKHOFF C C Beispiele Schritt 3 Einen Funktionsbaustein FB hinzuf gen der als der C Modulmethoden aufrufender Proxy fungiert 1 Auf POUs rechtsklicken und Add gt POU ausw hlen File Edit View Project Build Debug TwinCAT PLC Team Data Tools Architecture Test Analyze Window F SSES EE DEET ES a Jas0jdxq uavuas Se xogqjoo I in BIBS EI ler to ____ m Solution TwinCAT Project PLC calling C Method 1 project 4 TwinCAT Project PLC calling C Metho
112. CAT UM Files gt wi StateMachineDrv_Objl CStateMachine m_Outputs Value m_counter a uo D Devices return hr ul Mappings Schritt 10 Code kompilieren 28 Nach der Implementierung aller Schnittstellen ist es Zeit den Code zu kompilieren nach Rechtsklick Build w hlen File Edit View Project Build Debug TwinCAT PLC Team Data Tools Architecture Test Analyze Window Aix E g PB TwinCAT UM 86 lc StateMachineMox lod Solution TwinCAT Project PLC calling C Method 1 4 TwinCAT Project PLC calling C Method J310 dx3 Javuas Se 1BE gt system P MOTION 4 gt E Pc je E SAFETY fc 4 StateMachineDrv Rebuild 7 StateMachineDrv Project a Check all objects PLC_calling_statemachine ES uo D Devices Clean St Mappings Project Only WM Show output from Build _ ola gt ala DISTI no VIST m RE III 777 ee EES 1 gt Touching C TwinCAT3 SDK _products TwinCAT RT xB6 Debug StateMachineDrv StateMachineDrv lastbuildstate 1 gt 1 gt Build succeeded 1 gt 1 gt Time Elapsed 08 08 01 8 Build 1 succeeded failed up to date skipped TC3 C Version 1 0 229 C C Beispiele BECKHOFF Schritt 11 Eine Instanz des C Moduls erstellen 30 Rechtsklick auf das C Projekt und Auswahl von Add New Item um eine neue Modulinstanz zu erstellen
113. Datentypdefinitionen erstellen l schen bearbeiten e Symbole in der Parameterliste eines Moduls erstellen l schen bearbeiten Der TMC Editor unterst tzt den Kunden bei der Definition seiner Datentypen und C Module Zum Beispiel bei Problemen Alignment ung ltige Standarddefinitionen innerhalb des TMC wird der Nutzer ber die Anzeige von roten Markierungen innerhalb des TMC Baums zur entsprechenden Stelle gef hrt TC3 C Version 1 0 69 Assistenten BECKHOFF 4 TMC Um Data Types Lg Edit the properties of the Sub Item DataTypet 4 o Iinterface2 z a 9 Methods General properties Method1 4 K Modules Name Subltem2 a fl CModulet Specification Alias 29 Implemented Interfaces 4 Parameters Choose data type TraceLevelMax Pr Arens Parameter Select Ce bel a Dh Dats Description Normal Type v a ee Value Type Information 4 tE Sub Items Namespace i Sart Sublteml Guid 18071995 0000 0000 0000 000000000006 Le Subltem3 b Eh Data Pointers Optional Subltem settings b Interface Pointers Rai Deployment Offset Bits x64 specific Size Bits x64 specific x64 specific Unit ir Name Value Description Nichtsdestotrotz kann der Nutzer direkt die TMCs bearbeiten weil es sich um XML handelt und somit vom Nutzer selber erzeugt und bearbeitet werden kann Den TMC Code Generator ausf hren Der Editor wird die eingegebene Information in die TMC Datei speichern Diese TMC Be
114. Die Konfiguration aktivieren Beschreibung Das Beispiel beinhaltet eine Instanz des TcEthernetSample Moduls das ARP Pakete zwecks Bestimmung der fernen Hardware Adresse MAC sendet und empf ngt Die CycleUpdate Methode implementiert eine rudiment re Zustandsmaschine f r das Versenden von ARP Paketen und das Warten auf eine Antwort mit einer Zeit berschreitung Das Beispiel verwendet zwei Ethernet Komponenten von TwinCAT 1 Ein ITcEthernetAdapter Instanzenname in Beispiel ist m_spEthernetAdapter stellt einen RT Ethernet Adapter dar Er erm glicht den Zugriff auf die Adapterparameter wie Hardware MAC Adresse Verkn pfungsgeschwindigkeit Verkn pfungsfehler Er kann f r das Senden von Ethernet Frames verwendet werden und erm glicht einer Modulinstanz sich als ein ITcloEthProtocol ber die Methode registerProtocol anzumelden 2 Das ITclIOoEthProtocol wird um das Abtastmodul erweitert das daf r sorgt dass eine Notifizierung bei Ethernet Ereignissen Uber den ITcEthernetAdapter stattfindet Konfiguration Das heruntergeladene TwinCAT Projekt muss f r die Ausf hrung in Netzwerkumgebung konfiguriert sein Bitte f hren Sie die folgenden Schritte aus 7 Das Beispiel verlangt dass die Ethernet Karte den TwinCAT Treiber verwendet Starten Sie TcRtelnstall exe entweder vom XAE ber das Men TwinCAT gt Show Realtime Ethernet compatible devices oder von der Festplatte auf den XAR Systemen El Installat
115. ETHOD FB exit BOOL 2 Solution TwinCAT Project PLC calling C Method 1 project SN 2 VAR INPUT i i a EI Twincat Project PLC calling C Method j bInCopyCode BOOL if TRUE the exit method is c a system eem License Real Time a Di Tasks BE Task1 BE PlcTask z Ste Routes Av bi TcCOM Objects 1 IF ipStateMachine lt gt 0 THEN MOTION 2 ipStateMachine TcRelease 4 Di PLC 2 0 4 Di PLC calling statemachine _ 2 a me a Si PLC calling statemachine Project 2 a Ee gt E External Types A ee gt gj References E DUTs E GVLs 4 LG POUs a IS FB StateMachine FB IM FB_exit FB_init iM GetState ling SetState M Start M Stop a MAIN PRG 12 W hlen Sie wiederum f r Implementation language Structured Text ST aus 13 Dialog mittels Klicken auf Open verlassen 0 HINWEIS TwinCAT 3 0 hat eine leicht abweichende Vorgehensweise f r die Initialisierung des FB siehe Beispieldownload Zum Schluss stehen alle notwendigen Methoden zur Verf gung das sieht so aus a D 4 PLC calling statemachine 4 PLC calling statemachine Project E External Types 3 References gj DUTs GVLs 4 gy POUs a Z FB_StateMachine FB 8 FB_exit ing FB_init Er GetState Er SetState y Start Er Stop 2 MAIN PRG Schritt 6 FB Methoden implementieren Nun m ssen alle Methoden mit Code gef llt werden TC3 C Version 1 0 239 C C Beispiele BECKHOFF Hinweis Fehlend
116. EVICE_INVALIDOBJID Object ID ist ung ltig 0x71E 1822 ADSERR_DEVICE_PENDING Anforderung steht aus 0x71F 1823 ADSERR_DEVICE_ABORTED Anforderung wird abgebrochen 0x720 1824 ADSERR_DEVICE_WARNING Signal Warnung 0x721 1825 ADSERR_DEVICE_INVALIDARRAYIDX Ung ltiger Array Index 0x722 1826 ADSERR_DEVICE_SYMBOLNOTACTIVE Symbol nicht aktiv 0x723 1827 ADSERR_DEVICE_ACCESSDENIED Zugriff verweigert 0x724 1828 ADSERR_DEVICE_LICENSENOTFOUND Fehlende Lizenz 0x725 1829 ADSERR_DEVICE_LICENSEEXPIRED Lizenz abgelaufen 0x726 1830 ADSERR_DEVICE_LICENSEEXCEEDED Lizenz berschritten 0x727 1831 ADSERR_DEVICE_LICENSEINVALID Lizenz ung ltig 0x728 1832 ADSERR_DEVICE_LICENSESYSTEMID Lizenz der System ID ung ltig 0x729 1833 ADSERR_DEVICE_LICENSENOTIMELIMIT Lizenz nicht zeitlich begrenzt 0x72A 1834 ADSERR_DEVICE_LICENSEFUTUREISSUE Lizenzproblem Zeitpunkt in der Zukunft 0x72B 1835 ADSERR_DEVICE_LICENSETIMETOLONG Lizenz Zeitraum zu lang 0x72c 1836 ADSERR_DEVICE_EXCEPTION Exception beim Systemstart 0x72D 1837 ADSERR_DEVICE_LICENSEDUPLICATED Lizenz Datei zweimal gelesen 0x72E 1838 ADSERR_DEVICE_SIGNATUREINVALID Ung ltige Signatur Ox72F 1839 ADSERR_DEVICE_CERTIFICATEINVALID ffentliches Zertifikat 0x740 1856 ADSERR_CLIENT_ERROR Clientfehler 0x741 1857 _ ADSERR_CLIENT_INVALIDPARM Dienst enth lt einen ung ltigen Parameter 0x742 1858 ADSERR_CLIENT_LISTEMPTY Polling Liste ist leer 0x743 1859 ADSERR_CLIENT_VARUSED Var Verbindung bereits im Ei
117. FF e normale Eingabeaufforderung Start gt Command Prompt mit Administratorrechten dann ins Verzeichnis WINDDK7 bin x86 wechseln das die entsprechenden Tools enthalt 1 Auf XAE Im Engineering System folgenden Befehl in die Visual Studio 2010 2012 Eingabeaufforderung mit Administratorrechten eingeben siehe Hinweis oben makecert r pe ss PrivateCertStore n CN MyTestSigningCert MyTestSigningCert cer gt Daraufhin wird ein selbstsigniertes Zertifikat erstellt und in der Datei MyTestSigningCert cer und im Windows Certificate Store gespeichert Das Ergebnis kann mit mmc Use File gt Add Remove Snap in gt Certificates berpr ft werden File Action View Help 9 20 IR rs 5 Certificates Current User Issued To Issued By Expiration Date Intended Purposes Friendly Nar E Personal TestSigningCert TestSigningCert 01 01 2040 lt All gt lt None gt b D Trusted Root Certification Authorities Nu gung y mg b Other People b J PC Doctor Inc 4 5 PrivateCertStore 5 Certificates gt I Certificate Enrollment Requests b Smart Card Trusted Roots 2 Auf XAE Zertifikat konfigurieren sodass es von TwinCAT XAE auf dem Engineering System erkannt wird Umgebungsvariable TWINCATTESTCERTIFICATE auf MyTestSigningCert im Engineering System setzen oder jeweils den Post Build Step von Debug TwinCAT RT x64 und Release TwinCAT RT x64 bearbeiten Der Name der Varia
118. FileAccessMode PTcFileAccessMode 12 4 5 2 Methode ITcFileAccess FileClose Schlie t eine Datei Syntax virtual HRESULT TCOMAPI FileClose PTcFileHandle phrFile Parameter phFile Typ TcFileHandle out zur ckgegebener Datei Handle R ckgabewert Typ HRESULT Bei Erfolg gibt die Methode S_OK zur ck Besonders interessante Fehlercodes 134 Version 1 0 TC3 C BECKHOFF Programmierreferenz e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Die Methode schlie t eine mittels phFile definierte Datei Sehen Sie dazu auch ADS Return Codes gt 260 12 4 5 3 Methode ITcFileAccess FileRead Liest Daten aus einer Datei Syntax virtual HRESULT TCOMAPI FileRead TcFileHandle hFile PVOID pData UINT cbData PUINT pcbRead Parameter hFile Typ TcFileHandle in verweist auf die zuvor ge ffnete Datei pData Typ PVOID out Speicherort der zu lesenden Daten cbData Typ PVOID in maximale Gr e der zu lesenden Daten Gr e des Speichers hinter pData pcbRead Typ PUINT out Gr e der gelesenen Daten R ckgabewert Typ HRESULT Wenn Daten gelesen werden k nnen wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode fragt Daten von
119. ITcAppServices2 INTERFACE ITcBaseClassFadory INTERFACE ITcCyclic INTERFACE ITcCyclicCaller INTERFACE f 2 ITcEthernetAdapter INTERFACE ITcFileAccess INTERFACE ITcIoCyclic IN 0 ITcloCyclicCaller INTERFACE ITcloECatLrwMemory INTERFACE ITcIoEthProtocol INTERFACE ITcNcDcConvert INTERFACE ITcNcDcConvert2 INTERFACE ITcNcTrafo INTERFACE er E Structured view Insert with arguments Insert with namespace prefix Nan mentatinn 234 Version 1 0 TC3 C C C Beispiele BECKHOFF 4 IStateMachine ausw hlen und ber OK verlassen Daraufhin wird die Schnittstelle IStateMachine als zu implementierende Schnittstelle aufgelistet 5 W hlen Sie f r Method implementation language Structured Text ST aus 6 W hlen Sie f r Implementation language Structured Text GT aus 7 Diesen Dialog mit Open beenden Add POU di Create a new POU Program Organization Unit Name FB_StateMachine Type Program Extends V Implements IStateMachine B Method implementation language Function Implementation language Structured Text ST Schritt 4 Funktionsbaustein Schnittstelle saubern Als Ergebnis der Erstellung eines FB der die Schnittstelle IStateMachine implementiert wird der Assistent einen FB mit entsprechenden Methoden erstellen 235 TC3 C Version 1 0 C C Beispiele BECKHOFF Solution Explorer m A
120. Interface Interface Interface Interface Interface Interface Interface Interface Interface In Folge dessen ist nun die neue Schnittstelle IStateMachine Teil der Modulbeschreibung b Interface Pointers 4 WG TMC 4 gt Data Types ZQ Shows the implemented interfaces of the module 4 o StateMachine a Methods Start MN Go Name Interface ID Disable Code Generation ay Modules TComObject 00000012 0000 0000 E000 000000000064 EI CModulet ITeCyclic 03000010 0000 0000 E000 000000000064 2 Implemented Interfaces ITeADI 03000012 0000 0000 E000 000000000064 7 Sy Parameters ITeWatchSource 03000018 0000 0000 000 000000000064 7 b I Data Areas IStateMachine _ d6223080 5e89 47 1b 9b0a 5e40995c0144 Eh Data Pointers TC3 C Version 1 0 81 Assistenten BECKHOFF Schritt 4 Starten Sie den TwinCAT TMC Code Generator um einen Code f r die Modulbeschreibung zu erzeugen 1 Um den C C Code anhand von dieser Modulbeschreibung zu generieren klicken Sie mit der rechten Maustaste in das C C Projekt und w hlen dann den TwinCAT TMC Code Generator oz o aa sl GA Search Solution Explorer Ctri Pr IE TMC e J Solution TwinCAT Project 4 gt Data Types wf Add remove and reorder Methods m ie vojaci C projec 4 o StateMachine 4 E twincat Projectl a Ze Methods cb es f gt ad SYSTEM setState MOTION Start Retum Type Name J Pic Stop HRESULT setState
121. J XAE TC3 C Version 1 0 45 Schnellstart BECKHOFF 9 5 TwinCAT 3 C Modulinstanz erstellen Um es ausf hren zu k nnen muss eine Instanz des Moduls erstellt werden Es k nnen mehrere Instanzen eines Moduls existieren Nach Erstellen eines TwinCAT C Moduls Knoten C Configuration ffnen und dann diesen Schritten folgen um eine Instanz zu erstellen 1 Rechtsklick auf das C Modul in diesem Fall Untitled1 und Auswahl von Add New Item TwinCAT Project8 Microsoft Yisual Studio File Edit View Project Build Debug TwinCAT PLC Team Data Tools 220292 EE nyi NI G R a a Ife Solution Explorer Project lod Solution TwinCAT Projects 1 project E E twincat Project Project Name fu SYSTEM Je NC Motion Project Path fu H PLC SAFETY Project Type E E ed C Proj fr ject Guid fz ed ME E 2 A Unti 2 Add New Item Ctrl Shift A E o Gee X Remove Del g Rename F2 H 9 Le 1 Save Untitledi As Archive C1 _ Send Untitled By E Mail DI LO a Ri X Disable gt Alle bestehenden C Module werden aufgelistet 46 Version 1 0 TC3 C Schnellstart BECKHOFF 2 Wahlen Sie ein C Modul aus Es kann die Standardbezeichnung verwendet oder optional ein neuer Instanzenname eingegeben und mit OK best tigt werden in diesem Beispiel wurde die Standardbezeichnung gew hlt
122. Klassenbeschreibungsdateien beschrieben werden die wie bereits in der Vergangenheit f r eine spezifische Anwendung vorkonfiguriert und verbunden sind Demzufolge kann ein Modul f r eine komplexe Maschineneinheit die intern aus einer Reihe von Untermodulen besteht bereits im Verlauf der Entwicklungsphase als ein Ganzes definiert und vorkonfiguriert werden Instanzenbeschreibungsdateien Ein Instanz eines bestimmten Moduls wird in der Instanzenbeschreibungsdatei TwinCAT Module Instance tmi beschrieben Die Instanzenbeschreibungen sind hnlich aufgebaut wie die Klassenbeschreibungen aber sie enthalten bereits konkrete Festlegungen der Parameter Schnittstellenzeiger usw f r die besondere Instanz des Moduls innerhalb eines Projekts Die Instanzenbeschreibungsdateien werden normalerweise vom Konfigurator erstellt wenn eine Instanz einer Klassenbeschreibung f r ein konkretes Projekt erstellt wird Sie dienen haupts chlich dem Datenaustausch zwischen allen an der Konfiguration beteiligten Tools Allerdings k nnen die Instanzenbeschreibungen auch projekt bergreifend genutzt werden wenn z B ein besonders parametriertes Modul in einem neuen Projekt erneut verwendet werden soll 30 Version 1 0 TC3 C BECKHOFF Module Handhabung 7 Module Handhabung TcCOM Module werden definiert und implementiert Anschlie end k nnen sie e ausgetauscht werden Module exportieren gt 31 Module importieren gt 32 e gestartet wer
123. LC Team Data Tools Test W Reie Bl 2 N Gl ov TwncatRT es Debug Solution Explorer 2 x Modulei cpp X alala m Solution TwinCAT Project8 1 project E 7 Twincar Projects B system CModulei SPERRER ERRER REER State transi Es NC Motion SJHRESULT CModule O PLC s ch HRESULT hr Tl return hr E Sed Untitledi i unten Proja H zi External Der Build E 3 Header Files Rebuild nl Module h Resourct Clean Wenn der Code korrekt erstellt wurde d h keine Syntaxfehler dann muss das Compiler Ausgabe fenster so aussehen wie unten Output Show output From Build H E las za Touching C TwinCAT3 3DK _products TwinCAT RT x86 Debug Untitledl Untitledl lastbuildstate Build succeeded Time Elapsed 00 00 09 99 Build 1 succeeded 0 failed 0 up to date 0 skipped Meee Ee Output Nach erfolgreicher Kompilation Erstellung wird das neue TwinCAT C Modul automatisch in das Ver zeichnis TwinCAT 3Dir Driver Autolnstall bereitgestellt OU el J CA TwinCAT3 Driver Autolnstall 4 H Sen Organize v Include in library Share with v New folder A TwinCAT3 Name Aen 2 TcCppAppl S Te sys 1 Common32 PET TcDemoCpp3 sys A Components i TcDemoModull sys A Config j S TcTestDrvi sys A Driver e Untitled1 sys A Autolnstall ei Untitled Untitled2 sys 1 SDK 7 A Setup A System 1 Target
124. N 2 ipStateMachine TcRelease 4 D PLC 3 ipStateMachine 0 a DI PLC calling statemachine b GE Se TRUE a EjPLC calling statemachine Project R AR a eee gt E External Types rs gt Ga References Eu DUT E GVLs 4 POUs a E FB_StateMachine FB Ga FB_exit IM FB_init DM GetState ling SetState EM Start IM Stop E MAIN PRG 240 Version 1 0 TC3 C BECKHOFF C C Beispiele 3 Variablendeklaration und Code Bereich der Methode GetState implementieren Solution Explorer ME FB_StateMachine GetState x FB_StateMachine FB_exit FB_StateMachine 1 METHOD GetState HRESULT lod Solution TwinCAT Project PLC calling C Method 1 project e 2 VAR_INPUT 4 TwinCAT Project PLC calling C Method 3 pState POINTER TO INT a system END_VAR E License Real Time 4 Lei Tasks BE Task1 PicTask e Sie Routes SS TeCOM Objects LU IF ipStateMachine lt gt 0 THEN MOTION 2 GetState ipStateMachine GetState pState 3 END IF a grc 4 DI PLC calling statemachine 4 PLC calling statemachine Project gt External Types gt L3 References DUTs GVLs a amp Pous a E FB_StateMachine FB Fy FB_exit Ai FB_init ny GetState iin SetState Fy Start Er Stop E MAIN PRG 4 Variablendeklaration und Code Bereich der Methode FB_init implementieren Solution Explorer x B_StateMachine FB_ini 3_StateMachine GetState FB_StateMachine FB_exit FB_StateMachine Twi
125. N SETOBJPARA MAP CSortOrderModule SETOBJPARA DATAAREA MAP lt AutoGeneratedContent id SetObjectParameterMap gt SETOBJPARA_ VALUE PID TcTraceLevel m TraceLevelMax SETOBUPARA ITFPTR PID Ctx TaskOid m spCyclicCaller lt AutoGeneratedContent gt SETOBJPARA_ TYPE CODE PID Ctx _ TaskSortOrder ULONG m spCyclicCaller GetInfo gt sortOr der p ADDED generated code SETOBJPARA VALUE PID Ctx TaskSortOrder m TaskSortOrderContextlParameter END_SETOBJPARA MAP VIII IN NIE INNEN EEE EIERN SIND III II INN AAA EN Get parameters of CSortOrderModule BEGIN GETOBJPARA MAP CSortOrderModule GETOBJPARA DATAAREA MAP lt AutoGeneratedContent id GetObjectParameterMap gt GETOBJPARA_ VALUE PID TcTraceLevel m_TraceLevelMax GETOBJPARA ITFPTR PID Ctx TaskOid m spCyclicCaller lt AutoGeneratedContent gt GETOBJPARA_TYPE_CODE PID Ctx_TaskSortOrder ULONG p m_spCyclicCaller GetInfo gt sortOr TC3 C Version 1 0 255 C C Beispiele BECKHOFF der ADDED generated code GETOBJPARA VALUE PID Ctx TaskSortOrder m TaskSortOrderContextlParameter END GETOBJPARA MAP 10 In diesem Beispiel werden Objekt Name Id und SortOrder zyklisch verfolgt TODO Add your cyclic code here m_countert t m_Inputs Value m_Outputs Value m_counter m_Trace Log tlAlways FNAMEA I am s 0x 08x w SortOrder d this gt TcGetObjectNa me this gt TcGetObjectId m_spCyclicCaller GetInfo gt sort
126. OP zu INIT PI Alle Aktionen vom IP bergang werden umgekehrt und alle beim IP bergang angeforderten Ressourcen werden wieder freigegeben Das Modul meldet sich beim Modulmanager ab und l scht sich normalerweise selbst siehe Lebensdauer 6 4 Klassenbeschreibungsdateien Die Klassen der Module werden in den Klassenbeschreibungsdateien TwinCAT Module Class tmc beschrieben In dieser Datei beschreibt der Modulentwickler Eigenschaften und Schnittstellen des Moduls so dass andere es nutzen und einbetten k nnen Neben den allgemeinen Informationen Herstellerangaben Klassen ID des Moduls usw werden besondere und manchmal optionale Eigenschaften des Moduls beschrieben e Vom Modul unterst tzte Kategorien e Vom Modul implementierte Schnittstellen e Datenbereiche im Modul e Fur das Modul festzulegende Parameter e Schnittstellenzeiger die gesetzt werden k nnen TC3 C Version 1 0 29 Module BECKHOFF e Datenzeiger die gesetzt werden k nnen Die Klassenbeschreibungsdateien werden vom Konfigurator des Systems in erster Linie als Grundlage f r die Einbindung einer Instanz des Moduls in die Konfiguration zum Festlegen der Parameter und zwecks Konfiguration der Verbindungen mit anderen Modulen verwendet Sie enthalten zudem die Beschreibung aller Datentypen in den Modulen die dann vom Konfigurator in sein allgemeines Datentypsystem aufgenommen werden Auch komplexere Konfigurationen mehrerer Module k nnen in den
127. Order ADDED 11 Die Sortierreihenfolge kann auch als 4 Parameter der Methode ITcCyclicCaller AddModule bergeben werden die in CModuleA AddModuleToCaller verwendet wird 12 Den Instanzen dieses Moduls bitte einen Task mit kleinem Zyklusintervall z B 1000ms zuweisen um die Verfolgungsmeldungen an das TwinCAT Engineering System zu begrenzen 13 Jeder Instanz eine andere Sortierreihenfolge ber den TwinCAT Module Instance Configurator gt 112 zuweisen Object Parameter Int Data Area Interfaces Interface Pointer Context fa D Depend On l Manual Config m 7 Need Call From Sync Mapping Data Areas Interfaces 0 pts 7 1 Outputs Data Pointer Interface Pointer Result Task Name Cycle Time us Task Port Symbol Port 1 02010010 zl Task1 350 15 18 Beispiel30 Zeitmessung In diesem Artikel wird die Implementierung eines TC3 C Moduls das Zeitmessungsfunktionalitaten beinhaltet beschrieben Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Dieses Beispiel befasst sich ausschlie lich mit Zeitmessung wie e Abfrage der Taskzyklenzeit in Nanosekund
128. Pointer TwinCAT C Module TwinCAT Module Class for RT Context TwinCAT C Module Name Location TwinCAT Modules Class Erstellt eine neue TwinCAT Modulklasse Diese Vorlage erzeugt ein grundlegendes Kernmodul Es verf gt weder Uber einen zyklischen Aufrufer noch ber einen Datenbereich ist aber ein guter Ausgangspunkt f r die Implementierung von abrufbaren Funktionen auf Anfrage eines Aufrufers Zum Beispiel f r die Erstellung einer C Methode die von einem SPS Modul oder einem anderen C Modul aufgerufen wird Siehe Beispiel11 gt 217 TwinCAT Modules Class mit ADS Port Diese Vorlage bietet sowohl das C Modul als auch die Funktionsweise eines ADS Servers und ADS Clients e ADS Server Kann als einzelne Instanz dieser Vorlage des C Moduls laufen und kann mit einer spezifischen ADS Port Nummer z B 25023 vorkonfiguriert werden Erm glicht mehrere Instanzen dieser Vorlage wobei jedem C Modul seine eigene eindeutige ADS Port Nummer von TwinCAT 3 zugewiesen wird z B 25023 25024 25025 Die ADS Meldungen k nnen dank der Implementierung des C Moduls analysiert und verarbeitet werden Das ADS Handling zwecks Zugriff auf Ein Ausgangsdatenbereiche muss nicht ber ein eigenes ADS Message Handling implementiert werden e ADS Client Diese Vorlage stellt Beispielcodes zur Verfugung um einen ADS Aufruf mittels Versand einer ADS Meldung an einen ADS Partner zu initiieren Da die Module sich wi
129. Project Vorlage f r die Erstellung einer statischen Bibliothek 6 F gen Sie bitte im Treiber der die statische Bibliothek nutzt diese als eine zus tzliche Abh ngigkeit f r den Linker hinzu Offnen Sie bitte die Projekteigenschaften des Treibers und f gen die statische Bibliothek hinzu DriverProject Property Pages Lil Tel Configuration Active Release v Platform Active T winCAT RT x64 X Configuration Manager 4 Configuration Properties Additional Dependencies StaticProject lib Tf Framework lib TcDdkHal lib TcDdkK General Ignore All Default Libraries Yes NODEFAULILIB Debugging Ignore Specific Default Libraries VC Directories Module Definition File b C C Add Module to Assembly 4 Linker Embed Managed Resource File General E Force Symbol References a Delay Loaded Dills u Assembly Link Resource Debugging System Optimization TC3 C Version 1 0 253 C C Beispiele BECKHOFF 7 Dar ber hinaus muss das Bibliotheksverzeichnis erweitert werden damit der Linker die zus tzliche Bibliothek auch findet D DriverProject Property Pages BEZ Configuration Active Release v Platform Active TwinCAT RT x64 N Configuration Manager 4 Configuration Properties Output File OutDir ProjectName TargetExt a General e Show Progress Not Set Debugging Version VC Directories Enable Incremental Linking b C C Suppress Startup Banner Y
130. RAUTOINSTALLPATH CLASSFACTORYNAME sys_ TwinCAT RT x86 SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASSFACTORYNAME pdb TC_DRIVERAUTOINSTALLPATH CLASSFACTORYNAME pdb TwinCAT UM x86 SOLUTIONDEPLOYMENTPATH TwinCAT UM x86 CLASSFACTORYNAME W32 dI TC_SYSSRVEXEPATH CLASSFACTORYNAMEZW32 dil TwinCAT UM x86 SOLUTIONDEPLOYMENTPATH TwinCAT UM x86 CLASSFACTORYNAME W32 pdb TC_SYSSRVEXEPATHZ CLASSFACTORYNAME W32 pdb Edit the properties of the selected File Entry Target Platform TwinCAT RT x86 Source File SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASSFACTORYNAME sys Destination File TC_DRIVERAUTOINSTALLPATH CLASSFACTORYNAME sys Quell und Zielpfade f r die Bereitstellung k nnen virtuelle Umgebungsvariablen beinhalten die vom TwinCAT XAE XAR System aufgel st werden Die nachfolgende Tabelle enth lt die Liste dieser unterst tzten virtuellen Umgebungsvariablen 184 Version 1 0 TC3 C BECKHOFF How to Virtuelle Umgebungsvariable Registrierungswert REG_SZ Defaultwert unter Taste HKLM Software Beckhoff Twin CAT3 TC_INSTALLPATH InstallDir C TwinCAT 3 x TC_CONFIGPATH ConfigDir C TwinCAT 3 x Config TC_TARGETPATH TargetDir C TwinCAT 3 x Target TC_SYSTEMPATH SystemDir C TwinCAT 3 x System TC_BOOTPRJPATH BootDir C TwinCAT 3 x Boot TC_RESOURCEPATH ResourceDir C TwinCAT 3 x Target Resource TC_REPOSITORYPATH RepositoryDir C TwinCAT 3 x
131. RT 64 Configuration Manager WINDDK bin 86 signtool sign v s PrivateCertStore n SCT b Common Properties Command Line 4 Configuration Properties Description General Use In Build Yes Debugging Command Line SIS VC Directories C C S WINDDK7 bin 86 signtool sign Ju s PrivateCertStore n SCTWINCATTESTCERTIFICATE S TargetPath Linker Manifest Tool gt Resources MIDL XML Document Gene Browse Information 4 Build Events Pre Build Event Pre Link Event Post Build Event Custom Build Step Specifies a command line for the post build event tool to run H m TC3 C Version 1 0 21 Vorbereitung nur einmal BECKHOFF Der Kunde kann einfach den Wert der Umgebungsvariablen TWINCATTESTCERTIFICATE ersetzen oder ein anderes zu verwendendes Zertifikat bestimmen Der Kunde kann auch das ganze Signierverfahren mit dem Signiertool andern 22 Version 1 0 TC3 C BECKHOFF Module 6 Module Das TwinCAT Modulkonzept ist eines der Kernelemente fur die Modularisierung moderner Maschinen Dieses Kapitel beschreibt das Modulkonzept und den Umgang mit Modulen Das Modulkonzept gilt fur jedes TwinCAT Modul nicht nur fur C Module Die meisten Details betreffen aber nur das Engineering von C Modulen 6 1 TwinCAT Modul Ein TwinCAT Modul hat eine Reihe formal definierter Eigenschaften teilweise vorgeschrieben und teilweise optional Die E
132. Res AmsAddr amp rAddr ULONG invokeld ULONG nResult Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 R ckgabewert Typ int ADS Return Code siehe AdsStatuscodes gt 260 12 5 3 4 AdsWriteCon Die Methode AdsWriteCon erm glicht den Empfang einer ADS Schreibbest tigung Das empfangende Modul muss diese Methode bereitstellen AdsWriteReg gt 160 bildet das Gegenst ck und muss zuvor aufgerufen worden sein Syntax void AdsWriteCon AmsAddr amp rAddr ULONG invokeld ULONG nResult TC3 C Version 1 0 161 Programmierreferenz BECKHOFF Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 R ckgabewert void 12 5 4 AdsReadWrite 12 5 4 1 AdsReadWriteReq Die Methode AdsReadWriteReq erm glicht das Senden eines ADS Lese Schreibbefehls f r d
133. Result Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 adsState Typ USHORT in enth lt den ADS Zustand des Ger ts deviceState Typ USHORT in enth lt den Ger testatus des Ger ts R ckgabewert void 12 5 6 AdsWriteControl 12 5 6 1 AdsWriteControlReq Mit der Methode AdsWriteControlReq kann ein ADS Schreibsteuerungsbefehl zur nderung des ADS und Ger testatus eines ADS Servers gesendet werden Beim Eingang der Antwort wird AdsWriteControlCon gt 168 aufgerufen Syntax int AdsWriteControlReq AmsAddr amp rAddr ULONG invokeld USHORT adsState USHORT deviceState ULONG cbLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen adsState Typ USHORT in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes deviceState Typ USHORT in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbLength Typ ULONG in enth lt die L nge in Bytes der Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem die geschriebenen Daten sich befinden R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes gt 260 166 Version 1 0 TC3 C BECKHOFF
134. Schnittstelle Die Parameter ID konfigurieren Siehe Parameter gt 93 Comment Optional Context ID Kontext ID des Schnittstellenzeigers Disable Code Generation Die Code Generierung freigeben sperren 11 3 4 6 Bereitstellung Deployment Speicherorte f r die bereitgestellten Module festlegen TC3 C Version 1 0 111 Assistenten BECKHOFF a B TM ta 2 Data Types Specify the deployment of the module 4 fig Modules 4 EI CModule1 Implemented Interfaces Define the files which should be deployed a 4 Parameters SS TraceLevelMax t E bEnable Target Platform SourceFile DestinationFile wk paren TwinCAT RT x86 SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASSFACTORYNAME sys TC_DRIVERAUTOINSTALLPATH CLASS g 5 Symbols TwinCAT RT x86 SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASSFACTORYNAME pdb TC_DRIVERAUTOINSTALLPATH CLASS m Value TwinCAT UM x86 SOLUTIONDEPLOYMENTPATH TwinCAT UM x86 CLASSFACTORYNAME W32 dI TC_SYSSRVEXEPATH CLASSFACTORY m Status TwinCAT UM x86 SOLUTIONDEPLOYMENTPATH TwinCAT UM x86 CLASSFACTORYNAME W32 pdb TC_SYSSRVEXEPATH CLASSFACTORY m Data TwinCAT RT x64 SOLUTIONDEPLOYMENTPATH TwinCAT RT x64 CLASSFACTORYNAME sys TC_DRIVERAUTOINSTALLPATH CLASS b D Outputs TwinCAT RT x64 SOLUTIONDEPLOYMENTPATH TwinCAT RT x64 CLASSFACTORYNAME pdb TC_DRIVERAUTOINSTALLPATH CLASS a Dh DataArea3 TwinCAT UM x64 SOLUTIONDEPLOYMENTPATH TwinCAT UM x64 CLASSFACTORYNAME W32
135. Server 10 CModulel CycleUpdate Level tIWarning cycle 16640 184 22 04 2015 16 06 02 942 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 17160 A 189 22 04 2015 16 06 08 142 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 17680 A 194 22 04 2015 16 06 13 342 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 18200 A 199 22 04 2015 16 06 18 542 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 18720 In diesem Screenshot ist nur Messages aktiviert Errors und Warnings dagegen sind f r die Anzeige deaktiviert Error List Y amp 58Erors A 56 Warnings 189 Messages Clear Description 4 57 22 04 2015 16 03 51 342 ms TCOM Server 10 CModulel CycleUpdate Level tlAlways cycle 4000 60 22 04 2015 16 03 53 742 ms TCOM Server 10 CModulel CycleUpdate Level tlInfo cycle 4240 61 22 04 2015 16 03 54 542 ms TCOM Server 10 CModulel CycleUpdate Level tIVerbose cycle 4320 62 22 04 2015 16 03 56 342 ms TCOM Server 10 CModulel CycleUpdate Level tlAlways cycle 4500 65 22 04 2015 16 03 59 042 ms TCOM Server 10 CModulel CycleUpdate Level tlInfo cycle 4770 66 22 04 2015 16 03 59 942 ms TCOM Server 10 CModulel CycleUpdate Level tIVerbose cycle 4860 67 22 04 2015 16 04 01 342 ms TCOM Server 10 CModulel CycleUpdate Level tlAlways cycle 5000 70 22 04 2015 16 04 04 342 ms
136. SetString HRESULT 2 VAR_INPUT 3 sSent STRING amp 0 4 END VAR e m 1 IF ipStateMachine lt gt 0 THEN 2 SetString ipStateMachine SetString SIZEOF sSent ADR sSent 3 END IF Der Grund ist der unterschiedliche Umgang mit Methodenparametern in beiden Welten e PLC Verwendet den Werteaufruf call by value fur STRING nn Datentypen e TwinCAT C TMC Verwendet Verweisaufruf call by reference 13 14 Bibliotheken von Drittanbietern In Kernel Modus vorliegender C C Code kann nicht mit Bibliotheken von Drittanbietern die f r die Ausf hrung im User Modus konzipiert wurden verkn pft werden und diese ausf hren Somit besteht keine M glichkeit eine beliebige DLL in TwinCAT C Modulen zu verwenden Stattdessen kann die Verbindung zur TwinCAT 3 Echtzeitumgebung ber ADS Kommunikation realisiert werden Man kann eine User Modus Anwendung implementieren die die Bibliothek von Drittanbietern verwendet welche TwinCAT Funktionalit ten ber ADS zur Verf gung stellt TC3 C Version 1 0 191 Fehlersuche BECKHOFF 14 Fehlersuche Liste von Fallstricken und Pannen beim Umgang mit TwinCAT C Modulen 14 1 Build Cannot open include file ntddk h Beim Erstellen eines TwinCAT C Projekts zeigt diese Fehlermeldung ein WinDDK Problem auf Ihrem Engineering Computer Show cutput from Buid jlo ldd xia PreBuildEvent Description C TwinCAT3 SDK Bin Extrect Yersioninfo Untitiedl C Twi
137. Solution Explorer FB_StateMachine Stop FB_StateMachine SetState 1 METHOD Stop HRESULT lod Solution TwinCAT Project PLC calling C Method 1 project 4 TwinCAT Project PLC calling C Method a system License Real Time a amp Tasks E Task1 BE PicTask 71 Sts Routes av TcCOM Objects 1 IF ipStateMachine lt gt 0 THEN MOTION 2 Stop ipStateMachine Stop a Dec 3 END IF 4 DI PLC calling statemachine 4 PLC calling statemachine Project E External Types Sj References E DUT E GVLs a Gr POUs a E FB_StateMachine FB iy FB_exit lina FB_init Fy GetState ling SetState EM Start IM Stop E MAIN PRG Schritt 7 FB in SPS aufrufen Die Implementierung des FB_StateMachine der als Proxy zum Aufruf der C Modulinstanz agiert ist abgeschlossen Jetzt wird der FB_StateMachine in der SPS POU MAIN aufgerufen Dieses einfache Beispiel agiert folgenderma en Zyklische Inkrementierung eines SPS Z hlers nCounter Wenn nCounter 500 dann wird die C StateMachine mit Zustand 1 gestartet um seinen internen C Z hler zu inkrementieren Wenn nCounter 1000 dann wird die C StateMachine auf Zustand 2 gesetzt um seinen internen C Z hler zu dekrementieren Wenn nCounter 1500 dann wird die C StateMachine gestoppt Der SPS nCounter wird ebenfalls auf 0 gesetzt sodass alles von vorne beginnt TC3 C Version 1 0 243 C C Beispiele BECKHOFF
138. Syntax ULONG TcAddRef R ckgabewert Daraus resultierender Referenzzahlwert Beschreibung Inkrementiert den Referenzz hler und gibt den neuen Wert zur ck 12 4 1 2 Methode ITcUnknown QuerylInterface Abfrage der Referenz an eine implementierte Schnittstelle ber der IID Syntax HRESULT QueryInterface RITCID iid PPVOID piplItf iid Typ RITCID Schnittstelle IID pipltf Typ PVOID Zeiger auf Schnittstellenzeiger Wird gesetzt wenn der verlangte Schnittstellentyp von der entsprechenden Instanz verf gbar ist R ckgabewert Ein R ckgabewert S_OK weist auf Erfolg hin Wenn die verlangte Schnittstelle nicht verf gbar ist gibt die Methode ADS_E_NOINTERFACE zur ck Beschreibung Abfrage der Referenz an eine implementierte Schnittstelle ber der IID Es wird empfohlen Smart Pointer zu verwenden um Schnittstellenzeiger zu initialisieren und zu halten Variante 1 HRESULT GetTraceLevel ITcUnkown ip TcTraceLevel amp tl HRESULT hr S_OK if ip NULL TComObjectPtr spObj hr ip gt TcQueryInterface spObj GetIID amp spObj if SUCCEEDED hr hr spObj gt TcGetObjPara PID TcTraceLevel amp tl sizeof tl return hr Die mit dem Smart Pointer verbundene Schnittstellen ID kann in TcQueryInterface als Parameter verwendet werden Der Operator amp wird den Zeiger auf die interne Schnittstellen Zeiger Membervariable des Smart Pointers zur ckgeben Variante 1 geht davon aus dass
139. T C Driver Name StateMachineDrv Location C Users stefanh BECKHOFF documents visual studio 2010 Projects TwinCAT Project PLC callinc 3 W hlen Sie eine f r diesen neuen Treiber zu verwendende Vorlage In diesem Beispiel w hlten wir den WinCAT Module Class with Cyclic IO da der interne Z hler der Zustandsmaschine verf gbar ist um den IO zugeordnet zu werden 4 Klicken Sie auf Add um fortzufahren r Add New Item Storch Installed Templates Sort by Default Search Installed Templates D TwinCAT C Module gt H TwinCAT Module Class TwinCAT C Module Type het Ab Gee Monte Creates a new TwinCAT module class Lem which implements the cyclic caller TwinCAT Module Class with ADS port TwinCAT C Module interface and which has an input and output data area PES TwinCAT Module Class with Cyclic Caller TwinCAT C Module zm TwinCAT Module Class with Data Pointer TwinCAT C Module 5 Einen Namen f r die neue Klasse im C Treiber StateMachineDrv angeben 6 F r Short name geben wir in diesem Beispiel StateMachineModule ein Durch Klicken in eines der anderen Bearbeitungsfelder wird der Name in den anderen Feldern wie Class name oder Header file name usw bernommen 220 Version 1 0 TC3 C BECKHOFF C C Beispiele 7 Klicken Sie auf OK um fortzufahren WA NIS ZAT NSN Se TTS ES See
140. T Module Class TMC Editors k nnen Schnittstellen eines TwinCAT Moduls hinzugef gt bearbeitet und gel scht werden Dieser Artikel beschreibt e Schritt 1 Eine neue Schnittstelle 78 in der TMC Datei erstellen e Schritt 2 gt 79 Der Schnittstelle in der TMC Datei Methoden hinzuf gen e Schritt 3 Verwenden Sie die Schnittstelle 80 indem sie diese zu Implemented Interfaces des Moduls hinzuf gen e Schritt 4 Starten Sie den TwinCAT TMC gt 82 Code Generator um einen Code f r die Modulbeschreibung zu erzeugen Optionale nderung der Schnittstelle gt 82 Schritt 1 Eine neue Schnittstelle erzeugen 1 Nach dem Starten des TMC Editors den Knoten Data Types ausw hlen 2 Die Liste der Schnittstellen wird mittels Klicken auf Add a new interface um eine neue Schnittstelle erweitert gt Daraufhin wird IInterface1 als neuer Eintrag aufgef hrt Untitled1 tmc TMC Editor X GA a BG TMC a Data Types e Add remove and reorder Data Types o IInterface1 4 ai Modules a a sbe R I aa a fE CModule1 Implemented Interfaces Name Guid Specification Size Size X64 o p Ba Parameters Iinterface1 79b3869d 8b94 4646 8359 a1709 bf5f95 Interface b Data Areas Dh Data Pointers b Z Interface Pointers Deployment 3 Entweder wahlen Sie den entsprechenden Knoten im Baum oder machen einen Doppelklick auf die Zeile in der Tabelle um die Einzelheiten zu offn
141. TCOM Server 10 CModulel CycleUpdate Level tlInfo cycle 5300 71 22 04 2015 16 04 05 342 ms TCOM Server 10 CModulel CycleUpdate Level tIVerbose cycle 5400 72 22 04 2015 16 04 06 342 ms TCOM Server 10 CModulel CycleUpdate Level tlAlways cycle 5500 TC3 C Version 1 0 179 How to BECKHOFF 13 How to Eine Sammlung haufig gestellter Fragen zu allgemeinen Programmierbeispielen und dem Handling von TwinCAT C Modulen 13 1 Ziellaufzeit auswahlen In diesem Artikel wird die Auswahl der Ziel TwinCAT 3 Laufzeit beschrieben Das kann sein die lokale TwinCAT 3 XAR Laufzeit e eine TwinCAT 3 XAR Remote Laufzeit im Netzwerk Verbindung mit lokaler TwinCAT XAR Laufzeit Nach Anlage eines neuen TwinCAT 3 Projekts ist standardm ig das lokale XAR Laufzeitsystem ausgew hlt 1 Wenn nicht lt Local gt w hlen um die C Module in das lokale TwinCAT 3 Laufzeitsystem herunterzuladen GO TwinCAT Project129 Microsoft Visual Studio Administrator File Edit View Project Debug TwinCAT PLC Team Data a a ed amp sa eae Tr fais BSN Sl or Solution Explorer cy ba Solution TwinCAT Project129 1 project a TwinCAT Project129 tsp E SYSTEM IE NC Motion E PLC lt Local gt Mit einer TwinCAT 3 XAR Remote Laufzeit im Netzwerk verbinden Um eine TwinCAT 3 Solution auf eine TwinCAT 3 XAR Laufzeit auf einem anderen Computer Uber das Netzwerk herunterzuladen auszuf
142. TIME Wandelt die gegebene Systemzeit in eine IpSystemTime FILETIME IpFileTime Dateizeit um H TcFileTimeToSystemTime const FEIL E TIME Wandelt die gegebene Dateizeit in eine pFileTime SYSTEMTIME IpSystemTime Systemzeit um H TcSystemTimeToFileTime const SYSTEMTIME Wandelt die gegebene Systemzeit in eine IpSystemTime ULONGLONG amp ul64FileTime Dateizeit um ULONGLONG Format H TcFileTimeToSystemTime const ULONGLONG amp Wandelt die gegebene Dateizeit ul64FileTime SYSTEMTIME IpSystemTime ULONGLONG Format in eine Systemzeit um 12 8 STL Container Nur x86 32Bit Beachten Sie dass die STL Funktion derzeit nur unter x86 32Bit verf gbar ist Hinweis TwinCAT 3 C unterst tzt STL bez glich e Vector e Map e List e String Speicherplatz wird in Abhangigkeit vom Zustand gt 27 alloziert Beim bergang von PreOp zu SafeOp PS vom non paged Pool des Betriebssystems TC3 C Version 1 0 175 Programmierreferenz BECKHOFF In Echtzeitkontext von TwinCAT Routerspeicher 12 9 Fehlermeldungen Verst ndnis Es mag den Anschein haben dass die Fehlermeldungen von TwinCAT berladen sind BI TwinCAT System L Error starting TwinCAT system NO7 Initl6 I0 Set State TComObj SAFEOP OP Set Object Untitled1_Objl CModulel to OP gt gt AdsWarning 1821 0x71d ADS ERROR invalid object id For further information start the event viewer and open the application log
143. TwinCAT Class Wizard Short name StateMachineModule Class name Header file name Source file name gt Daraufhin erstellt der Assistent ein C Projekt das fehlerfrei kompiliert werden kann Schritt 3 Eine neue TwinCAT 3 Schnittstelle erzeugen Namenskonflikt Bitte verwenden Sie keine der SPS vorbehaltenen Schl sselw rter als Namen j Wenn der Treiber im Verbund mit einem SPS Modul verwendet wird kann es zu Namens Hinweis kollisionen kommen TC3 C Version 1 0 221 C C Beispiele BECKHOFF 8 Starten Sie den TMC Editor mittels Doppelklick auf StateMachineDrv tmc w hlen Sie dann Data Types auf der rechten Seite DJ Solution TwinCAT Project PLC calling C Method 1 t 3 Data Types 4 ai TwinCAT Project PLC calling C Method Si Modules al SYSTEM a MOTION SI PLC S SAFETY 4 ES C 4 fed StateMachineDrv 4 StateMachineDrv Project gt al External Dependencies gt il Header Files gt i Source Files a Li TMC Files OG StateMachineDrv tmc gt ij TwinCAT RT Files gt i TwinCAT UM Files 9 F gen Sie eine neue Schnittstelle mittels Klicken auf die Taste Add a new interface hinzu 10 Daraufhin wird ein neuer Eintrag IInterface1 aufgef hrt w hlen Sie IInterface1 im linken Baum oder doppelklicken Sie auf IInterface1 in der Datentypenliste um Details bez glich der neuen Schnittstelle zu erhalten 11 Geben Sie einen aussagekr ftige
144. Typ ULONG optional die Sortierreihenfolge kann f r die Steuerung der Ausf hrungsreihenfolge verwendet werden wenn verschiedene Modulinstanzen vom gleichen zyklischen Aufrufer ausgef hrt werden R ckgabewert Typ HRESULT Bei Erfolg gibt die Methode S_OK zur ck Wenn der zyklische Aufrufer d h der TwinCAT Task nicht im OP Zustand ist wird der Fehler ADS_E_INVALIDSTATE zur ckgegeben Beschreibung Ein TwinCAT Modulklasse verwendet einen Smart Pointer um auf den zyklischen Aufrufer vom Typ ITcPostCyclicCallerPtr zu verweisen Die Objekt ID des Tasks ist in diesem Smart Pointer gespeichert und eine Referenz zum Task kann ber den TwinCAT Objektserver erhalten werden Dar ber hinaus enth lt die Klasse des Smart Pointers bereits einen Listeneintrag Demzufolge kann der Smart Pointer als erster Parameter f r die AddPostModule Methode verwendet werden Das folgende Codebeispiel veranschaulicht die Anmeldung der ITcPostCyclicCaller Schnittstelle RESULT hr S_OK Ira emEspBosteyeliieCalTerrHasorDi et LE SUCCEEDED DBG hr m _spSrv gt TcQuerySmartObjectInterface m spPostCyclicCaller if FAILED hr m spPostCyclicCaller gt AddPostModule m spPostCyclicCaller DEILSBENSITNCHTEPosEeyelTen nt m spPostCyclicCaller NULL Sehen Sie dazu auch B Schnittstelle ITcPostCyclic gt 143 B Schnittstelle ITcloCyclicCaller gt 147 12 4 8 2 Methode ITcPostCyclicCaller RemovePostModule Eine Modulinstanz vom
145. UES yi m bCount FALSE by default che counter should not Imerememie m Counter 0 we also initialize this existing counter 3 a Fugen Sie der ADS Serverschnittstelle die Beispiellogik hinzu Normalerweise empf ngt der ADS Server eine ADS Meldung die zwei Parameter indexGroup und indexOffset und gegebenenfalls weitere Daten pData enth lt ADS Schnittstelle entwerfen Unser Z hler sollte gestartet gestoppt zur ckgesetzt mit Wert berschrieben werden oder dem ADS Client auf Anfrage einen Wert liefern indexGroup indexOffset Beschreibung 0x01 0x01 m_bCount TRUE Z hler wird inkrementiert 0x01 0x02 Z hlerwert wird ADS Client bergeben 0x02 0x01 m_bCount FALSE Z hler wird nicht mehr inkrementiert 0x02 0x02 Z hler zur cksetzen 0x03 0x01 Z hler mit vom ADS Client bergebenen Wert berschreiben Diese Parameter sind in modules1Ads h definiert f gen Sie die blauen Codezeilen ein um einen neuen Befehl f r IG_RESET hinzuzuf gen include TcDef h enum ModulelIndexGroups ULONG ModulelIndexGroupl 0x00000001 ModulelIndexGroup2 0x00000002 add command IG_OVERWRITE 0x00000003 and new command enum ModulelIndexOffsets ULONG ModulelIndexOffsetl ModulelIndexOffset2 0x00000001 0x00000002 F gen Sie die blauen Codezeilen in Ihre lt MyClass gt AdsReadWritelnd Methode ein in diesem Falle in Module1 cpp
146. ULONG sortOrder 0 0 Parameter pEntry Typ STcCyclicEntry in Zeiger auf einen Listeneintrag welcher in die interne Liste des zyklischen Aufrufers eingef gt wird Siehe auch Beschreibung ipMod Typ ITcCyclic in Schnittstellenzeiger der vom zyklischen Aufrufer verwendet wird context Typ ULONG_PTR optional ein Kontextwert der bei jedem Aufruf an die ITcCyclic CyclicUpdate Methode bergeben wird sortOrder Typ ULONG optional die Sortierreihenfolge kann f r die Steuerung der Ausf hrungsreihenfolge verwendet werden wenn verschiedene Modulinstanzen vom gleichen zyklischen Aufrufer ausgef hrt werden R ckgabewert Typ HRESULT Bei Erfolg gibt die Methode S_OK zur ck Wenn der zyklische Aufrufer d h der TwinCAT Task nicht im OP Zustand ist wird der Fehler ADS_E_INVALIDSTATE zur ckgegeben TC3 C Version 1 0 131 Programmierreferenz BECKHOFF Beschreibung Eine TwinCAT Modulklasse verweist normalerweise mit einem Smart Pointer auf den zyklischen Aufrufer Typ ITcCyclicCallerPtr Die Objekt ID des Tasks ist in diesem Smart Pointer gespeichert und eine Referenz zum Task kann ber den TwinCAT Objektserver erhalten werden Dar ber hinaus enth lt die Klasse des Smart Pointers bereits einen Listeneintrag Demzufolge kann der Smart Pointer als erster Parameter f r die AddModule Methode verwendet werden Der folgende Beispielcode zeigt die Anmeldung der ITcCyclicCaller Schnittstelle RESULT hr
147. Untitled ClassFactory cpp b Sd TMC Files b Sl TwinCAT RT Files 178 Version 1 0 TC3 C BECKHOFF Programmierreferenz Alternativ dazu kann die Verfolgungsebene auch wahrend der Laufzeit geandert werden indem man zur Instanz geht eine Ebene bei Value f r TraceLevelMax Parameter ausw hlt dann Rechtsklick vor der ersten Spalte und Online Write ausw hlen IST ACEN Module pp Module bh Object Context Parameter Init Data Area Interfaces Interface Pointer Type TcTraceLevel UDINT data2 0 UDINT LREAL Meldungskategorien filtern Visual Studio Error List erm glicht das Filtern der Eintr ge nach deren Kategorie Die drei Kategorien Errors Warnings und Messages k nnen unabh ngig voneinander durch einfaches Umschalten der Tasten aktiviert oder deaktiviert werden In diesem Screenshot ist nur Warnings aktiviert Errors und Messages dagegen sind deaktiviert Y amp 42Erors 41 Warnings 145 Messages Clear Description 4 164 22 04 2015 16 05 42 142 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 15080 169 22 04 2015 16 05 47 342 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 15600 174 22 04 2015 16 05 52 542 ms TCOM Server 10 CModulel CycleUpdate Level tIWarning cycle 16120 179 22 04 2015 16 05 57 742 ms TCOM
148. Value Feld bearbeiten Der neue Wert wird zwischen Klammern gesetzt und rot markiert Um den Wert nun zu schreiben dr cken Sie auf das Symbol oben links 10 1 Einzelheiten zu den bedingten Haltepunkten TwinCAT C stellt bedingte Haltepunkte zur Verf gung Einzelheiten zur Formulierung dieser Bedingungen finden Sie hier 62 Version 1 0 TC3 C BECKHOFF Debuggen Bar Breakpoint Condition When the breakpoint location is reached the expression is evaluated and the breakpoint is hit only if the expression is true or has changed V Condition m_counter lt 10000 Is true Has changed OK Cancel Im Gegensatz zu den Visual Studio C bedingten Haltepunkten werden die TwinCAT Bedingungen kompiliert und anschlie end auf das Zielsystem bertragen sodass sie w hrend kurzen Zyklenzeiten verwendet werden k nnen Die Optionsschaltfl chen bieten zwei Optionen die getrennt voneinander beschrieben werden Option Is true Bedingungen werden mit Hilfe von logischen Termen vergleichbar mit den konjunktiven Normalformen definiert Sie werden aus einer Kombination von mit amp amp verbundenen Maxterms gebildet Maxterml amp amp Maxterm2 amp amp amp amp MaxtermN wobei jedes Maxterm eine Kombination von verbundenen Bedingungen darstellt eonderensg ileoncakealom 755 rerernlll lec Oncaktaloniim M gliche Vergleichsoperatoren lt gt lt gt F r die
149. Visual Studio Umgebung ber Start gt All Programs gt Microsoft Visual Studio starten A Microsoft Visual SourceSafe A Microsoft Visual Studio 2008 A Microsoft Visual Studio 2010 Microsoft Test Manager 2010 Microsoft Visual Studio 2010 Docum G Microsoft Visual Studio 2010 A Microsoft Windows SDK Tools A Team Foundation Server Tools A Visual Studio Tools X m 4 Back TC3 C Version 1 0 37 Schnellstart BECKHOFF TwinCAT 3 Projekt erstellen Um eine TwinCAT 3 Solution zu erstellen Visual Studio ffnen und folgende Schritte ausf hren 2 Auswahlen File gt New gt Project File New SE View Tn E EE Web Site Shift Alt N Open KI Close if Team Project Close Solution DI File Ctrl N el Save Selected Items Ctrl S Project From Existing Code Wer ern FI Visual Studio 2010 uh Save as library and install Save Selected Items As Save All Ctrl Shift S 17 Connect To Team Foundation Server Export Template mme Source Control gt A New Project U Page Setup PH Open Project 3 Print Ctrl P Recent Files gt Recent Projects Recent Projects and Solutions D Exit Alt F4 TwinCAT Project57 38 Version 1 0 TC3 C BECKHOFF Schnellstart 3 Es werden alle bestehenden Projektvorlagen angezeigt W hlen Sie TwinCAT XAE Project optional kann ein passender Projektname eingegeben und mit OK fortgefahren werden Sie k nnen den Namen des Verze
150. Ziel mit einem X gekennzeichnet um eine erfolgreich konfigurierte ADS Route anzuzeigen Enter Host Name IP Refresh Status Broadcast Search Host Name Connected Address AMS Netld TwinCAT OS Version Comment os CX 08438E 10 1 128 114 58 163 142 1 1 2 11 2021 Win CE 6 0 E x 08B8B2 10 1 128 116 5 8 184 178 1 1 2 11 2021 Win CE 6 0 F Cx_DOBDEC 10 1 128 141 5 0 189 236 1 1 2 11 1553 WinCE 6 0 8 CG DEE 76 10 1 128 18 5 0 254 118 1 1 2 11 2023 WinCE 6 0 Cx_012228 10 1 128 29 5 1 34 40 1 1 2 11 2035 WinCE 6 0 CX_012FC5 101 128 144 5 1 47 197 1 1 2 11 2035 WinCE 6 0 Cx_03FC68 10 1 128 112 5 3 252 104 1 1 2 10 1341 Win CE 5 0 m Route Name Target Cx lt _02154F Route Name Remote AmsNetld 10 1 128 135 1 1 Target Route Remote Route Transport Type TCP_IP v 9 SE Ir Static Static Address Info CX_0215AF 5 Temporary Temporary Host Name D IP Address Connection Timeout Let 1 Kal Add Route Close 9 Wenn das System mit einer Zeit berschreitung antwortet erh hen Sie die Zeit fur Verbindungstimeout und versuchen es noch ein Mal 10 Wenn die Verbindung hergestellt ist Close w hlen um den Schritt abzuschlie en gt Jetzt wird das neue Remote Ger t aufgelistet 11 W hlen Sie es als Zielger t und verlassen den Dialog mit OK e Choose Target System KS 28 CX_O2154F 10 1 128 135 1 1 S
151. Zustands der C Zustandsmaschine erm glicht Zwei weitere Artikel nutzen das Ergebnis dieser C Zustandsmaschine e Aufruf der Funktionalit t von der SPS Logik her gt 217 also von der SPS auf C Code einwirken e Aufruf der Funktionalit t von der C Logik gt 247 also Wechselwirkung zwischen zwei C Modulen Dieser Artikel beschreibt e Schritt 1 Erstellen Sie ein neues TwinCAT 3 Projekt 219 e Schritt 2 Erstellen Sie einen neuen TwinCAT 3 C Treiber gt 219 e Schritt 3 Eine neue TwinCAT 3 Schnittstelle erzeugen gt 221 Schritt 4 F gen Sie der Schnittstelle Methoden hinzu 222 e Schritt 5 Neue Schnittstelle zum Modul hinzuf gen gt 225 Schritt 6 Starten Sie den TwinCAT TMC Code Generator um einen Code f r die Modulklassenbeschreibung zu erzeugen gt 227 e Schritt 7 Implementierung der Membervariablen und des Konstruktors gt 227 e Schritt 8 Methoden implementieren gt 228 e Schritt 9 Zyklische Aktualisierung implementieren gt 228 e Schritt 10 Code kompilieren gt 229 e Schritt 11 Eine Instanz des C Moduls erstellen gt 230 e Schritt 12 Fertig Ergebnisse berpr fen 231 218 Version 1 0 TC3 C BECKHOFF C C Beispiele Schritt 1 TwinCAT 3 Projekt erstellen Recent Templates NET Framework 4 gt Sort by Default aa ey f a TwinCAT XAE Project TwinCAT Project Type Tee et Visual C TwinCAT XAE SystemManage
152. a 4 Mi Outputs E gt Value E gt Control Data gt Der Server Teil ist abgeschlossen fahren wir also fort mit ADS Client sendet die ADS Meldungen gt 205 15 4 2 Beispiel03 ADS Client Ul in C Dieser Artikel beschreibt den ADS Client der ADS Meldungen an den zuvor beschriebenen ADS Server sendet Die Implementierung des ADS Servers h ngt weder von der Sprache C C PLC noch von der TwinCAT Version TwinCAT 2 oder TwinCAT 3 ab Source Erhalten Sie den Quellcode f r dieses Beispiel v Dieser Code erfordert NET Framework 3 5 oder h her 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Das Beispiel auf Ihre lokale Maschine erstellen auf das Projekt rechtsklicken und Build klicken 4 Programm starten d h Rechtsklick auf Projekt Debug gt Start new instance Beschreibung Dieser Client f hrt zwei Aufgaben aus e Den zuvor beschriebenen ADS Server testen e Beispielcode f r die Implementierung eines ADS Client bereitstellen Den Client benutzen Kommunikationspartner ausw hlen ModulelAd TC3 C Version 1 0 C C Beispiele BECKHOFF Die beiden ADS Parameter eingeben um Ihren ADS Kommunikationspartner zu bestimmen e NetID 127 0 0 1 1 1 fur ADS Partner auch mit lokalem ADS Message Router verbunden Geben Sie eine andere NetID ein wenn Sie Uber das Netzwerk mit einem an einen anderen ADS Router angeschlossenen ADS Partner kommun
153. a e can han a ann ana aha ana m eK a TEN En 31 1 2 Module importerem rare in elek ee a 32 8 Entwickl ng EE 0400000 0040000000001M000nn0 man cecevacteceadescecececesseececceveateeceeduteecesscststeeccecsssteeceeesseueees 36 9 Schnellstart ss s3 42 2 04052424440000040 20000004000 00K0m ann nnan na nn SEENEN EESEEEEERESEEEEEEE REES nnne nn EAEEREN Rn Ener Henn 37 91 TwinGAl 3 Projekt erstellen E 37 92 TwinCAT 3 C Projekt erstellenz e nn eek 39 9 3 TwinCAT 3 C Projekt implementieren ENEE nisi anni a 43 9 4 Compile Build a TWinCAT 3 C projet 44 9 5 TwinCAT 3 C Modulinstanz erstellen 46 9 6 Einen Task erstellen um eine TwinCAT 3 C Modulinstanz autzurutfen nenn 48 9 7 TwinCAT 3 C C Debugger aktivieren usssr2440nnnnnannnannnnnnnnannnnnnnnnnnnunnnnnnannnnnnnennnnnnnen 51 9 8 TwinCAT 3 C Froiektakttwlerent 19000 52 9 9 TwinCAT 3 C Projekt debuggen 2201 es een ea 53 10 Debuggen IPOEPPPRRRELNEPFERRENNEEFEERRELUEFEREEELEUEFEEEEEEEEREEEEENEEEEEEEELEUEEEREEEEEEEFEREELEEEEEEEEENEEREEEEEEE EFEEREEEEEEREEEEEEEERERREELEERLERRER 60 10 1 Einzelheiten zu den bedingten Haltepunkten nennen 62 RR E D EE 65 11 1 TwinCAT C Projekt Assistent nsennnnnennennnnnnnnnennnnnnnnnennnnnnnnnnnnnnnnnnnnnnnnnnnnnnennnnnnnr nn 65 11 2 TwinCAT Module KlassenassiStent nennen 66 11 3 TwinCAT Module Class Editor TMC u4ssrnnnnnnnnnnnnnnnennnnnnnnennnnnnnnennnnnnnnnnnnnnnnnn
154. aktion der vom Benutzer entwickelten Module mit dem TwinCAT 3 System stehen etliche Schnittstellen zur Verf gung Auf diesen Seiten werden diese auf API Ebene ausf hrlich beschrieben 120 Version 1 0 TC3 C BECKHOFF Programmierreferenz Name Beschreibung ITComObject gt 123 Die ITComObject Schnittstelle wird von jedem TwinCAT Modul implementiert ITcCyclic gt 130 Die Schnittstelle wird von TwinCAT Modulen implementiert die ein Mal pro Taskzyklus aufgerufen werden ITcCyclicCaller gt 131 Schnittstelle zum Anmelden oder Abmelden der ITcCyclic Schnittstelle eines Moduls bei einem TwinCAT Task ITcFileAccess gt 133 Schnittstelle zum Zugriff auf das Dateisystem ITcFileAccessAsync gt 141 Asynchroner Zugriff auf Dateioperationen ITcPostCyclic gt 143 Die Schnittstelle wird von TwinCAT Modulen implementiert die ein Mal pro Taskzyklus im Anschluss an die Ausgang Aktualisierung aufgerufen werden ITcPostCyclicCaller gt 144 Schnittstelle zum Anmelden oder Abmelden der ITcPostCyclic Schnittstelle eines Moduls bei einem TwinCAT Task ITcloCyclic gt 146 Diese Schnittstelle wird von TwinCAT Modulen implementiert die bei Eingang Aktualisierung und bei Ausgang Aktualisierung innerhalb eines Taskzyklus aufgerufen werden ITcloCyclicCaller gt 147 Schnittstelle zum Anmelden oder Abmelden der ITcloCyclic Schnittstelle eines Moduls bei einem TwinCAT Task ITcRTimeTask gt
155. arent Objekt ID mit Hilfe der gegebenen OTCID Referenz Syntax HRESULT TcSetParentObjId OTCID objId Parameter objld Typ OTCID Referenz auf OTCID Wert R ckgabewert Es wird empfohlen stets S_OK zur ckzugeben Derzeit wird der R ckgabewert von den TwinCAT Tasks ignoriert Beschreibung Die Methode TcSetParentObjld setzt Parent Objekt ID mit Hilfe der gegebenen OTCID Referenz Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 12 Methode ITcComObject TcTryToReleaseOpState Die Methode TcTryToReleaseOpState gibt Ressourcen frei z B Datenzeiger um das Verlassen des OP Zustands vorzubereiten Syntax BOOL TcTryToReleaseOpState void Parameter R ckgabewert TRUE bedeutet Freigabe von Ressourcen war erfolgreich Beschreibung Die Methode TcTryToReleaseOpState gibt Ressourcen frei z B Datenzeiger um das Verlassen des OP Zustands vorzubereiten Muss implementiert werden um m gliche wechselseitige Abh ngigkeiten von Modulinstanzen aufzuheben Siehe Beispiel10 gt 216 Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 TC3 C Version 1 0 129 Programmierreferenz BECKHOFF 12 4 3 Schnittstelle ITcCyclic Die Schnittstelle ITcCyclic wird von TwinCAT Modulen implementiert die ein Mal pro Task Zyklus aufgerufen werden Syntax TCOM_DECL_INTERFACE 03000010 0000 0000 e000 000000000064 ITcCyclic struct __declspec novtable ITcCyclic public ITcUnknown
156. ateien erzeugt werden Starten Sie den TMC Editor ffnen Sie den Editor mittels Doppelklick auf die TMC Datei eines Moduls Der grafische Editor wird ge ffnet Solution Explorer ax Meet UntitlediServices h UntitlediInterfaces h Modulel c Modulel h p pp o o di SE GA Search Solution Explorer Ctri Pp fa S IM H Shows the properties of the Module EI Solution TwinCAT Project1 1 project g oe EI PS 4 G TwinCAT Projecti E CModule1 b a SYSTEM Implemented Interfaces General properties MOTION Parameters Dec h Data Areas Name CModule1 E sarety EN Data Pointers Class ID CLSID 4e421688 7681 4712 8126 69baf2115529 4 Cre Interface Pointers 4 fa Untitled Be Deployment Image Il Choose image Reset image 4 Untitled1 Project Een Init v b amp External Dependencies IM earns or 4 fal Header Files Define the contexts of the module B Modulel h B Resource h J gt B TcPch h Untitled ClassFactory h aD D UntitlediInterfaces h Untitled Services h 4 S Source Files Modulel cpp TcPch cpp D Untitledi rc Untitled1ClassFactory cp 4 al TMC Files Untitledi tmc 4 EN TwinCAT RT Files Untitled1Driver cpp Untitled1 Driver h bk Eed Tain OAT LIM Filer Funktionalitaten des TMC Editors sind e Symbole in den Datenbereichen z B wie die logischen Ein oder Ausgangsprozessabbilder eines Moduls erstellen l schen bearbeiten e Benutzerdefinierte
157. ation zu einem ADS Ger t hinzuzuf gen AdsAddDeviceNotificationCon gt 170 wird beim Eingang der Antwort aufgerufen Syntax int AdsAddDeviceNotificationReq AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOff set AdsNotificationAttrib noteAttrib Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes noteAttrib Typ AdsNotificationAttrib in enth lt die Spezifikation der Notification Parameter cbLength TransMode MaxDelay R ckgabewert Typ int 168 Version 1 0 TC3 C BECKHOFF Programmierreferenz Fehlercode Siehe AdsStatuscodes gt 260 12 5 7 2 AdsAddDeviceNotificationind Die Methode AdsAddDeviceNotificationInd sollte das Senden von AdsDeviceNotification gt 172 erm glichen Die AdsAddDeviceNotificationRes gt 169 muss aufgerufen werden um den Vorgang zu bestatigen Syntax void AdsAddDeviceNotificationInd AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG inde xOffset AdsNotificationAttrib noteAttrib Parameter
158. ationReq Die Methode AdsAddDeviceNotificationReq erm glicht das Senden einer ADS Ger te Notification um ein ADS Ger t zu informieren Die AdsDeviceNotificationInd gt 172 wird auf dem Gegenst ck aufgerufen Syntax ine AdsDeviceNotificationReq AmsAddr amp rAddr ULONG invokeld ULONG cbLength AdsNotificationS tream notifications Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis der Ger te Notification Anzeige notifications Typ AdsNotificationStream in enth lt Informationen der Ger te Notification s R ckgabewert Typ int ADS Return Code siehe AdsStatuscodes gt 260 12 5 9 2 AdsDeviceNotificationind Die Methode AdsDeviceNotificationInd erm glicht den Empfang von einer ADS Ger te Notification Anzeige Das empfangende Modul muss diese Methode bereitstellen Die AdsDeviceNotificationCon gt 173 muss zwecks Best tigung dieser Anzeige aufgerufen werden Syntax void AdsDeviceNotificationInd AmsAddr amp rAddr ULONG invokeld ULONG cbLength AdsNotificationStream pNotifications Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Be
159. bermittlung des Ger te Notification Ereignisses verwendet AdsReadWrite gt 162 ADS Schreib Lesebefehl Mit einem Aufruf werden Daten zu einem ADS Gerat Ubermittelt Write und dessen Antwortdaten gelesen Read Die ADS Return Codes gt 260 gelten f r die gesamte ADS Kommunikation Schauen Sie sich als Einstieg das Beispiel07 Empfang von ADS Notifications gt 215 TC3 C Version 1 0 155 Programmierreferenz BECKHOFF 12 5 1 AdsReadDevicelnfo 12 5 1 1 AdsReadDevicelnfoReq Die Methode AdsDevicelnfoReq erm glicht das bermitteln eines ADS Devicelnfo Befehls zum Auslesen von Identifizierung und Versionsnummer eines ADS Servers AdsReadDevicelnfoCon wird beim Eingang der Antwort aufgerufen Syntax int AdsReadDeviceInfoReq AmsAddr amp rAddr ULONG invokeld Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes gt 260 12 5 1 2 AdsReadDevicelnfolnd Die Methode AdsDevicelnfolnd verweist auf einen ADS Devicelnfo Befehl zum Lesen der Identifizierung und Versionsnummer eines ADS Servers Anschlie end muss AdsReadDevicelnfoRes gt 156 aufgerufen werden Syntax void AdsReadDeviceInfoIlnd AmsAddr amp rAddr ULONG invoke
160. blen ist NICHT der Name der Zertifikatsdatei sondern der CN Name in diesem Falle MyTestSigningCert o System Properties x Computer Name Hardware Environment Variables t your computer User variables for StefanH Value USERPROFILE AppDatal Local Temp USERPROFILE AppData Local Temp New System Variable Variable name TWINCATTESTCERTIFICATE New Edit Delete Variable value MyTestSigningCert L oe Ice Value C Windows windows_tracin 3 ua windows_tracin _C BVTBin Tests installpackage csilogfile _ nem eat II Delete o Il Cen Windows Experience Index R Core TM i5 2520M CPU 2 50GHz 2 50 GHz B 7 89 GB usable Operating System and Touch Input Available with 2 Touch Points 3 Auf XAR und XAE wenn lokaler Test Signiermodus aktivieren damit Windows die selbstsignierten Zertifikate akzeptieren kann Das ist auf jedem System m glich das die Module starten kann Engineering System oder XAR Laufzeit 18 Version 1 0 TC3 C BECKHOFF Vorbereitung nur einmal Systeme Mittels Eingabeaufforderung folgendes ausf hren bededit set testsigning yes und Zielsystem neu starten Wenn der Testsigniermodus aktiviert ist wird dies rechts unten auf dem Desktop angezeigt Der PC akzeptiert nun alle signierten Treiber zur Ausf hrung Test Mode Window
161. bliothek befindliche Klassen Diese Bibliothek wird von Treiberprojekten f r das Lesen und Schreiben verwendet Jede Klasse ist f r eine Dateizugriffsoperation wie ffnen Lesen Schreiben Auflisten Schlie en bestimmt Da die Ausf hrung innerhalb eines zyklischen Echtzeitkontextes stattfindet hat jede Operation einen Status und die Klasse kapselt diese Zustandsmaschine ein 250 Version 1 0 TC3 C BECKHOFF C C Beispiele Als Einstiegspunkt zum Verstandnis des Dateizugriffs beginnen Sie bitte mit den TcFsmFileReader und TcFsmFileWriter Klassen Sollten zu viele Verlaufsverfolgungsmeldungen auftreten die das Verstandnis des Beispiels erschweren deaktivieren Sie Module Siehe auch Beispiel S19 gt 248 Beispiel S20 gt 249 Beispiel S25 gt 252 Schnittstelle ITcFileAccess gt 133 Schnittstelle ITcFileAccessAsync gt 141 Sehen Sie dazu auch B Beispiel19 Synchroner Dateizugriff P 248 B Beispiel20 FilelO Write gt 249 B Beispiel25 Statische Bibliothek gt 252 15 15 Beispiel22 Automation Device Driver ADD Zugang DPRAM Dieser Artikel beschreibt die Implementierung eines TC3 C Treibers der als TwinCAT Automation Device Driver ADD mit Zugriff auf DPRAM fungiert Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Bei
162. chen Ausgang Value im Datenbereich zuweist Der Datenbereich kann dem physikalischen IO oder einem anderen logischen Eingang einer anderen Modulinstanz zugewiesen werden Das Beispiel ist hier 37 in der Kurzanleitung Schritt f r Schritt beschrieben 15 3 Beispiel02 Zyklische C Logik die IO vom IO Task verwendet Dieser Artikel beschreibt die Implementierung eines TC3 C Moduls das ein Image eines IO Tasks verwendet Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Quellcode der vom Assistenten nicht automatisch generiert wird ist mit einem Beginn Flag sample code und Ende Flag sample code end gekennzeichnet Somit k nnen Sie nach diesen Zeichenketten in den Dateien suchen um sich ein Bild von den Einzelheiten zu machen Beschreibung Dieses Beispiel beschreibt die Flexibilit t von C Code bei der Arbeit mit IOs welche an dem Task konfiguriert sind Durch diesen Ansatz kann ein kompiliertes C Modul flexibler reagieren wenn mit der IO Task unterschiedlich viele lOs verbunden sind Eine Einsatzm glichkeit w re die zyklische Pr fung analoger Eingangskan le mit ja nach Projekt unterschiedlicher Anzahl Kan le Das Beispie
163. chnet eine reelle Zahl double aus Mantisse und Exponent H Idexpf_ Berechnet eine reelle Zahl float aus Mantisse und Exponent sinh_ Berechnet den Hyperbelsinus des angegebenen Winkels cosh_ Berechnet den Hyperbelkosinus des angegebenen Winkels tanh_ Berechnet den Hyperbeltangens des angegebenen Winkels Hilfsfunktionen finite_ Ermittelt ob der angegebene Wert endlich ist isnan_ Ermittelt ob der gegebene Wert keine Zahl ist NAN not a number 174 Version 1 0 TC3 C BECKHOFF Programmierreferenz Name Beschreibung H rands Berechnet eine Pseudo Zufallszahl zwischen 0 und 32767 Der Parameter holdrand wird zufallig gesetzt und bei jedem Aufruf geandert Anmerkungen Die Funktionen haben die Endung _ Unterstrich um sie als TwinCAT Implementierung zu kennzeichnen Die meisten sind analog math h von Microsoft konzipiert nur fur den Datentyp Double Siehe auch MSDN Dokumentation von Funktionen analog math h 12 7 Zeitfunktionen TwinCAT bietet Funktionen f r Zeitumwandlung Diese Funktionen werden in TcTimeConversion h die Teil von TwinCAT SDK ist deklariert Name Beschreibung TcDayOfWeek Ermittelt den Wochentag Sonntag ist 0 TclsLeapYear Ermittelt ob das gegebene Jahr ein Schaltjahr ist TcDaysinYear Ermittelt die Anzahl Tage im gegebenen Jahr TcDaysInMonth Ermittelt die Anzahl Tage im gegebenen Monat H TcSystemTimeToFileTime const SYSTEM
164. chrieben wo Sie das Beispiel manuell zusammenstellen k nnen Kochbuch Nachfolgend werden die einzelnen Schritte der Erstellung des C Moduls beschrieben 1 Erstellen Sie einer neuen TwinCAT 3 Project Solution Folgen Sie den Schritten f r die Erstellung eines neuen TwinCAT 3 Projekts gt 37 2 Erstellen Sie ein C Projekt mit ADS Port Folgen Sie den Schritten f r die Erstellung eines neuen TwinCAT 3 C Projekts gt 39 Wahlen Sie im Class templates Dialog TwinCAT Module Class with ADS port 3 F gen Sie dem Projekt die Beispiellogik hinzu 6 ffnen Sie die Header Datei lt MyClass gt h in diesem Beispiel Module1 h und f gen den Z hler m_bCount als neue Membervariable in den gesch tzten Bereich hinzu class CModulel Et en INC ECE pUlslic INeCyelie Foes DECLARE IUNKNOWN protected DECLARE ITCOMOBJECT_SETSTATE lt AutoGeneratedContent id Members gt TC3 C Version 1 0 201 C C Beispiele BECKHOFF ImeCyclicCallecimioPice m splyelicet llez lt AutoGeneratedContent gt ULONG m ReadByOidAndPid BOOL m bCount 1 7 ffnen Sie die Klassendatei lt MyClass gt cpp in diesem Beispiel Module1 cpp und initialisieren die neuen Werte im Konstruktor CModulel CModulel MEMS ies CMM epes ll Seet Um one ae Gm renne lieweg a Iiajewiess 2 MEMS cite CMmOU CPUS lese Oral MMO
165. cht einem C Namensraum zugeordnet wird Er wird als Pr fix Ihres Datentyps verwendet werden Nehmen wir eine Aufz hlung mit einem Namensraum A als Beispiel D Edit the properties of the Data Type General properties Name ASampleEnum Namespace A GUID 41d4a207 3a09 4316 9d89 0dd188 1ab8c4 Specification Enumeration dann wird der folgende Code generiert lt AutoGeneratedContent id DataTypes gt if defined _TC_TYPE 41D4A207 3A09 4316 9D89 ODD1881AB8C4 INCLUDED define TC TYPE 41D4A207 3A09 4316 9D89 ODD1881AB8C4 INCLUDED enum A ASampleEnum SHORT One Two Three D endif defined _TC_ TYPE 41D4A207_ 3A09 4316 9D89 ODD1881AB8C4 INCLUDED M glicherweise m chten Sie den Namensraumnamen dem Aufzahlungselement manuell als Pr fix hinzuf gen if idetined TiC Viv PE C26 EDSr AC13 4FD3 AC6F B658CB5604E0 INCLUDED_ define TTC TYPE C2OREDSE AC13 4FD3 AC6F B658CB5604E0 INCLUDED enum B BSampleEnum SHORT B_one B_two B_three endif defined _TC_ TYPE C26FED5F AC13 4FD3 AC6F_B658CB5604E0 INCLUDED GUID Eindeutige ID des Datentyps Specification Festlegung des Datentyps e Alias Ein Alias eines Standarddatentyps z B INT erzeugen e Array gt 87 Ein benutzerdefiniertes Array erstellen e Enumeration gt 83 Eine benutzerdefinierte Aufz hlung erstellen e Struct gt 88 Eine benutzerdefinierte Struktur erzeugen e Interface gt 89 Eine neue Schnittstelle er
166. ctory __ 00000018 0000 0000 lt 000 000000000064 interface 4 080 ITeCyclicCaller ______ 10300001e 0000 0000 e000 000000000064 Interface s060 NS ITc thernetAdapter ____ 103010060 0000 0000 e000 000000000064 interface 0777 ITcFileAccess I 174227429 da6d 4c1d 8048 398d8c1f1747 Interface 4008 0 MTeloCyclic __ 03000011 0000 0000 e000 000000000064 Interface Jusen N ITcloCyclicCaller ____ 10300001f 0000 0000 e000 000000000064 Interface s060 eloECatLrwMemory 03021018 0000 0000 e000 000000000064 Interface ue ITcloEthProtoch ____1103010035 0000 0000 e000 000000000064 Interface 4 0 077 ITeNcDeConvet ______ 105000005 0000 0000 e000 000000000064 Interface uen ITeNeDeConvet2 ___ 105000006 0000 0000 000 000000000064 Interface 4 0 01777 ITeNcTrafo __ 05010001 0000 0000 lt 000 000000000064 Interface Jaen TComCreatelnstance 00000031 0000 0000 e000 000000000064 Interface 0 07T MComLicenseServer __ 01010000 0000 0000 lt 000 000000000064 Interface a0 NS ITComNoPlcWrappr ____ 100000063 0000 0000 e000 000000000064 interface 0 ITComObjiion _____ 100000015 0000 0000 000 000000000064 Interface s060 TComObjectServer_ __ 00000030 0000 0000 lt 000 000000000064 Interface 4 080 ITComObjlnd 100000013 0000 0000 e000 000000000064 Interface Jusen TComObjReq _ ____ 00000015 0000 0000 e000 000000000064 interface Jugen ITComObjRes 100000014 0000 0000 e000
167. d a ig SYSTEM License Real Time gt ff Tasks ste Routes TcCOM Objects MOTION a Doc a E PLC calling statemachine 4 ZjPLC calling statemachine Project gt E External Types E DUTs E GVLs gt Gp m MAIN x lie NEE e EE END_VAR WON P E j Li Le Import PLCopenXML Zr i Le Export PLCopenXML Global Variable List be E SAFETY Cut Ctrl X Interface a fice B Copy Ctrl C POU for implicit checks a el StateMac X Delete Del Visualization x l ua Rename F2 B Referenced Task TC3 C Version 1 0 233 C C Beispiele BECKHOFF 2 Neuen zu erstellenden FB definieren der spater als Proxy zum Aufrufen von C Klasse fungiert Name des neuen FB eingeben FB_StateMachine und w hlen Sie Function Block dann Implements ankreuzen und schlie lich Schaltfl che ausw hlen Add POU el di Create a new POU Program Organization Unit Extends v Implements Method implementation language Structured Text ST z Implementation language Structured Text ST 3 Die Schnittstelle entweder ber Text Search Karteireiter oder mittels Aufheben der Auswahl Structured View bei Eingangsassistenten ausw hlen Input Assistant ER Text search Categories Interfaces Name me Origin a ken CAD TERI d ITcAppServices INTERFACE
168. den Define the parameters of the method e S De Description Default Value RPC Direction RPC Lenathis NT Normal Type gt Not specified TC3 C Version 1 0 79 Assistenten BECKHOFF In diesem Falle ist NewState der neue Name die brigen Einstellungen werden nicht ge ndert cb Name NewState Type Description C 8 Et Default Value RPC Direction RPC Lenathls 11 Durch Wiederholen des Schritts 2 Methoden zur Schnittstelle hinzuf gen werden alle Methoden aufgelistet mit Hilfe der nach oben nach unten Schaltfl che k nnen die Methoden neu geordnet werden a BG TMC a gt Data Types 4 o StateMachine 4 Methods setState Start Stop 4 Modules 4 Ri CModulet t ki Parameters b Data Areas Eh Data Pointers b Interface Pointers Deployment Implemented Interfaces e Add remove and reorder Methods Retum HRESULT setState HRESULT Start HRESULT Stop 12 Die Schnittstelle ist bereit durch Ihr Modul implementiert zu werden Sear 4G D al vi D GA e 4 DN TMC _o a gt Data Types Oo Shows the implemented interfaces of the module 4 o StateMachine a Methods t setState Start Name Interface ID Disable Code Generation Stop ITComObject 100000012 0000 0000 E000 000000000064 7 4 a Modules ITeCyclie 03000010 0000 0000 E000 000000000064 ET 4 Kl CModulet
169. den In diesem Abschnitt wird der Umgang mit Modulen beschrieben 7 1 Module exportieren Dieser Artikel beschreibt wie ein TwinCAT 3 Modul das auf jedem anderen TwinCAT PC laufen kann exportiert wird Folgende Schritte sind zu erledigen 1 Implementierung eines TwinCAT 3 C Projekts auf einem mit Visual Studio Version ausgestatteten Engineering PC Siehe Schnellstartbeispiel gt 37 Ein TwinCAT 3 Projekt erstellen die TwinCAT Module wie beschrieben implementieren kompilieren und das Modul vor dem Export testen 2 Da das Ergebnismodul in der Lage sein sollte auf jeder Maschine verwendet zu werden wird TwinCAT eine 32 Bit und eine 64 Bit Version des Moduls generieren Da x64bit Module unterzeichnet sein m ssen muss auf der Maschine die das Modul exportiert ein Zertifikat installiert sein Siehe x64 Treibersignierung gt 16 wie ein Zertifikat zu generieren und installieren ist Schritt 3 kann auf einem Engineering oder 32 Bit System ausgelassen werden 3 Um ein TC 3 C Modul zu exportieren klicken Sie einfach mit der rechten Maustaste auf das Modulprojekt im Solution Baum und w hlen TwinCAT Publish Modules aus Daraufhin wird das Modul kompiliert Rebuild der erfolgreiche Export wird im Ausgabefenster Build angezeigt Output Show output from Build J lalala TwinCAT Publish Modules started at 04 09 2012 12 11 23 Project TempContr vcxproj TcPublishModule ta
170. die geschriebenen Daten sich befinden R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes gt 260 12 5 3 2 AdsWritelnd Die Methode AdsWritelnd gibt einen ADS Schreibbefehl an um Daten zu einem ADS Ger t zu bermitteln Die AdsWriteRes gt 161 muss aufgerufen werden um den Vorgang zu best tigen Syntax void AdsWriteInd AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOffset ULONG cbLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server 160 Version 1 0 TC3 C BECKHOFF Programmierreferenz invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellgerat spezifiziert und wird fur die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enthalt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbLength Typ ULONG in enth lt die L nge in Bytes der zu schreibenden Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem die geschriebenen Daten sich befinden R ckgabewert void Sehen Sie dazu auch ADS Return Codes gt 260 12 5 3 3 AdsWriteRes Die Methode AdsWriteRes sendet eine ADS Schreibantwort AdsWriteCon gt 161 bildet das Gegenst ck und wird anschlie end aufgerufen Syntax int AdsWrite
171. dll TC_SYSSRVEXEPATH CLASSFACTOR E Symbols TwinCAT UM x64 SOLUTIONDEPLOYMENTPATH TwinCAT UM x64 CLASSFACTORYNAME W32 pdb TC_SYSSRVEXEPATH CLASSFACTOR Dh Data Pointers Interface Pointers Zi j e Deployment Edit the properties of the selected File Entry Target Platform TwinCAT UM x64 Source File SOLUTIONDEPLOYMENTPATH TwinCAT UM x64 CLASSFACTORYNAME W32 pdb Destination File TC_SYSSRVEXEPATH CLASSFACTORYNAME W32 pdb Symbol Funktion J Einen neuen Dateieintrag hinzuf gen Einen Dateieintrag l schen Verschiebt das ausgew hlte Element um eine Position nach unten l t Target Platform Legt die Plattform und den Laufzeitkontext x86 x64 fest Verschiebt das ausgew hlte Element um eine Position nach oben Source File Pfad zu den Quelldateien Destination File Pfad zu den Bin rdateien 11 4 TwinCAT Module Instance Configurator Der oben beschriebene TwinCAT 3 Module Class TMC Editor definiert Treiber auf Klassenebene Diese werden instanziiert und m ssen Uber den TwinCAT 3 Instance Configurator konfiguriert werden Die Konfiguration betrifft z B den Kontext einschlie lich Task die das Modul aufruft Parameter und Zeiger Instanzen von C Klassen werden durch Rechtsklick auf den C Projektordner erstellt siehe Schnellstart In diesem Kapitel wird die Konfiguration dieser Instanzen ausf hrlich beschrieben Durch Doppelklick auf die generierte Instanz wird der Konfigurationsdialog mit
172. duktspezifische Sicherheitshinweise finden Sie auf den folgenden Seiten oder in den Bereichen Montage Verdrahtung Inbetriebnahme usw Haftungsausschluss Die gesamten Komponenten werden je nach Anwendungsbestimmungen in bestimmten Hard und Software Konfigurationen ausgeliefert nderungen der Hard oder Software Konfiguration die ber die dokumentierten M glichkeiten hinausgehen sind unzul ssig und bewirken den Haftungsausschluss der Beckhoff Automation GmbH amp Co KG Qualifikation des Personals Diese Beschreibung wendet sich ausschlie lich an ausgebildetes Fachpersonal der Steuerungs Automatisierungs und Antriebstechnik das mit den geltenden Normen vertraut ist Erkl rung der Symbole In der vorliegenden Dokumentation werden die folgenden Symbole mit einem nebenstehenden Sicherheitshinweis oder Hinweistext verwendet Die Sicherheitshinweise sind aufmerksam zu lesen und unbedingt zu befolgen Akute Verletzungsgefahr gt Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird besteht unmittel bare Gefahr f r Leben und Gesundheit von Personen GEFAHR Verletzungsgefahr Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird besteht Gefahr f r Leben und Gesundheit von Personen gt WARNUNG Sch digung von Personen Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird k nnen Personen gesch digt werden gt VORSICHT Sch digun
173. durch Klicken auf die Schaltfl che Add a new data area erweitert Daraufhin wird ein neuer Datentyp als neuer Eintrag aufgef hrt Za Add remove and reorder Data Types a EC Modules e 4 Byte BI EI da a fE CModulet Implemented Interfaces e Guid Specification Size Size X64 4 Ss Parameters DataTypel 09ebebb3 1af0 47ea 987b cc86bfadcf7d Alias 5 TraceLevelMax SS Parameter m Data Areas Ph Data Pointers Interface Pointers al Deployment 3 W hlen Sie den generierten Data Type1 um Einzelheiten zum neuen Datentyp zu erhalten Untitledi tmc TMC Editor X ui GA a YE TMC 4 Dat Type Edit the properties of the Data Type DataType1 4 Module z a Ei CModule1 General properties 3 Implemented Interfaces a Parameters Name DataType1 5 TracelevelMax Namespace b SS Parameter b hy Data Areas GUID 09ebebb3 1af0 47ea 987b cc86bfadcf7d E Data Pointers A E E b Interface Pointers Wess el Deployment Ch oe Select INT amp Description Normal Type Type Information Namespace Guid 18071995 0000 0000 0000 000000000006 Optional data type settings Size Bits x64 specific x64 specific C C Name default x64 specific Unit Comment E Hide sub items E Always visible 4 Den Datentyp spezifizieren Genaueres siehe hier gt 84 74 Version 1 0 TC3 C BECKHOFF Assistenten 5 Den Datentyp umbenennen In diesem Beispiel
174. e gt E system NC Motion InputDst Li 3 Symbols PLC Value UDINT 40 Offs 0 0 SAFETY Status UDINT 4 0 Offs 4 0 4 En Data UDINT 4 0 Offs 8 0 a fel lt i SS 1 Outputs OutputSrc 112 3 Symbols gt Z Untitled Project a Ei Untitiedi_Objl Med Value UDINT 4 0 Offs 0 0 a EN Inputs Control UDINT 40 Offs 4 0 Value Status Data 4 Mi Outputs Value amp Control E Data Data UDINT 4 0 Offs 8 0 Bun Symbole laden Nach der Einrichtung der NetID und des ADS Port auf die Schaltfl che Load Symbols klicken um eine Verbindung mit dem Zielsystem herzustellen und die Symbole zu laden Daraufhin sind alle verf gbaren Symbole zu sehen Anschlie end k nnen Sie e Einen neuen Wert schreiben Ein Symbol im linken Baum ausw hlen z B Counter Einen neuen Wert in das Bearbeitungsfeld Value auf der rechten Seite eingeben und auf Write using WriteSymbol klicken Der neue Wert wird in den ADS Server geschrieben Nach dem Schreiben eines neuen Werts mit Write using WriteSymbol erh lt auch die C Anwendung einen Callback mit dem neuen Wert 214 Version 1 0 TC3 C BECKHOFF C C Beispiele e Abonnieren um einen Callback bei Werteveranderungen zu erhalten Ein Symbol im linken Baum ausw hlen z B Counter Auf Watch Current Symbol klicken gt Current Symbol AdsCommunicationModule_Obj1
175. e siehe AdsStatuscodes 12 5 2 3 AdsReadRes Die Methode AdsReadRes erm glicht das Senden von einer ADS Leseantwort AdsReadCon gt 159 bildet das Gegenst ck und wird anschlie end aufgerufen Syntax ne AdsReadRes AmsAddr amp rAddr ULONG invokeld ULONG nResult ULONG cbLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Lesebefehls Siehe AdsStatuscodes 260 cbLength Typ ULONG in enth lt die L nge in Bytes der gelesenen Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem die Daten sich befinden R ckgabewert Typ int ADS Return Code siehe AdsStatuscodes 12 5 2 4 AdsReadCon Die Methode AdsReadCon erm glicht den Empfang von einer ADS Lesebest tigung Das empfangende Modul muss diese Methode bereitstellen Das Pendant AdsReadRegq gt 158 bildet muss vorher aufgerufen worden sein Syntax void AdsReadCon AmsAddr amp rAddr ULONG invokeld ULONG nResult ULONG cbLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom
176. e wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode legt die Position innerhalb einer Datei f r weitere Aktionen fest 12 4 5 6 Methode ITcFileAccess FileTell Fragt Position in einer Datei ab Syntax virtual HRESULT TCOMAPI FileTell TcFileHandle hFile PUINT puiPos Parameter hFile Typ TcFileHandle in verweist auf die zuvor gedffnete Datei puiPos Typ PUINT out Speicherort der zuruckzugebenden Position 136 Version 1 0 TC3 C BECKHOFF Programmierreferenz Ruckgabewert Typ HRESULT Wenn die Position abgefragt werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E _TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode fragt die derzeit gesetzte Position innerhalb einer Datei ab 12 4 5 7 Methode ITcFileAccess FileRename Nennt eine Datei um Syntax virtual HRESULT TCOMAPI FileRename PCCH szOldName PCCH szNewName Parameter szOldName Typ PCCH in der umzubenennende Dateiname szNewName Typ PCCH in der neue Dateiname R ckgabewert Typ HRESULT Wenn die Datei umbenannt werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden
177. e ADS Client oder ADS Server verhalten die untereinander Uber ADS Nachrichten kommunizieren k nnen die beiden Module Aufrufer Client und der Aufgerufene Server im gleichen oder unterschiedlichen Echtzeitkontexten auf dem gleichen oder unterschiedlichen CPU Kernen laufen Weil ADS netz bergreifend arbeiten kann k nnen die beiden Module auch auf verschiedenen im Netzwerk befindlichen Maschinen laufen Siehe Beispiel03 200 ADS Kommunikation gt 155 TC3 C Version 1 0 67 Assistenten BECKHOFF TwinCAT Modules Class mit zyklischem Aufrufer Es erm glicht den zyklischen Aufruf eines C Programms das aber ber keinen Zugang zur Au enwelt verf gt Dieses wird nicht h ufig verwendet Eine Modulklasse mit zyklischem Aufrufer und zyklischem I O wird bevorzugt TwinCAT Modules Class mit zyklischem Ein Ausgang Erzeugt eine neue TwinCAT Modulklasse die die zyklisch aufrufende Schnittstelle implementiert und die einen Ein und Ausgangsdatenbereich aufweist Die Ein und Ausgangsdatenbereiche k nnen mit anderen Ein Ausgangsabbildern oder mit physikalischen E A Klemmen verbunden werden Wichtig zu verstehen Das C Modul verf gt ber seinen eigenen logischen Ein Ausgangsdatenspeicherbereich Die Datenbereiche des Moduls k nnen mit dem Systemmanager konfiguriert werden Wenn das Modul mit einer zyklischen Schnittstelle gemappt wird bestehen Kopien der Ein und Ausgangsdatenbereiche in beiden Modulen dem Auf
178. e Attribute fuhren zu unerwartetem Verhalten Attribut Anweisungen mit geschwungenen Klammern stellen Code dar der einzuf gen ist Genaueres siehe hier 1 Variablendeklaration der FB_Statemachine implementieren Solution Explorer fal 2 Solution TwinCAT Project PLC calling C Method 1 project 4 TwinCAT Project PLC calling C Method a system E License Real Time a Tasks BE Task1 BE PicTask Ste Routes E TcCOM Objects MOTION a Erc a DI PLC calling statemachine a EjPLC calling statemachine Project D External Types gt sj References E DUTs GVLs a E POUs a 2 FB_StateMachine FB PP Inn out A H o om up TwinCAT Project PLC calling C Method FUNCTION BLOCK FB_StateMachine VAR_INPUT END VAR VAR_OUTPUT END VAR VAR oidInstance OICID ipStateMachine IStateMachine END_VAR nterface pointer to the m 2 Variablendeklaration und Code Bereich der Methode FB_exit implementieren Solution Explorer E FE_StateMachineFB_exit x MEEVEE TwinCAT Project PLC calling C N BOOL 1 METHOD FB exit oq Solution TwinCAT Project PLC calling C Method 1 project 215 VAR SEPT r E Twincat Project PLC calling C Method a bInCopyCode BOOL if TRUE the exit method is c a system END_VAR H License Real Time a Di Tasks BE Task1 BE PlcTask a Siz Routes e E TcCOM Objects 2 IF ipStateMachine lt gt 0 THEN MOTIO
179. e ITcloCyclicCaller RemoveloDriver Eine Modulinstanz vom Aufruf durch einen zyklischen I O Aufrufer abmelden Syntax virtual HRESULT TCOMAPI RemoveloDriver STcIoCyclicEntry pEntry 0 Parameter pEntry Typ STcloCyclicEntry verweist auf den Listeneintrag der aus der internen Liste des zyklischen I O Aufrufers zu entfernen ist R ckgabewert Wenn der Eintrag nicht in der internen Liste ist gibt die Methode E_FAIL zur ck Beschreibung Vergleichbar mit der Methode AddloDriver wird der Smart Pointer f r den zyklischen I O Aufrufer als Listeneintrag verwendet wenn die Modulinstanz aus dem zyklischen I O Aufrufer entfernt werden soll Deklaration und Verwendung des Smart Pointers ITelotyelietallerinfoptz mesplioeyeliieealler Ir tere tele A m_sploCyclicCaller gt RemoveloDriver m sploCyclicCaller m spCyclicCaller NULL 12 4 11 Schnittstelle ITCRTimeTask Abfrage von erweiterten TwinCAT Taskinformationen Syntax TCOM DECL INTERFACE 02000003 0000 0000 e000 000000000064 ITcRTimeTask struct _ deelspee moveasle TrefiimelTask gt pulolic TreTask Ben tigtes include TeRtInterfaces h Methoden Symbol Name Beschreibung e GetCpuAccount gt 150 Abfrage des CPU Kontos eines TwinCAT Tasks TC3 C Version 1 0 149 Programmierreferenz BECKHOFF Anmerkungen Mit dieser Schnittstelle k nnen TwinCAT Taskinformationen abgefragt und verwendet werden
180. e Zertifikate sind im Knoten unter PrivateCertStore Certificates aufgelistet 20 Version 1 0 TC3 C BECKHOFF Vorbereitung nur einmal 3 Zu loschendes Zertifikat auswahlen issued To r issued By Expiration Date intended Purposes a GP Certificates Current User El Beckhott com Test Beckholf com Test 1 1 2040 lt A gt IB Personal TIMyTestSigningCert MyTestSigningCent 1 1 2080 lt All gt Z i Te3TestCert Te tett et 1 1 2040 lt All gt E Trusted Root Certification Authorities I Enterprise Trust ID Intermediate Certification Authorities E Active Directory User Object E Trusted Publishers D Untrusted Certificates 5 Third Party Root Certification Authorities DD Trusted People S Other C Certificate Enrollment Requests I Smart Card Trusted Roots PrivateCertStore store contains 3 certificates 5 4 4 Kundenzertifikate Wenn der TwinCAT C Klassenassistent genutzt wird wird das Projekt unter Verwendung des zuvor beschriebenen Testzertifikatsverfahren auf x64 Zielen vorbereitet Dieses Testsigniersystem kann f r den gesamten Engineering und Testprozess verwendet werden Wenn man eine Infrastruktur erstellen und die Kernel Treiber mit offiziellen Microsoft trusted Zertifikaten unterzeichnen m chte bieten die Postbuild Prozeduren der Projekteigenschaften den Einsprungpunkt Untitled1 Property Pages EARS Configuration Active Release v Platform Active TwinCAT
181. e folgenden Module e ModuleDataProvider stellt einen Datenbereich zur Verf gung auf den andere Module zugreifen k nnen Der Datenbereich enth lt 4 Bits 2 werden f r Eingang 2 f r Ausgang verwendet und 2 Integer einen f r Eingang einen f r Ausgang 216 Version 1 0 TC3 C BECKHOFF C C Beispiele e ModuleDatalnOut stellt normale Eingangsvariablen die in den Datenbereich des ModuleDataProvider geschrieben werden und auch Ausgangsvariablen die aus dem Datenbereich gelesen werden zur Verf gung Diese Instanz der Klasse CModuleDatalnOut fungiert als eine Simulation f r realen IO e ModuleDataAccessA greift auf den Datenbereich vom ModuleDataProvider zu und bearbeitet Bit1 BitOut1 und die Integer auf zyklische Weise e ModuleDataAccessB greift auf den Datenbereich vom ModuleDataProvider zu und bearbeitet Bit2 BitOut2 und die Integer auf zyklische Weise Der Nutzer des Beispiels triggert ModuleDatalnOut mittels Setzen der Variablen Valueln Bit1 Bit2 Beim Setzen des Eingangs Bit1 wird der Ausgang Switch1 entsprechend gesetzt Beim Setzen des Eingangs Bit2 wird der Ausgang Switch2 entsprechend gesetzt e Beim Setzen des Eingangs Valueln wird der Ausgang ValueOut bei jedem Zyklus zweimal inkrementiert Alle Module sind so konfiguriert dass sie den gleichen Taskkontext haben was n tig ist weil der Zugriff ber Zeiger keinerlei Synchronisierungsmechanismus biete
182. eInd AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOffset ULONG cbReadLength ULONG cbWriteLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellgerat spezifiziert und wird fur die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enthalt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbReadLength Typ ULONG in enth lt die Lange in Bytes der zu lesenden Daten pData cbWriteLength Typ ULONG in enth lt die L nge in Bytes der zu schreibenden Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem die geschriebenen Daten sich befinden R ckgabewert void 12 5 4 3 AdsReadWriteRes Die Methode AdsReadWriteRes erm glicht den Empfang von einer ADS Lese Schreibbest tigung AdsReadWriteCon gt 164 bildet das Gegenst ck und wird anschlie end aufgerufen Syntax DE AdsReadWriteRes AmsAddr amp rAddr ULONG invokeld ULONG nResult ULONG cbLength PVOID pDa ta Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellge
183. eNotificationRes AmsAddr amp rAddr ULONG invokeld ULONG nResult Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Befehls Siehe AdsStatuscodes gt 260 R ckgabewert Int Gibt das Ergebnis des ADS Befehls zur ck Siehe AdsStatuscodes gt 260 12 5 8 4 AdsDelDeviceNotificationCon Die Methode AdsAddDeviceNotificationCon erm glicht den Empfang von einer ADS Ger t L schen Notification Best tigung Das empfangende Modul muss diese Methode bereitstellen AdsDelDeviceNotificationReg gt 170 bildet das Gegenst ck und muss zuvor aufgerufen Syntax void AdsDelDeviceNotificationCon AmsAddr amp rAddr ULONG invokeld ULONG nResult Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server TC3 C Version 1 0 171 Programmierreferenz BECKHOFF invokeld Typ ULONG in Handle des gesendeten Befehls die Invokeld wird vom Quellgerat spezifiziert und dient der Identifizierung der Befehle nResult Typ ULONG in enthalt das Ergebnis des ADS Schreibbefehls siehe AdsStatuscodes gt 260 Ruckgabewert void 12 5 9 AdsDeviceNotification 12 5 9 1 AdsDeviceNotific
184. earch Ethernet Search Fieldbus E Set as Default Connection Timeout s TC3 C Version 1 0 183 How to BECKHOFF Nach erfolgreicher Konfiguration einer neuen ADS Route kann das neue Zielger t als Standardgerat en werden ie TIERCE arg EISE RG or e lt Local gt 5 Solution TwinCAT Project129 1 project a 8 TwinCAT Project129 13 2 Verwenden Sie das Automation Interface Das Automation Interface kann f r den Zugriff auf die Erstellung von und den Umgang mit TCCOM Modulen verwendet werden Von dort aus k nnen gew hnliche Aufgaben des Systemmanagers wie Verkn pfung von Variablen ausgef hrt werden 13 3 Bereitstellung Die bertragung des kompilierten Treibers auf das Zielsystem wird Bereitstellung deployment genannt In diesem Artikel wird die Konfiguration der Bereitstellung von TwinCAT 3 Modulen welche vom TMC Editor unterst tzt wird beschrieben Gehen Sie zum TMC Editor Es muss ein Eintrag f r jede unterst tzte Plattform z B TwinCAT RT x86 hinzugef gt werden 4 TMC par ge Data Types Specify the deployment of the module 4 T Modules a EI CModule1 2 Implemented Interfaces Define DE RES which should be deployed Parameters 3 Data Areas des LI fN Datz Pointers Interface Pointers Target Platform SourceFile DestinationFile TwinCAT RT x86 SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASSFACTORYNAME sys TC_DRIVE
185. ei einer anderen Version von Windows Driver Kit oder bei Angabe eines anderen Installationspfads abweichen Environment Variables es User variables for StefanH Variable Value path CommonProgramFiles Microsoft Sh TEMP USERPROFILE AppData Local Temp TMP USERPROFILE AppData Local Temp New Edit Delete System variables Variable Value VSSOCOMNTOOLS C Program Files Microsoft Visual Studio WINDDK7 C WinDDK 7600 16385 1 windir C Windows Ka OK Cancel 11 Nach der Installation neu anmelden oder PC neu starten um die neuen Umgebungsvariableneinstellungen zu Ubernehmen 5 2 Visual Studio TwinCAT XAE Base Symbolleiste F gen Sie f r ein effizientes Engineering die TwinCAT XAE Base Symbolleiste hinzu TwinCAT 3 integriert f r eine bessere Effizienz seine eigene Symbolleiste in das Visual Studio Men die Sie bei der Erstellung von C Projekten unterst tzt Diese Symbolleiste wird vom TwinCAT 3 Setup automatisch zum Visual Studio Men hinzugef gt Wenn Sie sie allerdings manuell hinzuf gen m chten m ssen Sie folgendes tun 1 ffnen Sie das Men View und w hlen Toolbars TwinCAT XAE Base TC3 C Version 1 0 15 Vorbereitung nur einmal BECKHOFF Die ausgew hlte Symbolleiste erscheint unter dem Men G TwinCAT Project128 Microsoft Visual Studio Administrator File Edit View Bees Build Debug TwinCAT PLC Team Data To
186. ein Testzertifikat gel scht wird TC3 C Version 1 0 19 Vorbereitung nur einmal BECKHOFF Ubersicht Ein Zertifikat kann mit der Microsoft Management Console gel scht werden 1 Management console MMC exe Uber Start Men oder Oberfl che starten There are no items to show in thes view More Actions 2 Im Men auf File gt Add Remove Snap in klicken und Zertifikat Snap In f r den aktuellen Nutzer w hlen mit OK abschlie en You can select snap ins for this console from those avaiable on your computer and configure the selected set of snap ins For extensible snap ins you can configure which extensions are enabled Available snap ins Selected snap ins snap in vendor E Console Root Edit Extensions SS NET Framework 2 0 Microsoft Cor Gl Certfcates Current User S ActiveX Control Microsoft Cor Bd Authorization Manager Microsoft Cor Microsoft Cor cc ces Microsoft Cor A Computer Managem Microsoft Cor Ga Device Manager Microsoft Cor CHEN ZS Disk Management Microsoft and a Event Viewer Microsoft Cor I Folder Microsoft Cor Lif Group Policy Object Microsoft Cor SP seanity Monitor Microsoft Cor Sr Security Policy M Microsoft Cor q Advanced Description The Certificates snap in allows you to browse the contents of the certificate stores for yourself a service or a computer Lox gt Di
187. eine ausf hrliche Beschreibung der Parameter und ihrer Konfiguration Parameters Zeigt die implementierten Parameter des Moduls Untitledi tmc TMC Editor X ra RA sg a BG TMC zs Data Types Add remove and reorder Parameters a fi Modules 4 EI CModule1 A ss 8 Byte BI RI Implemented Interfaces Parameters Name Parameter ID Specification Size Size X64 Context Disable Code Generation Dy Data Areas TraceLevelMax x03002103 Alias 1 Eh Data Pointers Parameter x00000001 Struct 1 Interface Pointers al Deployment Symbol Funktion n Einen neuen Parameter hinzuf gen L scht den ausgew hlten Typ Verschiebt das ausgewahlte Element um eine Position nach unten Verschiebt das ausgewahlte Element um eine Position nach T oben Byte Alignment auswahlen Ausgew hlten Datentyp ausrichten Datenformat des ausgew hlten Datentyps zur cksetzen Name Name der Schnittstelle Parameter ID Eindeutige ID des Parameters Specification Datentyp des Parameters Size Gr e des Parameters F r x64 sind andere Gr en m glich Context Kontext ID des Parameters Disable Code Generation Die Code Generierung freigeben sperren 11 3 4 2 1 Parameter hinzuf gen bearbeiten l schen Mit Hilfe des TwinCAT Module Class TMC Editors k nnen Eigenschaften und Funktionalit ten einer TwinCAT Klasse hinzugef gt bearbeitet und gel scht werden Dieser Artikel beschreibt e Schritt 1 Einen neuen Parameter gt 95 i
188. einer mit Dateihandle definierten Datei ab Die Daten werden in pData gespeichert wobei pcbRead die L nge der Daten angibt 12 4 5 4 Methode ITcFileAccess FileWrite Daten in eine Datei schreiben Syntax virtual HRESULT TCOMAPI FileWrite TcFileHandle hFile PCVOID pData UINT cbData PUINT pcbWrite Parameter hFile Typ TcFileHandle in verweist auf die zuvor ge ffnete Datei pData Typ PVOID in Speicherort der zu schreibenden Daten cbData Typ PVOID in Gr e der zu schreibenden Daten Gr e des Speichers hinter pData TC3 C Version 1 0 135 Programmierreferenz BECKHOFF pcbRead Typ PUINT out Gr e der geschriebenen Daten R ckgabewert Typ HRESULT Wenn Daten geschrieben werden k nnen wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode schreibt Daten in eine mit Dateihandle definierte Datei Die Daten werden in pData gelesen wobei pcbRead die L nge der Daten angibt 12 4 5 5 Methode ITcFileAccess FileSeek Setzt Position in einer Datei Syntax virtual HRESULT TCOMAPI FileSeek TcFileHandle hFile UINT uiPos Parameter hFile Typ TcFileHandle in verweist auf die zuvor ge ffnete Datei uiPos Typ UINT in Position auf die zu setzen ist R ckgabewert Typ HRESULT Wenn die Position gesetzt werden konnt
189. el verstehen Die C Klasse CTON TON h cpp stellt das Verhalten eines TON Funktionsbausteins von SPS 61131 zur Verf gung Die Methode Update ist vergleichbar mit dem Rumpf des Funktionsbausteins der regelm ig aufgerufen werden muss Die Methode Update erh lt zwei in Parameter e IN1 Startet die Zeitschaltuhr mit steigender Flanke setzt die Zeitschaltuhr mit fallender Flanke zur ck e PT Abzuwartende Zeit bevor Q gesetzt wird Und zwei out Parameter e Q ist TRUE wies PT Sekunden nach IN eine steigende Flanke auf e ET abgelaufene Zeit Dar ber hinaus muss ITcTask zur Abfrage der Zeitbasis bereitgestellt werden Siehe auch Beispiel30 Zeitmessung gt 256 ITcTask Schnittstelle gt 150 15 20 Beispiel35 Ethernet Zugriff Dieser Artikel beschreibt die Implementierung von TC3 C Modulen die direkt ber eine Ethernet Karte kommunizieren Der Beispielcode fragt eine Hardware Adresse MAC von einem Kommunikationspartner mittels zyklischem Senden und Empfangen von ARP Paketen ab TC3 C Version 1 0 257 C C Beispiele BECKHOFF Source Erhalten Sie den Quellcode fur dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Folgen Sie den Configuration Schritten unten 6
190. elbst dann wenn er von keiner Modulklasse referenziert wird Optionale Standardeinstellungen Die Standardeinstellungen k nnen in Funktion des Datentyps definiert werden Optionale Eigenschaften Eine aus Name Wert und Beschreibung bestehende Tabelle zwecks Kommentierung des Datentyps Diese Information wird in den TMC und auch TMI Dateien bereitgestellt Diese Eigenschaften k nnen sowohl von TwinCAT Funktionen als auch von benutzerdefinierten Programmen verwendet werden Datentypausblendungen Aufgelistete GUIDs verweisen auf Datentypen die von diesem Datentypen ausgeblendet werden Normalerweise werden die GUIDs vorheriger Versionen dieses Datentyps hier bei jeder nderung automatisch eingef gt 11 3 3 5 Spezifikation In diesem Abschnitt wird die Spezifikation von Datentypen beschrieben 86 Version 1 0 TC3 C BECKHOFF Assistenten 8 Edit the properties of the Data Type General properties Name stSensorData Namespace 3098 cab003abfe1e y Enumeration Struct Interface mm 11 3 3 5 1 Array Array Ein benutzerdefiniertes Array erstellen Define the dimensions of the array dh Dimension LBound Elements Es wird ein neuer Dialog eingeblendet um Array Elemente hinzuzuf gen oder zu entfernen Dimension Dimension des Array LBound Linke Grenze des Array Standardwert 0 Elemente Menge der Elemente Dynamische Arrays f r Parameter und Datenzeiger Define
191. ems Add Counter started value BitConverter ToInt32 dataBuffer 0 catch Exception err MessageBox Show err Message private void btRead Click object sender EventArgs e EEY _tcClient ReadWrite 0xl 0x2 adsReadStream adsWriteStream byte dataBuffer adsReadStream ToArray lbOutput Items Add Counter BitConverter ToInt32 dataBuffer 0 catch Exception err MessageBox Show err Message private void btStop Click object sender EventArgs e CEY _tcClient ReadWrite 0x2 Oxl adsReadStream adsWriteStream byte dataBuffer adsReadStream ToArray lbOutput Items Add Counter stopped value BitConverter ToInt32 dataBuffer 0 catch Exception err MessageBox Show err Message private void btReset Click object sender EventArgs e EEY _tcClient ReadWrite 0x2 0x2 adsReadStream adsWriteStream byte dataBuffer adsReadStream ToArray 208 Version 1 0 TC3 C BECKHOFF C C Beispiele lbOutput Items Add Counter reset Value BitConverter Tolnt32 dataBuffer 0 catch Exception err MessageBox Show err Message 15 5 Beispiel05 C CoE Zugriff ber ADS In diesem Artikel wird die Implementierung eines TC3 C Moduls beschrieben das auf das CoE CANopen over EtherCAT Register einer EtherCAT Klemme zugreifen kann Source Erhalten Sie den Quellcode fur dieses Beispiel 1 Die heruntergeladene
192. en 4 DV TMC a Data Types Edit the properties of the Data Type 4 o Myinterface 39 Methods e a EC Modules General properties 4 R CModulet z Implemented Interfaces Name IStateMachine Parameters Namespace i Data Areas Eh Data Pointers GUID 20ba964c 3e7a 480a 2430 d78662a3d0c9d Interface Pointers Specification Interface Edit Methods Ke Deployment Choose interface base type Select ITComObject a Type Information 4 Geben Sie einen aussagekr ftigeren Namen ein in diesem Beispiel IStateMachine 78 Version 1 0 TC3 C BECKHOFF Schritt 2 Fugen Sie der Schnittstelle Methoden hinzu 5 Klicken Sie auf Edit Methods um eine Liste der Methoden dieser Schnittstelle zu erhalten a BG IM a gt Data Types 4 o StateMachine Assistenten Edit the properties of the Data Type 39 Methods 4 Modules General properties 4 fed CModule1 29 Implemented Interfaces Name IStateMachine Parameters Namespace Mh Data Areas I Data Pointers GUID ceb5764e 7804 4e od Interface Pointers Specifico EEE Deployment Choose interface base type Select TComObject m Type Information Namespace Guid 00000012 0000 0000 e000 000000000064 6 Klicken Sie auf die Schaltfl che um eine neue standardm ige Methode Method1 zu erzeugen a 3a MC a gt Data Types 4 o StateMachine Ze Add remove and reorder Methods Method
193. en BECKHOFF 7 Mittels Doppelklick auf das Unterelement k nnen Sie die Eigenschaften bearbeiten Geben Sie dem Unterelement einen neuen Namen und w hlen Sie einen geeigneten Datentyp Untitledi tmc TMC Editor X GA 4 WG TMC a Data Types 4 stSensorData 4 uD Items Lg nCounter Lg Subltem3 4 EC Modules 4 fa CModule1 29 Implemented Interfaces a 4 Parameters SS TracelevelMax 1 S Parameter m Data Areas Eh Data Pointers Interface Pointers al Deployment La Edit the properties of the Sub Item General properties Name Choose data type Select INT Description Type Information Namespace Guid Optional Subitem settings Offset Bits Size Bits Unit Comment E Hide sub items Optional properties Specification Alias zl Normal Type v 1807 1995 0000 0000 0000 000000000006 x64 specific x64 specific x64 specific Name Value Description 8 Geben Sie den anderen Unterelementen einen neuen Namen und wahlen einen geeigneten Datentyp 9 Speichern Sie Ihre in der TMC Datei vorgenommenen nderungen 76 Version 1 0 TC3 C BECKHOFF Assistenten Schritt 2 Starten Sie den TwinCAT TMC Code Generator um einen Code f r die Modulbeschreibung zu erzeugen 10 Klicken Sie mit der rechten Maustaste auf Ihre Projektdatei und w hlen Sie TwinCAT TMC Code Generator um den Quellcode Ihres Datentyps zu erzeugen Sea
194. en e Abfrage der Taskpriorit t Abfrage der Zeit bei Taskzyklusstart in Intervallen von 100 Nanosekunden seit dem 1 Januar 1601 UTC e Abfrage der Distributed Clock Zeit bei Taskzyklusbeginn in Nanosekunden seit dem 1 Januar 2000 e Abfrage der Zeit bei Methodenaufruf in Intervallen von 100 Nanosekunden seit dem 1 Januar 1601 UTC 256 Version 1 0 TC3 C BECKHOFF C C Beispiele Siehe auch ITcTask Schnittstelle gt 150 15 19 Beispiel31 Funktionsbaustein TON in TwinCAT3 C Dieser Artikel beschreibt die Implementierung eines Verhaltens in C das vergleichbar mit einem TON Funktionsbaustein von SPS 61131 ist Source Erhalten Sie den Quellcode fiir dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Verhalten dieses Moduls ist vergleichbar mit einem Modul das mit dem Cyclic IO Assistenten erstellt wurde m_input Value wird dem m_Output Value hinzugef gt Im Gegensatz zu Cyclic IO Modul f gt dieses Modul lediglich m_input Value zu m_Output Value hinzu wenn die definierte Zeitspanne 1000ms abgelaufen ist Dies wird mit Hilfe einer CTON Klasse erzielt die mit dem TON Funktionsbaustein von SPS 61131 vergleichbar ist Das Beispi
195. en bleiben gegebenenfalls diese manuell l schen L schen anderer betreffender Komponenten z B Header Dateien Strukturen Siehe Compiler Fehlermeldungen f r weitere Ausk nfte 13 12 Initialisierung von TMC Membervariablen Alle Membervariablen eines TCCOM Moduls m ssen initialisiert werden Der TMC Code Generator unterst tzt dies mit lt AutoGeneratedContent id MemberInitialization gt Wird durch den TMC Code Generator ersetzt durch lt AutoGeneratedContent id MemberInitialization gt m TraceLevelMax tlAlways memset amp m Parameter 0 sizeof m Parameter memset amp m Inputs 0 sizeof m Inputs memset amp m Outputs 0 sizeof m Outputs lt AutoGeneratedContent gt Die mit dem TwinCAT C Assistenten vor TwinCAT 3 1 Build 4018 generierten Projekte verwenden diese Eigenschaft nicht k nnen aber einfach angepasst werden indem diese Zeile im entsprechenden Code z B Konstruktor hinzugef gt wird lt AutoGeneratedContent id MemberInitialization gt 13 13 SPS Zeichenketten als Methodenparameter verwenden Um eine Zeichenkette von SPS nach C als Methodenparameter zu bergeben verwenden Sie bitte einen Zeiger mit L ngeninformation beim Deklarieren der Methode in TMC 190 Version 1 0 TC3 C BECKHOFF How to sel Eine solche Methode kann mittels Implementierung einer Methode innerhalb des Wrapper Funktionsbausteins aufgerufen werden nd METHOD
196. en handeln Description Festlegen ob der Typ folgendes ist e Normaler Typ e Zeiger e Zeiger auf Zeiger e Zeiger auf Zeiger auf Zeiger e eine Referenz Typinformation e Namespace Namensraum f r ausgew hlten Datentyp e GUID Eindeutige ID des Datentyps Optionale Datentypeinstellungen Offset Bits Offset des Symbols innerhalb des Datenbereichs F r x64 Plattform kann anderes Offset festgelegt werden Size Bits Gr e in Bits falls angegeben F r x64 Plattform kann eine andere Gr e festgelegt werden Comment Optionaler Kommentar der z B im Instanzenkonfigurator sichtbar ist Create Symbol Standardeinstellung f r ADS Symbolerstellung Hide sub items Wenn Variable ber Unterelemente verf gt dann wird der Systemmanager keinen Zugriff auf die Unterelemente gew hren Dies sollte z B im Falle gro er Arrays verwendet werden 11 3 4 3 3 1 TwinCAT Module Class Editor Data Areas Symbols Properties Data Areas Symbols Properties Dialog zum Bearbeiten der Datenbereichssymboleigenschaften 106 Version 1 0 TC3 C BECKHOFF Assistenten 4 AUS Data Types E Edit the properties of the Symbol 4 a Modules EI CModule f Implemented Interfaces General properties 4 Parameters TraceLevelMax Name Value ee Speciation Mias Parameter3 4 Eh Data Areas oe Select UDINT Description Normal Type Type Information Name UDINT Dh DateArea3 Dh Date Pointers Namespace Interface Poi
197. enden Informationen typedef struct TcFileFindData TcFileHandle hFile DWORD dwFileAttributes ULONGLONG ui64CreationTime ULONGLONG ui64LastAccessTime ULONGLONG ui64LastWriteTime DWORD dwFileSizeHigh DWORD dwFileSizeLow DWORD dwReservedl DWORD dwReserved2 CHAR cFileName 260 CHAR cAlternateFileName 14 WORD wReserved0 TcFileFindData PTcFileFindData 12 4 5 11 Methode ITcFileAccess FileFindNext Die Dateien eines Verzeichnisses weiter durchlaufen Syntax virtual HRESULT TCOMAPI FileFindNext TcFileFindHandle hFileFind PTcFileFindData pFileFindData Parameter hFileFind Typ PTcFileFindHandle in Handle um weiter mit FileFindNext zu suchen pFileFindData Typ PTcFileFindData out die Beschreibung der nachsten Datei Vergleiche mit TcFileAccessServices h Ruckgabewert Typ HRESULT Wenn eine Datei gefunden werden konnte wird S_OK zur ckgegeben TC3 C Version 1 0 139 Programmierreferenz BECKHOFF Besonders interessante Fehlercodes e AIDS E TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode sucht nach der n chsten Datei in einem Verzeichnis Die Methode gew hrt Zugriff auf PTcFileFindData der gefundenen Datei mit folgenden Informationen typedef struct TcFileFindData TcFileHandle hFile DWORD dwFileAttributes ULONGLONG ui64CreationTime ULONGLONG ui64LastAccessTime
198. er Aufrufer und der Aufgerufene sich im selben Echtzeitkontext und auf demselben CPU Kern befinden Der Datenzeiger wird im TwinCAT Module Instance Configurator gt 112 konfiguriert Siehe Beispiel10 gt 216 TwinCAT Modules Class f r Echtzeitkontext Diese Vorlage erstellt ein Modul das unter Echtzeitbedingungen instanziiert werden kann Wie hier b 27 beschrieben verf gen andere Module ber berg nge f r Ein Ausschalten in Nicht Echtzeitkontext Manchmal m ssen die Module bei bereits laufender Echtzeit gestartet werden also m ssen alle berg nge unter Echtzeitbedingungen ausgef hrt werden Dies ist eine entsprechende Vorlage 68 Version 1 0 TC3 C BECKHOFF Assistenten 11 3 TwinCAT Module Class Editor TMC Der TwinCAT Module Class Editor kurz TMC Editor wird f r die Definition der Klasseninformation eines Moduls verwendet Es handelt sich um Datentypdefinitionen mit deren Verwendung bereitgestellte und implementierte Schnittstellen sowie Datenbereiche und Datenzeiger Kurz Alles was von au en zu sehen ist muss mit diesem Editor definiert werden Die Grundidee ist 1 TwinCAT Module Class Editor TMC 69 und verwenden Sie ihn um einfach Funktionalit ten in die TwinCAT C TMC Datei das ist die XML basierte Beschreibung der TwinCAT C Modulklasse hinzuzuf gen zu ndern 2 TwinCAT Module Class Editor TMC gt 70 kann der gesamte notwendige C Code d h Header und cpp D
199. er Ausgang Aktualisierung aufgerufen werden quivalent zu ITcCyclic 130 Schnittstelle Verwenden Sie bitte die ITcPostCyclic 143 Schnittstelle 13 8 Reihenfolgebestimmung der Ausf hrung in einem Task Es k nnen verschiedene Modulinstanzen einem Task zugewiesen werden sodass der Benutzer einen Mechanismus ben tigt um die Reihenfolge der Ausf hrung im Task festzulegen Das Schl sselwort lautet Sort Order das im Kontext gt 114 des TwinCAT Module Instance Configurator gt 112 konfiguriert wird Context a X Depend On Manual Config e F Need Call From Sync Mapping Data Areas Interfaces 0 route 1 Outputs Data Pointer Interface Pointer Result ID Task Name Priority Cycle Time us Task Port Symbol Port ort Ord 1 02010010 BX 1 1000000 350 350 150 Siehe Beispiel26 Ausf hrungsreihenfolge in einem Task IK 254 wie das zu implementieren ist TC3 C Version 1 0 187 How to BECKHOFF 13 9 Stack Size gt AkB verwenden Die standardm ige Stack Gr e ist auf 4KB begrenzt Wird diese Grenze berschritten dann tritt die Fehlermeldung Error LNK2001 unresolved external symbol _ _chkstk auf Man kann die von TwinCAT bereit gestellte Bibliothek chkstk lib verwenden indem man dem Projekt die Eigenschaftendatei TwinCAT RT ChkStk standardm ig in c C TwinCAT 3 x sdk VsProps hinzuf gt
200. er settings Comment Context ID 1 sl F Disable code generation Allgemeine Eigenschaften Name Name des Datenzeigers Den Datentyp definieren Select Datentyp auswahlen Typinformation e Name Name des ausgew hlten Datentyps e GUID Eindeutige ID des Datentyps Die Dimension des Array definieren Siehe hier gt 87 Die Parameter ID konfigurieren Enter a unique ID Value Einen eindeutigen ID Wert eingeben Siehe Parameter gt 93 Constant Name Quellcodename der Parameter ID Optionale Datenzeigereinstellungen Comment Kommentar der z B im Instanzenkonfigurator sichtbar ist Context ID Kontext ID des Datenzeigers Disable Code Generation Die Code Generierung freigeben sperren TC3 C Version 1 0 109 Assistenten BECKHOFF 11 3 4 5 Schnittstellenzeiger Interface Pointers Schnittstellenzeiger hinzuf gen entfernen und neu ordnen ya TMC Data Types lt Add remove and reorder Interface Pointers a fi Modules 4 Bed CModule1 ER Implemented Interfaces a Parameters Name Parameter ID Type Context Disable Code Generation SS TraceLevelMax CyclicCaller x03002060 ITcCyclicCaller EI bEnable 4 LI Data Areas 4 E Inputs a Eh Symbols m Vale m Status m Data Eh Outputs a Dh DataArea3 E Symbols Interface Pointers CyclicCaller mv Symbol Funktion Schnittstellenzeiger hinzuf gen L scht den ausgew hlten Zeiger Verschiebt das ausgew hlte Element um eine Positi
201. er started value 0 Counter 10130 UU State transition from SAFEOP t 200 Version 1 0 TC3 C BECKHOFF C C Beispiele 15 4 1 Beispiel03 Der in C geschriebene TC3 ADS Server In diesem Artikel wird die Erstellung eines als ADS Server agierenden TC3 C Moduls beschrieben Der Server stellt eine ADS Schnittstelle zum Starten Stoppen Zur cksetzen einer Z hlervariablen im C Modul bereit Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Dieses Beispiel beinhaltet ein C Modul das als ADS Server agiert der einen Zugang zu einem Z hler gew hrt der gestartet gestoppt und gelesen werden kann Die Header Date des Moduls definiert die Z hlervariable m_bCount und die entsprechende cpp Datei initialisiert den Wert im Konstruktor und implementiert die Logik in der CycleUpdate Methode Die Methode AdsReadWritelnd in der cpp Datei analysiert die eingehenden Meldungen und sendet die R ckgabewerte zur ck F r einen weiteren hinzugef gten Meldungstyp wird ein define in der Header Datei hinzugef gt Details wie die Definition der ADS Meldungstypen werden im folgenden Kochbuch bes
202. erden sodass der h here CPU Aufwand sich nicht auf den Echtzeitkontext auswirkt 6 3 Zustandsmaschine Neben den Zust nden INIT PREOP SAFEOP und OP gibt es entsprechende Zustands berg nge innerhalb derer allgemeine oder modulspezifische Aktionen auszuf hren sind oder ausgef hrt werden k nnen Die Zustandsmaschine ist sehr einfach konzipiert in jedem Falle gibt es nur berg nge zum n chsten oder vorherigen Schritt TC3 C Version 1 0 21 Module BECKHOFF Hieraus ergeben sich die Zustands berg nge INIT zu PREOP IP PREOP zu SAFEOP PS und SAFEOP zu OP SO In umgekehrter Richtung bestehen die folgenden Zustands berg nge OP zu SAFEOP OS SAFEOP zu PREOP SP und PREOP zu INIT PI Einschlie lich bis zum SAFEOP Zustand finden alle Zust nde und Zustands berg nge innerhalb des Nicht Echtzeitkontextes statt Nur der bergang SAFEOP zu OP der Zustand OP und der bergang OP zu SAFEOP finden im Echtzeitkontext statt Diese Differenzierung hat einen Einfluss wenn Ressourcen alloziert oder freigegeben werden oder wenn Module sich bei anderen Modulen an oder abmelden INIT Da ER S 4 4 PREOP D E Ea 3 4P 4 SAFEOP Wi a 0 CD Eu 2 Bm WS D INIT Der INIT Zustand ist nur ein virtueller Zustand Sofort nach Erstellung eines Moduls wechselt das Modul von INIT zu PREOP d h der IP Zustands bergang wird ausgef hrt Die Instanziierung und der IP Zustands bergang erfol
203. ersion 1 0 173 Programmierreferenz BECKHOFF Name Beschreibung H sqr_ Quadriert H sqrt_ Berechnet die Quadratwurzel e Sin Berechnet den Sinus e COS Berechnet den Kosinus e Ion Berechnet den Tangens H atan_ Berechnet den Winkel dessen Tangens der angegebene Wert ist H atan2_ Berechnet den Winkel dessen Tangens der Quotient zweier angegebener Werte ist H asin_ Berechnet den Winkel dessen Sinus der angegebene Wert ist acos_ Berechnet den Winkel dessen Kosinus der angegebene Wert ist exp_ Berechnet e hoch angegebene Potenz log_ Berechnet den Logarithmus eines angegebenen Werts log10_ Berechnet den Logarithmus zur Basis 10 eines angegebenen Werts fabs Berechnet den Absolutwert fmod_ Berechnet den Restbetrag ceil_ Berechnet die kleinste Integerzahl die gr er oder gleich der angegebenen Zahl ist e floor_ Berechnet die gr te Integerzahl die kleiner oder gleich der angegebenen Zahl ist o pow_ Berechnet eine angegebene Zahl hoch angegebener Potenz sincos_ Berechnet den Sinus und den Kosinus von x fmodabs_ Berechnet den Absolutbetrag der die euklidische Definition der mod Operation erf llt H round_ Berechnet einen Wert und rundet ihn auf den nachsten Integer H round dote Berechnet einen gerundeten Wert mit einer festgelegten Anzahl Dezimalstellen coubic Berechnet die Kubikzahl Idexp_ Bere
204. erungseinheiten keinen Kommunikationskanal gibt bleiben die Entwicklung eines geeigneten Profils und die Standardisierung der Steuerungseinheiten h ufig auf der Strecke Das Beste aus beiden Welten Die ideale Steuerung f r modulare Maschinen nutzt Elemente aus dezentralisierter und zentralisierter Steuerungsarchitektur Eine zentrale leistungsstarke und m glichst allgemeine Computerplattform dient wie blich als Steuerungshardware TC3 C Version 1 0 9 Einleitung BECKHOFF Die Vorteile einer zentralisierten Steuerungstechnologie e geringe Gesamtkosten e verf gbar e schnelles modulares Feldbussystem Stichwort EtherCAT e und die M glichkeit auf alle Informationen im System ohne Kommunikationsverlust zugreifen zu k nnen sind entscheidende Argumente Die oben aufgef hrten Vorteile einer dezentralisierten Herangehensweise k nnen in der zentralisierten Steuerung durch geeignete Modularisierung der Steuerungssoftware umgesetzt werden Anstelle ein gro es komplexes SPS Programm und eine NC mit vielen Achsen ablaufen zu lassen k nnen viele kleine Steuerungen in einer gemeinsamen Laufzeit nebeneinander auf der gleichen Hardware relativ unabh ngig voneinander koexistieren Die einzelnen Steuerungsmodule sind in sich abgeschlossen und stellen der Umgebung ihre Funktionen ber Standard Schnittstellen zur Verf gung oder nutzen entsprechende Funktionen anderer Module oder der Laufzeit Durch die Definition
205. erweise von einem TwinCAT Task nach der Ausgang Aktualisierung aufgerufene Methode PostCyclicUpdate nachdem die Schnittstelle angemeldet wurde Syntax HRESULT TCOMAPI PostCycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG PTR context Parameter ipTask Typ ITcTask verweist auf den aktuellen Task Kontext ipCaller Typ ITcUnknown verweist auf die aufrufende Instanz Context Typ ULONG_PTR Kontext beinhaltet den Wert der an die Methode ITcPostCyclicCaller AddPostModule bergeben wurde Ruckgabewert Es wird empfohlen stets S_OK zur ckzugeben Derzeit wird der Ruckgabewert von den TwinCAT Tasks ignoriert TC3 C Version 1 0 143 Programmierreferenz BECKHOFF Beschreibung Innerhalb eines Taskzyklusses wird die Methode PostCycleUpdate aufgerufen nachdem OutputUpdate fur alle angemeldeten Modulinstanzen aufgerufen wurde Demzufolge muss diese Methode verwendet werden um derlei zyklische Abarbeitung zu implementieren Sehen Sie dazu auch Schnittstelle ITcPostCyclicCaller gt 144 12 4 8 Schnittstelle ITcPostCyclicCaller Schnittstelle zum Anmelden oder Abmelden der ITcPostCyclic Schnittstelle eines Moduls bei einem TwinCAT Task Syntax TCOM_DECL_INTERFACE 03000026 0000 0000 e000 000000000064 ITcCyclicCaller struct __declspec novtable ITcPostCyclicCaller public ITcUnknown Ca Ben tigtes include TcIoInterfaces h Methoden Sym Name Beschreibung bol DH
206. es Hex Dec Beschreibung 0x0 0 Kein Fehler 0x1 1 Interner Fehler 0x2 2 Keine Echtzeit 0x3 3 Zuweisung gesperrt Speicherfehler 0x4 4 Postfach voll 0x5 5 Falsches HMSG 0x6 6 Ziel Port nicht gefunden 0x7 7 Zielrechner nicht gefunden 0x8 8 Unbekannte Befehl ID 0x9 9 Ung ltige Task ID OxA 10 Kein lO OxB 11 Unbekannter ADS Befehl OxC 12 Win32 Fehler OxD 13 Port nicht angeschlossen OxE 14 Ung ltige ADS Lange OxF 15 Ung ltige AMS Net ID 0x10 16 niedrige Installationsebene 0x11 17 Kein Debugging verf gbar 0x12 18 Port deaktiviert 0x13 19 Port bereits verbunden 0x14 20 ADS Sync Win32 Fehler 0x15 21 ADS Sync Timeout 0x16 22 ADS Sync AMS Fehler 0x17 23 Keine Index Map f r ADS Sync vorhanden 0x18 24 Ung ltiger ADS Port 0x19 25 Kein Speicher Ox1A 26 TCP Sendefehler 0x1B 27 Host nicht erreichbar 0x1C 28 Ungtltiges AMS Fragment Router Fehlercodes Hex Dec Name Beschreibung 0x500 1280 ROUTERERR_NOLOCKEDMEMORY Lockierter Speicher kann nicht zugewiesen werden 0x501 1281 ROUTERERR_RESIZEMEMORY Die Gr e des Routerspeichers konnte nicht ge ndert werden 0x502 1282 ROUTERERR_MAILBOXFULL Das Postfach hat die maximale Anzahl der m glichen Meldungen erreicht Die aktuell gesendete Nachricht wur de abgewiesen 0x503 1283 ROUTERERR_DEBUGBOXFULL Das Postfach hat die maximale Anzahl der m
207. es NOLOGO 4 Linker Ignore Import Library No Z General he Register Output No mon g Per user Redirection No veg Additional Library Directories TE E E Link Library Dependencies Yes 15 17 Beispiel26 Ausfuhrungsreihenfolge in einem Task Dieser Artikel beschreibt die Bestimmung der Taskausf hrungsreihenfolge wenn einem Task mehr als ein Modul zugeordnet ist Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Beispiel enth lt ein Modul SortOrderModule das zwei Mal instanziiert wird Die Sortierreihenfolge bestimmt die Ausf hrungsreihenfolge die ber den TwinCAT Module Instance Configurator gt 112 konfiguriert werden kann Zum Beispiel verfolgt die Cycle Update Methode den Objekt Namen und die Objekt ID zusammen mit der Sortierreihenfolge dieses Moduls Auf dem Konsolenfenster kann man die Ausf hrungsreihenfolge sehen 32 05 09 2014 13 01 14 343 ms TCOM Server 10 CSortOrderModule CycleUpdate I am SortOrderl 0x01010010 w SortOrder 150 33 05 09 2014 13 01 14 343 ms TCOM Server 10 CSortOrderModule CycleUpdate I am SortOrder2 0x01010020 w SortOrder 170 G 34 05 09 2014 13 01
208. ety over EtherCAT TwinSAFE XFC und XTS sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen f hren Patente Die EtherCAT Technologie ist patentrechtlich gesch tzt insbesondere durch folgende Anmeldungen und Patente EP1590927 EP1789857 DE102004044764 DE102007017835 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen L ndern Die TwinCAT Technologie ist patentrechtlich gesch tzt insbesondere durch folgende Anmeldungen und Patente EP0851348 US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen L ndern Etherc AT EtherCAT ist eine eingetragene Marke und patentierte Technologie lizensiert durch die Beckhoff Automation GmbH Deutschland Copyright Beckhoff Automation GmbH amp Co KG Deutschland Weitergabe sowie Vervielf ltigung dieses Dokuments Verwertung und Mitteilung seines Inhalts sind verboten soweit nicht ausdr cklich gestattet Zuwiderhandlungen verpflichten zu Schadenersatz Alle Rechte f r den Fall der Patent Gebrauchsmuster oder Geschmacksmustereintragung vorbehalten 6 Version 1 0 TC3 C BECKHOFF Vorwort 1 2 Sicherheitshinweise Sicherheitsbestimmungen Beachten Sie die folgenden Sicherheitshinweise und Erklarungen Pro
209. face ITcCyclicCaller 0300001 e 0000 0000 000 000000000064 Interface ITcloCyclic 03000011 0000 0000 000 000000000064 Interface ITcloCyclicCaller 10300001f 0000 0000 e000 000000000064 Interface ITcNcDcConvert 05000005 0000 0000 e000 000000000064 Interface TTcNcDcConvert2 105000006 0000 0000 e000 000000000064 Interface ITComCreatelnstance 00000031 0000 0000 e000 000000000064 Interface TTComLicenseServer 01010000 0000 0000 e000 000000000064 Interface ITComObjCon 100000016 0000 0000 e000 000000000064 Interface ITComObjectSerrer 00000030 0000 0000 e000 000000000064 Interface ITComObjInd 100000013 0000 0000 e000 000000000064 Interface ITComObjReq 00000015 0000 0000 e000 000000000064 Interface ITComObjRes 00000014 0000 0000 000 000000000064 Interface ITcPostCyclic 103000025 0000 0000 e000 000000000064 Interface ITcPostCyclicCaller 103000026 0000 0000 e000 000000000064 Interface ITcPrelnputCyclic 103000017 0000 0000 e000 000000000064 Interface ITcRTime 10200000d 0000 0000 e000 000000000064 Interface ITcRTimeTask 102000003 0000 0000 e000 000000000064 Interface ITcTask 102000002 0000 0000 e000 000000000064 Interface E Show hidden data types In Folge dessen ist nun die neue Schnittstelle IStateMachine Teil der Modulbeschreibung 2 R I TMC ta Data Types pee Shows the implemented interfaces of the module a EC Modules 8 4 E CStateMachineModule CTER Implemented Interfaces commen Name
210. fehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen cbLength Typ ULONG in enth lt die L nge von pNotifications 172 Version 1 0 TC3 C BECKHOFF Programmierreferenz pNotifications Typ AdsNotificationStream in Zeiger auf die Notifications Dieses Array besteht aus AdsStampHeader mit Notification Handle und Daten via AdsNotificationSample Ruckgabewert void 12 5 9 3 AdsDeviceNotificationCon Die Methode AdsAddDeviceNotificationCon best tigt den Empfang einer ADS Ger te Notification AdsDeviceNotificationReg gt 172 bildet das Gegenst ck und muss zuvor aufgerufen Syntax void AdsDeviceNotificationCon AmsAddr amp rAddr ULONG invokeld ULONG nResult Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis der Ger te Notification Anzeige R ckgabewert void 12 6 Mathematische Funktionen TwinCAT hat eigene mathematische Funktionen implementiert weil die math h Implementierung von Microsoft nicht echtzeitf hig ist Diese Funktionen sind in fpu87 h deklariert einem Teil von TwinCAT SDK Bereitgestellte Methoden Mathematische Funktionen TC3 C V
211. frufer angemeldet ist H Output Update gt 147 Wird am Ende eines Taskzyklus aufgerufen wenn die Schnittstelle bei einem zyklischen O Aufrufer angemeldet ist Anmerkungen ITcloCyclic kann dazu verwendet werden ein TwinCAT Modul zu implementieren das als Feldbustreiber oder O Filtermodul agiert Diese Schnittstelle wird der Methode ITcloCyclicCaller AddloDriver bergeben wenn sich ein Modul bei einem Task anmeldet normalerweise als letzter Initialisierungsschritt beim bergang von SafeOP zu OP Nach der Anmeldung werden die Methoden InputUpdate und OutputUpdate der Modulinstanz je einmal pro Taskzyklus aufgerufen 12 4 9 1 Methode ITcloCyclic InputUpdate Die Methode InputUpdate wird normalerweise von einem TwinCAT Task aufgerufen nachdem die Schnittstelle angemeldet wurde Syntax virtual HRESULT TCOMAPI InputUpdate ITcTask ipTask ITcUnknown ipCaller DWORD dwStateIn ULONG PTR context 0 0 146 Version 1 0 TC3 C BECKHOFF Programmierreferenz Parameter ipTask Typ ITcTask verweist auf den aktuellen Task Kontext ipCaller Typ ITcUnknown verweist auf die aufrufende Instanz dwStateln Typ DWORD zuk nftigen Erweiterungen vorbehalten derzeit ist dieser Wert immer 0 context Typ ULONG_PTR Kontext beinhaltet den Wert der an die Methode ITcCyclicCaller AddloDriver bergeben wurde R ckgabewert Es wird empfohlen stets S_OK zur ckzugeben Derzeit wird der R ckgabewert von den Tw
212. g von Umwelt oder Ger ten Wenn der Hinweis neben diesem Symbol nicht beachtet wird k nnen Umwelt oder Ger te gesch digt werden Achtung Tipp oder Fingerzeig Dieses Symbol kennzeichnet Informationen die zum besseren Verst ndnis beitragen E Hinweis TC3 C Version 1 0 7 Ubersicht BECKHOFF 2 Ubersicht Dieses Kapitel behandelt die Implementierung von TwinCAT 3 in C C Die wichtigsten Kapitel sind e Grundlagen Welche Plattformen werden unterst tzt Sind weitere Programme n tig um TwinCAT 3 C Module zu implementieren Die Antworten finden Sie in Anforderungen gt 12 und Vorbereitung gt 13 Limitierungen sind hier gt 119 dokumentiert e Schnellstart gt 37 Dies ist ein weniger als f nf Minuten in Anspruch nehmendes Beispiel um einen einfachen zyklisch ausgef hrten Z hler in C zu implementieren Der Z hlerwert wird berwacht und berschrieben es sind Debugging M glichkeiten beschrieben usw e MODULE gt 23 MODULE MODULE Modularisierung ist die Grundphilosophie von TwinCAT 3 Insbesondere f r C Module ist ein Verst ndnis des modularen Konzepts von TwinCAT 3 die Grundvoraussetzung Grundkenntnisse zur Architektur von TwinCAT Modulen sind erforderlich gt 23 Assistenten gt 65 Dokumentation der visuellen Komponenten der TwinCAT C Umgebung Hierzu geh ren Tools zum Erstellen von Projekten und Tools f r die Bearbeitung von Modulen und die
213. gen immer zusammen so dass das Modul nie im INIT Zustand bleibt Nur beim Entfernen des Moduls bleibt es kurzzeitig im INIT Zustand INIT zu PREOP IP W hrend des IP Zustands bergangs meldet sich das Modul mit seiner eindeutigen Objekt ID beim Modulmanager an Die Initialisierungsparameter die auch w hrend der Objekterstellung alloziert werden werden an das Modul weitergegeben Bei diesem bergang kann das Modul keine Verbindung zu anderen Modulen herstellen weil nicht sicher ist ob die anderen Module bereits bestehen und beim Modulmanager angemeldet sind Wenn das Modul Systemressourcen ben tigt z B Speicherplatz k nnen diese w hrend des Zustandsubergangs alloziert werden Alle allozierten Ressourcen m ssen dann entsprechend beim bergang PREOP zu INIT PI wieder freigegeben werden PREOP Im PREOP Zustand ist das Modul vollst ndig erstellt und auch normalerweise vollst ndig parametriert auch wenn m glicherweise beim bergang von PREOP zu SAFEOP weitere Parameter hinzukommen Das Modul ist im Modulmanager angemeldet es wurden aber noch keine Verbindungen mit anderen Modulen herstellt 28 Version 1 0 TC3 C BECKHOFF Module PREOP zu SAFEOP PS In diesem Zustands bergang kann das Modul Verbindungen mit anderen Modulen herstellen Zu diesem Zweck hat es normalerweise neben anderen Dingen Objekt IDs von anderen Modulen mit den Initialisierungsdaten erhalten die nun ber den Modulmanager in reale Verbindungen
214. genden Lernprogrammen ist beschrieben wie diese M glichkeit aktiviert wird Um Treiber mit echten Zertifikaten f r Produktionsmaschinen zu erstellen muss diese M glichkeit deaktiviert werden e Ein Testzertifikat f r den Testmodus erstellen gt 17 e Test Zertifikate l schen gt 19 Weitere Referenzen MSDN Testzertifikate Windows Treiber http msdn microsoft com en us library windows hardware ff553457 v vs 85 aspx MSDN MakeCert Testzertifikate Windows Treiber http msdn microsoft com en us library windows hardware ff548693 v vs 85 aspx 5 4 2 Testsignierung freigeben bersicht F r die Implementierung von TwinCAT 3 C Modulen auf x64 Plattformen muss der Treiber mit einem Zertifikat signiert sein Dieser Artikel beschreibt wie Sie ein Testzertifikat zum Testen eines C Treibers erstellen und installieren k nnen DI HINWEIS Entwickler verf gen m glicherweise ber eine Vielzahl an Werkzeugen um selber Zertifikate zu erstellen bitte folgen Sie dieser Beschreibung genauestens um den Testzertifikat Mechanismus anzuschalten Einer der folgenden Befehle muss ausgef hrt werden Eingabeaufforderung von Visual Studio 2010 2012 mit Administratorrechten ber All Programs gt Microsoft Visual Studio 2010 2012 gt Visual Studio Tools gt Visual Studio Command Prompt dann Rechtsklick auf Run as administrator TC3 C Version 1 0 17 Vorbereitung nur einmal BECKHO
215. griff Beschreibt wie die File IO Funktionalit t bei C Modul gt 248 auf synchrone Art und Weise verwendet werden kann Das Beispiel schreibt Prozesswerte in eine Datei Das Beschreiben der Datei wird von einem deterministischen Zyklus veranlasst die Ausf hrung von File IO ist entkoppelt asynchron d h Der deterministische Zyklus l uft weiter und wird nicht durch das Schreiben in der Datei behindert Der Status der Routine f r entkoppeltes Schreiben in der Datei kann berpr ft werden 20 Beispiel20 FilelO Write gt 249 Beschreibt wie die File IO Funktionalit t bei C Modul verwendet werden kann Das Beispiel schreibt Prozesswerte in eine Datei Das Beschreiben der Datei wird von einem deterministischen Zyklus veranlasst die Ausf hrung von File IO ist entkoppelt asynchron d h Der deterministische Zyklus l uft weiter und wird nicht durch das Schreiben in der Datei behindert Der Status der Routine f r entkoppeltes Schreiben in der Datei kann berpr ft werden 20a Beispiel20a FilelO Cyclic Read Write Jet ein umfangreicheres Beispiel als S20 und S19 Es gt 250 beschreibt zyklischen Lese und oder Schreibzugriff auf Dateien von einem TC3 C Modul aus 22 Beispiel22 Automation Device Driver Beschreibt wie der TwinCAT Automation Device Driver ADD Zugang DPRAM gt 251 ADD f r den Zugriff auf die DPRAM zu schreiben ist 25 Beispiel25 Statische Bibliothek gt 252 Beschreibt wie die in einem anderen TC3 C
216. gt 66 wird automatisch bei der Erstellung eines C Moduls gestartet Dieser Assistent stellt verschiedene gebrauchsfertige Projekte als Einstiegspunkt f r eigene Entwicklungen zur Verf gung e Der TwinCAT Module Class Editor gt 69 TMC ist ein grafischer Editor f r die Definition von Datenstrukturen Parametern Datenbereichen Schnittstellen und Zeigern Er erzeugt eine TMC Datei die vom TMC Code Generator verwendet wird e Anhand der definierten Klassen werden Instanzen generiert die ber den TwinCAT Module Instance Configurator gt 112 konfiguriert werden k nnen 11 1 TwinCAT C Projekt Assistent Nach der Erstellung eines TwinCAT Projekts kann man mit Hilfe des TwinCAT C Projekt Assistenten ein C Projekt hinzuf gen 1 Rechtsklicken auf C Symbol und Add new Item ausw hlen um den C Projektassistenten zu starten o ag EF Search Solution Explorer Ctrl Pr Wl Solution TwinCAT Projectl 1 project 4 Gi TwinCAT Projecti b dd system MOTION Gj Pic SAFETY Pe Ce gt Eq vol D Add Men ben D Aqa Istung tem TwinCAT bietet zwei C Projekte an Treiber Projekt Projekte die ein oder mehrere ausf hrbare Module beinhalten TC3 C Version 1 0 65 Assistenten BECKHOFF Statische Bibliothek Projekte mit C Funktionen die von verschiedenen TwinCAT C Treibern verwendet werden Add New Item TwinCAT Projectl Tee 4 Installed
217. h Data Pointers HRESULT GetState gt Interface Pointers ES Deployment Schritt 5 Neue Schnittstelle zum Modul hinzuf gen 24 W hlen Sie das Modul das mit der neuen Schnittstelle erweitert werden soll in diesem Falle w hlen Sie das Ziel Modules gt CStateMachineModule 25 Die Liste der implementierten Schnittstellen wird mittels Klicken auf die Schaltfl che mit Add a new interface to the module um eine neue Schnittstelle erweitert 4 ge TMC a gt Data Types sm Shows the implemented interfaces of the module 4 o StateMachine a Z Methods u f Start Stop Name Interface ID Disable Code Generation SetState ITCom bject 00000012 0000 0000 E000 000000000064 V GetState ITeCyclic 03000010 0000 0000 E000 000000000064 4 Ki Modules ITcADI 03000012 0000 0000 E000 000000000064 7 4 Fed CStateMachineModule at r Implemented Interfaces Parameters b 5 Data Areas Eh Data Pointers gt Interface Pointers Ra Deployment CcYWaicnso TC3 C Version 1 0 225 C C Beispiele BECKHOFF 26 Alle verf gbaren Schnittstellen werden aufgef hrt w hlen Sie die neue Schnittstelle IStateMachine und beenden Sie mit OK Specification ITcAppServices 108500102 0000 0000 e000 000000000064 Interface ITcAppServices2 108500104 0000 0000 e000 000000000064 Interface ITcBaseClassFactory 00000018 0000 0000 e000 000000000064 Inter
218. h WANA E 12 07 06 149 IT AN PRS 2 28 E E E R e oa ode SERA Syntax Die Syntax zur Aufzeichnung von Meldungen ist folgende m Trace Log TLEVEL FNMACRO A message 7 Mit diesen Eigenschaften TLEVEL kategorisiert eine Meldung in eine von f nf Ebenen Das Aufzeichnen der h heren Ebene beinhaltet immer auch das Aufzeichnen der unteren Ebenen D h eine auf Ebene tIWarning klassifizierte Meldung wird auftreten mit Ebene tlAlways tIError und Warning sie wird die tInfo und tIVerbose Meldungen NICHT aufzeichnen Level 0 tlAlways Level 1 tlError Level 2 tIWarning Level 3 tIInfo Level 4 tlVerbose e FNMACRO kann verwendet werden um den Funktionsnamen vor die zu druckende Meldung zu setzen FENTERA Wird beim Eintritt in eine Funktion verwendet druckt den Funktionsnamen gefolgt von gt gt gt e FNAMEA Wird innerhalb einer Funktion verwendet druckt den Funktionsnamen FLEAVEA Wird beim Verlassen einer Funktion verwendet druckt den Funktionsnamen ge folgt von lt lt lt Formatspezifizierer TC3 C Version 1 0 177 BECKHOFF Programmierreferenz Beispiel HRESULT CModulel CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG PTR context HRESULT hr S_OK Sample to showcase trace logs ULONGLONG cnt 0 if SUCCEEDED ipTask gt GetCycleCounter amp cnt Le ents HE m Trace Log tlA
219. h eine Critical Section e Die Instanz der Modulklasse CModuleDataRead liest die Daten aus dem DataProvider ber den Aufruf der Retrieve Methode Die Instanz der Modulklasse CModuleDataWrite schreibt die Daten aus dem DataProvider ber den Aufruf der Store Methode Die Read Write Instanzen werden f r den Zugriff auf die DataProvider Instanz konfiguriert die im Men Interface Pointer auf der Instanzkonfiguration zu sehen ist Dort kann man auch den Kontext Task konfigurieren in dem die Instanzen auszuf hren sind Bei diesem Beispiel werden zwei Tasks verwendet TaskRead und TaskWrite TC3 C Version 1 0 247 C C Beispiele BECKHOFF Die DataWriteCounterModulo Parameter von CModuleDataWrite und auch DataReadCounterModulo CModuleDataRead erm glichen die Bestimmung des Moments an dem die Modulinstanzen den Zugriff initiieren 15 11 Beispiel12 Modulkommunikation Verwendet IO Mapping Dieser Artikel beschreibt wie zwei TC3 C Module ber das gew hnliche IO Mapping von TwinCAT 3 kommunizieren k nnen Zwei Instanzen sind ber das IO Mapping verkn pft und greifen periodisch auf den Variablenwert zu Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build
220. henden Schnittstellen ID abfragen ob ein Modul weitere Schnittstellen unterst tzt Weitere Erl uterungen befinden sich im Abschnitt TCCOM Schnittstellenzeiger Schnittstellenzeiger verhalten sich wie das Gegenst ck von Schnittstellen Wenn ein Modul eine Schnittstelle eines anderen Moduls nutzen m chte muss es einen Schnittstellenzeiger des entsprechenden Schnittstellentyps haben und daf r sorgen dass dieser auf das andere Modul zeigt Danach k nnen die Methoden des anderen Moduls verwendet werden Schnittstellenzeiger werden normalerweise beim Start der Zustandsmaschine gesetzt Beim bergang von INIT zu PREOP IP empf ngt das Modul die Objekt ID des anderen Moduls mit der entsprechenden Schnittstelle beim bergang PREOP zu SAFEOP PS oder SAFEOP zu OP SO wird die Instanz des anderen Moduls mit dem Modulmanager durchsucht und die entsprechende Schnittstelle mit der Methode Query Interface gesetzt Beim Zustands bergang in die entgegengesetzte Richtung von SAFEOP zu PREOP SP oder OP zu SAFEOP OS muss die Schnittstelle wieder freigegeben werden 24 Version 1 0 TC3 C BECKHOFF Module Datenbereiche Module k nnen Datenbereiche enthalten die von der Umgebung verwendet werden k nnen z B von anderen Modulen Diese Datenbereiche k nnen beliebige Daten enthalten Sie werden oft f r Prozessabbilddaten Ein und Ausg nge genutzt Die Struktur der Datenbereiche wird in der Ger tebeschreibung des Moduls definier
221. hinenmodularisierung gibt es unterschiedliche Herangehensweisen Sie k nnen grob in eine dezentralisierte und eine zentralisierte Vorgehensweise unterteilt werden Beim lokalen Ansatz hat jede Maschine ihre eigene Steuerung die die SPS und m glicherweise auch die Bewegungsfunktionen des Moduls bernimmt Die individuellen Module k nnen getrennt voneinander in Betrieb genommen und gewartet werden Sie k nnen relativ unabh ngig voneinander skaliert werden Die notwendigen Interaktionen zwischen den Steuerungen werden ber Kommunikationsnetzwerke Feldbusse oder Ethernet koordiniert und ber geeignete Profile standardisiert Der zentralisierte Ansatz konzentriert die Steuerungsfunktionen aller Module in einer gemeinsamen Steuerung und nutzt die Rechenintelligenz der lokalen I O Gerate nur sehr wenig Interaktionen k nnen in der zentralen Steuerungseinheit viel direkter ausgef hrt werden da die Kommunikationswege viel k rzer sind Es treten keine Totzeiten auf und die Steuerungshardware wird viel besser ausgenutzt was die Gesamtkosten senkt Allerdings hat die zentralisierte Methode auch den Nachteil dass eine Modularisierung der Steuerungssoftware nicht automatisch notwendig ist Die M glichkeit auf alle Informationen anderer Programmteile in der zentralen Steuerung zugreifen zu k nnen bietet keinen Anreiz zum Aufbau der Steuerungssoftware aus Modulen die in anderen Anwendungen wiederverwendet werden k nnen Da es zwischen den Steu
222. i einem anderen anmelden k nnen um einen zyklischen Aufruf zu erhalten F r Prozessdaten stehen die vergleichbaren Schnittstellen TcloCyclic und ITcloCyclicCaller zur Verf gung um Ein und Ausg nge zu aktualisieren Mit Hilfe der ITcADI Schnittstelle kann auf die Datenbereiche eines Moduls zugegriffen werden Die ITcTask Schnittstelle die bei Modulen implementiert ist die einen Task eines Echtzeitsystems darstellen stellt Informationen bez glich der Zykluszeit der Priorit t und anderer Informationen zum Task zur Verf gung 26 Version 1 0 TC3 C BECKHOFF Module Der Modulmanager implementiert eine weitere wichtige Schnittstelle ITcComObjectServer die von allen Modulen im Verlauf der Initialisierung referenziert wird Mit Hilfe dieser Schnittstelle kann nach anderen Modulen ber deren Objekt ID gesucht werden und das dem Manager geh rende Modul beim Modulmanager an und abgemeldet werden ber diese Schnittstelle k nnen auch neue Module generiert werden vergleiche mit Class Factories Es wurden bereits eine ganze Reihe allgemeiner Schnittstellen definiert Allgemeine Schnittstellen haben den Vorteil dass deren Verwendung den Austausch und die Wiederverwertung von Modulen unterst tzt Nur dann wenn keine geeigneten allgemeinen Schnittstellen bestehen sollten private Schnittstellen definiert werden Class Factories F r die Erstellung von in C entwickelten Modulen werden sogenannte Class Factories verwe
223. i entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Beispiel TCCOM Object Archiv beschreibt das Wiederherstellen und Speichern des Zustands eines Objekts w hrend der Initialisierung und Deinitialisierung Der Zustand der Beispielklasse CModuleArchive entspricht dem Wert des Zahlers CModuleArchive m_counter Beim bergang von PREOP zu SAFEOP d h beim Aufruf von Methode CModuleArchive SetObjStatePS wird der Objektarchivserver ITComObjArchiveServer f r die Erstellung eines Objektarchivs zum Lesen benutzt auf das ber die Schnittstelle ITComArchiveOp zugegriffen wird Diese Schnittstelle stellt berladungen von operator gt gt zur Verf gung um im Archiv zu lesen Beim bergang von SAFEOP zu PREOP d h beim Aufruf von Methode CModuleArchive SetObjStateSP wird der TCOM Objektarchivserver f r die Erstellung eines Objektarchivs zum Schreiben benutzt auf das ber die Schnittstelle ITComArchiveOp zugegriffen wird Diese Schnittstelle stellt berladungen von operator lt lt zur Verf gung um im Archiv zu schreiben TC3 C Version 1 0 259 Anhang BECKHOFF 16 16 1 Anhang ADS Return Codes Fehlercode 0x000 gt 260 0x500 gt 260 0x700 gt 261 Ox1000 gt 263 Globale Fehlercod
224. ichnisses ab sofort nicht mehr w hlen oder umbenennen Behalten Sie die Standardeinstellungen bei gew hlte Option Create directory for solution LK 7 Recent Templates ner Framework 4 DI Sort by Default DI ER Sear ch Installed Templates p Installed Templates A 7 S Type TwinCAT Project Visual C TwinCAT XAE Project TwinCAT Project TwinCAT XAE SystemManager Configuration Other Project Types TwinCAT Project Database Test Projects Online Templates Name TwinCAT Projets Location c documents and settings sveng my documents visual studio 2010 Projects zl Browse Solution Create new solton Solution name a broie IV Create directory For solution I Add to source control mem RR gt Daraufhin zeigt der Visual Studio Solution Explorer das TwinCAT 3 Projekt TwinCAT Project4 Microsoft Yisual Studio File Edit Yiew Project Debug TwinCAT PLC Team era a9 em iay D Lal S a amp L lt Local gt Solution Explorer zs ax Es Solution TwinCAT Project4 1 project E TwinCAT Project4 SYSTEM LA NC Motion u PLC SAFETY C UO 9 2 TwinCAT 3 C Projekt erstellen Nach der Erstellung eines TwinCAT 3 Projekts den C Knoten ffnen und den folgenden Schritten folgen TC3 C Version 1 0 39 Schnellstart BECKHOFF 1 Klicken Sie mit der rechten Maustaste auf C und Add New Item
225. ie Daten bergabe an ein und von einem ADS Ger t Die AdsReadWriteCon gt 164 wird beim Eingang der Antwort aufgerufen Syntax int AdsReadWriteReq AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOffset ULONG cbReadLength ULONG cbWriteLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbReadLength Typ ULONG in enth lt die L nge in Bytes der zu lesenden Daten pData cbWriteLength Typ ULONG in enth lt die L nge in Bytes der zu schreibenden Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem die geschriebenen Daten sich befinden R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes gt 260 12 5 4 2 AdsReadWritelnd Die Methode AdsReadWritelnd gibt einen ADS Lese Schreibbefehl an um Daten zu einem ADS Ger t zu bermitteln Die AdsReadWriteRes gt 165 muss aufgerufen werden um das Ergebnis zu senden 162 Version 1 0 TC3 C BECKHOFF Programmierreferenz Syntax void AdsReadWrit
226. ie z B manuelle Datei bertragung usw Hier eine Liste der Dateien die in Zusammenhang mit C Modulen stehen TC3 C Version 1 0 117 Programmierreferenz BECKHOFF Datei Beschreibung Weitere Informationen Engineering XAE sin Visual Studio Solution Datei beherbergt TwinCAT und Nicht TwinCAT Projekte tsproj TwinCAT Projekt Sammlung aller verschachtelten TwinCAT Projekte wie TwinCAT C oder TwinCAT SPS Projekt _Config Ordner enth lt weitere Konfigurationsdateien Siehe Men Tools xti die zum TwinCAT Projekt geh ren Options TwinCAT XAE Environment File Settings _Deployment Ordner f r kompilierte TwinCAT C Treiber tmc TwinCAT Module Class Datei XML basiert Siehe TwinCAT Module Class Editor TMC gt 69 rc Resourcendatei Siehe Siehe Version Herstellerinformation gt 188 vcxproj Visual Studio C Projektdateien ClassFactory cpp h Class Factory f r diesen TwinCAT Treiber Ctrl cpp h Treiber hochladen und entfernen f r TwinCAT UM Plattform Driver cpp h Treiber hochladen und entfernen f r TwinCAT RT Plattform Interfaces cpp h Deklaration der TwinCAT COM Schnittstellenklassen W32 cpp def idl cpp h Eine C Header Datei pro TwinCAT Modul im Treiber Benutzercode hier einf gen Resource h Wird von rc Datei ben tigt TcPch cpp h Wird f r die Erstellung von vorkompiliertem Header verwendet
227. iert werden Optionale Eigenschaften Eine aus Name Wert und Beschreibung bestehende Tabelle zwecks Kommentierung des Datenbereichs Diese Information wird in den TMC und auch TMI Dateien bereitgestellt Diese Eigenschaften k nnen sowohl von TwinCAT Funktionen als auch von benutzerdefinierten Programmen verwendet werden 11 3 4 3 3 Symboleigenschaften Symbols Dialog f r die Bearbeitung der Symbole des Datenbereichs 4 SG TMC Data Types oO Edit the properties of the Symbol a fi Modules 4 EI CModule1 z lt 2 Implemented Interfaces General properties Ba Parameters 4 ay Data Areas Name bEnable 4 Inputs Specification Alias el 4 En Symbols m Value Ch data type m Status m Data A E BEmable Select INT CL D Outputs Description Normal Type a DN DataArea3 Symbols Type Information EN Data Pointers Namespace eee Guid 18071995 0000 0000 0000 000000000006 B Deployment Optional symbol settings Offset Bits x64 specific Size Bits x64 specific x64 specific Unit Comment E Create symbol E Hide sub items Optional properties Name Value Description TC3 C Version 1 0 105 Assistenten BECKHOFF Allgemeine Eigenschaften Name Name des Symbols Specification Datentyp des Symbols siehe Datentypeigenschaften gt 84 Datentyp auswahlen Select Datentyp auswahlen hierbei kann es sich um Basisdatentypen von TwinCAT oder um benutzerdefinierte Datentyp
228. ieselben Zustandsbezeichnungen sind wie unter EtherCAT Feldbus sind es doch nicht die gleichen Zust nde Wenn das TwinCAT Modul einen Feldbustreiber f r EtherCAT implementiert hat es zwei Zustandsmaschinen Modul und Feldbuszustandsmaschine die nacheinander durchlaufen werden Die Modulzustandsmaschine muss den Betriebszustand OP erreicht haben bevor die Feldbusmaschine berhaupt starten kann Parameter Module k nnen Parameter haben die w hrend der Initialisierung oder sp ter w hrend der Laufzeit OP Zustand gelesen oder geschrieben werden k nnen Jeder Parameter ist durch eine Parameter ID gekennzeichnet Die Eindeutigkeit der Parameter ID kann global eingeschr nkt global oder modulspezifisch sein Mehr hierzu im Abschnitt ID Management Neben der Parameter ID enth lt der Parameter die aktuellen Daten der Datentyp h ngt vom Parameter ab und ist f r die jeweilige Parameter ID eindeutig definiert Schnittstellen Schnittstellen bestehen aus einem definierten Satz an Methoden Funktionen die Module anbieten und ber die sie z B von anderen Modulen kontaktiert werden k nnen Schnittstellen sind hnlich wie Parameter durch eine eindeutige ID charakterisiert Ein Modul muss mindestens die ITComObject Schnittstelle unterst tzen kann aber daneben so viele Schnittstellen wie gew nscht beinhalten Der Nutzer einer Schnittstelle kann ber die Schnittstelle durch Aufruf eines Query Interface mit Angabe der entsprec
229. ieser Zeiger auch freigegeben wird ID Management Es wird eine ganze Reihe von IDs f r die Interaktion der Module untereinander verwendet Diese m ssen alle eindeutig sein F r COM wird demzufolge eine 128 Bit lange Zufallszahl GUID f r solche IDs verwendet mit der begr ndeten Annahme dass aufgrund des gro en zul ssigen Zahlenfelds sich zwei identische GUIDs einfach nicht ergeben werden Ungl cklicherweise ist die Handhabung solch langer Zahlen auch sehr kompliziert selbst f r moderne CPUs und ist insbesondere in der Echtzeitumgebung ung nstig Aus diesem Grund verwendet TcCOM eine Kombination aus GUIDs und 32 Bit langen Zahlen die deutlich effizienter gehandhabt werden k nnen aber es kann nicht l nger mit Zufallszahlen gearbeitet werden Um sicherzustellen dass die Zahlen eindeutig sind m ssen sie verwaltet werden Die Aufteilung in einen zentral verwalteten die oberen 16 Bits der Zahl und einen lokal verwalteten Bereich untere 16 Bits erm glichen eine flexible Handhabung der ID Nummern Jedem Entwickler oder Hersteller wird eine oder mehrere 16 Bit Nummer n zugewiesen die als HiWord f r seine eigenen Parameter IDs Objekt IDs usw verwendet werden Die unteren 16 Bit liegen innerhalb deren eigenen Verwaltungssph re und m ssen nur innerhalb deren eigenen Bereiche eindeutig sein TcCom verwendet eindeutige GUIDs f r class IDs InterfacelDs und categorylDs da diese lediglich im Verlauf der Initialisierung verwendet w
230. ifiziert und wird f r die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbLength Typ ULONG in enth lt die L nge in Bytes der zu lesenden Daten pData R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes gt 260 12 5 2 2 AdsReadind Die Methode AdsReadind erm glicht den Empfang von einer ADS Leseanforderung Die AdsReadRes gt 159 muss aufgerufen werden um das Ergebnis zu senden Syntax void AdsReadInd AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOffset ULONG cbLength Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen indexGroup Typ ULONG in enth lt die Index Gruppennummer 32bit unsigned des angeforderten ADS Dienstes indexOffset Typ ULONG in enth lt die Index Offsetnummer 32bit unsigned des angeforderten ADS Dienstes cbLength Typ ULONG in enth lt die Lange in Bytes der zu lesenden Daten pData 158 Version 1 0 TC3 C BECKHOFF Programmierreferenz Ruckgabewert Typ int ADS Return Cod
231. igenschaften sind so weit formalisiert dass eine allgemeine Verwendung untereinander und auch von au erhalb m glich ist Jedes Modul hat eine Modulbeschreibungsdatei XML Format die die Eigenschaften des Moduls beschreibt f r eine Konfiguration der Module und deren Beziehungen untereinander Wenn ein Modul in der TwinCAT Runtime instanziiert wird dann meldet es sich selber bei einer zentralen Systeminstanz dem Modulmanager an Dadurch wird es f r andere Module und auch f r allgemeine Tools erreichbar und parametrierbar Module k nnen unabh ngig voneinander kompiliert und demzufolge auch entwickelt getestet und aktualisiert werden Module k nnen sehr einfach konzipiert sein z B nur eine kleine Funktion wie einen Tiefpassfilter enthalten Sie k nnen aber auch intern sehr komplex sein und z B das gesamte Steuerungssystem einer Maschinenunterbaugruppe beinhalten Es gibt sehr viele Anwendungen f r Module alle Aufgaben eines Automatisierungssystems k nnen und werden in Module gepackt Demzufolge wird nicht unterschieden ob das Modul prim r die Grundfunktionen eines Automatisierungssystems darstellt wie Echtzeit Tasks Feldbus Treiber oder ein SPS Laufzeitsystem oder eher benutzer und anwendungsspezifische Algorithmen f r die Steuerung oder Regelung einer Maschineneinheit Eigenschaften der Module Die Abbildung unten zeigt ein gew hnliches TwinCAT Modul mit seinen wichtigsten Eigenschaften Die roten Bl cke definieren vorgesch
232. igniert sind Also gilt dies sowohl f r die x64 Erstellung als auch f r das Ver ffentlichen von Modulen weil diese Module die x64 Bin rcodes enthalten falls nicht deaktiviert wie hier gt 185 beschrieben Der Signaturprozess kann wie hier IK 21 beschrieben benutzerdefiniert sein Aktivierung Der TwinCAT C Treiber kann wie jedes TwinCAT Projekt mittels Activate Configuration aktiviert werden Daraufhin bittet ein Dialog darum TwinCAT in den RUN Modus zu setzen Das von IEC61131 basierten Systemen her bekannte Debuggen gt 60 in Echtzeit sowie das Setzen von bedingten Haltepunkten ist im Falle von TwinCAT C Modulen m glich Das Modul l uft unter Echtzeitbedingungen 36 Version 1 0 TC3 C BECKHOFF Schnellstart 9 Schnellstart Dieser Schnellstart zeigt wie man in kurzer Zeit mit dem TwinCAT C Modul Engineering vertraut werden kann Jeder Schritt der Erstellung eines im Echtzeitkontext laufenden Moduls ist ausf hrlich beschrieben 9 1 TwinCAT 3 Projekt erstellen Engineering Umgebung starten Visual Studio 1 Microsoft Visual Studio kann auf zwei verschiedene Arten gestartet werden e Option1 Rechtsklicken auf das TwinCAT 3 Symbol in der Taskleiste und Microsoft Visual Studio ausw hlen About TwinCAT iz Event Viewer ES TwinCAT Scope View oa TwinCAT XAE fe Realtime Settings Router System PES E e Option 2 Microsoft
233. inCAT Tasks ignoriert Beschreibung In einem Taskzyklus wird die Methode InputUpdate f r alle angemeldeten Modulinstanzen zuerst aufgerufen Deswegen muss diese Methode f r die Aktualisierung der Datenbereiche vom Typ Eingabequelle des Moduls verwendet werden 12 4 9 2 Methode ITcloCyclic OutputUpdate Die Methode OutputUpdate wird normalerweise von einem TwinCAT Task aufgerufen nachdem die Schnittstelle angemeldet wurde Syntax virtual HRESULT TCOMAPI OutputUpdate ITcTask ipTask ITcUnknown ipCaller PDWORD pdwStateOut NULL ULONG_PTR context 0 0 Parameter ipTask Typ ITcTask verweist auf den aktuellen Task Kontext ipCaller Typ ITcUnknown verweist auf die aufrufende Instanz pdwStateOut Typ DWORD out zuk nftigen Erweiterungen vorbehalten derzeit wird der R ckgabewert ignoriert context Typ ULONG_PTR Kontext beinhaltet den Wert der an die Methode ITcCyclicCaller AddloDriver bergeben wurde R ckgabewert Es wird empfohlen stets S_OK zur ckzugeben Derzeit wird der R ckgabewert von den TwinCAT Tasks ignoriert Beschreibung In einem Taskzyklus wird f r alle angemeldeten Modulinstanzen die Methode OutputUpdate aufgerufen Deswegen muss diese Methode f r die Aktualisierung der Datenbereiche vom Typ Eingabequelle des Moduls verwendet werden 12 4 10 Schnittstelle ITcloCyclicCaller Schnittstelle zum Anmelden oder Abmelden der ITcloCyclic Schnittstelle eines Moduls bei einem TwinCAT
234. ind finden Sie hier gt 62 TC3 C Version 1 0 61 Debuggen BECKHOFF Live Watch Bei dem Engineering und der Entwicklung von Maschinen ist es nicht immer ratsam das System Uber einen Haltepunkt anzuhalten weil dies sich auf das Verhalten auswirken wird Die TwinCAT SPS Projekte bieten eine online Ansicht und Handhabung der Variablen im RUN Zustand ohne die Echtzeit unterbrechen zu m ssen TwinCAT C Projekte bieten ein hnliches Verhalten f r C Code ber das Live Watch Fenster Das Live Watch Fenster kann ber Debug gt Windows gt TwinCAT Live Watch ge ffnet werden Um das Fenster zu ffnen zun chst eine Verbindung mit dem Echtzeitsystem herstellen dr cken der IwinCAT Debugger Schaltfl che woraufhin Visual Studio zur Debug Ansicht wechselt ansonsten k nnen keine Daten bereitgestellt werden jarna by Object ID Search p m_eTcomState a m_ePendState m_accessCnt m_Trace m_TraceLevelMax m_Parameter Value Data m_Outputs m_spCyclicCaller m_counter v Name Value Type Oid 01010010 m_counter i unsigned int Oid 01010010 m_Inputs Value unsigned long 2 Items 1 changed Das TwinCAT Live Watch Fenster ist in zwei Bereiche unterteilt Im oberen Bereich k nnen alle Member Variablen erkundet werden Mittels Doppelklick auf diesen werden sie dem unteren Bereich hinzugef gt wo dann der aktuelle Wert angezeigt wird Sie k nnen diese Werte mittels Klicken auf dem Wert im
235. ing C Method 1 project m WEEET a E TwinCAT Project PLC calling C Method 5 a a system TC License Real Time a f amp Tasks BE Task1 BE PlcTask 2 sie Routes Av E TcCOM Objects IF ipStateMachine lt gt 0 THEN MOTION SetState ipStateMachine SetState State a mrc ag 4 Di PLC calling statemachine a Bj PLC calling statemachine Project gt E External Types gt L References jj DUTs GVLs a 3 POUs a E FB_StateMachine FB Em FB_exit FB_init GetState SetState Start mM Stop Pr won 6 Variablendeklaration und Code Bereich der Methode Start implementieren Solution Explorer vax FB_StateMachine Start X FB_StateMachine SetState FB_StateMachine FB_init FB_StateMachind 1 METHOD Start HRESULT 9 Solution TwinCAT Project PLC calling C Method 1 project 4 gt TwinCAT Project PLC calling C Method a system a License Real Time a f Tasks E Task1 BE PicTask Ste Routes Ca E Tccom Objects 1 IF ipStateMachine lt gt 0 THEN MOTION 2 Start ipStateMachine Start 0 3 a Bac END_IF 4 Aj PLC calling statemachine a EjPLC calling statemachine Project gt ij External Types Sj References C3 DUTs E GVLs a By POUs a E FB_StateMachine FB im FB_init Ei GetState Fy SetState Ia Start a Stop MAIN PRG 242 Version 1 0 TC3 C BECKHOFF C C Beispiele 7 Variablendeklaration und Code Bereich der Methode Stop implementieren
236. ings ready for download Build 1 succeeded or up to date failed skipped TC3 C Version 1 0 245 C C Beispiele BECKHOFF Schritt 9 SPS FB mit C Instanz verkn pfen Jetzt wird man sich der Vorteile aller vorherigen Schritte bewusst Der SPS FB FB_StateMachine kann im Hinblick auf die Verkn pfung mit jeder Instanz des C Moduls StateMachine konfiguriert werden Das ist eine sehr flexible und leistungsstarke Methode um SPS und C Module auf der Maschine miteinander zu verbinden 1 Navigieren Sie zur Instanz des SPS Moduls im linken Baum und w hlen die Registerkarte Symbol initialization auf der rechten Seite gt Es werden alle Instanzen von FB_StateMachine aufgelistet in diesem Beispiel haben wir lediglich ei ne FB Instanz in POU MAIN definiert 2 Auswahl des Dropdownfelds Value und Auswahl der C Modulinstanz die mit der FB Instanz zu verkn pfen ist achine Real Time gt ff Tasks Sts Routes TcCOM Objects MOTION a rc 4 DI PLc calling statemachine a E PLC calling statemachine Project gt E External Types DUTs Eu GVLs a Du POUs b E FB_StateMachine FB E MAIN PRG Eu Visus Library Manager PLC calling statemachine tme gt eB PleTask PlcTask PLC calling statemachine Instance FE sarety Mr gt Das Ergebnis sieht dann so aus MOTION a Dec a DI PLC
237. inzuf gen RK Eine neue Schnittstelle hinzuf gen L scht den ausgew hlten Typ Verschiebt das ausgewahlte Element um eine Position D nach unten Verschiebt das ausgewahlte Element um eine Position T nach oben Sucht nicht verwendete Typen J E23 Byte Alignment ausw hlen 8 Byte CH Ausgew hlten Datentyp ausrichten EI Datenformat des ausgew hlten Datentyps zur cksetzen Kopieren a Einf gen Pe Datentypeigenschaften Name Benutzerdefinierte Name des Datentyps GUID Eindeutige ID des Datentyps Specification Festlegung des Datentyps Size Gr e des Datentyps wenn ausdr cklich spezifiziert Size X64 Unterschiedliche Gr e des Datentyps f r x64 Plattform TC3 C Version 1 0 73 Assistenten BECKHOFF 11 3 3 2 Datentypen hinzuf gen bearbeiten l schen Mit Hilfe des TwinCAT Module Class TMC Editors k nnen Datentypen die von TwinCAT C Modulen verwendet werden hinzugef gt bearbeitet und gel scht werden Dieser Artikel beschreibt e Schritt 1 Einen neuen Datentyp gt 74 in der TMC Datei erstellen e Schritt 2 TwinCAT TMC Code Generator starten gt 77 um C Code auf der Grundlage einer Modulbeschreibung in der TMC Datei zu generieren Die Datentypen verwenden gt 90 Schritt 1 Einen neuen Datentyp erzeugen 1 Nach dem Starten des TMC Editors den Knoten Data Types ausw hlen 2 Die Liste der Datentypen und Schnittstellen wird mit einem neuen Datentyp
238. ion C Users henningm BECKHOFF Documents Visual Studio 20 10 Projects TwinCAT Project70 Browse gt Der TwinCAT Modul Assistent gt 66 wird eingeblendet 40 Version 1 0 TC3 C BECKHOFF Schnellstart 3 Wahlen Sie aus den folgenden Vorlagen aus TwinCAT Module Class erzeugt eine neue TwinCAT Modulklasse TwinCAT Module Class with Cyclic Caller erzeugt eine neue TwinCAT Modulklasse die eine zyklisch aufrufende Schnittstelle implementiert TwinCAT Module Class with Cyclic lO erzeugt eine neue TwinCAT Modulklasse die die zyklisch aufrufende Schnittstelle implementiert und die einen Ein und Ausgangsdatenbereich aufweist IwinCAT Module Configuration Wizard erm glicht die Bearbeitung von bestehenden Modulen 4 W hlen Sie in diesem Falle TwinCAT Module Class with Cyclic I O aus und fahren Sie mit OK fort Ein Name ist nicht erforderlich und kann hier auch nicht eingegeben werden Add New Item Untitled1 21x Installed Templates Sort by Defaut zl se arch Installed Templates 2 a Ue Me Je g e Type TwinCAT C Module TwinCAT Module Class TwinCAT C Module Online Templates Creates a new TwinCAT module class which lc aa implements the cyclic caller interface and which si TwinCAT Module Class with ADS port TwinCAT C Module has an input and output data area s e el TwinCAT Module Class with Cyclic Caller TwinCAT C Module lars ai TwinCAT Module Class with C
239. ion of TwinCAT RT Ethernet Adapters Ethernet Adapters Update List JS Installed and ready to use devices bo S Local Area Connection 2 TwinCAT Intel PCI Ethemet Adapter Gigabit instal CS Compatible devices F ken ur Local Area Connection 4 TwinCAT Intel PCI Ethernet Adapter Gigabit 2 E Incompatible devices E Disabled devices Enable Disable I Show Bindings 8 M glicherweise m ssen Sie den Treiber mit Hilfe der Schaltfl chen installieren und aktivieren 9 TwinCAT muss wissen welche Ethernet Karte verwendet werden sollte ffnen Sie das Projekt in XAE und I O Devices Device 1 RT Ethernet Adapter ausw hlen 10 Die zweite Registerkarte Adapter ausw hlen und mit Search den Adapter ausw hlen 258 Version 1 0 TC3 C BECKHOFF C C Beispiele 11 TcEthernetSample_Obj1 muss konfiguriert werden Das Instanzenfenster ffnen und die folgenden Werte festlegen Parameter Init SenderlpAddress IP von in Schritt 2 konfiguriertem Netzwerkadapter Parameter Init TargetlpAddress IP von Ziel Host Schnittstellenzeiger EthernetAdapter muss auf I O Devices Device 1 RT Ethernet Adapter zeigen 15 21 Beispiel37 Daten archivieren Das Beispiel TCCOM Object Archiv beschreibt das Wiederherstellen und Speichern des Zustands eines Objekts w hrend der Initialisierung und Deinitialisierung Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Date
240. ip 04 09 2012 11 04 WinZip File Daraufhin stellt das TempContr Modul die bin ren Module in den Unterordnern RT und UM und die entsprechende TwinCAT Modul Class tmc Datei TempContr tmc zur Verf gung be gt Computer OS Win7 C TwinCAT3 CustomConfig Modules TempContr gt Organize v 4 J TwincAT3 Ji AdsApi Ji Boot WW Common32 WW Common64 B Components u Config 4 WW CustomConfig a J Modules 1 ContrSysPT2 4 M TempContr Ji TwinCAT RT 686 J TwinCAT UM 86 A WTController J WTModel DI TempContr zip WW Driver WW Functions J sdk Db System WW Target Include in library v Share with v a Burn New folder E Name TwinCAT RT x86 J TwinCAT UM 686 TempContr tmc TempContr_Modulelnfo xml TempContr_PlcOpenPOUs xml Date modified 04 09 2012 11 03 04 09 2012 11 03 08 03 2012 07 24 08 03 2012 07 24 08 03 2012 07 24 Type File folder File folder TMC File XML Document XML Document 2 Starten Sie die TwinCAT XAE Umgebung und erstellen ein TwinCAT 3 Projekt Size 62 KB 60 KB 11 KB TC3 C Version 1 0 33 Module Handhabung BECKHOFF 3 Klicken Sie mit der rechten Maustaste auf System gt TcCOM Objects und w hlen Add New Item aus File Edit View Project Debug TwinCAT PLC Tools Window Help 2 Ke gag kaas DN E a Fw 4 195 u 50000 By alas EHS
241. itled if cnt 52 7 Untitled Project I m_Trace Log tlWarning FNAMEA Level tlWarning cycle llu cnt b SZ External Dependenci g S ag lencie if cnt 53 0 peel I m_Trace Log tlInfo FNAMEA Level tlInfo cycle llu cnt 4 al Source Files Modulel cpp if cnt 548 TcPch cpp I m_Trace Log tlVerbose FNAMEA Level tlVerbose cycle llu cnt D Untitledi rc Untitled ClassFac gt S TMC Files TODO Replace the sample with your cyclic code m_counter b wa TwinCAT RT Files m_Outputs Value m_counter gt Sal TwinCAT UM Files gt E Untitledi_Objl CModul batan Wri 4 Bun a Devices u Mappings 100 Y amp 10Erors A 9Warnings 49 Messages Clear Description a 3 53 22 04 2015 16 03 47 042 ms TCOM Server 10 CModulel CycleUpdate Level tlError cycle 3570 55 22 04 2015 16 03 48 442 ms TCOM Server 10 CModulel CycleUpdate Level tlInfo cycle 3710 56 22 04 2015 16 03 49 142 ms TCOM Server 10 CModulel CycleUpdate Level tIVerbose cycle 3780 57 22 04 2015 16 03 51 342 ms TCOM Server 10 CModulel CycleUpdate Level tlAlways cycle 4000 3 58 22 04 2015 16 03 52 142 ms TCOM Server 10 CModulel CycleUpdate Level tlError cycle 4080 o 60 22 04 2015 16 03 53 742 ms TCOM Server 10 CModulel CycleUpdate Level into cycle 4240 61 22 04 2015 16 03 54 542 ms TCOM Server 10 CModulel CycleUpdate Level tIVerbose cycle 4320 SR c
242. itsbereich Registerkarte Context w hlen TC3 C 50 Version 1 0 BECKHOFF Schnellstart 8 Task f r den zuvor erstellten Kontext im Dropdown Taskmen w hlen W hlen Sie im Beispiel die Standard Task 1 TwinCAT Project8 Microsoft Yisual Studi oe Et d rn A 5 S wem e an EE es SG Sg EE ocal gt TwinCAT RT x86 Release jason a Solution Explorer nx x EHER Le Object Context Parameter init Data Area Interfaces Interface Pointer m Solution TwinCAT Project 1 project E E Twincat Projects Context fi ci system BB License Depend On Manual Config bs Real Time 7 Need Call From Sync Mapping f Tasks E Task 1 Data Areas Interfaces sig Routes 0 Inputs in TcCOM Objects 1 Outputs IA NC Motion PLC i SAFETY Data Pointer Interface Pointer EI C fed Untitled i 79 Untitled1 Project Untitled1_Obj1 CModule1 a Ei yo Result 00000000 02010010 Task 1 Mit Abschluss dieses Schritts ist der Interface Pointer als Cyclic Caller konfiguriert Die Konfiguration ist jetzt abgeschlossen 9 7 TwinCAT 3 C C Debugger aktivieren F r den C Debugger gibt es weitere Voraussetzungen Um nicht immer alle diese Abh ngigkeiten zu laden muss diese Funktion einmal vor der Aktivierung der Konfiguration aktiviert werden TC3 C Versi
243. izieren m chten Zuvor m ssen Sie einmal eine ADS Route zwischen Ihrem Ger t und dem fernen Ger t herstellen e AdsPort Geben Sie den AdsServerPort Ihres Kommunikationspartners ein Verwechseln Sie nicht den ADS Server Port der ausdr cklich Ihren eigenen Message Handler implementiert hat mit dem regul ren ADS Port zwecks Zugriff auf Symbole es gibt nichts zu tun wird automatisch zur Verf gung gestellt Finden Sie den zugewiesenen AdsPort 201 in diesem Beispiel heraus der AdsPort war 0x8235 dez 33333 Verbindung mit Kommunikationspartner herstellen Beim Klicken auf Connect wird die Methode TcAdsClient Connect zwecks Herstellung einer Verbindung mit dem konfigurierten Port aufgerufen si ADS Client UI ele ie NetID 127 0 0 1 1 1 Port Connect Start Read Stop Value 0 Overwnite f Reset Mit Hilfe der Schaltfl chen Start Lesen Stopp berschreiben Zur cksetzen werden ADS Meldungen an den ADS Server gesendet Die spezifischen indexGroup indexOffset Befehle wurden bereits in der ADS Schnittstelle des ADS Servers entworfen gt 201 Das Ergebnis des Klickens auf die Befehlsschaltfl chen ist auch in der Modulinstanz auf der Registerkarte Parameter Online zu sehen 206 Version 1 0 TC3 C BECKHOFF C C Beispiele PTCID Name Online 0x00000002 AdsPort 0x839d 0x00000003 Counter 2273 Sal Ee 127 0 0 1 1 1
244. l enth lt e das C Modul TcloTasklmageAccessDrv mit einer Instanz des Moduls TcloTasklMageAccessDrv_Obj1 e Ein Task Task1 mit einem Image 10 Eingangsvariablen Var1 Var10 und 10 Ausgangsvariablen Var11 Var20 e Sie sind verbunden Die Instanz wird von dem Task aufgerufen und die Instanz Nutzt das Image von Task TC3 C Version 1 0 199 C C Beispiele BECKHOFF Der C Code greift ber ein Datenimage auf die Werte zu das beim bergang SAFEOP to OP SO initialisiert wird In der zyklisch ausgef hrten Methode CycleUpdate wird durch Aufruf der Helfermethode CheckValue der Wert jeder Eingangsvariable berpr ft Ist er kleiner als 0 wird die entsprechende Ausgangsvariable auf 1 gesetzt ist er gr er als 0 wird sie auf 2 gesetzt und ist sie gleich 0 dann wird der Ausgang auf 3 gesetzt Nach der Aktivierung der Konfiguration k nnen Sie auf die Variablen ber den Solution Explorer zugreifen und diese setzen Doppelklicken Sie auf das Task1 Abbild des Systems um eine bersicht zu erhalten Die Eingangsvariablen k nnen ge ffnet und dann mit dem Online Karteireiter gesetzt werden 15 4 Beispiel03 C als ADS Server Dieser Artikel beschreibt Erstellung eines TC3 C Moduls das als ADS Server fungiert Der Server stellt eine ADS Schnittstelle zum Starten Stoppen Zur cksetzen einer Z hlervariablen im C Modul bereit Der Z hler steht als Modulausgang zur Verf
245. ld Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen R ckgabewert void 12 5 1 3 AdsReadDevicelnfoRes Die Methode AdsReadDevicelnfoRes sendet eine ADS Read Device Info AdsReadDevicelnfoCon bildet das Gegenst ck und wird anschlie end aufgerufen 156 Version 1 0 TC3 C BECKHOFF Programmierreferenz Syntax WNE AdsReadDeviceInfoRes AmsAddr amp rAddr ULONG invokeId ULONG nResult CHAR name ADS_FIXEDNAME SIZE AdsVersion version Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 name Typ char ADS_FIXEDNAMESIZE in enth lt den Namen des Ger ts version Typ AdsVersion in struct von Build int Revision Byte und Version Byte des Ger ts R ckgabewert Typ int Fehlercode Siehe AdsStatuscodes 12 5 1 4 AdsReadDevicelnfoCon Die Methode AdsReadDevicelnfoCon erm glicht den Empfang von einer ADS Lesebest tigung einer Ger teinformation Das e
246. ls der Methode einzusehen Untitled Services h ZA Modulel h a 32 TMC 4 Data Types 4 stSensorData a tg Sub Items Le bEnable Lg nTemperature Modulel cpp Untitledi tmc TMC Editor X Mm Edit the properties of the method General properties Lg eStatus Name callStart 4 o Mylnterface 4 Ze Methods BEC callStart Enable callEnd Include Return Value checkState 4 a Modules Choose return data type 4 fa CModule1 9 Implemented Interfaces Select HRESULT x Ba Parameters 4 IQ Data Areas Description Normal Type Inputs E Dy Symbols Type Information m Value Namespace m Status Guid 18071995 0000 0000 0000 000000000073 m Data D Outputs I Data Pointers Define the parameters ofthe method Interface Pointers ES Deployment Name Type Default Value RPC Direction RPC Lengthls Name Der Name der Methode RPC enable Freigabe von Remoteprozeduraufrufen von au erhalb dieser Methode e Include Return Value Freigabe der Weitergabe des R ckgabewerts der Methode Felder entsprechen denjenigen der Datentypeigenschaften gt 84 Parameter der Methode definieren e Name e Type Bekannt aus den Datentypeigenschaften gt 84 e Description Bekannt aus den Datentypeigenschaften gt 84 Default Value Standardwert dieses Parameters es sind nur Zahlen erlaubt RPC Direction Wie im Falle von SPS Funktionsbl cken kann jeder Parameter entweder IN OUT oder
247. lt Local gt og Solution TwinCAT Project2 1 project a TwinCAT Project2 tsp 4 SYSTEM e Real Time Gen E Tasks 03000011 loldleTask stg Routes 02000000 RTime TcCOM Objects Router E NC Motion TComServerTask D Add Fsicting Se Shift Alt A PLC SAFETY 4 Im eingeblendeten Dialog wird das neue TempContr Modul aufgelistet Erstellen Sie eine Modulinstanz indem Sie den Modulnamen ausw hlen und mit OK fortfahren 5 Die Instanz des TempContr Moduls erscheint nun unter TcCom Objects Die n chsten Schritte wie gehabt 6 Einen neuen Task erzeugen 7 Zu Context der Modulinstanz gehen und C Modulinstanz mit dem zuvor hinzugef gten Task 1 verkn pfen 34 Version 1 0 TC3 C BECKHOFF Module Handhabung 8 Konfiguration aktivieren oluti Untitled1 tmc Tmc Editor Modulel cpp Modulel h TwinCAT Project71 gt ZI Solution TwinCAT Project71 1 project Object Context Parameter nt Parameter Online Data Area Interfaces Block Diagram a Gi TwinCAT Project71 Object Id 01010010 P SYSTEM j a License Object Name Object1 TempContr Real Time Type Name TempContr E Tasks GUID 586808FF B3FD 4524 9F20 1A88F005944D 4 a ne Objects Class Id 586808FF B3FD 4524 9F20 1A88F005944D 4 a Objectl TempContr Class Factory TempContr a E Input Parent Id ExternalSet
248. lungskonfiguration als Beispiel TC3 C Version 1 0 185 How to BECKHOFF PublishDriverMod tmc TMC Editor X GA 2 3 TMC _ gt se Data Types Specify the deployment of the module 4 a Modules 4 fed CModule1 z Implemented Interfaces N Parameters b Eh Data Areas Ke 4 t Data dan Target Platform SourceFile eer TwinCAT RT x86 SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASS TwinCAT RT x86 SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASS Define the files which should be deployed EI u Edit the properties of the selected File Entry Target Platform TwinCAT RT x86 Source File SOLUTIONDEPLOYMENTPATH TwinCAT RT x86 CLASSFAC Destination File TC_DRIVERAUTOINSTALLPATH CLASSFACTORYNAME sy stellt ausschlie lich die TwinCAT RT x86 Build zur Verf gung elle l OS C TwinCAT 31 CustomConfig Modules PublishDriverMod gt v 4 Search PublishDni brary v Share with v Burn New folder SH Name 2 Date modified Type Size J TwinCAT RT 86 01 09 2014 12 33 File folder PublishDriverMod tmc 01 09 2014 12 33 TMC File 5KB 13 5 Clone Die Laufzeitdateien k nnen mittels Dateikopie von einer zur anderen Maschine bertragen werden wenn diese von derselben Plattform stammen und mit quivalenter Hardware Ausr stung verbunden sind Die folgenden Schritte beschreiben ein einfaches Verfahren zum bertragen einer
249. lways FENTERA Level tlAlways cycle llu cnt if cnt 510 0 m Trace Log tlError FENTERA Level tlError cycle llu if cnt 520 0 m Trace Log tlWarning FENTERA Level tlWarning cycle lld Irene gt 58 Ol W m Trace Log tlInfo FENTERA Level tlInfo cycle llu if cnt 540 0 m_Trace Log tlVerbose FENTERA Level tlVerbose cycle llu cnt TODO Replace the sample with your cyclic code m countert m_Outputs Value m_counter return Nr Verfolgungsebene verwenden Auf H he der Modulinstanz besteht die M glichkeit die Verfolgungsebene vorzukonfigurieren 1 Navigieren Sie zur Instanz des Moduls im Solution Baum 2 W hlen Sie den Karteireiter Parameter Init auf der rechten Seite 3 Achten Sie darauf dass sie Show Hidden Parameters aktivieren 4 W hlen Sie die Verfolgungsebene 5 Um alles zu testen w hlen Sie die h chste Ebene tIVerbose Solution Explorer 23 5 Sog o a R Search Solution Explorer Cito EI Solution TwinCAT Projectt 1 project d Er 0x03002103 TraceLevelMax Comment 4 a TwinCAT Projectl TeTracelevel Controls the a gt i system 0x00000001 Parameter ka MOTION EEE al PLC I Bu tIWarning dee data2 tlInfo F tlVerbose 4 C data3 i 4 E Untitled 4 Untitled1 Project b amp External Dependencies b Sd Header Files 4 SJ Source Files Modulel cpp TcPch cpp D Untitledt re
250. m Solution TwinCAT Project57 1 project a ZE TwinCAT Project57 a Zi SYSTEM Real Time ff Tasks sts Routes 3 TcCOM Objects E NC Motion E Pic SAFETY 4 Bed C a fe Untitledi a 7 Untitled Project a DUNO VUSLUTINZGLIUIIS Print Project Add gt Add New TwinCAT C Module i References GY Class Wizard Ctrl Shift X yo sch A View Class Diagram a gt CR Set as StartUp Project b Debug gt Start new instance Add Solution to Source Control SE Step Into new instance Cut Ctrl X Membervariablen berwachen ohne Haltepunkte Jetzt steht der normale Debugging Mechanismus von Visual Studio zur Verf gung mit Haltepunkt setzen schrittweise Ausf hrung usw Dessen Verwendung h ngt vom zu berwachenden Prozess ab Wenn TwinCAT auf einer realen Maschine mit Achsenbewegungen l uft wird der Nutzer nur zur berwachung von Variablen wahrscheinlich keinen Haltepunkt setzen wollen Bei Erreichen eines Haltepunktes w rde die Ausf hrung des Tasks angehalten und je nach Konfiguration die Achse sofort stoppen oder was m glicherweise noch schlimmer w re sich unkontrolliert weiterbewegen eine sehr ungl ckliche Situation TwinCAT 3 bietet die M glichkeit Prozessvariablen ohne das Setzen von Haltepunkten zu berwachen 56 Version 1 0 TC3 C BECKHOFF Schnellstart 10 W hlen Sie Debug gt Windows gt TwinCAT Live Watch f r eine a
251. m aufgef hrten Modul und w hlen die Registerkarte Interfaces auf der rechten Seite Die neue Schnittstelle IStateMachine ist aufgelistet Gut gemacht og Solution TwinCAT Project PLC calling a D TwinCAT Project PLC calling C Met a system License Real Time gt Di Tasks ITComObject ITcCyclic ITcADI stg Routes TcCOM Objects MOTION a rc E PLC calling statemachine A SAFETY 4 sl C a StateMachineDrv ITcWatchSource IStateMachine 9FFAC3FE 4AGB 4A97 8F97 1E5B15CB1BB5 15 9 2 Beispiel11 SPS um eine Methode aufzurufen die von einem anderen Modul angeboten wird hier TwinCAT 3 C Modul Dieser Artikel beschreibt wie eine SPS eine Methode die von einem anderen Modul bereitgestellt wird aufrufen kann hier das zuvor definierte C Modul e Schritt 1 Verf gbare Schnittstellen berpr fen gt 232 e Schritt 2 Ein neues SPS Projekt erstellen gt 232 e Schritt 3 Eine neue FB StateMachine hinzuf gen gt 233 die als der C Modulmethoden aufrufender Proxy fungiert e Schritt 4 Funktionsbaustein Schnittstelle s ubern gt 235 Schritt 5 FB Schnittstellen init und FB exit hinzuf gen gt 237 Schritt 6 FB Methoden implementieren 239 Schritt 7 FB StateMachine in der SPS aufrufen gt 243 Schritt 8 SPS Code kompilieren gt 244 Schritt 9 SPS FB mit C Instanz verkn pfen gt 246 TC3 C Version 1
252. m sie verwendet wurde nie mehr ge ndert werden darf Dank der ID k nnen die verschiedenen Module feststellen ob sie mit anderen Modulen zusammenarbeiten k nnen selbst wenn Jahre zwischen den Entwicklungen der verschiedenen Module liegen TcCOM selber definiert bereits eine ganze Reihe an Schnittstellen die in manchen F llen vorgeschrieben z B ITComObject aber in den meisten F llen optional sind Viele Schnittstellen machen nur in bestimmten Anwendungsbereichen Sinn Andere Schnittstellen sind derma en allgemein dass sie h ufig wiederverwendet werden k nnen Private Schnittstellen sind ebenfalls erlaubt sodass z B zwei Module eines einzelnen Herstellers in der Lage sind miteinander in Verbindung zu treten Alle Schnittstellen werden von der grundlegenden Schnittstelle ITcUnknown abgeleitet die wie die unbekannte Schnittstelle von COM die grundlegenden Dienste zur Abfrage von anderen Schnittstellen des Moduls TcQueryInterface und zur Steuerung der Lebensdauer des Moduls TcAddRef und TcRelease bereitstellt Die ITComObject Schnittstelle die von jedem Modul implementiert sein muss enth lt Methoden um auf den Namen die Objekt ID die Objekt ID des Parent die Parameter und die Zustandsmaschine des Moduls zuzugreifen Zu den allgemeinen Schnittstellen die von vielen Modulen verwendet werden geh ren ITcCyclic f r zyklischen Aufruf eines Moduls entsprechend der ITcCyclicCaller Schnittstelle mit Hilfe derer Module sich be
253. me speichert den Objektnamen im Puffer mit der gegebenen L nge Syntax HRESULT TcGetObjectName CHAR objName ULONG nameLen TC3 C Version 1 0 125 Programmierreferenz BECKHOFF Parameter objName Typ CHAR der zu setzende Name nameLen Typ ULONG die maximale zu schreibende Lange Ruckgabewert Informiert Uber Erfolg der Namen Abfrage Beschreibung Die Methode TcGetObjectName speichert den Objektnamen im Puffer mit der gegebenen Lange Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 5 Methode ITcComObject TcSetObjectName Die Methode TcSetObjectName setzt den Objekt Namen des Objekts auf gegebenen CHAR Syntax HRESULT TcSetObjectName CHAR objName Parameter objName Typ CHAR der zu setzende Name des Objekts R ckgabewert Informiert ber Erfolg der Namen Abfrage Beschreibung Die Methode TcSetObjectName setzt den Objekt Namen des Objekts auf gegebenen CHAR Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 6 Methode ITcComObject TcSetObjState Die Methode TcSetObjState initialisiert einen bergang zum gegebenen Zustand Syntax HRESULT TcSetObjState TCOM STATE state ITComObjectServer ipSrv PTComInitDataHdr pInitData Parameter state Typ TCOM_STATE stellt den neuen Zustand dar ipSrv Typ ITComObjectServer handhabt des Objekts 126 Version 1 0 TC3 C BECKHOFF Programmierreferenz plnitData Typ PTCominitDa
254. mehreren Fenstern ge ffnet 112 Version 1 0 TC3 C BECKHOFF Assistenten 11 4 1 Objekt solution Explorer TwinCAT SampleCPPProject X Modulel cpp Modulel h gl 2 a Sg Object Context Parameter Init Data Area Interfaces Interface Pointer Search Solution Explorer Ctrl p i Object Id 001010010 E Copy TMI to Target A Solution TwinCAT SampleCPPProject 1 project y 4 D TwinCAT SampleCPPProject Pose ere instancesample_Obj1 CMe gt g system Type Name CModule1 ka MOTION PLC GUID BE41FA98 3280 4378 986F F77FA36FD7EO SAFETY Class Id BE41FA98 3280 4378 986F F77FA36FD7EO 4 C Class Factory instancesample 4 ed instancesample 4 instancesample Project KZ External Dependencies Init Sequence so v u Header Files bal Source Files S TMC Files Eg TwinCAT RT Files S TwinCAT UM Files 4 instancesample_Objl CModulel b Dh Inputs b WW Outputs gt avo Parent Id 000000000 Vvvv vv sg e Object Id Die Objekt ID die f r die Identifizierung dieser Instanz im TwinCAT System herangezogen wird e Object Name Name des Objekts der f r die Darstellung der Instanz im Solution Explorer Baum verwendet wird Type Name Typinformation Klassenname der Instanz e GUID Modulklassen GUID Class Id Klassen ID der Implementierungsklasse normalerweise sind GUID und Classld identisch e Class Factory Verweist auf den Treiber der die Class Factory bereitstellt welche f
255. mit dem Resource Editor um diese Eigenschaften festzulegen VersionVendorinfo rc X v VersionVendorlnfo r d States Version X D VersionVendorinfo rc Key Value D Version FILEVERSION 1 2 3 4 PRODUCTVERSION 1 0 0 0 FILEFLAGSMASK SH FILEFLAGS OOL FILEOS Ox4L FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN Block Header English United States 040904b0 CompanyName Beckhoff Test Company FileDescription VersionVendorInfo TwinCAT C Driver FileVersion 1 2 3 4 InternalName VersionVendorlnfo LegalCopyright TODO Add legal copyright OriginalFilename VersionVendorlnfo sys ProductName Beckhoff Customer Project ProductVersion 13 11 Modul l schen Ein TwinCAT C Modul kann mit Hilfe des TMC Editors aus einem C Projekt gel scht werden 1 Rechtsklicken Sie auf das Modul hier CModule2 TC3 C Version 1 0 189 How to BECKHOFF 2 Delete ausw hlen 4 WG TMC Data Types sd Shows the properties of the 4 Ki Modules b Ea CModule1 EN CMadula General properties Add new data area CModule2 be65338d f349 4 Add new data pointer Add new interface pointer _ Choose imz so el Delete u Add new parameter 3 L schung ber TMC best tigen TMC Editor at 1 Delete TwinCAT module class Module2 from TMC file WS Implementation files Module bh and Module2 cpp remain in the project 4 Beachten Sie dass die cpp und h Dateien erhalt
256. mpfangende Modul muss diese Methode bereitstellen Vorher muss das Pendant AdsReadDevicelnfoReq gt 156 aufgerufen werden Syntax void AdsReadDeviceInfoCon AmsAddr amp rAddr ULONG invokeId ULONG nResult CHAR name ADS FIXEDNAMESIZE AdsVersion version Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 name Typ char ADS_FIXEDNAMESIZE in enth lt den Namen des Ger ts version Typ AdsVersion in struct von Build int Revision Byte und Version Byte des Ger ts R ckgabewert void TC3 C Version 1 0 157 Programmierreferenz BECKHOFF 12 5 2 AdsRead 12 5 2 1 AdsReadReq Die Methode AdsReadReq erm glicht das Senden eines ADS Lesebefehls f r die Daten bertragung von einem ADS Ger t Beim Eingang der Antwort wird AdsReadCon gt 159 aufgerufen Syntax int AdsReadReq AmsAddr amp rAddr ULONG invokeld ULONG indexGroup ULONG indexOffset ULONG cbLength Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spez
257. n System configuration Knoten ffnen und folgende Schritte ausf hren wenn bereits ein Task existiert kann dieser auf Wunsch verwendet werden 48 Version 1 0 TC3 C BECKHOFF Schnellstart 1 System ffnen Rechtsklick auf Tasks und Add New Item ausw hlen TwinCAT Project8 Microsoft Yisual Studio File Edit View Project Build Debug TwinCAT PLC Team Data ig E2 GI er _ lt tocal gt H cl Solution Explorer m Solution TwinCAT Project8 1 project El 8 twincar Projects I system Ei License Real Time f Tasks GEN anonn geen TcCON iii Add Existing Item Shift Alt 4 AJ NC Motion PLC SAFETY C yo EZE 2 Eindeutigen Namen eingeben oder Standard beibehalten und mit OK fortfahren GE HINWEIS Standardm ig wird kein Abbild erzeugt optional kann das Pr fk stchen With image aktiviert werden um ein logisches Ein Ausgabeprozessabbild zu erhalten In diesem Beispiel wird die I O Abbildschnittstelle durch eine C Modulinstanz bereitgestellt so dass f r das Ausl sen der Ausf hrung der C Modulinstanz kein Abbild n tig ist i x Comment Cancel 7 With Image Der neue Task mit Namen Task 1 ffnet einen Konfigurationsdialog 3 Die wichtigsten Parameter sind Auto start und Priority Auto start muss aktiviert werden um einen zyklisch auszuf hrenden Task automatisch zu starten
258. n von Drittanbietern gt 191 Speicherplatz f r dynamische Allozierung mittels des new Operators in Laufzeitkontext ist aufgrund der Gr e vom Router Speicher begrenzt kann im Verlauf des Engineerings konfiguriert werden e Untermenge der C Laufzeit wird unterst tzt e C Ausnahmen werden nicht unterst tzt e Laufzeit Typinformation RTTI Runtime type Information wird nicht unterst tzt siehe unten gt 119 e Untermenge von STL wird unterst tzt siehe STL Container gt 175 e Unterst tzung f r Funktionen von math h durch TwinCAT Implementierung siehe Mathematische Funktionen gt 173 Normalerweise von Win32 API verwendete TwinCAT Funktionalit t Die originale Win32 API ist nicht im Windows Kernel Modus verf gbar Aus diesem Grunde ist hier eine Liste der normalerweise verwendeten Funktionalit ten von Win32 und was stattdessen in TwinCAT verwendet werden kann Win32API TwinCAT Funktionalit t WinSock TF6311 TCP UDP Echtzeit Message Boxen Tracing 176 Datei I O Sieh Schnittstelle ITcFileAccess gt 133 Schnittstelle ITcFileAccessAsync 141 und Beispiel19 Synchroner Dateizugriff gt 248 Beispiel20 FilelO Write gt 249 Beispiel20a FilelO Cyclic Read Write gt 250 Synchronisation Siehe Beispiellla Modulkommunikation C Modul f hrt eine Methode in C Modul an gt 247 Visual C CRT Siehe RtIRO h RTTI dynamic_cast Funktion in TwinCAT
259. n Explorer MEA Lntitiedi tmc TMC Editor o X 4 o gn AE Search Solution Explorer Ctrl P 488 TMC Pr z S a gt Data Types ef Add remove and reorder Methods DI Solution TwinCAT Projectl 1 project i S 4 o StateMachine 4 Gi TwinCAT Project a Methods EEn gt ad SYSTEM setState MOTION Start Retum Type Name J Pic Stop HRESULT setState A SAFETY 4 EC Modules HRESULT Start a face 4 El CModulet HRESULT Stop Implemented Interfaces TwinCAT TMC Code Generator b D TwinCAT Publish Modules gt fl Sc z aM key Build E Rebuild gt gg Tw Clean gt Sl Tw Project Only gt H yo al Scope to This EI New Solution Explorer View gt Sie werden die Parameterdeklaration in der Header Datei Module1 h des Moduls sehen lt AutoGeneratedContent id Members gt TcTraceLevel m_TraceLevelMax bool m_bEnable ModulelInputs m_Inputs ModulelOutputs m_Outputs ModulelDataArea3 m_DataArea3 ITcCyclicCallerInfoPtr m_spCyclicCaller lt AutoGeneratedContent gt 96 Version 1 0 TC3 C BECKHOFF Assistenten Die Implementierung des neuen Parameters finden Sie in den get und set Methoden der Modulklas se module1 cpp IMPLEMENT_ITCOMOBJECT CModule1 IMPLEMENT_ITCOMOBJECT_SETSTATE_LOCKOP2 CModule1 IMPLEMENT_ITCADI CModule1 IMPLEMENT_ITCWATCHSOURCE CModule1 Elddd dd dd dd dd dd dd dd dd dd dd dd dd dd AAA AAA AAA AA AAA AAA AAA TI 147 Set parame
260. n Parameter klicken in das Bearbeitungsfeld gehen und den Namen in State ndern 19 Nachdem Start Stop und SetState definiert sind eine weitere Methode definieren 20 In GetState umbenennen 21 Einen Parameter hinzuf gen und ihn pState nennen der so konzipiert ist um sp ter ein Zeiger zu werden 22 Normal Type zu Is Pointer ndern 4 TMC a gt Data Types 4 o StateMachine M Edit the properties of the method a Methods Start General properties Stop SetState Name GetState GetState a f Modules Define the data type 4 El CStateMachineModule 2 Implemented Interfaces Select HRESULT PS d esoe nmn erte b LC Data Areas s i Data Pointers Type Information b Interface Pointers Name HRESULT al Deployment Namespace Guid 18071995 0000 0000 0000 000000000019 Define the parameters of the method Ae LI Name Type Description Default Value Soe Cs 13 224 Version 1 0 TC3 C BECKHOFF C C Beispiele 23 Daraufhin erhalten wir eine Liste aller Methoden mit den nach oben nach unten Schaltfl chen kann die Reihenfolge der Methoden ver ndert werden 4 TMC o a gt Data Types 4 StateMachine ef Add remove and reorder Methods gt Ze Methods Du 4 t 4 Ki Modules 4 EI CStateMachineModule Retum Type Name lt 2 Implemented Interfaces HRESULT Stat e Parameters HRESULT Stop b Eh Data Areas HRESULT SetState D
261. n der TMC Datei erstellen 94 Version 1 0 TC3 C BECKHOFF Assistenten e Schritt 2 Starten Sie den TwinCAT TMC Code Generator gt 96 um Code f r die Modulbeschreibung in der TMC Datei zu erzeugen e Schritt 3 berg nge der Zustandsmaschine gt 97 Schritt 1 Neuen Parameter erzeugen 1 Nach dem Starten des TMC Editors das Ziel Parameters ausw hlen 2 Die Liste der Parameter wird mittels Klicken auf die Schaltfl che Add a new parameter um einen neuen Parameter erweitert Daraufhin wird ein neuer Parameter als neuer Eintrag aufgef hrt Data Types Add remove and reorder Parameters a fi Modules 4 Ei CModulet sByte ME AB rt EH Name Parameter ID Specification Size Size X64 Context Disable Code Generation oe ix SS Parameter 4 m Data Areas a CH Inputs 4 Symbols m Value m Status m Data Bh Outputs a Dh DataArea3 03002103 Alias 1 3 W hlen Sie Parameter im linken Baum oder doppelklicken Sie auf den rot markierten Parameter3 oder w hlen Sie den Knoten im Baum um Details zum neuen Parameter zu erhalten Untitledi tmc TMC Editor X gt GA a BG TMC e b Data Types Edit the properties of the parameter a fi Modules 4 Ei CModulet z9 Implemented Interfaces General properties a Ba Parameters 5 TracelevelMax Name Parameter Parameter Specification Struct v Edit Struct a Mh Data Areas a EN Input
262. nCAT Project PLC calling C Method L 1 METHOD FB_init BOOL 2 Solution TwinCAT Project PLC calling C Method 1 project I ini a e Ap get 2 D TwincAt Project PLC calling C Method 3 bInitRetains BOOL if TRUE the retain variables are initialized varm start cold start a g system 4 bInCopyCode BOOL if TRUE the instance aftervards gets moved into the copy code online change B License 7 Real Time a vR a f Tasks a iResult DINT BE Task1 9 ipObjServer ITComObjectServer PicTask Ai m D Sis Routes av E TcCOM Objects 1 IF ipStateMachine 0 THEN HUN 2 iResult FW_ObjMgr_GetObjectServer _AppInfo 0bjId ADR ipObjServer a SES a a IF ipObjServer lt gt 0 AND iResult 0 THEN DI PLc calling statemachine k IF E IID_IStateMachine ADR ipStateMachine 0 THEN a EjPLC calling statemachine Project S ELSE E E External Types 7 FB_init FALSE gt E References 3 END IF DUTs 3 ipObjServer TcRelease GVLs 10 ELSE a amp POUs 11 FB_init FALSE a E FB_StateMachine FB 12 END_IF E FBLexit 13 ENDIF a FB_init 14 Ia GetState Ia SetState Ia Start a Stop E MAIN PRG TC3 C Version 1 0 241 C C Beispiele BECKHOFF 5 Variablendeklaration und Code Bereich der Methode SetState implementieren Solution Explorer FB_StateMachine SetState X FB_StateMachine FB_init FB_StateMachine GetState ER Gg METHOD SetState HRESULT 1 lod Solution TwinCAT Project PLC call
263. nCAT3 SDK _progucta TwincaT RT x86 Debug imtitledi Umticledi header file lt lt C TwinCAT3 SDK _products TwinCaT RT x86 Debug Untitledi UntitlediVersion h gt gt is up to date CiCompile TcPch cpp C ewineat3 sdk include tcdef h 102 fatal error C1063 Cannot open include file neddk h No such file or directory Build FAILED Time Elapsed 00 00 02 57 Build 0 succeeded 1 failed 0 up to date 0 skipped sseeerers Bei Auftreten dieser Fehlermeldung pr fen Sie nach WinDDK Installationshandbuch gt 13 e Vergewissern dass WinDDK installiert ist e Umgebungsvariable WinDDK7 und ihr konfigurierter Wert muss existieren siehe Beschreibung in oben erw hntem Dokument Der Wert muss dem Pfad entsprechen wo WinDDK installiert ist einschlie lich des ersten Unterordners Nach einer nderung dieses Werts muss der Computer neu gestartet werden 14 2 Build The target does not exist in the project Insbesondere bei der bertragung einer TwinCAT Solution von einer Maschine auf die andere gibt Visual Studio m glicherweise Fehlermeldungen aus gem derer alle Ziele wie Build Rebuild Clean nicht im Projekt existieren 31 error MSB4057 The target Rebuild does not exist in the project 2 23 02 2015 08 39 08 279 ms TCatSysManager 33728 Project Measurement build for ys g J platform TwinCAT RT x86 failed Bitte die Konfiguration von platform toolset des C
264. ndere M glichkeit Daten zu berwachen File Edit View Project Build Debug TwinCAT PLC Team Data Tools Architecture Test Analyze Window Help Poly Gd 8 3 Wed BEE gt C Breakpoints Ctri Alt B Faas ead ibua gt Se PLC gt E Output ES lt Local gt BEI JE TR Process Login BA Watch Solution Explorer Boao GA Watch TwinCAT Live Watch 4x gt Start Watch B04 S Em gt A Extemal Dep m Stop BA Watcha a Gr Header Filed Logout E Watch all Forces 01010010 Untitled CObject1 0x860d3 40 Untitled _Objl h Objectt i Force values to all online applications Breakpoints 9 ee E Unforce all values on all online applications El call Stack a S Write values to all online applications a Parallel Tasks Ctrl Shift D K vi Untitled Single Cycle A Parallel Stacks Ctrl Shift D S in Untitled Reset warm Watch 7 h Untitled Reset cold EI Autos Ctri Alt V A H m DH a Source Files goe PETE Tapes ei Object1 gt Continue F5 a Locals Ctrl Alt V L ye i Ee CtiteAlteBreak EI Immediate EE CObject1 0x860D3F40 m_counter N A unsigned i GA Untitled 4 Stop Debugging Shift F5 oC Call Stack Ctrl Alt C C Untitled WZ Start Performance Analysis Alt F2 Threads Ch ARH gt MTMCFies BE Detach All gt Gal Win32 Files a Modules Ctrl Alt U gt XP Files pamine IntelliTrace Events
265. ndet e Wenn die Zustandsmaschine nicht ausgef hrt werden soll dann signalisiert das m_bRun Flag dass die Codeausf hrung der internen Zustandsmaschine zu verlassen ist e Bei Zustand 1 muss der Z hler inkrementiert werden e Bei Zustand 2 muss der Z hler dekrementiert werden e Der sich daraus ergebende Z hlwert wird Value zugewiesen die Membervariable des logischen Ausgangs des Datenbereichs ist Dieser kann sp ter der physikalischen IO Ebene oder anderen Datenbereichen von anderen Modulen zugeordnet werden 228 Version 1 0 TC3 C BECKHOFF C C Beispiele Solution Explorer x StateMachineModule h ource Control Explorer lalod SEI lod Solution TwinCAT Project PLC calling C Method 1 d A Gi TwinCAT Project PLC calling C Method gt g system lt AutoGeneratedContent id ImplementationOf_ITcCyclic gt MOTION EIHRESULT CStateMachineModule CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG context 7 gt Bric HRESULT hr S_OK sarety 8 4 fl c TODO Replace the sample with your cyclic code a El StateMachineDrv if m_bRun 4 3 StateMachineDrv Project return hr b gil External Dependencies gt Header Files switch m_State a Source Files i 5 EB StateMachineDrv re ie i C StateMachineDrvClassFactory c moans ete ER DH break StateMachineModule cpp C TePch cpp case 2 a amp TMCFiles m_counter StateMachineDrv tme break b i TwinCAT RT Files Gi Twin
266. ndet Alle Module die in einem Compiler Kontext erstellt wurden besitzen eine gemeinsame Class Factory Die Class Factory meldet sich einmal beim Modulmanager an und bietet ihre Dienste f r die Erstellung bestimmter Modulklassen an Die Modulklassen sind durch die eindeutige Klassen ID des Moduls gekennzeichnet Wenn der Modulmanager ein neues Modul anfordert auf Grundlage der Initialisierungsdaten des Konfigurators oder durch andere Module w hrend der Laufzeit w hlt das Modul die richtige Class Factory auf Grundlage der Klassen ID aus und veranlasst die Erzeugung des Moduls ber seine ITcClassFactory Schnittstelle Modul Lebensdauer Auf hnliche Weise wie im Falle von COM wird die Lebensdauer eines Moduls ber einen Verweisz hler bestimmt Jedes Mal wenn eine Schnittstelle eines Moduls abgefragt wird wird der Verweisz hler inkrementiert Er wird wieder dekrementiert wenn die Schnittstelle freigegeben wird Eine Schnittstelle wird auch bei der Anmeldung eines Moduls beim Modulmanager abgefragt die ITComObject Schnittstelle sodass der Verweisz hler zumindest auf eins steht Bei der Abmeldung wird er erneut dekrementiert Wenn der Z hler den Wert 0 erreicht l scht das Modul sich selbst automatisch normalerweise nach der Abmeldung beim Modulmanager Wenn aber bereits ein anderes Modul einen Verweis h lt einen Schnittstellenzeiger besitzt dann besteht das Modul weiter und der Schnittstellenzeiger bleibt so lange g ltig bis d
267. ngen an der Schnittstelle z B die Parameter einer Methode werden sp ter erweitert wird benutzerdefinierter Code nie gel scht Stattdessen wird die bestehende Methode lediglich mit einem Kommentar versehen wenn der TMC Code Generator die Methoden nicht mappen kann 82 Version 1 0 TC3 C BECKHOFF Assistenten lt AutoGeneratedContent id ImplementationOf_IStateMachine gt HRESULT CModulel SetState SHORT SetState bool bRun d HRESULT hr E_NOTIMPL return hr K 3 lt AutoGeneratedContent gt lt AutoGeneratedContent id Obsolete_ImplementationOf_IStateMachine gt HRESULT CModulel SetState SHORT SetState K HRESULT hr E_NOTIMPL ti custom code nState SetState 11 return hr W 1 lt AutoGeneratedContenkt gt Sehen Sie dazu auch Implementierte Schnittstellen gt 93 TC3 C Version 1 0 83 Assistenten BECKHOFF 11 3 3 4 Datentypeigenschaften Die Eigenschaften von Datentypen bearbeiten Allgemeine Eigenschaften Name Benutzerdefinierte Name des Datentyps 84 Version 1 0 TC3 C BECKHOFF Assistenten Namenskonflikt Bitte verwenden Sie keine der SPS vorbehaltenen Schl sselw rter als Namen R Wenn der Treiber im Verbund mit einem SPS Modul verwendet wird kann es zu Namens Hinweis kollisionen kommen Namespace Benutzerdefinierte Namensraum des Datentyps Beachten Sie dass dieser ni
268. nition im szDir Parameter 12 4 5 14 Methode ITcFileAccess RmDir Ein Verzeichnis aus dem Dateisystem entfernen Syntax virtual HRESULT TCOMAPI RmDir PCCH szDir Parameter szDir Typ PCCH in zu l schendes Verzeichnis R ckgabewert Typ HRESULT Wenn Verzeichnis gel scht werden konnte wird S_OK zur ckgegeben Besonders interessante Fehlercodes e ADS_E_ TIMEOUT wenn Zeit berschreitung 5 Sekunden abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich Beschreibung Diese Methode l scht ein Verzeichnis entsprechend der Definition im szDir Parameter 12 4 6 Schnittstelle ITcFileAccessAsync Asynchroner Zugriff auf Dateioperationen Diese Schnittstelle erweitert ITcFileAccess gt 133 Syntax TCOM DECL INTERFACE CO4AC244 C126 466E 982E 93EC571F2277 ITcFileAccessAsync struct spec novtable ITcFileAccessAsync public ITcFileAccess Ben tigtes include TcFileAccessInterfaces h Elek Methoden Symbol Name Beschreibung H berpr fen gt 142 Zustand der Dateioperation abfragen TC3 C Version 1 0 141 Programmierreferenz BECKHOFF Schnittstellenparameter Sym Name Beschreibung bol a PID_TcFileAccessAsyncSegmentSize Gr e der an System Service bergebenen Segmente a PID_TcFileAccessAsyncTimeoutMs Schlie t eine Datei e PID_TcFileAccessAsyncNetld Str Netld des zu kontaktierenden System Service Anmerkungen Schni
269. nnnn nn 69 EECH bersicht a een See rasen 71 11 3 2 Grundlegende Informationen u su 2 us nase nen 71 11 3 3 Datentypen AH nee ee 72 ENT 90 TC3 C Version 1 0 3 Inhaltsverzeichnis BECKHOFF 11 4 TwinCAT Module Instance Confourator cececeee etter eee eeneeeeeeennieeeeeeenieeeeeeniaeeeeeeenneeeeeeeaes 112 NEAT Objekt en era geb eege 113 MAZ e 114 114 3 Parameter Nil 0 ea nn nern ara era erre hen FE 114 AA Data Aea EE 115 H El UE EE 115 11 4 6 Gchnttetellenzeger eee cee tre nee reenter erent eee eenaaeeeseeeneeeeseenaeeeeeeeaees 115 E REENEN EE 116 12 PrOGramiMilerretere nnd vdecendesecatecdecectueeteevecetesececueasecueveslivcsdevacucsexsesstey ecvasuecleey dau sleccsususvucsens 117 12 1 Dateibeschreib ng uer um nee nenn header nenn range nen 117 122 Limitier ngen secin E EEEE EEEE EE TER EFT 119 12 3 Gpeicherallozierung eee eececeeaeeaeceeeeeeeee aaa ia i ia aeaii iaiia aiaa 120 12 4 Schnittstellen EE 120 124 1 Schnittstelle IT CUNKNOWM raini ana 121 124 2 Schnittstell LtEtt a2 ae 123 124 3 Schnitistelle TEGYE ze ea 130 124 4 Schnittstelle Lett Cale nn ae reale 131 12 4 5 Schnittstelle ITcFileAccess nnion dann a add a a dadar A 133 12 4 6 Schnittstelle ITCFIIGACCESSASYING oroia TS 141 124r ebe tele TEPOS CYC a S 143 12 4 8 Schnittstelle ITcPostCyclicCaller n nennen nenne 144 12 4 9 Schnittstelle ITeloCyelie u22 ae ea 146 12 4 10Schnittstelle
270. nnnnnnnnnnnennnnnnnnnnnnnnnnnnn nn 257 15 21 Beispiel37 Daten Archivieren kennen aaa 259 NR ln Une cic sse ett ccs ccc cade caste A A E E E E 260 16 1 ADS dire Bee 260 TC3 C Version 1 0 5 Vorwort BECKHOFF 1 Vorwort 1 1 Hinweise zur Dokumentation Diese Beschreibung wendet sich ausschlie lich an ausgebildetes Fachpersonal der Steuerungs und Automatisierungstechnik das mit den geltenden nationalen Normen vertraut ist Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der nachfolgenden Hinweise und Erkl rungen unbedingt notwendig Das Fachpersonal hat sicherzustellen dass die Anwendung bzw der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen einschlie lich s mtlicher anwendbaren Gesetze Vorschriften Bestimmungen und Normen erf llt Disclaimer Diese Dokumentation wurde sorgf ltig erstellt Die beschriebenen Produkte werden jedoch st ndig weiter entwickelt Deshalb ist die Dokumentation nicht in jedem Fall vollst ndig auf die bereinstimmung mit den beschriebenen Leistungsdaten Normen oder sonstigen Merkmalen gepr ft Falls sie technische oder redaktionelle Fehler enth lt behalten wir uns das Recht vor nderungen jederzeit und ohne Ank ndigung vorzunehmen Aus den Angaben Abbildungen und Beschreibungen in dieser Dokumentation k nnen keine Anspr che auf nderung bereits gelieferter Produkte geltend gemacht werden Marken Beckhoff TwinCAT EtherCAT Saf
271. nsatz 0x744 1860 ADSERR_CLIENT_DUPLINVOKEID Die aufgerufene ID ist bereits in Benutzung 0x745 1861 ADSERR_CLIENT_SYNCTIMEOUT Timeout ist aufgetreten 0x746 1862 ADSERR_CLIENT_W32ERROR Fehler im Win32 Subsystem 0x747 1863 ADSERR_CLIENT_TIMEOUTINVALID Ung ltiger Client Timeout Wert 0x748 1864 ADSERR_CLIENT_PORTNOTOPEN ADS Port nicht ge ffnet 0x750 1872 ADSERR_CLIENT_NOAMSADDR Interner Fehler in Ads Sync 262 Version 1 0 TC3 C BECKHOFF Anhang Hex Dec Name Beschreibung 0x751 1873 ADSERR_CLIENT_SYNCINTERNAL Hash Tabelle berlauf 0x752 1874 ADSERR_CLIENT_ADDHASH Schl ssel nicht gefunden im Hash 0x753 1875 ADSERR_CLIENT_REMOVEHASH Keine weitere Symbole im Cache 0x754 1876 ADSERR_CLIENT_NOMORESYM Ung ltige Antwort empfangen 0x755 1877 _ ADSERR_CLIENT_SYNCRESINVALID Sync Port ist gesperrt RTime Fehlercodes Hex Dec Name Beschreibung 0x1000 4096 RTERR_INTERNAL Interner Fehler im TwinCAT Echtzeit System 0x1001 4097 RTERR_BADTIMERPERIODS Timer Wert ist nicht g ltig 0x1002 4098 RTERR_INVALIDTASKPTR Task Pointer hat den ung ltigen Wert 0 null 0x1003 4099 RTERR_INVALIDSTACKPTR Task Stackpointer hat den ung ltigen Wert 0 0x1004 4100 RTERR_PRIOEXISTS Die Request Task Priority ist bereits vergeben 0x1005 4101 RTERR_NOMORETCB Kein freies TCB Task Control Block zur Verf gung Ma
272. nt Wenn ein Schnittstellenzeiger eines Moduls mit der Schnittstelle eines anderen Moduls in Verbindung treten soll kann in der Modulbeschreibung festgelegt werden dass er nur mit Modulen verbunden werden kann die eine bestimmte Kategorie unterst tzen Dadurch wird die Auswahl f r den Konfigurator und demzufolge auch f r den Nutzer deutlich einfacher und leichter verst ndlich ADS Jedes Modul ist ber ADS via ITComObject Schnittstelle automatisch erreichbar Z B kann auf Parameter oder Zustandsmaschine eines Moduls mit AdsRead und AdsWrite zugegriffen werden Bei komplexeren Modulen gibt es die zus tzliche M glichkeit der Implementierung eines ADS Ports im Modul selbst ber den der gesamte ADS Kommunikationspfad zur Verf gung steht Systemmodul Die TwinCAT Laufzeit stellt dar ber hinaus eine Reihe sogenannter Systemmodule zur Verf gung die die grundlegenden Dienste der Laufzeit f r andere Module zur Verf gung stellen Diese Systemmodule haben eine feste konstante Objekt ID ber die die anderen Module auf sie zugreifen k nnen Ein Beispiel eines solchen Systemmoduls ist das Echtzeitsystem das die grundlegenden Dienste des Echtzeitsystems d h die Generierung von Echtzeit Tasks via ITcRTime Schnittstelle zur Verf gung stellt Auch der ADS Router ist als Systemmodul implementiert so dass andere Module an dieser Stelle ihren ADS Port anmelden k nnen Erstellung von Modulen Module k nnen sowohl in C als auch in IEC 611
273. nterelements eingeblendet hnlich wie Datentypeigenschaften gt 84 11 3 3 5 4 Schnittstellen Interfaces Eine benutzerdefinierte Schnittstelle erstellen 4 LM TMC a gt Data Types 4 stSensorData b E Sub Items 4 o Mylnterface Ze Methods 4 Modules KH CModule1 3 Implemented Interfaces p 4 Parameters a h Data Areas 4 Inputs 4 EN Symbols m Value m Status m Data b Mi Outputs Dh Data Pointers dpa Interface Pointers Deployment Edit the properties of the Data Type General properties Name Mylnterface Namespace GUID Specification Choose interface base type Select ITComObject Type Information Namespace Guid 00000012 0000 0000 e000 000000000064 W hlen Sie bitte den Methods Knoten oder klicken Sie auf die Edit Methods Schaltfl che um zu dieser Tabelle zu wechseln Untitled1 Services h GA Modulel h 4 WG TMC a gt Data Types 4 stSensorData a E Sub Items Lg bEnable Lg nTemperature Lg eStatus a o Mylnterface 4 Ze Methods callStart callEnd checkState a EC Modules Modulel cpp e Add remove and reorder Methods bh el Untitledi tmc TMC Editor X Retum Type Name HRESULT callStart HRESULT callEnd HRESULT checkState TC3 C Version 1 0 89 Assistenten BECKHOFF Parameter der Methode Wahlen Sie den Knoten der Methode oder doppelklicken Sie auf den Eintrag um die Detai
274. nters Guid Deployment Optional symbol settings Offset Bits Size Bits Unit Comment Create symbol Allgemeine Eigenschaften Name Name der Schnittstelle Specification Datentyp des Parameters Verf gbare Spezifikationen sind e Alias Ein Alias eines Standarddatentyps z B INT erzeugen e Array Ein benutzerdefiniertes Array erstellen e Enumeration Eine benutzerdefinierte Aufz hlung erstellen e Struct Eine benutzerdefinierte Struktur erstellen e Interface Eine neue Schnittstelle erzeugen Den Datentyp definieren Select Datentyp ausw hlen Description Beschreibung festlegen Typinformation Name Name des ausgew hlten Standardtyps Namespace Benutzerdefinierter Namensraum des Datentyps GUID Eindeutige ID des Datentyps TC3 C Version 1 0 107 Assistenten BECKHOFF Optionale Datentypeinstellungen Offset Bits Speicher Offset Size Bits Berechnete Gr e in Bits Unit Optional Comment Optional Create symbol Standardeinstellung fur ADS Symbolerstellung 11 3 4 4 Datenzeiger Data Pointer Dialog zum Bearbeiten der Datenzeiger Ihres Moduls a 32 TM ts Data Types LN Add remove and reorder Data Pointers 4 Fig Modules 4 f CModule1 lt Q Implemented Interfaces 4 Parameters Name Parameter ID Type Context Disable Code Generation 5 TraceLevelMax DataPointeri x00000002 INT 1 EI 5 bEnable a Data Areas a m Inputs 4 E Symbols m Value m Stat
275. odule Verwendet die statische Bibliothek um die Datei AsyncTest txt zu schreiben Beim Starten des Beispiels beginnt das Schreibmodul mit dem Schreiben von Daten in die Datei die sich im Bootprojekt Pfad normalerweise C TwinCAT 3 x Boot AsyncTest txt befindet Die Eingangsvariable bDisableWriting kann f r die Verhinderung des Schreibens verwendet werden Die Objekte sind miteinander verbunden Wenn das Schreiben erledigt ist triggert das WritingModule das DetectModule von TcAsyncBufferReadingDrv Dadurch wird ein Lesevorgang durch das ReadingModule veranlasst Bitte die nBytesWritten nBytesRead Ausgangsvariablen des WritingModules ReadingModules beobachten Dar ber hinaus werden Protokollnachrichten auf Ebene verbose generiert Diese k nnen wie gehabt mit Hilfe des TraceLevelMax Parameters der Module konfiguriert werden e Ein Treiber TcAsyncFileFindDrv stellt eine Instanz zur Verf gung e FileFindModule Listen Sie die Dateien eines Verzeichnisses mit Hilfe der statischen Bibliothek auf L sen Sie die Aktion mit Hilfe der Eingangsvariablen bExecute aus Der Parameter FilePath beinhaltet das Verzeichnis dessen Dateien aufzulisten sind Standardwert c TwinCAT 3 1 Boot Bitte beobachten Sie die Ablaufverfolgung Protokollebene Verbose bez glich der Liste der gefundenen Dateien Das Beispiel verstehen Das Projekt TcAsyncFilelO beinhaltet verschiedene in einer statischen Bi
276. odulet Namespace 29 Implemented Interfaces Parameters GUID 3bee2b3e b400 4278 2098 cab003abfe le a ones Specification Struct v Edit Struct a Inputs a Bi Symbols Optional base type for struct data type e onst tatus e Data Select we ih Outputs Type Informatio Eh Data Pointers gt Es wird ein neuer Dialog eingeblendet um ein Element hinzuzuf gen oder zu entfernen Bearbeiten Sie mit Hilfe der Pfeile die Reihenfolge 88 Version 1 0 TC3 C BECKHOFF Assistenten Untitled Services h Modulel h CA 4 SW TMC a Data Types 4 stSensorData Lg bEnable Lg nTemperature Lg eStatus 4 o Mylnterface Ze Methods 4 amp Modules Modulel cpp Add remove and reorder Sub Items s e 8 Byte M P o a Name Specification bEnable Alias BOOL nTemperature Alias INT eStatus Enumeration INT Type Description Normal Type Normal Type Normal Type Name Name des Elements Guid 18071995 0000 0000 0000 000000000030 18071995 0000 0000 0000 000000000006 18071995 0000 0000 0000 000000000006 Specification Ein Struct kann Alias Arrays oder Aufz hlungen enthalten Type Typ der Variablen Size Gr e und Offset des Unterelements Size X64 Andere Gr e f r x64 Plattform wird zus tzlich bereitgestellt Unit Optionale Einheit Size Size X64 Unit Mittels Auswahl des Datentyps oder Doppelklick auf den Tabelleneintrag werden die Details der Konfigurationsseite des U
277. ols Architecture Test Analyze V m Solution TwinCAT Project128 1 project 4 el TwinCAT Project128 EZZ LLL Ed SYSTEM State transition from SAFEOP to PREOP er EJHRESULT CModulel SetObjStateSP 5 3 Visual Studio vorbereiten Konfigurations und Plattformsymbolleiste Symbolleiste Solution Configuration and Solution Platform hinzuf gen Mit der Configuration and Platform Symbolleiste k nnen Sie die Zielplattform f r das Erstellen Ihres Projekts bestimmen Diese Symbolleiste wird vom TwinCAT 3 Setup automatisch zum Visual Studio Men hinzugef gt Wenn Sie sie allerdings manuell hinzuf gen m chten m ssen Sie folgendes tun 1 ffnen Sie das Men View und w hlen Toolbars Customize Navigieren Sie zum Karteireiter Commands Aktivieren Sie das Optionsfeld Toolbar und w hlen dann aus der Liste der Symbolleisten Standard Klicken Sie auf Add Command W hlen Sie die Kategorie Build w hlen den Befehl Solution Configurations aus und klicken dann auf Ok 6 Wiederholen Sie den letzten Schritt f r den Befehl Solution Platforms 7 Zum Abschluss auf Close klicken Nun erscheinen beide Befehle unter der Men leiste O A O N e TwinCAT Project3 Microsoft Visual Studio Administrator File Edit View Project Build Debug TwinCAT PLC Team Data Qh G F 2 OPGaaaaQ uns OF Tools Architecture des Sda
278. on 1 0 51 Schnellstart BECKHOFF 1 Zu System gt Real Time navigieren Registerkarte C Debugger w hlen und Enable C Debugger aktivieren Solution Explorer z Settings Online Priorities C Debugger d Solution TwinCAT Project176 1 project a u 4 Ki TwinCAT Project176 Enable C Debugger a E SYSTEM ER Licence Real Time ff Tasks sfs Routes 5 TcCOM Objects NC Motion fj PLC KS sarety 4 fed C a fe Untitled1 4 2 Untitled1 Project gt al External Dependencies Header Files m 9 8 TwinCAT 3 C Projekt aktivieren In diesem Artikel wird erl utert wie das TwinCAT 3 C Beispielprojekt aktiviert und ausgef hrt wird Nachdem ein TwinCAT C Projekt erstellt kompiliert und bereitgestellt wurde muss die Konfiguration aktiviert werden 1 Klicken Sie auf das Symbol Activate Configuration die TwinCAT 3 Systemmanager Datei wird als aktuelle Konfiguration aktiviert File Edit View Project Build Debug TwinCAT PLC eT ha ha Peete HG m Solution TwinCAT Project60 1 project 4 a TwinCAT Project60 tsp_ SYSTEM A Nc 52 Version 1 0 TC3 C BECKHOFF Schnellstart 2 Bestatigen Sie im nachsten Schritt die Aktivierung der neuen Konfiguration Die vorherige alte Konfiguration wird Uberschrieben Activate Configuration Old Configurations will be overwritten 3 TwinCAT 3 fragt automatisch ob in den Run
279. on nach unten t Name Name der Schnittstelle Verschiebt das ausgew hlte Element um eine Position nach oben Parameter ID Eindeutige ID des Schnittstellenzeigers Type Typ des Schnittstellenzeigers Context Kontext der Schnittstelle Disable Code Generation Die Code Generierung freigeben sperren 11 3 4 5 1 Eigenschaften des Schnittstellenzeigers Interface Pointer Properties Die Eigenschaften des Schnittstellenzeigers bearbeiten 110 Version 1 0 TC3 C BECKHOFF Assistenten a 3a TMC Data Types C Edit the properties of the Interface Pointer 4 Modules Be CModule1 Implemented Interfaces General properties a 4 Parameters 5 TraceLevelMax Name CyclicCaller 5 bEnable a m Data Areas Choose interface type a Inputs 4 EN Symbols Select ITcCyclicCaller un m Value m Status Type Information m Data Namespace D Outputs 4 I DataArea3 Guid 10300001e 0000 0000 e000 000000000064 Configure the parameter ID Context based v Select the property which should be taken from the given context Object D o task Select the context 1 ID Value x03002060 Constant Name PID_Ctx_TaskOid Optional interface pointer settings Comment Context ff x E Disable code generation Allgemeine Eigenschaften Name Name des Schnittstellenzeigers Basisschnittstelle auswahlen Select Auswahl der Schnittstelle Typinformation e Namespace Namensraum der Schnittstelle e GUID Eindeutige ID der
280. ons Build Support is provided for Itanium based x64 and x86 CPU s and for Windows 7 Windows Vista Windows Server 2008 Windows Server 2003 and Windows XP STATUS This feature is installable v Help Undo OK Cancel 5 Nach Zustimmung zur Microsoft EULA Lizenz Zielordner f r die Installation w hlen Standardm ig wird der Stammordner C ausgew hlt also wird C WinDDK 7600 16385 1 vorgeschlagen DI HINWEIS Die Ziffern 7600 sind im Falle einer neueren Version von Windows Driver Kit m glicherweise andere 6 Installation mit OK starten Concerns ion SOS Ten ea Select Install Path Edit the install path and click OK to proceed with install or select Cancel to return to the Kit Configuration Dialog Use the browse button to select an installation path or the default button to set the default installation path 7 Zuk nftig bernimmt TwinCAT 3 den folgenden Schritt Jetzt muss er noch einmal manuell erledigt werden 14 Version 1 0 TC3 C BECKHOFF Vorbereitung nur einmal 8 Navigieren Sie zu Start gt Control Panel gt System und w hlen Advanced system settings 9 W hlen Sie den Karteireiter Advanced und klicken dann auf Environment Variables 10 Im unteren Bereich von System variables w hlen Sie New und f gen folgende Information ein Variablenname WINDDK7 Variablenwert C WinDDK 7600 16385 1 Der Pfad kann b
281. ontroller J WTModel B Driver B Functions sdk A System B Target J TwinCAT RT 686 04 09 2012 12 13 File folder J TwinCAT UM 86 04 09 2012 12 13 File folder D TempContr tmc 04 09 2012 12 13 TMC File 7 2 Module importieren Szenario In diesem Artikel ist beschrieben wie ein bin res TC3 Modul in eine PC IPC Steuerung mit TwinCAT 3 XAE ohne Vollversion von Visual Studio importiert und integriert werden kann Das bin re TC3 Modul wurde vorher auf einem anderen PC implementiert und exportiert Folgende Schritte sind zu erledigen 32 Version 1 0 TC3 C BECKHOFF Module Handhabung 1 Auf dem zweiten IPC mit TwinCAT XAE ohne Vollversion von Visual Studio binares Modul in den Zielordner TwinCAT 3 x CustomConfig Modules kopieren In diesem Beispiel wird das Archiv TempContr zip entpackt COR Jelli Computer OS Win7 C TwinCAT3 CustomConfig Modules Organize v Include in library Share with v Burn New folder J TwinCAT3 Ji AdsApi WW Boot AR Common32 A Common64 WW Components A Config BE CustomConfig M Modules Ji ContrSysPT2 AR WTController J WTModel DI TempContr zip A Driver a Functions J sdk A System A Target a EN CT Name Ji ContrSysPT2 a WTController BE WTModel Date modified 04 09 2012 11 03 04 09 2012 11 03 04 09 2012 11 03 Type File folder File folder File folder TempContr z
282. point 1 FeedbackTemp Init Sequence PSO D a BN Output E HeaterOn Symbol Ads Port 0 E CoolerOn gt MonitoringSignals MOTION Di Pic KS SAFETY 4 C a EJ Untitledt a Untitled1 Project gt Gil External Dependencies Header Files Source Files O TMC Files TwinCAT RT Files TwinCAT UM Files TC3 C Version 1 0 35 Entwicklung BECKHOFF 8 Entwicklung In diesem Abschnitt werden die Prozesse f r Programmierung Kompilierung und Starten eines TwinCAT C Projekts beschrieben Er soll einen allgemeinen berblick ber den Engineering Prozess f r TwinCAT C Projekte mit Verweisen auf die entsprechende ausf hrliche Dokumentation geben Der Schnellstart gt 37 geht die gemeinsamen Schritte im Einzelnen durch 1 Typen Deklaration und Modultyp Der TwinCAT Module Class Editor TMC gt 69 und TMC Code Generator werden f r die Definition von Datentypen und Schnittstellen und auch der Module die diese verwenden herangezogen Der TMC Code Generator generiert Quellcode anhand der bearbeiteten TMC Datei und bereitet Datentypen Schnittstellen vor die in anderen Projekten wie SPS zu verwenden sind Bearbeiten und den Code Generator starten kann immer und immer wieder gemacht werden Die Code Generierung achtet auf programmierten Benutzercode und bewahrt diesen Programmierung Die bekannte Visual Studio C Programmierungsumgebung wird f r die Entwicklung und das Debugging gt 60 des benutzerdefinierten Codes
283. r Configuration Search Installed Templates Other Languages Other Project Types Database Modeling Projects Test Projects Online Templates Name TwinCAT Project PLC calling C Method Location c users stefanh beckhoff documents visual studio 2010 Projects v Browse Solution Solution name TwinCAT Project PLC calling C Method v Create directory for solution Add to source control Schritt 2 Erstellen Sie einen neuen TwinCAT 3 C Treiber 1 Klicken Sie mit der rechten Maustaste auf C und Add New Item ausw hlen File Edit View Project Build Debug TwinCAT PLC Team ie al Gd 4 kl 9 S S gt o ae m gja Ce oe Ol 2 d m Solution TwinCAT Project PLC calling C Method 1 project 3 4 TwinCAT Project PLC calling C Method 3 S system ena MOTION 3 fj Pic oO S SAFETY gt c 4 Evo EJ ia INE E Add Existing Item ae N EI Shift Alt A TC3 C Version 1 0 219 C C Beispiele BECKHOFF 2 W hlen Sie die Vorlage TwinCAT driver Project und geben einen Treibernamen ein otateMachineDrv in diesem Beispiel Klicken Sie auf Add um fortzufahren Add New Item TwinCAT Project PLC calling C Method Installed Templates Sort by Default Search Installed Templates TwinCAT C Driver a TwinCAT Driver Project TwinCAT C Driver TIPE See eae sd TwinCAT Static Library Project TwinCA
284. r t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 cbLength Typ ULONG in enth lt die L nge in Bytes der gelesenen Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem sich die Daten befinden R ckgabewert Typ int ADS Return Code siehe AdsStatuscodes TC3 C Version 1 0 163 Programmierreferenz BECKHOFF 12 5 4 4 AdsReadWriteCon Die Methode AdsReadWriteCon erm glicht den Empfang von einer ADS Lese Schreibbestatigung Das empfangende Modul muss diese Methode bereitstellen AdsReadWriteReq gt 162 bildet das Gegenst ck und muss zuvor aufgerufen Syntax void AdsReadWriteCon AmsAddr amp rAddr ULONG invokeId ULONG nResult ULONG cbLength PVOID pData Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellgerat spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 cbLength Typ ULONG in enth lt die L nge in Bytes der gelesenen Daten pData pData Typ PVOID in Zeiger auf den Datenpuffer in dem sich die Daten befinden R ckgabewert void 12 5 5 AdsReadState 12 5
285. r amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 R ckgabewert Typ int ADS Return Code siehe AdsStatuscodes gt 260 TC3 C Version 1 0 167 Programmierreferenz BECKHOFF 12 5 6 4 AdsWriteControlCon Die Methode AdsWriteCon ermdglicht den Empfang von einer ADS Schreibsteuerungsbestatigung Das empfangende Modul muss diese Methode bereitstellen AdsWriteControlReq gt 166 bildet das Gegenst ck und muss zuvor aufgerufen Syntax void AdsWriteControlCon AmsAddr amp rAddr ULONG invokeld ULONG nResult Parameter rAddr Typ AmsAddr amp in Struktur mit Netld und Portnummer vom antwortenden ADS Server invokeld Typ ULONG in Handle des Befehls der gesendet wird Die Invokeld wird vom Quellger t spezifiziert und wird f r die Identifizierung der Befehle herangezogen nResult Typ ULONG in enth lt das Ergebnis des ADS Schreibbefehls Siehe AdsStatuscodes gt 260 R ckgabewert void 12 5 7 AdsAddDeviceNotification 12 5 7 1 AdsAddDeviceNotificationReq Die Methode AdsAddDeviceNotificationReq erm glicht das Senden eines ADS Hinzuf gen Ger te Notification Befehls um eine Ger te Notific
286. ranschaulicht die Verwendung dieser Methode 12 4 13 Schnittstelle ITcTaskNotification F hrt einen Callback aus wenn die Zykluszeit beim vorherigem Zyklus berschritten wurde Diese Schnittstelle stellt vergleichbare Funktionalit ten wie SPS PlcTaskSystemInfo gt CycleTimeExceeded zur Verf gung Syntax TCOM_DECL_ INTERFACE 9CDE7C78 32A0 4375 827E 924B31021FCD ITcTaskNotification struct _ decl spec novtable ITcTaskNotification public ITcUnknown Ben tigtes include TeRtInterfaces h Methoden Symbol Name Beschreibung H NotifyCycleTimeExceeded Wird aufgerufen wenn die Zykluszeit Uberschritten wurde Anmerkungen Beachten Sie dass der Callback nicht wahrend den Berechnungen sondern am Ende des Zyklus stattfindet Also bietet diese Methode keinen Mechanismus um die Berechnungen sofort zu stoppen Sehen Sie dazu auch Methode ITcTaskNotification NotifyCycleTimeExceeded gt 154 Schnittstelle ITcFileAccess gt 133 Beispiel20a FilelO Cyclic Read Write gt 250 mg mg mg 12 4 13 1 Methode ITcTaskNotification NotifyCycleTimeExceeded Wird aufgerufen wenn die Zykluszeit zuvor abgelaufen ist Syntax virtual HRESULT TCOMAPI NotifyCycleTimeExceeded Parameter ipTask Typ ITcTask verweist auf den aktuellen Task Kontext context Typ ULONG_PTR Kontext R ckgabewert Typ HRESULT Gibt S_OK zur ck wenn Dateioperation abgeschlossen ist 154 Ve
287. rch Solution Explorer Ctrl Pr ila TMC EEE 4 gt Data Types ts Add remove and re z S 4 stSensorData a Gi Toint AT Projectl a E Sub Items te Deg gt d SYSTEM Le nCounter MOTION La Subltem3 Name Specification Type Gj Pic a Gq Modules nCounter Alias INT SAFETY 4 Fed CModule1 Subltem3 Alias INT a a C Implemented Interfaces 4 El Untitledi a Parameters 4 iA Untitled Proj saci 4 Sq Header Files TCs Pun odores B Modulel t w pa D Resource t B TePch h Rebuild D Untitled1C Clean Untitledilr Project Only A D UntitlediS SS 4 5 Source Files opeto This Modulel c New Solution Explorer View TcPch cpp Profile Guided Optimization D Untitledl r ar ee Untitled1 roject Dependencies 4 aw TMC Files Project Build Order Untitledi t Build Customizations gt mg TwinCAT RTF Add gt mg TwinCAT UM gt a vo References fi Manage NuGet Packages Sie werden die Datentypdeklaration in der Modul Headerdatei Untitled1Services h sehen Solution Explorer vax Modulel h Modulel cpp Untitled1 tmc TMC Editor o o PD oo 4 Global Scope H EA UntitlediServices h Search Solution Explorer Ctrl D fal Solution TwinCAT Projectl 1 project a D TwinCAT Projectt pragma once gt S system A 8 i Fal MOTION include TcServices h a PLC const ULONG DrvID_Untitled1 0x3F000000 EI sareTY define SRVNAME_UNTITLED1 Untitled1 Ac 4 Kl Untitled lt
288. ren Namen ein in diesem Beispiel IStateMachine 4 TMC b Data Types Modules 4 El CStateMachineModule Implemented Interfaces l Ba Parameters b E Data Areas Dh Data Pointers b Interface Pointers Deployment Se Add remove and reorder Data Types p f a sere L Name Guid Specification Size Bits Is Aligned IStateMachine 9ff4c3fe 4a6b 4a97 8f97 1e5b15cb1bb5 Interface 32 Yes Schritt 4 Fugen Sie der Schnittstelle Methoden hinzu 12 Klicken Sie auf Edit Methods um eine Liste der Methoden dieser Schnittstelle zu erhalten Klicken Sie auf die Schaltfl che um eine neue standardm ige Methode Method1 zu erzeugen 222 Version 1 0 TC3 C BECKHOFF C C Beispiele 13 Den Standardnamen Method1 durch aussagekr ftigen Namen ersetzen in diesem Beispiel Start 4 T TMC a gt Data Types M Edit the properties of the method 4 StateMachine a Ze Methods z Start General properties 4 K Modules 4 fi CStateMachineModule Name Start 2 Implemented Interfaces b Ea Parameters Define the data type b h Data Areas Dh Data Pointers Select HRESULT al gare Description Normal Type gt C e Type Information Name HRESULT Namespace Guid 18071995 0000 0000 0000 000000000019 Define the parameters of the method ERR LS Name Type Description Default Value 14 Ein zweite Methode hinzuf gen und diese Stop nennen a BG TMC 4 gt Data Types
289. ren Unterelemente zu Grunde gelegt Benutzerdefiniertes Alignment Hinweis wird berschrieben i Rekursion bei Festlegung eines Alignment Number Nummer des Datenbereichs Type Definiert den Zweck und die Lage des Datenbereichs Name Name des Datenbereichs Size Gr e des Parameters Fur x64 sind andere Gr en m glich Context Zeigt die Kontext ID an Disable Code Generation Die Code Generierung freigeben sperren 11 3 4 3 1 Datenbereiche und Variablen hinzuf gen bearbeiten l schen Mit Hilfe des TwinCAT Module Class TMC Editors k nnen Eigenschaften und Funktionalit ten einer TwinCAT Klasse hinzugef gt bearbeitet und gel scht werden Dieser Artikel beschreibt Einen neuen Datenbereich in der TMC Datei erstellen e Neue Variablen in einen Datenbereich erzeugen gt 107 TC3 C Version 1 0 101 Assistenten BECKHOFF e Z B den Namen oder Datentyp gt 107 von in der TMC Datei bestehenden Variablen bearbeiten e In der TMC Datei bestehende Variablen l schen gt 108 Einen neuen Datenbereich erzeugen 1 Nach dem Starten des TMC Editors den Knoten Data Areas des Moduls ausw hlen 2 Durch Klicken auf die Schaltfl che wird ein neuer Datenbereich erzeugt a BG TMC Data Types EN Add remove and reorder Data Areas a g Modules 4 EI CModule1 t ppoe M P 9 Implemented Interfaces Eesemekere Number Area Type Name Size Size X64 Context Disable Code Generation
290. rget s Project TempContr vcxproj TcPublishModuleBinaries target s C TwinCAT3 SDK Bin ExtractVersionInfo TempContr C TwinCAT3 SDK _products TwinCAT RT x86 Release TempContr TempContr VCEnd Could not open header file lt lt C TwinCAT3 SDK _products TwinCAT RT x86 Release TempContr TempContrVersion h gt gt c Program Files x86 Microsoft Visual Studio 1 VC bin CL exe c IC TwinCAT3 SDK Include IC TwinCAT3 SDK Include Io IC Twinc TcPch cpp c Program Files x86 Microsoft Visual Studio 1 VC bin CL exe c IC TwinCAT3 SDK Include IC TwinCAT3 SDK Include Io IC TwinGs TempContrClassFactory cpp TempContrDriver cpp TempContrDrv cpp C Program Files x86 Microsoft SDKs Windows v7 A bin rc exe 1 x 4 9 nologo fo C TwinCAT3 SDK _products TwinCAT RT x86 Release Most important is the success report at the end TC3 C Version 1 0 31 Module Handhabung BECKHOFF Show outputfrom Build i S RIS TcPch cpp c Program Files x86 Microsoft Visual Studio 1 VC bin CL exe c IC TwinCAT3 SDK Includ TempContrClassFactory cpp TempContrCtrl cpp TempContrDrv cpp TempContrwW32 cpp C Program Files x86 Microsoft SDKs Windows v7 A bin rc exe D _UNICODE D UNICODE 1 x 4e c Program Files x86 Microsoft Visual Studio 18 VC bin link exe ERRORREPORT QUEUE OUT C C TwinCAT3 SDK _products TwinCAT UM x86 Release TempContr TcPch obj C TwinCAT3 SDK _products TwinCAT UM
291. riebene die blauen Bl cke optionale Eigenschaften TwinCAT Module Module Description State Machine ITComObject Interface Interfaces Parameter Interface Pointers Data Areas Data Area TTT aan TH Port TC3 C Version 1 0 23 Module BECKHOFF Modulbeschreibung Jedes TwinCATModul hat einige allgemeine Beschreibungsparameter Dazu geh rt eine ClassID eine eindeutige Zahl die die Klasse des Moduls eindeutig beschreibt Jede Instanz eines Moduls hat eine Objekt ID die in der TwinCAT Runtime eindeutig ist Dar ber hinaus gibt es eine Parent Objekt ID die auf einen m glichen logischen Parent verweist Modulbeschreibung Zustandsmaschine und Parameter des unten beschriebenen Moduls k nnen ber die spezifizierte und standardisierte ITComObject Schnittstelle erreicht werden Siehe Schnittstellen Zustandsmaschine Jedes Modul enth lt eine Zustandsmaschine die den Initialisierungszustand des Moduls und die Mittel mit denen dieser Zustand von au en ver ndert werden kann beschreibt Diese Zustandsmaschine beschreibt nur den allgemeinen Zustand des Moduls und definiert den Ablauf von Modulgenerierung parametrierung und Herstellung der Verbindung mit den anderen Modulen Anwendungsspezifische Zust nde z B von Feldbus oder Treiber k nnen in ihren eigenen Zustandsmaschinen stromabw rts beschrieben werden Die Zustandsmaschine der TwinCAT Module definiert die Zust nde INIT PREOP SAFEOP und OP Auch wenn es d
292. rschiedenen Funktionen der GUI erkunden Hintergrundinformation Diesem ADS Client ist es Einerlei ob der ADS Server auf TwinCAT2 oder auf TwinCAT 3 basiert Auch spielt es keine Rolle ob der Server ein C Modul SPS Modul oder IO Task ohne jede Logik ist Die ADS Client UI Nach dem Starten des Beispiels wird die Benutzerschnittstelle UI eingeblendet TC3 C Version 1 0 211 C C Beispiele BECKHOFF all Sample06 m Symbols Load Symbols I flat NetID 127 0 0 1 1 1 ADS Port 350 Write using WriteSymbol Current Symbol Name Index Group Index Offset Size Datatype Datatype Id Value Watch Value Symbol Name Watch Current Symbol Symbol Name MAIN INT32_1 Read Symbol Info Find Symbol Kommunikationspartner auswahlen Nach dem Starten des Client die beiden ADS Parameter eingeben um Ihren ADS Kommunikationspartner zu bestimmen e NetID 127 0 0 1 1 1 fur ADS Partner auch mit lokalem ADS Message Router verbunden Geben Sie eine andere NetID ein wenn Sie Uber das Netzwerk mit einem an einen anderen ADS Router angeschlossenen ADS Partner kommunizieren m chten Zuvor m ssen Sie einmal eine ADS Route gt 180 zwischen Ihrem Ger t und dem fernen Ger t herstellen e AdsPort Geben Sie den AdsPort Ihres Kommunikationspartners ein 350 in diesem Beispiel D Hinweis Nicht den ADS Server Port mit dem regularen ADS Por
293. rsion 1 0 91 Assistenten BECKHOFF Class ID Eindeutige ID des Moduls Choose Image Ein 16x16 Pixel Bitmap Symbol einf gen Reset image Modulbild auf Standardwert zur cksetzen Init sequence Start der Zustandsmaschine Siehe Objekt gt 113 des Instance Configurators f r weitere Ausk nfte Instantiable in RT Context Zeigt an ob dieses Modul unter Echtzeitkontext instanziiert werden kann siehe TwinCAT Module Klassenassistent gt 66 Le A a YE TMC j a Data Types sd Shows the properties of the Module DataTypel 4 IInterface2 4 Methods General properties Method1 a iy Modules Name CModule1 4 il CModule1 Class ID CLSID 6a84bi6d ddd8 463b b910 a3ddicc48121 2 Implemented Interfaces Sa Parameters Class Factory Untitled M Data Areas Eh Data Pointers Image _ Choose image Reset image Interface Pointers EP Depi Init Sequence SO Instantiable in RT Context Define the contexts of the module 1 ID Er UUU Optional properties t Name Value Description Die Kontexte des Moduls festlegen Sie k nnen f r das Modul Kontexte hinzuf gen oder entfernen Bearbeiten Sie mit Hilfe der Pfeile die Reihenfolge Die Kontext Id muss ein Integer verschieden von 0 sein Optionale Eigenschaften Eine aus Name Wert und Beschreibung bestehende Tabelle zwecks Kommentierung des Moduls Diese Information wird in den TMC und a
294. rsion 1 0 TC3 C BECKHOFF Programmierreferenz Beschreibung Wird aufgerufen wenn die Zykluszeit vorher Uberschritten war Also nicht sofort bei Zeituberschreitung sondern danach Sehen Sie dazu auch ADS Return Codes gt 260 12 5 ADS Kommunikation Auf Client Server Prinzip basierende ADS Abbildung 1 Eine ADS Abfrage ruft die entsprechenden Indikationsmethoden auf der Serverseite auf Die ADS Antwort ruft die entsprechende Bestatigungsmethode auf der Client Seite auf ADS ADS Client Server Req ADS Client Server Sequenz In diesem Abschnitt werden sowohl die ausgehende als auch die eingehende ADS Kommunikation fur TwinCAT 3 C Module beschrieben ADS Befehlssatz Beschreibung AdsReadDevicelnfo gt 156 Mit diesem Befehl k nnen die allgemeinen Ger teinformationen gelesen werden AdsRead gt 158 ADS Lesebefehl um Daten von einem ADS Ger t abzufragen AdsWrite gt 160 ADS Schreibbefehl um Daten an ein ADS Gerat zu Ubergeben AdsReadState gt 164 ADS Befehl um den Zustand von einem ADS Gerat abzufragen AdsWriteControl gt 166 ADS Steuerungsbefehl um den Zustand von einem ADS Ger t zu ndern AdsAddDeviceNotification gt 168 Variable beobachten Der Client wird bei einem Ereignis informiert AdsDelDeviceNotification gt 170 Entfernt die Variable die zuvor verbunden war AdsDeviceNotification gt 172 Wird f r die
295. rte Parameter Init einstellen 15 13 Beispiel20 FilelO Write Dieser Artikel beschreibt die Implementierung von TC3 C Modulen die Prozess Werte in eine Datei schreiben Das Beschreiben der Datei wird von einem deterministischen Zyklus veranlasst die Ausf hrung von File IO ist entkoppelt asynchron d h Der deterministische Zyklus l uft weiter und wird nicht durch das Schreiben in der Datei behindert Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Beispiel beinhaltet eine Instanz von TcAsyncWritingModule die Daten in die Datei AsyncTest txt im Verzeichnis BOOTPRJPATH normalerweise C TwinCAT 3 x Boot schreibt TcAsyncBufferWritingModule hat zwei Puffer m_Buffer1 m_Buffer2 die abwechselnd mit aktuellen Daten gef llt werden Die Membervariable m_pBufferFill zeigt auf den derzeit zu f llenden Puffer Wenn ein Puffer vollst ndig gef llt ist dann wird die Membervariable m_pBufferWrite so gesetzt dass sie auf den vollen Puffer zeigt Diese Daten werden mit Hilfe von TcFsmFileWriter in eine Datei geschrieben Beachten Sie dass die Datei keinen von Menschen lesbaren Inhalt wie ASCII Zeichen enth lt sta
296. rufer und dem Aufgerufenen und auf diese Weise kann das Modul unter einem anderen Echtzeitkontext und selbst auf einem anderen CPU Kern in Bezug auf ein anderes Modul laufen TwinCAT wird die Daten zwischen den Modulen auf ununterbrochene Weise kopieren Siehe Schnellstart 37 Beispiel01 gt 198 TwinCAT Modules Class mit Datenzeiger Genau wie das TwinCAT Module Class with Cyclic IO erzeugt auch diese Vorlage eine neue TwinCAT Modulklasse die eine aufrufende Schnittstelle mit einem Ein und Ausgangsdatenbereich fur die Verkn pfung mit anderen Logik Ein Ausgangsabbildern oder mit physikalischen E A Klemmen implementiert Dar ber hinaus bietet diese Vorlage Datenzeiger mit Hilfe derer auf Datenbereiche von anderen Modulen ber Zeiger zugegriffen werden kann Wichtig zu verstehen Anders als im Falle des zyklischen I O Datenbereichs wo die Daten zwischen Modulen zyklisch kopiert werden besteht im Falle der Verwendung von C Datenzeigern nur ein einziger Datenbereich und dieser geh rt dem Zielmodul Beim Schreiben von einem anderen C Modul ber den Datenzeigermechanismus auf das Zielmodul wird sich das sofort auf den Datenbereich des Zielmoduls auswirken Nicht notwendigerweise gegen Ende eines Zyklus Wenn das Modul w hrend der Laufzeit ausgef hrt wird findet der Aufruf sofort statt wodurch der urspr ngliche Prozess blockiert wird es ist ein Zeiger Aufgrund dessen m ssen beide Module d
297. s FMMU SM T Check Product Code Wait for WcState is Ok _ nit Commands E Check Revision Number DI Relnit after Communication Error 6 Mailbox e oe c9 Distributed Clock Zi Log Communication Changes H ESC Access l Check Serial Number Rnal State i Check Identification OP gt SAFEOP in Config Mod en 5 SAFEOP OPREOP INIT Use LRD LWR instead of LRW Info Data am di Include WC State Bit s 9 Include State 141 Frame Repeat Support V Include Ads Address 9 Die ADS Adresse einschlie lich netld und port dem Moduleingang AdsAdress zuweisen 4 Ac 4 Ps TcAccessCoESdoViaAdsDrv gt 9 TeAccessCoESdoViaAdsDrv Project 4 E TcAccessCoESdoViaAdsDrv_Objl CTcSdoAccessMod Attach Variable AdsAddress Input MWUNGSS sa yuy User I AdsAddr InfoData Term 3 EL6001 Device 1 EtherCAT Devices a Inputs Value Be 1 0 Show Variables Status 8 Devices Unused 9 Data Ss Device 1 EtherCAT Used and unused gt 9 AdsAddress G84 Term 3 EL6001 T Exclude disabled ee F AdsAdd gt IB 1550 0 AMSADDA 8 0 EI Exclude other De Bar 10 Der Modulparameter wird im Verlauf der Initialisierung festgelegt Object Context Parameter Init Parameter Online Data Area interfaces Interface Po DefaultAdsPort ContextAdsPort BaudRate Vendorld CoEReadIndex CoEReadSubIndex CoEWritelndex CoEWriteSubIndex 15 6 Beispiel06 Ul C ADS Client l dt die Symbolik
298. s 4 4 fg Modules m 4 EI CModule1 Retum Type Name 9 Implemented Interfaces HRESULT _ callStart Parameters HRESULT callEnd h Data Areas HRESULT checkState Dh Data Pointers Interface Pointers P Deployment 7 Doppelklicken Sie auf die Methode oder w hlen den Knoten im Baum aus um Einzelheiten zu ffnen 8 Geben Sie der standardm igen Method1 einen aussagekraftigeren Namen 9 AnschlieRend k nnen Sie mit einem Klick auf Add a new parameter Parameter hinzuf gen Parameter der Methode SetState bearbeiten a BG TMC a Data Types 4 o StateMachine a 9 Methods M Edit the properties of the method setState General properties callEnd 5 checkState Name setState a fg Modules a R CModulet RPC 9 Implemented Interfaces C Enable Parameters Include Return Value h Data Areas I Data Pointers Choose return data type Interface Pointers Se ES Deployment Select HRESULT ik amp Description Normal Type Type Information Namespace Guid 118071995 0000 0000 0000 000000000019 Define the parameters of the method Name Type Description Default Value RPC Direction RPC Lengthis gt Standardm ig wird der neue Parameter Parameter1 als Normal Type INTEGER erzeugt 10 Durch einen Klick auf den Namen Parameter1 kann dieser bearbeitet werden gt Der Normal Type kann auch in Pointer ge ndert werden usw auch kann der Datentyp selber ausgew hlt wer
299. s 7 Build 7601 11 37 21 03 2013 y a E ZS al E de 4 Pr fen Sie ob eine Konfiguration mit einem in einen TwinCAT C Treiber implementierten TwinCAT Modul auf dem Zielsystem aktiviert und gestartet werden kann gt Die Kompilierung des x64 Treibers generiert eine Ausgabe wie folgt Show output from Build e 2 E EI 1 gt Build started Project Untitled2 Configuration Debug TwinCAT RT x64 1 gt header file lt lt C TwinCAT 3 1 SDK _products TwinCAT RT x64 Debug Untitled2 Untitled2Version h gt gt is up to date 1 gt TcPch cpp 1 gt Modulel cpp 1 gt Untitled2ClassFactory cpp 1 gt Untitled2Driver cpp 1 gt Untitled2 vcxproj gt C TwinCAT 3 1 SDK _products TwinCAT RT x64 Debug Untitled2 sys 1 gt The following certificate was selected 1 gt Issued to MyTestSigningCert 1 gt Issued by MyTestSigningCert 1 gt Expires Sun Jan 1 88 59 59 2048 1 gt SHA1 hash E27A66E6A C7BC C86DFDD 93DDF 2486D1EE5 2E 1 gt Done Adding Additional Store 1 gt Successfully signed and timestamped C TwinCAT 3 1 SDK _products TwinCAT RT x64 Debug Untitled2 sys 1 gt Number of files successfully Signed 1 1 gt Number of warnings 1 gt Number of errors Build 1 succeeded failed up to date skipped Referenzen MSDN Testzertifikate Windows Treiber MSDN MakeCert Testzertifikate Windows Treiber 5 4 3 Testzertifikat loschen Dieser Artikel beschreibt wie
300. s Konstruktors Membervariablen in die Header Datei StateMachineModule h hinzuf gen StateMachineModule h X Ele in He ele 4g CStateMachineModule SAFETY a DECLARE _ITCOMOBJECT_SETSTATE 4 C a ed StateMachineDrv HRESULT AddModuleToCaller 4 7 StateMachineDrv Project VOID RemoveModuleFromCaller gt al External Dependencies a amp Header Files e lt AutoGeneratedContent id Members gt TcTraceLevel m_TraceLevelMax in Resource h StateMachineModuleParameter m Parameter h StateMachineDrvClassFacton StateMachineModuleInputs m_Inputs h StateMachineDrvinterfaces h StateMachineModuleOutputs m_Outputs h StateMachineDrvServices h ITcCyclicCallerInfoPtr m_spCyclicCaller ul StateMachineModule h El lt AutoGeneratedContent gt ih TePch h Tracing a 3 Seuce Files CTcTrace m_Trace EA StateMachineDrv rc StateMachineDrvClassFacton m TODO Custom variable StateMachineModule cpp UINT m_counter TcPch cpp BOOL m_bRun a TMCFiles SHORT m_State OG StateMachineDrv tmc L mm o moam mm mn Konstruktor der Klasse f llen TC3 C Version 1 0 227 C C Beispiele BECKHOFF dddddd dd dd dd dd dd dd d dd d dd d dd d dd d dd AAA AAA AAA AAA AAA A AA AT CStateMachineModule CStateMachineModule m_Trace m_TraceLevelMax m_spSrv m_counter d memset amp m Parameter sizeof m_Parameter memset amp m_Inputs si
301. s Optional base type for struct data type 4 amp Symbols m Value ae ae Cas Seat CT u Data Type Information a Outputs Namespace a Dh DataAres3 Symbols Guid Dh Data Pointers Interface Pointers Fai Deployment Configure the parameter ID User defined v Enter a unique ID Value x00000001 Generate ID Constant Name PID_Module1 Parameter 4 Parameter sowie die Datentypen gt 72 konfigurieren 5 Geben Sie diesem einen aussagekraftigeren Namen in diesem Beispiel bEnable und w hlen den Datentyp BOOL GE um EURE zs Data Types Edit the properties of the parameter 4 Ei Modules a fE CModule1 e 9 Implemented Interfaces General properties 4 Parameters K re Specification Alias x a ER Inputs Choose data type m Value m ean sses A El a m Data Type Information Bh Outputs N a Dh DataArea3 nn Symbols Guid 18071995 0000 0000 0000 000000000030 Eh Data Pointers Interface Pointers ann BA Deployment Configure the parameter ID User defined v Entar a onima IN aksa K ch Canaria IN 6 Speichern Sie Ihre in der TMC Datei vorgenommenen nderungen TC3 C Version 1 0 95 Assistenten BECKHOFF Schritt 2 Starten Sie den TwinCAT TMC Code Generator um einen Code f r die Modulbeschreibung zu erzeugen 7 Klicken Sie mit der rechten Maustaste auf Ihre Projektdatei und w hlen TwinCAT TMC Code Generator um den Parameter in Ihrem Quellcode zu erhalten Solutio
302. schaften anderen Modulen zur Verf gung stehen Allerdings erfolgt der Zugriff auf die Eigenschaften der Systemmodule auf die gleiche Weise wie auf die Eigenschaften normaler Module sodass es f r die Module keine Rolle spielt ob die jeweilige Eigenschaft von einem Systemmodul oder einem normalen Modul zur Verf gung gestellt wird 10 Version 1 0 TC3 C BECKHOFF Einleitung Windows User Mode Libraries User Mode Kernel Mode Customer Code Customer Code Customer Code z i Customer Code TwinCAT PLC Runtime Environment TwinCAT C Windows Kernel Mode Libraries Im Gegensatz zur SPS wo das benutzerdefinierte Programm in einer Laufzeitumgebung ausgef hrt wird sind TwinCAT C Module nicht in so einer gehosteten Umgebung Dadurch werden TwinCAT C Module als Kernel Module sys ausgef hrt sie werden also demzufolge aus Kernel Modus Bibliotheken erstellt TC3 C Version 1 0 11 Anforderungen BECKHOFF 4 Anforderungen Ubersicht der Mindestanforderungen Die Implementierung und das Debuggen von TwinCAT 3 C Modulen erfordert Auf dem Engineering PC PC der f r Erstellung und Bearbeitung des Codes verwendet wird PC mit Microsoft Betriebssystem Windows XP oder Windows 7 Plattform fur x86 32bit oder x64 Betriebssystem wird unterst tzt Microsoft Visual Studio 2010 mit Service Pack 1 2012 und 2013 Level Professional Premium oder Ultimate GE HINWEIS Unter Windows 7 bitte VS2010
303. schreibung wird vom TwinCAT TMC Code Generator in Quellcode umgewandelt der dann im Kontextmen des TwinCAT C Projekts verf gbar ist lt AutoGeneratedContent ic O if age D TC_TYPE_41D44 TwinCAT TMC Code Generator AANA Aas T gt EG External C 4 Sq Header Fi TwinCAT Publish Modules D Modu A 2 Si Build B Resou 70 Version 1 0 TC3 C BECKHOFF Assistenten 11 3 1 bersicht La TMC Data Types sd Shows the properties of the Module 4 Ki Modules P7 CModule1 9 Implemented Interface General properties Da Parameters Ih Data Areas Name CModule1 Eh Data Pointers Class ID CLSID 6a84bf6d ddd8 463b b910 a3ddicc48121 Interface Pointers n Ro Deployment Class Factory Untitled1 Image _ Choose image Reset image Init Sequence SO Instantiable in RT Context Define the contexts of the module e 1 1 ID 11 Benutzerinterface TMC gt 71 Die grundlegenden Angaben des Herstellers des C Moduls bearbeiten und ein Bild hinzuf gen Data Types gt 73 Datentypen hinzuf gen entfernen und neu ordnen Modules gt 90 Zeigt die Module des Treibers Implemented Interfaces 93 Zeigt die implementierten Schnittstellen des Moduls Parameters gt 93 Ihre Parameter hinzuf gen entfernen und neu ordnen TraceLevelMax gt 100 Parameter der die Menge an protokollierten Nachrichten steuert f r fast jedes Modul vordefinier
304. spiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Konfigurationsdetails unten lesen vor Aktivierung Beschreibung Dieses Beispiel soll den Link Detect Bit des Netzwerkadapters d h von einem CX5010 zyklisch ein und ausschalten Das C Modul ist ber den Schnittstellenzeiger PciDeviceAdi des C Moduls mit dem NOV DP RAM Ger t verbunden Konfiguration Damit das Beispiel funktioniert m ssen Sie die Hardware Adressen passend zu Ihrer pers nlichen Hardware konfigurieren berpr fen Sie bitte die PCI Konfiguration TC3 C Version 1 0 251 C C Beispiele BECKHOFF Solution Explorer General Generic NOV DP RAM Device DPRAM Online lod Solution TwinCAT Project with DPRAM 1 pl 4 TwinCAT Project with DPRAM PCI gt system i Vendor ID F MOTION wen D PLC Device ID hex SAFETY BaseAddr 0 5 Device Found At e mc Bus Slot Addr gt a a E TePciloDrv Slot 0 0xFDDC0000 TePciloDrv Project 2 Bi TePciloDrv_Objl CModuleDp RAM ea ISA 4 yo Address a D Devices gt So Device 1 NOV DP RAM 74 Mappings Size Export Import Data Um zu berpr fen ob die Kommunikation mit NOV DPRAM korrekt eingerichtet ist kann die DPRAM Online Ansicht verwendet werden Solution Explorer General Generic NOV DP RAM Device DPRAM Online
305. stSensorData w hlen Sie die Spezifikation STRUCT und klicken auf Edit Struct Untitledi tmc TMC Editor X ZA 4 SC TMC A D 4 fE CModule1 Z9 Implemented Interfaces a Parameters SS TracelevelMax Parameter b h Data Areas Eh Data Pointers b Interface Pointers Deployment Edit the properties of the Data Type General properties toe Optional base type for struct data type Select Type Information Namespace Guid Optional data type settings Size Bits x64 specific x64 specific C C Name default x64 specific Comment E Hide sub items E Always visible 6 F gen Sie neue Unterelemente in die Struktur ein mittels Klicken auf die Add a new sub item Schaltfl che Untitledi tmc TMC Editor X ZA 4 SZ TMC 4 D stSensorData a ts Sub Items Le Subltem Le Subltem2 Le Subltem3 4 Bed CModule1 Si Implemented Interfaces a Ba Parameters SS TraceLevelMax Parameter b h Data Areas Eh Data Pointers b Interface Pointers Deployment Add remove and reorder Sub Items t se RI aA Name Specification Type Description Subltem1 Alias Subltem2 Alias Subltem3 Alias INT Normal Type INT Normal Type INT Normal Type Guid 18071995 0000 0000 0000 000000000006 18071995 0000 0000 0000 000000000006 18071995 0000 0000 0000 000000000006 Size Size X64 Unit TC3 C Version 1 0 75 Assistent
306. stand befinden e Copy TMI to target Die TMI TwinCAT Module Instance Datei generieren und an das Ziel bergeben 11 4 2 Kontext Modulel cpp Modulel h Object Context Parameter init Data Area Interfaces Interface Pointer Context 1 Depend On Manual Config X F Need Call From Sync Mapping Data Areas Interfaces 30 Inputs W 1 Outputs Data Pointer Interface Pointer Sort Order 0 Cycle Time us Task Port Symbol Port 02010010 350 e Context Den zu konfigurierenden Kontext ausw hlen siehe TMC Editor f r Hinzuf gen verschiedener Kontexte El HINWEIS Ein Datenbereich ist einem Kontext zugeordnet e Data Areas Interfaces Data Pointer und Interface Pointer Jede Instanz kann so konfiguriert werden dass sie in TMC definierte Elemente hat oder nicht e Result Table Liest der IDs die konfiguriert werden m ssen Zumindest muss der Kontext Task Spalte dem Task entsprechend konfiguriert werden 11 4 3 Parameter Init Modulel h Object Context Parameter Init Data Area interfaces Interface Pointer PTCID Name Value CS Unit Type Comment 0x00000001 Parameter Die Liste aller Parameter wie in TMC definiert kann f r jede Instanz mit Werten initialisiert werden Spezielle ParameterlDs PTCID werden verwendet um die Werte au
307. t Data Areas gt 101 Datenbereiche hinzuf gen entfernen und neu ordnen Data Pointers gt 108 Datenzeiger hinzuf gen entfernen und neu ordnen Interface Pointers gt 110 Datenzeiger hinzuf gen entfernen und neu ordnen Deployment gt 111 Bestimmt die Dateien die bereitgestellt werden Sehen Sie dazu auch Datentypen hinzuf gen bearbeiten l schen gt 74 11 3 2 Grundlegende Informationen Basic information Grundlegende Informationen bez glich der TMC Datei bearbeiten TC3 C Version 1 0 71 Assistenten BECKHOFF rex Module2 cpp Module2 h UntitledRT tmc TMC Editor a BG TMC gt Data Types Op Edit the basic information about the TMC file a iy Modules a bi CModule1 9 Implemented Interfaces Vendor Information Da Parameters b LJ Data Areas Name C Module Vendor b Eh Data Pointers H En gt Interface Pointers Image _ Choose image Resetimage Ra Deployment Optional properties Generated by Informationen zum Anbieter Name Modulnamen bearbeiten Choose Image Ein 16x16 Pixel Bitmap Symbol einf gen Reset image Modulbild auf Standardwert zur cksetzen Optionale Eigenschaften Generated by In diesem Feld wird angegeben wer die Datei erstellt hat und wer diese pflegen wird Beachten Sie dass beim Ausf llen dieses Felds nderungen nicht mehr m glich sind deaktiviert alle Bearbeitungsvorg nge im TMC Editor 11 3 3 Datentypen Im TwinC
308. t super AdsReadWriteInd rAddr invokeld indexGroup indexOffset cbReadLength cbWriteLength pData break 3 b Fugen Sie die Beispiellogik in den zyklischen Teil ein Die Methode lt MyClass gt CycleUpdate wird zyklisch aufgerufen das ist die Stelle wo die Logik zu verandern ist TODO Replace the sample with your cyclic code m_Counter m_Inputs Value replace this line m Outputs Value m Counter In diesem Falle wird der Z hler mCounter inkrementiert wenn die boolsche Variable m_bCount TRUE ist F gen Sie diesen If Fall in Ihre zyklische Methode ein HRESULT CModulel CycleUpdate ITcTask ipTask ITcUnknown ipCaller ULONG context HRESULT hr S_OK handle pending ADS indications and confirmations CheckOrders TC3 C Version 1 0 203 C C Beispiele BECKHOFF TODO Replace the sample with your cyclic code if m_bCount new part m Counter m Outputs Value m Counter 4 Server Beispiel ausf hren 8 Den TwinCAT TMC Code Generator gt 44 ausf hren um die Ein Ausg nge f r das Modul bereitzustellen 9 Diese ist m glicherweise ein guter Zeitpunkt um das Projekt zu speichern 10 Das Projekt kompilieren gt 44 11 Eine Modulinstanz erstellen gt 46 12 Einen zyklischen Task erstellen gt 48 und das C Modul f r die Ausf hrung in diesem Kontext konfigurieren 13 Sie k nnen optional die Hardware IO scannen und das Symbol Value
309. t Die Reihenfolge der Ausf hrung entspricht derjenigen die auf der Registerkarte Kontextkonfiguration festgelegt wurde Dieser Wert wird als Parameter SortOrder weitergegeben und im Smart Pointer des zyklischen Aufrufers m_spCyclicCaller in dem auch die Objekt ID des zyklischen Aufrufers enthalten ist gespeichert Das Modul ModuleDatalnOut hat Ein und Ausgangsvariablen Diese sind mit den entsprechenden Variablen des Datenanbieters verkn pft Das Modul ModuleDataProvider stellt einen Eingangs und einen Ausgangsdatenbereich zur Verf gung und implementiert die Schnittstelle ITcloCylic Die Methode InputUpdate kopiert Daten von den Eingangsvariablen auf das Dataln Symbol des standardm igen Datenbereichs Data und die Methode OutputUpdate kopiert Daten vom DataOut Symbol auf die Ausgangsvariablen Die Module ModuleDataAccessA und ModuleDataAccessB besitzen Zeiger auf Datenbereiche des Datenanbieters ber Verkn pfungen Diese Zeiger werden beim bergang SAFEOP zu OP initialisiert ModuleDataAccessA setzt das BitOut1 entsprechend Bit1 auf zyklische Weise ModuleDataAccessB entsprechend mit BitOut2 Bit2 Beide inkrementieren ValueOut mittels Multiplikation des internen Z hlers mit dem Wert Valueln 15 9 Beispiel Modulkommunikation SPS Modul ruft eine Methode eines C Moduls auf Dieser Artikel beschreibt die Implementierung e Eines C Moduls das Methoden f r die Steuerung einer Zustandsmaschine zur Verf gung stellt
310. t Wenn ein Modul Datenbereiche hat die es f r andere zug nglich machen m chte implementiert es die ITcADI Schnittstelle die den Zugriff auf die Daten erm glicht Datenbereiche k nnen Symbolinformationen enthalten die die Struktur des jeweiligen Datenbereichs im Einzelnen beschreiben Datenbereichszeiger Wenn ein Modul auf den Datenbereich anderer Module zugreifen m chte kann es Datenbereichszeiger enthalten Diese werden normalerweise w hrend der Initialisierung der Zustandsmaschine auf Datenbereiche oder Datenbereichsabschnitte anderer Module gesetzt Kontext In diesem Zusammenhang ist Kontext als Zeitkontext zu verstehen Kontexte werden u a f r die Konfiguration der Module ben tigt Einfache Module arbeiten normalerweise in einem einzigen Zeitkontext demzufolge muss er nicht n her spezifiziert werden Andere Module k nnen teilweise in mehreren Kontexten aktiv sein z B ein EtherCAT Master kann mehrere zeitunabh ngige Tasks unterst tzten oder eine Regelschleife kann Regelschleifen der darunterliegenden Ebene in anderer Zykluszeit abarbeiten Wenn ein Modul mehr als einen zeitabh ngigen Kontext hat muss das in der Modulbeschreibung angegeben werden Kategorien Module k nnen Kategorien unterst tzen die dem Konfigurator die Verbindung verschiedener Module untereinander erleichtern Eine Kategorie wird ber eine Kategorie ID definiert die hnlich wie Parameter oder Schnittstellen ID definiert ist siehe ID Manageme
311. t sind Dank dieser Herangehensweise kann ein abschlie end kompiliertes C Modul weit flexibler auf verschiedene mit dem IO Task verbundene IOs einwirken Eine Anwendung k nnte darin bestehen zyklische analoge Eingangskan le zu berpr fen wobei die Anzahl Eingangskan le von einem Projekt zum anderen unterschiedlich sein kann 03 Beispiel03 ADS Server Client gt 200 Beschreibt den Entwurf und die Implementierung einer eigenen ADS Schnittstelle in einem C Modul Das Beispiel enthalt zwei Teile in TC3 C implementierter ADS Server mit benutzerspezifischer ADS Schnittstelle in C implementierte ADS Client UI die benutzerspezifische ADS Meldungen an den ADS Server sendet 04 05 Beispiel05 CoE Zugriff ber ADS Zeigt wie Uber ADS auf CoE Register von EtherCAT gt 209 Geraten zugegriffen werden kann 06 Beispiel06 ADS C Client l dt ADS Zeigt wie ber die ADS Schnittstelle auf Symbole in Symbole hoch gt 210 einem ADS Server zugegriffen werden kann C ADS Client tritt in Verbindung mit einem in SPS C Matlab implementierten Modul Hochladen der verf gbaren Symbolinformation und Lese Schreiben Abonnieren f r Prozesswerte 07 Beispiel07 Empfang von ADS Beschreibt die Implementierung eines TC3 C Moduls Notifications gt 215 das ADS Notifications bez glich Datenanderungen auf anderen Modulen empfangt 10 Beispiell0 Modulkommunikation Beschreibt die Interaktion zwischen zwei C Modulen Verwendung von Daten
312. t LNKLIZ53 failure Curing Geteste to COMPS Lle esst or CORUE darauf hin dass ein Visual Studio 2010 verwendet wird aber ohne Service Pack 1 der f r TwinCAT C Module erforderlich gt 12 ist Bitte das Installationsprogramm f r den Service Pack von Microsoft herunterladen 14 6 Verwendung von C Klassen in TwinCAT C Modulen Beim Hinzuf gen von nicht TwinCAT C Klassen bei der Verwendung vom Visual Studio Kontextmen Add gt Class der Compiler Linker meldet Error 4 error C1010 unexpected end of file while looking for precompiled header Did you forget to add include ni to your source F gen Sie bitte die folgenden Zeilen am Anfang Ihrer erzeugten Klassendatei ein include TcPch h pragma hdrstop 194 Version 1 0 TC3 C 15 1 15 2 15 3 15 4 15 4 1 15 4 2 15 5 15 6 15 7 15 8 15 9 15 9 1 15 9 2 15 10 15 11 15 12 15 13 15 14 15 15 15 16 15 17 15 18 15 19 15 20 15 21 TEIL 15 C C Beispiele Beete ee 196 Beispiel01 Zyklisches Modul mit One 198 Beispiel02 Zyklische C Logik die IO vom IO Task verwendet seeesssseseesssesrsrrrsserernesrssrnssses 199 Beispiel03 CH als ADS SEI Er nannten an lin 200 Beispiel03 Der in C geschriebene TC3 ADS Server nn nennen nn 201 Beispiel03 ADS Client UI mCH tanna aenaeenn enemmn 205 Beispiel05 C CoE Zugriff Uber ADS nannten A naar 209 Beispiel06 UI C ADS Client l dt die Symbolik vom Modul hoch 210 Beispiel07 Empfang
313. t hat 0x274d 10061 WSAECONNREFUSED Verbindung abgelehnt Es konnte keine Verbindung hergestellt werden da der Zielcomputer dies ex plizit abgelehnt hat Dieser Fehler resultiert normalerweise aus dem Versuch eine Verbindung mit einem Dienst herzustellen der auf dem fremden Host in aktiv ist das hei t einem Dienst f r den keine Serveranwendung ausgef hrt wird 0x2751 10065 WSAEHOSTUNREACH Keine Route zum Host Ein Socketvorgang bezog sich auf einen nicht verf gbaren Host Weitere Winsock Fehlercodes Win32 Fehlercodes TC3 C Version 1 0 263
314. t verwechseln Verwechseln Sie nicht den ADS Server Port der ausdr cklich in Beispiel 03 implementiert wurde um Ihren eigenen Message Handler bereitzustellen mit dem regularen ADS Port zwecks Zugriff auf Symbole es gibt nichts zu tun wird automatisch zur Verf gung gestellt Wir ben tigen den regul ren ADS Port um auf Symbole zugreifen zu k nnen Sie k nnen den AdsPort beim IO Task Ihrer Instanz oder bei der Modulinstanz selber herausfinden weil das Modul im Kontext des IO Tasks ausgef hrt wird 212 Version 1 0 TC3 C BECKHOFF C C Beispiele Navigieren Sie zum IO Task Task1 und achten auf den Wert von Port 350 TwinCAT Projectl54 X Task Online Parameter Online m Solution TwinCAT Project154 1 project a BB TwinCAT Project154 Name Task 1 Pot 350 a Zi SYSTEM t 7 Auto start Options Real Time F Auto Priority M P VO at task b a Tasks o Priority Manageme J at task begin BE Task1 Priority 1 Sa Disable sfs Routes Cycle ticks 10 ei 10 000 ms Create symbols TcCOM Objects NC Motion Start tick modulo 0 amp Include extemal symbols DI PLC Separate input update E sarety Pre tick 0 4 K C 5 Extem sync a fe Untitled E Waming by exceeding Message box 2 Untitled1 Project gt F Untitled1_Obj1 CModulel gt ro Watchdog Cycles H fF Solution Explorer
315. taHdr zeigt auf eine Liste von Parametern optional Siehe Makro IMPLEMENT_ITCOMOBJECT_EVALUATE_INITDATA als Beispiel wie die Liste iteriert werden kann Ruckgabewert Zeigt den Erfolg der Zustandsanderung an Beschreibung Die Methode TcSetObjState initialisiert einen Ubergang zum gegebenen Zustand Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 7 Methode ITcComObject TcGetObjState Die Methode TcGetObjState fragt den aktuellen Zustands des Objekts ab Syntax HRESULT TcGetObjState TCOM_STATE pState Parameter pState Typ TCOM_STATE Zeiger auf den Zustand R ckgabewert Informiert ber Erfolg der Zustandsabfrage Beschreibung Die Methode TcGetObjState fragt den aktuellen Zustands des Objekts ab Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 12 4 2 8 Methode ITcComObject TcGetObjPara Die Methode TcGetObjPara fragt einen mittels seiner PTCID identifizierten Objektparameter ab Syntax HRESULT TcGetObjPara PTCID pid ULONG amp nData PVOID amp pData PTCGP pgp 0 Parameter pid Typ PTCID Parameter ID des Objektparameters nData Typ ULONG amp max L nge der Daten pData Typ PVOID amp Zeiger auf die Daten pgp Typ PTCGP f r zuk nftige Erweiterung vorbehalten NULL weitergeben TC3 C Version 1 0 127 Programmierreferenz BECKHOFF Ruckgabewert Informiert Uber Erfolg der Objektparameterabfrage Beschreibung Die Methode TcGetObjPara fragt einen
316. tateMachine FB_StateMachine ITeWatchSource ITeCyclic P m S IStateMachine iv m_refCnt 1 nCounter 109 nCounter 109 1 a m_objld a m_parentObjld 3 IF nCounter 109 500 THEN m_objName 4 fbStateMachine SetState 1 m_spSrv 5 fbStateMachine Start malean Name Pawe fye __ 7 END_IF Oid 01010010 m_bRun 1 unsigned int 8 Oid 01010010 m_State 2 Ishort S a IF nCounter 109 1000 THEN Oid 01010010 m_counter 424 unsigned int 10 fbStateMachine SetState 2 11 END IF 13 IF nCounter 10 1500 THEN 14 fbStateMachine Stop 15 nCounter 1088 0 16 END_IFRETURN 15 10 Beispiel11a Modulkommunikation C Modul f hrt eine Methode in C Modul an Dieser Artikel beschreibt wie TC3 C Module Uber Methodenaufrufe kommunizieren k nnen Die Methode sch tzt die Daten durch eine Critical Section folglich kann der Zugriff von verschiedenen Kontexten Tasks initiiert werden Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Projekt enth lt drei Module Die Instanz der CModuleDataProvider Klasse hostet die Daten und sch tzt vor dem Zugriff mit Hilfe der Retrieve und Store Methoden durc
317. ters of CModulel BEGIN_SETOBJPARA_MAP CModule1 SETOBJPARA_DATAAREA_MAP lt AutoGeneratedContent id SetObjectParameterMap gt UDJFARA VALU PLU V PLeveliria SETOBIPARA_VALUE PI AP IDADA GD ji e r lt AutoGeneratedContent gt END_SETOBJPARA_MAP UI TALL TATA ATTA AAA AA AAA AAA AA AA AAA AAA AAA AAA A A A AL 147 Get parameters of CModulel BEGIN_GETOBJPARA_MAP CModule1 GETOBJPARA_DATAAREA MAP lt AutoGeneratedContent id GetObjectParameterMap gt GETOBIP ARA_VALUE PID_Module1bE ADA IRCH acii lt AutoGeneratedContent gt END_GETOBJPARA MAP Um einen weiteren Parameter hinzuzuf gen verwenden Sie erneut den TwinCAT TMC Code Generator Schritt 3 berg nge der Zustandsmaschine Bedenken Sie die verschiedenen Zustands berg nge Ihrer Zustandsmaschine gt 27 TC3 C Version 1 0 97 Assistenten BECKHOFF Die Parameter werden beim bergang Init gt Preop und gegebenenfalls Preop gt Safeop festgelegt 11 3 4 2 2 Parametereigenschaften Parameter properties Die Eigenschaften des Parameters bearbeiten 98 Version 1 0 TC3 C BECKHOFF Assistenten Modulel cpp Modulel h 4 ya TMC _ Data Types Edit the properties of the parameter a iq Modules 4 fa CModulet e Implemented Interfaces General properties a 4 Parameters eegen Name bEnable bEnable Specification Alias oa a oh Inputs Ch data 4 EN Symbols type Value B00 m m Status as e LG m
318. the dimensions of the array di ae Dimension LBound Elements Min Max Max is unbounded 0 0 8 1 32 Im Falle von Parameter gt 93 und Datenzeigern gt 108 unterst tzt TwinCAT 3 Arrays mit dynamischer Gr e Min Mindestgr e des Arrays Max Maximale Gr e des Arrays Max is unbounded Zeigt an dass es keine obere Grenze f r die Array Gr e gibt TC3 C Version 1 0 87 Assistenten BECKHOFF 11 3 3 5 2 Enum Enumeration Eine benutzerdefinierte Aufzahlung erstellen Define the entries of the enumeration i A Text Enum Comment red 0 iblue 1 Es wird ein neuer Dialog eingeblendet um ein Element hinzuzuf gen oder zu entfernen Bearbeiten Sie mit Hilfe der Pfeile die Reihenfolge D Eindeutige Namen f r Aufz hlungselemente erforderlich Beachten Sie dass die Aufz hlungselemente eindeutig benannt sein m ssen da ansons ten der generierte C Code ung ltig ist Hinweis Text Aufz hlungselement Enum Geeigneter Integerwert Comment Optionaler Kommentar 11 3 3 5 3 Struct Struct Eine benutzerdefinierte Struktur erstellen Wahlen Sie bitte den Sub Items Knoten oder klicken Sie auf die Edit Struct Schaltfl che um zu dieser Tabelle zu wechseln a BO TMC Data Types D Edit the properties of the Data Type E 4 stSensorData tg Sub Items 4 o Mylnterface General properties Methods KS Modules Name stSensorData 4 fal CM
319. tomatisch festzulegen Diese werden mit Hilfe des Parameterdialogfensters des TMCEditor s wie hier 93 beschrieben konfiguriert Die CS CreateSymbol Checkbox erzeugt das ADS Symbol f r jeden Parameter demzufolge ist er von au en erreichbar 114 Version 1 0 TC3 C BECKHOFF Assistenten 11 4 4 Data Area Inputs 12 Value 14 0 Offs 0 0 Status A0 Offs 4 0 we Data 110 05 80 E WI Outputs OutputSre 2 MT 3symbols Value UDINT 11008500 Control UDINT 14 0 Offs 4 0 Data UDINT 4 0 Offs 8 0 E Liste aller Datenbereiche und ihrer Variablen wie in TMC definiert Die CS CreateSymbol Checkbox erzeugt das ADS Symbol f r jeden Parameter so ist die Variable von au en erreichbar 11 4 5 Schnittstellen TwinCAT SampleCPPProject X Modulel cpp Modulel h 00000012 0000 0000 E000 000000000064 IMComObject 03000010 0000 0000 E000 000000000064 Tech 03000012 0000 0000 E000 000000000064 ITcADI 03000018 0000 0000 E000 000000000064 TTcWatchSource Liste aller implementierter Schnittstellen wie in TMC definiert 11 4 6 Schnittstellenzeiger Modulel h Interface Pointer OTCID Object Name ID Type 02010010 Task1 0300001E 0000 0000 ITcCyclicCaller Liste aller Schnittstellenzeiger wie in TMC definiert Spezielle ParameterlDs PTCID werden verwendet um die Werte a
320. ttdessen werden in diesem Beispiel bin re Daten in die Datei geschrieben TC3 C Version 1 0 249 C C Beispiele BECKHOFF 15 14 Beispiel20a FilelO Cyclic Read Write Dieser Artikel stellt ein umfassenderes Beispiel als S20 und S19 dar Es beschreibt zyklischen Lese und oder Schreibzugriff auf Dateien von einem TC3 C Modul aus Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 2 Die enthaltene sin Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Beispiel beschreibt den Zugriff auf Dateien f r Lesen und oder Schreiben ber die Methode CycleUpdate also auf zyklische Weise Dieses Beispiel beinhaltet die folgenden Projekte und Modulinstanzen e Eine statische Bibliothek TcAsyncFilelo bietet den Dateizugriff Der Code f r den Dateizugriff kann geteilt werden also befindet sich dieser Code in einer statischen Bibliothek die von den Treiberprojekten genutzt wird e Ein Treiber TcAsyncBufferReadingDrv stellt zwei Instanzen zur Verf gung ReadingModule Verwendet die statische Bibliothek um die Datei AsyncTest txt zu lesen o WriteDetectModule Schreiboperationen erkennen und Leseoperationen veranlassen e Ein Treiber TcAsyncBufferWritingDrv stellt eine Instanz zur Verf gung WriteM
321. ttstelle kann von Modulinstanz mit Klassen ID CID_TcFileAccessAsync erhalten werden Bei Verwendung der asynchronen Schnittstelle geben die von der synchronen Variante geerbten Schnittstellenmethoden ADS_E_PENDING zur ck wenn eine Abfrage erfolgreich unterbreitet aber noch nicht abgeschlossen wurde Wenn der Aufruf eingeht w hrend die vorherige Anfrage immer noch abgearbeitet wurde wird der Fehlercode ADS_E_BUSY zur ckgegeben Beschreibung der Modulparameter e PID_TcFileAccessAsyncAdsProvider Objekt ID eines Tasks das die ADS Schnittstelle bereitstellt e PID_TcFileAccessAsyncNetld PID_TcFileAccessAsyncNetldStr AmsNetld des System Service der f r den Dateizugriff verwendet wird Die Str Variante nimmt die AmsNetld als Zeichenkette Bitte eins verwenden e PID_TcFileAccessAsyncTimeoutMs Zeit berschreitung f r einen Dateizugriff e PID_TcFileAccessAsyncSegmentSize Der Lese und Schreibzugriff auf Datei wird mit dieser Segmentgr e fragmentiert Siehe Beispiel20a FilelO Cyclic Read Write 250 Sehen Sie dazu auch Method ITcFileAccessAsync Check gt 142 Beispiel20a FilelO Cyclic Read Write gt 250 mg mg 12 4 6 1 Method ITcFileAccessAsync Check Zustand der Dateioperation abfragen Syntax virtual HRESULT TCOMAPI Check Parameter keiner Ruckgabewert Typ HRESULT Gibt S_OK zur ck wenn Dateioperation abgeschlossen ist Besonders interessante Fehlercodes e ADS_E PENDING
322. uch TMI Dateien bereitgestellt Diese Eigenschaften k nnen sowohl von TwinCAT Funktionen als auch von benutzerdefinierten Programmen verwendet werden 92 Version 1 0 TC3 C BECKHOFF Assistenten 11 3 4 1 Implementierte Schnittstellen Implemented Interfaces Die implementierten Schnittstellen des Moduls ansehen und bearbeiten GA P ya TMC Se b 3 Data Types 6 Shows the implemented interfaces of the module 4 a Modules 4 EI CModule1 t lt Q Implemented Interfaces Fy Parameters Name Interface ID Disable Code Generation b Data Areas ITComObject 00000012 0000 0000 E000 000000000064 7 h Data Pointers ITeCyclic 03000010 0000 0000 E000 000000000064 b Interface Pointers ITcADI 03000012 0000 0000 E000 000000000064 7 Deployment TeWatchSource 03000018 0000 0000 E000 000000000064 7 Name Name der Schnittstelle Interface ID Eindeutige ID der Schnittstelle Disable Code Generation Die Code Generierung freigeben sperren Sie k nnen f r das Modul Kontexte hinzuf gen oder entfernen Bearbeiten Sie mit Hilfe der Pfeile die Reihenfolge Choose data type Tel Name Namespace Guid Specification Size IStateMachine local ceb5764e 7804 4edb aab8 68310286829d Interface TcAppServices __ 08500102 0000 0000 lt 000 000000000064 Interface 4060 ITcAppSerices 2 ____ 08500104 0000 0000 e000 00000000064 Interface Jugen ITcBaseClassfa
323. ule1 cpp beginnt die Implementierung TC3 C Version 1 0 43 Schnellstart BECKHOFF 1 Die Methode lt MyClass gt CycleUpdate wird zyklisch aufgerufen das ist die Stelle wo die zyklische Logik zu positionieren ist An dieser Stelle muss der gesamte zyklische Code hinzugef gt werden TwinCAT Projects Microsoft Visual Studio File Edt Wew Project Build Debug TwinCAT PC Team Data Took Test Window Heb TWNCAT RT x86 DEE DECHE Al a DO E Gg ENEE 18 eebe SEET IECH EE EE SCH CECR S a aa CycleUpdateTcTask ipTask ITcUinknown A Solution TwinCAT Projects 1 project E D I echt Projects SYSTEM BS NC Motion SEELE EEE dd d dd dd dg dd dd dd EEE EEE ATA ELL A State transition from SAFEOP to PREOP HRESULT CModulei SetObjStatesP H HRESULT hr 5_OK return hr H Untied I Untitledi Project zi el External Dependencies 8 Header Fies d Modulei h N Resource h h TePch h h Untitled ClassFactory h Li Untklediinkerfacas h h UntiklediServkes h lt hutoGeneratedContent id ImplementationO Tied lic HRESULT CModulel CycleUpdate ITcTask ipTask ITcUnknown ipCaller unsigned long context HRESULT hr S_OK TODO Replace the sample with your cyclic code m_counter n_Inputs Value 3 E Source Files m_Outputs Value m counter Modulel cpp TePch cpp return hr a Untitled rc UntkiediClassFactory cpp 2
324. und die Verwendung eines Moduls einer statischen TC3 C Bibliothek Source Erhalten Sie den Quellcode f r dieses Beispiel 1 Die heruntergeladene ZIP Datei entpacken 252 Version 1 0 TC3 C BECKHOFF C C Beispiele 2 Die enthaltene sIn Datei mit TwinCAT 3 ffnen 3 Ihr Zielsystem ausw hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Das Beispiel beinhaltet zwei Projekte Das Projekt DriverUsingStaticLib verwendet den statischen Inhalt des Projekts StaticLib StaticLib Auf der einen Seite bietet StaticLib eine Funktion ComputeSomething in der StaticFunction h cpp Auf der anderen Seite wird eine Schnittstelle ISamplelnterface definiert siehe TMCEditor und in die MultiplicationClass implementiert DriverUsingStaticLib In der CycleUpdate Methode der ModuleUsingStaticLib wird sowohl die Klasse als auch die Funktion von StaticLib verwendet Das Beispiel verstehen Durchlaufen Sie bitte folgende Schritte um eine statische Bibliothek zu erstellen und zu verwenden Manuelle Neukompilierung Beachten Sie dass Visual Studio die statische Bibliothek bei der Erstellung des Treibers nicht automatisch erneut kompiliert F hren Sie das bitte manuell aus Hinweis v Nutzen Sie bei der Erstellung eines C Projekts bitte die TwinCAT Static Library
325. us m Data Dh Outputs a Dh DataArea3 Symbols a Eh Data Pointers Eh DataPointer Interface Pointers Kiel Deployment Symbol Funktion Einen neuen Datenzeiger hinzuf gen L scht den ausgew hlten Datenzeiger Verschiebt das ausgewahlte Element um eine Position nach unten Verschiebt das ausgew hlte Element um eine Position nach T oben Name Name des Datenzeigers Parameter ID Eindeutige ID des Parameters Type Definiert den Zeigertyp Context Zeigt die Kontext ID an Disable Code Generation Die Code Generierung freigeben sperren 11 3 4 4 1 Datenzeigereigenschaften Data Pointer Properties Die Eigenschaften des Datenzeigers bearbeiten 108 Version 1 0 TC3 C BECKHOFF Assistenten a BG TMC 4 Data Types LN Edit the properties of the Data Pointer 4 Modules B CModule1 e 9 Implemented Interfaces General properties a 4 Parameters SS TraceLevelMax Name DataPointer 5 bEnable 4 Li Data Areas Choose data type a m Inputs 4 EN Symbols Select INT m m Value Status Type Information m Data Namespace u Outputs 4 Ch DataArea3 a 18071995 0000 0000 0000 000000000006 Eh Symbols 4 Ba Define the dimensions of the array Dh DataPointer oterface Pointe BB Deployment Dimension LBound Elements Min Max Max is unbounded Configure the parameter ID User defined Enter a unique ID Value x00000002 Generate ID Constant Name PID_Module1DataPointer Optional data point
326. utomatisch festzulegen Diese werden mit Hilfe des Parameterdialogfensters des TMCEditor s wie hier gt 93 beschrieben konfiguriert Die OTCID Spalte definiert die Zeiger auf die Instanz die zu verwenden ist TC3 C Version 1 0 115 Assistenten BECKHOFF 11 4 7 Datenzeiger Untitledi tmc TMC Editor Modulel cpp Modulel h Object Context Parameter int Data Area Interfaces Interface Pointer Data Pointer PTCID Name 000000003 DataPointerl OTCID Object Name Area No Offset Size Lon R m 0 0 Liste aller Datenzeiger wie in TMC definiert Spezielle ParameterlDs PTCID werden verwendet um die Werte automatisch festzulegen Diese werden mit Hilfe des Parameterdialogfensters des TMCEditor s wie hier 93 beschrieben konfiguriert Die OTCID Spalte definiert die Zeiger auf die Instanz die zu verwenden ist 116 Version 1 0 TC3 C BECKHOFF Programmierreferenz 12 Programmierreferenz TwinCAT bietet eine Vielzahl Basisfunktionen Sie alle k nnen f r einen TwinCAT C Programmierer sehr n tzlich sein und werden hier dokumentiert Es besteht eine Vielzahl an C Beispielen gt 196 die unbedingt angeschaut werden sollten 12 1 Dateibeschreibung Bei der Entwicklung von TwinCAT C Modulen ist ein direkter Umgang mit Dateien des Dateisystems m glich Dies ist von Interesse entweder um zu verstehen wie das System funktioniert oder f r spezielle Anwendungsfalle w
327. w hlen 4 Das Beispiel auf Ihre lokale Maschine erstellen auf das C Projekt rechtsklicken und Build klicken 5 Die Konfiguration aktivieren Beschreibung Dieses Beispiel beschreibt den Empfang von ADS Notifications in einem TwinCAT C Modul Hierf r enth lt die Solution 2 Module e Ein C Modul das sich f r die Abfrage von ADS Notifications einer Variablen anmeldet TC3 C Version 1 0 215 C C Beispiele BECKHOFF e Zum einfachen Verst ndnis Ein SPS Programm das eine Variable MAIN PlicVar bereitstellt Wenn ihr Wert sich ver ndert wird eine ADS Notification an das C Modul geschickt e Das C Modul nutzt die M glichkeiten Meldungen aufzuzeichnen also zum Verst ndnis des Codes starten Sie einfach das Beispiel und achten dann auf den Ausgang Fehler Log wenn Sie den Wert Main PIcVar des SPS Moduls ndern Die Adresse wird beim Modul bergang PREOP gt SAFEOP SetObjStatePS vorbereitet Die CycleUpdate Methode beinhaltet eine einfache Zustandsmaschine die den erforderlichen ADS Befehl sendet Entsprechende Methoden zeigen die Empfangsbest tigungen an Die geerbte und berladene Methode AdsDeviceNotificationInd wird beim Eingang einer Notification aufgerufen W hrend der Abschaltung werden ADS Meldungen beim bergang zwecks Abmeldung versendet SetObjStateOS und das Modul wartet bis zum Auftreten einer Zeit berschreitung auf den Eingang von Best tigungen
328. wenn die Dateioperation nicht abgeschlossen ist e ADS_E _TIMEOUT wenn die Zeit berschreitung f r die Dateioperation abgelaufen ist Weitere ADS Zustandscodes gt 260 sind m glich 142 Version 1 0 TC3 C BECKHOFF Programmierreferenz Beschreibung Diese Operation berpr ft den Zustand der zuvor aufgerufenen Dateioperation 12 4 7 Schnittstelle ITcPostCyclic Die Schnittstelle wird von TwinCAT Modulen implementiert die ein Mal pro Taskzyklus im Anschluss an die Ausgang Aktualisierung aufgerufen werden vergleichbar mit Attribut TcCallAfterOutputUpdate der SPS Syntax TCOM DECL INTERFACE 03000025 0000 0000 e000 000000000064 ITcPostCyclic struct__declspec novtable ITcPostCyclic public ITcUnknown Ben tigtes include TcIoInterfaces h Methoden Sym Name Beschreibung bol H PostCycleUpdate gt 143 Wird ein Mal pro Taskzyklus nach der Ausgangs Aktualisierung aufgerufen wenn die Schnittstelle bei einem zyklischen Aufrufer angemeldet wurde Anmerkungen Die ITcPostCyclic Schnittstelle wird von TwinCAT Modulen implementiert Diese Schnittstelle wird der Methode ITcCyclicCaller AddPostModule bergeben wenn ein Modul sich selber bei einem Task anmeldet normalerweise als letzter Initialisierungsschritt beim Ubergang von SafeOP zu OP Nach der Anmeldung wird die Methode PostCycleUpdate der Modulinstanz aufgerufen 12 4 7 1 Methode ITcPostCyclic PostCyclicUpdate Die normal
329. x708 1800 ADSERR_DEVICE_BUSY Ger t ist besch ftigt 0x709 1801 ADSERR_DEVICE_INVALIDCONTEXT Ung ltiger Kontext muss in Windows sein 0x70A 1802 ADSERR_DEVICE_NOMEMORY Nicht gen gend Speicher 0x70B 1803 ADSERR_DEVICE_INVALIDPARM Ung ltige Parameter Werte 0x70C 1804 ADSERR_DEVICE_NOTFOUND Nicht gefunden Dateien 0x70D 1805 ADSERR_DEVICE_SYNTAX Syntax Fehler in Datei oder Befehl 0x70E 1806 ADSERR_DEVICE_INCOMPATIBLE Objekte stimmen nicht berein 0x70F 1807 ADSERR_DEVICE_EXISTS Objekt ist bereits vorhanden 0x710 1808 ADSERR_DEVICE_SYMBOLNOTFOUND Symbol nicht gefunden 0x711 1809 ADSERR_DEVICE_SYMBOLVERSIONINVALID Symbol Version ung ltig 0x712 1810 ADSERR_DEVICE_INVALIDSTATE Ger t im ung ltigen Zustand 0x713 1811 ADSERR_DEVICE_TRANSMODENOTSUPP AdsTransMode nicht unterst tzt 0x714 1812 ADSERR_DEVICE_NOTIFYHNDINVALID Notification Handle ist ung ltig 0x715 1813 ADSERR_DEVICE_CLIENTUNKNOWN Notification Client nicht registriert 0x716 1814 ADSERR_DEVICE_NOMOREHDLS Keine weitere Notification Handle 0x717 1815 ADSERR_DEVICE_INVALIDWATCHSIZE Gr e der Notification zu gro 0x718 1816 ADSERR_DEVICE_NOTINIT Ger t nicht initialisiert 0x719 1817 _ ADSERR_DEVICE_TIMEOUT Ger t hat einen Timeout 0x71A 1818 ADSERR_DEVICE_NOINTERFACE Interface Abfrage fehlgeschlagen 0x71B 1819 ADSERR_DEVICE_INVALIDINTERFACE Falsches Interface angefordert 0x71C 1820 ADSERR_DEVICE_INVALIDCLSID Class ID ist ung ltig 0x71D 1821 ADSERR_D
330. yclic 10 TwinCAT C Module far TwinCAT Module Class with Data Pointer TwinCAT C Module Name Location x Browse Ee TC3 C Version 1 0 41 Schnellstart BECKHOFF 5 Geben Sie im Dialogfenster TwinCAT Class Wizard einen eindeutigen Namen ein oder fahren Sie mit dem Vorschlag Object1 fort TwinCAT Class Wizard EHER 42 Version 1 0 TC3 C BECKHOFF Schnellstart Daraufhin wird ein eines TwinCAT 3 C Projekt erstellt TwinCAT Project6 Microsoft Yisual Studio File Edit View Project Build Debug TwinCAT PLC i TwinCAT RT x86 Debug ale O k ar E Eege ze ML uyi WI else log Solution TwinCAT Project 1 project El 7 Twincar Project E SYSTEM Je NC Motion nc oo VE SAFETY El ge C CG ed Untitled E 77 Untitled1 Project GP External Dependencies E iy Header Files h Modulei h i h Resource h ow B TePch h h UntitlediClassFactory h h UntitlediInterfaces h b Ih Untitled1Services h E Source Files 4 Modulei cpp Gi TePch cpp oo EY Untitledt re he C Untitled ClassFactory cpp H E TMC Files TwinCAT RT Files i H O TwinCAT UM Files a uo 9 3 TwinCAT 3 C Projekt implementieren In diesem Artikel wird beschrieben wie das Beispielprojekt geandert werden kann Nach der Erstellung eines TwinCAT C Projekts und dem ffnen der von lt MyClass gt cpp in diesem Beispiel Mod
331. yklische Abarbeitung zu implementieren Sehen Sie dazu auch Schnittstelle ITcCyclicCaller gt 131 130 Version 1 0 TC3 C BECKHOFF Programmierreferenz 12 4 4 Schnittstelle ITcCyclicCaller Schnittstelle zum Anmelden oder Abmelden der ITcCyclic Schnittstelle eines Moduls bei einem TwinCAT Task Syntax TCOM_DECL_INTERFACE 0300001E 0000 0000 e000 000000000064 ITcCyclicCaller struct__declspec novtable ITcCyclicCaller public ITcUnknown Ben tigtes include TcIoInterfaces h Methoden Sym Name Beschreibung bol e AddModule gt 131 Modul anmelden das die ITcCyclic Schnittstelle implementiert H RemoveModule gt 132 Die zuvor angemeldete ITcCyclic Schnittstelle eines Moduls abmelden Anmerkungen Die ITcCyclicCaller Schnittstelle wird von TwinCAT Tasks implementiert Ein Modul verwendet diese Schnittstelle um seine ITcCyclic Schnittstelle bei einem Task anzumelden normalerweise als letzten Initialisierungsschritt beim bergang SafeOP zu OP Nach der Anmeldung wird die Methode CycleUpdate der Modulinstanz aufgerufen Die Schnittstelle wird ebenfalls zum Abmelden des Moduls verwendet damit es nicht mehr vom Task aufgerufen wird 12 4 4 1 Methode ITcCyclicCaller AddModule Meldet die ITcCyclic Schnittstelle eines Moduls bei einem zyklischen Aufrufer z B einem TwinCAT Task an Syntax virtual HRESULT TCOMAPI AddModule STeCyclicEntry pEntry ITcCyclic ipMod ULONG PTR context 0
332. ymbol Standardeinstellung fur ADS Symbolerstellung Disable Code Generation Die Code Generierung freigeben sperren Hide parameter Umschalten zwischen Parameter ein ausblenden in der Systemmanager Ansicht Hide sub items Wenn der Datentyp Uber Unterelemente verf gt dann wird der Systemmanager keinen Zugriff auf die Unterelemente gew hren Dies sollte z B im Falle gro er Arrays verwendet werden Online parameter Als Online Parameter festlegen Read only Wechseln zu nur Lesezugriff f r Systemmanager Optionale Eigenschaften Eine aus Name Wert und Beschreibung bestehende Tabelle zwecks Kommentierung des Parameters Diese Information wird in den TMC und auch TMI Dateien bereitgestellt Diese Eigenschaften k nnen sowohl von TwinCAT Funktionen als auch von benutzerdefinierten Programmen verwendet werden 11 3 4 2 3 TraceLevelMax TraceLevelMax Parameter der den Tracelevel festlegt Dies ist ein vordefinierter Parameter den die meisten TwinCAT Modulvorlagen bereitstellen au er die leere TwinCAT Modulvorlage Die Einstellungen dieses Parameters sollten nicht geandert werden Siehe Meldungen aufzeichnen gt 176 Data Types Edit the properties of the parameter b o DataType1 4 Ki Modules s fel CModule1 General properties 29 Implemented Interfaces a Z Parameters Name TraceLevelMax Parameter ID PID_TcTraceLevel v x03002103 b wg Farameter u ees SS Parameter2 Specification Alias gt b I Data Areas Dh
333. zeigern mit einem direkten Zeiger DataPointer Die beiden gt 216 Module mussen auf demselben CPU Kern im selben Echtzeitkontext ausgef hrt werden 11 Dieses Beispiel beinhaltet zwei Teile Beispiell1 Modulkommunikation SPS Modul ruft eine Methode eines C Moduls auf gt 217 e Ein C Modul das als Zustandsmaschine fungiert die eine Schnittstelle mit Methoden zum Starten Stoppen aber auch zum Setzen Erhalten der Zustandsmaschine zur Verf gung stellt Zweites SPS Modul um mit erstem Modul zu interagieren indem Methoden vom C Modul aufgerufen werden TC3 C Version 1 0 197 C C Beispiele BECKHOFF 11a Beispiell1a Modulkommunikation C Dieses Beispiel beinhaltet zwei Klassen in einem Treiber Modul f hrt eine Methode in C kann auch zwischen zwei Treibern gemacht werden Modul an gt 247 Ein Modul das eine Berechnungsmethode bereitstellt Der Zugriff ist durch eine Critical Section gesch tzt e zweites Modul das als Aufrufer agiert um die Methode im anderen Modul zu verwenden 12 Beispiell2 Modulkommunikation Beschreibt wie zwei Module ber das Mapping von Verwendet IO Mapping gt 248 Symbolen des Datenbereichs verschiedener Module unter einander interagieren k nnen Die beiden Module k nnen auf demselben oder auf verschiedenen CPU Kernen ausgef hrt werden 19 Beispiel19 Synchroner Dateizu
334. zeof m_Inputs memset amp m Outputs sizeof m_Outputs m_bRun FALSE by default StateMachine does not run m_State Schritt 8 Methoden implementieren Den Code f r die vier Methoden eingeben Solution Explorer fa 2 El lod Solution TwinCAT Project PLC calling C Method 1 d 4 al TwinCAT Project PLC calling C Method x Statelv Nachinelv Aodule h Source e Control Ex plorer lt AutoGeneratedContent id ImplementationOf_IStateMachine EJHRESULT CStateMachineModule Start SYSTEM MOTION HRESULT hr S_OK m_bRun TRUE m ae return hr E SAFETY a face a El StateMachineDrv 4 3 StateMachineDrv Project gt Gil External Dependencies QI Header Files a E Source Files StateMachineDru rc C StateMachineDrvClassFactory cg C StateMachineModule cpp TePch cpp a amp TMC Files OG StateMachineDrv tmc E TwinCAT RT Files TwinCAT UM Files SE Mappings HRESULT CStateMachineModule HRESULT hr S_OK m_bRun FALSE return hr F HRESULT CStateMachineModule HRESULT hr S_OK m_State State return hr HRESULT CStateMachineModule HRESULT hr E_NOTIMPL return hr L lt AutoGeneratedContent gt Schritt 9 Zyklische Aktualisierung implementieren Stop SetState SHORT State GetState SHORT pState Die C Modulinstanz wird zyklisch aufgerufen selbst dann wenn die interne Zustandsmaschine sich im Stop Modus befi
335. zeugen Datentyp ausw hlen Select Datentyp ausw hlen hierbei kann es sich um Basisdatentypen von TwinCAT oder um benutzerdefinierte Datentypen handeln Es sind Datentypen quivalent zu den SPS Datentypen definiert wie TIME LTIME usw Siehe Datentypen der SPS f r weitere Ausk nfte TC3 C Version 1 0 85 Assistenten BECKHOFF Description Den Typ als Zeiger Referenz oder Wert mittels entsprechender Auswahl definieren e Normaler Typ e Zeiger e Zeiger auf Zeiger e Zeiger auf Zeiger auf Zeiger e eine Referenz Typinformation e Namespace F r ausgew hlten Datentyp definiert e GUID Eindeutige ID des ausgew hlten Datentyps Optionale Datentypeinstellungen Size Bits Gr e in Bits wei e Felder und in Byte Bit Notation graue Felder Fur x64 Plattform kann eine andere Gr e festgelegt werden C C Name Im generierten C Code verwendeter Name Der TMC Code Generator wird die Deklaration nicht generieren sodass benutzerdefinierter Code f r diesen Datentyp bereitgestellt werden kann Dar ber hinaus kann f r x64 ein anderer Name festgelegt werden Unit Eine Einheit der Variablen Comment Kommentar der z B im Instanzenkonfigurator sichtbar ist Hide sub items Wenn der Datentyp ber Unterelemente verf gt dann wird der Systemmanager keinen Zugriff auf die Unterelemente gew hren Dies sollte z B im Falle gro er Arrays verwendet werden Always visible Datentyp wird im Typensystem importiert s
Download Pdf Manuals
Related Search
Related Contents
Samsung MH020FPEA manual de utilizador Guia do Usuário Termômetro Registrador de Dados com Termopar XLogic SuperAnalogue Channel Owner`s Manual TDMoE Card for Loop-O9500R 仕様書 JVC HD-56FH97 User's Manual User Manual Contents - ProstateMate Schwimmbeckenbodenreiniger - Bock Bedienungs-und Installation Copyright © All rights reserved.
Failed to retrieve file