A PLC 499 0x0000 message means the panel asked the PLC for registers the PLC does not have. Read the request line in the panel's system screen, add the byte count to the start register, and compare the last word with the installed model's documented %R limit. Retag below it, then test the cable separately; the documented case ran a day clean after the retag and failed again on a bad cable.
PLC 499 0x0000 on a C-more panel driving a VersaMax Micro points at one thing more often than any other: a screen read asking for registers the PLC does not have. The serial settings are usually right and the cable is usually fine at that moment. The request runs past the end of the PLC's %R memory. The panel's system screen prints the failed request with its start register and byte count, so you can turn the message into a register span, compare the last word with the installed model's documented %R limit, and move the tags below it.
The 14-point VersaMax Micro and Nano models end %R at %R256, so a 40-byte read from %R302 is out of range before it starts. Fix the range first, then test the cable on its own: the case behind these numbers ran clean for 1 day after retagging and went down again on a bad homemade cable.
What PLC 499 0x0000 means
On a C-more panel, PLC-499 is the code the panel shows when the error came from the connected PLC, and the message carries a four-digit hexadecimal value with it. Search the panel's error code appendix for 0x0000 and you will not find it, which is expected for this fault: the value is the PLC's own detail, and here it carried nothing. The useful evidence sits in the same system screen entry, in the request line:
date, time, com 3, dev001, RD %R302, 40 byte, error code PLC-499
The line names the port, the device number, the command (RD marks a read), the start register and the byte count. It says nothing about baud or wiring. It says the panel asked to read 40 bytes starting at %R302 and the PLC did not serve that read.
Symptoms and what each one points to
| What the panel shows | What it points to | First check |
|---|---|---|
| PLC 499 0x0000 with a request line in the system screen | A read that reaches memory the installed PLC does not have | Convert the line to a span and compare its last word with the model's %R limit |
| PLC 001 comm timeout after a wrong baud or a pulled cable | The link is down, which is what the test just did | Restore the settings and cable, and expect the PLC 499 message back |
| A pushbutton on the faulting screen does not write | The active screen still carries a request the PLC will not serve | Clear the failing read first, then retest the button |
| Clean for 1 day after the retag, then faulted again | A second fault, usually in the cable | Swap in a known-good cable and run a full shift |
The fastest way to separate the two fault families is a deliberate failure. Set the baud wrong in the PLC on purpose, or unplug the cable from port 1, and the panel reports PLC 001 comm timeout. Put everything back and the original PLC 499 0x0000 returns. That pair of results tells you the link was up at the correct settings, so the message is about the request itself.
Worked example: the 40-byte read from %R302 on a 14-point Micro
Inputs, and where each one comes from:
- Start register %R302 and read length 40 bytes, both printed on the panel's system screen request line.
- One VersaMax %R register holds one 16-bit word, 2 bytes.
- %R limit: %R256, the highest address the 14-point VersaMax Micro and Nano models support in %R memory.
The rule in words: the words requested equal the bytes divided by 2. The last register in the read equals the start register plus the words minus 1. The read works only when that last register sits at or below the model's limit.
The arithmetic:
- 40 ÷ 2 = 20 words
- 302 + 20 - 1 = 321, so the span runs from %R302 through %R321
- 321 - 256 = 65 registers past the end of this PLC's %R memory
Result: the panel grouped the screen's tags into one read of 20 words, and that read ends 65 registers beyond the limit, so the PLC cannot serve it and the panel prints PLC 499 0x0000.
The decision: retag so the last word lands at %R256 or below. For a 20-word read the highest legal start is 256 - 20 + 1 = 237, so a block starting at %R237 ends exactly at %R256. Move the block to %R236 or lower and the span closes at %R255 or below with a register to spare.
One detail that saves an hour: the request line prints %R302 while the project and the PLC program both write %R00302. Leading zeros after %R are ignored, so the two spell the same register and changing the padding moves nothing.
Move the tags into range
- Confirm the model actually installed: the label on the PLC or its configuration, not the model the project was written for. The documented project was built on a 23-point Micro, then copied onto a 14-point unit, and the copy kept addresses the smaller PLC does not have.
- Read the %R limit from that model's own datasheet, not from the point count. For the 14-point Micro and Nano models it is %R256.
- Open the system screen on the panel and list every failed request line: port, device, RD, start register, byte count. Convert each one to a span the way the example does.
- Move the tags so every span ends at or below the limit. Tags that sat together can move as one block as long as the whole grouped read stays inside the range.
- If the PLC program stores its data up high as well, move the PLC data block down and repoint the panel tags to the new start in the same edit, so both sides name the same registers.
- Download the corrected project. For a panel on another subnet, the C-more Ethernet connection window has an offline link tab for reaching a panel that is not on your local network; check the target before you download to it.
- Run a one-tag test before trusting the whole project: a single numeric display at a known-good address near the bottom of the range. If the tag updates and the production screen still faults, the production screen still holds an out-of-range tag, so go back to step 3. When reads pass, test a write from a pushbutton to a register you can safely change. If the panel and PLC are apart, connecting an HMI serial cable to a PLC simulator lets you exercise the project before it goes back on the wall.
If the panel reports an invalid address after retagging, that is a different tagging fault with its own fix: HMI invalid address errors when tagging PLC memory.
Test the cable as its own fault
Retagging clears the range fault and leaves the wire untouched. In the documented case the panel ran clean for 1 day, then faulted again, and the second fault was a bad homemade cable on port 1. A panel that faulted, recovered and faulted again is carrying two faults, so check the wire after the project.
- Inspect what you have: connector seating, bent pins, jacket damage where the cable crosses a door hinge. A homemade cable has no documented wiring behind it.
- Replace it with a cable built to the wiring the panel and PLC manuals document for those two ports, or a ready-made cable for the pairing. Serial distance limits run by interface, and HMI to PLC serial cable maximum distance by interface lists them.
- Run the panel through a full 8-hour shift after the swap. This fault came back after 1 day of clean running, so a five-minute pass at the bench settles little about it.
- If a known-good cable and matched settings still end in PLC 001 comm timeout, the fault has moved into the link setup; fixing HMI no communications when one PLC model fails picks up from there.
Recommendation
Recommendation: Read the failed request line in the panel's system screen before touching a comm setting. Convert it to a span, start register plus bytes divided by 2 minus 1, and retag so the last word sits at or below the %R limit in the installed model's datasheet, %R256 on the 14-point VersaMax Micro and Nano. Leave baud and cable alone while the PLC 499 message shows at normal settings; if a wrong baud or a pulled cable turns it into PLC 001, the link is up and the span is the fault. After the retag, swap in a cable built to the manuals' wiring and run a full 8-hour shift on the replacement before calling the project clean, because a panel that has faulted twice is carrying two faults until both have separate fixes.
Questions
Does PLC 499 0x0000 mean the cable is bad?
No. PLC-499 reports a problem the connected PLC raised about a request, and 0x0000 adds no detail. A cable or baud fault shows up differently: unplug the cable or set the baud wrong on purpose and the panel reports PLC 001 comm timeout instead. The two faults can still share one panel. In the documented case the register fix held for a day, then a failed homemade cable took the panel down again, so treat the cable swap as its own step after the retag.
What is the %R limit on the small VersaMax Micro models?
The 14-point VersaMax Micro and the Nano models support %R memory through %R256. Confirm the exact model on the label of the unit wired to the panel, then take the limit from that model's own datasheet. A project written for a larger Micro and copied onto a smaller one keeps the old addresses, which is how a 40-byte read from %R302 ends up on a PLC that stops at %R256.
What if PLC 499 comes back after the retag?
Open the system screen again and read the newest request line. Its start register and byte count name the span that still runs long; trace that span back to the tags that produce it and move them below the limit like the rest. A fault that appears only when one particular screen is displayed belongs to that screen's tags, so walk every screen in the project, including ones copied in from an older project.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.