User Tools

Site Tools


en-us_products:mpino_studio2:memory

This is an old revision of the document!


MPINO STUDIO 2 Phase 2 · Understand Memory

This guide introduces memory to first-time MPINO Studio 2 users. Open the project from Phase 1 and learn the differences between P, M, D, C, T, and R memory, address notation, memory-region settings, the Used Memory Map, and time-driven special contacts.

Application Reference board Completion goal
MPINO Studio 2 MPINO-8A4R(T)-S Identify memory addresses and locate where they are used in a project

Phase 2 memory learning path

About screenshots: Screenshots use the Korean user interface. Button positions, icons, and keyboard shortcuts are the same.

1. Before You Begin

Prepare the following:

  • A PC with MPINO Studio 2 installed
  • The .mp2 project saved in Phase 1
  • An MPINO-8A4R(T)-S board
  • An MP download cable if you will run the final flashing exercise on the board

You can complete most of this guide without connecting a board. For the upload exercise, disconnect output loads first and verify the board and port used in Phase 1.

After this phase, you will be able to:

  • Identify the kind of value stored from the first letter of an address.
  • Choose BIT, BYTE, WORD, or DWORD for the required value range.
  • Split an address such as WM1.3 into width, region, index, and bit number.
  • Inspect memory-region sizes and estimated SRAM use.
  • Find every project location that uses a specific address.
  • Explain the timing difference between @100 and @F1000.

2. What Is Memory?

Memory holds input states, internal conditions, calculation results, timer values, and other data while the program runs. Ladder logic and Arduino C code in MPINO Studio 2 can use the same memory.

A basic address consists of a region letter followed by a zero-based number. For example, M10 is the eleventh address in the M region, and D0 is the first address in the D region.

Comparison of the P M D C T and R memory regions

Region Basic unit Stored value Beginner guideline
P BIT Digital input or output state on the board Check the selected board's pin map for the physical terminal and direction.
M BIT Internal ON/OFF state not directly connected to a terminal Use for run permissions, sequence states, interlock results, and other auxiliary conditions.
D WORD Signed integers and calculation results Use for quantities, setpoints, and converted sensor values handled as integers.
C WORD Counter values First check whether the selected board maps the C address to an analog input, PWM output, or another board feature.
T WORD Elapsed timer values Stores time data used by ladder timers.
R 32-bit real Values with a decimal point Use for temperature, ratios, and scaled values that require floating-point calculations.
P address caution: P0 does not mean an input on every board. The I/O direction and physical terminal follow the board definition selected for the project.
Comparing R values: Floating-point calculations can produce small rounding differences. Use a suitable tolerance when a control decision depends on a calculated real value.

3. Default Memory on MPINO-8A4R(T)-S

The MPINO-8A4R(T)-S board uses these default memory counts:

Region Default count Default address range
P 64 P0 to P63
M 1,024 M0 to M1023
D 200 D0 to D199
C 100 C0 to C99
T 128 T0 to T127
R 50 R0 to R49

Do not confuse a count with the last address. Numbering begins at zero, so 200 D addresses run from D0 through D199.

C Region and Board Pin Mapping

The beginning of the C region is assigned to board functions on MPINO-8A4R(T)-S.

C memory and board pin mapping on MPINO-8A4R(T)-S

C address Board function MCU pin
C0 to C5 Analog inputs A0 to A5
C6 to C7 NTC temperature inputs A6 to A7
C8 to C10 PWM outputs D21 to D23
C11 to C99 Remaining C region not directly assigned above Confirm the intended use before selecting an address
Critical check: If you choose C0 through C10 as ordinary counter addresses on this board, their data can overlap with the board functions that use the same addresses. Before assigning a counter, inspect both the pin map under Board/Memory Information and the Used Memory Map.

Other MPINO products can have different memory counts and pin mappings. Do not reuse this address table in another board project without checking that board.

4. Understand Data Widths

Data width is the number of bits read or stored at one time. It determines the available value range and memory use.

BIT BYTE WORD and DWORD sizes and ranges

Width Size Signed range Typical use
BIT 1 bit 0 or 1 Contacts, coils, and ON/OFF states
BYTE 8 bits -128 to 127 Small integers
WORD 16 bits -32,768 to 32,767 General integers and the basic values of D, C, and T
DWORD 32 bits -2,147,483,648 to 2,147,483,647 Large integers beyond the WORD range

The R region also uses 32 bits, but it stores a floating-point value, not a DWORD integer. Do not treat R memory as DWORD access simply because both use 32 bits.

When selecting a width, consider the largest value after calculations. A value incremented every 1 ms for one day reaches 86,400,000 and therefore exceeds the WORD range.

5. Read Memory Addresses

Read a long address from left to right as a data-width prefix, memory region, address index, and bit number.

How to read each part of WM1.3

For example, WM1.3 means:

  1. W: view the data with WORD width.
  2. M: use the internal-bit memory region.
  3. 1: use address-group index 1.
  4. .3: select the fourth bit in that WORD. Bit numbering also begins at zero.

Width Prefixes and Bit Access

Notation Supported regions Examples
B prefix P, M BP0, BM1
W prefix P, M WP0, WM1
D prefix P, M, D, C, T DM0, DD2, DC31
.n bit number P/M width views, D, C WM1.3, D0.15

In DD2, the first D is the DWORD width prefix and the second D is the D memory region. Read the two letters by their separate roles.

The following forms are not supported:

  • A B or W prefix on D, C, or T, such as BD0
  • Any width prefix on R
  • .n bit access on R

If the address editor reports an error, check whether that memory region supports the selected width and bit access before changing only the spelling.

6. Inspect Memory-Region Sizes

Select Settings → Memory Region Settings, or press Ctrl+Shift+M.

Figure 1. Memory Region Settings dialog

Check the dialog in this order:

  1. Confirm that the current project board is MPINO-8A4R(T)-S.
  2. Review the counts in the P, M, D, C, T, and R fields.
  3. A field left blank uses the selected board's default value.
  4. Review the estimated SRAM use and total SRAM at the bottom.
  5. If the total is exceeded, the indicator turns red and the settings cannot be saved.
  6. If a change is required, enter the value and select Save.
  7. Close the dialog and press Ctrl+S to store the change in the .mp2 project.

Keep the board defaults unless the project has a clear reason to change them. Increasing a count provides more addresses but consumes more SRAM. Reducing a count can leave an existing ladder cell or Arduino C reference outside the valid range, so inspect the Used Memory Map before and after the change.

7. Find Memory Used by the Project

Select View → Used Memory Map, or press Ctrl+Shift+L.

Figure 2. Addresses and references in the Used Memory Map

Use the map as follows:

  1. Select the P, M, D, C, T, or R tab.
  2. Narrow the results with the ladder and code source filters.
  3. Enter an address in the search field and press Enter.
  4. A colored address cell means that the current project uses that memory.
  5. Select a used cell to display its references below the grid.
  6. Select a reference to jump to the ladder cell or code location.
  7. The selected tab and scroll position remain when the dialog is reopened. They reset when the application restarts.

Check the Phase 1 Project

  1. Open the project saved in Phase 1.
  2. Press Ctrl+Shift+L.
  3. Select the P tab.
  4. Confirm that P0 and P32 are marked as used.
  5. Select P0 and confirm the NO contact reference in ladderLoop.
  6. Select P32 and confirm the output-coil reference.

Inspecting this map before reassigning an address or reducing a memory-region size helps prevent duplicate use and out-of-range references.

8. Time-Driven Special Contacts

A special contact beginning with @ is updated automatically as time passes. It is different from an ordinary P or M memory address.

Timing comparison of the @100 and @F1000 special contacts

Format Operation Example
@<ms> Turns ON for one scan once each specified time boundary @100 is ON for one scan every 100 ms
@F<ms> Repeats ON for the specified duration, then OFF for the same duration @F1000 repeats 1 second ON and 1 second OFF

@100 still produces one ON scan when the program scan crosses a 100 ms boundary without landing exactly on it. It can start an operation or increment a value at regular intervals.

@F1000 provides a repeating one-second condition without code that manually toggles a state.

Figure 3. A special contact entered in a ladder cell

Follow these input rules:

  • The time unit is milliseconds (ms).
  • Do not use parentheses. Enter @F1000, not @F(1000).
  • Use a special contact only in a contact or rising/falling-edge cell.
  • Do not enter it as an output-coil address.
  • An arbitrary name such as @ON is not valid.

9. Exercise · Flash P32 Once Per Second

Replace the P0 contact in the Phase 1 circuit with an @F1000 special contact.

  1. Open the Phase 1 project and use File → Save As to save phase2-memory.mp2.
  2. Confirm that output loads are disconnected.
  3. Select the P0 contact cell in ladderLoop.
  4. Press Enter or double-click to open the cell editor.
  5. Change the address to @F1000 and confirm it.
  6. Keep P32 as the output-coil address.
  7. Press Ctrl+R and confirm that the build finishes successfully.
  8. Connect the MP download cable and select the port at the lower right.
  9. Press Ctrl+U to upload.
  10. If you configured a monitoring port in Phase 1, press Ctrl+M to enable real-time ladder monitoring.
  11. Confirm that the @F1000 contact and P32 coil repeat approximately 1 second ON and 1 second OFF.

To resume the physical-input test afterward, restore the contact address to P0, then build and upload again.

10. Choose Memory by Situation

Value to store Region to check first What to verify
Physical digital input or output P Pin map and I/O direction for the selected board
Internal ladder ON/OFF condition M Whether another circuit already uses the same address
General integer or calculation result D Whether the result exceeds the WORD range
Current counter value C Whether the C address overlaps with a mapped board pin
Elapsed timer value T Whether the same timer address is used twice
Value with a decimal point R A comparison tolerance suitable for floating-point calculations
Periodic contact condition @<ms>, @F<ms> Whether one scan or a repeating ON/OFF state is required

11. Completion Checklist

You have completed Phase 2 when you can explain or verify every item below.

  • Distinguish the purposes of P, M, D, C, T, and R.
  • Explain that C0 through C10 are mapped to board functions on MPINO-8A4R(T)-S.
  • Identify the size and signed range of BIT, BYTE, WORD, and DWORD.
  • Read WM1.3 and DD2 by the role of each character.
  • Open Memory Region Settings with Ctrl+Shift+M.
  • Find the P0 and P32 references with Ctrl+Shift+L.
  • Explain the difference between @100 and @F1000.
  • Save the exercise as a separate project and verify the build result.

Troubleshooting

Symptom What to check
An entered address is rejected. Check the region letter, address range, B/W/D prefix support, and .n bit-access support.
Memory Region Settings cannot be saved. Check whether estimated SRAM use exceeds total SRAM and is shown in red.
An address does not appear in the Used Memory Map. Select the correct region tab and ladder/code filters, enter the address, and press Enter.
A C counter value is unexpected. First check for overlap with the C0 through C10 board pin mapping on MPINO-8A4R(T)-S.
@F1000 cannot be entered. Confirm that the selected cell is a contact or edge cell, not an output coil, and that no parentheses are present.
P32 does not flash. Confirm that @F1000 and the P32 coil are in the same circuit and that build, port selection, and upload all completed successfully.
en-us_products/mpino_studio2/memory.1788847532.txt.gz · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki