code: def read_long(self, registeraddress, functioncode=3, signed=False):
          
          _checkFunctioncode(functioncode, [3, 4])
          _checkBool(signed, description='signed')
          return self._genericCommand(functioncode, registeraddress, numberOfRegisters=2, signed=signed, payloadformat='long')
docs: Read a long integer (32 bits) from the slave.
  
          Long integers (32 bits = 4 bytes) are stored in two consecutive 16-bit registers in the slave.
  
          Args:
              * registeraddress (int): The slave register start address (use decimal numbers, not hex).
              * functioncode (int): Modbus function code. Can be 3 or 4.
              * signed (bool): Whether the data should be interpreted as unsigned or signed.
  
          ============== ================== ================ ==========================
          ``signed``     Data type in slave Alternative name Range
          ============== ================== ================ ==========================
          :const:`False` Unsigned INT32     Unsigned long    0 to 4294967295
          :const:`True`  INT32              Long             -2147483648 to 2147483647
          ============== ================== ================ ==========================
  
          Returns:
              The numerical value (int).
  
          Raises:
              ValueError, TypeError, IOError