文書の過去の版を表示しています。
目次
MPINO STUDIO 2 Phase 2 · メモリを理解する
このページでは、P・M・D・C・T・Rメモリの違い、アドレス表記、メモリ領域設定、使用メモリマップ、時間で動く特殊ビットメモリを説明します。
| 基準ボード | 完了目標 |
|---|---|
| MPINO-8A4R(T)-S | メモリアドレスを区別し、プロジェクト内の使用箇所を探せること |
スクリーンショットについて: 画面は韓国語UIです。ボタンの位置、アイコン、ショートカットは同じです。
1. PLC基本メモリ
Arduinoプログラムとは異なり、PLCではP・M・D・C・T・Rメモリを使用します。Arduinoコードでは、PLCメモリの割り当て後に残ったSRAMへ変数を割り当てることができます。
メモリは、プログラムの実行中に入力状態、内部条件、計算結果、タイマ値などを保存する領域です。MPINO Studio 2のラダーロジックとArduino Cコードは、このメモリを共有して使用できます。
基本アドレスは、領域を表す文字 + 0から始まる番号で表します。たとえばM10はM領域の11番目、D0はD領域の最初のアドレスです。
| 領域 | 単位 | 保存形式 | 値の範囲 |
|---|---|---|---|
P | BIT | ボードのデジタル入出力状態 | 0または1 |
M | BIT | 内部BITメモリ | 0または1 |
D | WORD | 符号付き内部WORDメモリ | -32,768 ~ 32,767 |
C | WORD | カウンタ値(符号付き内部WORDメモリ) | -32,768 ~ 32,767 |
T | WORD | タイマ現在値(符号付き内部WORDメモリ) | -32,768 ~ 32,767 |
R | Floating Point(32ビット) | 内部Floating Pointメモリ(実数メモリ) | 約-3.4028235E38 ~ +3.4028235E38 |
Pアドレスの注意: Pアドレスはボードのピン編集で確認および変更できます。Pアドレスの入出力方向と物理端子は、プロジェクトで選択したボードの定義に従います。
R値の誤差に関する注意: 32ビット実数は浮動小数点演算の制約により、0.1 + 0.2の結果が正確な0.3ではなく、約0.30000001として保存される場合があります。これはIEEE 754の32ビット浮動小数点を使用するコントローラで共通して考慮する特性です。
2. メモリ領域
MPINO-8A4R(T)-Sを選択したときの標準メモリ数は次のとおりです。
設定 → メモリ領域設定で、使用するメモリ数を変更できます。(ショートカット: Ctrl + Shift + M)
| 領域 | 標準数 | 標準アドレス範囲 |
|---|---|---|
P | 64 | P0 ~ P63 |
M | 1,024 | M0 ~ M1023 |
D | 200 | D0 ~ D199 |
C | 100 | C0 ~ C99 |
T | 128 | T0 ~ T127 |
R | 50 | R0 ~ R49 |
メモリ領域設定画面: P・M・D・C・T・Rの入力欄を空欄にするとボードの標準値を使用します。値を入力すると、そのプロジェクトで使用する数が変更されます。画面下部では予想SRAM使用量と全SRAMを確認できます。
個数と最後のアドレスを混同しないでください。番号は0から始まるため、Dメモリ200個はD0からD199までです。
C領域とボードのピン割当
MPINO-8A4R(T)-Sでは、C0~C10メモリにアナログ入力、NTC温度入力、PWMが接続されています。
割り当てるメモリは、設定 → ラダーピンマップ設定で変更できます。
アナログ・PWM出力の注意: アナログ出力またはPWM出力にメモリを割り当てると、そのアドレスの値で出力されるため、Arduinoコードから同じ出力にanalogWrite関連関数を使用できません。analogWrite関連関数を使用する場合は、設定 → ラダーピンマップ設定で対象出力の使用チェックを外してください。
| Cアドレス | ボード機能 | MCUピン |
|---|---|---|
C0 ~ C5 | アナログ入力 | A0 ~ A5 |
C6 ~ C7 | NTC温度入力 | A6 ~ A7 |
C8 ~ C10 | PWM出力 | D21 ~ D23 |
C11 ~ C99 | 上記機能に直接割り当てられていないC領域 | 使用目的を確認してから選択 |
重要: このボードでC0~C10を一般的なカウンタアドレスにすると、同じアドレスを使用するボード機能とデータが重なる可能性があります。カウンタを割り当てる前に、ボード・メモリ情報のピンマップと使用メモリマップの両方を確認してください。
割り当てられるアドレスはボードごとに異なり、ユーザーが変更することもできます。設定 → ラダーピンマップ設定で確認してください。
3. データ形式
データ幅は、一度に読み書きするビット数です。扱える値の範囲とメモリ使用量が変わります。
| データ幅 | サイズ | 符号付き値の範囲 | 主な用途 |
|---|---|---|---|
| BIT | 1ビット | 0または1 | 接点、コイル、ON/OFF状態 |
| BYTE | 8ビット | -128 ~ 127 | 小さい整数 |
| WORD | 16ビット | -32,768 ~ 32,767 | 一般的な整数、D・C・Tの基本値 |
| DWORD | 32ビット | -2,147,483,648 ~ 2,147,483,647 | WORD範囲を超える大きな整数 |
Rも32ビットを使用しますが、DWORD整数ではなく実数を保存する別の領域です。どちらも32ビットという理由だけで、RメモリをDWORDアクセスと同じように扱わないでください。
幅を選ぶときは、現在値だけでなく計算後の最大値も確認します。1msごとに1日加算する値は86,400,000になり、WORD範囲を超えます。
4. メモリアドレスの読み方
メモリアドレスは、最も単純な形式から始め、必要な要素を一つずつ追加して読みます。
M0: M領域の0番BITアドレスです。D0: D領域の0番WORDアドレスです。D0.1: D0 WORD内の2番目のビットです。ビット番号は0から始まります。WM1.2: M領域をWORDでまとめたWM1内の3番目のビットです。M18と同じビットを示します。
メモリ構造
ビット、バイト、ワード、ダブルワード、実数のメモリ構造です。
P・M領域では、個別のBITアドレスを8個、16個、32個ずつまとめ、BYTE・WORD・DWORDとして読みます。小さいアドレスが最下位ビットになるため、WM0.0はM0、WM1.3はM19と同じビットを示します。
D・C・T領域では、一つのアドレスが1 WORDです。連続する二つのWORDをまとめるとDWORDになり、DD0はD0とD1、DD1はD2とD3を結合します。CとTもDC0、DT0など同じ規則を使用します。
5. プロジェクトで使用中のメモリを探す
メニューから表示 → 使用メモリマップを選択するか、Ctrl+Shift+Lを押します。
アドレスを変更するときやメモリ領域を縮小するときは、先にこの画面を確認すると重複使用と範囲エラーを減らせます。
6. 時間で動く特殊ビットメモリ
@で始まる特殊ビットメモリは、一般的なP・Mメモリアドレスと異なり、時間の経過に合わせてMPINO Studio 2が状態を自動更新します。ラダーの接点または立上り・立下りエッジセルで使用できます。
| 形式 | 動作 | 例 |
|---|---|---|
@<ms> | 指定した時間の境界を通過するたびに1回、1スキャンだけON | @100は100msごとに1スキャンON |
@F<ms> | 指定時間ON、同じ時間OFFを繰り返す | @F1000は1秒ON、1秒OFFを繰り返す |
@100は、プログラムのスキャンがちょうど100msの時刻に一致しなくても、境界を通過していれば1回ONになります。一定間隔で値を増やす処理や動作開始条件に使用できます。
@F1000は、状態を手動で反転するコードを書かなくても1秒間隔のON/OFF条件を作ります。
特殊接点には次の入力規則があります。
- 時間単位はミリ秒(ms)です。
- かっこは使いません。
@F(1000)ではなく@F1000と入力します。 - 接点セルまたは立上り・立下りエッジセルだけで使用します。
- 出力コイルのアドレスには使用しません。
@ONのような任意の名前は使用できません。
トラブルシューティング
| 症状 | 確認する項目 |
|---|---|
| 入力したアドレスが許可されません。 | 領域文字、アドレス範囲、B/W/D接頭辞への対応、.nビットアクセスへの対応を順に確認します。 |
| メモリ領域設定を保存できません。 | 予想SRAM使用量が全SRAMを超え、赤色で表示されていないか確認します。 |
| 使用メモリマップにアドレスが表示されません。 | 正しい領域タブとラダー・コードフィルタを選び、アドレスを入力してEnterを押します。 |
| Cカウンタ値が予想と異なります。 | MPINO-8A4R(T)-SのC0~C10ボードピン割当との重複を先に確認します。 |
@F1000を入力できません。 | 出力コイルではなく接点またはエッジセルを選択しているか、かっこを付けていないか確認します。 |



