遇到『Privileged instruction』有什麼方法能解決?

kill7139 2015-04-07 07:46:31
想請問一下
今天執行別人給我它的完整BCB 程式檔案時 會談出一個錯誤訊息視窗

『Privileged instruction』

上網查了一下 說明是特權指令,有些指令是被受到限制的。

自己也第一次遇到這樣,也不知道哪些指令是受到限制的,且在他自己的電腦執行卻都沒問題,

請問遇到這樣問題該怎麼解決呢?

還是我BCB的版本用太新?還是太舊?

有看到網友說不能在WIN2000下執行某指令?那WIN7 WIN XP也不行?

還有網友說可以修改權限的?

有沒有甚麼其他方法可以解決?

我的電腦是WIN7 跟 WIN XP 兩台都試過了

BCB是用 Borland C++ Builder 6

控制卡是用 PCI-8136

如果需要看 整個程式語言 可以留言跟我說喔^^
...全文
12598 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kill7139 2015-04-14
  • 打赏
  • 举报
回复
//-------------------------------------------------------------Fuzzy sys1 void Sys1_Fuz(void) { int k1p,j1p; float x1_tx1,x1_tx2,x1_tx; x1_er = get1_err * x1_ge; x1_er_ch = get1_ce * x1_gc; if(x1_er>3) x1_er=3; if(x1_er<-3) x1_er=-3; if(x1_er_ch>3) x1_er_ch=3; if(x1_er_ch<-3) x1_er_ch=-3; x1_ee=x1_er+3; x1_eec=x1_er_ch+3; for(k1p=0;k1p<8;k1p++) { if(e1_tab[k1p]>x1_ee) break; } wi1=k1p-1; for(j1p=0;j1p<8;j1p++) { if(ce1_tab[j1p]>x1_eec) break; } wj1=j1p-1; x1_tx1 = x1_rule[wi1][wj1]+(x1_ee - e1_tab[wi1])*(x1_rule[wi1+1][wj1]-x1_rule[wi1][wj1]); x1_tx2 = x1_rule[wi1][wj1+1]+(x1_ee - e1_tab[wi1])*(x1_rule[wi1+1][wj1+1]-x1_rule[wi1][wj1+1]); x1_tx = x1_tx1+(x1_eec - ce1_tab[wj1])*(x1_tx2 - x1_tx1); test1_u += x1_tx*x1_gu; if (test1_u < -10) test1_u=-10; if (test1_u > 10) test1_u=10; _8136_A_Write_Volt(CARD0,0,test1_u); if(i<ni) { //Er_Road[i]=nep; x1_vol[i]=test1_u; } } //-----------------------------------------------------------------Fuzzy Sys2 void Sys2_Fuz(void) { int k2p,j2p; float x2_tx1,x2_tx2,x2_tx; x2_er = get2_err * x2_ge; x2_er_ch = get2_ce * x2_gc; if(x2_er>3) x2_er=3; if(x2_er<-3) x2_er=-3; if(x2_er_ch>3) x2_er_ch=3; if(x2_er_ch<-3) x2_er_ch=-3; x2_ee=x2_er+3; x2_eec=x2_er_ch+3; for(k2p=0;k2p<8;k2p++) { if(e2_tab[k2p]>x2_ee) break; } wi2=k2p-1; for(j2p=0;j2p<8;j2p++) { if(ce2_tab[j2p]>x2_eec) break; } wj2=j2p-1; x2_tx1 = x2_rule[wi2][wj2]+(x2_ee - e2_tab[wi2])*(x2_rule[wi2+1][wj2]-x2_rule[wi2][wj2]); x2_tx2 = x2_rule[wi2][wj2+1]+(x2_ee - e2_tab[wi2])*(x2_rule[wi2+1][wj2+1]-x2_rule[wi2][wj2+1]); x2_tx = x2_tx1+(x2_eec - ce2_tab[wj2])*(x2_tx2 - x2_tx1); test2_u += x2_tx*x2_gu; if (test2_u < -10) test2_u=-10; if (test2_u > 10) test2_u=10; _8136_A_Write_Volt(CARD0,1,test2_u); if(i<ni) { x2_vol[i]=test2_u; } } //------------------------------------------------------------------- void Sys1_Soc(void) { x1_er = get1_err * x1_ge; x1_er_ch = get1_ce * x1_gc; //======================== x1_u_ch=x1_Lookup(); x1_Modify(); test1_u += x1_u_ch*x1_gu; if (test1_u < -10) test1_u=-10; if (test1_u > 10) test1_u=10; //==================================== _8136_A_Write_Volt(CARD0,0,test1_u); if(i<ni) { x1_vol[i]=test1_u; } } //--------------------------------------------------------------------------- void Sys2_Soc(void) { x2_er = get2_err * x2_ge; x2_er_ch = get2_ce * x2_gc; //======================== x2_u_ch=x2_Lookup(); x2_Modify(); test2_u += x2_u_ch*x2_gu; if (test2_u < -10) test2_u=-10; if (test2_u > 10) test2_u=10; //==================================== _8136_A_Write_Volt(CARD0,1,test2_u); if(i<ni) { x2_vol[i]=test2_u; } } //--------------------------------------------------------------------------- void ShowGra(void) { if(i%20==0) { Form3->Series2->AddXY((1./fs)*i,x1_yout[i],""); Form3->Series4->AddXY((1./fs)*i,uc1[(i%uc1_num)],""); Form3->Series1->AddXY((1./fs)*i,x2_yout[i],""); Form3->Series6->AddXY((1./fs)*i,uc2[(i%uc2_num)],""); Form3->Series3->AddXY((1./fs)*i,x1_vol[i],""); Form3->Series7->AddXY((1./fs)*i,x2_vol[i],""); /*Form3->Chart1->Series[2]->AddXY((1./fs)*i,uc[(i%uc_num)],""); Form1->Chart2->Series[1]->AddXY((1./fs)*i,Body[i],""); Form1->Chart2->Series[0]->AddXY((1./fs)*i,Er_Road[i],""); Form1->Chart3->Series[1]->AddXY((1./fs)*i,V_Body[i],""); Form1->Chart3->Series[0]->AddXY((1./fs)*i,V_Road[i],"");*/ } } //--------------------------------------------------------------------------- float x1_Lookup(void) { int k1p,j1p; float x1_tx1,x1_tx2,x1_tx; if(x1_er>3) x1_er=3; if(x1_er<-3) x1_er=-3; if(x1_er_ch>3) x1_er_ch=3; if(x1_er_ch<-3) x1_er_ch=-3; x1_ee=x1_er+3; x1_eec=x1_er_ch+3; for(k1p=0;k1p<8;k1p++) { if(e1_tab[k1p]>x1_ee) break; } wi1=k1p-1; for(j1p=0;j1p<8;j1p++) { if(ce1_tab[j1p]>x1_eec) break; } wj1=j1p-1; x1_tx1 = x1_tab[wi1][wj1]+(x1_ee - e1_tab[wi1])*(x1_tab[wi1+1][wj1]-x1_tab[wi1][wj1]); x1_tx2 = x1_tab[wi1][wj1+1]+(x1_ee - e1_tab[wi1])*(x1_tab[wi1+1][wj1+1]-x1_tab[wi1][wj1+1]); x1_tx = x1_tx1+(x1_eec - ce1_tab[wj1])*(x1_tx2 - x1_tx1); return x1_tx; } //--------------------------------------------------------------------------- float x2_Lookup(void) { int k2p,j2p; float x2_tx1,x2_tx2,x2_tx; if(x2_er>3) x2_er=3; if(x2_er<-3) x2_er=-3; if(x2_er_ch>3) x2_er_ch=3; if(x2_er_ch<-3) x2_er_ch=-3; x2_ee=x2_er+3; x2_eec=x2_er_ch+3; for(k2p=0;k2p<8;k2p++) { if(e2_tab[k2p]>x2_ee) break; } wi2=k2p-1; for(j2p=0;j2p<8;j2p++) { if(ce2_tab[j2p]>x2_eec) break; } wj2=j2p-1; x2_tx1 = x2_tab[wi2][wj2]+(x2_ee - e2_tab[wi2])*(x2_tab[wi2+1][wj2]-x2_tab[wi2][wj2]); x2_tx2 = x2_tab[wi2][wj2+1]+(x2_ee - e2_tab[wi2])*(x2_tab[wi2+1][wj2+1]-x2_tab[wi2][wj2+1]); x2_tx = x2_tx1+(x2_eec - ce2_tab[wj2])*(x2_tx2 - x2_tx1); return x2_tx; } //--------------------------------------------------------------------------- void x1_Modify(void) { float performance1; float M1=1.0; performance1=(x1_r/M1)*((1-x1_tho)*x1_er + x1_tho*x1_er_ch); x1_tab[wi1][wj1]+=((e1_tab[wi1+1] - x1_ee)*(ce1_tab[wj1+1] - x1_eec))*performance1; x1_tab[wi1][wj1+1]+=((e1_tab[wi1+1] - x1_ee)*(x1_eec - ce1_tab[wj1]))*performance1; x1_tab[wi1+1][wj1]+=((x1_ee - e1_tab[wi1])*(ce1_tab[wj1+1]-x1_eec))*performance1; x1_tab[wi1+1][wj1+1]+=((x1_ee - e1_tab[wi1])*(x1_eec - ce1_tab[wj1]))*performance1; if(x1_tab[wi1][wj1]>1) x1_tab[wi1][wj1]=1; if(x1_tab[wi1][wj1+1]>1) x1_tab[wi1][wj1+1]=1; if(x1_tab[wi1+1][wj1]>1) x1_tab[wi1+1][wj1]=1; if(x1_tab[wi1+1][wj1+1]>1) x1_tab[wi1+1][wj1+1]=1; if(x1_tab[wi1][wj1]<-1) x1_tab[wi1][wj1]=-1; if(x1_tab[wi1][wj1+1]<-1) x1_tab[wi1][wj1+1]=-1; if(x1_tab[wi1+1][wj1]<-1) x1_tab[wi1+1][wj1]=-1; if(x1_tab[wi1+1][wj1+1]<-1) x1_tab[wi1+1][wj1+1]=-1; } //--------------------------------------------------------------------------- void x2_Modify(void) { float performance2; float M2=1.0; performance2=(x2_r/M2)*((1-x2_tho)*x2_er + x2_tho*x2_er_ch); x2_tab[wi2][wj2]+=((e2_tab[wi2+1] - x2_ee)*(ce2_tab[wj2+1] - x2_eec))*performance2; x2_tab[wi2][wj2+1]+=((e2_tab[wi2+1] - x2_ee)*(x2_eec - ce2_tab[wj2]))*performance2; x2_tab[wi2+1][wj2]+=((x2_ee - e2_tab[wi2])*(ce2_tab[wj2+1]-x2_eec))*performance2; x2_tab[wi2+1][wj2+1]+=((x2_ee - e2_tab[wi2])*(x2_eec - ce2_tab[wj2]))*performance2; if(x2_tab[wi2][wj2]>1) x2_tab[wi2][wj2]=1; if(x2_tab[wi2][wj2+1]>1) x2_tab[wi2][wj2+1]=1; if(x2_tab[wi2+1][wj2]>1) x2_tab[wi2+1][wj2]=1; if(x2_tab[wi2+1][wj2+1]>1) x2_tab[wi2+1][wj2+1]=1; if(x2_tab[wi2][wj2]<-1) x2_tab[wi2][wj2]=-1; if(x2_tab[wi2][wj2+1]<-1) x2_tab[wi2][wj2+1]=-1; if(x2_tab[wi2+1][wj2]<-1) x2_tab[wi2+1][wj2]=-1; if(x2_tab[wi2+1][wj2+1]<-1) x2_tab[wi2+1][wj2+1]=-1; } //--------------------------------------------------------------------------- void __fastcall TForm1::SingleBClick(TObject *Sender) { System2->Enabled=false; System1->Color=clMoneyGreen; System2->Color=clSilver; } //--------------------------------------------------------------------------- void __fastcall TForm1::DoubleBClick(TObject *Sender) { System1->Enabled=true; System2->Enabled=true; System1->Color=clMoneyGreen; System2->Color=clMoneyGreen; } //--------------------------------------------------------------------------- void __fastcall TForm1::PIDB1Click(TObject *Sender) { x1_C_SW=1; Lb6->Caption ="K_P"; Lb7->Caption ="K_I"; Lb8->Caption ="K_D"; Lb22->Visible=false; Lb32->Visible=false; tho1Edit->Visible=false; L_r1Edit->Visible=false; Table1->Visible=false; Table2->Visible=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::FuzB1Click(TObject *Sender) { x1_C_SW=2; Lb6->Caption ="Error"; Lb7->Caption ="D_Error"; Lb8->Caption ="U"; Lb22->Visible=false; Lb32->Visible=false; tho1Edit->Visible=false; L_r1Edit->Visible=false; Table1->Visible=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::SOFCB1Click(TObject *Sender) { x1_C_SW=3; Lb6->Caption ="Error"; Lb7->Caption ="D_Error"; Lb8->Caption ="U"; Lb22->Visible=true; Lb32->Visible=true; tho1Edit->Visible=true; L_r1Edit->Visible=true; Table1->Visible=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::GPFCB1Click(TObject *Sender) { x1_C_SW=4; Lb6->Caption ="Error"; Lb7->Caption ="D_Error"; Lb8->Caption ="U"; Lb22->Visible=false; Lb32->Visible=false; tho1Edit->Visible=false; L_r1Edit->Visible=false; Table1->Visible=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::PIDB2Click(TObject *Sender) { x2_C_SW=1; Lb10->Caption ="K_P"; Lb11->Caption ="K_I"; Lb15->Caption ="K_D"; Lb16->Visible=false; Lb17->Visible=false; tho2Edit->Visible=false; L_r2Edit->Visible=false; Table2->Visible=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::FuzB2Click(TObject *Sender) { x2_C_SW=2; Lb10->Caption ="Error"; Lb11->Caption ="D_error"; Lb15->Caption ="U"; Lb16->Visible=false; Lb17->Visible=false; tho2Edit->Visible=false; L_r2Edit->Visible=false; Table2->Visible=true; } //---------------------------------------------------------------------------
kill7139 2015-04-14
  • 打赏
  • 举报
回复
void __fastcall TForm1::btnExitClick(TObject *Sender) { //bStopCounter = true; if(TMyThread) { TMyThread->Terminate(); } _8136_A_Write_Volt(CARD0,0,0); _8136_A_Write_Volt(CARD0,1,0); free_mem(); _8136_S_Close(CARD0); Close(); } //--------------------------------------------------------------------------- void cod_set() { _8136_S_INT_Control(CARD0,1); _8136_A_Initial(CARD0); _8136_P_Initial(CARD0); _8136_P_Set_Input_Type(CARD0,0,E_A_B,X_4); _8136_P_Set_Input_Type(CARD0,1,E_A_B,X_4); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { if(TMyThread) { TMyThread->Terminate(); } _8136_A_Write_Volt(CARD0,0,0); _8136_A_Write_Volt(CARD0,1,0); //free_mem(); } //--------------------------------------------------------------------------- void save_data() { FILE *fop1; char *filename; if(Form1->SaveDialog1->Execute()) { filename=Form1->SaveDialog1->FileName.c_str(); fop1=fopen(filename,"w"); if(fop1==NULL) { ShowMessage("開檔錯誤, 請關閉已開啟的檔案!"); } else { fprintf(fop1," Sampling Frequence= %d \n Sampling Number = %d \n",fs,ni); fprintf(fop1," System_1 \t\t\t\t\t System_2 \n"); fprintf(fop1," P= %f \n I= %f \n D= %f \n ",x1_ge,x1_gc,x1_gu); fprintf(fop1,"Ref. \t %s \t error \t %s \t\t Ref. \t %s \t error \t %s \n",Form1->x1_ADC->Text,Form1->x1_DAC->Text,Form1->x2_ADC->Text,Form1->x2_DAC->Text); for (i=0;i < ni;i++) { fprintf(fop1,"%f \t %f \t %f \t %f \t\t %f \t %f \t %f \t %f \n",uc1[(i%uc1_num)],x1_yout[i],x1_error[i],x1_vol[i],uc2[(i%uc2_num)],x2_yout[i],x2_error[i],x2_vol[i]); } fclose(fop1); /* Free Dynmic memory*/ //free_mem(); ShowMessage("Save data OK!"); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::btnsaveClick(TObject *Sender) { save_data(); } //--------------------------------------------------------------------------- void set1_wave(void) { if(Form1->CBB->Text=="Sin") inp1_type=0; else if(Form1->CBB->Text=="Cos") inp1_type=1; else if(Form1->CBB->Text=="Square") inp1_type=2; else if(Form1->CBB->Text=="Triangular") inp1_type=3; else if(Form1->CBB->Text=="Step") inp1_type=4; else inp1_type=0; if(Form1->CBBF->Text=="0.1") freq1=0.1; else if(Form1->CBBF->Text=="0.15") freq1=0.15; else if(Form1->CBBF->Text=="0.2") freq1=0.2; else if(Form1->CBBF->Text=="0.25") freq1=0.25; else if(Form1->CBBF->Text=="0.3") freq1=0.3; else if(Form1->CBBF->Text=="0.4") freq1=0.4; else if(Form1->CBBF->Text=="0.5") freq1=0.5; else if(Form1->CBBF->Text=="1.0") freq1=1.0; else freq1=0.1; period1=1./freq1; uc1_num=period1*fs; } //--------------------------------------------------------------------------- void set2_wave(void) { if(Form1->CBB2->Text=="Sin") inp2_type=0; else if(Form1->CBB2->Text=="Cos") inp2_type=1; else if(Form1->CBB2->Text=="Square") inp2_type=2; else if(Form1->CBB2->Text=="Triangular") inp2_type=3; else if(Form1->CBB2->Text=="Step") inp2_type=4; else inp2_type=0; if(Form1->CBBF2->Text=="0.1") freq2=0.1; else if(Form1->CBBF2->Text=="0.15") freq2=0.15; else if(Form1->CBBF2->Text=="0.2") freq2=0.2; else if(Form1->CBBF2->Text=="0.25") freq2=0.25; else if(Form1->CBBF2->Text=="0.3") freq2=0.3; else if(Form1->CBBF2->Text=="0.4") freq2=0.4; else if(Form1->CBBF2->Text=="0.5") freq2=0.5; else if(Form1->CBBF2->Text=="1.0") freq2=1.0; else freq2=0.1; period2=1./freq2; uc2_num=period2*fs; } //--------------------------------------------------------------------------- void set1_uc(void) { float dt1,tp1,t1_sw; /* input wave variable */ double temp1; int j1_count; dt1=1./(fs); tp1=1./((float)(freq1)); t1_sw=0; j1_count=0; if (inp1_type == 0) /* sine wave */ { for (int j=0;j < uc1_num;j++) { temp1=(double)(2*pi*freq1*j*dt1); uc1[j]=mag1*sin(temp1); } } else if(inp1_type == 1) /* Cosine wave */ { for (int j=0;j < uc1_num;j++) { temp1=(double)(2*pi*freq1*j*dt1); uc1[j]=mag1*cos(temp1); } } else if (inp1_type == 2) /* Square wave */ { for (int j=0;j < uc1_num;j++) { t1_sw=j1_count*dt1; if (t1_sw >= tp1/2) { uc1[j]=-mag1; } else { uc1[j]=mag1; } j1_count=j1_count+1; if (t1_sw >= tp1) { j1_count=0; t1_sw=0; } } } else if (inp1_type == 3) /* Triangular wave */ { for (int j=0;j < uc1_num;j++) { t1_sw=j1_count*dt1; if (t1_sw >= tp1/2) { uc1[j]=mag1*(1+4*((j1_count*dt1)/tp1-1)); } else { uc1[j]=mag1*(1-(4/tp1)*j1_count*dt1); } j1_count=j1_count+1; if (t1_sw >= tp1) { j1_count=0; t1_sw=0; } } } else if (inp1_type == 4) /* Step wave */ { for (int j=0;j < uc1_num;j++) { uc1[j]=mag1; } } } //--------------------------------------------------------------------------- void set2_uc(void) { float dt2,tp2,t2_sw; /* input wave variable */ double temp2; int j2_count; dt2=1./(fs); tp2=1./((float)(freq2)); t2_sw=0; j2_count=0; if (inp2_type == 0) /* sine wave */ { for (int j=0;j < uc2_num;j++) { temp2=(double)(2*pi*freq2*j*dt2); uc2[j]=mag2*sin(temp2); } } else if(inp2_type == 1) /* Cosine wave */ { for (int j=0;j < uc2_num;j++) { temp2=(double)(2*pi*freq2*j*dt2); uc2[j]=mag2*cos(temp2); } } else if (inp2_type == 2) /* Square wave */ { for (int j=0;j < uc2_num;j++) { t2_sw=j2_count*dt2; if (t2_sw >= tp2/2) { uc2[j]=-mag2; } else { uc2[j]=mag2; } j2_count=j2_count+1; if (t2_sw >= tp2) { j2_count=0; t2_sw=0; } } } else if (inp2_type == 3) /* Triangular wave */ { for (int j=0;j < uc2_num;j++) { t2_sw=j2_count*dt2; if (t2_sw >= tp2/2) { uc2[j]=mag2*(1+4*((j2_count*dt2)/tp2-1)); } else { uc2[j]=mag2*(1-(4/tp2)*j2_count*dt2); } j2_count=j2_count+1; if (t2_sw >= tp2) { j2_count=0; t2_sw=0; } } } else if (inp2_type == 4) /* Step wave */ { for (int j=0;j < uc2_num;j++) { uc2[j]=mag2; } } } //------------------------------------------------------------------- /* dynamic memory alloction */ void mem(void) { x1_yout = (float far *) farcalloc(ni,sizeof(float)); if (x1_yout == NULL) { ShowMessage(" x1_yout failed to allocate"); exit(0); } x1_vol= (float far *) farcalloc(ni,sizeof(float)); if (x1_vol == NULL) { ShowMessage("x1_vol failed to allocate"); exit(0); } x2_yout = (float far *) farcalloc(ni,sizeof(float)); if (x2_yout == NULL) { ShowMessage("x2_yout failed to allocate"); exit(0); } x2_vol = (float far *) farcalloc(ni,sizeof(float)); if (x2_vol == NULL) { ShowMessage("x2_vol failed to allocate"); exit(0); } x1_error= (float far *) farcalloc(ni,sizeof(float)); if (x1_error == NULL) { ShowMessage("x1_error failed to allocate"); exit(0); } x2_error= (float far *) farcalloc(ni,sizeof(float)); if (x2_error == NULL) { ShowMessage("x2_error failed to allocate"); exit(0); } Sys1_pre_val= (float far *) farcalloc(ni+2,sizeof(float)); if (Sys1_pre_val == NULL) { ShowMessage("Sys1_pre_val failed to allocate"); exit(0); } Sys2_pre_val= (float far *) farcalloc(ni+2,sizeof(float)); if (Sys2_pre_val == NULL) { ShowMessage("Sys2_pre_val failed to allocate"); exit(0); } /* Input Wave */ uc1 = (float far *) farcalloc(uc1_num,sizeof(float)); if (uc1 == NULL) { ShowMessage("uc1 failed to allocate"); exit(0); } uc2 = (float far *) farcalloc(uc2_num,sizeof(float)); if (uc2 == NULL) { ShowMessage("uc2 failed to allocate"); exit(0); } } //------------------------------------------------------------------- void free_mem(void) { if(x1_yout != NULL) farfree(x1_yout); //delete[] x1_yout; if(x1_vol != NULL) farfree(x1_vol); //delete[] x1_vol; if(x2_yout != NULL) farfree(x2_yout); //delete[] x2_yout; if(x2_vol != NULL) farfree(x2_vol); //delete[] x2_vol; if(x1_error != NULL) farfree(x1_error); //delete[] x1_error; if(x2_error != NULL) farfree(x2_error); //delete[] x2_error; if(Sys1_pre_val !=NULL) farfree(Sys1_pre_val); if(Sys2_pre_val !=NULL) farfree(Sys2_pre_val); if(uc1 != NULL) farfree(uc1); //delete[] uc1; if(uc2 != NULL) farfree(uc2); //delete[] uc2; } //------------------------------------------------------------------- void Sys1_PID(void) { //nei1=ei1+(get1_err + get1_ce)/2; nei1=ei1+get1_err; test1_u=(x1_ge*get1_err) + (x1_gc*nei1) + (x1_gu*get1_ce); // test1_u=uc1[(i%uc1_num)]; if (test1_u < -10) test1_u=-10; if (test1_u > 10) test1_u=10; _8136_A_Write_Volt(CARD0,0,test1_u); /* if i< ni Save data*/ if(i<ni) { x1_vol[i]=test1_u; } ei1=nei1; } //------------------------------------------------------------ void Sys2_PID(void) { //nei2=ei2+(get2_err + get2_ce)/2; nei2=ei2 + get2_err; test2_u=(x2_ge*get2_err) + (x2_gc*nei2) + (x2_gu*get2_ce); if (test2_u < -10) test2_u=-10; if (test2_u > 10) test2_u=10; _8136_A_Write_Volt(CARD0,1,test2_u); /* if i< ni Save data*/ if(i<ni) { //Er_Road[i]=nep; x2_vol[i]=test2_u; } ei2=nei2; }
kill7139 2015-04-14
  • 打赏
  • 举报
回复
#include <vcl.h> #include "pci_8136.h" #include <motion.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <alloc.h> #include <conio.h> #include <io.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" //------------------------------------ #pragma package(smart_init) #pragma resource "*.dfm" #define pi 3.141592654 #define middle1 65. //total stroke 26000*0.005=130 mm upper optical// #define middle2 100. //total stroke 40000*0.005=200 mm down optical// #define sample 4 /* sampling point of grey prediction */ TForm1 *Form1; void x1_ConSw(void); //控制器選擇 void x2_ConSw(void); void Sys1_Check(void); /*判斷選擇何Channel 函式*/ void Sys2_Check(void); void x1_AE_read(void); /*讀取選擇的Channel 函式*/ void x2_AE_read(void); void set1_wave(void); void set2_wave(void); void set1_uc(void); void set2_uc(void); void set1_wave(void); void set2_wave(void); void Sys1_PID(void); void Sys2_PID(void); void Sys1_Fuz(void); void Sys2_Fuz(void); void Sys1_GPFC(void); void Sys2_GPFC(void); float Sys1_gpre(void); float Sys2_gpre(void); float x1_Lookup(void); float x2_Lookup(void); void x1_Modify(void); void x2_Modify(void); void Sys1_Soc(void); void Sys2_Soc(void); void cod_set(void); extern void save_data(void); int Trig_P(void); void mem(void); void free_mem(void); void ShowGra(void); //======================= //int x1_DA,x2_DA, int x1_AE,x2_AE; /*判斷選擇何Channel 的變數*/ I32 x1_EN,x2_EN; /* Encoder Counter*/ F64 x1_AD,x2_AD; /* AD (voltage)*/ float Sys1_out,Sys2_out; /*系統輸出*/ int x1_C_SW=1; /*判斷所選擇的Controller*/ int x2_C_SW=1; float Sys1_resol; /*元件的解析度*/ float Sys2_resol; //======================= int i; int ni; /* Save data Sum*/ float sum_err1; float sum_err2; float sum_rms1; float sum_rms2; //int T_ni; /* Experiment idex */ int fs; int TimerInterval; bool bStopCounter; float far *uc1; float far *uc2; float far *x1_yout; float far *x1_vol; float far *x2_yout; float far *x2_vol; float far *x1_error; float far *x2_error; float far *Sys1_pre_val; float far *Sys2_pre_val; /*8136 parameter*/ I16 TotalCard; /*wave parameter*/ //======System1======= long int j1=0; long int uc1_num; int inp1_type; float freq1,mag1; float period1; //======System2======= long int j2=0; long int uc2_num; int inp2_type; float freq2,mag2; float period2; /* PID Controller Parameter */ float ei1,nei1; float ei2,nei2; /*Body SOC Controller Parameter */ //========System1============ int jj1; float x1_ge,x1_gc,x1_gu; float get1_err,get1_ce; float x1_er,x1_er_ch,x1_er_old=0.0; float x1_ee,x1_eec; float x1_u_ch; int wi1,wj1; float e1_tab[]={0,1,2,3,4,5,6,7}; float ce1_tab[]={0,1,2,3,4,5,6,7}; float x1_tab[8][8]; float x1_r,x1_tho; float test1_u; //========System2============ int jj2; float x2_ge,x2_gc,x2_gu; float get2_err,get2_ce; float x2_er,x2_er_ch,x2_er_old=0.0; float x2_ee,x2_eec; float x2_u_ch; int wi2,wj2; float e2_tab[]={0,1,2,3,4,5,6,7}; float ce2_tab[]={0,1,2,3,4,5,6,7}; float x2_tab[8][8]; float x2_r,x2_tho; float test2_u; /* gray Controller Parameter System 1 */ float Sys1_buff[sample]; float Sys1_er_hat,Sys1_ce_hat; float Sys1_para[2]; /* gray Controller Parameter System 2 */ float Sys2_buff[sample]; float Sys2_er_hat,Sys2_ce_hat; float Sys2_para[2]; //****************************** F64 P_A_f; /*濾波用變數*/ F64 AccOut; F64 P_AccOut ; //***************************** float x1_rule[7][7]={ { 1.0, 1.0, 0.8, 0.6, 0.4, 0.2, 0.0}, { 1.0, 0.8, 0.6, 0.4, 0.2, 0.0,-0.2}, { 0.8, 0.6, 0.4, 0.2, 0.0, -0.2,-0.4}, { 0.6, 0.4, 0.2, 0.0, -0.2, -0.4,-0.6}, { 0.4, 0.2, 0.0, -0.2, -0.4, -0.6,-0.8}, { 0.2, 0.0, -0.2, -0.4, -0.6, -0.8,-1.0}, { 0.0, -0.2, -0.4, -0.6, -0.8, -1.0,-1.0} }; float x2_rule[7][7]={ { 1.0, 1.0, 0.8, 0.6, 0.4, 0.2, 0.0}, { 1.0, 0.8, 0.6, 0.4, 0.2, 0.0,-0.2}, { 0.8, 0.6, 0.4, 0.2, 0.0, -0.2,-0.4}, { 0.6, 0.4, 0.2, 0.0, -0.2, -0.4,-0.6}, { 0.4, 0.2, 0.0, -0.2, -0.4, -0.6,-0.8}, { 0.2, 0.0, -0.2, -0.4, -0.6, -0.8,-1.0}, { 0.0, -0.2, -0.4, -0.6, -0.8, -1.0,-1.0} }; //------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //cod_set(); } //-------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { _8136_Initial(&TotalCard); if(TotalCard==0)exit(0); cod_set(); Table1->Visible=false; Table2->Visible=false; // Set table Table1->Cells[0][0]="U"; Table1->Cells[1][0]="NB"; Table1->Cells[2][0]="NM"; Table1->Cells[3][0]="NS"; Table1->Cells[4][0]="ZO"; Table1->Cells[5][0]="PS"; Table1->Cells[6][0]="PM"; Table1->Cells[7][0]="PB"; Table1->Cells[0][1]="NB"; Table1->Cells[0][2]="NM"; Table1->Cells[0][3]="NS"; Table1->Cells[0][4]="ZO"; Table1->Cells[0][5]="PS"; Table1->Cells[0][6]="PM"; Table1->Cells[0][7]="PB"; Table2->Cells[0][0]="U"; Table2->Cells[1][0]="NB"; Table2->Cells[2][0]="NM"; Table2->Cells[3][0]="NS"; Table2->Cells[4][0]="ZO"; Table2->Cells[5][0]="PS"; Table2->Cells[6][0]="PM"; Table2->Cells[7][0]="PB"; Table2->Cells[0][1]="NB"; Table2->Cells[0][2]="NM"; Table2->Cells[0][3]="NS"; Table2->Cells[0][4]="ZO"; Table2->Cells[0][5]="PS"; Table2->Cells[0][6]="PM"; Table2->Cells[0][7]="PB"; for(int bi=1;bi<8;bi++) { for (int bj=1;bj<8;bj++) { Table1->Cells[bj][bi]=FloatToStrF(x1_rule[bi-1][bj-1],ffFixed,2,2); Table2->Cells[bj][bi]=FloatToStrF(x2_rule[bi-1][bj-1],ffFixed,2,2); } } //================= System1->Color=clMoneyGreen; System2->Color=clMoneyGreen; //============= tho1Edit->Visible=false; L_r1Edit->Visible=false; Lb22->Visible=false; Lb32->Visible=false; Lb16->Visible=false; Lb17->Visible=false; tho2Edit->Visible=false; L_r2Edit->Visible=false; } //--------------------------------------------- void __fastcall TForm1::btnStartClick(TObject *Sender) { //判斷Channel 是否重復 Sys1_Check(); Sys2_Check(); if((Edit1->Text=="")||(Edit2->Text=="") || (x1_AE==x2_AE)) { ShowMessage("Input Data Error!"); } else { free_mem(); TMyThread = new MyThread(true); if(!TMyThread) { ShowMessage("Error! Cannot Create Thread."); Application->Terminate(); } TMyThread->Priority=tpTimeCritical; Form3->Series2->Clear(); Form3->Series3->Clear(); Form3->Series4->Clear(); Form3->Series5->Clear(); Form3->Series1->Clear(); Form3->Series6->Clear(); Form3->Series7->Clear(); Form3->Series8->Clear(); if(SingleB->Checked==true) System2->Enabled =false; else { System1->Enabled =true; System2->Enabled =true; } //==============System1============ x1_ge=StrToFloat(e1_s1Edit->Text); x1_gc=StrToFloat(ec1_s2Edit->Text); x1_gu=StrToFloat(u1_s3Edit->Text); x1_tho=StrToFloat(tho1Edit->Text); x1_r=StrToFloat(L_r1Edit->Text); Sys1_resol=StrToFloat(Sys1_res->Text); //==============System2=========== x2_ge=StrToFloat(e2_s1Edit->Text); x2_gc=StrToFloat(ec2_s2Edit->Text); x2_gu=StrToFloat(u2_s3Edit->Text); x2_tho=StrToFloat(tho2Edit->Text); x2_r=StrToFloat(L_r2Edit->Text); Sys2_resol=StrToFloat(Sys2_res->Text); TimerInterval=StrToInt(Edit1->Text); fs=1000/TimerInterval; ni=StrToInt(Edit2->Text); set1_wave(); set2_wave(); mag1=StrToFloat(w1mag->Text); mag2=StrToFloat(w2mag->Text); //=================rule read for(int bi=1;bi<8;bi++) { for (int bj=1;bj<8;bj++) { x1_rule[bi-1][bj-1]=StrToFloat(Table1->Cells[bj][bi]); x2_rule[bi-1][bj-1]=StrToFloat(Table2->Cells[bj][bi]); } } i=0; /* Reset PID parameter*/ ei1=0.0; ei2=0.0; /* Reset Body_SOC Parameter*/ x1_er_old=0.0; x2_er_old=0.0; test1_u=0.0; test2_u=0.0; sum_err1=0.0; sum_err2=0.0; sum_rms1=0.0; sum_rms2=0.0; mem(); set1_uc(); set2_uc(); _8136_A_Write_Volt(CARD0,0,0); _8136_A_Write_Volt(CARD0,1,0); Application->MessageBox("Sure to Start!","Information",MB_ICONASTERISK); _8136_P_Clear(CARD0,0); _8136_P_Clear(CARD0,1); btnStop->Enabled=true; btnStart->Enabled=false; bStopCounter = false; btnsave->Enabled=false; Form3->Show(); TMyThread->Resume(); } } //------------------------------- void __fastcall TForm1::btnStopClick(TObject *Sender) { bStopCounter = true; _8136_A_Write_Volt(CARD0,0,0); _8136_A_Write_Volt(CARD0,1,0); // _8136_A_Write_Volt(CARD0,2,0); btnStop->Enabled=false; btnStart->Enabled=true; } //------------------------------ int Trig_P() { x1_AE_read(); x2_AE_read(); //====System 1==== get1_err =uc1[(i%uc1_num)]-(Sys1_out*Sys1_resol); x1_error[i]=get1_err; get1_ce = get1_err - x1_er_old; x1_er_old = get1_err; // RMS Calculate if(i>0) { sum_err1+=get1_err*get1_err; sum_rms1=sqrt(sum_err1/i); } //==== System 2 === get2_err = uc2[(i%uc2_num)]-(Sys2_out*Sys2_resol); x2_error[i]=get2_err; get2_ce = get2_err - x2_er_old; x2_er_old = get2_err; if(i>0) { sum_err2+=get2_err*get2_err; sum_rms2=sqrt(sum_err2/i); } if(Form1->SingleB->Checked==true) { x1_ConSw(); } else { x1_ConSw(); x2_ConSw(); } ShowGra(); i++; return(i); }
我不懂电脑 2015-04-08
  • 打赏
  • 举报
回复
保证和他的操作系统配置什么的一致,最好是ghost过来,硬件也一样,然后用管理员登陆使用。
宝龙哥 2015-04-08
  • 打赏
  • 举报
回复
检查设备是否能使用,检查设备管理器中是否有黄色叹号设备 如果一切正常,把你的代码发上来看一下
kill7139 2015-04-08
  • 打赏
  • 举报
回复
引用 1 楼 kfrght 的回复:
你这个估计是某个指针没有做判断就直接使用,而这个指针在你的电脑上是空的之类的 这个你检查一下你的电脑上是否安装了和那个开发人员一样的 PCI-8136卡 设备
有喔 都有相同設備
宝龙哥 2015-04-08
  • 打赏
  • 举报
回复
你这个估计是某个指针没有做判断就直接使用,而这个指针在你的电脑上是空的之类的 这个你检查一下你的电脑上是否安装了和那个开发人员一样的 PCI-8136卡 设备

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧