%% Automated Regeneration and Detection on Chip v3.0 %% %% Y. Shrike Zhang, T. Kilic 2015-07-22 %% %% Bioreactor Integrated %% clear; clc; clf; %% Create object and initiate communication clear('wago'); wObj = wagoNModbus('192.168.1.10', zeros(1, 56), false); %% Define valves A1 = 0; A2 = 1; A3 = 2; A4 = 3; A5 = 4; A6 = 5; A7 = 6; A8 = 7; A9 = 8; A10 = 9; A11 = 10; A12 = 11; A13 = 12; A14 = 13; A15 = 14; A16 = 15; A17 = 16; A18 = 17; A19 = 18; A20 = 19; A21 = 20; A22 = 21; A23 = 22; A24 = 23; A25 = 24; A26 = 25; A27 = 26; A28 = 27; A29 = 28; A30 = 29; A31 = 30; A32 = 31; B1 = 32; B2 = 33; B3 = 34; B4 = 35; B5 = 36; B6 = 37; B7 = 38; B8 = 39; B9 = 40; B10 = 41; B11 = 42; B12 = 43; B13 = 44; B14 = 45; B15 = 46; B16 = 47; B17 = 48; B18 = 49; B19 = 50; B20 = 51; B21 = 52; B22 = 53; B23 = 54; B24 = 55; %% Define constants Cycle = 5; Inj_on_Sample = 7*60; Inc_on_Sample = 10*60; Inj_on= 7*60; Stop_Flow = 10; Inj_on_PBS = 7*60; Inj_off = 5; Inj_on_ETOH = 3*60; Inj_on_SAM = 5*60; Incubation = 60*60; Inc_on_NHSEDC = 3*60; NormalizedRct = 0; NormalizedRctArray_albumin = zeros(1, Cycle); Rct_Media = 0; Rct_sample = 0; %% All valves off (gas off) for ii = A1:B16 wObj.setValves(ii, 1); pause(0.1); end [err, desc] = wObj.error(); disp([num2str(err) ': ' desc]); pause(0.1); %% All valves for valve control on (gas on) for jj = A1:A5 wObj.setValves(jj, 0); disp([num2str(jj)]); pause(0.1); end [err, desc] = wObj.error(); disp([num2str(err) ': ' desc]); wObj.setValves(A7, 0); for jj = A9:A17 wObj.setValves(jj, 0); disp([num2str(jj)]); pause(0.1); end [err, desc] = wObj.error(); disp([num2str(err) ': ' desc]); pause(1); %% Functionalization & Detection for Reg = 1:Cycle %%%%%% H2SO4 Cleaning disp(sprintf('\n')); disp('Step 1, H2SO4'); % Valves B10 on, A10/A16/A17 off disp([' Valves B10 on, A10/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s1 = 1:Inj_on/30 wObj.setValves(A10, 1); wObj.setValves(B10, 0); pause(30); end toc %%%%%%%%%%%%%%%%% Step 2, H2SO4 CV CLEANING % Call 'libec660eNew2.dll' if ~libisloaded('libec660eNew2') loadlibrary('libec660eNew2.dll', 'labview.h') end % calllib('libec660eNew2', 'CHI_set_mch', 1); % H2SO4 Cleaning calllib('libec660eNew2', 'CHI_setTechnique', 0); calllib('libec660eNew2', 'CHI_setParameter', 'm_ei', 0); calllib('libec660eNew2', 'CHI_setParameter', 'm_eh', 1.8); calllib('libec660eNew2', 'CHI_setParameter', 'm_el', 0); calllib('libec660eNew2', 'CHI_setParameter', 'm_ef', 0); calllib('libec660eNew2', 'CHI_setParameter', 'm_pn', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_vv', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_inpcl', 6); calllib('libec660eNew2', 'CHI_setParameter', 'm_inpsi', 0.001); calllib('libec660eNew2', 'CHI_setParameter', 'm_qt', 2); calllib('libec660eNew2', 'CHI_setParameter', 'm_iSens', power(10, -2)); calllib('libec660eNew2', 'CHI_runExperiment'); disp 'Waiting for experiment to end' while calllib('libec660eNew2', 'CHI_experimentIsRunning') disp '...' % <- call CHI_getExperimentData() in real time pause(10) wObj.setValves([A16 A17], ones(1, 2)); % Keep communication with valves end % % Clear All Previous Data First clearvars n_H2SO4 x_H2SO4 y_H2SO4 px_H2SO4 py_H2SO4 clearvars YEAR MON DAY HOUR MIN SEC CV_H2SO4_data % clearvars filename_mat filename_txt filename_xls clearvars T figure(2); n_H2SO4 = 10800; x_H2SO4 = zeros(n_H2SO4, 1); y_H2SO4 = zeros(n_H2SO4, 1); px_H2SO4= libpointer('singlePtr', x_H2SO4); py_H2SO4= libpointer('singlePtr', y_H2SO4); calllib('libec660eNew2', 'CHI_getExperimentData', px_H2SO4, py_H2SO4, n_H2SO4) plot(px_H2SO4.value, py_H2SO4.value, 'LineWidth', 3); hold on; %% Save Data CV_H2SO4_data = cat(2, px_H2SO4.value, py_H2SO4.value); [YEAR, MON, DAY, HOUR, MIN, SEC] = datevec(datestr(now)); filename_CV_H2SO4_data_mat = ['CV_H2SO4_data_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; filename_CV_H2SO4_data_txt = ['CV_H2SO4_data_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.txt']; filename_CV_H2SO4_data_xls = ['CV_H2SO4_data_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.xls']; save(filename_CV_H2SO4_data_mat, 'CV_H2SO4_data'); %% Step 3, stop flow, 5 s disp(sprintf('\n')); disp('Step 3, stop flow, 5 s'); wObj.setValves(B10, 1); wObj.setValves(A10, 0); tic; pause(5); toc %% Valves A16/A17 off (gas off) %%%%%% Step 4, PBS washing disp(sprintf('\n')); disp('Step 4, Inj_on_PBS'); % Valves B1 on, A1/A16/A17 off disp(['Valves B1 on, A1/A16/A17 off, ' num2str(Inj_on_PBS) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s4 = 1:Inj_on_PBS/30 wObj.setValves(A1, 1); wObj.setValves(B1, 0); pause(30); end toc %% Step 5, stop flow, 5 s disp(sprintf('\n')); disp('Step 5, stop flow, 5 s'); wObj.setValves(B1, 1); wObj.setValves(A1, 0); tic; pause(5); toc %% Valves A16/A17 off (gas off) %%%%%% Step 6, Ferricyanide flow, 420 s disp(sprintf('\n')); disp('Step 6, Inj_on_Fe'); % Valves B1 on, A1/A16/A17 off disp(['Valves B11 on, A11/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s6 = 1:Inj_on/30 wObj.setValves(A11, 1); wObj.setValves(B11, 0); pause(30); end toc %% Step 7, Ferricyanide cleaining by CV if ~libisloaded('libec660eNew2') loadlibrary('libec660eNew2.dll', 'labview.h') end % Fe Cleaning calllib('libec660eNew2', 'CHI_setTechnique', 0); calllib('libec660eNew2', 'CHI_setParameter', 'm_ei', 1.0); calllib('libec660eNew2', 'CHI_setParameter', 'm_eh', 1.2); calllib('libec660eNew2', 'CHI_setParameter', 'm_el', -1.2); calllib('libec660eNew2', 'CHI_setParameter', 'm_ef', 0); calllib('libec660eNew2', 'CHI_setParameter', 'm_pn', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_vv', 0.2); calllib('libec660eNew2', 'CHI_setParameter', 'm_inpcl', 6); calllib('libec660eNew2', 'CHI_setParameter', 'm_inpsi', 0.002); calllib('libec660eNew2', 'CHI_setParameter', 'm_qt', 2); calllib('libec660eNew2', 'CHI_setParameter', 'm_iSens', power(10, -4)); calllib('libec660eNew2', 'CHI_runExperiment'); disp 'Waiting for experiment to end' while calllib('libec660eNew2', 'CHI_experimentIsRunning') disp '...' % <- call CHI_getExperimentData() in real time pause(10) wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves end % % Clear All Previous Data First clearvars n_Fe x_Fe y_Fe px_Fe py_Fe clearvars YEAR MON DAY HOUR MIN SEC CV_Fe_data clearvars T figure(3); n_Fe = 14400; x_Fe = zeros(n_Fe, 1); y_Fe = zeros(n_Fe, 1); px_Fe= libpointer('singlePtr', x_Fe); py_Fe= libpointer('singlePtr', y_Fe); calllib('libec660eNew2', 'CHI_getExperimentData', px_Fe, py_Fe, n_Fe) plot(px_Fe.value, py_Fe.value, 'LineWidth', 3); %% Save Data CV_Fe_data = cat(2, px_Fe.value, py_Fe.value); [YEAR, MON, DAY, HOUR, MIN, SEC] = datevec(datestr(now)); filename_CV_Fe_data_mat = ['CV_Fe_data_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; filename_CV_Fe_data_txt = ['CV_Fe_data_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.txt']; filename_CV_Fe_data_xls = ['CV_Fe_data_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.xls']; save(filename_CV_Fe_data_mat, 'CV_Fe_data'); %% Step 8 stop flow, 5 s disp(sprintf('\n')); disp('Step 8, stop flow, 5 s'); wObj.setValves(B11, 1); wObj.setValves(A11, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Valves A16/A17 off (gas off) %% Step 9, EC detection disp(sprintf('\n')); disp('Step 9, EC detection'); if ~libisloaded('libec660eNew2') loadlibrary('libec660eNew2.dll', 'labview.h') end %%Electrochemical Impedance spectroscopy calllib('libec660eNew2', 'CHI_setTechnique', 14); calllib('libec660eNew2', 'CHI_setParameter', 'm_ei', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_fh', 100000); calllib('libec660eNew2', 'CHI_setParameter', 'm_fl', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_amp', 0.005); calllib('libec660eNew2', 'CHI_setParameter', 'm_qt', 2); calllib('libec660eNew2', 'CHI_setParameter', 'm_iImpmode', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1M', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl2',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl3',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl4',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl5',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1M',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP2',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP3',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP4',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP5',12); % % %% EIS Measurement calllib('libec660eNew2', 'CHI_runExperiment'); disp 'Waiting for experiment to end' while calllib('libec660eNew2', 'CHI_experimentIsRunning') disp '...' % <- call CHI_getExperimentData() in real time pause(10); wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves end %% Get Data % % Clear All Previous Data First clearvars Phase_imp Real_imp Imag_imp pPhase_imp pReal_imp pImag_imp pPhase_imp_value clearvars pReal_imp_value pImag_imp_value YEAR MON DAY HOUR MIN SEC Imp_data % % n = 12*6; Phase_imp = zeros(n, 1); Real_imp = zeros(n, 1); Imag_imp = zeros(n, 1); pPhase_imp= libpointer('singlePtr', Phase_imp); pReal_imp= libpointer('singlePtr', Real_imp); pImag_imp= libpointer('singlePtr', Imag_imp); % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % % calllib('libec660eNew2', 'CHI_getExperimentData_2channel', pPhase_imp, pReal_imp, pImag_imp, n) % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % pPhase_imp_value = pPhase_imp.value; pReal_imp_value = pReal_imp.value; pImag_imp_value = pImag_imp.value.*-1; % % figure(4); plot(pReal_imp_value, pImag_imp_value, 'b-', 'LineWidth', 3) xlabel('Z (Real)'); ylabel('Z (Imag)'); %title('albumin'); hold on; % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % %% Save Data Imp_data = cat(2, pPhase_imp_value, pReal_imp_value, pImag_imp_value); [YEAR, MON, DAY, HOUR, MIN, SEC] = datevec(datestr(now)); filename_albumin_baseline_mat = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; filename_albumin_baseline_txt = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.txt']; filename_albumin_baseline_xls = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.xls']; save(filename_albumin_baseline_mat, 'Imp_data'); %% Step 10, post detection disp(sprintf('\n')); disp([' Step 10, post detection, ' num2str(Stop_Flow) ' s']); tic; wObj.setValves([A16 A17], zeros(1, 2)); pause(Stop_Flow); toc %%%%%%% Step 11, PBS washing disp(sprintf('\n')); disp('Step 11, Inj_on_PBS'); % Valves B1 on, A1/A16/A17 off disp([' Valves B1 on, A1/A16/A17 off, ' num2str(Inj_on_PBS) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s11 = 1:Inj_on/30 wObj.setValves(A1, 1); wObj.setValves(B1, 0); pause(30); end toc %% Step 12, stop flow, 5 s disp(sprintf('\n')); disp('Step 5, stop flow, 5 s'); wObj.setValves(B1, 1); wObj.setValves(A1, 0); tic; pause(5); toc % Valves A16/A17 off (gas off) disp('Valves A16/A17 off (gas off)'); wObj.setValves([A16 A17], ones(1, 2)); %% Step 13, EtOH, 600 s disp(sprintf('\n')); disp('Step 13, Inj_on_ETOH'); % Valves B1 on, A1/A16/A17 off disp([' Valves B13 on, A13/A15/A16/A17 off, ' num2str(Inj_on_ETOH) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s13 = 1:Inj_on_ETOH/30 wObj.setValves(A13, 1); wObj.setValves(A15, 1); wObj.setValves(B13, 0); pause(30); end toc %% Step 14, stop flow, 5 s disp(sprintf('\n')); disp('Step 5, stop flow, 5 s'); wObj.setValves(B13, 1); wObj.setValves([A13 A15], [0 0]); tic; pause(5); toc %% Step 15, SAM disp(sprintf('\n')); disp('Step 15, Inj_on_SAM'); % Valves B1 on, A1/A16/A17 off disp(['Valves B14 on, A14/A15/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s15 = 1:Inj_on_SAM/30 wObj.setValves(A14, 1); wObj.setValves(A15, 1); wObj.setValves(B14, 0); pause(30); end toc %% Step 16, stop flow, 5 s disp(sprintf('\n')); disp('Step 5, stop flow, 5 s'); wObj.setValves(B14, 1); wObj.setValves(A14, 0); wObj.setValves(A15, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 17, Incubation, 3600 s disp(sprintf('\n')); disp('Step 17, Incubation, 3600 s'); tic; for s17 = Incubation/30 wObj.setValves([A16 A17], zeros(1, 2)); pause(30); end toc %% Step 18, EtOH, 600 s disp(sprintf('\n')); disp('Step 18, Inj_on_ETOH'); % Valves B13 on, A13/A15/A16/A17 off disp([' Valves B13 on, A13/A15/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s18 = 1:Inj_on/30 wObj.setValves(A13, 1); wObj.setValves(A15, 1); wObj.setValves(B13, 0); pause(30); end toc %% Step 19, stop flow, 5 s disp(sprintf('\n')); disp('Step 19, stop flow, 5 s'); wObj.setValves(B13, 1); wObj.setValves([A13 A15], [0 0]); tic; pause(5); toc %% Step 20, PBS, 420 s disp(sprintf('\n')); disp('Step 20, Inj_on_PBS'); % Valves B1 on, A1/A16/A17 off disp([' Valves B1 on, A1/A16/A17 off, ' num2str(Inj_on_PBS) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s20 = 1:Inj_on/30 wObj.setValves(A1, 1); wObj.setValves(B1, 0); pause(30); end toc %% Step 21, stop flow, 5 s disp(sprintf('\n')); disp('Step 21, stop flow, 5 s'); wObj.setValves(B1, 1); wObj.setValves(A1, 0); tic; pause(5); toc % Valves A16/A17 off (gas off) disp('Valves A16/A17 off (gas off)'); wObj.setValves([A16 A17], ones(1, 2)); %% Step 22, NHS/EDC Flow disp(sprintf('\n')); disp('Step 22, Inj_on_NHSEDC'); % Valves B3 on, A3/A16/A17 off disp([' Valves B3 on, A3/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s22 = 1:Inj_on/30 wObj.setValves(A3, 1); wObj.setValves(B3, 0); pause(30); end toc %% Step 23, stop flow, 5 s disp(sprintf('\n')); disp('Step 23, stop flow, 5 s'); wObj.setValves(B3, 1); wObj.setValves(A3, 0); %wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 24, NHS/EDC Incubation disp(sprintf('\n')); disp(['Step 24, NHS/EDC Incubation, ' num2str(Inc_on_NHSEDC) ' s']); % Valve B5 off, Valves A5/A16/A17 on disp(['Valve B5 off, Valves A5/A16/A17 on, ' num2str(Inc_on_NHSEDC) ' s']); tic; for s24 = 1:Inc_on_NHSEDC/30 wObj.setValves([A16 A17], zeros(0, 2)); pause(30); end toc; %% Step 25, Streptavidine flow disp(sprintf('\n')); disp('Step 25, Inj_on_SPV'); % Valves B3 on, A3/A16/A17 off disp([' Valves B12 on, A12/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s25 = 1:Inj_on/30 wObj.setValves(A12, 1); wObj.setValves(B12, 0); pause(30); end toc %% Step 26, stop flow, 5 s disp(sprintf('\n')); disp('Step 26, stop flow, 5 s'); wObj.setValves(B12, 1); wObj.setValves(A12, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 27, STREPTAVIDINE Incubation disp(sprintf('\n')); disp(['Step 27, STREPTAVIDINE Incubation, ' num2str(Incubation) ' s']); % Valve B3 off, Valves A3/A16/A17 on disp(['Valve B12 off, Valves A12/A16/A17 on, ' num2str(Incubation) ' s']); tic; for s27 = 1:Incubation/30 wObj.setValves([A16 A17], zeros(0, 2)); pause(30); end toc; %% Step 28, Washing Buffer (1x) disp(sprintf('\n')); disp('Step 28, Inj_on_WB'); % Valves B3 on, A3/A16/A17 off disp(['Valves B9 on, A9/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s28 = 1:Inj_on/30 wObj.setValves(A9, 1); wObj.setValves(B9, 0); pause(30); end toc %% Step 29 stop flow, 5 s disp(sprintf('\n')); disp('Step 29, stop flow, 5 s'); wObj.setValves(B9, 1); wObj.setValves(A9, 0); tic; pause(5); toc %% Step 30, Biotinylated Antibody disp(sprintf('\n')); disp('Step 30, Inj_on_BiotAB'); % Valves B3 on, A3/A16/A17 off disp([' Valves B4 on, A4/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s30 = 1:Inj_on/30 wObj.setValves(A4, 1); wObj.setValves(B4, 0); pause(30); end toc %% Step 31, stop flow, 5 s disp(sprintf('\n')); disp('Step 31, stop flow, 5 s'); wObj.setValves(B4, 1); wObj.setValves(A4, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 32, close Biotinylated antibody/start Incubation disp(sprintf('\n')); disp(['Step 32, close sampling/start Incubation, ' num2str(Incubation) ' s']); tic; for s32 = 1:Incubation/30 wObj.setValves([A16 A17], zeros(0, 2)); pause(30); end toc; %% Step 33, Washing Buffer (1x) disp(sprintf('\n')); disp('Step 33, Inj_on_WB'); % Valves B9 on, A9/A16/A17 off disp(['Valves B9 on, A9/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s1 = 1:Inj_on/30 wObj.setValves(A9, 1); wObj.setValves(B9, 0); pause(30); end toc %% Step 34, stop flow, 5 s disp(sprintf('\n')); disp('Step 30, stop flow, 5 s'); wObj.setValves(B9, 1); wObj.setValves(A9, 0); tic; pause(5); toc %% Step 35, Ferricyanide flow, 420 s disp(sprintf('\n')); disp('Step 35, Inj_on_Fe'); % Valves B11 on, A11/A16/A17 off disp([' Valves B11 on, A11/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s35 = 1:Inj_on/30 wObj.setValves(A11, 1); wObj.setValves(B11, 0); pause(30); end toc %% Step 36, stop flow, 5 s disp(sprintf('\n')); disp('Step 36, stop flow, 5 s'); wObj.setValves(B11, 1); wObj.setValves(A11, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 37, EC detection of BIOTINYLATED AB SIGNAL disp(sprintf('\n')); disp('Step 37, EC detection'); if ~libisloaded('libec660eNew2') loadlibrary('libec660eNew2.dll', 'labview.h') end %%Electrochemical Impedance spectroscopy calllib('libec660eNew2', 'CHI_setTechnique', 14); calllib('libec660eNew2', 'CHI_setParameter', 'm_ei', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_fh', 100000); calllib('libec660eNew2', 'CHI_setParameter', 'm_fl', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_amp', 0.005); calllib('libec660eNew2', 'CHI_setParameter', 'm_qt', 2); calllib('libec660eNew2', 'CHI_setParameter', 'm_iImpmode', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1M', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl2',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl3',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl4',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl5',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1M',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP2',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP3',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP4',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP5',12); % % %% EIS Measurement calllib('libec660eNew2', 'CHI_runExperiment'); disp 'Waiting for experiment to end' while calllib('libec660eNew2', 'CHI_experimentIsRunning') disp '...' % <- call CHI_getExperimentData() in real time pause(10); wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves end %% Get Data % % Clear All Previous Data First clearvars Phase_imp Real_imp Imag_imp pPhase_imp pReal_imp pImag_imp pPhase_imp_value clearvars pReal_imp_value pImag_imp_value YEAR MON DAY HOUR MIN SEC Imp_data clearvars T Rct_Ab deltaRct % % n = 12*6; Phase_imp = zeros(n, 1); Real_imp = zeros(n, 1); Imag_imp = zeros(n, 1); pPhase_imp= libpointer('singlePtr', Phase_imp); pReal_imp= libpointer('singlePtr', Real_imp); pImag_imp= libpointer('singlePtr', Imag_imp); % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % calllib('libec660eNew2', 'CHI_getExperimentData_2channel', pPhase_imp, pReal_imp, pImag_imp, n) % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % pPhase_imp_value = pPhase_imp.value; pReal_imp_value = pReal_imp.value; pImag_imp_value = pImag_imp.value.*-1; % % figure(4); plot(pReal_imp_value, pImag_imp_value, 'r-', 'LineWidth', 3) xlabel('Z (Real)'); ylabel('Z (Imag)'); title('Albumin'); hold on; % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % %% Save Data Imp_data = cat(2, pPhase_imp_value, pReal_imp_value, pImag_imp_value); [YEAR, MON, DAY, HOUR, MIN, SEC] = datevec(datestr(now)); filename_albumin_baseline_mat = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; filename_albumin_baseline_txt = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.txt']; filename_albumin_baseline_xls = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.xls']; save(filename_albumin_baseline_mat, 'Imp_data'); %% Step 38, post detection disp(sprintf('\n')); disp(['Step 38, post detection, ' num2str(Stop_Flow) ' s']); tic; wObj.setValves([A16 A17], zeros(1, 2)); pause(Stop_Flow); toc %%%%%%% Step 39, PBS washing disp(sprintf('\n')); disp('Step 39, Inj_on_PBS'); % Valves B1 on, A1/A16/A17 off disp(['Valves B1 on, A1/A16/A17 off, ' num2str(Inj_on_PBS) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s39 = 1:Inj_on/30 wObj.setValves(A1, 1); wObj.setValves(B1, 0); pause(30); end toc %% Step 40, stop flow, 5 s disp(sprintf('\n')); disp('Step 40, stop flow, 5 s'); wObj.setValves(B1, 1); wObj.setValves(A1, 0); tic; pause(5); toc %% Step 41, Media Blocking disp(sprintf('\n')); disp('Step 41, Inj_on_media'); % Valves B5 on, A5/A16/A17 off disp(['Valves B5 on, A5/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s41 = 1:Inj_on/30 wObj.setValves(A5, 1); wObj.setValves(B5, 0); pause(30); end toc %% Step 42, stop flow, 5 s disp(sprintf('\n')); disp('Step 42, stop flow, 5 s'); wObj.setValves(B5, 1); wObj.setValves(A5, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 43, media blocking /start Incubation disp(sprintf('\n')); disp([' Step 43, media blocking /start Incubation, ' num2str(Incubation) ' s']); tic; for s43 = 1:Incubation/30 wObj.setValves([A16 A17], zeros(1, 2)); pause(30); end toc; %% Step 44, Washing Buffer (1x) disp(sprintf('\n')); disp('Step 44, Inj_on_WB'); % Valves B3 on, A3/A16/A17 off disp(['Valves B9 on, A9/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s44 = 1:Inj_on/30 wObj.setValves(A9, 1); wObj.setValves(B9, 0); pause(30); end toc %% Step 45, stop flow, 5 s disp(sprintf('\n')); disp('Step 45, stop flow, 5 s'); wObj.setValves(B9, 1); wObj.setValves(A9, 0); tic; pause(5); toc %% Step 46, Ferricyanide flow disp(sprintf('\n')); disp('Step 46, Inj_on_Fe'); % Valves B11 on, A11/A16/A17 off disp(['Valves B11 on, A11/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s46 = 1:Inj_on/30 wObj.setValves(A11, 1); wObj.setValves(B11, 0); pause(30); end toc %% Step 47, stop flow, 5 s disp(sprintf('\n')); disp('Step 47, stop flow, 5 s'); wObj.setValves(B11, 1); wObj.setValves(A11, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 48, EC detection disp(sprintf('\n')); disp('Step 9, EC detection'); % Call 'libec660eNew2.dll' if ~libisloaded('libec660eNew2') loadlibrary('libec660eNew2.dll', 'labview.h') end %%Electrochemical Impedance spectroscopy calllib('libec660eNew2', 'CHI_setTechnique', 14); calllib('libec660eNew2', 'CHI_setParameter', 'm_ei', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_fh', 100000); calllib('libec660eNew2', 'CHI_setParameter', 'm_fl', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_amp', 0.005); calllib('libec660eNew2', 'CHI_setParameter', 'm_qt', 2); calllib('libec660eNew2', 'CHI_setParameter', 'm_iImpmode', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1M', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl2',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl3',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl4',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl5',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1M',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP2',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP3',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP4',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP5',12); % % %% EIS Measurement calllib('libec660eNew2', 'CHI_runExperiment'); disp 'Waiting for experiment to end' while calllib('libec660eNew2', 'CHI_experimentIsRunning') disp '...' % <- call CHI_getExperimentData() in real time pause(10); wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves end %% Get Data % % Clear All Previous Data First clearvars Phase_imp Real_imp Imag_imp pPhase_imp pReal_imp pImag_imp pPhase_imp_value clearvars pReal_imp_value pImag_imp_value YEAR MON DAY HOUR MIN SEC Imp_data clearvars T Rct_Media % % n = 12*6; Phase_imp = zeros(n, 1); Real_imp = zeros(n, 1); Imag_imp = zeros(n, 1); pPhase_imp= libpointer('singlePtr', Phase_imp); pReal_imp= libpointer('singlePtr', Real_imp); pImag_imp= libpointer('singlePtr', Imag_imp); % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % % calllib('libec660eNew2', 'CHI_getExperimentData_2channel', pPhase_imp, pReal_imp, pImag_imp, n) % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % pPhase_imp_value = pPhase_imp.value; pReal_imp_value = pReal_imp.value; pImag_imp_value = pImag_imp.value.*-1; % % figure(4); plot(pReal_imp_value, pImag_imp_value, 'g-', 'LineWidth', 3) xlabel('Z (Real)'); ylabel('Z (Imag)'); title('Albumin'); hold on; % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % %% Save Data Imp_data = cat(2, pPhase_imp_value, pReal_imp_value, pImag_imp_value); [YEAR, MON, DAY, HOUR, MIN, SEC] = datevec(datestr(now)); filename_albumin_baseline_mat = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; filename_albumin_baseline_txt = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.txt']; filename_albumin_baseline_xls = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.xls']; save(filename_albumin_baseline_mat, 'Imp_data'); % % %% Calculate deltaRct Rct_Media = evaluation_Rct_sample(Imp_data); %% Step 49, post detection disp(sprintf('\n')); disp(['Step 10, post detection, ' num2str(Stop_Flow) ' s']); tic; wObj.setValves([A16 A17], zeros(1, 2)); pause(Stop_Flow); toc %%%%%%% Step 50, PBS washing disp(sprintf('\n')); disp('Step 50, Inj_on_PBS'); % Valves B1 on, A1/A16/A17 off disp(['Valves B1 on, A1/A16/A17 off, ' num2str(Inj_on_PBS) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s50 = 1:Inj_on/30 wObj.setValves(A1, 1); wObj.setValves(B1, 0); pause(30); end toc %% Step 51, stop flow, 5 s disp(sprintf('\n')); disp('Step 5, stop flow, 5 s'); wObj.setValves(B1, 1); wObj.setValves(A1, 0); tic; pause(5); toc %% Step 52, Bioreactor sampling disp(sprintf('\n')); disp(['Step 52, Bioreactor sampling/Incubation, ' num2str(Inc_on_Sample) ' s']); % Valve A7 off disp(['Valve A7 off, ' num2str(Inj_on_Sample) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s50 = 1:Inj_on_Sample/30 wObj.setValves(A7, 1); pause(30); end toc %% Step 53, stop flow, 5 s disp(sprintf('\n')); disp('Step 53, stop flow, 5 s'); % wObj.setValves(B6, 1); wObj.setValves(A7, 0); tic; pause(5); toc %% Step 54, BIOREACTOR Incubation disp(sprintf('\n')); disp(['Step 54, Bioreactor Incubation, ' num2str(Incubation) ' s']); % Valve B6 off, Valves A6/A7/A16/A17 on disp(['Valves A16/A17 on, ' num2str(Incubation) ' s']); tic; for s54 = 1:Incubation/30 wObj.setValves([A16 A17], zeros(1, 2)); pause(30); end toc; %% Step 55, Washing Buffer (1x) disp(sprintf('\n')); disp('Step 55, Inj_on_WB'); % Valves B3 on, A3/A16/A17 off disp([' Valves B9 on, A9/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s55 = 1:Inj_on/30 wObj.setValves(A9, 1); wObj.setValves(B9, 0); pause(30); end toc %% Step 56, stop flow, 5 s disp(sprintf('\n')); disp('Step 56, stop flow, 5 s'); wObj.setValves(B9, 1); wObj.setValves(A9, 0); tic; pause(5); toc %% Step 57, Ferricyanide flow disp(sprintf('\n')); disp('Step 57, Inj_on_Fe'); % Valves B1 on, A1/A16/A17 off disp(['Valves B11 on, A11/A16/A17 off, ' num2str(Inj_on) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s57 = 1:Inj_on/30 wObj.setValves(A11, 1); wObj.setValves(B11, 0); pause(30); end toc %% Step 58, stop flow, 5 s disp(sprintf('\n')); disp('Step 58, stop flow, 5 s'); wObj.setValves(B11, 1); wObj.setValves(A11, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc %% Step 59, EC detection of antigen SIGNAL disp(sprintf('\n')); disp('Step 59, EC detection'); % Call 'libec660eNew2.dll' if ~libisloaded('libec660eNew2') loadlibrary('libec660eNew2.dll', 'labview.h') end %%Electrochemical Impedance spectroscopy calllib('libec660eNew2', 'CHI_setTechnique', 14); calllib('libec660eNew2', 'CHI_setParameter', 'm_ei', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_fh', 100000); calllib('libec660eNew2', 'CHI_setParameter', 'm_fl', 0.1); calllib('libec660eNew2', 'CHI_setParameter', 'm_amp', 0.005); calllib('libec660eNew2', 'CHI_setParameter', 'm_qt', 2); calllib('libec660eNew2', 'CHI_setParameter', 'm_iImpmode', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1M', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1K', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl100', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl10', 1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl1',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl2',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl3',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl4',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_impcl5',1); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1M',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1K',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP100',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP10',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP1',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP2',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP3',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP4',12); calllib('libec660eNew2', 'CHI_setParameter', 'm_iP5',12); % % % % % % %% EIS Measurement calllib('libec660eNew2', 'CHI_runExperiment'); disp 'Waiting for experiment to end' while calllib('libec660eNew2', 'CHI_experimentIsRunning') disp '...' % <- call CHI_getExperimentData() in real time pause(10); wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves end %% Get Data % % Clear All Previous Data First clearvars Phase_imp Real_imp Imag_imp pPhase_imp pReal_imp pImag_imp pPhase_imp_value clearvars pReal_imp_value pImag_imp_value YEAR MON DAY HOUR MIN SEC Imp_data clearvars T Rct_sample % % n = 12*6; Phase_imp = zeros(n, 1); Real_imp = zeros(n, 1); Imag_imp = zeros(n, 1); pPhase_imp= libpointer('singlePtr', Phase_imp); pReal_imp= libpointer('singlePtr', Real_imp); pImag_imp= libpointer('singlePtr', Imag_imp); % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % % calllib('libec660eNew2', 'CHI_getExperimentData_2channel', pPhase_imp, pReal_imp, pImag_imp, n) % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % pPhase_imp_value = pPhase_imp.value; pReal_imp_value = pReal_imp.value; pImag_imp_value = pImag_imp.value.*-1; % % figure(4); plot(pReal_imp_value, pImag_imp_value, 'b-', 'LineWidth', 3) xlabel('Z (Real)'); ylabel('Z (Imag)'); title('Albumin'); hold off; % % wObj.setValves([A16 A17], zeros(1, 2)); % Keep communication with valves % % % %% Save Data Imp_data = cat(2, pPhase_imp_value, pReal_imp_value, pImag_imp_value); [YEAR, MON, DAY, HOUR, MIN, SEC] = datevec(datestr(now)); filename_albumin_baseline_mat = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; filename_albumin_baseline_txt = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.txt']; filename_albumin_baseline_xls = ['EC_Imp_Data_albumin_baseline_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.xls']; save(filename_albumin_baseline_mat, 'Imp_data'); % % %% Calculate deltaRct Rct_sample = evaluation_Rct_sample(Imp_data); NormalizedRct = Rct_sample/Rct_Media; f5 = figure(5); % set(f2, 'Name', 'Albumin'); set(f5, 'Position', [800 300 600 450]); % deltaRct_time = Inj_on/3600*(i-1); plot(ii, NormalizedRct, 'ko', 'LineWidth', 5); % grid on; xlabel('Regeneration'); ylabel('Normalized Rct'); hold on; NormalizedRctArray_albumin(1, ii) = NormalizedRct; %% Step 60, post detection disp(sprintf('\n')); disp(['Step 60, post detection, ' num2str(Stop_Flow) ' s']); tic; wObj.setValves([A16 A17], zeros(1, 2)); pause(Stop_Flow); toc %%%%%%% Step 61, PBS washing disp(sprintf('\n')); disp('Step 61, Inj_on_PBS'); % Valves B1 on, A1/A16/A17 off disp(['Valves B1 on, A1/A16/A17 off, ' num2str(Inj_on_PBS) ' s']); wObj.setValves([A16 A17], ones(1, 2)); tic; for s63 = 1:Inj_on_PBS/30 wObj.setValves(A1, 1); wObj.setValves(B1, 0); pause(30); end toc %% Step 62, stop flow, 5 s disp(sprintf('\n')); disp('Step 62, stop flow, 5 s'); wObj.setValves(B1, 1); wObj.setValves(A1, 0); wObj.setValves([A16 A17], zeros(1, 2)); tic; pause(5); toc end % save NormalizedRctArray_albumin; filename_NormalizedRct_albumin_mat = ['EC_Imp_NormalizedRctArray_albumin_' num2str(YEAR) '_' num2str(MON) '_' num2str(DAY) '_' num2str(HOUR) '_' num2str(MIN) '_' num2str(SEC) '.mat']; NormalizedRctArray_albumin = NormalizedRctArray_albumin'; save(filename_NormalizedRct_albumin_mat, 'NormalizedRctArray_albumin'); %% Close connection wObj.close(); clear wObj;