====== Building the HMI Screen ====== [[:en-us_guide:hmi_connection|HMI Connection]] Indicators and switches on the HMI screen read and write the product's internal memory through an **external device address**. The external device is the product the HMI talks to over the communication line, and the address format depends on the product's development tool and protocol. On this page you set up the external device and its addresses, then build a simple screen with number displays, a number input, a switch, and a lamp. Editor menus and terminal numbers follow your HMI model's manual. ===== 1. Create the HMI project and external device ===== Register the actual HMI model, its screen resolution, and the serial port and driver connected to the product. The HMI can read and write external memory only when it uses the same protocol, station number, and communication format as the product program. Compare your settings with [[:en-us_guide:hmi_connection:wiring|wiring and communication settings]] and with the [[:en-us_guide:hmi_connection:arduino|Arduino IDE]] or [[:en-us_guide:hmi_connection:studio2|MPINO STUDIO2]] page you followed. - In the HMI editor, create a **new project** and select the actual HMI model and screen resolution. - Add an **external device**. This is the product the HMI reads and writes over communication. - Select [[:en-us_guide:hmi_connection:wiring|the HMI serial port you actually wired]] and the driver for **the same protocol** as the product program. - Set the station number, baud rate, data bits, parity, and stop bits to match the product program, then save the project. ^ Protocol used on the product ^ Driver to look for on the HMI ^ | Modbus RTU | Modbus RTU Master · Coil / Holding Register | | LS Electric Cnet | LS Electric Cnet serial · M / D memory | | Mitsubishi MC | MELSEC A-compatible 1C frame, Format 1, serial | Set the target of each screen element to the **external device** you just created, not to an internal HMI variable. This guide does not name exact buttons, because the HMI model and editor are up to you. For menu locations, external device registration, address notation, and project download, see the manufacturer's manual. ===== 2. Check the address format ===== The address you enter depends on **the product's development tool and protocol**. Use one column of the table below. Cnet and MC addresses are not converted with the Modbus table further down. ^ Product memory ^ Arduino IDE\\ Modbus RTU ^ Arduino IDE\\ Cnet ^ Arduino IDE\\ MC ^ MPINO STUDIO2\\ Modbus RTU ^ MPINO STUDIO2\\ Cnet ^ | ''D0'' | Holding Register ''0'' | ''D000'' | ''D0000'' | Holding Register ''2000'' | ''D000'' | | ''D1'' | Holding Register ''1'' | ''D001'' | ''D0001'' | Holding Register ''2001'' | ''D001'' | | ''D2'' | Holding Register ''2'' | ''D002'' | ''D0002'' | Holding Register ''2002'' | ''D002'' | | ''M0'' | Coil ''0'' | ''M000'' | ''M0000'' | Coil ''1000'' | ''M000'' | | Details | [[:en-us_guide:hmi_connection:arduino:modbus|Open page]] | [[:en-us_guide:hmi_connection:arduino:cnet|Open page]] | [[:en-us_guide:hmi_connection:arduino:mc|Open page]] | [[:en-us_guide:hmi_connection:studio2:modbus|Open page]] | [[:en-us_guide:hmi_connection:studio2:cnet|Open page]] | The Modbus columns show **0-based addresses inside the request**. The Cnet columns show the entry format for LS Electric, M2I, and EasyView HMIs. The MC column shows the device code and 4-digit decimal address in the 1C request; how your editor displays it depends on the driver. **Modbus Holding Register notation:** check in the HMI driver manual whether the input field takes a 0-based number, a 1-based number, or ''4xxxx'' notation, then enter the matching value. ^ Target ^ 0-based address ^ 1-based number ^ 4xxxx notation example ^ | SDK ''D0'' | ''0'' | ''1'' | ''40001'' | | SDK ''D1'' | ''1'' | ''2'' | ''40002'' | | SDK ''D2'' | ''2'' | ''3'' | ''40003'' | | STUDIO2 ''D0'' | ''2000'' | ''2001'' | ''42001'' | | STUDIO2 ''D1'' | ''2001'' | ''2002'' | ''42002'' | | STUDIO2 ''D2'' | ''2002'' | ''2003'' | ''42003'' | ''4xxxx'' is an example for drivers that use that notation. It does not mean every HMI takes the same number. ''M0'' is in the **Coil** area, with 0-based address ''0'' in the SDK and ''1000'' in STUDIO2. A driver that takes 1-based Coil numbers uses ''1'' and ''1001''. **Do not apply this Modbus table to Cnet or MC addresses.** After entering an address, check the **read or write target area and the final address the editor shows**. With Modbus, confirm in the driver settings that number displays point to Holding Registers and that switches and lamps point to Coils. ===== 3. Place five elements on the screen ===== With the address rule confirmed, this **simple screen** lets you check reading and writing internal memory. Upload the product program first, and create the external device in the HMI project beforehand. {{ :en-us_guide:hmi_connection:practice-screen.svg?420 |Example screen with two number displays, a number input, a test switch, and a lamp }} ^ Screen element ^ Memory ^ Function ^ | Communication check number | ''D0'' | Reads and shows the value the product increments | | Input value | ''D1'' | Takes a number and writes it to the product | | Value returned by the product | ''D2'' | Reads and shows the result the product copied | | Test switch | ''M0'' | Writes as an ON/OFF maintained toggle | | Test lamp | ''M0'' | Reads and shows the product's bit value | ===== 4. Set up number displays and input ===== - Place a number display and connect it to the HMI address for ''D0'' from your protocol's address table. - Place a number input and connect it to the HMI address for ''D1'' from the same table. - Limit the input range to ''0 ~ 9999'' and set it to write to the product when the input is confirmed. - Place another number display and connect it to the HMI address for ''D2'' from the same table. Set all three elements to **16-bit integer, 1 word, decimal, 0 decimal places, scale 1**. If the ''D2'' display is connected to ''D1'', you cannot see the value the product returns. ===== 5. Set up the switch and lamp ===== - Set the write target of a bit switch to the HMI address for ''M0'' from your protocol's address table. - Set it as a **maintained toggle** that changes ON/OFF each time it is pressed. - Set a separate lamp to **read** the same HMI address as the switch. In the STUDIO2 exercise, adding an ''M1'' lamp also shows the result the ladder copied. ===== 6. Transfer the screen to the HMI ===== Save the project. Then transfer it to the **actual HMI** using the **project download method and the specified cable and port** in the HMI manufacturer's manual. The product program upload and the HMI screen transfer are two separate steps, and both must finish. When the screen appears on the HMI, start the test below with reading ''D0''. [[:en-us_guide:hmi_connection:check|Next: Checking Operation and Troubleshooting →]]