Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Zephyr(RTOS)でOpenPLCを実装してみた
Search
misoji engineer
March 26, 2026
Technology
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Zephyr(RTOS)でOpenPLCを実装してみた
ミソジ 2026/3/27
Zephyr Project meetup: Nagoya, Japan
#ZephyrRTOS
misoji engineer
March 26, 2026
More Decks by misoji engineer
See All by misoji engineer
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
560
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
580
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
1
830
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
710
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
420
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
1.7k
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
800
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
2k
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
580
Other Decks in Technology
See All in Technology
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
0
140
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
1.1k
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
360
手を動かして実感する、Kiro が変える開発体験
inariku
0
410
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
160
Antigravity SDK for the Java Developer
glaforge
0
230
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
1
230
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
1
270
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
290
企業の現実世界をグラフで写し取る
sansantech
PRO
0
190
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
630
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6.3k
Tell your own story through comics
letsgokoyo
1
1.1k
Speed Design
sergeychernyshev
33
2.1k
For a Future-Friendly Web
brad_frost
183
10k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Documentation Writing (for coders)
carmenintech
77
5.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
Six Lessons from altMBA
skipperchong
29
4.5k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
540
The Language of Interfaces
destraynor
162
27k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Transcript
Zephyr(RTOS)でOpenPLCを 実装してみた ミソジ 2026/3/27 Zephyr Project meetup: Nagoya, Japan #ZephyrRTOS
自己紹介 名前: ミソジ @misoji_engineer ブログ: エンジニアの電気屋さん(https://misoji-engineer.com/) ハードウェアのエンジニアで、趣味でブログとか書いてます
アジェンダ • OpenPLCとは? • LinuxをRTOSにしたら、もっと高速になるのでは? • Zephyr(RTOS)に実装した結果・メリット • まとめ Zephyr(RTOS)にOpenPLCを実装した話
OpenPLCとは?
OpenPLC OpenPLC・・・オープンソースの「ソフトウェアPLC」の一つ PLC… Programmable Logic Controller *工場・FA業界で使われるコントローラ + https://autonomylogic.com/ OpenPLC
Editor/Runtime 工場でのラダー プログラムなど
ラズパイでもPLCが動く 趣味でも十分にデバッグ+遊べる、ソフトウェアPLC ラズパイ含めた色んなボードが使用可能。→ 実際にデバッグもできる ラズパイ、 ArduinoもOK
デモ動画(通常のOpenPLC) https://youtu.be/51srWoKP_Sg
Linux上でのOpenPLC
Linux + OpenPLC Raspbian(Linux)上で、簡単にOpenPLCはテスト可能 https://github.com/thiagoralves/OpenPLC_v3 オープンソースで中身は分かる *ライセンスはGPL デバッグモード・ネットワーク(MQTT/OPCUA)など色々機能あり ラズパイでは Raspbian (Linux)で動く
Linux + OpenPLC のジッタのデモ https://youtu.be/3xPex-61GqQ
便利だけど…ちょっと遅い。 標準だとms以下の制御周期が設定できない + ジッタも大きい 数十usのジッタ 最短1ms周期
LinuxをRTOSにしたら、 もっと高速になるのでは?
高速周期+低ジッタへ 大体考えることはみんな同じ。Real-Timeのパッチ or OS。 デフォ周期20ms + 数十usジッタ 案①:Linuxカーネルに「PREEMPT_RT」の Real-Timeのパッチを入れる →ただし、他処理も色々改善いれないとダメそう
案②:ごっそりRTOSに変える + 機能を絞る *OpenPLC公式の掲示版でも色々ネタが上がっていた https://openplc.discussion.community/post/ openplc-hard-real-time-os-10244581 RTOS: Real-Time Operating System
Zephyr(RTOS)で実装 機能は最低限で良いので、高速なRTOS環境を作って遊ぶ ms(ミリ)ゆっくり周期+usレベルのジッタ ↓ us(マイクロ)の高速周期+nsレベルのジッタ 案②:ごっそりRTOSに変える + 機能を絞る RTOS: Real-Time
Operating System Zephyr(RTOS)で PLCを動かす
Zephyr(RTOS)に 実装した結果
Zephyr(RTOS)+OpenPLC Geminiと相談しながら、ポーティング+移植 →ビルドも通った ①Overlay(デバイスツリー)の追加 ・ラズパイ4B ・ラズパイPico2W ・Nordic_nRF54L15-DK ②OpenPLCのライブラリの移植 ・PLC規格のIEC61131-3の 最低限だけ修正+移植 ③main.cファイルの作成
入出力見て→ラダーのロジック実行 →ループ繰り返し ④prj.conf・Cmakelistの作成 →Zephyrのビルドが通るように
GitHubのリンク先 さくっと趣味で作ったPre-test版だから、参考までに *OpenPLCのライブラリを一部移植+修正しているので、ライセンスはGPL。 https://github.com/iotengineer22/ zephyr-openplc-pretest
ラダーの自己保持回路のテスト(1) 冒頭のデモでも紹介した、基本のラダー回路 ラダーロジックによるシンプルな 自己保持回路のデモ。 * **X001**: Startボタン(A接点) * **X002**: RESETボタン(B接点)
* **M001**: 内部補助リレー * **Y001** : 出力LED *ラダーから.Cへのコンパイラは OpenPLCのものを流用 START RESET 出力
デモ動画(Zephyr + OpenPLC + 4B) https://youtu.be/QVRoRsNYECE
Zephyr(RTOS)でOpenPLC動く ラズパイ4Bで狙い通り、us(マイクロ)の高速周期 →OK printkのざっくり サイクルタイム ≒1us OK ラダーの 自己保持回路OK
ラダーの最短ON/OFF回路のテスト(2) ジッタ測定で紹介した、基本のラダーの最短ON/OFF回路 ラダーロジックによるシンプルな 最短ON/OFFのデモ。 * **Y001** : 出力LED *ラダー→.Cへのコンパイラは OpenPLCのものを流用
前回値を反転出力 →最短ON/OFFループ
デモ動画(Zephyr + OpenPLC のジッタ)https://youtu.be/xayHDxoTsn0
Zephyr(RTOS)で低ジッタ ラズパイ4Bで狙い通り、ns(ナノ)の低ジッタ →OK •Linux + OpenPLC ms(ミリ)ゆっくり周期 + usレベルのジッタ ↓ 〇Zephyr(RTOS)
+ Edtied_OpenPLC us(マイクロ)の高速周期 + nsレベルのジッタ 数十ns(ナノ)のジッタ
Zephyr(RTOS)に 実装するメリット
Zephyrの良いところ 凄くメリット 大きい *オープニングで紹介した、RTOSの比較表 ハード抽象化が強力 → Zephyr対応のCPUなら簡単に横展できる CPU(マイコン)変えた場合 •レジスタ調査 •コードを書き直し
•開発環境を再インストール …という苦行から解放
今回のメリット例 メインプログラム(main.c)を変えずに、Pico2W/nRF54L15に横展 ARMコア/メーカ違う 4つのボードを 全てが同じmain.c Overlay(デバイスツリー) 少し調整しただけ ラズパイ4B_A72 Pico2W_M33 nRF54L15-DK_M33
XIAO nRF54L15 Sense M33
HAL(Hardware Abstraction Layer) OSがハードウェアの違いを、抽象化(吸収)してくれる https://www.zephyrproject.org/zephyr-overview/ ・Zephyr公式の資料 各IC/メーカの違いを OSが抽象化(吸収) ・ユーザはどのICでも標準的なドライバ・APIを 使える・調整すればOK
ビルドも同じ環境 同じZephyr環境で、ボード名変えてビルドしただけ →OK ラズパイ_4B: west build -p -b rpi_4b ラズパイ_Pico2W: west
build -p -b rpi_pico2/rp2350a/m33/w Nordic_nRF54L15-DK: west build -p -b nrf54l15dk/nrf54l15/cpuapp Seeed_XIAO nRF54L15: west build -p -b xiao_nrf54l15/nrf54l15/cpuapp https://www.youtube.com/watch?v=r-i1I2-w9lw https://youtu.be/-4zIHnI9Joc
色んなCPU・ボードに横展開 同じZephyr環境で、ボード名変えてビルドしただけ →OK https://youtu.be/yJj0W5qVyIY
まとめ
・Linux→RTOSを使うことで、高速周期+低ジッタへ (オープンソースで中身も分かり、良い勉強になりました) ・Zephyr(RTOS)の抽象化の良いところ紹介できた (どのメーカ、どのICでも実装・横展会が可能です) ・OpenPLCのライセンスがGPLなので、注意が必要。 (教育や勉強用にはちょうど良いのですが...) まとめ Zephyr(RTOS)で OpenPLCを実装+遊べた!