Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Zephyr(RTOS)でOpenPLCを実装してみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
misoji engineer
March 26, 2026
Technology
0
18
Zephyr(RTOS)でOpenPLCを実装してみた
ミソジ 2026/3/27
Zephyr Project meetup: Nagoya, Japan
#ZephyrRTOS
misoji engineer
March 26, 2026
Tweet
Share
More Decks by misoji engineer
See All by misoji engineer
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
12
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
710
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
570
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
970
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
370
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
2
910
Zephyr RTOSを使った開発コンペに参加した件
iotengineer22
1
1.2k
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
1.4k
オープンソースのハードウェアのコンテストに参加している話
iotengineer22
1
1.4k
Other Decks in Technology
See All in Technology
20260321_エンベディングってなに?RAGってなに?エンベディングの説明とGemini Embedding 2 の紹介
tsho
0
160
Phase09_自動化_仕組み化
overflowinc
0
1.6k
Kubernetesの「隠れメモリ消費」によるNode共倒れと、Request適正化という処方箋
g0xu
0
110
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
tarappo
4
370
スピンアウト講座01_GitHub管理
overflowinc
0
1.3k
テストプロセスにおけるAI活用 :人間とAIの共存
hacomono
PRO
0
160
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
200
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
180
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
270
The Rise of Browser Automation: AI-Powered Web Interaction in 2026
marcthompson_seo
0
310
スピンアウト講座04_ルーティン処理
overflowinc
0
1.1k
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
110
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
We Have a Design System, Now What?
morganepeng
55
8k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
130
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
480
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Become a Pro
speakerdeck
PRO
31
5.9k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
650
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
250
The agentic SEO stack - context over prompts
schlessera
0
710
How to Think Like a Performance Engineer
csswizardry
28
2.5k
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を実装+遊べた!