CODESYSにおけるサンプル自動化プロジェクトの構築方法
DigiKeyの北米担当編集者の提供
2025-12-03
新しい自動化プラットフォームの導入には、急な学習曲線が生じたり、ベンダーロックインに陥る可能性があります。CODESYSは、IEC 61131-3に基づくハードウェアに依存しない開発環境により、これらの課題に対処します。複数のハードウェアプラットフォームへの展開のためのプログラミング、I/Oマッピング、ビジュアライゼーション、統一されたワークフローを提供します。
本記事では、初期設定から実行時テストまで、CODESYSで完全な自動化プロジェクトを構築する方法を説明します。読者の皆様は、デバイスツリーの設定、I/Oチャンネルのマッピング、構造化テキストによるロジックプログラム、ビジュアライゼーションの設計、実行環境への接続、動作確認のためのデバッグ戦略の適用を行うことができます。さらに実践的な手順に加え、プロジェクトの組織化、ライブラリ管理、安全な導入に関するベストプラクティスについても重点的に解説します。
このチュートリアルでは、利用しやすさを考慮してCODESYS内蔵シミュレータを使用しますが、同様のワークフローはDigiKeyから入手可能なハードウェアプラットフォーム、CODESYS対応のPLC、産業用Raspberry Piコントローラ(SeeedのEdgeBox-RPI-200など)、統合ランタイム搭載のHMIなどにも適用できます。本記事を通じて、CODESYSで機能する自動化アプリケーションを構築するための明確なフレームワークを確立し、産業環境における拡張性と信頼性を支える技術的知見を得ることができます。
プロジェクト設定
最初のステップは、CODESYS開発システムで新規プロジェクトを設定することです。テンプレートリストから、「標準プロジェクト」を選択し、MotorControlDemoのようなわかりやすい名前を付けます。デバイスを指定するように求められたら、CODESYS Control Win V3を選択します。CODESYS Control Win V3は、専用のハードウェアなしでシミュレーションを行うWindowsベースのランタイムを提供します。これにより、PLCや産業用Raspberry Piモジュールなどのプラットフォームに展開する前に、ワークフロー全体をテストすることができます。
プロジェクトは、コントローラ、I/Oチャンネル、通信リンクをまとめたデバイスツリーで起動します。この例では、ツリーにはコントローラオブジェクト、スタートボタンとストップボタン用のデジタル入力、モータとインジケータランプのデジタル出力が含まれています。これらの信号を制御ロジックに接続するには、グローバル変数リストまたはプログラムエディタで、StartButton、StopButton、MotorOn、LampOnなどのブール変数を宣言します。シミュレーションでは、これらの値を切り替えることで、ハードウェアの動作をシミュレートします。ハードウェア上では、これらは物理的なI/Oポイントに直接接続されます。
図1:モータ制御I/O用のブール変数宣言。(画像提供:執筆者)
この段階での明確で一貫性のある命名規則は、デバッグ作業を最小限に抑え、新たな機能やデバイスが追加された際の拡張を容易にするベストプラクティスです。
プログラミングロジック
プロジェクト構造が確定したら、次のステップとして、CODESYSがサポートするIEC 61131-3言語の1つである構造化テキスト(ST)言語による制御ロジックの実装を行います。ST言語は、可読性と表現力を兼ね備えたPascal風の構文を採用しており、シーケンシャルルーチンや状態ベースロジックの明確な実装をサポートします。
本デモプロジェクトでは、シンプルなスタート/ストップラッチが必要です。スタートボタンを押すとモータとランプが作動し、ストップボタンを押すと両方の電源が切断されます。これをST言語で表すと図2のようになります。
図2:スタート/ストップラッチロジックの構造化テキスト言語の実装。(画像提供:執筆者)
この例は、条件文、ブール論理、変数代入など、ST言語の基本を説明しています。変数はプロジェクト設定時に定義されているため、I/Oチャンネルに直接対応し、ハードウェア信号とプログラム実行を結びつけます。
大規模なプロジェクトでは、組織化がカギとなります。初期化コードでデフォルト状態を設定し、周期的タスクが入力を監視し出力を駆動します。ファンクションブロックやライブラリを活用することで、ロジックのカプセル化、冗長性の削減、可読性の向上が図られます。シミュレーションで開発した同一のSTコードは、わずかな変更のみで、小型PLCやPACなどDigiKeyで入手可能なハードウェアに後から展開できます。この移植性は、ハードウェアに依存しない環境としてのCODESYSの価値をさらに高めています。特に、初期化処理、周期的な監視、エラー処理を分離することは、プロジェクトが拡大するにつれて可読性を向上させ、予測可能な実行を保証するベストプラクティスです。
デバイスおよびI/Oマッピングの設定
プロジェクトの構造と変数が確定したら、次のステップはI/Oマッピングを通じて変数をハードウェア、またはシミュレートされたI/Oにリンクすることです。CODESYSでは、これはデバイスエディタの「I/O Mapping」タブで処理され、各チャンネルがプロジェクト変数とペアリングされます。
まずデバイスツリーの下にコントローラとそのI/Oモジュールを挿入することから始めます。たとえば、2つのデジタル入力と2つのデジタル出力を備えたモジュールを追加することができます。I/O機能を備えたデバイスが存在すると、I/Oマッピングタブがアクティブになり、入力および出力チャンネルのテーブルが表示されます。このテーブルには、変数名、アドレス、データ型の列が含まれます。デバイスの説明には通常、デフォルトの名前とアドレスが記載されていますが、システムの配線や命名規則に合わせてこれらを変更することができます。
I/Oマッピングタブでは、変数をチャンネルにマッピングする方法は主に3通りあります。既存の変数(例:StartButton、MotorOn など)をリンクする、インターフェース内で新しい暗黙のグローバル変数を生成する、またはプロジェクトの要件に合わせてアドレスを直接編集する、という方法です。定義上、入力にマッピングされた変数は読み取り専用であり、各変数は1つのチャンネルにのみマッピングできます。
実稼働環境では、マッピング時に信号レベル、モジュール定格、接地などの電気インターフェース仕様への配慮も必要となります。これらの要素は本チュートリアルの範囲外ですが、ハードウェア導入においては極めて重要です。
ドキュメント化や一括編集のため、マッピング設定はCSVファイルとしてエクスポートまたはインポートすることができます。マッピングデータをCSVへエクスポートすることは、監査用ドキュメントの提供やチーム連携の信頼性ある参考手段となるため、ベストプラクティスとされています。
ビジュアライゼーションおよびHMI
ロジックができあがったら、次のステップはシステムを制御および監視するユーザーインターフェースの作成です。CODESYSは、統合されたビジュアライゼーションツールセットを提供しており、WebVisu、TargetVisu、およびCODESYS HMIという複数のデプロイモードをサポートしています。これにより、ウェブブラウザ、ローカルディスプレイ、または専用デバイス上でビジュアライゼーションを実行することができます。
デバイスツリー内のアプリケーションノード下にビジュアライゼーションマネージャオブジェクトを追加し、MainVisuなどのビジュアライゼーション画面を1つ以上追加します。各画面には、ボタン、ランプ/インジケータ、トレース表示、トレンドグラフなどのUI要素をドラッグします。これらの要素は、要素のプロパティダイアログを通じてプログラム変数(例:StartButton、LampOnなど)に関連付けられます。
例えば、モータの状態を表示するには、ランプ要素を配置し、その変数リンクをLampOnに設定します。この変数がTRUEの場合、ランプは点灯し、FALSEの場合は消灯したままとなります。このように変数と要素を直接的に結びつけることで、直感的な実行操作が可能となります。
デプロイメントモードのオプション
インターフェースの設計が完了したら、次のステップとして、オペレータや外部システムにどのようにビジュアライゼーションを展開するかを決定します。CODESYSは複数のデプロイメントモードをサポートしており、それぞれ異なる性能要件やネットワーク要件に対応しています。
- WebVisu:デバイスがHTTP/HTTPS経由でウェブサーバとして動作し、ウェブブラウザ上でHTML5として実行されます。専用ディスプレイなしでリモートアクセスを可能にします。
- TargetVisu:コントローラやデバイスに直接接続されたディスプレイ上で動作します。制御とHMIを単一ユニットに統合した組み込みシステムに効果的です。
- CODESYS HMI:ビジュアライゼーション専用の独立したランタイムインスタンスであり、複数のコントローラへの接続が可能です。
デプロイメントモードを選択する際は、性能、表示要件、ネットワークトポロジを考慮してください。WebVisuは柔軟性がありますが、コントローラがHTTPサーバと追加負荷をサポートする必要が生じる可能性があります。TargetVisuはネットワーク遅延を低減しますが、ローカルディスプレイのサポートが必要であり、HMIモードはマルチコントローラシステム向けに拡張性を備えています。
実際のハードウェアの例
ハードウェアの参考例として、DigiKeyで入手可能なMaple Systems cMT3072XHT 7インチHMIは、統合されたCODESYSランタイムとディスプレイを搭載しており、プロジェクトで作成したビジュアライゼーション画面を直接表示することができます。
ビジュアライゼーション設計の最適手法としては、ライブラリ画面やパラメータインターフェースを活用し、再利用可能なテンプレートを構築することが挙げられます。設計者はまた、アラームおよびトレース表示を構成し、重要な変数のみを表示してコントローラの負荷を最小限に抑える必要があります。これにより、テキストリストや可変スケーリングによる多言語対応や単位変換が可能となります。さらに、スナップラインやコンテナを使って要素の位置を固定し、画面サイズを問わず一貫したレイアウトを維持します。
ビジュアライゼーション機能が接続されたことで、アプリケーションは完全にインタラクティブになりました。ユーザーは、HMIを通じてモータの始動および停止、インジケータの監視、稼働状況の表示が可能です。これでビジュアライゼーション段階は終了し、プロジェクトはランタイムの準備が整いました。
デプロイメントおよびランタイムテスト
プログラミングとビジュアライゼーションが完了したら、プロジェクトをランタイム環境に展開する必要があります。CODESYSは、組み込みのControl Win SLシミュレータから産業用ハードウェア上のライセンスされたランタイムまで、いくつかのオプションをサポートしています。
開発システムのオンラインメニューから、ターゲットデバイスまたはシミュレータを選択し、接続を確立します。コンパイルされたプロジェクトをランタイムにダウンロードします。IDEは転送ステータスを表示し、設定の不一致があればハイライト表示します。ロード後、コントローラをRUNモードに切り替えて実行を開始します。
内蔵のWindowsランタイム環境ではハードウェアなしで迅速な検証が可能であり、CODESYSのランタイムは、DigiKeyから入手可能なKUNBUS Revolution Pi(RevPi)Connect 4などの組み込みLinuxプラットフォーム上でも動作します。このオープンソースの産業用Raspberry Piモジュールは、同一プロジェクトがシミュレーションから現場導入までシームレスに展開できることを示しています。
デバッグおよびベストプラクティス
CODESYSは稼働監視に加え、プロジェクトの改良と保守のための統合デバッグ環境を提供します。ブレークポイントの設定、ロジックのシングルステップ実行、実行フローの解析などを手動で設定し、実行することができます。トレースツールは、変数の履歴を記録し、後で分析できるようにすることで診断機能の幅を広げます。事後検証において頻繁に活用される機能です。
トラブルシューティングでは、CODESYSは対応付けられたされた信号を一時的に上書きする力変数(図3)を生成することができます。
図3:CODESYSの力変数の命名規則の構文。(画像提供:執筆者)
これらは特に、ボタン押下などの条件をシミュレートする時や、試運転時に有効です。強制信号がアクティブな場合、CODESYSはマッピングされた信号の代わりに強制値を代入します。強制処理はリアルタイムの実行を妨げる可能性があるため、慎重に適用し、すでにマッピング済みのチャンネルにのみ適用すべきです。
長期的な信頼性は、構造化されたプロジェクト管理にかかっています。ライブラリマネージャはモジュール設計と集中型バージョン管理をサポートし、定義済みプレースホルダによりハードウェアターゲット間で一貫したビルドが保証されます。安定したライブラリバージョンの維持は、導入時やアップグレード時の互換性リスクを軽減することができます。
こうした構造的な安全策に加え、日々のベストプラクティスも同様に重要です。具体的には、ハードウェア移行前にシミュレータでプロジェクトを検証すること、また実稼働環境ではブレークポイントの使用や強制操作を慎重に行い、リアルタイムサイクルを妨げないことが挙げられます。さらに、既知の正常なビルドとライブラリセットをアーカイブして迅速なロールバックを可能にすること、変数マッピングのドキュメント化やビジュアライゼーションリンクの提供により円滑なチーム引き継ぎを支援することも推奨されます。
まとめ
CODESYSは、プロジェクト設定、I/Oマッピング、ロジックプログラミング、ビジュアライゼーション、およびデバッグを1つの環境に統合することで、設計から展開までのプロセスを加速します。このワークフローは、CODESYS対応PLC、産業用Raspberry Piコントローラ、HMIを含むDigiKeyプラットフォーム全体に展開され、構想から拡張性のある自動化への移行を実現する実用的なフレームワークを提供します。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。


