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

Elixir Machine Production

Elixir Machine Production

We produced an PLC like PC for industrial use in Elixir language with its IoT platform Nerves. The machine is compatible to BeableBone black or green as a open source hardware of small computer boards. This presentation shows its background, concept, design, implementation, and testing, Also we discuss about the issue of the hardware. The document is written in Japanese.

kikuyuta

March 01, 2022
Tweet

More Decks by kikuyuta

Other Decks in Technology

Transcript

  1. …とは… • どんな非力なチップ乗せたデバイスでも • どんなネットワークに乗っかってても • どっかで書いた Elixir プログラムに従って動いて •

    それが決まった時間内に返答し • ってのがデバイス繋げばもう出来上がる… 2022.03.01 高知工科大学 菊池豊 4
  2. 小水力発電所をつくろうとしたときに… • 全部の MCCB/ELCB/MC が… – 取り付ければ無線で繋がり… • 全部のセンサ/アクチュエータが… –

    取り付ければ無線で繋がり… • 制御用マシンも繋がり… – それの管理用クラウドがデジタルツインで出来上がり… • …をどっか一箇所でプログラミングすると全部いごく… 2022.03.01 高知工科大学 菊池豊 6
  3. …というのが一足飛びに行かないので… • 個々のデバイスが IP でしゃべるってのができないか – FA は WireFull なのが基本だし、IP

    でもない • SBC (Single Board Computer) を使えないか – FA (Factory Automation) にはなかなか使われない • SBC は不安なら筐体ごとつくれないか – PLC (Programmable Logic Controller) ふうなハードで • …をやってみたのがこれまで… 2022.03.01 高知工科大学 菊池豊 7
  4. IPしゃべるリレーを作ってみた 2022.03.01 高知工科大学 菊池豊 8 • GPIO 出力をフォトカプ ラ通して DC24V

    を駆動 • ラズパイの電源は DC24V から DC-DC で • パイロット LED 付き • コイルの逆起電力はダイ オードで吸収
  5. FA 用 SBC 拡張 2022.03.01 高知工科大学 菊池豊 9 • BeagleBone

    Green に I/O 追加 – RPi も BBG も FA 用の I/O ではない… • オサレなケースも
  6. 基本的な考え方 • Nerves が簡単にいごくように – あまり特別なハードウェアだと buildroot が大変 – set

    –x MIX_TARGET bbb だけだとうれすぃ • 商用のPLCに負けない I/O 点数 • 取り扱いの楽な電源周り • かゆいところに手が届く機能群 • オサレな外見 2022.03.01 高知工科大学 菊池豊 11
  7. 基本構成 2022.03.01 ⾼知⼯科⼤学 菊池豊 12 CPU CPU CPU CPU CPU

    CPU … DIO DIO DIO AIO AIO RS485等 クラウドと連携 AWS, GCP, Azure 等 全てのノードが Elixir で動作 • ハードウェア • ソフトウェア • クラウド連携
  8. 設計方針 • SBC と、それに I/O ボードつけて箱に入れる • BBB/BBG (beaglebone black/green)

    ベース – buildroot (device tree) をできるだけ楽にする – MIX_TARGET=bbb で nerves を使える • 仕様はオープンに(後で回路図もオープンに) – https://github.com/kikuyuta/exibee/blob/master/concept- jp.md 2022.03.01 高知工科大学 菊池豊 13
  9. SBC仕様 2022.03.01 ⾼知⼯科⼤学 菊池豊 14 項目 機能・性能 共通 CPU (SiP)

    OSC3358-C-SiP (TI am3358, ARM Cortex-A8, 1GHz) ◯ GPU, NEON, 4GB eMMC, 512MB DDR3 RAM 1ポート RS232 デバッグ用コンソール 5pin 1ポート USB USB 2.0(拡張用内蔵ポート) 2ポート LAN 有線 100baseTX 1ポート LAN 無線 WiFi / BLE 1ポート SDカード 誤操作防止位置マウント 1スロット RTC チップ内蔵MEMS、バッテリバックアップ ◯ ウォッチドッグタイマ MAX6369もしくは相当品 ◯ 状態表示LED 4色 (Green, Yellow, Orange, Red) ◯ UPS キャパシタ(電源断時のシャットダウン可能に) ◦ 電源断検出 検出電圧設定可能(半固定抵抗) ◯ セキュリティ ATECC608A 電源 DC 5V ◯ 目標動作温度範囲 -20℃〜70℃ ◯ 形態 4層プリント基板 ◯ OSD3358-c-sip (Octavo Systems)
  10. 各モジュール仕様 ⾼知⼯科⼤学 菊池豊 15 項⽬ 機能・性能 コンボボード デジタルボード アナログボード デジタル⼊⼒

    絶縁⼊⼒ 8チャンネル 16チャンネル デジタル出⼒ 絶縁出⼒ 4チャンネル 16チャンネル アナログ⼊⼒ 4-20mA 6チャンネル 16チャンネル アナログ出⼒ 4-20mA, 給電・無給電兼⽤ 1チャンネル 16チャンネル RS422/485 Half dup 1ポート 1ポート 1ポート 電源 PoE (IEEE802.3af) ◯ ◯ ◯ 動作温度範囲 -20℃〜70℃ ◯ ◯ ◯ ケース DINレール装着型 ◯ ◯ ◯ 2022.03.01
  11. ExiBee 3.0仕様 高知工科大学 菊池豊 16 項目 機能・性能 コンボボード デジタルボード アナログボード

    設計 完了 完了 完了 製作 試作4枚 試作3枚 試作3枚 CPU Intel AM3358 (OSD3358 C-SiP) ◯ ◯ ◯ デジタル入力 絶縁入力 8チャンネル 16チャンネル デジタル出力 絶縁出力 4チャンネル 16チャンネル アナログ入力 4-20mA 6チャンネル 16チャンネル アナログ出力 4-20mA, 給電・無給電兼用 1チャンネル 16チャンネル RS422/485 Half dup 1ポート 1ポート 1ポート RS232 デバッグ用コンソール 5pin 1ポート 1ポート 1ポート USB USB 2.0 / USB C (内部拡張) 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レール装着型 ◯ ◯ ◯ 2022.03.01
  12. とりあえず一歩進んだ • もともと SBC 的な手軽さが欲しかった – ソフトウェア屋さんが入りやすい環境で – Nerves /

    Elixir がよろしく動いて • それに FA で必要なハードウェア的性質を強化 – I/O の種類・点数 – 堅牢性 • 時代が追いついてきたというのもある… 2022.03.01 高知工科大学 菊池豊 21
  13. 何が足りない • ソフトリアルタイム・ハードリアルタイム • パーツのモジュラリティ – 仕様の共通化、通信IFの共通化、無線化 – 1パーツ1ノード –

    BOM に API が入るような産業構造 • 分散環境での構築フレームワーク • FAにおけるオープンなコミュニティ 2022.03.01 高知工科大学 菊池豊 24
  14. 新しい波 3GPP 5G • 高速・大容量・多数接続・(無線区間だけの)低遅延 – なんてのはまあどうでも良くて… • 網が計算資源を持つことができるようになった •

    自前網の構築が可能になった • モバイルキャリアとメーカの囲い込みが壊れ始めた – モバイルネットワークの民主化なのか? そうなのか? 2022.03.01 高知工科大学 菊池豊 25
  15. びよ〜んプロジェクト 2022.03.01 高知工科大学 菊池豊 26 ︓最適配分アルゴリズム ︓IoTノードの計算資源 ︓資源透過型の分散処理プラットフォーム ① ︓IoTノードの能率的な実⾏環境

    ② ︓計算資源配分の決定⼿法 ③ ︓実証評価向けアプリケーション ④ ︓透過型分散プラットフォーム ︓BEAM(Elixir処理系) MEC BEAM クラウド BEAM エッジ BEAM 最適配分アルゴリズム 透過型分散プラットフォーム BEAM システム開発者 デプロイされる コード ① ③ ② ③ ③ ❤ 評価アプリ ❤ 評価アプリ ④ ④ ❤ 評価アプリ ④ ② ② ❤ 評価アプリ ④ ② ② ② ②
  16. 足りないものを補うのは • ソフトリアルタイム・ハードリアルタイム – ヘテロ SoC? • パーツのモジュラリティ – Everything

    over 5G? – ROS2? • 分散環境での構築フレームワーク – Improved Dripcast with MEC and ROS2? 2022.03.01 高知工科大学 菊池豊 27
  17. ヘテロ SoC • 1つのシリコンダイ上に性質の異なる複数のCPUを持つ – 例えば Arm Cortex A と

    M とがあるとか • 異なる CPU で役割を変える (v.s. マルチコア) – 一方は GPOS (General Purpose OS) – 他方は RTOS (Real Time OS) か OS なし • 実は ExiBee に使ってる TI AM358x もそう – RPU (Realtime Processing Unit) 搭載 • どうも使いにくそうなので ExiBee の忙しい部分には PIC を使った 2022.03.01 高知工科大学 菊池豊 28
  18. ヘテロ SoC に欲しい物 2022.03.01 高知工科大学 菊池豊 29 • 使い倒しが効きそうな CPU

    がほしい – GPOS 側も RTOS 側も • 実は ExiBee に使ってる TI AM358x もヘテロ SoC – RPU (Realtime Processing Unit) 搭載 • どうも使いにくそうなので ExiBee の忙しい部分には PIC を使った
  19. でた! • STM32MP1 シリーズ – Arm Cortex A7 & M4

    • Seeed ODYSSEY – STM32MP157C 評価ボード – と SoM と… 2022.03.01 高知工科大学 菊池豊 30 画像は Seeed Studio のホームページより
  20. 何を考えるか 'HVFULSWLRQ 67003&)  '65HY )LJXUH67003&)EORFNGLDJUDP MSv47445V4 @VDDA @VDD_ANA @VDDA

    @VSW @VDD @VSW @VDDA @VSW OTP Fuses T T T T T @VSW SYSRAM 256KB ROM 128KB TIM3 ADC1 ADC2 64 bits 32 bits 32 bits AXI AHB APB 64bits AXI master T TrustZone® security protection @VDD Voltage Regulators @VDD_ANA Supply Supervision 32 bits AHB master BKPSRAM 4KB STM RETSRAM 64KB DTS (Digital temperature sensor) @VDD_PLL PLL1/2/3/4 @VDD HSE (XTAL) RCC RNG2 DCMI (Camera I/F) MDIOS CRC2 HSEM PWR SDMMC3 OTG (HS/FS) HASH2 T USBPHYC (USB 2 x PHY control) FIFO 16b 16b Interface GPIOA GPIOB GPIOC GPIOD GPIOE GPIOF GPIOG GPIOH GPIOI GPIOJ GPIOK 16b 16b 16b 16b 16b 16b 16b 16b 16b 16b 8b SRAM1 128KB SRAM2 128KB SRAM3/SRAM4 64K/64K HSI CSI LSI DMA1 8 Streams DMA2 8 Streams FIFO FIFO 2 17 4 20 14 9 16 16 16 16 16 16 16 16 16 16 8 5 TIM4 16b 5 TIM6 16b TIM7 16b TIM12 16b 2 TIM13 16b 1 TIM14 16b 1 TIM2 32b 5 TIM5 32b 5 LPTIM1 16b 4 2 USART2 Smartcard IrDA 5 USART3 Smartcard IrDA 5 PLLUSB FIFO FIFO 5 T 4b 10 PHY FIFO I2C4 / SMBUS SPI6 USART1 IWDG1 BSEC ETZPC 3 4 5 Smartcard IrDA FIFO FIFO RTC / AWU LSE (32kHz XTAL) TAMP / Backup Regs T 2 2 3 RNG1 HASH1 CRC1 T T LTDC (LCD) SDMMC1 31 29 14 SDMMC2 14 8b 8b FIFO FIFO FIFO MDMA 32 Channels T QUADSPI (dual) DDRCTRL LPDDR2/3 DDR3/3L FMC async 37 13 77 GPIOZ 8b 8 16b AHB2APB Trace port APB1 (104.5 MHz) APB3 (104.5 MHz) T 24b 8b AHB2APB 2x2 Matrix AHB2APB IC Supplies 16b AXIM: ARM 64-bit AXI interconnect (266 MHz) async DLYBSD1 (SDMMC1 DLY control) DLYBSD2 (SDMMC2 DLY control) DLYBSD3 (SDMMC3 DLY control) async DLYBQS (QUADSPI DLY control) 17 16b FIFO FIFO 14b DMAMUX1 DDRPHYC AXIMC T T T T 8KB FIFO Sys. Timing GENeration APB5 (133MHz) debug TimeStamp GENerator TSGEN DLY DLY DLY DLY (R)(G)MII 32b PHY APB4 MLAHB: ARM 32-bit multi-AHB bus matrix (209 MHz) T @VSW IWDG2 T I2C6 / SMBUS 3 USBH (2 x HS Host) 2 2 2 x PHY FIFO STGENC STGENR EXTI 176 16ext T T T T SYSCFG VREFBUF TIM1 / PWM TIM8 / PWM 10 10 16b 16b TIM15 4 16b TIM16 16b TIM17 16b 3 3 1 LPTIM2 16b 4 LPTIM3 16b 1 LPTIM4 16b 1 LPTIM5 16b 1 SAI4 13 FIFO 3 HDP 8 8b SAI1 13 FIFO SAI2 8 FIFO SAI3 8 FIFO UART4 4 UART5 4 UART7 4 UART8 4 DAC1 DAC2 12b 12b Interface 1 1 I2C1 / SMBUS 3 Filter I2C2 / SMBUS 3 Filter I2C3 / SMBUS 3 Filter I2C5 / SMBUS 3 Filter CEC (HDMI-CEC) SPDIFRX 1 4 SPI2 / I2S2 SPI3 / I2S3 5 5 FIFO FIFO FIFO FIFO FIFO FIFO FIFO SPI4 4 SPI5 4 USART6 5 Smartcard IrDA FIFO FIFO FIFO SPI1 / I2S1 5 FIFO WWDG1 4ch DFSDM1 17 8ch AHB2APB BOOT pins T T T 128 bits CNT (Timer) T ETM T Cortex-A7 CPU 650/800(1) MHz + MMU + FPU + NEON T 32K I$ 32K D$ T ETH1 GMAC 10/100/1000 FIFO DAP (JTAG / SWD) T T DDRPERFM async CRYP2 DAP bus CRYP1 IPCC T TZC T T FIFO GPU async Shader (533 MHz) FDCAN1 (TT) FDCAN2 Buffer 10KB CCU 2 2 APB2 (104.5 MHz) APB2 (104.5 MHz) APB2 (104.5 MHz) PLLDSI DSI PHY 6 I-Bus D-Bus S-Bus SYSTICK NVIC Cortex-M4 CPU 209 MHz + MPU + FPU GIC ETM CNT (Timer) T T Cortex-A7 CPU 650/800(1) MHz + MMU + FPU + NEON T 32K I$ 32K D$ 256KB L2$ + SCU T T 1. STM32MP157C: 650 MHz, STM32MP157F: 800 MHz 2022.03.01 高知工科大学 菊池豊 31 画像は ST Micro のホームページより • A7 側 – とりあえず Nerves がいごく • いごいた! By @pojiro3 • 課題は M4 側とCPU間通信 – M4単体マシンでも使えるようにしたい • 計算資源が散らばってるときでも使える – 全体のアーキテクチャまで戻って考え る必要があり
  21. 話はこれにとどまらず… • 広域分散上でのデバイスやエンドノードのあり方 – エンドノード・エッジデバイス・exMEC… – Dripcast, ROS2/mROS, Erlang (BEAM)

    を改めて • 特に FA 環境 – 時間に対する制約 – 資源に対する制約 – 堅牢性・信頼性・保守性に関する制約 – 産業として発展する社会的枠組みに対する考察 2022.03.01 高知工科大学 菊池豊 32
  22. Acknowledgements • 国立研究開発法人情報通信研究機構 – 【シーズ創出型プログラム】 委託研究(04001) – 関数型パラダイムで実現する B5G 時代の資源透過型広域分

    散コンピューテ ィング環境 • 高知県 – 令和2年度高知県産学官連携産業創出研究推進事業 – 高信頼性・高並行性を有するElixir言語を応用した工業制御用 のIoTノードとクラウド連携技術の研究開発 2022.03.01 高知工科大学 菊池豊 35
  23. Nerves/Elixir で FA を We believe in rough consensus and

    blinking LEDs 論よりLチカ 2022.03.01 高知工科大学 菊池豊 36