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
misoji engineer
March 26, 2026
Technology
210
0
Share
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
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
150
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
770
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
600
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
1k
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
410
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
2
990
Zephyr RTOSを使った開発コンペに参加した件
iotengineer22
1
1.3k
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
1.4k
オープンソースのハードウェアのコンテストに参加している話
iotengineer22
1
1.5k
Other Decks in Technology
See All in Technology
サイバーフィジカル社会とは何か / What Is a Cyber-Physical Society?
ks91
PRO
0
160
バックオフィスPJのPjMをコーポレートITが担うとうまくいく3つの理由
yueda256
1
300
仕様通り動くの先へ。Claude Codeで「使える」を検証する
gotalab555
8
3.2k
🀄️ on swiftc
giginet
PRO
0
320
本番環境でPHPコードに触れずに「使われていないコード」を調べるにはどうしたらよいか?
egmc
1
270
終盤で崩壊させないAI駆動開発
j5ik2o
0
480
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
170
シン・リスコフの置換原則 〜現代風に考えるSOLIDの原則〜
jinwatanabe
0
180
LLM とプロンプトエンジニアリング/チューターを定義する / LLMs and Prompt Engineering, and Defining Tutors
ks91
PRO
0
330
プロダクトを触って語って理解する、チーム横断バグバッシュのすすめ / 20260411 Naoki Takahashi
shift_evolve
PRO
1
270
プロジェクトマネジメントは AIでどう変わるか?
mkg5383
0
200
CloudSec JP #005 後締め ~ソフトウェアサプライチェーン攻撃から開発者のシークレットを守る~
lhazy
0
110
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
510
Darren the Foodie - Storyboard
khoart
PRO
3
3.2k
Exploring anti-patterns in Rails
aemeredith
3
310
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
150
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Site-Speed That Sticks
csswizardry
13
1.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Paper Plane (Part 1)
katiecoart
PRO
0
6.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を実装+遊べた!