Zurück zur Übersicht

INAXCore

INAXCore ist ein leistungsstarkes und vielseitiges Framework, das entwickelt wurde, um Sie bei der Umsetzung Ihrer Automationsaufgaben zu unterstützen. Mit einer Reihe von Funktionen und anpassbaren Optionen kann die INAXCore-API als Grundlage für Ihre besonderen Anforderungen dienen. Als Framework für die Industrielle Automation bietet INAXCore Ihnen Zugriff auf das Dateisystem, auf SPSen verschiedener Hersteller, OPC DA, OPC UA, SMTP-Funktionalität, Skripting und eine Reihe anderer nützlicher Bausteine. Sie können es in Ihre eigene Anwendung integrieren oder Sie können es auch direkt mit Ihren Skripten über den INAXService betreiben.

Hauptmerkmale

  1. Bereitstellung von Standardkomponenten.
  2. Einfaches Einbinden von benutzerspezifischem Code.
  3. Unterstützung von verschiedenen Kommunikations-Schnittstellen (Web-API, SignalR, OPC UA).
  4. Ermöglich eine sehr tiefgehende Konfiguration durch unser „Compose“-Konfigurations-Systems.

Anwendungsbeispiele

  • Ermöglicht das Auslagern komplexer Funktionen von der SPS in die INAX-Anwendung.
  • Ermöglicht detailliertes Debuggen und Loggen von Abläufen.
  • Erhöht die Produktivität und reduziert die Update-Zeiten im Vergleich zu einer reinen SPS-Lösung.

Komponenten

Das Framework besteht aus verschiedenen Komponenten, die unabhängig voneinander verwendet werden können. Jede dieser Komponenten beinhaltet - neben einer von Ihrem Code verwendbaren Schnittstelle - eine Web-API und eine SignalR Schnittstelle. Damit eignet sich INAXCore auch sehr gut als Ergänzung für web-basierte HMI-Systeme.

Datenbanken

Erlaubt die Verwendung von Datenbanken, die mit dem "Entity Framework Core" (EF Core) von Microsoft kompatibel sind.

Dateisystem

Mit diesem Modul können Sie Dateien - auch unter Verwendung eines Formatanbieters (z.B. ini, json, xml, excel, ...) - lesen. Sie können nach Dateien und Verzeichnissen suchen und sie können sich auf Dateiänderungen registrieren. Darüber hinaus sind auch einige Streaming-Funktionen für Medientypen enthalten.

Nachrichten (E-Mails und Logging)

Dieses Modul ermöglicht es, beim Auftreten bestimmter Ereignisse Log-Nachrichten zu protokollieren und/oder entsprechende E-Mails zu versenden.

SPS

Dieses Modul stellt SPS-Verbindungen her und ermöglicht das Lesen und Schreiben von Daten von und zur SPS. Neben dem absoluten Datenzugriff ist auch der symbolische Zugriff möglich. Die Zuordnung von symbolischen zu physikalischen Adressen geschieht über Mapping-Dateien, die direkt aus dem SPS-Projekt erstellt werden können.

Skripting

Dieses Modul ermöglicht es Ihnen, Benutzercode einzubringen oder sogar ganze Module zu schreiben, welche die INAXCore-Schnittstellen verwenden können. Dies kann in Form von benutzerdefinierten DLLs, einfachem C#-Code oder durch Verwendung eines NuGet-Pakets geschehen.

Um solch ein Modul zu schreiben, muss eine C#-Klasse lediglich mit dem Attibut "Script" versehen werden. Dieses dient als Marker und definiert die Lebenszeit der Klasse und die möglichen Zugriffsarten. Die markierte Klasse wird dann automatisch von INAXCore bei Referenzierung gefunden und je nach Angabe des Lebenszyklus instanziiert. Durch „Dependency Injection“ können über den Konstruktor der Klasse weitere benötigte INAXCore-Komponenten injiziert werden. Das folgende Beispiel zeigt das.


[Script(LifecycleType = LifecycleType.Singleton, AccessType = AccessType.Rest, RegisterAs = typeof(IPlcMonitor))]
public class PlcMonitor : IPlcMonitor
{
    ...

    public PlcMonitor(ILogger<PlcMonitor> logger,
                            IPlcService plcService,
                            IOptions<PlcMonitoringOptions> options,
                            IEmailService mailService,
                            IScriptingService scriptingService,
                            ICryptoService cryptoService)
    {
        ...
    }

    [FunctionCall(FunctionCallType.CallOnStart)]
    [StatelessMethod("POST", "start", policy: PolicyNames.AdminPolicy)]
    public async Task StartAsync() {  ... }

    [FunctionCall(FunctionCallType.CallOnStop)]
    [StatelessMethod("POST", "stop", policy: PolicyNames.AdminPolicy)]
    public async Task StopAsync() { ... }

    [StatelessMethod("GET", "state")]
    public PlcMonitorState GetState() => _state;

    private async Task OnStateChanged(PlcMonitoringItem monitoringItem, PlcMonitoringAction action, object value)
    {  ... }

    private async Task<bool> ValidateStates(PlcMonitoringAction action, string plc)
    {
        ...
        var adresses = new Dictionary<string, PlcCompareStateItem>();
        foreach (var item in action.PreConditions)
        {
            adresses.Add(item.Address, item);
        }

        if (adresses.Any())
        {
            var result = await _plcService.ReadAsync(plc, adresses.Keys.ToArray());

            foreach (var item in adresses)
            {
                if (result.TryGetValue(item.Key, out var value))
                {
                    ...
                }
            }
        }

        return true;
    }

    private async Task SendMail(PlcMonitoringAction action)
    {
        if (action.ActionParameters != null && action.ActionParameters.Length > 2)
        {
            if (!await _mailService.SendMailAsync(action.ActionParameters[0], 
                                                    action.ActionParameters[1], 
                                                    action.ActionParameters[2], 
                                                    action.ActionParameters.Length > 3 ? action.ActionParameters[3] : null))
            {
                _logger.LogError("Mail sending failed! Message <{0}> to: {1}", action.ActionParameters[2], action.ActionParameters[0]);
            }
        }
    }

    private async Task ExecuteProgram(PlcMonitoringAction action) { ... }

    ...
}

Socket

Dieses Modul ermöglich die Kommunikation über TCP-Sockets. Standard-Protokolle wie beispielsweise RFC1006 werden dabei schon von Haus aus unterstützt.

Transport

Um mit INAXCore kommunizieren zu können, beispielsweise über eine Web-HMI, bietet jedes INAXCore-Modul verschiedene Schnittstellen an, über die Funktionen im Modul aufgerufen werden können. Durch die Skripting-Komponente ist es auch möglich, dass ein vom Benutzer erstelltes Skript Funktionen bereitstellt, die über diese Schnittstellen angesprochen werden können.

Web-API

INAXCore stellt eine Web-API zur Verfügung, die mittels HTTP-Requests angesprochen werden kann.

Swagger.png

SignalR

Für eine bidirektionale Kommunikation über Web stellt INAXCore sogenannte SignalR-Hubs bereit.

OPC UA-Server

Eine weitere Möglichkeit mit INAXCore zu kommunizieren ist OPC UA. Dabei fungiert INAXCore als OPC UA-Server, der Funktionen zum Aufruf bereitstellt.

OPCUA.png

Preise

Paket Preis
Plain Lizenz (ohne Komponenten) 500,00 €
+ Script 300,00 €
+ Plc 800,00 €
+ Database 300,00 €
+ Files 100,00 €
+ Notification Email 100,00 €
+ Notification Logging 100,00 €
+ Socket 100,00 €
Complete 2000,00 €
Stückzahl Rabatt
4-9 10%
10 - 25 15%
> 25 nach gesonderter Vereinbarung