• Stéphane Raimbault authored
     
    Browse Dir »
  • According to the Modbus standard, the unit identifier is choosen by the
    TCP client and can be any value:
    
    "This field is used for intra-system routing purpose.  It is typically
    used to communicate to a MODBUS+ or a MODBUS serial line slave through a
    gateway between an Ethernet TCP-IP network and a MODBUS serial line.
    This field is set by the MODBUS Client in the request and must be returned
    with the same value in the response by the server."
    
    So the current check in modbus_reply must be extended to check whether
    we are in a RTU or TCP context.
    
    Also the unit-test has to be adjusted.
    
    Signed-off-by: Michael Heimpold <mhei@heimpold.de>
    Michael Heimpold authored
     
    Browse Dir »












  • According to the Modbus specification
    (http://www.modbus.org/docs/Modbus_over_serial_line_V1_02.pdf, section 2.1)
    a Modbus RTU master can send a broadcast to all of it's slaves. This
    broadcasts can only be write requests as otherwise collisions could
    occur, eg. on a RS-485 bus.
    
    When receiving such a broadcast, the slave should process the request as
    usual, but must not reply anything, neither a normal response nor an
    exception reply in case of an error.
    
    Adjust the unit test for this case, too.
    
    Signed-off-by: Michael Heimpold <mhei@heimpold.de>
    Michael Heimpold authored
     
    Browse Dir »
  • This patch has been developed by Andrey Skvortsov, Michael Heimpold
    and Stéphane Raimbault.
    
    - avoid bash'isms and use of GNU find
    - terminate server after test run (ignored in TCP mode)
    - add *.log, *.trs to .gitignore
    - unit-test-client returns 0 on success
    - save exit code of unit-test-client for make check status
    - replace kill by killall
    - add entry in README
    Andrey Skvortsov authored
     
    Browse Dir »



  • This fixes the message
    "error: 'for' loop initial declarations are only allowed in C99 mode",
    spotted during cross-compiling of libmodbus.
    
    The compiler (gcc) actually does support -std=c99 but it gets not
    enabled by default. So a solution would be to enforce c99 mode
    via CFLAGS, but this will knock out all compilers which do not
    support this mode.
    Moving the declaration out of the loop initialisation, seems to be
    the simpler solution.
    
    Signed-off-by: Michael Heimpold <mhei@heimpold.de>
    Michael Heimpold authored
     
    Browse Dir »