PLCnext Konsolenanwendung mit C# entwickeln: Einsteigerleitfaden
Dieses Tutorial zeigt, wie man eine einfache „Hello World“-Konsolenanwendung für ein PLCnext Control-Gerät erstellt. Die Anwendung ist in C# geschrieben und zielt auf .NET Core ab.
Beachten Sie, dass dieses Tutorial für C#-Anwendungen gedacht ist, die vollständig außerhalb der PLCnext Runtime laufen. Für C#-Anwendungen, die auf die eCLR abzielen, verweisen Sie bitte auf den eCLR-Bereich des PLCnext Info Centers.
Das Installationstutorial zeigte, wie man .NET Core auf einem PLC installiert. In diesem Fall können mehrere Anwendungen, die auf .NET Core abzielen, auf dem PLC ausgeführt werden, mit minimaler Duplizierung gemeinsamer .NET-DLLs.
Als Alternative ist es möglich, eine .NET Core-Anwendung auf einem PLC auszuführen, auf dem das .NET Core Framework nicht installiert ist. In diesem Fall werden alle für die Anwendung erforderlichen .NET-Abhängigkeiten mit der Anwendung bereitgestellt. Dies kann für Projekte geeignet sein, die nur eine .NET Core-Anwendung auf dem PLC benötigen.
Dieses Tutorial behandelt den zweiten Anwendungstyp.
Dieses Tutorial verwendet:
- AXC F 2152 mit Firmware 2021.0.3. .NET Core muss nicht installiert sein.
- Visual Studio 2019. In diesem Fall sind keine PLCnext-spezifischen Add-Ins oder SDKs erforderlich.
Vorgehensweise
In Visual Studio ein neues Projekt mit der Vorlage „C# Console App (.NET Core)“ erstellen.
Eine Datei namens
runtimeconfig.template.jsonim Projektstammverzeichnis hinzufügen mit folgendem Inhalt:{ "configProperties": { "System.Globalization.Invariant": true } }Der Grund für diese Eigenschaftseinstellung wird im Abschnitt „Hintergrundinformationen“ des Installationstutorials beschrieben.
Folgende Zeile zum PropertyGroup-Abschnitt der Projektdatei (.csproj) hinzufügen:
<RuntimeIdentifiers>linux-arm</RuntimeIdentifiers>Dies teilt dem Compiler mit, eine Linux 32-Bit-Plattform als Ziel zu verwenden. Die .csproj-Datei sollte dann etwa so aussehen:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeIdentifiers>linux-arm</RuntimeIdentifiers> </PropertyGroup> </Project>Im Solution Explorer mit Rechtsklick auf die Solution ein Terminal öffnen.
Im Terminal folgende Befehle ausführen:
dotnet build ConsoleApp1.csproj dotnet publish -c RELEASE -r linux-arm ConsoleApp1.csproj -o MyAppWobei
ConsoleApp1der Name der Solution ist undMyAppder Name des Ausgabeverzeichnisses, in dem die Anwendung veröffentlicht wird. Die Anwendung kann auch imDEBUG-Modus veröffentlicht werden, falls erforderlich.Das Ausgabeverzeichnis und seinen gesamten Inhalt auf den PLC kopieren (z. B. mit WinSCP).
Eine Shell-Sitzung auf dem PLC öffnen (z. B. mit PuTTY oder ssh).
Das Format der Executable prüfen:
file /opt/plcnext/MyApp/ConsoleApp1 ConsoleApp1: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=887a06cd9735de5da4b686517f69d68779571cec, strippedDies bestätigt, dass die Anwendung für die korrekte Plattform gebaut wurde.
Sicherstellen, dass die Executable Ausführungsrechte hat:
chmod a+x /opt/plcnext/MyApp/ConsoleApp1Die Anwendung ausführen:
/opt/plcnext/MyApp/ConsoleApp1 Hello World!
Fragen/Kommentare?
Wenn Sie Fragen oder Kommentare haben, stellen Sie diese bitte im PLCnext Community Forum.
Industrietechnik
- Reibungslose Nutzererfahrungen schaffen: Ein UX-Design-Blaupause
- String-Listen in VHDL erstellen: Best Practices & Beispiel
- Selbstprüfenden VHDL-Testbench erstellen – Praxisleitfaden
- Array von Objekten in Java erstellen: Schritt-für-Schritt-Anleitung
- Business Intelligence meistern: Eine gewinnende Strategie für datengetriebenen Erfolg
- Alibaba Cloud Connector mit PLCnext integrieren: Schritt-für-Schritt-Anleitung
- Cluster-Management auf PLCnext: Kubernetes für die industrielle Automatisierung nutzen
- Java 9 Apps auf PLCnext Control mit Jlink optimieren
- Konflikte vermeiden: Wie mehrere Toleranzen Kosten und Qualität beeinflussen
- Kupfer-Wolfram für fortschrittliches Widerstandspunktschweißen in BEVs nutzen