C#でPLCnextコンソールアプリケーションを開発:初心者ガイド
このチュートリアルでは、PLCnext Controlデバイス向けのシンプルな「Hello World」コンソールアプリケーションの作成方法を紹介します。アプリケーションはC#で記述され、.NET Coreをターゲットとしています。
このチュートリアルは、PLCnext Runtimeの完全に外部で実行されるC#アプリケーションを対象としています。eCLRをターゲットとするC#アプリケーションについては、PLCnext Info CenterのeCLRセクションを参照してください。
インストールチュートリアルでは、PLCに.NET Coreをインストールする方法を紹介しました。その場合、複数の.NET CoreアプリケーションをPLCで実行でき、共通の.NET dllの重複を最小限に抑えられます。
代替案として、.NET CoreフレームワークがインストールされていないPLCで.NET Coreアプリケーションを実行することも可能です。この場合、アプリケーションに必要なすべての.NET依存関係がアプリケーションとともに展開されます。これは、PLC上で1つの.NET Coreアプリケーションのみを必要とするプロジェクトに適しています。
このチュートリアルでは、後者のタイプのアプリケーションを扱います。
このチュートリアルでは以下を使用します:
- ファームウェア2021.0.3のAXC F 2152。.NET Coreのインストールは不要。
- Visual Studio 2019。この場合、PLCnext固有のアドインやSDKは不要。
手順
Visual Studioで、「C# Console App (.NET Core)」テンプレートを使用して新しいプロジェクトを作成します。
プロジェクトルートディレクトリに
runtimeconfig.template.jsonというファイルを追加し、以下の内容を記述します:{ "configProperties": { "System.Globalization.Invariant": true } }このプロパティ設定の理由は、インストールチュートリアルの「背景情報」セクションで説明されています。
プロジェクトファイル(.csproj)のPropertyGroupセクションに以下の行を追加します:
<RuntimeIdentifiers>linux-arm</RuntimeIdentifiers>これはコンパイラにLinux 32ビットプラットフォームをターゲットとすることを指示します。.csprojファイルは以下のようになります:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <RuntimeIdentifiers>linux-arm</RuntimeIdentifiers> </PropertyGroup> </Project>ソリューションエクスプローラーでソリューションを右クリックし、ターミナルを開きます。
ターミナルで以下のコマンドを実行します:
dotnet build ConsoleApp1.csproj dotnet publish -c RELEASE -r linux-arm ConsoleApp1.csproj -o MyAppここで
ConsoleApp1はソリューションの名前、MyAppはアプリケーションが公開される出力ディレクトリの名前です。必要に応じてDEBUGモードで公開することもできます。出力ディレクトリとそのすべての内容をPLCにコピーします(例:WinSCPを使用)。
PLCでシェルセッションを開きます(例:PuTTYまたはssh)。
実行ファイルの形式を確認します:
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, strippedアプリケーションが正しいプラットフォーム向けにビルドされていることが確認できます。
実行ファイルに実行権限があることを確認します:
chmod a+x /opt/plcnext/MyApp/ConsoleApp1アプリケーションを実行します:
/opt/plcnext/MyApp/ConsoleApp1 Hello World!
質問/コメント?
ご質問やコメントがある場合は、PLCnext Community Forumでお気軽にお尋ねください。
産業技術
- フリクションレスなユーザー体験の構築:UXデザインのブループリント
- ビジネスインテリジェンスの習得:データ駆動型成功のための勝利戦略の策定
- PLCnextとAlibaba Cloud Connectorの連携:ステップバイステップガイド
- PLCnextでのクラスタ管理:産業オートメーションにおけるKubernetesの活用
- JlinkでPLCnext Control上のJava 9アプリを最適化
- 複数公差の競合を避ける:コストと品質への影響
- BEV向け抵抗スポット溶接に銅タングステンを活用
- VHDLで文字列リストを作成する: ベスト・プラクティスと実装例
- VHDLで自己検証テストベンチを構築する実践ガイド
- VHDLで信頼性の高いタイマーを構築:クロックサイクルカウントで時間を計測
- Javaオブジェクト配列の作成:ステップバイステップガイド