SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Exineris Project
by kochi.ex
産業用制御を Elixir で
2020.03.18 菊池豊 高知工科大学 1
高知から来ました
• kochi.ex • 高知組み込み会
2020.03.18 菊池豊 高知工科大学 2
2020/03/18 16)12kochi.ex -- Elixir community in Kochi - connpass
1 / 1 ページhttps://kochi-ex.connpass.com/
イベント メンバー 資料 0 ツイート グループのメンバーです
全てのイベントを見る(3件)
グループの説明
Elixir / Nerves / Phoenix / Erlang を中心とした研究・開発・勉強を楽しむ非営利の団体です。高知県を中心に活動してます。
オフ会を不定期に開催しています。
終了したイベント
メンバー (20人)
管理者管理者
他のメンバー他のメンバー
資料(0件)
グループに紐付いているイベントページで資料が投稿
されると、最近10件まで表示されます。
kochi.ex -- Elixir community in Kochi
ご利用ガイド 利用規約 特定商取引法に基づく表示 プライバシーポリシー connpassへのお問い合わせ
powered by connpass
イベントを作成 メンバー追加 グループメッセージを送る ブラックリスト グループを編集する
kochi.ex -- Elixir community in Kochi
いいね! 10
フォロー参加者
フォローブックマーク
2019/10/11(金) 18:00∼
kochi.ex 発足会・記念講演会 #2
kikuyuta 他
高知県高知市永国寺町6-28
13人
フォロー参加者
フォローブックマーク
2019/07/05(金) 17:00∼
kochi.ex もくもぐ会 #1
kikuyuta
高知県高知市永国寺町6-28
5/10人
フォローブックマーク
2019/05/28(火) 13:30∼
Elixir Nerves トレーニング #0 in 高知.日本
kikuyuta
高知県高知市永国寺町6-28
3/3人
2020/03/18 16)15高知組み込み会 - connpass
1 / 6 ページhttps://kochi-embedded-meeting.connpass.com/
イベント メンバー 資料 0 ツイート グループのメンバーです
グループの説明
はじめに
高知市近辺で組み込みソフトウェアに関わる人達のスキルアップや情報交換、勉強会などの場を提供することを目的に立ち上げ
たコミュニティです。 ハードウェアエンジニアやウェブクリエイターなど、組み込みに関心のある人達にも参加頂ける会にした
いと思っています。
IoTと名前のつく講座やセミナーはたくさん開催されていますが、ビジネスやクラウド寄りの話が多いように思います。センサ
ーやマイコンあってこそのIoTですので、このコミュニティで勉強しませんか。
メンバー (38人)
管理者管理者
他のメンバー他のメンバー
高知組み込み会
Kochi Embedded Meeting
もっと見る開催前イベント
2020/04/03(金) 高知組み込み会 #5 「ロ…
いいね! 0
2020/03/18 16)15高知組み込み会 - connpass
5 / 8 ページhttps://kochi-embedded-meeting.connpass.com/
全てのイベントを見る(5件)
次回イベント
終了したイベント
高知組み込み会
フォロー参加者
フォローブックマーク
開催前 2020/04/03(金) 19:00∼
高知組み込み会 #5 「ロボットシステムのつくりかた」
YujiChiya
高知県高知市永国寺町6-28
18人
フォロー参加者
2020/01/17(金) 19:00∼
高知組み込み会 #4 「車載系」
YujiChiya
高知県高知市永国寺町6-28
11人
フォロー参加者
2019/11/22(金) 19:00∼
高知組み込み会 #3 「盤屋の会」
YujiChiya
高知県高知市永国寺町6-28
14人
フォロー参加者
2019/07/26(金) 18:30∼
高知組み込み会 #2 「回顧録」
YujiChiya
高知県高知市永国寺町6-28
7/50人
フォロー参加者
フォローブックマーク
2019/06/28(金) 19:00∼
高知組み込み会 #1 「IoTと組み込みと私」
YujiChiya
〒780-0844 高知県高知市永国寺町2-22
14人
今日のお話
• 小水力発電所を気持ちよく作りたい
– 発電所の制御、Web経由の監視・操作、統合管理
• ハードウェアとソフトウェアを考えてます
– 工業制御全般にも使えるように
• 色々教えて下さい
– 工業制御一般にあまり明るくないので
2020.03.18 菊池豊 高知工科大学 5
馬路村小水力発電所 (2016.03.30運転開始)
2020.03.18 菊池豊 高知工科大学 7
• 発電所制御はPLC
• データ打上げと web にラズパイ2B x3 & Linux & Python
小水力発電所 Small Hydropower (49.9kW)
2020.03.18 菊池豊 高知工科大学 8
• 発電所制御とクラウド連携に
bunkaPLC & linux & python
小水力発電所 Small Hydropower (19.9kW)
2020.03.18 菊池豊 高知工科大学 9
• 発電所制御とクラウド連携に bunkaPLC & linux & python
これらで構築したシステム
2020.03.18 菊池豊 高知工科大学 10
水力発電所と言うとダム式を思い浮かべますが
2020.03.18 菊池豊 高知工科大学 11
ダム
水圧鉄管
放水口
発電所
小水力発電は水路式・流込み式が多い
2020.03.18 菊池豊 高知工科大学 12
水圧鉄管
発電所
放水口
導水路
取水堰
水槽
小水力発電設備
取水設備
余水路
水量が多いときや、水車発電機
を停止した場合に水を流す水
路
水を河川などから取る設備
導水路
ヘッドタンク
取水した水の土砂・落ち葉を除去したり、
水圧管に水を安定して導くためのタンク
水圧管
発電するための水圧に
耐えられる管
河川
もしくは用水路
発電所
水車や電気設備が設置される建物
放水路
発電に使った水を
もとの河川に戻す水路
発電所内
水車発電機
水車 発電機 配電盤 変圧器
系統連系
配電線
ヘッドタンクに圧力無しで
水を導く渠または管
2020.03.18 菊池豊 高知工科大学 13
小水力発電システム
2020.03.18 菊池豊 高知工科大学 14
水車 発電機 ドライバ インバータ
制御・監視・管理
トランス保護
ヘッドタンク水位
油圧ポンプ
ソフトウェアの話から
• Python でうまくいかなかったので
– よらば大樹の陰作戦がまずかった
• Elixir を使うことにしました
– Nerves ってのもあるし
• 現在、悪戦苦闘中
2020.03.18 菊池豊 高知工科大学 17
Elixir を採用することに
• 並行・並列プログラミング関数型言語
– アクターモデルによる並行性(プロセスとメッセージ)
• プロセス(OSのプロセスと異なる軽量スレッド)
– 1CPUで数十万プロセスも可能
– 1プロセスあたり3kB程度のメモリ使用
• 耐障害性
– アプリ停止なしの障害時プロセス再起動
– プロセスのホットスワップ可能
• 元々は電話交換システム用(1986〜)
– にできた Erlang の上に乗ってる
2020.03.18 菊池豊 高知工科大学 19
Nerves: Elixir の IoT フレームワーク
• Elixir の環境に連続する IoT 開発環境が利用可能
• 基本的な I/O アクセス手法を提供
• ターゲット用に 12MB〜 のファームウェアを生成
• ターゲットHW: Raspberry Pi, BeagleBone, x86_64
• Apache 2.0
• https://nerves-project.org/
– hex と github も
2020.03.18 菊池豊 高知工科大学 20
どうやって制御を Elixir で書くのか
• LLD: Ladder Logic Diagram (ラダー・ロジック図)
– リレー回路を模倣するプログラミング図
• 例題をLLDで描くと
– X0: 緑ボタン
– X1: 赤ボタン
– Y0: MC(リレー)
• 出力を入力に正帰還
2020.03.18 菊池豊 高知工科大学 21
Wikipedia 「ラダー・ロジック」より
素直に Elixir で書くと
Naive implementation in Elixir
• 要素 elements
– X0: 緑ボタン
– X1: 赤ボタン
– Y0: MC(リレー)
• 関係の記述をループさせる
Loop the rungs
– PLC と同じ動作 same as PLC
– ウーン… Not so beautiful
2020.03.18 菊池豊 高知工科大学 22
Wikipedia 「ラダー・ロジック」より
r = fn(x0, x1, y0)
-> (x0 or y0) and not x1
end
y0 = r.(x0, x1, y0)
Elixir ならこんなことができるのでは…
• スタイル
– 各デバイスをそれぞれプロセスに
– それらの関連性を記述する
• Pub/Sub モデルとかで
• 良いこと
– レベルではなくエッジで動作
• 無限ループで模倣でない
– 各要素が SV 監視下に
2020.03.18 菊池豊 高知工科大学 25
A bottunB bottun
Main
Supervisor
:global
:button
Worker
:global
:ledGPIO 17
GPIO
18
Circuits.GPIO.set_interrupt
GenServer.handle_info
GpioInOut.read
GenServer.handle_info
GpioInOut.write Circuits.GPIO.write
true/false 0 / 1
2020.03.18 菊池豊 高知工科大学 26
Elixir ならでわの技(と思う)
そしてハードウェアも作ってみました
• 左から、コンボ、DIO、AIO モジュール
2020.03.18 菊池豊 高知工科大学 27
標準的なPLCのI/O拡張
菊池豊 高知工科大学 28
DI
• 入出力ボードを追加できるようにする
– 要は単一のホスト
CPU
DO
…
AI AO RS485等
…
必要な入出力点数に応じて増やせるが…
バス配線ないしはディジーチェーン
ここが性能の
限界を決める
ここが分散の限界を決める
2020.03.18
拡張は分散で
菊池豊 高知工科大学 29
• ホストを増やせるようにする
• IP/Ethernetで接続
必要なAD入出力点数に応じてホストが増加
CPU CPU CPU CPU CPU CPU…
DIO DIO DIO AIO AIORS485等
すべてに
CPU装備
HUBによるスター配線
2020.03.18
軽量スレッドの
並行動作で協調
Exi 1 仕様
菊池豊 高知工科大学 30
項目 機能・性能 コンボボード デジタルボード アナログボード
設計 完了 完了 完了
製作 試作4枚 試作3枚 試作3枚
CPU ARM Cortex-A9 相当 ◯ ◯ ◯
デジタル入力 絶縁入力 8チャンネル 16チャンネル
デジタル出力 絶縁出力 4チャンネル 16チャンネル
アナログ入力 4-20mA 5チャンネル 16チャンネル
アナログ出力 4-20mA, 給電・無給電兼用 1チャンネル 16チャンネル
RS422/485 Half dup / Full dup 切替対応 1ポート 1ポート 1ポート
RS232 デバッグ用コンソール 5pin 1ポート 1ポート 1ポート
USB USB 2.0(拡張用内蔵ポート) 2ポート 2ポート 2ポート
LAN 100baseTX auto MDIX 1ポート 1ポート 1ポート
SDカード 誤操作防止位置マウント 1スロット 1スロット 1スロット
RTC 5ppm精度、バッテリバックアップ ◯ ◯ ◯
ウォッチドッグタイマ MAX6369もしくは相当品 ◯ ◯ ◯
状態表示LED 4色 (Green, Yellow, Orange, Red) ◯ ◯ ◯
電源断検出 検出電圧設定可能(半固定抵抗) ◯ ◯ ◯
電源 PoE (IEEE802.3af) 準拠 ◯ ◯ ◯
動作温度範囲 -20℃〜70℃ ◯ ◯ ◯
ケース DINレール装着型 ◯ ◯ ◯
2020.03.18
ご清聴ありがとうございました
Thank you for your attention
2020.03.18 菊池豊 高知工科大学 33
ご清聴ありがとうございました
Thank you for your attention
2020.03.18 菊池豊 高知工科大学 31

Contenu connexe

Plus de Yutaka Kikuchi

Plus de Yutaka Kikuchi (20)

Should I talk about Logger or Process Registries?
Should I talk about Logger or Process Registries?Should I talk about Logger or Process Registries?
Should I talk about Logger or Process Registries?
 
スケールセンシティブ 〜里山工学を理論付ける〜
スケールセンシティブ 〜里山工学を理論付ける〜スケールセンシティブ 〜里山工学を理論付ける〜
スケールセンシティブ 〜里山工学を理論付ける〜
 
ルーティング最新動向 〜4バイトAS〜
ルーティング最新動向 〜4バイトAS〜ルーティング最新動向 〜4バイトAS〜
ルーティング最新動向 〜4バイトAS〜
 
FA関連技術のオープンソース化計画
FA関連技術のオープンソース化計画FA関連技術のオープンソース化計画
FA関連技術のオープンソース化計画
 
デバイスごとにアドレスとAPIを 〜プロトタイプを Elixir/Nerves で〜
デバイスごとにアドレスとAPIを 〜プロトタイプを Elixir/Nerves で〜デバイスごとにアドレスとAPIを 〜プロトタイプを Elixir/Nerves で〜
デバイスごとにアドレスとAPIを 〜プロトタイプを Elixir/Nerves で〜
 
RICC PIoT Workshop ハンズオン
RICC PIoT Workshop ハンズオンRICC PIoT Workshop ハンズオン
RICC PIoT Workshop ハンズオン
 
IoT小箱で小水力発電所を制御する
IoT小箱で小水力発電所を制御するIoT小箱で小水力発電所を制御する
IoT小箱で小水力発電所を制御する
 
Small hydro power plant systems with multi vender method
Small hydro power plant systems with multi vender methodSmall hydro power plant systems with multi vender method
Small hydro power plant systems with multi vender method
 
第4回 kochi.ex オン・オフラインミーティング
第4回 kochi.ex オン・オフラインミーティング第4回 kochi.ex オン・オフラインミーティング
第4回 kochi.ex オン・オフラインミーティング
 
Anyway folks! Let's get started with your Nerves machines.
Anyway folks! Let's get started with your Nerves machines.Anyway folks! Let's get started with your Nerves machines.
Anyway folks! Let's get started with your Nerves machines.
 
Modernization of Factory Automation with Elixir based systems and communities
Modernization of Factory Automation with Elixir based systems and communitiesModernization of Factory Automation with Elixir based systems and communities
Modernization of Factory Automation with Elixir based systems and communities
 
クラウドと組込との接点を求めて (Searching for a meet point between clouds and embedded systems)
クラウドと組込との接点を求めて (Searching for a meet point between clouds and embedded systems)クラウドと組込との接点を求めて (Searching for a meet point between clouds and embedded systems)
クラウドと組込との接点を求めて (Searching for a meet point between clouds and embedded systems)
 
小水力発電で地域と世界の未来づくり
小水力発電で地域と世界の未来づくり小水力発電で地域と世界の未来づくり
小水力発電で地域と世界の未来づくり
 
Elixir とか組込みとか (On Elixir and embedded systems)
Elixir とか組込みとか (On Elixir and embedded systems)Elixir とか組込みとか (On Elixir and embedded systems)
Elixir とか組込みとか (On Elixir and embedded systems)
 
To shorten the distance between ladders and clouds
To shorten the distance between ladders and cloudsTo shorten the distance between ladders and clouds
To shorten the distance between ladders and clouds
 
Using Elixir for Factory Automation - how to execute ladder logic
Using Elixir for Factory Automation - how to execute ladder logicUsing Elixir for Factory Automation - how to execute ladder logic
Using Elixir for Factory Automation - how to execute ladder logic
 
旧畑山発電所 2019.04.13 の記録
旧畑山発電所 2019.04.13 の記録旧畑山発電所 2019.04.13 の記録
旧畑山発電所 2019.04.13 の記録
 
小水力発電による地域活性化
小水力発電による地域活性化小水力発電による地域活性化
小水力発電による地域活性化
 
A brief guide to introducing processes of small hydro power (in Japanese). 小水...
A brief guide to introducing processes of small hydro power (in Japanese). 小水...A brief guide to introducing processes of small hydro power (in Japanese). 小水...
A brief guide to introducing processes of small hydro power (in Japanese). 小水...
 
小水力発電による地域活性化スキーム (A scheme for regional revitalization with small hydro power)
小水力発電による地域活性化スキーム (A scheme for regional revitalization with small hydro power)小水力発電による地域活性化スキーム (A scheme for regional revitalization with small hydro power)
小水力発電による地域活性化スキーム (A scheme for regional revitalization with small hydro power)
 

Dernier

Dernier (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

Exineris Project by kochi.ex

  • 1. Exineris Project by kochi.ex 産業用制御を Elixir で 2020.03.18 菊池豊 高知工科大学 1
  • 2. 高知から来ました • kochi.ex • 高知組み込み会 2020.03.18 菊池豊 高知工科大学 2 2020/03/18 16)12kochi.ex -- Elixir community in Kochi - connpass 1 / 1 ページhttps://kochi-ex.connpass.com/ イベント メンバー 資料 0 ツイート グループのメンバーです 全てのイベントを見る(3件) グループの説明 Elixir / Nerves / Phoenix / Erlang を中心とした研究・開発・勉強を楽しむ非営利の団体です。高知県を中心に活動してます。 オフ会を不定期に開催しています。 終了したイベント メンバー (20人) 管理者管理者 他のメンバー他のメンバー 資料(0件) グループに紐付いているイベントページで資料が投稿 されると、最近10件まで表示されます。 kochi.ex -- Elixir community in Kochi ご利用ガイド 利用規約 特定商取引法に基づく表示 プライバシーポリシー connpassへのお問い合わせ powered by connpass イベントを作成 メンバー追加 グループメッセージを送る ブラックリスト グループを編集する kochi.ex -- Elixir community in Kochi いいね! 10 フォロー参加者 フォローブックマーク 2019/10/11(金) 18:00∼ kochi.ex 発足会・記念講演会 #2 kikuyuta 他 高知県高知市永国寺町6-28 13人 フォロー参加者 フォローブックマーク 2019/07/05(金) 17:00∼ kochi.ex もくもぐ会 #1 kikuyuta 高知県高知市永国寺町6-28 5/10人 フォローブックマーク 2019/05/28(火) 13:30∼ Elixir Nerves トレーニング #0 in 高知.日本 kikuyuta 高知県高知市永国寺町6-28 3/3人 2020/03/18 16)15高知組み込み会 - connpass 1 / 6 ページhttps://kochi-embedded-meeting.connpass.com/ イベント メンバー 資料 0 ツイート グループのメンバーです グループの説明 はじめに 高知市近辺で組み込みソフトウェアに関わる人達のスキルアップや情報交換、勉強会などの場を提供することを目的に立ち上げ たコミュニティです。 ハードウェアエンジニアやウェブクリエイターなど、組み込みに関心のある人達にも参加頂ける会にした いと思っています。 IoTと名前のつく講座やセミナーはたくさん開催されていますが、ビジネスやクラウド寄りの話が多いように思います。センサ ーやマイコンあってこそのIoTですので、このコミュニティで勉強しませんか。 メンバー (38人) 管理者管理者 他のメンバー他のメンバー 高知組み込み会 Kochi Embedded Meeting もっと見る開催前イベント 2020/04/03(金) 高知組み込み会 #5 「ロ… いいね! 0 2020/03/18 16)15高知組み込み会 - connpass 5 / 8 ページhttps://kochi-embedded-meeting.connpass.com/ 全てのイベントを見る(5件) 次回イベント 終了したイベント 高知組み込み会 フォロー参加者 フォローブックマーク 開催前 2020/04/03(金) 19:00∼ 高知組み込み会 #5 「ロボットシステムのつくりかた」 YujiChiya 高知県高知市永国寺町6-28 18人 フォロー参加者 2020/01/17(金) 19:00∼ 高知組み込み会 #4 「車載系」 YujiChiya 高知県高知市永国寺町6-28 11人 フォロー参加者 2019/11/22(金) 19:00∼ 高知組み込み会 #3 「盤屋の会」 YujiChiya 高知県高知市永国寺町6-28 14人 フォロー参加者 2019/07/26(金) 18:30∼ 高知組み込み会 #2 「回顧録」 YujiChiya 高知県高知市永国寺町6-28 7/50人 フォロー参加者 フォローブックマーク 2019/06/28(金) 19:00∼ 高知組み込み会 #1 「IoTと組み込みと私」 YujiChiya 〒780-0844 高知県高知市永国寺町2-22 14人
  • 3. 今日のお話 • 小水力発電所を気持ちよく作りたい – 発電所の制御、Web経由の監視・操作、統合管理 • ハードウェアとソフトウェアを考えてます – 工業制御全般にも使えるように • 色々教えて下さい – 工業制御一般にあまり明るくないので 2020.03.18 菊池豊 高知工科大学 5
  • 4. 馬路村小水力発電所 (2016.03.30運転開始) 2020.03.18 菊池豊 高知工科大学 7 • 発電所制御はPLC • データ打上げと web にラズパイ2B x3 & Linux & Python
  • 5. 小水力発電所 Small Hydropower (49.9kW) 2020.03.18 菊池豊 高知工科大学 8 • 発電所制御とクラウド連携に bunkaPLC & linux & python
  • 6. 小水力発電所 Small Hydropower (19.9kW) 2020.03.18 菊池豊 高知工科大学 9 • 発電所制御とクラウド連携に bunkaPLC & linux & python
  • 9. 小水力発電は水路式・流込み式が多い 2020.03.18 菊池豊 高知工科大学 12 水圧鉄管 発電所 放水口 導水路 取水堰 水槽
  • 11. 小水力発電システム 2020.03.18 菊池豊 高知工科大学 14 水車 発電機 ドライバ インバータ 制御・監視・管理 トランス保護 ヘッドタンク水位 油圧ポンプ
  • 12. ソフトウェアの話から • Python でうまくいかなかったので – よらば大樹の陰作戦がまずかった • Elixir を使うことにしました – Nerves ってのもあるし • 現在、悪戦苦闘中 2020.03.18 菊池豊 高知工科大学 17
  • 13. Elixir を採用することに • 並行・並列プログラミング関数型言語 – アクターモデルによる並行性(プロセスとメッセージ) • プロセス(OSのプロセスと異なる軽量スレッド) – 1CPUで数十万プロセスも可能 – 1プロセスあたり3kB程度のメモリ使用 • 耐障害性 – アプリ停止なしの障害時プロセス再起動 – プロセスのホットスワップ可能 • 元々は電話交換システム用(1986〜) – にできた Erlang の上に乗ってる 2020.03.18 菊池豊 高知工科大学 19
  • 14. Nerves: Elixir の IoT フレームワーク • Elixir の環境に連続する IoT 開発環境が利用可能 • 基本的な I/O アクセス手法を提供 • ターゲット用に 12MB〜 のファームウェアを生成 • ターゲットHW: Raspberry Pi, BeagleBone, x86_64 • Apache 2.0 • https://nerves-project.org/ – hex と github も 2020.03.18 菊池豊 高知工科大学 20
  • 15. どうやって制御を Elixir で書くのか • LLD: Ladder Logic Diagram (ラダー・ロジック図) – リレー回路を模倣するプログラミング図 • 例題をLLDで描くと – X0: 緑ボタン – X1: 赤ボタン – Y0: MC(リレー) • 出力を入力に正帰還 2020.03.18 菊池豊 高知工科大学 21 Wikipedia 「ラダー・ロジック」より
  • 16. 素直に Elixir で書くと Naive implementation in Elixir • 要素 elements – X0: 緑ボタン – X1: 赤ボタン – Y0: MC(リレー) • 関係の記述をループさせる Loop the rungs – PLC と同じ動作 same as PLC – ウーン… Not so beautiful 2020.03.18 菊池豊 高知工科大学 22 Wikipedia 「ラダー・ロジック」より r = fn(x0, x1, y0) -> (x0 or y0) and not x1 end y0 = r.(x0, x1, y0)
  • 17. Elixir ならこんなことができるのでは… • スタイル – 各デバイスをそれぞれプロセスに – それらの関連性を記述する • Pub/Sub モデルとかで • 良いこと – レベルではなくエッジで動作 • 無限ループで模倣でない – 各要素が SV 監視下に 2020.03.18 菊池豊 高知工科大学 25 A bottunB bottun Main Supervisor
  • 20. 標準的なPLCのI/O拡張 菊池豊 高知工科大学 28 DI • 入出力ボードを追加できるようにする – 要は単一のホスト CPU DO … AI AO RS485等 … 必要な入出力点数に応じて増やせるが… バス配線ないしはディジーチェーン ここが性能の 限界を決める ここが分散の限界を決める 2020.03.18
  • 21. 拡張は分散で 菊池豊 高知工科大学 29 • ホストを増やせるようにする • IP/Ethernetで接続 必要なAD入出力点数に応じてホストが増加 CPU CPU CPU CPU CPU CPU… DIO DIO DIO AIO AIORS485等 すべてに CPU装備 HUBによるスター配線 2020.03.18 軽量スレッドの 並行動作で協調
  • 22. Exi 1 仕様 菊池豊 高知工科大学 30 項目 機能・性能 コンボボード デジタルボード アナログボード 設計 完了 完了 完了 製作 試作4枚 試作3枚 試作3枚 CPU ARM Cortex-A9 相当 ◯ ◯ ◯ デジタル入力 絶縁入力 8チャンネル 16チャンネル デジタル出力 絶縁出力 4チャンネル 16チャンネル アナログ入力 4-20mA 5チャンネル 16チャンネル アナログ出力 4-20mA, 給電・無給電兼用 1チャンネル 16チャンネル RS422/485 Half dup / Full dup 切替対応 1ポート 1ポート 1ポート RS232 デバッグ用コンソール 5pin 1ポート 1ポート 1ポート USB USB 2.0(拡張用内蔵ポート) 2ポート 2ポート 2ポート LAN 100baseTX auto MDIX 1ポート 1ポート 1ポート SDカード 誤操作防止位置マウント 1スロット 1スロット 1スロット RTC 5ppm精度、バッテリバックアップ ◯ ◯ ◯ ウォッチドッグタイマ MAX6369もしくは相当品 ◯ ◯ ◯ 状態表示LED 4色 (Green, Yellow, Orange, Red) ◯ ◯ ◯ 電源断検出 検出電圧設定可能(半固定抵抗) ◯ ◯ ◯ 電源 PoE (IEEE802.3af) 準拠 ◯ ◯ ◯ 動作温度範囲 -20℃〜70℃ ◯ ◯ ◯ ケース DINレール装着型 ◯ ◯ ◯ 2020.03.18
  • 23. ご清聴ありがとうございました Thank you for your attention 2020.03.18 菊池豊 高知工科大学 33 ご清聴ありがとうございました Thank you for your attention 2020.03.18 菊池豊 高知工科大学 31