Files
cristallina/measurement_scripts/Diffractometer_PID_optimisation/Diffractometer_PID_optimisation.ipynb
T

22 KiB
Executable File

In [33]:
import sys
sys.path.append('/sf/cristallina/applications/slic/cristallina/crq_exp/')
from diffractometer import Diffractometer
from slic.core.adjustable import PVAdjustable
dm1 = Diffractometer("SARES30-CPCL-ECMC02")
dm2 = Diffractometer("SARES32-GPS")
from time import sleep
import h5py
import matplotlib.pyplot as plt

from slic.core.acquisition import PVAcquisition
from slic.core.acquisition.pvacquisition import epics_to_h5_polling
from sfdata import SFDataFile
In [2]:
def get_pid_adjustables(axis):
    adj_p = PVAdjustable(axis.ID+'-Ctrl-Kp')
    adj_i = PVAdjustable(axis.ID+'-Ctrl-Ki')
    adj_d = PVAdjustable(axis.ID+'-Ctrl-Kd')
    return [adj_p,adj_i,adj_d]

def get_pids(axis):
    pid_adjs = get_pid_adjustables(axis)
    vals = []
    for pid_adj in pid_adjs:
        vals.append(pid_adj.get())
    return vals

def set_pids(axis,pid_list,check_if_done=True):
    pid_adjs = get_pid_adjustables(axis)
    for i,pid_val in enumerate(pid_list):
        pid_adjs[i].set(pid_val)
    if check_if_done:
        while pid_list != get_pids(axis):
            sleep(0.1)
In [3]:
axis = dm1.tr_x

set_pids(axis,[4,0,0])
get_pids(axis)
Out [3]:

[4.0, 0.0, 0.0]
In [22]:
epics_to_h5_polling('test.h5',[dm1.tr_x.ID],n_pulses=100,wait_time=0.1)
In [30]:
with h5py.File('test.h5','r') as f:
    dat = f[axis.ID][()]
In [34]:
plt.figure()
plt.plot(dat)
Out [34]:

[<matplotlib.lines.Line2D object at 0x7f969d2f9f40>]

CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:37849"
    Source File: ../cac.cpp line 1237
    Current Time: Wed Jan 29 2025 09:32:18.185970708
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:33519"
    Source File: ../cac.cpp line 1237
    Current Time: Wed Jan 29 2025 10:25:21.921579794
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 09:25:15.723415260
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 10:56:01.344575603
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 10:57:54.795940675
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit unresponsive"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../tcpiiu.cpp line 926
    Current Time: Thu Jan 30 2025 11:24:40.816502886
..................................................................
Unexpected problem with CA circuit to server "sf-test-ecat01.psi.ch:5064" was "Connection reset by peer" - disconnecting
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 11:27:58.954815616
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit unresponsive"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../tcpiiu.cpp line 926
    Current Time: Thu Jan 30 2025 11:36:30.771356010
..................................................................
Unexpected problem with CA circuit to server "sf-test-ecat01.psi.ch:5064" was "Connection reset by peer" - disconnecting
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "sf-test-ecat01.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 11:39:35.272507679
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "SARES30-CVME-CRISTA1.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 13:57:33.332400491
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "SARES30-CVME-CRISTA1.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Thu Jan 30 2025 14:00:49.683000572
..................................................................
CA.Client.Exception...............................................
    Warning: "Virtual circuit unresponsive"
    Context: "SARES30-CVME-CRISTA1.psi.ch:5064"
    Source File: ../tcpiiu.cpp line 926
    Current Time: Wed Feb 05 2025 21:53:51.102610757
..................................................................
Unexpected problem with CA circuit to server "SARES30-CVME-CRISTA1.psi.ch:5064" was "No route to host" - disconnecting
CA.Client.Exception...............................................
    Warning: "Virtual circuit disconnect"
    Context: "SARES30-CVME-CRISTA1.psi.ch:5064"
    Source File: ../cac.cpp line 1237
    Current Time: Wed Feb 05 2025 22:09:43.401250908
..................................................................
In [ ]: