Ejemplo n.º 1
0
    def __init__(self,
                 ser_port,
                 ser_baud,
                 ser_bytesize,
                 ser_parity,
                 ser_stopbits,
                 interchar_multiplier=1.5,
                 interframe_multiplier=3.5,
                 t0=None):
        """Constructor. Pass the pyserial.Serial object"""
        self._serial = serial.Serial(port=ser_port,
                                     baudrate=ser_baud,
                                     bytesize=ser_bytesize,
                                     parity=ser_parity,
                                     stopbits=ser_stopbits)
        self.use_sw_timeout = False
        LOGGER.info("RtuMaster %s is %s", self._serial.name,
                    "opened" if self._serial.is_open else "closed")
        super(RtuMaster, self).__init__(self._serial.timeout)

        if t0:
            self._t0 = t0
        else:
            self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
        self._serial.inter_byte_timeout = interchar_multiplier * self._t0
        self.set_timeout(interframe_multiplier * self._t0)

        # For some RS-485 adapters, the sent data(echo data) appears before modbus response.
        # So read  echo data and discard it.  By [email protected]
        self.handle_local_echo = False
Ejemplo n.º 2
0
    def __init__(self,
                 serial,
                 databank=None,
                 error_on_missing_slave=True,
                 **kwargs):
        """
        Constructor: initializes the server settings
        serial: a pyserial object
        databank: the data to access
        interframe_multiplier: 3.5 by default
        interchar_multiplier: 1.5 by default
        """
        interframe_multiplier = kwargs.pop('interframe_multiplier', 3.5)
        interchar_multiplier = kwargs.pop('interchar_multiplier', 1.5)

        databank = databank if databank else Databank(
            error_on_missing_slave=error_on_missing_slave)
        super(RtuServer, self).__init__(databank)

        self._serial = serial
        LOGGER.info("RtuServer %s is %s", self._serial.name,
                    "opened" if self._serial.is_open else "closed")

        self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
        self._serial.inter_byte_timeout = interchar_multiplier * self._t0
        self.set_timeout(interframe_multiplier * self._t0)
Ejemplo n.º 3
0
 def __init__(self, serial, interchar_multiplier=1.5, interframe_multiplier=3.5):
     """Constructor. Pass the pyserial.Serial object"""
     self._serial = serial
     LOGGER.info("RtuMaster %s is %s", self._serial.portstr, "opened" if self._serial.isOpen() else "closed")
     super(RtuMaster, self).__init__(self._serial.timeout)
     self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
     self._serial.interCharTimeout = interchar_multiplier * self._t0
     self.set_timeout(interframe_multiplier * self._t0)
Ejemplo n.º 4
0
 def __init__(self, serial, interchar_multiplier=1.5, interframe_multiplier=3.5):
     """Constructor. Pass the pyserial.Serial object"""
     self._serial = serial
     LOGGER.info("RtuMaster %s is %s", self._serial.portstr, "opened" if self._serial.isOpen() else "closed")
     super(RtuMaster, self).__init__(self._serial.timeout)
     self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
     self._serial.interCharTimeout = interchar_multiplier * self._t0
     self.set_timeout(interframe_multiplier * self._t0)
Ejemplo n.º 5
0
 def __init__(self, serial, databank=None):
     self._serial = serial
     modbus.Server.__init__(self, databank if databank else ModbusDatabank())
     LOGGER.info('RtuServer alt %s is %s' % (self._serial.portstr,
                                             'opened' if self._serial.isOpen() else 'closed'))
     self._t0 = calculate_rtu_inter_char(self._serial.baudrate)
     self._serial.interCharTimeout = 1.5 * self._t0
     self._serial.timeout = 10*self._t0
     LOGGER.info('interchar timeout = %f' % (self._serial.interCharTimeout,))
     LOGGER.info('timeout = %f' % (self._serial.timeout,))
Ejemplo n.º 6
0
    def __init__(self, serial, interchar_multiplier=1.5, interframe_multiplier=3.5, t0=None):
        """Constructor. Pass the pyserial.Serial object"""
        self._serial = serial
        self.use_sw_timeout = False
        LOGGER.info("RtuMaster %s is %s", self._serial.name, "opened" if self._serial.is_open else "closed")
        super(RtuMaster, self).__init__(self._serial.timeout)

        if t0:
            self._t0 = t0
        else:
            self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
        self._serial.inter_byte_timeout = interchar_multiplier * self._t0
        self.set_timeout(interframe_multiplier * self._t0)

        # For some RS-485 adapters, the sent data(echo data) appears before modbus response.
        # So read  echo data and discard it.  By [email protected]
        self.handle_local_echo = False
Ejemplo n.º 7
0
    def __init__(self, serial, databank=None, **kwargs):
        """
        Constructor: initializes the server settings
        serial: a pyserial object
        databank: the data to access
        interframe_multiplier: 3.5 by default
        interchar_multiplier: 1.5 by default
        """
        interframe_multiplier = kwargs.pop('interframe_multiplier', 3.5)
        interchar_multiplier = kwargs.pop('interchar_multiplier', 1.5)

        super(RtuServer, self).__init__(databank if databank else Databank())

        self._serial = serial
        LOGGER.info("RtuServer %s is %s", self._serial.portstr, "opened" if self._serial.isOpen() else "closed")

        self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
        self._serial.interCharTimeout = interchar_multiplier * self._t0
        self.set_timeout(interframe_multiplier * self._t0)
Ejemplo n.º 8
0
    def __init__(self, serial, databank=None, **kwargs):
        """
        Constructor: initializes the server settings
        serial: a pyserial object
        databank: the data to access
        interframe_multiplier: 3.5 by default
        interchar_multiplier: 1.5 by default
        """
        interframe_multiplier = kwargs.pop('interframe_multiplier', 3.5)
        interchar_multiplier = kwargs.pop('interchar_multiplier', 1.5)

        super(RtuServer, self).__init__(databank if databank else Databank())

        self._serial = serial
        LOGGER.info("RtuServer %s is %s", self._serial.portstr,
                    "opened" if self._serial.isOpen() else "closed")

        self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
        self._serial.interCharTimeout = self.interchar_multiplier * self._t0
        self.set_timeout(self.interframe_multiplier * self._t0)
Ejemplo n.º 9
0
    def __init__(self, serial, databank=None, error_on_missing_slave=True, **kwargs):
        """
        Constructor: initializes the server settings
        serial: a pyserial object
        databank: the data to access
        interframe_multiplier: 3.5 by default
        interchar_multiplier: 1.5 by default
        """
        interframe_multiplier = kwargs.pop('interframe_multiplier', 3.5)
        interchar_multiplier = kwargs.pop('interchar_multiplier', 1.5)

        databank = databank if databank else Databank(error_on_missing_slave=error_on_missing_slave)
        super(RtuServer, self).__init__(databank)

        self._serial = serial
        LOGGER.info("RtuServer %s is %s", self._serial.name, "opened" if self._serial.is_open else "closed")

        self._t0 = utils.calculate_rtu_inter_char(self._serial.baudrate)
        self._serial.inter_byte_timeout = interchar_multiplier * self._t0
        self.set_timeout(interframe_multiplier * self._t0)

        self._block_on_first_byte = False