biologic: Driver for BioLogic potentiostats
This driver is a wrapper around BioLogic’s kbio package.
Note
This driver is Windows-only.
Driver Configuration
The biologic driver requires the following settings in the
Settings file:
[drivers.biologic.dllpath]pointing to the folder of the EC-Lib Development library;
Supported method parameters:
General parameters
Parameter |
Type |
Meaning |
|---|---|---|
|
|
see below |
|
|
total runtime of the method, in |
|
|
maximum current available to the method |
|
|
voltage range used by the method |
|
|
delay between datapoints, in |
|
|
is the setpoint a delta ( |
Technique limits
Parameter |
Type |
Meaning |
|---|---|---|
|
|
maximum allowed current, can be a C-rate |
|
|
minimum allowed current, can be a C-rate |
|
|
maximum allowed voltage |
|
|
minimum allowed voltage |
|
|
abort when limit reached ( |
Controlled current and voltage techniques
Parameter |
Type |
Meaning |
|---|---|---|
|
|
current setpoint, can be a C-rate, in |
|
|
maximum spacing between datapoints, in |
|
|
voltage setpoint, in |
|
|
maximum spacing between datapoints, in |
|
|
sweep rate of setpoint, in |
Loop parameters
Parameter |
Type |
Meaning |
|---|---|---|
|
|
number of jumps - |
|
|
zero-indexed index of the method to jump to |
Supported techniques:
open_circuit_voltage: Measure the OCV of the cell. Supports the following parameters:timerecord_every_dtandrecord_every_dEI_rangeandE_range
constant_current: Run a cell in CC mode - chronopotentiometry. Supports the following parameters:timecurrentandis_deltarecord_every_dtandrecord_every_dEall of the Technique limits.
constant_voltage: Run a cell in CV mode - chronoamperometry. Supports the following parameters:timevoltageandis_deltarecord_every_dtandrecord_every_dIall of the Technique limits.
sweep_current: Run a cell in LSC mode - linear sweep of current. Supports the following parameters:timecurrent,scan_rateandis_deltarecord_every_dtandrecord_every_dEall of the Technique limits.
sweep_voltage: Run a cell in LSV mode - linear sweep of voltage. Supports the following parameters:timevoltage,scan_rateandis_deltarecord_every_dtandrecord_every_dIall of the Technique limits.
loop: Arbitrary loop of techniques. Supports the following parameters:n_gotosandgoto
Code author: Peter Kraus Graham Kimbell
Subpackages
- tomato.drivers.biologic.kbio package
- Submodules
c_dump()c_bufferPODKBIO_apiKBIO_api.GetLibVersion()KBIO_api.Connect()KBIO_api.USB_DeviceInfo()KBIO_api.TestConnection()KBIO_api.TestComSpeed()KBIO_api.Disconnect()KBIO_api.PluggedChannels()KBIO_api.channel_map()KBIO_api.GetChannelInfo()KBIO_api.LoadFirmware()KBIO_api.GetHardwareConf()KBIO_api.SetHardwareConf()KBIO_api.OptionError()KBIO_api.GetMessage()KBIO_api.GetErrorMsg()KBIO_api.DefineParameter()KBIO_api.DefineBoolParameter()KBIO_api.DefineSglParameter()KBIO_api.DefineIntParameter()KBIO_api.UpdateParameters()KBIO_api.GetTechniqueInfos()KBIO_api.GetParamInfos()KBIO_api.LoadTechnique()KBIO_api.StartChannel()KBIO_api.StopChannel()KBIO_api.StartChannels()KBIO_api.StopChannels()KBIO_api.GetCurrentValues()KBIO_api.GetData()KBIO_api.ConvertNumericIntoSingle()KBIO_api.FindEChemDev()KBIO_api.FindEChemEthDev()KBIO_api.FindEChemUsbDev()KBIO_api.SetEthernetConfig()KBIO_api.DeviceInfoKBIO_api.ChannelInfoKBIO_api.HardwareConfKBIO_api.BL_ErrorKBIO_api.ErrorKBIO_api.FindErrorKBIO_api.ecl_apiKBIO_api.blfind_apiKBIO_api.bind_function()
ECC_parmmake_ecc_parm()make_ecc_parms()print_experiment_data()ChannelsArrayResultsArrayDataBufferUSB_deviceEthernet_deviceDEVICEDEVICE.VMPDEVICE.VMP2DEVICE.MPGDEVICE.BISTATDEVICE.MCS_200DEVICE.VMP3DEVICE.VSPDEVICE.HCP803DEVICE.EPP400DEVICE.EPP4000DEVICE.BISTAT2DEVICE.FCT150SDEVICE.VMP300DEVICE.SP50DEVICE.SP150DEVICE.FCT50SDEVICE.SP300DEVICE.CLB500DEVICE.HCP1005DEVICE.CLB2000DEVICE.VSP300DEVICE.SP200DEVICE.MPG2DEVICE.SP100DEVICE.MOSLEDDEVICE.KINEXXXDEVICE.BCS815DEVICE.SP240DEVICE.MPG205DEVICE.MPG210DEVICE.MPG220DEVICE.MPG240DEVICE.BP300DEVICE.VMP3EDEVICE.VSP3EDEVICE.SP50EDEVICE.SP150EDEVICE.UNKNOWN
DeviceInfoDEVICE_INFOCHANNEL_BOARDCHANNEL_BOARD.C340_IF0CHANNEL_BOARD.C340_IF2_ZCHANNEL_BOARD.C340_OTHERSCHANNEL_BOARD.C340_IF2_NONZCHANNEL_BOARD.C340_IF3_ZCHANNEL_BOARD.C340_IF3_NONZCHANNEL_BOARD.C340_IF3_ZZCHANNEL_BOARD.C340_IF3_NZZCHANNEL_BOARD.C340_SP50CHANNEL_BOARD.C340_SP150ZCHANNEL_BOARD.C340_SP150NZCHANNEL_BOARD.C437_ZCHANNEL_BOARD.C437_NZCHANNEL_BOARD.C437_SP150ZCHANNEL_BOARD.C437_SP150NZCHANNEL_BOARD.C437_MPG2CHANNEL_BOARD.C437_MPG2ZCHANNEL_BOARD.C437_MPGXCHANNEL_BOARD.C437_MPGXZCHANNEL_BOARD.C437_VMP3EZCHANNEL_BOARD.C437_VMP3ENZ
ChannelInfoChannelInfo.AmpCodeChannelInfo.BoardSerialNumberChannelInfo.BoardVersionChannelInfo.ChannelChannelInfo.FirmwareCodeChannelInfo.FirmwareVersionChannelInfo.GPRAboardChannelInfo.LcboardChannelInfo.MUXboardChannelInfo.MaxBandwidthChannelInfo.MaxIRangeChannelInfo.MemFilledChannelInfo.MemSizeChannelInfo.MinIRangeChannelInfo.NbAmpsChannelInfo.NbOfTechniquesChannelInfo.StateChannelInfo.XilinxVersionChannelInfo.Zboard
CH_INFOHardwareConfHW_CONFHW_CNXHW_MODEOPTION_ERROROPTION_ERROR.NO_ERROROPTION_ERROR.OPT_CHANGEOPTION_ERROR.OPEN_INOPTION_ERROR.IRCMP_OVROPTION_ERROR.OPT_4AOPTION_ERROR.OPT_4A_OVRTEMPOPTION_ERROR.OPT_4A_BADPOWOPTION_ERROR.OPT_4A_POWFAILOPTION_ERROR.OPT_48VOPTION_ERROR.OPT_48V_OVRTEMPOPTION_ERROR.OPT_48V_BADPOWOPTION_ERROR.OPT_48V_POWFAILOPTION_ERROR.OPT_10A5V_ERROPTION_ERROR.OPT_10A5V_OVRTEMPOPTION_ERROR.OPT_10A5V_BADPOWOPTION_ERROR.OPT_10A5V_POWFAIL
FIRMWARECurrentValuesCurrentValues.EceCurrentValues.EceRangeMaxCurrentValues.EceRangeMinCurrentValues.ElapsedTimeCurrentValues.EoverflowCurrentValues.EweCurrentValues.EweRangeMaxCurrentValues.EweRangeMinCurrentValues.FreqCurrentValues.ICurrentValues.IRangeCurrentValues.IoverflowCurrentValues.MemFilledCurrentValues.OptErrCurrentValues.OptPosCurrentValues.RcompCurrentValues.SaturationCurrentValues.StateCurrentValues.TimeBase
CURRENT_VALUESDataInfoDATA_INFOPARAM_TYPEEccParamECC_PARMEccParamsECC_PARMSECC_PARM_ARRAY()TechniqueInfosTECHNIQUE_INFOSPROG_STATEI_RANGEE_RANGEBANDWIDTHGAINFILTERAMPLIFIERAMPLIFIER.AMPL_NONEAMPLIFIER.AMPL_2AAMPLIFIER.AMPL_1AAMPLIFIER.AMPL_5AAMPLIFIER.AMPL_10AAMPLIFIER.AMPL_20AAMPLIFIER.AMPL_HEUSAMPLIFIER.AMPL_LCAMPLIFIER.AMPL_80AAMPLIFIER.AMPL_4AIAMPLIFIER.AMPL_PACAMPLIFIER.AMPL_4AI_VSPAMPLIFIER.AMPL_LC_VSPAMPLIFIER.AMPL_UNDEFAMPLIFIER.AMPL_MUICAMPLIFIER.AMPL_ERRORAMPLIFIER.AMPL_8AIAMPLIFIER.AMPL_LB500AMPLIFIER.AMPL_100A5VAMPLIFIER.AMPL_LB2000AMPLIFIER.AMPL_1A48VAMPLIFIER.AMPL_4A14VAMPLIFIER.AMPL_5A_MPG2BAMPLIFIER.AMPL_10A_MPG2BAMPLIFIER.AMPL_20A_MPG2BAMPLIFIER.AMPL_40A_MPG2BAMPLIFIER.AMPL_COIN_CELL_HOLDERAMPLIFIER.AMPL4_10A5VAMPLIFIER.AMPL4_2A30VAMPLIFIER.AMPL4_30A50VAMPLIFIER.AMPL3_50A60VAMPLIFIER.AMPL3_200A12VAMPLIFIER.AMPL3_50A60VIIAMPLIFIER.AMPL4_1A48VPIIAMPLIFIER.AMPL4_1A48VPIII
ERRORERROR.NOERRORERROR.GEN_NOTCONNECTEDERROR.GEN_CONNECTIONINPROGRESSERROR.GEN_CHANNELNOTPLUGGEDERROR.GEN_INVALIDPARAMETERSERROR.GEN_FILENOTEXISTSERROR.GEN_FUNCTIONFAILEDERROR.GEN_NOCHANNELSELECTEDERROR.GEN_INVALIDCONFERROR.GEN_ECLAB_LOADEDERROR.GEN_LIBNOTCORRECTLYLOADEDERROR.GEN_USBLIBRARYERRORERROR.GEN_FUNCTIONINPROGRESSERROR.GEN_CHANNEL_RUNNINGERROR.GEN_DEVICE_NOTALLOWEDERROR.GEN_UPDATEPARAMETERSERROR.INSTR_VMEERRORERROR.INSTR_TOOMANYDATAERROR.INSTR_RESPNOTPOSSIBLEERROR.INSTR_RESPERRORERROR.INSTR_MSGSIZEERRORERROR.COMM_COMMFAILEDERROR.COMM_CONNECTIONFAILEDERROR.COMM_WAITINGACKERROR.COMM_INVALIDIPADDRESSERROR.COMM_ALLOCMEMFAILEDERROR.COMM_LOADFIRMWAREFAILEDERROR.COMM_INCOMPATIBLESERVERERROR.COMM_MAXCONNREACHEDERROR.FIRM_FIRMFILENOTEXISTSERROR.FIRM_FIRMFILEACCESSFAILEDERROR.FIRM_FIRMINVALIDFILEERROR.FIRM_FIRMLOADINGFAILEDERROR.FIRM_XILFILENOTEXISTSERROR.FIRM_XILFILEACCESSFAILEDERROR.FIRM_XILINVALIDFILEERROR.FIRM_XILLOADINGFAILEDERROR.FIRM_FIRMWARENOTLOADEDERROR.FIRM_FIRMWAREINCOMPATIBLEERROR.TECH_ECCFILENOTEXISTSERROR.TECH_INCOMPATIBLEECCERROR.TECH_ECCFILECORRUPTEDERROR.TECH_LOADTECHNIQUEFAILEDERROR.TECH_DATACORRUPTEDERROR.TECH_MEMFULLERROR.OPT_CHANGEERROR.OPT_OPEN_INERROR.OPT_4A_ERRORERROR.OPT_4A_OVERTEMPERROR.OPT_4A_BADPOWERERROR.OPT_4A_POWERFAILERROR.OPT_48V_ERRORERROR.OPT_48V_OVERTEMPERROR.OPT_48V_BADPOWERERROR.OPT_48V_POWERFAILERROR.OPT_10A5V_ERRORERROR.OPT_10A5V_OVERTEMPERROR.OPT_10A5V_BADPOWERERROR.OPT_10A5V_POWERFAILERROR.OPT_1A48VP_ERRORERROR.OPT_1A48VP_OVERTEMPERROR.OPT_1A48VP_BADPOWERERROR.OPT_1A48VP_POWERFAIL
FIND_ERRORFIND_ERROR.NO_ERRORFIND_ERROR.UNKNOWN_ERRORFIND_ERROR.INVALID_PARAMETERFIND_ERROR.ACK_TIMEOUTFIND_ERROR.EXP_RUNNINGFIND_ERROR.CMD_FAILEDFIND_ERROR.FIND_FAILEDFIND_ERROR.SOCKET_WRITEFIND_ERROR.SOCKET_READFIND_ERROR.CFG_MODIFY_FAILEDFIND_ERROR.READ_PARAM_FAILEDFIND_ERROR.EMPTY_PARAMFIND_ERROR.IP_FORMATFIND_ERROR.NM_FORMATFIND_ERROR.GW_FORMATFIND_ERROR.IP_NOT_FOUNDFIND_ERROR.IP_ALREADYEXIST
TECH_IDTECH_ID.NONETECH_ID.OCVTECH_ID.CATECH_ID.CPTECH_ID.CVTECH_ID.PEISTECH_ID.POTPULSETECH_ID.GALPULSETECH_ID.GEISTECH_ID.STACKPEIS_SLAVETECH_ID.STACKPEISTECH_ID.CPOWERTECH_ID.CLOADTECH_ID.FCTTECH_ID.SPEISTECH_ID.SGEISTECH_ID.STACKPDYNTECH_ID.STACKPDYN_SLAVETECH_ID.STACKGDYNTECH_ID.STACKGEIS_SLAVETECH_ID.STACKGEISTECH_ID.STACKGDYN_SLAVETECH_ID.CPOTECH_ID.CGATECH_ID.COKINETECH_ID.PDYNTECH_ID.GDYNTECH_ID.CVATECH_ID.DPVTECH_ID.SWVTECH_ID.NPVTECH_ID.RNPVTECH_ID.DNPVTECH_ID.DPATECH_ID.EVTTECH_ID.LPTECH_ID.GCTECH_ID.CPPTECH_ID.PDPTECH_ID.PSPTECH_ID.ZRATECH_ID.MIRTECH_ID.PZIRTECH_ID.GZIRTECH_ID.LOOPTECH_ID.TOTECH_ID.TITECH_ID.TOSTECH_ID.CPLIMITTECH_ID.GDYNLIMITTECH_ID.CALIMITTECH_ID.PDYNLIMITTECH_ID.LASVTECH_ID.MPTECH_ID.CASGTECH_ID.CASP
class_name()exception_brief()warn_diff()error_diff()prepend_path()file_complete()pp_plural()
- Submodules
Submodules
- tomato.drivers.biologic.kbio_wrapper.get_test_magic(variable, sign, logic='or', active=True)
- Return type:
int
- tomato.drivers.biologic.kbio_wrapper.get_num_steps(tech)
- Return type:
int
- tomato.drivers.biologic.kbio_wrapper.pad_steps(param, ns)
- Return type:
list
- tomato.drivers.biologic.kbio_wrapper.current(val, capacity)
- Return type:
Union[list[float],float]
- tomato.drivers.biologic.kbio_wrapper.vlimit(cond, vals, Is=None)
- Return type:
list[float]
- tomato.drivers.biologic.kbio_wrapper.translate(technique, capacity)
- Return type:
dict
- tomato.drivers.biologic.kbio_wrapper.payload_to_ecc(api, payload, capacity)
- Return type:
list[dict]
- tomato.drivers.biologic.kbio_wrapper.parse_raw_data(api, data, devname)
- tomato.drivers.biologic.kbio_wrapper.get_kbio_api(dllpath)
- tomato.drivers.biologic.kbio_wrapper.get_kbio_techpath(dllpath, techname, devname)
- Return type:
str
- tomato.drivers.biologic.main.get_status(address, channel, jobqueue, logger, dllpath=None, max_connect_attempts=120, **kwargs)
Get the current status of the device.
- Parameters:
address (
str) – IP address of the potentiostat.channel (
int) – Numeric, 1-indexed ID of the channel.dllpath (
str) – Path to the BioLogic DLL file.
- Returns:
timestamp, ready, metadata – Returns a tuple containing the timestamp, readiness status, and associated metadata.
- Return type:
tuple[float, bool, dict]
- tomato.drivers.biologic.main.get_data(address, channel, jobqueue, logger, dllpath=None, max_connect_attempts=120, **kwargs)
Get cached data from the device.
- Parameters:
address (
str) – IP address of the potentiostat.channel (
int) – Numeric, 1-indexed ID of the channel.dllpath (
str) – Path to the BioLogic DLL file.
- Returns:
timestamp, nrows, data – Returns a tuple containing the timestamp and associated metadata.
- Return type:
tuple[float, int, dict]
- tomato.drivers.biologic.main.start_job(address, channel, jobqueue, logger, payload, dllpath=None, max_connect_attempts=120, capacity=0.0, **kwargs)
Start a job on the device.
The function first translates the
payloadinto an instrument-specific language, using thecapacityprovided if necessary. The convertedpayloadis then submitted to the device, overwriting any current job information.- Parameters:
address (
str) – IP address of the potentiostat.channel (
int) – Numeric, 1-indexed ID of the channel.dllpath (
str) – Path to the BioLogic DLL file.payload (
list[dict]) – A protocol describing the techniques to be executed and their order.capacity (
float) – The capacity information for the studied battery cell. Only required for battery-testing applications or for payloads where currents are specified using C or D rates.
- Returns:
A timestamp corresponding to the start of the job execution.
- Return type:
timestamp
- tomato.drivers.biologic.main.stop_job(address, channel, jobqueue, logger, dllpath=None, max_connect_attempts=120, **kwargs)
Stop a job running on the device.
This function stops any currently running technique on the specified channel of the device. No data is returned.
- Parameters:
address (
str) – IP address of the potentiostat.channel (
int) – Numeric, 1-indexed ID of the channel.dllpath (
str) – Path to the BioLogic DLL file.
- Returns:
A timestamp corresponding to the start of the job execution.
- Return type:
timestamp