INAXCore
INAXCore ist eine leistungsstarke und vielseitige Softwarelösung, die darauf ausgelegt ist, Ihre Abläufe zu optimieren und Ihnen bei der Erreichung Ihrer Ziele zu helfen. Mit einer Reihe von Funktionen und anpassbaren Optionen kann die INAXCore API an ihre besonderen Anforderungen angepasst werden. Dieses Framework für industrielle Automatisierung bietet Ihnen Zugriff auf das Dateisystem, die SPS, SMTP-Funktionalität, Scripting und eine Reihe anderer nützlicher Komponenten. Sie können es in Ihrer eigenen Anwendung integrieren, oder Sie können es auch direkt über den INAXService laufen lassen.
Hauptmerkmale
- Bereitstellung von Standardkomponenten.
- Einfaches Einbinden von Benutzerspezifischen Code.
- Unterstützung von verschiedenen Zugriffschnittstellen (WebApi, SignalR, OpcUa)
- Ermöglich eine sehr feingranulare Einstellung durch die Nutzung unseres „Compose“ Konfigurations-Systems.
Nutzen
- 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 durch reduziert der Update-Zeiten im Gegensatz zu einer reinen SPS-Lösung.
Komponenten
Das Framework besteht aus einer Hand voll Komponenten die unabhängig voneinander verwendet werden können. Jede von ihnen bringt, neben einer im Code verwendbaren Schnittstelle auch eine Web-API und Signal-R Schnittstelle mit sich, wodurch sich dieses Framework auch gut als Ergänzung für Webbasierten HMI-Systemen eignet.
Datenbanken
Mit diesem Modul können Sie alle Datenbanken verwenden, die mit EFCore kompatibel sind.
Dateisystem
Mit diesem Modul können Sie Dateien lesen, auch unter Verwendung eines Formatanbieters (z.b.: ini, json, xml, excel, ...). 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 (Emails und Logging)
Dieses Modul ermöglicht es Ihnen, einige Benachrichtigungen wie Log-Nachrichten und E-Mails zu senden.
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. Dies geschieht über sogenannte Mapping Dateien, welche direkt aus dem SPS-Projekt erstellt werden können.
Scripting
Dieses Modul ermöglicht es Ihnen, Benutzercode einzubringen oder sogar ganze Module zu schreiben die die INAXCore Schnittstellen verwenden können. Dies kann in Form von benutzerdefinierten DLLs oder auch einfachem C#-Code oder durch Verwendung eines NuGet-Pakets geschehen.
Um so ein Modul zu schreiben, muss eine C# Klasse lediglich mit einem Skript-Attibute versehen werden, welches als Marker dient, der die Lebenszeit der Instanz angibt und auch die Zugriffsarten definiert. Die Markierte Klasse wird dann automatisch von INAXCore gefunden und je nach Angabe des Lebenszyklus instanziiert. Dabei wird auf „Dependency Injection“ zurückgegriffen, was dafür sorgt, dass sich der Klassenentwickler über den Konstruktor alle benötigten INAXCore Komponenten Injizieren lassen kann, wie das folgende Beispiel zeigen soll.
[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 unter Verwendung verschiedener Protokolle wie beispielsweise RFC1006.
Transport
Um mit INAXCore kommunizieren zu können, beispielsweise über eine Web-HMI, ist die Verwendung von verschiedenen sogenannten Transportsystemen möglich. Dabei stellt jedes INAXCore Modul Funktion zur Verfügung, die über diese Schnittstellen verwendet werden können. Durch die Scripting Komponente ist es auch möglich, dass ein vom Benutzer erstelltes Skript Funktionen bereitstellt, die über diese Schnittstellen angesprochen werden können.
Web-API
INAX stellt eine Web-API Schnittstelle zur Verfügung, die mittels HTTP-Requests angesprochen werden kann.

SignalR
Für eine bidirektionale Kommunikation über Web stellt INAX sogenannte SignalR-Hubs bereit.
OpcUA-Server
Eine weitere Möglichkeit mit INAX zu kommunizieren ist über OPCUA, dabei fungiert INAX als OPCUA-Server auf dem Funktionen aufgerufen werden können.

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 |