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
570
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
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
770
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
620
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
640
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
1
930
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
740
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
480
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
1.8k
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
830
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
2.2k
Other Decks in Technology
See All in Technology
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
180
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
データエンジニアの次の戦場は "プロセスエンジニアリング"
sansantech
PRO
1
120
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
「エーアイ」をバズワードにしないために RPA 導入経験と Kiro 上での Claude モデル利用経験から
kazzpapa3
0
100
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
140
Rust で関数型ドメインモデリング
takonda
0
170
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
310
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
190
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
210
会社説明資料
persolserverworks
0
9.8k
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
570
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
RailsConf 2023
tenderlove
30
1.6k
For a Future-Friendly Web
brad_frost
184
10k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Prompt Engineering for Job Search
mfonobong
0
520
It's Worth the Effort
3n
188
29k
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を実装+遊べた!