ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた

本サイトはアフィリエイト広告を利用しています。
PLC(シーケンサ)

ラズベリーパイをPLC(シーケンサ)として使う実践編です。

無料かつラズベリーパイでラダーのプログラムを実際に動かす手順を紹介しています。

「自分でPLC(シーケンサ)・ラダーを触ってみたい!」という方におすすめな記事です。

 

スポンサーリンク

ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた

PLCソフトのインストール、ラダープログラム作成までは下記記事で紹介しています。

リンク先はこちらから

PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト
ラズベリーパイをPLC(シーケンサ)として使う準備編の記事です。 「PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト」を紹介します。 フリー(無料)でラダーのプログラムを実際に動かす手順を解説しています。 「無料でPLC(シ...

 

シミュレーションまで実行して、動作が問題ないことを確認しています。

 

ラズベリーパイの設定~デバッグ動作まで行っていきます。

接続図は下記イメージです。

PLC(シーケンサ)代わりに使うラズベリーパイのGPIO設定からスタートします。

 

「CODESYS」でGPIOマッピングをする

ラズベリーパイのどこのGPIOピンを入力・出力にするかマッピングしていきます。

(まだラズパイのどのピンで入力・出力するか決めていないためです)

 

今回はラズベリーパイの「GPIO27」を入力、「GPIO17」を出力に選択します。

特に選択したピンに意図はそこまでありません。GPIOとして独立しているピンを選択しました。

 

前回の続きでPCで「CODESYS」を編集していきます。

まずデバイスの欄にある「GPIOs_A_B」を選択してGPIOの設定画面を出します。

 

①まずはGPIOs'パラメータの箇所でどのピンを入力・出力にするか決定します。

設定する箇所の値をクリックして選択します(今回は「GPIO27」を入力、「GPIO17」を出力)

 

②次にGPIOs' I/O マッピングを編集します。

ラダー回路の「X001,Y001」と「GPIO17,GPIO27」を紐付けます。

マッピングの箇所をクリックして入力・出力のピン一覧を出します。

該当の入出力箇所を選択します

 

新たなウインドウが出てきます。

入力のGPIO27では「Application」⇒「PLC_PRG」⇒「X001」を選択します。

 

そして次に出力も同様に設定していきます。

出力の場合はGPIO17の箇所に「Y001」を選択します。

 

これでGPIO設定の処理が完了しました。次の章ではデバッグ用配線についてを説明します。

 

デバッグ用の配線をする

今回は1入力(SW)・1出力(LED)の回路を用意していきます。

 

必要部品は上記に書いてある通りです
・タクトSW
・LED(赤)
・抵抗×2(筆者は1k~10kΩ×2) ※入力のプルダウン用,LEDの電流制限用
・ブレッドボード
・ジャンパー線 ※筆者はメス-オスが4本,オス-オス2本でした

 

電子工作の基本的な部品です。無ければ下記のようなセットを購入すればよいかと思います。

 

接続図としては下記のような回路となります。よくある回路ですので特に問題ないはずです。

 

ラズベリーパイの設定を行う

PLC(シーケンサ)として使っているラズベリーパイ側の設定を行っていきます。

 

今回のラズベリーパイ環境

ラズベリーパイ本体はどのVerでもOKです。

古い「Raspberry Pi 1 Model B」から、最新の「Raspberry Pi 4 Model B」まで動作確認済です。

 

OSはラズパイの代表的な「Raspberry Pi OS(Raspbian)」でOKです

特にOSのVerは縛りはありません、数年前のVerから最新Verまで動作確認しています。

 

またSDカードは下記のはMicroSDの32GBですが特に問題ありませんでした。

 

 

LANの設定

OSインストール後のラズベリーパイ側の設定に関して行っていきます。

まずはPCとラズベリーパイをLAN接続するので周辺を設定します。

 

インターフェイス設定(ラズベリーパイ側)

LAN経由で動かすとなると基本的にはSSH等の設定が大体必要になります。

左上のラズベリーパイのアイコンから「設定」⇒「Raspberry Piの設定」で変更できます

 

タブをインターフェイスにすればSSH,VNC,SPIなどすべてここで変更が可能です。

筆者は一旦すべて有効にしておきました。

 

理由はI2C・SPI・Onewire・カメラなどの情報も「CODESYS」経由で使えるらしいためです。

(また使えるようになりましたら記事にしたいと思います)

 

無線LANの場合

無線LANで使っている場合、大体のケースでは自動でIPアドレスを設定していると思います。

ラズパイを一度起動してIPアドレスを確認します。

下記コマンドでIPアドレスが分かります。

ifconfig

 

有線LANの場合

無線LANで設定している方はこの章は読み飛ばしてください。

有線LANは下記設定例として説明します。

  • PCのIPアドレスを「192.168.0.100」
  • ラズベリーパイのIPアドレスは「192.168.0.10」

 

有線LANの手順としてはラズパイの「/etc/dhcpcd.conf」ファイルを開きます。

 

青所の「Example static IP configuration」の箇所を編集します。

といっても頭の「#」を消すだけです。

「interface~」から「static domain~」の行の頭「#」を消します

消し終えましたら上書き保存したら終了です

 

PC側の有線LAN設定

無線LANで設定している方はこの章は読み飛ばしてください。

PC側の設定もしておきます。PC側のLANのIPアドレスを「192.168.0.100」に設定します。

 

「コントロールパネル」などから「ネットワーク接続」に行きます。

ローカルエリア接続のTCP/IPv4を選択します

 

後はIPアドレスを指定すればOKです。

これでPC側のLAN設定も終了です。

 

ラズベリーパイをPLC(シーケンサ)にする

これまでの章で準備が終わったので、ラズベリーパイをPLC(シーケンサ)にしていきます。

 

LAN接続して電源を入れておく

既にデバッグ回路は組みましたので、この段階でPCとラズベリーパイをLAN接続していきます。

有線の場合はPCとラズベリーパイのLANケーブルを接続します

 

LAN接続したら電源を入れておきましょう。

 

ビルドしておきましょう

既に何かしらビルドしてエラーないことを確認していると思います。

実施していなかったら行います。

タブの「ビルド」⇒「ビルド」を選択すれば実行できます、特にエラーが無ければOKです。

 

CODESYSをラズベリーパイにインストールします

PC経由でラズベリーパイにCODESYSをインストールをします。

まずは左枠にでている「Device」をダブルクリックします。

※但しこの時点ではまだPCとラズベリーパイが接続できません

 

ラズベリーパイ側にまだ「CODESYS」がインストールされていないためです。

そのためインストールします。「ツール」⇒「Update Raspberry Pi」を選択します

 

左枠がでてきましたらラズベリーパイを探してインストールしていきます。

①ラズベリーパイのユーザ名・パスワードを入力します。

②IPアドレスを入れてスキャンします。正常にLAN設定できていれば無事スキャンできます。

見つけれたら「OK」を選択します。

 

③「install」を選択しますと「CODESYS」がラズベリーパイ側にもインストールされます。

少し時間がかかりますがこれでインストール作業完了です。

※もしデバイスのパスワードなどの設定が求められたら、必要に応じて設定しておきます。

 

PC側からラズベリーパイの詳細情報(CPU情報・パッケージ内容など)が確認できます。

インストール後に「System info」をクリックすればOKです。

 

インストール後にはラズパイのIPアドレスを入力すれば、接続できます。

デバイス欄でラズベリーパイが認識できるようになっています。

 

デバッグ動作をしてみる

最後にラズベリーパイでデバッグ動作をしてみます。

①タブ「オンライン」から「ログイン」を選択します

 

②ダウンロードしていいか聞かれるので「はい」を選択しましょう

 

これでラダープログラムが動き出す直前になりました。「運転」のアイコンをクリックしましょう。

 

実際のラダー回路動作

作成したラダープログラム通りでしたらSWを押しているときはLEDが点灯します

(「X001」⇒「M001」⇒「Y001」とラダー回路が動作します)

※SWが押していないとき…LED非点灯

 

※SWを押しているとき…LED点灯

 

実動作とラダー動作を合わせた動画をYoutubeでも上げておきました。

こちらの方が何をしているか分かりやすいかと思います。

 

ラズベリーパイをPLC(シーケンサ)としてラダー回路を動作させることができました。

ラダー回路を変更すれば、様々な動作が可能です。

 

まとめ・感想

CODESYSを使って、ラズベリーパイをPLC(シーケンサ)として動作させることができました。

「自宅でPLC(シーケンサ)・ラダー回路の勉強してみたい!」という方におすすめします。

非常に使いやすいソフトだと思います。ぜひ使ってみてください。

 

次の記事ではさらに簡単なPLC・ラダーのプログラムを2例ほど作って動作させています。

よろしければご覧ください。(リンク先はこちら)

入門編!簡単なPLC・ラダーのプログラムの例を作って動かしてみた
ラズベリーパイをPLC(シーケンサ)として使う実践編で「入門編!簡単なPLC・ラダーのプログラムの例を作って動かしてみた」を紹介します ラズベリーパイでラダーのプログラムを実際に数例動かして紹介しています。「自分でPLC(シーケンサ)・ラダ...

 

コメント

  1. k より:

    CODESYSをラズベリーパイにインストールをするところでinstallを押し、runntime modeの選択までいくのですが、codesysがラズベリーパイを認識してくれません。なにか考えられる原因はありますか?

    • ミソジ ミソジ より:

      お世話になっております。ミソジです

      一度「ネットワークスキャン」をしてみては如何でしょうか。
      「Device」タブ⇒「通信設定」でPCの絵の上に「ネットワークスキャン」があります
      そこでラズベリーパイがいるようでしたら選択してOKを押してもらえれば反応があるかもしれません。

      • k より:

        返信ありがとうございます。kです。
        ネットワークスキャンでラズパイを見つけたのですが設定したデバイスアドレスの168~ではないのですが大丈夫でしょうか?
        また、ログイン後スイッチを押しても全く反応しないのですが何か原因がありますか?

  2. 三浦輝幸 より:

    大変興味深い内容でした。
    ありがとうございます。
    入力点数と、出力点数はそれぞれ何点まで可能ですか?
    よろしくお願い致します。

    • ミソジ ミソジ より:

      管理人とミソジと申します。
      コメントありがとうございました。

      CODESYSのGPIOsパラメータを確認すると
      GPIO4,17,18,22,23,24,25,27,28,29,30,31が使えましたので
      ラズベリーパイだと入出力合計で12のようです

  3. ホナメ より:

    拝読して勉強させて頂いております。
    GPIOマッピングでラズパイの持っているI/O(GPIO 2~27)がすべて表示されず、一部のみ表示されるのですが、これはCODESYSの仕様によるものでしょうか。
    また、ラズパイ側に「GPIO 1」がない理由について知見お持ちでしょうか。

    • ミソジ ミソジ より:

      コメントありがとうございます。
      管理人のミソジです。

      >>GPIOマッピングでラズパイの持っているI/O(GPIO 2~27)がすべて表示されず、一部のみ表示されるのですが、これはCODESYSの仕様によるものでしょうか。
        ⇒はい、私のマップでもGPIO4,17,18,22,23,24,25,27,28,29,30,31でした。CODESYSの仕様と思われます

      >>また、ラズパイ側に「GPIO 1」がない理由について知見お持ちでしょうか。
        ⇒あくまで予想ですが、ピンとしてではなく別のIFで使われているのではないでしょうか
         
         古いラズベリーパイ1Bの回路図ならばオープンになっています
         https://www.rs-online.com/designspark/raspberry-pi-schematics-revision-2-1

         上記を確認するとGPIO1は「SCL0」として使われていてカメラモジュールのコネクタに繋がっていました

         

  4. えも より:

    はじめまして。ラズパイ初心者でこちらで勉強させていただいています。
    gpioは5から16までは使えないのでしょうか?
    今使用中の拡張ボードが、5,6にスイッチがついているので活用したいのですが。
    方法、わかりましたら、よろしくお願いします

    • ミソジ ミソジ より:

      お世話になっております。
      管理人のミソジです。コメントありがとうございます。

      >>今使用中の拡張ボードが、5,6にスイッチがついているので活用したいのですが。
      >>方法、わかりましたら、よろしくお願いします
        ⇒私も使いたいのですが、おそらく出来ないかと思われます。
         CODESYSのGPIOを確認するとGPIO4,17,18,22,23,24,25,27,28,29,30,31でした。
         仕様と思われます。

      どうかよろしくお願いします

  5. たく より:

    お世話になります。

    codesys+ラズパイをこれから試してみようと考えている初心者です。

    PCにてラダーの編集を行って、ラズパイへダウンロードした後は、
    PCとの接続がなくても、ラズパイ単独でGPIOの制御やEther系のフィールドバスのマスタとして動作できるのでしょうか?

    • ミソジ ミソジ より:

      お世話になっております。
      管理人のミソジです。コメント・連絡ありがとうございます。
      はい、一度ダウンロードした後はラズパイ単独で動作が可能です。

  6. IKEDA より:

    お世話になります。
    大変参考になりました。ありがとうございます。
    ラズパイにCODESYSをインストールまではできたと思われますが、
    表示されるデバイス側のランプが灰色のままです(緑色にならない)。
    GATEWAY のランプは緑色です。
    SYSTEM INFO にはラズパイの詳細情報が表示されます。
    何か操作が足りないのでしょうか?

    • ミソジ ミソジ より:

      お世話になっております。管理人のミソジです。

      >>表示されるデバイス側のランプが灰色のままです(緑色にならない)。
        ⇒下記2パターンでランプが緑色になるか確認していただけないでしょうか
         ・画面の左上にある「ネットワークスキャン」をクリック⇒raspberrypiを選択してOKを押す
         ・もしくはランプが灰色の下にあるIPアドレス箇所にIPアドレスをもう一度打ち込みEnterを押す

      大変お手数ですがどうかよろしくお願いします

      • IKEDA より:

        御回答ありがとうございました。
        ・「ネットワークスキャン」をクリックしてみましたが、raspberrypiが出てきません。
        ・IPアドレス(192.168.0.10)を直接入力してENTERを押してみましたが、「スキャン要求に反応するデバイスがありません」から変わりません。
        他に考えられる対策がありましたら、大変お手数ですが御教示願います。

        • IKEDA より:

          大変お世話になります。
          raspberrypiは認識されるようになりましたが、ログイン後のデバッグがうまくいきません。
          「オンライン」→「ログイン」でDEVICE接続完了にはなりますが、運転ボタンを押していないのに運転状態に入ってしまいます。そこでスイッチを押してもラダーは動作しません。
          しばらくすると、「デバイスへの接続がありません。ネットワークを再スキャンしてください。」が出ます。
          また、「オブジェクト参照がオブジェクトインスタンスに設定されていません。」と出ることもあります。
          GPIOマッピングなどは手順通り行っており、配線も間違いはないと思われます。
          何か確認すべき点などあれば、大変お手数ですが御教示願います。

        • SSKGo より:

          IKEDAさんは問題を解決されたようですが、どうやって解決されたのでしょうか?
          私もまったく同じ問題が起きていて解決できずに困っています。

          ・System Infoの取得はできています。
          ・RuntimeのStartを押しても"codesyscontrol already running"が出てきますのでRuntimeは動いているようです。
          ・Deviceでネットワークスキャンを押してもraspberrypiは出てきません。
          ・IPアドレスを直接入力してENTERを押してみても「スキャン要求に反応するデバイスがありません」が返ってきます。
          ・ラズパイ側はPortの4840のファイアウォールを開けてあり、TCPのコネクション確立できるのを確認しました(netstatで4840をlisten状態にあることも確認した)。

          • SSKGo より:

            OSの再インストールからラズパイ側をまっさらにしてやりなおしたらraspberrypiを検出できました。LEDの点灯までできました。

  7. Raspberry Pi 4 no より:

    ハマった

    https://forge.codesys.com/forge/talk/Runtime/thread/4d43247a3a/

    sudo rpi-update e1050e94821a70b2e4c72b318d6c6c968552e9a2

  8. Raspberry Pi 4 より:

    ハマった問題があって解決しましたの参考情報として投稿致します。

    Raspbian OS を最新にアップデートするとPi側 Runtime の codesyscontrol が
    30秒で終了してしまうため、古い状態に戻することで復旧しました。

    (codesyscontrol が起動していないと「スキャン要求に反応するデバイスがありません」に
    なってしまいます)

    情報元はこちら
    Latest Raspberry Pi Update Breaking CODESYS 3.5.16.0
    https://forge.codesys.com/forge/talk/Runtime/thread/4d43247a3a/

    # 古い状態に戻すコマンド
    sudo rpi-update e1050e94821a70b2e4c72b318d6c6c968552e9a2

  9. TSUMIDA より:

    こんばんは。昨日コメントさせていただきました学生の者です。
    行き詰ってた点ですが、解決いたしました。
    初歩的なことも分かっておらずお恥ずかしい限りです。。
    昨日のコメントとこのコメントは無視していただいて結構です。
    引き続きこのサイトを見ながら頑張ってみようと思います!

  10. 浅沼明彦 より:

    記事を大変参考にさせていただきましたが、ドハマりしました。
    環境は最新の4B、無線です。すったもんだの挙句、64ビットOS再インストールで初めてPCからPIにインストール出来たもののマルチコアが選択不可能でランタイムが動かずにダメでした。ものは試しと32ビットOSでシングルでやれるか試したところ、ここではマルチコア選択が可能となっており、記事通りに行きました。
    CODESYSショップでも無料のものが有料になっていたり、時間がたって大分変ったようです。とりあえず32ビットOSでなんとかなりましたのでこれから悩む方の為お伝えします。