Skip to content

Commit d79deb2

Browse files
committed
Respond EX_ILLEGAL_ADDRESS on non-existent reg
1 parent b79129f commit d79deb2

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/Modbus.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Modbus Library for Arduino
33
Core functions
44
Copyright (C) 2014 Andr� Sarmento Barbosa
5-
2017-2021 Alexander Emelianov (a.m.emelianov@gmail.com)
5+
2017-2023 Alexander Emelianov (a.m.emelianov@gmail.com)
66
*/
77
#include "Modbus.h"
88

@@ -489,7 +489,7 @@ void Modbus::getMultipleWords(uint16_t* frame, TAddress startreg, uint16_t numre
489489

490490
Modbus::ResultCode Modbus::readBits(TAddress startreg, uint16_t numregs, FunctionCode fn) {
491491
if (numregs < 0x0001 || numregs > MODBUS_MAX_BITS || (0xFFFF - startreg.address) < numregs)
492-
return EX_ILLEGAL_VALUE;
492+
return EX_ILLEGAL_ADDRESS;
493493
//Check Address
494494
//Check only startreg. Is this correct?
495495
//When I check all registers in range I got errors in ScadaBR
@@ -498,11 +498,11 @@ Modbus::ResultCode Modbus::readBits(TAddress startreg, uint16_t numregs, Functio
498498
#if defined(MODBUS_STRICT_REG)
499499
for (k = 0; k < numregs; k++) { //Check Address (startreg...startreg + numregs)
500500
if (!searchRegister(startreg + k))
501-
return EX_ILLEGAL_VALUE;
501+
return EX_ILLEGAL_ADDRESS;
502502
}
503503
#else
504504
if (!searchRegister(startreg))
505-
return EX_ILLEGAL_VALUE;
505+
return EX_ILLEGAL_ADDRESS;
506506
#endif
507507
free(_frame);
508508
//Determine the message length = function type, byte count and
@@ -523,11 +523,11 @@ Modbus::ResultCode Modbus::readBits(TAddress startreg, uint16_t numregs, Functio
523523
Modbus::ResultCode Modbus::readWords(TAddress startreg, uint16_t numregs, FunctionCode fn) {
524524
//Check value (numregs)
525525
if (numregs < 0x0001 || numregs > MODBUS_MAX_WORDS || 0xFFFF - startreg.address < numregs)
526-
return EX_ILLEGAL_VALUE;
526+
return EX_ILLEGAL_ADDRESS;
527527
#if defined(MODBUS_STRICT_REG)
528528
for (k = 0; k < numregs; k++) { //Check Address (startreg...startreg + numregs)
529529
if (!searchRegister(startreg + k))
530-
return EX_ILLEGAL_VALUE;
530+
return EX_ILLEGAL_ADDRESS;
531531
}
532532
#else
533533
if (!searchRegister(startreg))

0 commit comments

Comments
 (0)