diff --git a/csv_logging.py b/csv_logging.py index e7dfa78..cc284c4 100644 --- a/csv_logging.py +++ b/csv_logging.py @@ -20,7 +20,7 @@ zero_time = datetime.now() # set reference for timestamps in log file, reset wh # Key: String that is displayed in UI and column headers. Also serves as handle to access dictionary elements. # Keys are the same as the rows in the status display ToDo (optional): use this for the status display # Content: name of the corresponding attribute in the Axis class (in cage_func.py). -# Important: attribute handle must match definition in Axis class exactly, used with axis.getattr() to get values. +# Important: attribute handle must match definition in Axis class exactly, used with getattr() to get values. axis_data_dict = { 'PSU Status': 'connected', 'Voltage Setpoint': 'voltage_setpoint', @@ -46,9 +46,11 @@ def log_datapoint(key_list): # logs a single row of data into the log_data Data # key_list determines what data is logged global log_data # get global dataframe with logged data global unsaved_data # get global variable that indicates if there is unsaved data + date = datetime.now().date() # get current date time = datetime.now().strftime("%H:%M:%S,%f") # get string with current time in correct format t = (datetime.now() - zero_time).total_seconds() # calculate timestamp relative to the start of the logging + data = [[date, time, t]] # initialize new data row with timestamps for key in key_list: # go through the list telling us what data to log for axis in g.AXES: # log this data for each axis diff --git a/csv_threading.py b/csv_threading.py index 528ac42..d394705 100644 --- a/csv_threading.py +++ b/csv_threading.py @@ -14,7 +14,6 @@ import User_Interface as ui import cage_func as func import globals as g -import traceback # ToDo: remove! class ExecCSVThread(Thread): # main class for executing a CSV sequence @@ -146,7 +145,7 @@ def plot_field_sequence(array, width, height): # create plot of fixed size (pix last_vals = [0, 0, 0] # [x,y,z] field values from last data point (zero here), used to create step in data for row in array[:, 0:4]: # go through each row in the original array - # create extra datapoint at current timestamp, with field values from last, this creates "step" in plot: + # create extra datapoint at current timestamp, with field values from last to create a "step" in the plot: new_array = np.append(new_array, [[row[0], *last_vals]], axis=0) new_array = np.append(new_array, [row], axis=0) # add actual datapoint for current timestamp last_vals = row[1:4] # save values from current timestamp for next diff --git a/globals.py b/globals.py index ffaf387..fa3334a 100644 --- a/globals.py +++ b/globals.py @@ -29,17 +29,17 @@ exitFlag = True # False when main window is open, True otherwise # Create dictionaries with default Constants and maximum/minimum values # Used to create default configs and to check if user inputs are within safe limits -# ToDo: check actual maximum ratings / refine after testing +# ToDo: refine values after testing # ToDo: put this into a config file # Dictionary for numerical values: # format: key: [default values], [maximum values], [minimum values] default_arrays = { - "coil_const": np.array([[38.6, 38.45, 37.9], [50, 50, 50], [0, 0, 0]]) * 1e-6, # Coil constants [x,y,z] [T/A] - "ambient_field": np.array([[30, 30, 30], [200, 200, 200], [-200, -200, -200]]) * 1e-6, # ambient magnetic field [T] - "resistance": np.array([[1.7, 1.7, 1.7], [5, 5, 5], [1, 1, 1]], dtype=float), # resistance of circuits [Ohm] - "max_volts": np.array([[14, 14, 14], [16, 16, 16], [0, 0, 0]], dtype=float), # max. voltage, limited to 16V by used diodes! [V] - "max_amps": np.array([[4.5, 4.5, 4.5], [6, 6, 6], [0, 0, 0]], dtype=float), # max. allowed current (A) + "coil_const": np.array([[38.957, 40.408, 37.754], [50, 50, 50], [0, 0, 0]]) * 1e-6, # Coil constants [x,y,z] [T/A] + "ambient_field": np.array([[0, 0, 0], [200, 200, 200], [-200, -200, -200]]) * 1e-6, # ambient magnetic field [T] + "resistance": np.array([[3.131, 3.107, 3.129], [5, 5, 5], [1, 1, 1]], dtype=float), # resistance of circuits [Ohm] + "max_volts": np.array([[15, 15, 15], [16, 16, 16], [0, 0, 0]], dtype=float), # max. voltage, limited to 16V by used diodes! [V] + "max_amps": np.array([[5, 5, 5], [6, 6, 6], [0, 0, 0]], dtype=float), # max. allowed current (A) "relay_pin": [[15, 16, 17], [15, 16, 17], [15, 16, 17]] # pins on the arduino for reversing [x,y,z] polarity } # Dictionary for PSU serial ports: