ユーザ用ツール

サイト用ツール


ja-jp_products:mpino_studio2:memory

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja-jp_products:mpino_studio2:memory [2026/09/08 16:58] – 바깥 편집 127.0.0.1ja-jp_products:mpino_studio2:memory [2026/09/14 12:24] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 ====== MPINO STUDIO 2 Phase 2 · メモリを理解する ====== ====== MPINO STUDIO 2 Phase 2 · メモリを理解する ======
  
-このページでは、**P・M・D・C・T・Rメモリの違い**、アドレス表記、メモリ領域設定、使用メモリマップ時間で動く特殊接点を説明します。+このページでは、**P・M・D・C・T・Rメモリの違い**、アドレス表記、メモリ領域設定、プロジェクトでの使用箇所、特殊ビットメモリを説明します。
  
-^ 基準ボード ^ 完了目標 ^ +{{ :ja-jp_products:mpino_studio2:memory-learning-path.svg?1000 |メモリ理解の順序 }}
-| MPINO-8A4R(T)-S | メモリアドレスを区別し、プロジェクト内の使用箇所を探せること | +
- +
-{{ :ja-jp_products:mpino_studio2:memory-learning-path.svg?1000 |Phase 2でメモリを学ぶ順序 }}+
  
 > **スクリーンショットについて:** 画面は韓国語UIです。ボタンの位置、アイコン、ショートカットは同じです。 > **スクリーンショットについて:** 画面は韓国語UIです。ボタンの位置、アイコン、ショートカットは同じです。
  
-===== 1. メモリとは =====+===== 1. PLC基本メモリ ===== 
 + 
 +Arduinoプログラムとは異なり、PLCではP・M・D・C・T・Rメモリを使用します。Arduinoコードでは、PLCメモリの割り当て後に残ったSRAMへ変数を割り当てることができます。
  
 メモリは、プログラムの実行中に入力状態、内部条件、計算結果、タイマ値などを保存する領域です。MPINO Studio 2のラダーロジックとArduino Cコードは、このメモリを共有して使用できます。 メモリは、プログラムの実行中に入力状態、内部条件、計算結果、タイマ値などを保存する領域です。MPINO Studio 2のラダーロジックとArduino Cコードは、このメモリを共有して使用できます。
行 25: 行 24:
 | ''T'' | WORD | タイマ現在値(符号付き内部WORDメモリ) | -32,768 ~ 32,767 | | ''T'' | WORD | タイマ現在値(符号付き内部WORDメモリ) | -32,768 ~ 32,767 |
 | ''R'' | Floating Point(32ビット) | 内部Floating Pointメモリ(実数メモリ) | 約-3.4028235E38 ~ +3.4028235E38 | | ''R'' | Floating Point(32ビット) | 内部Floating Pointメモリ(実数メモリ) | 約-3.4028235E38 ~ +3.4028235E38 |
 +
 +==== Arduinoコードとラダーロジックのメモリ共有 ====
 +
 +ラダーロジックとArduinoコードは、P・M・D・C・T・Rメモリの同じ保存領域を使用します。一方で書き込んだ値は、もう一方から同じアドレスで読み取れます。
 +
 +{{ :ja-jp_products:mpino_studio2:memory-sharing.svg?1000 |Arduinoコードとラダーロジックが同じPLCメモリを共有する構造 }}
 +
 +Arduinoコードでは、ラダーアドレスと同じ名前をそのまま使うか、配列形式で記述できます。どちらも同じメモリを参照します。
 +
 +  * ラダーの''M0'' ↔ Arduinoコードの''M0''または''M[0]''
 +  * ラダーの''D0'' ↔ Arduinoコードの''D0''または''D[0]''
 +  * ラダーの''R0'' ↔ Arduinoコードの''R0''または''R[0]''
 +
 +<code cpp>
 +void loop() {
 +  M0 = true;    // ラダーのM0ビット接点をON状態にします。
 +  D0 = 120;     // ラダーとArduinoコードでD0の整数値を共有します。
 +  R0 = 23.5f;   // ラダーとArduinoコードでR0の実数値を共有します。
 +
 +  ladderLoop(); // 上で保存した値を使ってラダーロジックを実行します。
 +}
 +</code>
 +
 +ラダーロジックで変更した値は、''ladderLoop()''の実行後にArduinoコードから読み取れます。同じスキャン内の読み書き順序は、''loop()''内で''ladderLoop()''を呼び出す位置に従います。
 +
 +> **入出力割り当ての注意:** P領域とボード機能に割り当てられたC領域は、ラダースキャン中に実際の入出力と同期します。これらの領域をArduinoコードと共有するときは、**設定 → ラダーピンマップ設定**でアドレスと入出力方向を先に確認してください。
  
 > **Pアドレスの注意:** Pアドレスは**ボードのピン編集**で確認および変更できます。Pアドレスの入出力方向と物理端子は、プロジェクトで選択したボードの定義に従います。 > **Pアドレスの注意:** Pアドレスは**ボードのピン編集**で確認および変更できます。Pアドレスの入出力方向と物理端子は、プロジェクトで選択したボードの定義に従います。
行 30: 行 55:
 > **R値の誤差に関する注意:** 32ビット実数は浮動小数点演算の制約により、''0.1 + 0.2''の結果が正確な''0.3''ではなく、約''0.30000001''として保存される場合があります。これはIEEE 754の32ビット浮動小数点を使用するコントローラで共通して考慮する特性です。 > **R値の誤差に関する注意:** 32ビット実数は浮動小数点演算の制約により、''0.1 + 0.2''の結果が正確な''0.3''ではなく、約''0.30000001''として保存される場合があります。これはIEEE 754の32ビット浮動小数点を使用するコントローラで共通して考慮する特性です。
  
-===== 2. MPINO-8A4R(T)-Sの標準メモリ =====+===== 2. メモリ領域 =====
  
 MPINO-8A4R(T)-Sを選択したときの標準メモリ数は次のとおりです。 MPINO-8A4R(T)-Sを選択したときの標準メモリ数は次のとおりです。
  
-**設定 → メモリ領域設定**で、使用するメモリ数を変更できます。+**設定 → メモリ領域設定**で、使用するメモリ数を変更できます。(ショートカット: ''Ctrl + Shift + M''
  
-{{ :products:mpino_studio2:memory-settings-modal.png?430|図1. メモリ領域ごとの使用数と予想SRAM使用量を確認するメモリ領域設定画面}}+{{ :products:mpino_studio2:memory-settings-modal.png?430 |図1. メモリ領域ごとの使用数と予想SRAM使用量を確認するメモリ領域設定画面 }}
  
 ^ 領域 ^ 標準数 ^ 標準アドレス範囲 ^ ^ 領域 ^ 標準数 ^ 標準アドレス範囲 ^
行 53: 行 78:
  
 MPINO-8A4R(T)-Sでは、''C0''~''C10''メモリにアナログ入力、NTC温度入力、PWMが接続されています。 MPINO-8A4R(T)-Sでは、''C0''~''C10''メモリにアナログ入力、NTC温度入力、PWMが接続されています。
 +
 +割り当てるメモリは、**設定 → ラダーピンマップ設定**で変更できます。
 +
 +> **アナログ・PWM出力の注意:** アナログ出力またはPWM出力にメモリを割り当てると、そのアドレスの値で出力されるため、Arduinoコードから同じ出力に''analogWrite''関連関数を使用できません。''analogWrite''関連関数を使用する場合は、**設定 → ラダーピンマップ設定**で対象出力の**使用**チェックを外してください。
  
 {{ :ja-jp_products:mpino_studio2:memory-c-map-8a4r-s.svg?1000 |MPINO-8A4R(T)-SのCメモリとボードのピン割当 }} {{ :ja-jp_products:mpino_studio2:memory-c-map-8a4r-s.svg?1000 |MPINO-8A4R(T)-SのCメモリとボードのピン割当 }}
行 62: 行 91:
 | ''C11'' ~ ''C99'' | 上記機能に直接割り当てられていないC領域 | 使用目的を確認してから選択 | | ''C11'' ~ ''C99'' | 上記機能に直接割り当てられていないC領域 | 使用目的を確認してから選択 |
  
-> **重要:** このボードで''C0''~''C10''を一般的なカウンタアドレスにすると、同じアドレスを使用するボード機能とデータが重なる可能性があります。カウンタを割り当てる前に、**ド・メモリ情報のピンマップ**と**使用メモリマップ**の両方を確認してください。+> **重要:** このボードで''C0''~''C10''を一般的なカウンタアドレスにすると、同じアドレスを使用するボード機能とデータが重なる可能性があります。カウンタを割り当てる前に、**設定 → ラダーピンマップ設定**と**設定 → 使用したメモリ**を確認してください。
  
-ほかのMPINO製品ではメモリ数とピン割当異なる場合があります。別のボロジェクトにこのアドレス表をそのまま適用ないでください。+てられるアドレスはボードごとに異なり、ユーザーが変更することもできます。**設定 → ラダピンマッ設定**で確認ください。
  
-===== 3. データ幅を理解する =====+===== 3. データ形式 =====
  
 データ幅は、一度に読み書きするビット数です。扱える値の範囲とメモリ使用量が変わります。 データ幅は、一度に読み書きするビット数です。扱える値の範囲とメモリ使用量が変わります。
行 84: 行 113:
 ===== 4. メモリアドレスの読み方 ===== ===== 4. メモリアドレスの読み方 =====
  
-長いアドレスはから、**データ幅の接頭辞**、**メモリ領域**、**アドレス番号**、**ビット番号**に分けて読みます。+メモリアドレスは、最も単純な形式から始め必要な要素を一つずつ追加して読みます。
  
-{{ :ja-jp_products:mpino_studio2:memory-addressing.svg?1000 |WM1.3を構成要素ごとに読む方法 }}+{{ :ja-jp_products:mpino_studio2:memory-addressing.svg?1000 |M0、D0、D0.1、WM1.2のメモリアドレス形式 }}
  
-たとえば''WM1.3''意味です。+  - ''M0'': M領域の0番BITアドレスです。 
 +  - ''D0'': D領域の0番WORDアドレスです。 
 +  - ''D0.1'': D0 WORD内の2番目のビットです。ビット番号0から始まります。 
 +  - ''WM1.2'': M領域をWORDでまとめた''WM1''3番目のビットす。''M18''と同じビットを示します。
  
-  - ''W'': WORD幅でまとめて見ます。 +==== メモリ構造 ====
-  - ''M'': 内部ビットメモリ領域です。 +
-  - ''1'': アドレスグループ番号1です。 +
-  - ''.3'': そのWORD内の4番目のビットです。ビット番号も0から始まります。+
  
-==== メモリをまとめる構造 ==== +ビット、バイトワード、ダブワード、実数のメモリ構造です。
- +
-次の図はMP STUDIOマニュアルのメモリ構造の表現方法を参考にしながら、現在のMPINO Studio 2で対応するアドレス規則に合わせて再構成したものです。+
  
 {{ :ja-jp_products:mpino_studio2:memory-structure.svg?1000 |P MビットメモリとD C T WORDメモリをBYTE WORD DWORDとしてまとめる構造 }} {{ :ja-jp_products:mpino_studio2:memory-structure.svg?1000 |P MビットメモリとD C T WORDメモリをBYTE WORD DWORDとしてまとめる構造 }}
行 105: 行 132:
 D・C・T領域では、一つのアドレスが1 WORDです。連続する二つのWORDをまとめるとDWORDになり、''DD0''は''D0''と''D1''、''DD1''は''D2''と''D3''を結合します。CとTも''DC0''、''DT0''など同じ規則を使用します。 D・C・T領域では、一つのアドレスが1 WORDです。連続する二つのWORDをまとめるとDWORDになり、''DD0''は''D0''と''D1''、''DD1''は''D2''と''D3''を結合します。CとTも''DC0''、''DT0''など同じ規則を使用します。
  
-==== 幅の接頭辞とビットアセス ====+===== 5. プロジェトで使用中のメモリを探す =====
  
-^ 表記 ^ 使用でき領域 ^ 例 ^ +メニューから**設定 → 使用したメモリ**を選択すか、''Ctrl+Shift+L''を押します。
-''B''接頭辞 | ''P'', ''M'' | ''BP0'', ''BM1''+
-| ''W''接頭辞 | ''P'', ''M'' | ''WP0'', ''WM1''+
-| ''D''接頭辞 | ''P'', ''M'', ''D'', ''C'', ''T'' | ''DM0'', ''DD2'', ''DC31''+
-| ''.n''ビット番号 | P・Mの幅アクセス, ''D'', ''C'' | ''WM1.3'', ''D0.15'' |+
  
-''DD2''では、最初の''D''が**DWORD幅の接頭辞**、2番目の''D''が**Dメモリ領域**です。同じ文字でも役割を分けて読んでください。 +{{ :products:mpino_studio2:memory-map-modal.png?800 |図2. 使用したメモリでアドレスと参照箇所を確認する画面 }}
- +
-次の表記は使用できません。 +
- +
-  * ''BD0''のようにD・C・T領域へ''B''または''W''を付ける表記 +
-  * R領域への幅の接頭辞 +
-  * R領域への''.n''ビット番号 +
- +
-アドレス入力欄でエラーが表示された場合は、表記だけでなく、選択した領域がその幅とビットアクセスに対応しているか確認します。 +
- +
-===== 5. メモリ領域サイズを確認する ===== +
- +
-メニューから**設定 → メモリ領域設定**を選択するか、''Ctrl+Shift+M''を押します。 +
- +
-次の順序で確認します。 +
- +
-  - 現在のプロジェクトのボードが**MPINO-8A4R(T)-S**であることを確認します。 +
-  - P、M、D、C、T、R入力欄の個数を確認します。 +
-  - 値を入力していない空欄は、選択したボードの標準値を使用します。 +
-  - 下部の予想SRAM使用量と全SRAMを確認します。 +
-  - 全容量を超えると表示が赤くなり、設定を保存できません。 +
-  - 変更が必要な場合は値を入力して**保存**を選択します。 +
-  - ダイアログを閉じ、''Ctrl+S''で変更を''.mp2''プロジェクトに保存します。 +
- +
-明確な理由がなければボードの標準値を維持してください。個数を増やすと使用できるアドレスが増えますが、SRAM使用量も増えます。個数を減らすと既存のラダーセルやArduino Cコードが範囲外を参照する可能性があるため、変更の前後に使用メモリマップを確認します。 +
- +
-===== 6. プロジェクトで使用中のメモリを探す ===== +
- +
-メニューから**表示 → 使用メモリマップ**を選択するか、''Ctrl+Shift+L''を押します。 +
- +
-{{ :products:mpino_studio2:memory-map-modal.png?800 |図2. 使用メモリマップでアドレスと参照箇所を確認する画面 }} +
- +
-使用メモリマップは次のように使います。 +
- +
-  - 上部の''P'', ''M'', ''D'', ''C'', ''T'', ''R''タブで領域を選択します。 +
-  - ラダーとコードのフィルタで確認するソースを絞ります。 +
-  - アドレス検索欄にアドレスを入力して''Enter''を押します。 +
-  - 色が付いたアドレスセルは、現在のプロジェクトで使用中です。 +
-  - 使用中のセルを選択すると、下部に参照箇所が表示されます。 +
-  - 参照項目を選ぶと、該当するラダーセルまたはコード位置へ移動できます。 +
-  - ダイアログを閉じて再度開いてもタブとスクロール位置は維持されます。アプリを再起動すると初期化されます。 +
- +
-==== Phase 1プロジェクトで確認する ==== +
- +
-  - Phase 1で保存したプロジェクトを開きます。 +
-  - ''Ctrl+Shift+L''を押します。 +
-  - ''P''タブを選択します。 +
-  - ''P0''と''P32''が使用中と表示されることを確認します。 +
-  - ''P0''を選択し、''ladderLoop''のNO接点参照を確認します。 +
-  - ''P32''を選択し、出力コイル参照を確認します。+
  
 アドレスを変更するときやメモリ領域を縮小するときは、先にこの画面を確認すると重複使用と範囲エラーを減らせます。 アドレスを変更するときやメモリ領域を縮小するときは、先にこの画面を確認すると重複使用と範囲エラーを減らせます。
  
-===== 7時間で動く特殊接点 =====+===== 6. 特殊ビットメモリ =====
  
-''@''で始まる特殊接点は、一般的なP・Mメモリアドレスと異なり時間の経過に合わせてMPINO Studio 2が状態を自動更新します。 +''@''で始まる特殊ビットメモリ、MPINO Studio 2が状態を自動更新します。ラダーのビット接点で使用できます。
- +
-{{ :ja-jp_products:mpino_studio2:special-memory-timing.svg?1000 |@100と@F1000特殊接点の時間動作比較 }}+
  
 ^ 形式 ^ 動作 ^ 例 ^ ^ 形式 ^ 動作 ^ 例 ^
 +| ''@ON'' | 常時ON | ビット接点を常に真にする |
 +| ''@OFF'' | 常時OFF | ビット接点を常に偽にする |
 | ''@<ms>'' | 指定した時間の境界を通過するたびに1回、1スキャンだけON | ''@100''は100msごとに1スキャンON | | ''@<ms>'' | 指定した時間の境界を通過するたびに1回、1スキャンだけON | ''@100''は100msごとに1スキャンON |
 | ''@F<ms>'' | 指定時間ON、同じ時間OFFを繰り返す | ''@F1000''は1秒ON、1秒OFFを繰り返す | | ''@F<ms>'' | 指定時間ON、同じ時間OFFを繰り返す | ''@F1000''は1秒ON、1秒OFFを繰り返す |
 +
 +''@ON''と''@OFF''は大文字と小文字を区別しないため、''@on''と''@off''も使用できます。
 +
 +{{ :ja-jp_products:mpino_studio2:special-memory-timing.svg?1000 |@100と@F1000特殊ビットメモリの時間動作比較 }}
  
 ''@100''は、プログラムのスキャンがちょうど100msの時刻に一致しなくても、境界を通過していれば1回ONになります。一定間隔で値を増やす処理や動作開始条件に使用できます。 ''@100''は、プログラムのスキャンがちょうど100msの時刻に一致しなくても、境界を通過していれば1回ONになります。一定間隔で値を増やす処理や動作開始条件に使用できます。
行 180: 行 158:
 ''@F1000''は、状態を手動で反転するコードを書かなくても1秒間隔のON/OFF条件を作ります。 ''@F1000''は、状態を手動で反転するコードを書かなくても1秒間隔のON/OFF条件を作ります。
  
-{{ :products:mpino_studio2:special-relay-example.png?500 |図3. ラダーセルに特殊接点を入力した例 }}+{{ :products:mpino_studio2:special-relay-example.png?420 |図3. ラダーセルに特殊ビットメモリを入力した例 }}
  
-特殊接点には次の入力規則があります。+特殊ビットメモリには次の入力規則があります。
  
-  * 時間単位はミリ秒(ms)です。+  * ''@<ms>''と''@F<ms>''時間単位はミリ秒(ms)です。
   * かっこは使いません。''@F(1000)''ではなく''@F1000''と入力します。   * かっこは使いません。''@F(1000)''ではなく''@F1000''と入力します。
-  * 接点セルまたは立上り・立下りエッジセルだけで使用します。+  * ビット接点だけで使用します。
   * 出力コイルのアドレスには使用しません。   * 出力コイルのアドレスには使用しません。
-  * ''@ON''のような任意の名前は使用できません。 
- 
-===== 8. 実習 · P32を1秒間隔で点滅させる ===== 
- 
-Phase 1回路の''P0''接点を''@F1000''特殊接点に変更して動作を確認します。 
- 
-  - Phase 1プロジェクトを開き、**ファイル → 名前を付けて保存**で''phase2-memory.mp2''として保存します。 
-  - 出力負荷が外れていることを確認します。 
-  - ''ladderLoop''で''P0''接点セルを選択します。 
-  - ''Enter''を押すかダブルクリックしてセル編集画面を開きます。 
-  - アドレスを''@F1000''に変更して確定します。 
-  - 出力コイルのアドレスは''P32''のままにします。 
-  - ''Ctrl+R''でビルドし、正常に終了することを確認します。 
-  - MPダウンロードケーブルを接続し、右下でポートを選択します。 
-  - ''Ctrl+U''で書き込みます。 
-  - Phase 1でモニタリングポートを設定済みの場合は、''Ctrl+M''でリアルタイムラダーモニタリングを有効にします。 
-  - ''@F1000''接点と''P32''コイルが約1秒ON、1秒OFFを繰り返すことを確認します。 
- 
-実習後に物理入力の確認へ戻す場合は、接点アドレスを''P0''へ戻してから、もう一度ビルドして書き込んでください。 
- 
-===== 9. 状況別のメモリ選択基準 ===== 
- 
-^ 保存する値 ^ 最初に検討する領域 ^ 確認する内容 ^ 
-| 実際のデジタル入出力 | ''P'' | 選択したボードのピンマップと入出力方向 | 
-| ラダー内部のON/OFF条件 | ''M'' | 同じアドレスを別の回路ですでに使用していないか | 
-| 一般的な整数と計算結果 | ''D'' | 結果がWORD範囲を超えないか | 
-| カウンタ現在値 | ''C'' | Cアドレスがボードピン割当と重ならないか | 
-| タイマ経過値 | ''T'' | 同じタイマアドレスを重複使用していないか | 
-| 小数点を含む値 | ''R'' | 実数計算に合った比較許容範囲 | 
-| 周期的な接点条件 | ''@<ms>'', ''@F<ms>'' | 1スキャンか、繰り返すON/OFF状態か | 
- 
-===== 10. 完了チェック ===== 
- 
-次の項目を説明または確認できればPhase 2は完了です。 
- 
-  * ''P'', ''M'', ''D'', ''C'', ''T'', ''R''の用途を区別できる。 
-  * MPINO-8A4R(T)-Sの''C0''~''C10''がボード機能に割り当てられていることを説明できる。 
-  * BIT、BYTE、WORD、DWORDのサイズと符号付き値の範囲を確認した。 
-  * ''WM1.3''と''DD2''を各文字の役割に分けて読める。 
-  * ''Ctrl+Shift+M''でメモリ領域設定を開ける。 
-  * ''Ctrl+Shift+L''で''P0''と''P32''の使用箇所を探した。 
-  * ''@100''と''@F1000''の違いを説明できる。 
-  * 実習を別プロジェクトとして保存し、ビルド結果を確認した。 
  
 ===== トラブルシューティング ===== ===== トラブルシューティング =====
行 237: 行 172:
 | 入力したアドレスが許可されません。 | 領域文字、アドレス範囲、B/W/D接頭辞への対応、''.n''ビットアクセスへの対応を順に確認します。 | | 入力したアドレスが許可されません。 | 領域文字、アドレス範囲、B/W/D接頭辞への対応、''.n''ビットアクセスへの対応を順に確認します。 |
 | メモリ領域設定を保存できません。 | 予想SRAM使用量が全SRAMを超え、赤色で表示されていないか確認します。 | | メモリ領域設定を保存できません。 | 予想SRAM使用量が全SRAMを超え、赤色で表示されていないか確認します。 |
-| 使用メモリマップにアドレスが表示されません。 | 正しい領域タブとラダー・コードフィルタを選び、アドレスを入力して''Enter''を押します。 |+| 使用したメモリにアドレスが表示されません。 | 正しい領域タブとラダー・コードフィルタを選び、アドレスを入力して''Enter''を押します。 |
 | Cカウンタ値が予想と異なります。 | MPINO-8A4R(T)-Sの''C0''~''C10''ボードピン割当との重複を先に確認します。 | | Cカウンタ値が予想と異なります。 | MPINO-8A4R(T)-Sの''C0''~''C10''ボードピン割当との重複を先に確認します。 |
-| ''@F1000''を入力できません。 | 出力コイルではなく接点またはエッジセルを選択しているか、かっこを付けていないか確認します。 | +| ''@F1000''を入力できません。 | ビット接点を選択しているか、かっこを付けていないか確認します。 |
-| P32が点滅しません。 | ''@F1000''と''P32''コイルが同じ回路にあり、ビルド・ポート選択・書き込みが正常に完了したか確認します。 |+
  
 ===== 関連文書 ===== ===== 関連文書 =====
 +
 +  * [[ja-jp_products:mpino_studio2:activity_bar|Phase 8・アクティビティバーとサイドパネル]]
 +
 +  * [[ja-jp_products:mpino_studio2:menus_settings|Phase 7・メニューと環境設定]]
 +
 +  * [[ja-jp_products:mpino_studio2:monitoring|Phase 6・シリアル・ラダーモニタリング]]
  
   * [[:ja-jp_products:mpino_studio2:first_project|Phase 1 · 最初のプロジェクトを作る]]   * [[:ja-jp_products:mpino_studio2:first_project|Phase 1 · 最初のプロジェクトを作る]]
ja-jp_products/mpino_studio2/memory.1788854308.txt.gz · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki