本プロジェクトは、Pythonを用いてPLC(シーケンサー)のような定周期スキャンと非同期処理を両立させるための制御フレームワークです。メインの制御ロジック(同期実行)と通信・I/O(非同期実行)を安全に分離し、データ整合性をシステムレベルで自動管理します。
プログラムは役割に応じて src/ フォルダ直下の4つのディレクトリに分割して配置します。各ディレクトリ内のスクリプトは**ファイル名の昇順(アルファベット・数字順)**で順番に実行されます。
起動コマンド:
python main/sequencer.py
- 0_setup: システム起動時に一度だけ実行される初期化フェーズ。
- 3_keep: メインループとは独立して非同期に常駐実行されるタスク(通信・GUI等)。
- 1_loop: 指定されたサイクル時間(100ms等)ごとに繰り返し実行される制御フェーズ。
- 2_teardown: プログラム終了時に一度だけ実行される安全停止処理フェーズ。
src/common/variables.yamlを編集し、共有変数を定義します。- 各フェーズのディレクトリ(
0_setup〜3_keep)に Python スクリプトを配置します。 python main/sequencer.pyを実行してシステムを開始します。
本フレームワークの核となる変数管理の仕組みや、具体的な実装方法については以下のドキュメントを参照してください。
変数の「所有権」や「隔離メカニズム」、および各フェーズの権限マトリクスについて詳しく解説しています。
各フェーズでの変数の読み書き方法や、保護機能がどのように働くかの具体例を掲載しています。
- 所有権の遵守:
loop領域は1_loopで、keep領域は3_keepで更新するのが基本原則です。 - master_var の制限: 初期化やデバッグ用の強力な権限を持ちますが、いかなる権限であっても
system領域(システムの憲法)を書き換えることはできません。