server.sync
— Twisted Synchronous Modbus Server¶
API Documentation¶
Implementation of a Threaded Modbus Server¶
-
class
pymodbus.server.sync.
ModbusBaseRequestHandler
(request, client_address, server)¶ Implements the modbus server protocol
This uses the socketserver.BaseRequestHandler to implement the client handler.
-
execute
(request)¶ The callback to call with the resulting message
Parameters: request – The decoded request message
-
finish
()¶ Callback for when a client disconnects
-
handle
()¶ Callback when we receive any data
-
send
(message)¶ Send a request (string) to the network
Parameters: message – The unencoded modbus response
-
setup
()¶ Callback for when a client connects
-
-
class
pymodbus.server.sync.
ModbusSingleRequestHandler
(request, client_address, server)¶ Implements the modbus server protocol
This uses the socketserver.BaseRequestHandler to implement the client handler for a single client(serial clients)
-
handle
()¶ Callback when we receive any data
-
send
(message)¶ Send a request (string) to the network
Parameters: message – The unencoded modbus response
-
-
class
pymodbus.server.sync.
ModbusConnectedRequestHandler
(request, client_address, server)¶ Implements the modbus server protocol
This uses the socketserver.BaseRequestHandler to implement the client handler for a connected protocol (TCP).
-
handle
()¶ Callback when we receive any data, until self.running becomes not True. Blocks indefinitely awaiting data. If shutdown is required, then the global socket.settimeout(<seconds>) may be used, to allow timely checking of self.running. However, since this also affects socket connects, if there are outgoing socket connections used in the same program, then these will be prevented, if the specfied timeout is too short. Hence, this is unreliable.
To respond to Modbus...Server.server_close() (which clears each handler’s self.running), derive from this class to provide an alternative handler that awakens from time to time when no input is available and checks self.running. Use Modbus...Server( handler=... ) keyword to supply the alternative request handler class.
-
send
(message)¶ Send a request (string) to the network
Parameters: message – The unencoded modbus response
-
-
class
pymodbus.server.sync.
ModbusDisconnectedRequestHandler
(request, client_address, server)¶ Implements the modbus server protocol
This uses the socketserver.BaseRequestHandler to implement the client handler for a disconnected protocol (UDP). The only difference is that we have to specify who to send the resulting packet data to.
-
handle
()¶ Callback when we receive any data
-
send
(message)¶ Send a request (string) to the network
Parameters: message – The unencoded modbus response
-
-
class
pymodbus.server.sync.
ModbusTcpServer
(context, framer=None, identity=None, address=None, handler=None, **kwargs)¶ A modbus threaded tcp socket server
We inherit and overload the socket server so that we can control the client threads as well as have a single server context instance.
-
__init__
(context, framer=None, identity=None, address=None, handler=None, **kwargs)¶ Overloaded initializer for the socket server
If the identify structure is not passed in, the ModbusControlBlock uses its own empty structure.
Parameters: - context – The ModbusServerContext datastore
- framer – The framer strategy to use
- identity – An optional identify structure
- address – An optional (interface, port) to bind to.
- handler – A handler for each client session; default is ModbusConnectedRequestHandler
- ignore_missing_slaves – True to not send errors on a request to a missing slave
-
process_request
(request, client)¶ Callback for connecting a new client thread
Parameters: - request – The request to handle
- client – The address of the client
-
server_close
()¶ Callback for stopping the running server
-
shutdown
()¶ Stops the serve_forever loop.
Overridden to signal handlers to stop.
-
-
class
pymodbus.server.sync.
ModbusUdpServer
(context, framer=None, identity=None, address=None, handler=None, **kwargs)¶ A modbus threaded udp socket server
We inherit and overload the socket server so that we can control the client threads as well as have a single server context instance.
-
__init__
(context, framer=None, identity=None, address=None, handler=None, **kwargs)¶ Overloaded initializer for the socket server
If the identify structure is not passed in, the ModbusControlBlock uses its own empty structure.
Parameters: - context – The ModbusServerContext datastore
- framer – The framer strategy to use
- identity – An optional identify structure
- address – An optional (interface, port) to bind to.
- handler – A handler for each client session; default is ModbusDisonnectedRequestHandler
- ignore_missing_slaves – True to not send errors on a request to a missing slave
-
process_request
(request, client)¶ Callback for connecting a new client thread
Parameters: - request – The request to handle
- client – The address of the client
-
server_close
()¶ Callback for stopping the running server
-
-
class
pymodbus.server.sync.
ModbusSerialServer
(context, framer=None, identity=None, **kwargs)¶ A modbus threaded serial socket server
We inherit and overload the socket server so that we can control the client threads as well as have a single server context instance.
-
__init__
(context, framer=None, identity=None, **kwargs)¶ Overloaded initializer for the socket server
If the identify structure is not passed in, the ModbusControlBlock uses its own empty structure.
Parameters: - context – The ModbusServerContext datastore
- framer – The framer strategy to use
- identity – An optional identify structure
- port – The serial port to attach to
- stopbits – The number of stop bits to use
- bytesize – The bytesize of the serial messages
- parity – Which kind of parity to use
- baudrate – The baud rate to use for the serial device
- timeout – The timeout to use for the serial device
- ignore_missing_slaves – True to not send errors on a request to a missing slave
-
_build_handler
()¶ - A helper method to create and monkeypatch
- a serial handler.
Returns: A patched handler
-
_connect
()¶ Connect to the serial server
Returns: True if connection succeeded, False otherwise
-
serve_forever
()¶ Callback for connecting a new client thread
Parameters: - request – The request to handle
- client – The address of the client
-
server_close
()¶ Callback for stopping the running server
-
-
pymodbus.server.sync.
StartTcpServer
(context=None, identity=None, address=None, **kwargs)¶ A factory to start and run a tcp modbus server
Parameters: - context – The ModbusServerContext datastore
- identity – An optional identify structure
- address – An optional (interface, port) to bind to.
- ignore_missing_slaves – True to not send errors on a request to a missing slave
-
pymodbus.server.sync.
StartUdpServer
(context=None, identity=None, address=None, **kwargs)¶ A factory to start and run a udp modbus server
Parameters: - context – The ModbusServerContext datastore
- identity – An optional identify structure
- address – An optional (interface, port) to bind to.
- framer – The framer to operate with (default ModbusSocketFramer)
- ignore_missing_slaves – True to not send errors on a request to a missing slave
-
pymodbus.server.sync.
StartSerialServer
(context=None, identity=None, **kwargs)¶ A factory to start and run a serial modbus server
Parameters: - context – The ModbusServerContext datastore
- identity – An optional identify structure
- framer – The framer to operate with (default ModbusAsciiFramer)
- port – The serial port to attach to
- stopbits – The number of stop bits to use
- bytesize – The bytesize of the serial messages
- parity – Which kind of parity to use
- baudrate – The baud rate to use for the serial device
- timeout – The timeout to use for the serial device
- ignore_missing_slaves – True to not send errors on a request to a missing slave