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
490490Modbus::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
523523Modbus::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