• Libraries
  • Shop
  • Doc
  • Free Modbus
  • Support
  • Login
FieldTalk Modbus Slave C++ Library  Library version 2.10.0
  • Introduction
  • Chapters
  • Modules
  • Classes
  • Class List
  • Class Hierarchy
  • Class Members
    Public Member Functions | Static Public Member Functions | List of all members
    MbusSlaveServer Class Referenceabstract

    Base class which implements the Modbus server engine. More...

    Public Member Functions

    virtual ~MbusSlaveServer ()
     Destructor. More...
     
    int addDataTable (int slaveAddr, MbusDataTableInterface *dataTablePtr)
     Associates a protocol object with a Data Provider and a Modbus slave ID. More...
     
    virtual int serverLoop ()=0
     Modbus slave server loop. More...
     
    virtual void shutdownServer ()=0
     Shuts down the Modbus server. More...
     
    virtual int isStarted ()=0
     Returns whether server has been started up. More...
     
    int getConnectionStatus ()
     Checks if a Modbus master is polling periodically. More...
     

    Static Public Member Functions

    static const TCHAR * getPackageVersion ()
     Returns the library version number. More...
     

    Protocol Configuration

    int setTimeout (long timeOut)
     Configures master activity time-out supervision. More...
     
    long getTimeout ()
     Returns the currently set master activity time-out value. More...
     
    void disableExceptionReplies ()
     Supress exception replies to be sent. More...
     
    void enableExceptionReplies ()
     Enables exception replies after they have been turned off. More...
     

    Transmission Statistic Functions

    unsigned long getTotalCounter ()
     Returns how often a message transfer has been executed. More...
     
    void resetTotalCounter ()
     Resets total message transfer counter.
     
    unsigned long getSuccessCounter ()
     Returns how often a message transfer was successful. More...
     
    void resetSuccessCounter ()
     Resets successful message transfer counter.
     

    Detailed Description

    Base class which implements the Modbus server engine.

    This class realises the server engine. The server engines processes Modbus messages, parses the function codes and upon receipt of a valid master query it calls Data Provider methods to exchange data with the user application. For a more detailed description which Modbus data and control functions have been implemented in the server engine see section Server Functions common to all Modbus Protocol Flavours.

    See also
    Server Functions common to all Modbus Protocol Flavours
    MbusDataTableInterface, MbusRtuSlaveProtocol, MbusAsciiSlaveProtocol, MbusTcpSlaveProtocol

    Constructor & Destructor Documentation

    ◆ ~MbusSlaveServer()

    ~MbusSlaveServer ( )
    virtual

    Destructor.

    Shuts down server, closes any associated communication resources (serial ports or sockets) and releases any resources.

    Member Function Documentation

    ◆ addDataTable()

    int addDataTable ( int  slaveAddr,
    MbusDataTableInterface *  dataTablePtr 
    )

    Associates a protocol object with a Data Provider and a Modbus slave ID.

    Parameters
    slaveAddrModbus slave address for server to listen on (-1 - 255). 0 is regarded as a valid value for a MODBUS/TCP server address. A value of -1 means the server disregards the slave address and listens to all slave addresses. 0 or -1 is only valid for MODBUS/TCP!
    dataTablePtrModbus data table pointer. Must point to a Data Provider object derived from the MbusDataTableInterface class. The Data Provider is the interface between your application data and the Modbus network.
    Returns
    FTALK_SUCCESS on success or error code. See Error Management for a list of error codes.

    References FTALK_ILLEGAL_ARGUMENT_ERROR, and FTALK_SUCCESS.

    ◆ serverLoop()

    virtual int serverLoop ( )
    pure virtual

    Modbus slave server loop.

    This server loop must be called continuously. It must not be blocked. The server has to be started before calling the serverLoop() method.

    In most cases the server loop is executed in an infinite loop in its own thread:

    while (notTerminated) {
    mbusProtocol.serverLoop();
    }
    Returns
    FTALK_SUCCESS on success or error code. See Error Management for a list of error codes.

    Implemented in MbusTcpSlaveProtocol, MbusRtuSlaveProtocol, MbusRtuOverTcpSlaveProtocol, MbusUdpSlaveProtocol, MbusAsciiSlaveProtocol, and MbusIpServerBase.

    ◆ shutdownServer()

    virtual void shutdownServer ( )
    pure virtual

    Shuts down the Modbus server.

    This function also closes any associated communication resources like serial ports or sockets.

    Implemented in MbusSerialServerBase, MbusTcpSlaveProtocol, MbusUdpSlaveProtocol, and MbusIpServerBase.

    ◆ isStarted()

    virtual int isStarted ( )
    pure virtual

    Returns whether server has been started up.

    Return values
    true= started
    false= shutdown

    Implemented in MbusSerialServerBase, and MbusIpServerBase.

    ◆ getConnectionStatus()

    int getConnectionStatus ( )
    inline

    Checks if a Modbus master is polling periodically.

    Return values
    true= A master is polling at a frequency higher than the master transmit time-out value
    false= No master is polling within the time-out period
    Note
    The master transmit time-out value must be set > 0 in order for this function to work.

    ◆ setTimeout()

    int setTimeout ( long  timeOut)

    Configures master activity time-out supervision.

    The slave can monitor whether a master is actually polling or not. This function sets the activity time-out to the specified value. A value of 0 disables the time-out, which stops time-out notifications being sent to the Data Provider. Default value is 1000 ms.

    Remarks
    The time-out value is a minimum value only and the actual time may be longer. How precise it is followed depends on the operating system used, its scheduling priority and its system timer resolution.
    Note
    The time-out does not check whether a master is sending valid frames. The transmission of characters is sufficient to avoid the time-out.
    Parameters
    timeOutTimeout value in ms (Range: 0 - 100000), 0 disables time-out
    Return values
    FTALK_SUCCESSSuccess
    FTALK_ILLEGAL_ARGUMENT_ERRORArgument out of range

    References FTALK_ILLEGAL_ARGUMENT_ERROR, and FTALK_SUCCESS.

    ◆ getTimeout()

    long getTimeout ( )
    inline

    Returns the currently set master activity time-out value.

    Returns
    Timeout value in ms

    ◆ disableExceptionReplies()

    void disableExceptionReplies ( )

    Supress exception replies to be sent.

    With this option only positive replies are sent to the master. All failure replies are silently discarded. This option can be useful if redundant Modbus devices are used. In this scenario supressing the reply would trigger a swap-over of the redundant devices.

    ◆ enableExceptionReplies()

    void enableExceptionReplies ( )

    Enables exception replies after they have been turned off.

    Sending exception replies in case of slave failures is the normal mode of operation.

    ◆ getTotalCounter()

    unsigned long getTotalCounter ( )
    inline

    Returns how often a message transfer has been executed.

    Returns
    Counter value

    ◆ getSuccessCounter()

    unsigned long getSuccessCounter ( )
    inline

    Returns how often a message transfer was successful.

    Returns
    Counter value

    ◆ getPackageVersion()

    const TCHAR * getPackageVersion ( )
    static

    Returns the library version number.

    Returns
    Version string
    • MbusSlaveServer
    • FieldTalk Modbus Slave C++ Library Library version 2.10.0
    Speak to the Experts
    Modbus Organization Member logo

    We are member of the Modbus Organization, Inc.

    Buy with Confidence
    30-day money back guarantee All our FieldTalk web sales are backed by a 30-day Money Back Guarantee.
    We Accept
    Bank VISA MasterCard PayPal
    Customer Info
    • Info & Contact
    • Customer Login
    • Terms of Service
    • Terms of Sale
    • Privacy Policy
    © 2005-2025 proconX Pty Ltd. All rights reserved. proconX and FieldTalk are trademarks of proconX Pty Ltd.
    All other trademarks and registered trademarks appearing on www.modbusdriver.com are the property of their respective owners.