ラズベリーパイを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アドレスが分かります。
有線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例ほど作って動作させています。
よろしければご覧ください。(リンク先はこちら)
コメント
CODESYSをラズベリーパイにインストールをするところでinstallを押し、runntime modeの選択までいくのですが、codesysがラズベリーパイを認識してくれません。なにか考えられる原因はありますか?
お世話になっております。ミソジです
一度「ネットワークスキャン」をしてみては如何でしょうか。
「Device」タブ⇒「通信設定」でPCの絵の上に「ネットワークスキャン」があります
そこでラズベリーパイがいるようでしたら選択してOKを押してもらえれば反応があるかもしれません。
返信ありがとうございます。kです。
ネットワークスキャンでラズパイを見つけたのですが設定したデバイスアドレスの168~ではないのですが大丈夫でしょうか?
また、ログイン後スイッチを押しても全く反応しないのですが何か原因がありますか?
大変興味深い内容でした。
ありがとうございます。
入力点数と、出力点数はそれぞれ何点まで可能ですか?
よろしくお願い致します。
管理人とミソジと申します。
コメントありがとうございました。
CODESYSのGPIOsパラメータを確認すると
GPIO4,17,18,22,23,24,25,27,28,29,30,31が使えましたので
ラズベリーパイだと入出力合計で12のようです
ありがとうございました。
ラズパイを触るきっかけになりました。
拝読して勉強させて頂いております。
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」として使われていてカメラモジュールのコネクタに繋がっていました
ご教示頂きましてありがとうございます。
大変勉強になりました。
はじめまして。ラズパイ初心者でこちらで勉強させていただいています。
gpioは5から16までは使えないのでしょうか?
今使用中の拡張ボードが、5,6にスイッチがついているので活用したいのですが。
方法、わかりましたら、よろしくお願いします
お世話になっております。
管理人のミソジです。コメントありがとうございます。
>>今使用中の拡張ボードが、5,6にスイッチがついているので活用したいのですが。
>>方法、わかりましたら、よろしくお願いします
⇒私も使いたいのですが、おそらく出来ないかと思われます。
CODESYSのGPIOを確認するとGPIO4,17,18,22,23,24,25,27,28,29,30,31でした。
仕様と思われます。
どうかよろしくお願いします
このまま、GPIOの使用可能点数が少ないと使い勝手が悪いと思い、悪あがきしていたところ、下記のような記述を見つけました。
私は初心者なので、すぐには理解、実践できないのですが、下記の記事を参考に、管理人さんのお力で何とかならないでしょうか?
https://forum.codesys.com/viewtopic.php?t=5832
お世話になっております。
管理人のミソジです。コメント・連絡ありがとうございます。
調査して使えるようになりました。下記に方法をまとめましたのでご覧ください
https://misoji-engineer.com/archives/codesys-gpio.html
お世話になります。
codesys+ラズパイをこれから試してみようと考えている初心者です。
PCにてラダーの編集を行って、ラズパイへダウンロードした後は、
PCとの接続がなくても、ラズパイ単独でGPIOの制御やEther系のフィールドバスのマスタとして動作できるのでしょうか?
お世話になっております。
管理人のミソジです。コメント・連絡ありがとうございます。
はい、一度ダウンロードした後はラズパイ単独で動作が可能です。
お世話になります。
大変参考になりました。ありがとうございます。
ラズパイにCODESYSをインストールまではできたと思われますが、
表示されるデバイス側のランプが灰色のままです(緑色にならない)。
GATEWAY のランプは緑色です。
SYSTEM INFO にはラズパイの詳細情報が表示されます。
何か操作が足りないのでしょうか?
お世話になっております。管理人のミソジです。
>>表示されるデバイス側のランプが灰色のままです(緑色にならない)。
⇒下記2パターンでランプが緑色になるか確認していただけないでしょうか
・画面の左上にある「ネットワークスキャン」をクリック⇒raspberrypiを選択してOKを押す
・もしくはランプが灰色の下にあるIPアドレス箇所にIPアドレスをもう一度打ち込みEnterを押す
大変お手数ですがどうかよろしくお願いします
御回答ありがとうございました。
・「ネットワークスキャン」をクリックしてみましたが、raspberrypiが出てきません。
・IPアドレス(192.168.0.10)を直接入力してENTERを押してみましたが、「スキャン要求に反応するデバイスがありません」から変わりません。
他に考えられる対策がありましたら、大変お手数ですが御教示願います。
大変お世話になります。
raspberrypiは認識されるようになりましたが、ログイン後のデバッグがうまくいきません。
「オンライン」→「ログイン」でDEVICE接続完了にはなりますが、運転ボタンを押していないのに運転状態に入ってしまいます。そこでスイッチを押してもラダーは動作しません。
しばらくすると、「デバイスへの接続がありません。ネットワークを再スキャンしてください。」が出ます。
また、「オブジェクト参照がオブジェクトインスタンスに設定されていません。」と出ることもあります。
GPIOマッピングなどは手順通り行っており、配線も間違いはないと思われます。
何か確認すべき点などあれば、大変お手数ですが御教示願います。
IKEDAさんは問題を解決されたようですが、どうやって解決されたのでしょうか?
私もまったく同じ問題が起きていて解決できずに困っています。
・System Infoの取得はできています。
・RuntimeのStartを押しても"codesyscontrol already running"が出てきますのでRuntimeは動いているようです。
・Deviceでネットワークスキャンを押してもraspberrypiは出てきません。
・IPアドレスを直接入力してENTERを押してみても「スキャン要求に反応するデバイスがありません」が返ってきます。
・ラズパイ側はPortの4840のファイアウォールを開けてあり、TCPのコネクション確立できるのを確認しました(netstatで4840をlisten状態にあることも確認した)。
OSの再インストールからラズパイ側をまっさらにしてやりなおしたらraspberrypiを検出できました。LEDの点灯までできました。
ハマった
https://forge.codesys.com/forge/talk/Runtime/thread/4d43247a3a/
sudo rpi-update e1050e94821a70b2e4c72b318d6c6c968552e9a2
ハマった問題があって解決しましたの参考情報として投稿致します。
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
こんばんは。昨日コメントさせていただきました学生の者です。
行き詰ってた点ですが、解決いたしました。
初歩的なことも分かっておらずお恥ずかしい限りです。。
昨日のコメントとこのコメントは無視していただいて結構です。
引き続きこのサイトを見ながら頑張ってみようと思います!
記事を大変参考にさせていただきましたが、ドハマりしました。
環境は最新の4B、無線です。すったもんだの挙句、64ビットOS再インストールで初めてPCからPIにインストール出来たもののマルチコアが選択不可能でランタイムが動かずにダメでした。ものは試しと32ビットOSでシングルでやれるか試したところ、ここではマルチコア選択が可能となっており、記事通りに行きました。
CODESYSショップでも無料のものが有料になっていたり、時間がたって大分変ったようです。とりあえず32ビットOSでなんとかなりましたのでこれから悩む方の為お伝えします。