Interfacing with instruments using pyvisa
Your code so far looks pretty good - well structured, useful docstrings, well done! You mention exceptions; the one occasion you use it seems fine to me.



Per the style guide, e.g. visaName should be visa_name. Also, rather than commenting pyvisa -- a pyvisa object for the connection, avoid using., it is conventional to prepend the names of attributes that shouldn't be used externally with a single underscore: _pyvisa.



Rather than including @author in your docstring, you could use one of Python's special module attributes:

__author__ = 'Jack Barraclough'




get methods aren't very Pythonic. Instead, I would suggest you use properties, for example:

@property
def R(self):
    """Get R value from the instrument, returns a float"""
    self.write('MAG.')
    return float(self.read())


Now, rather than instrument.get_R(), you can type simply instrument.R.

Going further, there is a lot of duplication - every single one calls self.write then returns the value from self.read. You could factor this out entirely:

class Instrument:

    PROPERTIES = {'R': 'MAG.', ...}

    def __getattr__(self, attr):
        if attr in self.PROPERTIES:
            return self._get(self.PROPERTIES[attr])
        msg = "{!r} object has no attribute {!r}"
        raise AttributeError(msg.format(self.__class__.__name__, attr))

    def __setattr__(self, attr, val):
        if attr in self.PROPERTIES:
            raise AttributeError("can't set attribute")
        return super().__setattr__(attr)

    def _get(self, value):
        self.write(value)
        return float(self.read())




I admit I don't know much about pyvisa, but one option to ensure the resource is released would be to make your class a context manager type. Then a user could do e.g. 

with Instrument(whatever) as inst:
    ...


and be certain that everything was dealt with on __exit__.