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
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)
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)
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,))
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
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)
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)
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