TIA Portal

Suplanus.Stapi – TIA Openness Library

Hab ja für EPLAN schon Suplanus.Sepla gemacht und nun hab ich für TIA auch eine kleine Library erstellt. Alles OpenSource, kostenlos, wie gewohnt…

Hier ein kleiner Überblick über die ersten Funktionen:

  • TIA Portal einfach öffnen
  • Firewall automatisch setzen
  • Projekt öffnen / erstellen
  • Übersetzen
  • Baustein aus SCL-Quelle erzeugen
  • Netzwerkschnittstellen einlesen
  • Software einfach aus DeviceItem
  • SubNet einfach erstellen

Bei der Namensgebung bin ich sehr unkreativ, darum:
Suplanus TIA Api == Stapi

Suplanus.Stapi auf Github

 

Von |2019-03-27T10:02:49+01:002019-03-28|TIA Portal|

TIA Openness Firewall

Ich darf mich gerade, für ein Kundenprojekt, mit der Siemens TIA Portal API beschäftigen. Ist schon einige Jahre her dass ich das gemacht habe.
Viel hat sich geändert, im API-Design, und es sind viele neue Funktionen dazu gekommen.

Wird eine Openness Applikation ausgeführt muss dies vom User bestätigt werden:

Dies muss jedesmal gemacht werden wenn sich der Hash des Programms oder das Datum (LastModified) geändert hat. Das ist natürlich beim Debuggen schlimm, wenn jedes mal der Dialog kommt.

Ich hab mal die Methode hier gebastelt welchen den Whitelist-Eintrag (Bestätigung durch User) selbst macht:

public static void SetTiaPortalFirewall()
{
  // Check if admin
  WindowsIdentity identity = WindowsIdentity.GetCurrent();
  WindowsPrincipal principal = new WindowsPrincipal(identity);
  bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
  if (!isAdmin)
  {
    return;
  }

  Assembly assembly = Assembly.GetExecutingAssembly();
  string exePath = assembly.Location;

  // Get hash
  HashAlgorithm hashAlgorithm = SHA256.Create();
  FileStream stream = File.OpenRead(exePath);
  byte[] hash = hashAlgorithm.ComputeHash(stream);
  string convertedHash = Convert.ToBase64String(hash);

  // Get date
  FileInfo fileInfo = new FileInfo(exePath);
  DateTime lastWriteTimeUtc = fileInfo.LastWriteTimeUtc;
  string lastWriteTimeUtcFormatted = lastWriteTimeUtc.ToString("yyyy'/'MM'/'dd HH:mm:ss.fff");

  // Get execution version
  AssemblyName siemensAssembly = Assembly.GetExecutingAssembly().GetReferencedAssemblies().First(obj => obj.Name.Equals("Siemens.Engineering"));
  string version = siemensAssembly.Version.ToString(2);

  // Set key and values
  string keyFullName = $@"SOFTWARE\Siemens\Automation\Openness\{version}\Whitelist\{fileInfo.Name}\Entry";
  RegistryKey key = Registry.LocalMachine.CreateSubKey(keyFullName);
  if (key == null)
  {
    throw new Exception("Key note found: " + keyFullName);
  }
  key.SetValue("Path", exePath);
  key.SetValue("DateModified", lastWriteTimeUtcFormatted);
  key.SetValue("FileHash", convertedHash);
}

Adminrechte müssen da sein. Somit muss man Visual Studio als Administrator starten.

Von |2019-07-22T13:51:34+02:002019-03-26|TIA Portal|

API Showcase auf GitHub

Ich habe hier mal ein kleines Repo erstellt um verschiedene APIs zu zeigen.
Wie gewohnt mit fertigem Programmcode. Zusätzlich sind kleine Präsentationen enthalten um einen kleinen Überblick zu geben.

Derzeit sind enthalten:

  • EPLAN Scripting
  • EPLAN API
  • Siemens TIA Portal Openness

Also falls Jemand Interesse hat, einfach bei mir melden :^)

Von |2019-03-26T13:38:17+01:002019-03-26|C#, EPLAN, EPLAN-API, TIA Portal|

Siemens TIA Portal Openness V13 SP1

Seit der TIA Portal Version V13 SP1 ist nun die API (TIA Portal Openness) offen für alle.

Ich war damals schon beim Betatest dabei. Mir gefällt die API gut, an paar Ecken fühlt es sich noch komisch an… aber stellt euch vor, es werden keine weiteren Kosten für die API fällig! Da könnten sich ein anderes Softwarehaus auch mal Gedanken machen.

Die Installation bzw. die Informationsbeschaffung ist nicht ganz einfach, darum fasse ich das hier kurz zusammen.

 

Installation

Das Setup findet Ihr auf der DVD (Siemens_TIA_Openness_V13_SP1.exe) … aber meines Wissens erst ab V13 SP1. Die Installation braucht wie gewohnt lange bei TIA …

Danach muss noch euer Windows-Benutzerkonto mit der Gruppe verknüpft werden versehen werden. Das könnt Ihr hier nachlesen.

 

UsageFile / EnablerFile

Zum XML-Import von Bausteinen in eine Steuerung wird ein „Enabler-File“ benötigt.

Zusätzliche benötigen wir zum XML-Import und zur Nutzung von importierten Bausteinen (Öffnen, Übersetzen, Download,…) ein „Usage-File“.

Mit dieser Anleitung erhalten wir diese Dateien.

 

Verweise

In Visual Studio auf diese Dateien verweisen (C:\Program Files (x86)\Siemens\Automation\Portal V13\PublicAPI\V13 SP1):

  • Siemens.Engineering.dll
  • Siemens.Engineering.HMI.dll

Local Copy sollte auf false stehen.

 

Dokumentation

Die Online-Hilfe dokumentiert sehr gut die Funktionen und den Aufbau der API. Es sind auch sehr viele Code-Beispiele vorhanden.

2015-06-24_10-30-16

Weitere hilfreiche Dokumente finden sich hier:

Von |2016-07-29T07:39:39+02:002015-06-24|TIA Portal|
Nach oben