United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

PYTHON言語でオートメーション制御を: パート1

Python言語なら下の11行のコードでPID制御の暖房システムを構築できる。

from simple_pid import PID
import revpimodio2
import time

TempController = PID(5.0, 0.13, 10.5, setpoint=400, output_limits=(0,100))
rpi = revpimodio2.RevPiModIO(autorefresh=True)
while True:
    Temp = rpi.io.Temp10.value
    PWMvalue = TempController(Temp)
    rpi.io.PWM_heater1.value = int(PWMvalue)
    rpi.io.PWM_heater2.value = int(PWMvalue)
    time.sleep(0.05)

このコードでは、以下のフローでアナログ温度入力(PT100センサ)と10W電球2個をデジタルを制御している

  1. 現在の温度をMQTTブローカーに通知
  2. そのデータをNode-Red上で操作(ヒーター制御
  3. MQTTによってPython PID制御ソフトウェアに送信

こういった制御システムの開発を通じ、タスクの自動化をPythonで効率的に行う方法を説明していこう。

Pythonは、ITの世界で一般的に使用されているプログラミング言語だが、30年近い歴史がありながら、FA・オートメーション産業や組み込みではほとんど使用されていない。2017年にはCとC++が支配的な立場にあったが、Raspberry Pi、MicroPythonのようなIoT指向のシステムによって事態が変わり始めた。2018年のIEEE Spectrumのランキングでは、Pythonが2年連続でC++とCを抑えて人気のプログラミング言語の第1位に選出された。2017年のランキングで、組み込みプログラミングについてはトップテンにさえ入っていなかったが、2018年では組み込み言語でも1位になっている。

image0041_85675cad528a4372c99c8f45fc1ab5d0b2ad39a1.jpg

出典: 2018年IEEE Spectrum ランキングリスト、組み込みプログラミング

イギリスのコメディーグループ「Monty Python」への尊敬の念から名付けられた「Python」は、ここ数年で絶大な人気をほこる言語になった。「なぜこんなに人気に!?」「組み込みでPython使う利点は?!」をここで触れるつもりはない。そのような議論に興味がある場合は、せっかくなのでコメントにでも残してほしい。

FAやオートメーション産業では、多くのエンジニアはCすら使わず、よくIEC61131言語(ラダーなどPLC制御として国際規格で制定されている言語群)を使用してPLCをプログラムしている。今回はそういったIEC61131言語を使わず、産業用ラズパイ「Revolution Pi」上からPython言語を使ってプログラミングすると同時に、いかに簡単に制御システムを構築できるかを示したいと思う。この記事の他にもPeter Oakes氏とAndrew Back氏によるRevolution Piに関する優れた記事もお見逃しなく。また、Dave Ives氏は、Revolution PiでEN61131「構造化テキスト」言語を使用する方法を解説している。

以下はデモに使用した機器の一覧だ。

  • Revolution Pi Core 3 (181-1142)
  • RevPi DIO (181-1143)
  • RevPi AIO (181-1146)
  • 24V、1A以上の直流電源(この36W Mean Well装置 (145-7868) のようなDINレール電源も使用可能)
  • 24V 10W車載用電球2個( (017-0913) など)
  • PT100センサ( (123-5602) のような4線タイプを使用、 (896-8395) といった3線タイプも使用可能)
  • インターネット接続対応Windows PCとRevPi Core 3用追加ネットワークケーブル付きスイッチ
  • (オプション) PWM出力をチェックするオシロスコープ

Revolution Pi(RevPi)がよくわからないという方は、DesignSpark上のAndrew氏とPeter氏の投稿を参照してほしい。Core 3モジュールをIOモジュールに接続する方法、電源の接続方法、セントラルプロセスイメージを使用してすべてのIOにアクセスする方法を学べる。メーカーのサイトには、さらに多くのテキスト及びビデオチュートリアルがある。

以上のものを用いて、私の装置は次のようになった。

image006_3da4f6c3bc631840ea50925283ed6b097126ba2d.jpgimage007_41380d5ea97dcdd12a057cf23cdd68b3fced28dc.jpgimage008_d762aebe3410888152275353b3c3ba7e172b2c6e.jpgimage0111_b059147a00ca2458cb86af8239255666cdae0d76.jpg

次の2つの点に注意してほしい。

  • よくDINレールをテーブル上に取り付けているのを目にする。しかしこれではRaspberryコンピュートモジュールの冷却に必要な層流を発生させることができない。RevPiは必ず立てて、十分なエアフローが底のスリットから入り、上のスリットから出ていく状態を確保してほしい
  • FE (機能接地)端子を接続せずにRevPiモジュールを使用している人をよく見かける。こうすると完全なサージ及びESD保護が失敗してしまう。オフィスのデスクトップでも、少なくともFE端子を0V端子に接続してほしい。PE (保護接地)の概念とFEの概念は異なるものだ。RevPiモジュールにPEは不要だが(高電圧に接触する危険性はありません)、FE端子はサージ、バースト、又はESDによって発生した破壊的エネルギーを逃がす唯一の手段となる。FE端子を接続しないと、このような破壊的なエネルギーからシステムを保護できなくなる。

4線又は3線RTDセンサの正しい接続方法については、AIOモジュールの側面を参照してほしい。このセットアップでは、RTD1入力端子を使用し、Out1とOut2を電球に接続している。2個の10W電球は24V電源から1A近い電流を引き込むことに注意が必要となる。そのため、IO電源接続用の太いワイヤを使用し、出力はハイサイドモードを必ず使用してほしい(これにより出力あたり最大500mAの電流を供給、プッシュプルではわずか100mAを供給できる)。

今回はここまで。続編のパート2では、これから使用するライブラリとツールのインストール方法を段階的に解説する予定だ。お見逃しなく。右下の「通知」ボタンをクリックすると、公開時に通知メッセージを受信できるので活用してみてほしい。

Volker de Haas started electronics and computing with a KIM1 and machine language in the 70s. Then FORTRAN, PASCAL, BASIC, C, MUMPS. Developed complex digital circuits and analogue electronics for neuroscience labs (and his MD grade). Later: database engineering, C++, C#, industrial hard- and software developer (transport, automotive, automation). Designed and constructed the open-source PLC / IPC "Revolution Pi". Now offering advanced development and exceptional exhibits.
DesignSpark Electrical Logolinkedin