Slide 1

Slide 1 text

ラダーを使わない コントローラ FA設備技術勉強会 in ROBOMECH 2021/06/06

Slide 2

Slide 2 text

自己紹介 ● twitter: pojiro3 ● web: https://www.tombo-works.com

Slide 3

Slide 3 text

経歴 エンジンベンチSE 出向 シャシダイ開発管理 A社 埼玉県 2010/04 - 2014/03 T社 豊田市 2014/04 - 2017/03 http://www.orientec.co.jp/products/ S社 名古屋市 2017/03 - 2019/10 組み込みLinux屋さん プログラマー Tombo Works 岡崎市 2020/06-現在 エンジニア

Slide 4

Slide 4 text

今日話すこと:ラダーを使わないコントローラ ● 昨今、ラズパイのようなSBCを産業用途(制御盤内配置等)で使用するケースがあ る ● なぜSBCが使われていたり、使おうとするトレンドがあるのか? ○ 安いから?ラダーを書きたくない(書けない)から? ※SBC: Single Board Computer ● 上記もあると思うが、コントローラで 「やりたいこと」、「やれると考えられること」が増えたからではないか? ● 実現するにはどのような方法があるか? 「ラダーを使わないコントローラ」について考えてみた

Slide 5

Slide 5 text

盤以下で閉じたケース ● 入力で計測(Measure) ● PLC で監視(Monitor) ● 出力で制御(Control) 従来:PLCのみの場合 制御盤 PLC 入 力 出 力

Slide 6

Slide 6 text

盤以上に開かれたケース ● 入力で計測 ● PLC で監視 ● 出力で制御 プラス ● 例1:DB/APIとのやりとり ● 例2:別の制御機構の指示受け やりたいこと、やれると考えられること 制御盤 PLC? 入 力 出 力 DB/API 別の制御機構 例1 例2 例2

Slide 7

Slide 7 text

盤以上に開かれたケースの考えられるパターン 制御盤 SBC的な何か 入 力 出 力 DB/API 別の制御機構 例1 例2 例2 制御盤 PLC 入 力 出 力 DB/API 別の制御機構 例1 例2 例2 SBC/PC

Slide 8

Slide 8 text

悩み①:SBC(ハード)をどうする? ● 安価だし、ラズパイでやる? ○ 信頼性が気になる。。 (計測/監視/制御の要になるから) ■ 壊れない使い方をすれば壊れないけど、壊れない使い方を知るには時間がかかる ● じゃあ、製品仕様に合わせたボードを開発する? ○ いやいや、予算的になかなか ● それなら購入する? ○ どれを選定したらいいのだろうか?

Slide 9

Slide 9 text

悩み②:SBC(ソフト)の開発 ● 電断対策(ファイル書き込み中に電源が落ちると。。) ○ UPSをかます? ● 各種ソフトウェア設定とアプリの開発 ○ Linuxであれば、systemd, network, apache, nginx, /etc 配下の設定いじり ○ アプリからIOを叩くには?プロセスがクラッシュした場合の対策は? ● ファームの取扱 ○ バージョン管理、バージョンアップ方法 などなど

Slide 10

Slide 10 text

だとすると、欲しいのは

Slide 11

Slide 11 text

①産業用途の堅牢なハード & ②組み込みLinux開発の煩わしさを 隠蔽してくれる何か

Slide 12

Slide 12 text

②の解決策:Nerves ● > Nerves defines a new way to build embedded systems using Elixir. https://hexdocs.pm/nerves/getting-started.html ● 電断耐性あり、イメージサイズ小(ファイルシステムがSquashFS ● systemdを覚えなくていい、/etcに設定が散らない(NervesがLinuxを隠蔽 ● 並行処理に強く、プロセス監視復旧機能あり(Elixirの強み ○ サーバー:Phoenix, クライアント:HTTPoison, Mint, ... ○ IO制御:Cicuits.GPIO/I2C, …, ネットワーク:VintageNet, … ○ ファームウェア:設定がプロジェクトに閉じているので管理が容易、アップデートサーバーもある!

Slide 13

Slide 13 text

①の解決策:、、、 ● Nervesがオフィシャルにサポートするターゲットマシンに堅牢ハードはない ○ Beaglebones ○ Raspberry Pi Zero, A+, B and B+ ○ Raspberry Pi 2 Model B ○ Raspberry Pi 3 Model B and B+ ○ Raspberry Pi 3 Model A+ ○ Raspberry Pi 4 Model B ○ OSD32MP1 ○ Generic x86_64 ● Nerves Community in Japanのmyasu さんがとあるハードを紹介 ○ リアルタイムOSコントローラ e-RT3 → Linuxが動作する堅牢なハード!!

Slide 14

Slide 14 text

e-RT3はNervesのサポートがされてないんじゃ? ● e-RT3(汎用OS対応CPUモジュール)のイケてるところ ○ OSのブートの仕様が開かれている ○ Ubuntuイメージ、Linuxカーネルソースが開かれている ○ 開かれていると何が嬉しい? ■ ユーザーはカーネルを差し替えることで別のディストリビューションを使用可能 ■ おれおれLinuxを作って動作させることも可能 ● Nervesのイケてるところ ○ 他のボードへの移植に 開かれている、手順も大雑把だけどある ■ > We only officially support easily obtained hardware, but that doesn't mean that Nerves only works on these boards. (https://github.com/nerves-project/nerves_system_br/blob/main/README.md

Slide 15

Slide 15 text

なので、移植できました!

Slide 16

Slide 16 text

悩みの解決案!! ● ①産業用途の堅牢なハード ○ e-RT3(汎用OS対応CPUモジュール) ○ ここが増えていくといいですね ♪ ● ②組み込みLinux開発の煩わしさを隠蔽してくれる何か ○ Nerves

Slide 17

Slide 17 text

整理すると 制御盤 SBC的な何か 入 力 出 力 DB/API 別の制御機構 例1 例2 例2 制御盤 PLC 入 力 出 力 DB/API 別の制御機構 例1 例2 例2 SBC ここに対する案

Slide 18

Slide 18 text

デモ

Slide 19

Slide 19 text

まとめ ● ラダーを使わないコントローラの案を考えました ○ ハードは、e-RT3(汎用OS対応CPUモジュール) ○ ソフトは、Nerves ● 落ち穂拾い ○ SBC-PLC間のI/Fどりパターンもアイデアがあります! が、時間が無いのでまたの機会があれば

Slide 20

Slide 20 text

リンク ● 産業用堅牢ハードでElixir:e-RT3にNervesポーティング ● e-RT3:汎用OS対応CPUモジュール F3RP70-2L ○ リアルタイムOSコントローラ e-RT3 (セットアップ編) myasuさん記事 ● Nerves:https://www.nerves-project.org/ ○ Nerves Community in Japan!! ○ なぜ僕はNervesに期待するのか ○ Nerves Hub:https://www.nerves-hub.org/ ■ IoTフレームワークで組み込み開発に挑戦 IoT向きモダン言語Elixir(エリクサー)の研究(第6回) 出荷後の機器のファームウェアをOTAで更新