HOME > ソフテックだより > 第401号(2022年5月4日発行) 技術レポート「CODESYSを使ってみて〜簡易スタートアップガイド〜」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第401号(2022年5月4日発行)
技術レポート

「CODESYSを使ってみて〜簡易スタートアップガイド〜」

1. はじめに

私は入社9年目になる本社事業所の社員です。主にWindows用のアプリケーション開発を担当することが多いのですが、ソフトウェアPLCのCODESYSを用いた開発を手掛ける機会がありました。今回のソフテックだよりでは、CODESYSを使ったことがない方や使用を検討している方に向けて、CODESYSでの開発をテーマに、特徴や実装例などをご紹介させていただきます。

2. CODESYSの特徴

CODESYSとは国際標準規格IEC61131-3に準拠したソフトウェアPLCです。ソフトウェアPLCについては、”ソフテックだより第397号 技術レポート「ソフトウェアPLCとエッジアプリケーション・HMIのOPC UA通信」”などもご参照いただければと思います。
Windows用アプリケーション開発とは異なる部分が多々ありましたが、その中でも特徴的だと感じた点を紹介させていただきます。

2-1. 開発環境、ライセンスについて

CODESYSをインストールすると同名の「CODESYS」というIDE(統合開発環境)がインストールされました。こちらのIDEは無料で利用できます。ただ、ソフトウェアPLCとしてCODESYSを実行するのにライセンスが必要です。無料ライセンスでも動かすことはできますが、2時間でソフトウェアPLCが停止します。実機で動かしていくにはCODESYS STOREで対象のOSにあわせたライセンスを購入する必要があります。ただ、研究や勉強用途などであれば、無料ライセンスでも十分利用可能です。

2-2. ターゲットについて

CODESYSをインストールすると、IDEと一緒にWindows用のソフトウェアPLCもインストールされます。このソフトウェアPLCですが、Windows以外のOSでも利用可能になっています。CODESYS STOREを見てみると、Windows以外にもLinuxやRaspberry Piなどのライセンスが用意されています。私が対応した案件もRaspberry PiにCODESYSをインストールしてデバッグや評価などをしていました。
なお、Raspberry Piの実機を用意できるまでは、Windowsで開発やデバッグを進めていました。Raspberry Piが用意できてからは、そちらに移行したのですが、IDE内でターゲットを切り替えるのみで移行完了で、プログラミングしていたコードなどは、そのまま利用可能でした。全く異なる環境に対して、プログラムが流用できるのは、強いメリットと感じました。

2-3. 開発言語について

CODESYSで利用可能な言語は「LD言語」、「SFC言語」、「FBD言語」、「ST言語」、「IL言語」、「CFC言語」になります。私が対応した案件では「FBD言語」をメインに、ファンクションなどは「ST言語」なども利用してプログラミングしました。各言語の比較は”ソフテックだより第263号 技術レポート「FBD言語を使用したPLCプログラミング」”なども参考にしていただければと思います。
これまでのWindows用アプリケーション開発ではC#やC++などがメインだったため、慣れるのに少し時間がかかりましたが、「ST言語」はC言語ライクな部分もあり、比較的馴染みやすかったかと思います。

2-4. HMI機能について

ソフトウェアの画面として、CODESYSでHMI(ヒューマンマシンインターフェース)を作成することが可能です。対象ハードウェアにディスプレイをつなぐことでPLCの状態をモニタリングするTargetVisuやWebサーバーとしてブラウザ経由でPLCの状態をモニタリングするWebVisuなどがあります。私が対応した案件ではWebVisuを利用して、ブラウザ経由で画面を見ることができるようにしていました。PLCとHMIというと通常はタッチパネルディスプレイなども別途準備が必要な場合がありますが、WebVisuを利用すれば、お手持ちのノートPCなどからもモニタリングできます。

3. CODESYSの実装例

Windows上でCODESYSのソフトウェアPLCを実行し、デバッグしつつ、WebVisuで画面を閲覧できるところまでの手順を紹介させていただきます。うまく動かすことが出来ず、解決に時間がかかってしまった部分もありますので、そちらもあわせて紹介させていただきます。

3-1. プロジェクト作成

まず、CODESYSの新規プロジェクトを作成します。対象デバイスやプログラムの言語は任意のものを選択してください。ただ、デバイスの選択を間違えるとプログラムが実行できないため、注意が必要です。私の環境ではインストール直後は「CODESYS Control Win V3」が初期選択になっており、これがWindows用のデバイスなのだろうと思いこんでいました。いざ動かしてみようとすると接続できず、原因が全く分からなかったのですが、デバイスの選択に問題がありました。「CODESYS Control Win V3 x64」というデバイスがあり、64bitOSはこちらを選択する必要がありました。

システム構成図
図1.  デバイス更新画面

3-2. プログラム作成

プロジェクトを作成すると、「PLC_PRG」というPOU(Program Organization Unit)が作成されています。中身はプロジェクト作成時に指定した言語を記載する空のプログラムです。同様のPOUは後から追加も可能で、POU毎に別の言語で作成することも可能です。

ここでは以下のような単純なサンプルプログラムを用意しました。画面上部が変数の定義になり、INT型のCountという変数を初期値0で定義しています。画面下部がプログラムになり、実行時にCountを+1していきます。

システム構成図
図2.  プログラム実装例

3-3. タスク設定

プロジェクトを作成すると「MainTask」というタスクが作成されています。「MainTask」にはプロジェクト作成時点で「PLC_PRG」が登録されています。POUを複数作成し、1つのタスクに複数のPOUを割り当てることも可能です。タスク自体を複数作成することも可能で、タスク毎に優先度を設定することで、優先度に従ってタスクが実行されます。

システム構成図
図3.  タスク設定画面

3-4. 画面作成

プロジェクト作成時点では画面作成用のオブジェクトがないため、「Application」の下に「ビジュアライゼーション」を追加する必要があります。「Visualization」(初期名称)上でツールボックスからボタンやラベルなどをドラッグ&ドロップで配置することができます。「ビジュアライゼーション」を複数作成し、ボタン押下時に画面を切り替えるといったことも可能です。
また、「ビジュアライゼーション」追加時に「ビジュアライゼーションマネージャー」が一緒に追加されています。「ビジュアライゼーションマネージャー」の下には「ターゲットビジュアライゼーション」と「Webビジュアライゼーション」がいますが、今回はWebVisuを対象にしているので、「ターゲットビジュアライゼーション」を削除します。そうすることで、ソフトウェアPLCの運転開始時にTargetVisuが表示されなくなります。

システム構成図
図4.  ビジュアライゼーションマネージャー画面

ここでは以下のようにCountを表示するサンプル画面を用意しました。テキストプロパティでは「%s」や「%d」など文字のフォーマットを指定しています。テキスト変数プロパティでは「PLC_PRG」のCountを表示する対象として指定しています。

システム構成図
図5.  ビジュアライゼーション実装例

3-5. 運転開始、デバッグ

タスクトレイからソフトウェアPLCの「CODESYS Control Win SysTray」を運転開始します。運転中であればIDEから接続可能になるので、オンラインメニューからログインします。ログイン状態であれば各種操作が可能になるので、デバッグメニューで運転をすることで、作成中のプログラムをソフトウェアPLCにダウンロードし、デバッグしながら運転することが可能になります。

デバッグ画面は以下のようになります。画面上部がプログラム内の変数の状態を表示しており、任意の値への書き換えなども可能です。画面下部がウォッチウィンドウになっており、ウォッチに追加したグローバル変数なども表示可能です。

システム構成図
図6.  デバッグ画面

3-6. WebVisu閲覧

ブラウザのアドレスバーに「http://localhost:8080/webvisu.htm」と入力することでWebVisuが閲覧できます。ソフトウェアPLCとブラウザを閲覧するPCが同じ環境であれば「localhost」の部分はそのままで大丈夫ですが、環境が別の場合は対象のIPアドレスを指定することになります。「webvisu」の部分は「ビジュアライゼーションマネージャー」の「Webビジュアライゼーション」から.htmファイルの名前を指定できますので、任意の名前で入力してください。

システム構成図
図7.  WebVisu設定

上記のように閲覧は簡単そうですが、私の環境では最初はうまく表示できませんでした。「8080」がポート番号になりますが、同じポート番号を使用しているアプリケーションが開発PC上で動いていました。普段はほとんど使用していないアプリケーションでしたので、停止することで、WebVisu閲覧可能になりました。ただ、停止することのできないアプリケーションなどが「8080」を使用している環境も考えられますので、使用するポート番号の変更の仕方も紹介させていただきます。
まず、以下のファイルをメモ帳などで開きます。
「C:\ProgramData\CODESYS\CODESYSControlWinV3x64\94BCBDE7\CODESYSControl.cfg」
188行目付近に「;WebServerPortNr=8080」という設定がありますので、こちらを任意のポート番号に設定してください。注意点として、先頭の「;(セミコロン)」によって設定が無効化されている状態になっていますので、「;」を削除する必要があります。一例ですが、「WebServerPortNr=8081」のように設定することで、ポート番号を変更することができました。

システム構成図
図8. WebVisu Port設定

今回用意したサンプルをWebVisuで閲覧すると以下のようになります。プログラムがタスクで設定した周期で実行され、画面のカウントが増えていきます。

システム構成図
図9.  WebVisu閲覧

4. おわりに

これまでPLC関係の案件は担当したことがなく、CODESYSも最初は苦戦しながら使っていました。
苦戦した部分も含めて、使い方などを紹介させていただきましたが、実際に対応した案件ではCODESYS STOREから追加のライブラリをインストールして、通信処理の実装などもしていました。機会があれば、そういった内容なども紹介できればと思います。

(Y.O.)


関連ページへのリンク

関連するソフテックだより

ページTOPへ