Module pyModbusTCP.server¶
pyModbusTCP Server
This module provide the class for the modbus server, it’s data handler interface and finally the data bank.
class ModbusServer¶
-
class
pyModbusTCP.server.
ModbusServer
(host='localhost', port=502, no_block=False, ipv6=False, data_bank=None, data_hdl=None, ext_engine=None)¶ Modbus TCP server
-
__init__
(host='localhost', port=502, no_block=False, ipv6=False, data_bank=None, data_hdl=None, ext_engine=None)¶ Constructor
Modbus server constructor.
Parameters: - host (str) – hostname or IPv4/IPv6 address server address (default is ‘localhost’)
- port (int) – TCP port number (default is 502)
- no_block (bool) – no block mode, i.e. start() will return (default is False)
- ipv6 (bool) – use ipv6 stack (default is False)
- data_bank (DataBank) – instance of custom data bank, if you don’t want the default one (optional)
- data_hdl (DataHandler) – instance of custom data handler, if you don’t want the default one (optional)
- ext_engine (callable) – an external engine reference (ref to ext_engine(session_data)) (optional)
-
class
ClientInfo
(address='', port=0)¶ Container class for client information
-
exception
DataFormatError
¶ Exception raise by ModbusServer for data format errors.
-
exception
Error
¶ Base exception for ModbusServer related errors.
-
class
MBAP
(transaction_id=0, protocol_id=0, length=0, unit_id=0)¶ MBAP (Modbus Application Protocol) container class.
-
class
ModbusService
(request, client_address, server)¶
-
exception
NetworkError
¶ Exception raise by ModbusServer on I/O errors.
-
class
PDU
(raw=b'')¶ PDU (Protocol Data Unit) container class.
-
class
ServerInfo
¶ Container class for server information
-
class
SessionData
¶ Container class for server session data.
-
is_run
¶ Return True if server running.
-
start
()¶ Start the server.
This function will block (or not if no_block flag is set).
-
stop
()¶ Stop the server.
-
class DataHandler¶
-
class
pyModbusTCP.server.
DataHandler
(data_bank=None)¶ Default data handler for ModbusServer, map server threads calls to DataBank.
Custom handler must derive from this class.
-
__init__
(data_bank=None)¶ Constructor
Modbus server data handler constructor.
Parameters: data_bank (DataBank) – a reference to custom DefaultDataBank
-
read_coils
(address, count, srv_info)¶ Call by server for reading in coils space
Parameters: - address (int) – start address
- count (int) – number of coils
- srv_info (ModbusServer.ServerInfo) – some server info
Return type: Return
-
read_d_inputs
(address, count, srv_info)¶ Call by server for reading in the discrete inputs space
Parameters: - address (int) – start address
- count (int) – number of discrete inputs
- srv_info (ModbusServer.ServerInfo) – some server info
Return type: Return
-
read_h_regs
(address, count, srv_info)¶ Call by server for reading in the holding registers space
Parameters: - address (int) – start address
- count (int) – number of holding registers
- srv_info (ModbusServer.ServerInfo) – some server info
Return type: Return
-
read_i_regs
(address, count, srv_info)¶ Call by server for reading in the input registers space
Parameters: - address (int) – start address
- count (int) – number of input registers
- srv_info (ModbusServer.ServerInfo) – some server info
Return type: Return
-
write_coils
(address, bits_l, srv_info)¶ Call by server for writing in the coils space
Parameters: - address (int) – start address
- bits_l (list) – list of boolean to write
- srv_info (ModbusServer.ServerInfo) – some server info
Return type: Return
-
write_h_regs
(address, words_l, srv_info)¶ Call by server for writing in the holding registers space
Parameters: - address (int) – start address
- words_l (list) – list of word value to write
- srv_info (ModbusServer.ServerInfo) – some server info
Return type: Return
-
class DataBank¶
-
class
pyModbusTCP.server.
DataBank
(coils_size=65536, coils_default_value=False, d_inputs_size=65536, d_inputs_default_value=False, h_regs_size=65536, h_regs_default_value=0, i_regs_size=65536, i_regs_default_value=0, virtual_mode=False)¶ Data space class with thread safe access functions
-
__init__
(coils_size=65536, coils_default_value=False, d_inputs_size=65536, d_inputs_default_value=False, h_regs_size=65536, h_regs_default_value=0, i_regs_size=65536, i_regs_default_value=0, virtual_mode=False)¶ Constructor
Modbus server data bank constructor.
Parameters: - coils_size (int) – Number of coils to allocate (default is 65536)
- coils_default_value (bool) – Coils default value at startup (default is False)
- d_inputs_size (int) – Number of discrete inputs to allocate (default is 65536)
- d_inputs_default_value (bool) – Discrete inputs default value at startup (default is False)
- h_regs_size (int) – Number of holding registers to allocate (default is 65536)
- h_regs_default_value (int) – Holding registers default value at startup (default is 0)
- i_regs_size (int) – Number of input registers to allocate (default is 65536)
- i_regs_default_value (int) – Input registers default value at startup (default is 0)
- virtual_mode (bool) – Disallow all modbus data space to work with virtual values (default is False)
-
get_coils
(address, number=1, srv_info=None)¶ Read data on server coils space
Parameters: - address (int) – start address
- number (int) – number of bits (optional)
- srv_info (ModbusServer.ServerInfo) – some server info (must be set by server only)
Returns: list of bool or None if error
Return type: list or None
-
get_discrete_inputs
(address, number=1, srv_info=None)¶ Read data on server discrete inputs space
Parameters: - address (int) – start address
- number (int) – number of bits (optional)
- srv_info (ModbusServerInfo) – some server info (must be set by server only)
Returns: list of bool or None if error
Return type: list or None
-
get_holding_registers
(address, number=1, srv_info=None)¶ Read data on server holding registers space
Parameters: - address (int) – start address
- number (int) – number of words (optional)
- srv_info (ModbusServerInfo) – some server info (must be set by server only)
Returns: list of int or None if error
Return type: list or None
-
get_input_registers
(address, number=1, srv_info=None)¶ Read data on server input registers space
Parameters: - address (int) – start address
- number (int) – number of words (optional)
- srv_info (ModbusServerInfo) – some server info (must be set by server only)
Returns: list of int or None if error
Return type: list or None
-
on_coils_change
(address, from_value, to_value, srv_info)¶ Call by server when a value change occur in coils space
This method is provided to be overridden with user code to catch changes
Parameters: - address (int) – address of coil
- from_value (bool) – coil original value
- to_value (bool) – coil next value
- srv_info (ModbusServerInfo) – some server info
-
on_holding_registers_change
(address, from_value, to_value, srv_info)¶ Call by server when a value change occur in holding registers space
This method is provided to be overridden with user code to catch changes
Parameters: - address (int) – address of register
- from_value (int) – register original value
- to_value (int) – register next value
- srv_info (ModbusServerInfo) – some server info
-
set_coils
(address, bit_list, srv_info=None)¶ Write data to server coils space
Parameters: - address (int) – start address
- bit_list (list) – a list of bool to write
- srv_info (ModbusServerInfo) – some server info (must be set by server only)
Returns: True if success or None if error
Return type: bool or None
Raises: ValueError – if bit_list members cannot be converted to bool
-
set_discrete_inputs
(address, bit_list)¶ Write data to server discrete inputs space
Parameters: - address (int) – start address
- bit_list (list) – a list of bool to write
Returns: True if success or None if error
Return type: bool or None
Raises: ValueError – if bit_list members cannot be converted to bool
-
set_holding_registers
(address, word_list, srv_info=None)¶ Write data to server holding registers space
Parameters: - address (int) – start address
- word_list (list) – a list of word to write
- srv_info (ModbusServerInfo) – some server info (must be set by server only)
Returns: True if success or None if error
Return type: bool or None
Raises: ValueError – if word_list members cannot be converted to int
-
set_input_registers
(address, word_list)¶ Write data to server input registers space
Parameters: - address (int) – start address
- word_list (list) – a list of word to write
Returns: True if success or None if error
Return type: bool or None
Raises: ValueError – if word_list members cannot be converted to int
-