Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NervesJP_8_ALGYAN

myasu
July 10, 2020

 NervesJP_8_ALGYAN

myasu

July 10, 2020
Tweet

More Decks by myasu

Other Decks in How-to & DIY

Transcript

  1. Elixirと Raspberry Pi で

    産業機器の制御にチャレンジ

    2020-7-10 NervesJP #8 / ALGYAN Webinar
    1

    View Slide

  2. 自己紹介

    ● 本業:とある製造業の”生産技術”
    ○ 自動化設備・生産治具の設計・製作、現場カイゼン
             (ラダー、 Python、C++)
    ○ 社内向け業務ソフト開発( C#, SQL Server)
    ● コミュニティ
    ○ IoTALGYAN せとうち連合 岡山支部長
    ○ 瀬戸内ROS勉強会 (設立&岡山主催)
    ○ NervesJP (設立メンバ)
    ○ kurashiki.ex (立ち上げるかも?
    myasu

    @etcinitd
    yasuhiro.miyake.5076
    @trihome
    2
    @myasu

    View Slide

  3. お伝えしたいこと
    1. Raspberry Piを、製造現場で活用する工夫
    2. Elixirだから、できること(できそうなこと)
    3

    View Slide

  4. 軽く紹介
    1. Raspberry Pi
    4

    View Slide

  5. 小型パソコン Raspberry Pi
    ● イギリス生まれの、教育用コンピュータ
    ● HDMI出力、USBポート、無線LAN、有線LAN
    ● 価格:8£(約1200円)~
    “Raspberry Pi Zero W” “Raspberry Pi 3 b+” (写真:Switch Science, raspberrypi.org)
    65mm
    Linux等のOSが使える
    5

    View Slide

  6. 小型パソコン Raspberry Pi
    ● デジタルの入出力ポートを装備
    ● 電子工作、組み込み機器などの業界でも普及が進む
    6

    View Slide

  7. Raspberry Pi をこんな所に使ってるよ!
    2. わたしの活用例
    7

    View Slide

  8. 製造現場のカイゼン
    勤務先の農機具工場・現場のリーダの相談・・・
    ● ちょっとしたカイゼン、ポカよけ
    ● 多くの費用は掛けられない
    ● カイゼン失敗→仕様変更→リトライ(の繰り返し)
    産業向け(FA)機器は便利だけと、ちょっと試すには高価・・・
    趣味で使い慣れた Raspberry Piでやってみよう!
    8
    (写真:いらすとや)

    View Slide

  9. 製造現場のカイゼン
    9
    ランプ付き

    ボタン

    様々な部品の

    入った箱

    作例1:部品の取り間違いを防止する「ポカよけ」装置

    View Slide

  10. 製造現場のカイゼン
    作例2:現場設備の稼働監視  作例3:生産中の作業時間を計測
    10
    (写真:日経 BP 紹介ページ)
    機械加工
    設備
    https://project.nikkeibp.co.jp/pc/atcl/column/17/062900102/070500004/

    View Slide

  11. Raspberry Piと産業機器
    3. 製造現場で
    活用する工夫
    11

    View Slide

  12. 産業用途で使われる機器
    ● FA機器 (Factory Automation)
    ● スイッチ、ランプ、センサーなど
    ○ 誘導電動機、空圧・油圧機器、ガス、液体・・・
    ● 頑丈!
    ○ 少々荒い使い方をしても、壊れない
    ● 電源、基本はDC24V
    ○ あるいはAC100V, 200V, 三相・・・
    ○ マイコンなど電子機器と繋げるには、一工夫必要
    12
    (写真:Panasonic, IDEC, PATLITE)

    View Slide

  13. 産業用途で使われる制御機器
    ● PLC (プログラマブル ロジック コントローラ)
    ○ 安いものだと1万円程度から
    ○ 入出力10点くらいから
    ○ 20年くらいは販売が継続
    ○ ネットワーク無し。オプションで+ 2万円くらい
    ○ オプション付けると色々出来る。けどあっという間にン十万円(!)
    ● タッチパネル
    ○ モノクロ3インチで2万円弱から
    ○ カラー15インチで30万円以上(!)
    (耐障害性、安定性、長期供給は保証)
    13
    (写真:Siemens, DIGITAL)

    View Slide

  14. 工場現場からの要望
    必ず言われること → ”モニター”が欲しい
    ● 作業の状態を見える化
    ● 図面やチェックシートなどの検索・閲覧
    ● 離れていても見やすいこと!
    となると、大型のモニターがどうしても欲しい・・・(タッチパネル高価
    Raspberry Pi + 安価な液晶モニターの組み合わせで解決しよう!
    14
    (写真:いらすとや)

    View Slide

  15. RaspberryPi を PLCっぽく使う
    PLCの考え方を取り込んでみよう!
        モジュールを追加して機能拡張する概念→
    ● RaspberryPiにFA用機器を直接接続する
    ○ 電圧の違い(3.3V ~ 24V)を相互変換する機能
    ● 機能拡張しやすい仕組み
    ○ Seeed社のGROVE System
    15
    CPU IO AD Ether ・・・

    (写真:Siemens, Seeed Studio)

    View Slide

  16. センサの信号

    FA機器とRaspberryPiの接続
    16
    (写真:Siemens, DIGITAL)
    用センサなど

    用表示灯など

    で動作する機器


    Vで動作する部品

    フォトカプラで

    電気的に絶縁

    フォトカプラで

    電気的に絶縁

    トランジスタ

    アレイで

    電流増幅

    表示灯の信号

    表示灯を点灯

    センサの信号


    View Slide

  17. FA機器とRaspberryPiの接続
    17
    (写真:Siemens, DIGITAL)
    用センサなど

    用表示灯など

    で動作する機器


    Vで動作する部品

    GPIO24V~3.3V

    レベル変換 &RTCユニット

    (ユニバーサル基板 泣)


    View Slide

  18. FA機器とRaspberryPiの接続
    18
    (写真:Siemens, DIGITAL)
    用センサなど

    用表示灯など

    で動作する機器


    Vで動作する部品

    GPIO24V~3.3V

    レベル変換 &RTCユニット

    (基板を作った)


    View Slide

  19. FA機器とRaspberryPiの接続
    GitHubで回路図・ガーバーデータを公開してます
    https://github.com/trihome/RasPi_PiFA
    19
    GPIO24V~3.3V

    レベル変換 &RTCユニット


    View Slide

  20. GROVE Systemの活用
    豊富なデバイスとアクセサリの恩恵
    ● 4線式でシンプルな規格
    ● 主要マイコン(Arduinoなど)向けIFも豊富
    オープンな規格、”無ければ作る!”
    ● Seeedの基板製造サービスも活用
    20
    (写真:Seeed Studio)
    自作のGrove互換モジュール→


    View Slide

  21. GROVE Systemの活用
    こちらも、GitHubで回路図・ガーバーデータを公開・・・します(まだ
    https://github.com/trihome/
    ● 絶縁IOエキスパンダー
    ● CTセンサアンプ
    ● シグナルタワー点灯検知
    ● 簡易UPS
              
    21
    自作のGrove互換モジュール→


    View Slide

  22. RaspberryPi を PLCっぽく使う
    22
    Grove Base 

    Hat for Raspberry Pi 

    UPS&

    電源監視

    ユニット

    Raspberry Pi

    GPIO24V~3.3Vレベル変換
    &RTCユニット

    アナログ

    GPIO24V

    赤:通信異常など

    青:正常運転

    様々な

    既製品のセンサー

    (無ければ自作)

    様々なFA機器


    View Slide

  23. 再利用しやすく・頑丈に
    FA部品を活用、汎用的な制御盤に仕上げ
    23
    ●サーキットプロテクタ

     (IDEC、富士電機)

    ●端子台

     (東洋技研、WAGO)

    RaspberryPi

    GROVE Hat

    ●プラボックス

     (日東工業、タカチ)

    ●アルミフレーム

     (NICオートテック)

    ●ゴム足

     (タキゲン)

    ●コンセント

     (パナソニック)

    ●ランプ、スイッチ

     (IDEC、オムロン)

    ●タワー表示灯

    (日恵製作所、パトライト)

    ●DINレール、配線ダクト

    (篠原電気)

    300mm

    500mm


    View Slide

  24. どんなプログラム言語を使おう?
    ● C#  (作例3)
    ○ 個人的に一番好きな言語  ( .NET 1.0から使ってる)     
    ○ Windows 10 IoT Core!VisualStudio使える!!画面も作れる!!!最強!!!!
    ■ でも、最近アップデートがなくてツラい
    ○ .NET Core → LinuxのGUIが・・・
    ● Python(作例1、2)
    ○ 一昨年から勉強はじめた。
    ○ とにかくサンプルが多くて助かる。( ”えいやぁ”で、すぐ作れちゃう)
    ○ GUIもOK(Kivy)
    24

    View Slide

  25. PLCの言語
    ● ラダー言語
    ○ 最初は苦労・・・慣れてきたら、並列処理が書きやす
    いので便利
    ● 実行を止めずにプログラム書き換え
    ● 変数のリアルタイムモニタ
    ● ソースコードは丸ごとPLCのメモリに保存
    ● シリアル通信、Ethernetとか扱うと、ちょっと大

    25

    View Slide

  26. プログラム言語を選ぶ課題
    ● C#やPythonのような記述ができて
    ● ラダーのように並列処理が書きやすい
    こんなプログラム言語が、あればいいなぁ~
    26

    View Slide

  27. ROSの活用
    ● ノード単位で機能を構成
    ○ ノード間はPUB・SUB通信
    ● 異種言語の混在OK
    ● パッケージで機能の再利用
    ● roslaunchでプロセス管理
    ● ソースはRaspberryPiの中に保存
    ● 概ね、やりたいことが出来たが・・・
    ○ RaspberryPiだと動作が重い
    ○ 機能が高度・豊富すぎて勿体ない・・・( Gazebo, MoveIt とか)
    27
    作例2:設備の稼働集計装置は 

    ROS Melodic (Python)で 

    動いてます

    (Robot Operating System)

    (写真:ROS.org)

    View Slide

  28. ここで、Elixirとの出会い
    28
    (写真:elixir-lang.jp)

    View Slide

  29. ここで、Elixirとの出会い
    takase先生 (←当時はROSのコミュニティ)
    「福岡でNervesやるよ!」
    29
    (写真:twitter)

    View Slide

  30. ここで、Elixirとの出会い
    takase先生 (←当時はROSのコミュニティ)
    「福岡でNervesやるよ!」

    「???」(Nervesなにそれ?)
    その真相を探りに福岡へ(19年7月)
    30
    (写真:CONNPASS, fukuoka/kokura.ex)

    View Slide

  31. ここで、Elixirとの出会い
    「Nerves Training」ハンズオン
    31

    View Slide

  32. 試しに作ってみた
    デモその1
    手動でLチカ!
    (L=LED回転灯)
    ボタンを押したら光る
    32

    View Slide

  33. 構成
    33
    Raspberry Pi

    GPIO
    I2C
    自動運転コード
    Auto.ex
    個別動作の
    定義コード
    Worker.ex
    Elixir Circuit
    モジュール
    ドライバ
    Mcp23017.ex
    Elixirコード
    プロセス管理(スーパーバイザ)
    Application.ex
    :GenServer

    電気的
    絶縁

    電圧
    レベル
    変換
    (写真:IDEC, 日惠製作所 , elixir-circuits.github.io)
    FA機器


    View Slide

  34. 構成
    34
    Raspberry Pi

    GPIO
    I2C
    自動運転コード
    Auto.ex
    個別動作の
    定義コード
    Worker.ex
    Elixir Circuit
    モジュール
    ドライバ
    Mcp23017.ex
    Elixirコード
    プロセス管理(スーパーバイザ)
    Application.ex
    :GenServer

    電気的
    絶縁

    電圧
    レベル
    変換
    FA機器

    ここの書き方は

    こちらの書籍を参考

    インプレスR&D

    「Elixirへのいざない」 

    著者:川邑 リュウさん 


    (写真:IDEC, 日惠製作所 , elixir-circuits.github.io)

    View Slide

  35. Elixir だから、できそうなこと
    興味深いキーワード
    ● ホットコードデプロイ
    ○ 稼働中のシステムを停止させずにプログラム変更
    ● 並行性・メンテナンス性・耐障害性
    ひょっとして、PLCのラダー言語のような使い方ができるのでは?
    ● 実行を止めずにプログラム書き換え ”RUN中書き込み”
    ● 変数のリアルタイムモニタ
    35

    View Slide

  36. らんちゅうかきこみ?
    RUN中書き込み
    ?
    36

    View Slide

  37. RUN中書き込み
    ● PLC特有(?)の機能
    ● プログラムの実行を一切止めることなく、ソースを書き換え
    ● 書き換え直後から、そのまま新しいロジックで動き続ける
    ○ 設備を作っているとき、試運転中のデバッグ
    ○ 現場で稼働しながら、制御の小改造をするとき などの場面でよく使う機能
    ● VisualStudioの「Edit and Continue」みたいな機能?
    ○ ブレークしなくても書き換えできるのが ”RUN中”
    37

    View Slide

  38. Elixirで”RUN中書き込み”
    それっぽいことが出来そうなので、試してみました
    1. 赤と緑のランプが、1秒間隔で同時に点滅
    2. 緑のランプは点滅を続けたまま
    赤のランプの間隔を100ms間隔に書き換え
    これを、プログラムの実行を止めずにできるか?
    38
    積層表示灯

    (写真:PATLITE)

    View Slide

  39. 実験:Elixirで”RUN中書き込み”
    1. まず、ソース“Auto1.ex”の時間間隔の値を書き換え
    2. 次に、実行中の iex のプロンプトから
    (ここでソースをコンパイル)
    (コンパイルしたモジュールを再読込み)
    これだけ。
    39
    iex > recompile
    iex > r “Auto1.ex”
    ※iex

     Elixirの対話型シェル (Pythonみたいな感じ)


    View Slide

  40. 実験:Elixirで”RUN中書き込み”
    デモその2
    1. 赤と緑のランプが
    1秒間隔で同時に点滅
        ↓(ソース書き換え)
    2. 赤のランプだけが
    100ms間隔で点滅
    (緑はそのまま点滅!)
    40

    View Slide

  41. Elixirで”RUN中書き込み”
    できた!これはすごい!!
    (ネタ的に地味・・・”刺さる人に刺されば”幸いです)
    その他・・・
    ● 変数のリアルタイムモニタ
    ○ 出来た
    ○ 作例 https://github.com/trihome/UecsListner
    ● ”ホットスワップ”
    ○ まだ試せてない
    41

    View Slide

  42. 作例・Elixirで動かそう!産業機器
    デモその3
    ● 最近 流行り(?)の「遠隔ハンコ押し機」
    ○ ・・・の、ハンコを押すアクチュエータを製作
    ○ クラウド側は、先の方の発表内容でつくれそう!
    ● 逸般の誤家庭にある「電動サーボシリンダ」
    Elixir&Raspberry Piで制御にチャレンジ
    ○ 3.3V→24Vレベル変換は、自作回路で。
    42
    (写真:いらすとや)

    View Slide

  43. 作例・Elixirで動かそう!産業機器
    電動サーボシリンダ
    ● 位置制御
    ○ 精度 ±0.02mm以下
    ○ 速度 1000mm/sec以上
    ● トルク制御
    ○ 指定の押し圧に達したら停止
    ○ 今回はこの機能を使って、 ”いい感じ”に押印
    43
    (写真:IAI)
    スライダが
    前後に移動
    ロッドが
    伸縮
    大きさ

    200~2000mm


    View Slide

  44. 作ったモノ →
    44
    ここにハンコ
    高さ600mm

    View Slide

  45. 4. まとめ
    45

    View Slide

  46. まとめ
    1. Raspberry Piを、製造現場で活用する工夫について
    2. Elixirだから、できそうなこと
    ● 組込み向けの情報が少ないので、色々試行錯誤中・・・
    ○ (ハマったら、使い慣れた Python |> ROS2(rclex) |> Elixir で解決!)
    ● ナウでヤング(まだ作例が少ない)→ 試した分だけ新たな知見!
    ● 少しでも興味を持って頂ければ、”NervesJP”にも JOIN!
    46

    View Slide

  47. 参考情報
    1. Elixir概要
    a. https://speakerdeck.com/cooldaemon/erlang-falsele-sisatoxin-sa
    2. 言語の習得
    a. ”完全に理解した!”
    i. https://agency-star.co.jp/column/elixir-language
    ii. https://employment.en-japan.com/engineerhub/entry/2017/06/12/110000
    b. 教科書
    i. https://elixirschool.com/ja/
    c. Tips
    i. https://qiita.com/tags/elixir
    d. Nerves
    i. https://www.slideshare.net/takasehideki/nerveselixiriot
    ii. https://qiita.com/takasehideki/items/94820516ec95b85bae32
    e. GUI
    i. https://qiita.com/piacerex/items/3f8ee18c9443d63955bf
    ii. https://hotch-potch.hatenadiary.jp/entry/2020/06/20/214043
    47

    View Slide

  48. 参考情報
    myasu
    ● https://qiita.com/myasu/
    ○ 本日の詳細は追ってこちらにまとめます。
    ● https://github.com/trihome/
    ● https://speakerdeck.com/myasu/
    ● https://hotch-potch.hatenadiary.jp/
    48

    View Slide