Usage

To use modpypes in a project:

import modpypes

Protocol Data Units

class modpypes.pdu.BigEndianDoubleInt[source]

This class packs and unpacks a pair of registers as a bit endian 32-bit signed integer.

class modpypes.pdu.BigEndianString(registerLength=6)[source]

This class packs and unpacks a list of registers as a null terminated string.

class modpypes.pdu.BigEndianUnsignedDoubleInt[source]

This class packs and unpacks a pair of registers as a bit endian 32-bit unsigned integer.

class modpypes.pdu.Byte[source]

This class packs and unpacks a register as an unsigned octet.

class modpypes.pdu.DoubleInt[source]

This class packs and unpacks a pair of registers as a 32-bit signed integer.

class modpypes.pdu.ExceptionResponse(function=None, exceptionCode=None, **kwargs)[source]

Exception Response

class modpypes.pdu.Int[source]

This class packs and unpacks a register as a 16-bit signed integer.

class modpypes.pdu.MPCI(*args, **kwargs)[source]

This class contains the MODBUS protocol control information which is the 8 octet header at the front of all MODBUS PDUs.

decode(pdu)[source]

Decode the contents of the PDU.

encode(pdu)[source]

Encode the contents into the PDU.

class modpypes.pdu.MPDU(*args, **kwargs)[source]

This class is a generic MODBUS PDU. It inherits the MPCI layer and the more generic PDU data functions.

class modpypes.pdu.ReadBitsRequestBase(address, count, **kwargs)[source]

Base class for messages requesting bit values. This is inherited by both ReadCoilsRequest and ReadDiscreteInputsRequest.

class modpypes.pdu.ReadBitsResponseBase(values=None, **kwargs)[source]

Base class for messages that are responses to reading bit values. This is inherited by both ReadCoilsResponse and ReadDiscreteInputsResponse.

class modpypes.pdu.ReadCoilsRequest(address=None, count=None, **kwargs)[source]

Read Coils Request

class modpypes.pdu.ReadCoilsResponse(values=None, **kwargs)[source]

Read Coils Response

class modpypes.pdu.ReadDiscreteInputsRequest(address=None, count=None, **kwargs)[source]

Read Discrete Inputs Request

class modpypes.pdu.ReadDiscreteInputsResponse(values=None, **kwargs)[source]

Read Discrete Inputs Response

class modpypes.pdu.ReadInputRegistersRequest(address=None, count=None, **kwargs)[source]

Read Input Registers Request

class modpypes.pdu.ReadInputRegistersResponse(values=None, **kwargs)[source]

Read Input Registers Response

class modpypes.pdu.ReadMultipleRegistersRequest(address=None, count=None, **kwargs)[source]

Read Multiple Registers Request

class modpypes.pdu.ReadMultipleRegistersResponse(values=None, **kwargs)[source]

Read Multiple Registers Response

class modpypes.pdu.ReadRegistersRequestBase(address=None, count=None, **kwargs)[source]

Base class for messages requesting register values. This is inherited by both ReadMultipleRegistersRequest and ReadInputRegistersRequest.

class modpypes.pdu.ReadRegistersResponseBase(values=None, **kwargs)[source]

Base class for messages requesting register values. This is inherited by both ReadMultipleRegistersResponse and ReadInputRegistersResponse.

class modpypes.pdu.ReadWriteMultipleRegistersRequest(raddress=None, rcount=None, waddress=None, wcount=None, registers=None, **kwargs)[source]

Read Write Multiple Registers Request

class modpypes.pdu.ReadWriteMultipleRegistersResponse(registers=None, **kwargs)[source]

Read Write Multiple Registers Response

class modpypes.pdu.ReadWriteValueBase(address=None, value=None, **kwargs)[source]

Base class for messages reading and writing values. This class is inherted by WriteSingleCoilRequest, WriteSingleCoilResponse, WriteSingleRegisterRequest, and WriteSingleRegisterResponse.

class modpypes.pdu.String(registerLength=6)[source]

This class packs and unpacks a list of registers as a null terminated string.

class modpypes.pdu.UnsignedDoubleInt[source]

This class packs and unpacks a pair of registers as a 32-bit unsigned integer.

class modpypes.pdu.UnsignedInt[source]

This class packs and unpacks a register as a 16-bit unsigned integer.

class modpypes.pdu.WriteMultipleCoilsRequest(address=None, count=None, coils=None, **kwargs)[source]

Write Multiple Coils Request

class modpypes.pdu.WriteMultipleCoilsResponse(address=None, count=None, **kwargs)[source]

Write Multiple Coils Response

class modpypes.pdu.WriteMultipleRegistersRequest(address=None, count=None, registers=None, **kwargs)[source]

Write Multiple Registers Request

class modpypes.pdu.WriteMultipleRegistersResponse(address=None, count=None, **kwargs)[source]

Write Multiple Registers Response

class modpypes.pdu.WriteSingleCoilRequest(address=None, value=None, **kwargs)[source]

Write Single Coil Request

class modpypes.pdu.WriteSingleCoilResponse(address=None, value=None, **kwargs)[source]

Write Single Coil Response

class modpypes.pdu.WriteSingleRegisterRequest(address=None, value=None, **kwargs)[source]

Write Single Register Request

class modpypes.pdu.WriteSingleRegisterResponse(address=None, value=None, **kwargs)[source]

Write Single Register Response

Application

class modpypes.app.ModbusClient(**kwargs)[source]

This class simplifies building MODBUS client applications. All of the PDUs are MODBUS.

confirmation(pdu)[source]

Got a response from the server.

indication(req)[source]

Got a request from the application.

exception modpypes.app.ModbusException(errCode, *args)[source]

Helper class for exceptions.

class modpypes.app.ModbusServiceAccessPoint(port=502, sapID=None)[source]

A service access point so applications can be both a client and a server.

confirmation(pdu)[source]

Got some data from the server.

indication(pdu)[source]

Got some data from a client.

sap_confirmation(resp)[source]

Got a response from the ASE.

sap_indication(req)[source]

Got a request from the ASE.

modpypes.app.stream_to_packet(data)[source]

Chop a stream of data into MODBUS packets.

Parameters:data – stream of data
Returns:a tuple of the data that is a packet with the remaining data, or None

Client

This executable module is a console application for generating read and write MODBUS PDUs.

class modpypes.client.ConsoleClient[source]

Console Client

confirmation(pdu)[source]

Prints out the contents of the response from the device.

do_read(args)[source]

read <addr> <unitID> <register> [ <count> ]

Parameters:
  • addr – IP address of the MODBUS/TCP device or gateway
  • unitID – unit identifier
  • register – register in 5-digit or 6-digit format
  • count – number of registers to read, defaults to one

This command generates a ReadCoilsRequest, ReadDiscreteInputsRequest or ReadMultipleRegistersRequest depending on the address prefix; 1, 5, or 6.