A map-driven HMI device type takes every PLC address from the imported map file, so the Add dialog cannot address a tag the file lacks. Correct the entry in the map, re-import, and until then read the float as two 16-bit registers through a standard Modbus device, checking word order at a known setpoint.
One floating-point tag will not come across when an HMI panel builds its tag list from an imported controller map file: the Tag Information boxes accept input, and the two PLC Address boxes under them stay greyed out. The fix is to correct the tag's line in the map file and re-import it, because a device type built for a controller's map export takes every address from the file, so a tag the file lacks has no way in. While the map is broken, a second device using the standard Modbus driver can read the float by hand: read 2 words from holding register 40257 and format them big word first to get 123.6 back on screen. Leave the rest of the project alone. This article covers the import fault; a tag that imports cleanly and then ignores PLC register writes is a separate problem with its own fix.
Why are the PLC Address boxes locked when I add a tag?
The PLC Address boxes stay greyed out because the selected device type builds its tag list from the imported map file, which is treated as the only source of addresses, so only a successful import can give a tag its PLC address.
The device entries named for the controller family with Modbus or Modbus TCP after them are the map-driven ones. Select one, browse to the exported map file, and the importer pairs each tag name with its data type and register, then fills the database from those pairs. Hand entry is refused for these devices on purpose: if the dialog could type an address, the panel and the map file could disagree about where a value lives. Every other tag in your project arrived, so the device selection, the file path and the driver are right; the fault sits in one line of the map.
Which fixes fail, and why?
Four moves look tempting and each dead-ends: adding on the internal device creates a tag with no address, repeating the Add on DEV001 changes nothing, a one-tag test map fails the same way, and a field edit of the controller program multiplies the work across the retrofit.
Match your symptom to its meaning before touching anything:
- Tag Information accepts text but both PLC Address boxes stay greyed: the selected device is map-driven, and nothing in the Database > Tag Name Database > Add dialog can address the tag.
- Adding again with Device Name set to DEV001 changes nothing: the device is right, but the address still has to arrive through the import.
- The tag exists but shows a value that never tracks the controller: it was created on the internal device, which has no PLC address at all.
- A controller test project holding only this one tag imports with the same result: the fault is the tag's own map entry, not the project around it.
- The urge to edit the controller program at the machine: bench copy only. Field edits touch a running system and must be repeated at every retrofit location.
How do I find the missing tag in the map file?
Open the map file in a plain text editor, keep a backup, and search for the exact tag name: an absent name means the controller's export skipped the tag, while a present name means one field differs from the lines that imported.
- Copy the map file and search the copy for the tag name, character for character.
- Absent: confirm the tag is defined and used in the controller project, then regenerate the export on a bench copy. Compare the addresses of the existing tags before and after, so the regenerated map still matches what the installed controllers expect. The controller's own documentation describes how the export is produced and which tag types it includes.
- Present: put the line beside a float tag that imported cleanly and compare field by field: data type, register, delimiters, name length, and a duplicate name elsewhere in the file. A skipped line usually differs from its neighbours in exactly one of these.
- Write down the register reference and the data type. The temporary device in the rest of this article needs both.
How do I re-import the map without breaking the tags that already work?
Back up the panel project, confirm DEV001 still points at the map-driven driver for the physical link in use, import the corrected file into that device, and compare every existing tag's address against the backup, because one changed address can blank every screen object bound to it.
- Save a copy of the panel project file.
- Open the device setup for DEV001 and confirm the map-driven selection matches the link: the serial selection for a serial link, the TCP selection for Ethernet.
- Browse to the corrected map file and import it into DEV001.
- Open the tag database and confirm the float tag now sits under DEV001 with its address filled in and read-only.
- Compare every existing tag's address against the backup, then open a screen that uses several of them and watch the values move.
Worked example: which two registers hold a 123.6 °C setpoint, and in which order?
A Modbus register is 16 bits wide, so a 32-bit float occupies two consecutive registers, and a float listed at 40257 reads as the raw words 17143 then 13107 in big-word-first order, decoding to 123.6.
Say the project runs panel software release v1.31, Build 7.27, the map lists the missing float at holding register 40257, and the controller holds a setpoint of 123.6 °C. The encoding goes like this:
- 123.6 = 1.93125 × 2^6, so the IEEE-754 exponent field is 127 + 6 = 133.
- The mantissa fraction 0.93125 × 2^23 = 7811891.2 stores as 7811891, so the stored value is 123.599998 and displays as 123.6.
- The 32-bit pattern is 0x42F73333: most significant word 0x42F7 = 17143, least significant word 0x3333 = 13107.
Add a second device with the standard Modbus driver on the same link and read 2 words from the float's first register. Enter 40257 if the register field takes five-digit 4xxxx references, or 256 if it takes protocol addresses: the five-digit convention counts 40001 as the first register, one above the protocol address that starts at zero, so 40257 sits at protocol address 256. Word order between the two halves is not standardized across devices, which is why reader tools commonly offer four word-and-byte orders. Raw, the registers show 17143 and 13107. Formatted as a 32-bit float, big word first, the panel shows 123.6. Little word first, the same two words decode to about 0.00000004, and the value still moves when you change the setpoint. That absurd-but-live number is the swapped-order signature, so keep the order that matches the known setpoint. The screen side, formatting and decimal placement, is covered in the write-up on displaying a PLC float stored in two word registers on an HMI.
How do I get the number back on screen while the map is broken?
Add a second device using the standard Modbus driver for the same link, address the float's two registers by hand, bind the screen's numeric display to that tag, and leave the map-driven device serving every tag that imported.
A standard Modbus device accepts manual address entry, which is exactly what the map-driven type refuses. Two points keep the workaround clean:
- Two devices on one serial link share the bus. Keep the added polling light: one read of 2 words per second is plenty for a setpoint display, and the original tags must keep updating at their normal rate.
- Confirm a standard Modbus entry exists in the panel's driver list for your link before you build the workaround, and settle the serial settings only after that entry is in place, as covered in the notes on checking the panel driver list before tuning serial settings.
Mark the hand-added tag in the project notes as temporary, so the next technician knows it moves back to DEV001 once the import succeeds.
What do I check before copying the project to the remaining panels?
Force the known setpoint and confirm the sign and decimal place, sweep the value across its range, spot-check three imported tags against the controller's own display, and open the link to confirm the panel raises a comms fault instead of holding a stale number.
- Write 123.6 at the controller and read 123.6 at the panel. Then write a negative value and one near the top of the range; sign and magnitude must both match.
- Change the setpoint while watching the panel. A swapped word pair follows the changes while showing nonsense, so the absolute number is the test.
- Compare three original tags with the controller's own display while the second device is polling.
- Disconnect the link for a few seconds and confirm the panel shows its comms-fault state. A frozen number on a shop-floor screen invites a wrong operator action, so this check comes before any rollout.
- Copy the project to one more panel, repeat the setpoint test, then release the rest.
Recommendation: fix the map entry and re-import as the permanent repair, and use the hand-addressed standard Modbus device only to restore the display meanwhile: verify its word order at a known setpoint on a bench panel, note it as temporary in the project, and move the tag back to DEV001 once the import succeeds.
Questions
Can I add the missing tag by editing the map file by hand?
Yes, if you match the line format exactly. Copy a float line that imported, change only the tag name and the register, keep the delimiters and the data-type spelling identical, and keep a backup of the original file. If the importer still skips the hand-added line, regenerate the map from the controller's own export on a bench copy, because the exporter can add fields a hand line omits.
Why does a swapped word order show a tiny number instead of a huge one?
The swapped pair decodes with a different exponent field, so the result depends on the bits. The 123.6 setpoint lands near 0.00000004; another value can decode to millions or to a negative number. The constant symptom is a value that changes with the process while being absurd, and entering the two words in the opposite order restores the true reading.
Does the one-count offset also apply to input registers?
Yes. The five-digit references count from one in every area: 30001 is the first input register and 40001 is the first holding register, each one count above the protocol address that starts at zero. A float at 30005 therefore sits at protocol address 4. Enter the five-digit form where the panel's register field accepts it, and the protocol address where it asks for one.
What if the map entry looks correct and the importer still skips it?
Compare the skipped line with an imported float line for a name longer than the working ones, a duplicated name, or a data type absent from the importer's list. If the line is genuinely clean, look in the panel software's release notes on the maker's site for a build newer than the one you run: the importer is the component dropping the row, and a newer build can accept it.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.