# TwinCAT 3 mit SPS verbinden



## Montreal (15 Februar 2016)

Hallo zusammen,

 ich beschäftige mich aktuell das erste Mal TwinCAT3. Mein Ziel: Ich würde gerne eine LED ansteuern und einen Taster auslesen.
 Als Hardware habe ich dazu einen Programmier-PC zur Verfügung (mit TwinCAT 3 in Visual Studio 2013 Professional integriert) und als SPS einen Beckhoff CX9020, mit EL1904 und und EL2904 Klemmen.
 Zum Anfang habe das C/C++-Schnellstartprojekt vom Beckhoff Information System für TwinCAT 3 befolgt: http://infosys.beckhoff.com/index.php?content=../content/1031/cx8090/html/cx8000_firststeps.htm&id=  Als Zielsystem habe ich den CX9020 gewählt, welchen ich vorher über den System-Knoten hinzugefügt habe. Wenn ich das Programm dann ausführe erhalte ich folgende Warnung: "Active Project platform 'TwinCAT RT(x64)' differs from current target platform 'TwinCAT CE6 (arm)'! Continue anyway (not recommended)"
 Ich verstehe aber nicht wo das Problem liegt. Kann mir jemand erklären, was ich dagegen machen kann?

 Zum zweiten würde ich den CX9020 eigentlich gerne an ein Netzwerk über einen Switch anschließen, an dem mein Programmier-PC ebenfalls hängt. Ich finde den CX9020 unter dem System-Knoten aber nur, wenn ich den CX9020 per Ethernet direkt an meinen Programmier-PC anschließe. Weiß jemand, ob das über einen Switch möglich ist und wenn ja, wie?

 Zum dritten habe ich nichts gefunden, wie ich die einzelnen I/Os ansteuern kann. Ich muss dafür ja zuerst die Geräte anlegen, aber es werden dann nie angeschlossene Geräte gefunden. Ich bin mir da aber auch nicht sicher, welche Geräte ich zu meiner Hardware anlegen muss. Wie muss ich da vorgehen?
 Wie geht es dann weiter, wenn ich die I/Os mit den Variablen verknüpfen möchte?

 Ich danke euch schonmal im Voraus! Ohne ein paar Hilfestellungen komme ich aktuell kein Stück weiter...

 Viele Grüße
 Montreal


----------



## Hack (16 Februar 2016)

Morgen,

die Target Platform sollte auf ARM stehen. Der CX9020 hat eine ARM CPU, wenn für x64 kompeliert wurde kann das auf dem Gerät nicht funktionieren.
--> Einfach umstellen, neu übersetzten, sollte gehen.

Sollte mit Switch Problemlos funktionieren. Kann man das Gerät Pingen?

Im Konfig-Mode, kann man die Geräte scannen. Funktioniert das schon nicht?

Grüße


----------



## Montreal (16 Februar 2016)

Guten Morgen Hack,

vielen Dank für deine Antwort, ich werde die Zielplattform morgen mal umstellen. Leider werde ich erst dann wieder Zugriff auf die Hardware haben.
Zum Switch: Ja, wenn alles am Switch ist, kann ich das Gerät problemlos pingen.
Zum Scannen: Ich bin mir zu 90% sicher, dass ich das auch ausprobiert habe, ich werde das aber auch am Mittwoch nochmal ausprobieren.
Dann melde ich mich wieder!

Viele Grüße


----------



## Montreal (17 Februar 2016)

Das Scannen hat jetzt geklappt. Ich hatte doch tatsächlich vergessen TwinCAT in den Konfig-Modus zu versetzen  Auch die Fehlermeldung zur Zielplattform habe ich abgestellt bekommen. Bei so doofen Fehlern merke ich das TwinCAT mir noch fremd ist.
Was ich aber immer noch nicht verstanden habe, ist wie ich auf die In- und Outputs der Klemmen zugreifen kann? Wie kann ich einen Wert lesen oder einen Output setzen? Es wäre nett, wenn mir da noch jemand helfen könnte.
Vielen Dank auf jeden Fall aber schonmal bis hierhin.


----------



## Hack (17 Februar 2016)

Wenn du im Programm eine Variable als Ein/Ausgang deklarierst, Bsp.:
bIn AT %I*: BOOL;
bOut AT %Q*: BOOL;
kannst du nach dem übersetzten unter Instance eine Verknüpfung ändern.

Anschliessend Konfiguration aktivieren und in den Run-Modus schalten.

Grüße


----------



## Montreal (17 Februar 2016)

Hack schrieb:


> Wenn du im Programm eine Variable als Ein/Ausgang deklarierst, Bsp.:
> bIn AT %I*: BOOL;
> bOut AT %Q*: BOOL;
> kannst du nach dem übersetzten unter Instance eine Verknüpfung ändern.
> ...



Das geht aber nur im SPS-Projekt, oder? Ich würde das eigentlich lieber mit C++ programmieren, da das näher an den Sprachen ist, die ich bereits kann und ich dazu auch generell mehr Infos im Netz finde.


----------



## Montreal (17 Februar 2016)

Ok, wie die Zuordung der Variablen zu den In-/Outputs in C++ funktioniert habe ich herausgefunden. Für die, die später nocheinmal vor dem gleichen Problem stehen sollten: 1.Im Projekt den <Classname>.tmc-File öffnen. Dort unter Data Areas/Inputs Outputs Variablen anlegen. 2.Rechtsklick auf das C++-Projekt und "TwinCAT TMC Code Generator" auswählen. 3. Dann lässt sich die Variable im Code verwenden, indem man "m_Outputs.<Variablenname>" eingibt (oder "m_Inputs" für Eingänge und 4. Zuordung bei der Modulinstanz festlegen, indem man die Variable auswählt.

Dafür kommt jetzt wieder die Fehlermeldung zur Zielplattform  Was habe ich falsch gemacht? (Die Zielplattform habe ich zwischendurch nicht verändert)


----------



## Hack (17 Februar 2016)

Was steht den bei der Zielplattform drin?


----------



## Montreal (17 Februar 2016)

Im Kofigurationsmanager für die Zielplattform steht bei dem C++-Projekt "TwinCAT RT(x64)" Ein ARM-Prozessor ist hier aber leider nicht auswählbar. Zur Auswahl stehen nur noch "RT(x86)", "UM (x64)" und "UM(x86)".
Bei dem SPS-Projekt steht wie gewollt "CE 7(ArmV7)"


----------



## Hack (17 Februar 2016)

Ich denke das funktioniert für Windows CE einfach nicht. Laut Infosys muss die Ziellaufzeit einen Windows NT Kernel haben.
Das hat WEC7 nicht. Siehe auch:
http://infosys.beckhoff.com/content/1031/tc3_c/63050394893862155.html?id=17253

Grüße


----------



## Montreal (17 Februar 2016)

Schade. Aber vielen Dank für deine schnelle Hilfe!


----------



## MasterOhh (17 Februar 2016)

Ausserdem brauchst du eine entsprechende TC3 Lizenz für C++ Module. Ob da die TC1210 TC3 PLC/C++ die passende ist, kann ich dir nicht sagen. Da muss du evtl. bei eurem Aussendienstler oder beim Support nachfragen.


----------

