趣味と興味の覚え書

趣味や興味があって調べたことなどを記しています

ラズパイとCODESYSでシーケンス制御

今回の目標

今回の目標は、ラズパイでシーケンス制御を実行すること。
(ブレッドボードを使ったLEDチカチカは今回はやらない)

用意したもの

準備

以下については、別途投稿する。

CODESYSのダウンロード

以下をCODESYS Storeからダウンロードする。ダウンロードするにはアカウント作成が必要なので、作る。

store.codesys.com

  • CODESYS Development System V3 (Version 3.5.17.10)
    「CODESYS 64 3.5.17.10.exe」がダウンロードされる
  • CODESYS Control for Raspberry Pi MC SL (Version 4.2.0.0)
    「CODESYS Control for Raspberry PI 4.2.0.0.package」がダウンロードされる
  • CODESYS Edge Gateway for Linux (Version 4.2.0.0)
    「CODESYS Edge Gateway for Linux 4.2.0.0.package」がダウンロードされる。上記CODESYS Control for Raspberry PI 4.2.0.0.packageをインストールする際にCODESYS Edge Gateway for Linux 4.2.0.0.packageが必要と言われる。

CODESYS Control for Raspberry Pi MC SLはライセンスが€100となっているが、ライセンスがなくてもお試しモードで2時間の連続運転が可能。それ以上運転する場合はライセンスが必要。

CODESYSのインストールと環境設定

  1. IDEをインストールする
    「CODESYS 64 3.5.17.10.exe」を実行する。ウィザードに従いインストールをすすめる
  2. Code Generatorのアドオンを追加する
    CODESYS Installerを起動し、InstallationsのCODESYS 3.5 SP17 (64bit)のChangeをクリック。AddOnsでCode Generatorを検索しCODESYS Code Generator ARMを入れる。依存関係としてCODESYS RISC Front Endもインストール。 f:id:ritty1224:20211004132710j:plain Code Generatorをインストールしないと、STプログラムをコンパイルする時にエラーになる。私はここでハマった。エラー見ても解決方法が分からず英語のサイトを彷徨った。この2つを追加したらコンパイル成功した
  3. IDEを起動する
    CODESYS V3.5 SP17 Patch1を実行する。
  4. パッケージをインストールする
    メインメニュー[ツール]-[パッケージマネージャ]を実行する。インストールボタンを押下し、以下をインストール

最終的にはこうなる。 f:id:ritty1224:20211005001912j:plain

本題

ここからは、シーケンス制御プログラムを作成しラズパイにダウンロードし、実際に運転するところまで確認する。

シーケンス制御

ラズパイでシーケンス制御を動作させるまでの手順は以下。今回はブレッドボードを使ってLEDチカチカまではやらずに、その手前まで。

1. プロジェクト作成

  1. CODESYS V3.5 SP17 Patch1を起動する。
  2. 新規プロジェクト作成する。テンプレートは標準プロジェクトでOK。
  3. プロジェクト作成すると、デバイスと言語を設定する。私の場合STしか選択できなかったのでSTにする。 f:id:ritty1224:20211004135255j:plain

2. Update Raspberry PI

  1. メインメニューの[ツール]-[Update Raspberry PI]を実行する。下図ウィンドウが表示される。
  2. デフォルトのusernameはpi、passwordはraspberry。変更していれば変更したものを入力する。
  3. Scanを実行すると同一ネットワーク上のラズパイが見つかる。
  4. Package directoryにCODESYS Control for Raspberry PIのフォルダを選択する
  5. Installを実行する。
  6. インストール完了後にSystem Infoを実行し、ラズパイの情報が表示されればOK。
  7. RuntimeをStartする。
    f:id:ritty1224:20211004135316j:plain

3. プログラム作成

  1. バイスウィンドウでPLC_PRGをダブルクリックする。STエディタが表示される。
  2. STプログラムを書く。input001がTRUEになれば、output001もTRUEになる。
    f:id:ritty1224:20211004141106j:plain
  3. [ビルド]-[コード生成]を実行する。エラーなく完了すればOK。
    私の場合コード生成を実行すると以下のエラーがでた。原因はCode Generatorがないことだったので、準備に記載した手順でCode Generatorを追加すると成功した。 f:id:ritty1224:20211004131652j:plain

4. オンライン

  1. バイスウィンドウでDeviceをダブルクリック f:id:ritty1224:20211004143317j:plain
  2. ネットワークスキャン実行
  3. バイス選択ダイアログでラズパイを選択し、OKで閉じる f:id:ritty1224:20211004143318j:plain
  4. ログイン(SSH)する。ログイン画面が表示されたらユーザ名とパスワードを入力する。 f:id:ritty1224:20211004143557j:plain ユーザ名はラズパイのホスト名とパスワード(デフォルトはraspberrypiとraspberry)。私はこのユーザ名とパスワードが何か分からず解決するまでに時間かかりました。SSH接続しているようなのでラズパイのホスト名ですね。

5. ログイン→ダウンロード→運転

  1. メインメニュー[オンライン]-[ログイン]実行する
  2. Applicationがないからダウンロードするか聞かれるので、ダウンロードする。下図のように接続完了となればログインとダウンロード完了。 f:id:ritty1224:20211004145919j:plain
  3. メインメニューの[デバッグ]-[運転]を実行すると、運転状態になる。

試しにSTエディタにて任意の行にブレークポイントを設定して有効化してみると、その位置で停止する。 f:id:ritty1224:20211004151002j:plain

今回はここまで。もう少しシーケンス制御が動作していることが分かるプログラムにすれば良かった。

今回の発見


  • CODESYSはソフトPLCだから、実行環境に応じたコンパイラが必要で、それぞれにあったCode Generatorをユーザがインストールする
  • アドオンは、どれを使えばいいのかわからない。必要なものだけ、簡単に取り込め、不要になれば削除できる仕組みは必須。
  • エラーがいかに簡単に解決できるかが重要