Setting TwinCAT target platform

Dieser Artikel beschreibt, wie die TwinCAT Zielplattform über Automation Interface Code eingestellt wird. Die Zielplattform bestimmt, für welches Ziel die TwinCAT-Konfiguration kompiliert werden soll, z. B. TwinCAT x86 oder TwinCAT x64, und wird normalerweise von einer TwinCAT XAE Toolbar in Visual Studio aus eingestellt.

Setting TwinCAT target platform 1:

Der folgende Code-Ausschnitt geht davon aus, dass Sie bereits über eine DTE-Instanz verfügen, die zu einer TwinCAT-Konfiguration verbindet. Er überprüft die aktuell eingestellte Zielplattform und stellt sie zu einer anderen Plattform um.

Code-Ausschnitt (C#):

ITcSysManager systemManager = pro.Object;
ITcSysManager7 sysManPlatform = (ITcSysManager7) systemManager;
ITcConfigManager configManager = (ITcConfigManager) sysManPlatform.ConfigurationManager;
if (configManager.ActiveTargetPlatform == "TwinCAT RT (x86)")
configManager.ActiveTargetPlatform = "TwinCAT RT (x64)";
else
configManager.ActiveTargetPlatform = "TwinCAT RT (x86)";

Code-Ausschnitt (Powershell):

$configManager = $systemManager.ConfigurationManager
if ($configManager.ActiveTargetPlatform -eq "TwinCAT RT (x86)"){
  $configManager.ActiveTargetPlatform = "TwinCAT RT (x64)"} else {$configManager.ActiveTargetPlatform = "TwinCAT RT (x86)"}

Hinweis

Zielhardwareplattform oder Zielgerät mit TwinCAT-Konfiguration ändern?

Dieser Artikel beschreibt, wie die Zielhardwareplattform geändert werden kann. Wenn Sie das tatsächliche Zielgerät ändern möchten, auf das die TwinCAT-Konfiguration geschrieben werden soll, verwenden Sie bitte die Methode ITcSysManager::SetTargetNetId().

Der folgende Code-Ausschnitt zeigt, wie Sie Zugriff auf den Visual Studio Configuration Manager erhalten und einzelne TwinCAT-Teilprojekte (SPS, C++ …) für den Build-Prozess aktivieren oder deaktivieren. Der Ausschnitt geht davon aus, dass das derzeit geöffnete TwinCAT-Projekt als „TwinCAT-Projekt1” bezeichnet wird und dieses ein SPS-Projekt „Untitled1” enthält. Er deaktiviert anschließend das SPS-Projekt für den Build-Prozess.

Code-Ausschnitt (C#):

EnvDTE.SolutionContexts solutionContexts = solution.SolutionBuild.ActiveConfiguration.SolutionContexts;
foreach (EnvDTE.SolutionContext solutionContext in solutionContexts)
{
switch(solutionContext.ProjectName)
{
case "TwinCAT Project13\\Untitled1\\Untitled1.plcproj":
solutionContext.ShouldBuild = false;
break;
}
}

Code-Ausschnitt (Powershell):

$solutionContexts = $sln.SolutionBuild.ActiveConfiguration.SolutionContexts
foreach ($solutionContext in $solutionContexts)
{
  if($solutionContext.ProjectName -eq "TestSolution\\Untitled1\\Untitled1.plcproj")
  {
    $solutionContext.ShouldBuild = $false
  }
}