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
290
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
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
440
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
200
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
830
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
640
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
1.1k
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
440
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
2
1k
Zephyr RTOSを使った開発コンペに参加した件
iotengineer22
1
1.3k
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
1.6k
Other Decks in Technology
See All in Technology
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
2.4k
Shiny New Tools Won't Fix Your Problem
trishagee
1
100
多角的な視点から見たAGI
terisuke
0
120
AIの揺らぎに“コシ”を与える階層化品質設計
ickx
0
250
会社説明資料|株式会社ギークプラス ソフトウェア事業部
geekplus_tech
0
180
AI와 협업하는 조직으로의 여정
arawn
0
600
世界の中心でApp Runnerを叫ぶ FINAL
tsukuboshi
0
240
変化の激しい時代をゴキゲンに生き抜くために 〜ストレスマネジメントのススメ〜
kakehashi
PRO
4
1.1k
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
3.5k
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
330
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
290
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
210
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
350
Claude Code のすすめ
schroneko
67
220k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Why Our Code Smells
bkeepers
PRO
340
58k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
340
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
WCS-LA-2024
lcolladotor
0
570
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
230
A better future with KSS
kneath
240
18k
Un-Boring Meetings
codingconduct
0
280
GitHub's CSS Performance
jonrohan
1032
470k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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を実装+遊べた!