You are on page 1of 8

第一次實驗

實驗日期:2017/11/23

實驗的進度:利用事前打的 code 來測試機台條件並整理出 K τ θ

實驗條件:將酸液轉速設定為 5.5,鹼液轉速由 2 改為 4.5

實驗結果:

code 程式碼無法預期將圖完整跑出,決定實驗結束後將 code 修改並在下一次實

驗再次進行

code:
clc
clear

Dev=HudaqDevice('AD622')%呼叫訊號卡

%先設定 mv 值

mv1=2%鹼的 mv 值

mv2=5.5%酸的 mv 值

%AOWrite(Dev,channelOut,mv(i)送出訊號給控制器 mv 值

%AOWrite 1:base pump; 2:acid pump

AOWrite(Dev,1,mv1)%鹼液 pump 轉速

AOWrite(Dev,2,mv2)%酸液 pump 轉速

%設零矩陣預備讓數據放入

PH_data=zeros(1,1000)
mv1_data=zeros(1,1000)
mv2_data=zeros(1,1000)
timepoint_data=zeros(1,1500)
for i=1:1000
timepoint=toc;

if i=500%做變化改變轉速

mv3=4.5%mv1'

AOWrite(Dev,1,mv3)%鹼液 pump 轉速

AOWrite(Dev,2,mv2)%酸液 pump 轉速

PH=AIRead(Dev,1)%讀取偵測器訊號,i 為時間間隔

end

%將每個數據點放入之前創的矩陣空間

PH_data(i)=PH;
mv1_data(i)=mv1;
mv2_data(i)=mv2;
timepoint_data(i)=timepoint;

%開始作圖

if i==1
subplot(211)

py=plot(PH,'.','EraseMode','none','MarkerSize',10);%ph 的圖

hold on
axis([0 1500 5 10]);
xlabel('time');
ylabel('PH');

subplot(212)

pu=plot(mv2,'.','EraseMode','none','MarkerSize',10);%mv 值的圖

xlabel('time');
ylabel('MV value');
axis([0 1500 5 10]);
drawnow
else
set(py,'Xdata',timepoint,'Ylabel',PH);
set(pu,'Xdata',timepoint,'Ylabel',mv2);
drawnow
end
while 1
if(toc-timepoint)>=2;break;end;
end
fprintf('Time:%g pv:%g MV%g\n',timepoint,PH,mv2);
end
xlswrite('openloop',PH_data)

實驗時間:2017/11/27

實驗目的:再次測試 open loop 程式碼

實驗環境:酸 pump mv 值 5.5,鹼 pump mv 值由 2 變化到 4.5

測試過程:

測試第一次實驗時 code 邏輯上的錯誤,並再次進行嘗試

Code:
clc
clear
Dev=HudaqDevice('AD622')%呼叫訊號卡

%先設定 mv 值

mv1=2%鹼的 mv 值

mv2=5.5%酸的 mv 值

%AOWrite(Dev,channelOut,mv(i)送出訊號給控制器 mv 值

%AOWrite 1:base pump; 2:acid pump

AOWrite(Dev,1,mv1)%鹼液 pump 轉速

AOWrite(Dev,2,mv2)%酸液 pump 轉速

%PH_data(i)=PH;

%設零矩陣預備讓數據放入

PH_data=zeros(1,1000)
mv1_data=zeros(1,1000)
mv2_data=zeros(1,1000)
timepoint_data=zeros(1,60)
tic
for i=1:1000

if i==500%做變化改變轉速

mv1=4.5%

AOWrite(Dev,1,mv1)%鹼液 pump 轉速

end
PH=AIRead(Dev,1)

timepoint=toc;

%將每個數據點放入之前創的矩陣空間
PH_data(i)=PH;
mv1_data(i)=mv1;
mv2_data(i)=mv2;
timepoint_data(i)=timepoint;

%開始作圖

if i==1
subplot(211)

py=plot(PH,'.','EraseMode','none','MarkerSize',10);%ph 的圖

hold on
axis([0 60 5 10]);
xlabel('time');
ylabel('PH');

subplot(212)

pu=plot(mv1,'.','EraseMode','none','MarkerSize',10);%mv 值的圖

xlabel('time');
ylabel('MV value');
axis([0 60 0 10]);
drawnow
else
set(py,'Xdata',timepoint,'Ydata',PH);
set(pu,'Xdata',timepoint,'Xdata',mv2);
drawnow
end
while 1
if(toc-timepoint)>=2;break;end;
end
fprintf('Time:%g pv:%g MV%g\n',timepoint,PH,mv1);
end

AOWrite(Dev,1,mv1)%鹼液 pump 轉速

AOWrite(Dev,2,mv2)%酸液 pump 轉速

xlsFile='openloop.xls'
A = [PH_data;mv1_data;mv2_data;timepoint_data]'
xlswrite('xlsFile',A)

實驗結果

程式碼的部分還是有錯誤

(1) mv 值的圖什麼都沒有顯示

(2) 儲存的指令打錯,導致數據不但沒有存成 excel,matlab 裡也找不到數據

嘗試做修正:
 原本

 更改後

方塊圖
simulink 圖