Slide 1

Slide 1 text

Elixirと Raspberry Pi で
 産業機器の制御にチャレンジ
 2020-7-10 NervesJP #8 / ALGYAN Webinar 1

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

軽く紹介 1. Raspberry Pi 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

製造現場のカイゼン 9 ランプ付き
 ボタン
 様々な部品の
 入った箱
 作例1:部品の取り間違いを防止する「ポカよけ」装置

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

センサの信号
 FA機器とRaspberryPiの接続 16 (写真:Siemens, DIGITAL) 用センサなど
 用表示灯など
 で動作する機器
 
 Vで動作する部品
 フォトカプラで
 電気的に絶縁
 フォトカプラで
 電気的に絶縁
 トランジスタ
 アレイで
 電流増幅
 表示灯の信号
 表示灯を点灯
 センサの信号


Slide 17

Slide 17 text

FA機器とRaspberryPiの接続 17 (写真:Siemens, DIGITAL) 用センサなど
 用表示灯など
 で動作する機器
 
 Vで動作する部品
 GPIO24V~3.3V
 レベル変換 &RTCユニット
 (ユニバーサル基板 泣)


Slide 18

Slide 18 text

FA機器とRaspberryPiの接続 18 (写真:Siemens, DIGITAL) 用センサなど
 用表示灯など
 で動作する機器
 
 Vで動作する部品
 GPIO24V~3.3V
 レベル変換 &RTCユニット
 (基板を作った)


Slide 19

Slide 19 text

FA機器とRaspberryPiの接続 GitHubで回路図・ガーバーデータを公開してます https://github.com/trihome/RasPi_PiFA 19 GPIO24V~3.3V
 レベル変換 &RTCユニット


Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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


Slide 22

Slide 22 text

RaspberryPi を PLCっぽく使う 22 Grove Base 
 Hat for Raspberry Pi 
 UPS&
 電源監視
 ユニット
 Raspberry Pi
 GPIO24V~3.3Vレベル変換 &RTCユニット
 アナログ
 GPIO24V
 赤:通信異常など
 青:正常運転
 様々な
 既製品のセンサー
 (無ければ自作)
 様々なFA機器


Slide 23

Slide 23 text

再利用しやすく・頑丈に FA部品を活用、汎用的な制御盤に仕上げ 23 ●サーキットプロテクタ
  (IDEC、富士電機)
 ●端子台
  (東洋技研、WAGO)
 RaspberryPi
 GROVE Hat
 ●プラボックス
  (日東工業、タカチ)
 ●アルミフレーム
  (NICオートテック)
 ●ゴム足
  (タキゲン)
 ●コンセント
  (パナソニック)
 ●ランプ、スイッチ
  (IDEC、オムロン)
 ●タワー表示灯
 (日恵製作所、パトライト)
 ●DINレール、配線ダクト
 (篠原電気)
 300mm
 500mm


Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

ここで、Elixirとの出会い takase先生 (←当時はROSのコミュニティ) 「福岡でNervesやるよ!」 私 「???」(Nervesなにそれ?) その真相を探りに福岡へ(19年7月) 30 (写真:CONNPASS, fukuoka/kokura.ex)

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

構成 33 Raspberry Pi
 GPIO I2C 自動運転コード Auto.ex 個別動作の 定義コード Worker.ex Elixir Circuit モジュール ドライバ Mcp23017.ex Elixirコード プロセス管理(スーパーバイザ) Application.ex :GenServer
 電気的 絶縁 & 電圧 レベル 変換 (写真:IDEC, 日惠製作所 , elixir-circuits.github.io) FA機器


Slide 34

Slide 34 text

構成 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)

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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


Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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


Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

4. まとめ 45

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

参考情報 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

Slide 48

Slide 48 text

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