不完全微分PID控制程序资料_第1页
不完全微分PID控制程序资料_第2页
不完全微分PID控制程序资料_第3页
不完全微分PID控制程序资料_第4页
不完全微分PID控制程序资料_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/#include #pragma hdrstop#include Unit1.h/#pragma package(smart_init)#pragma resource *.dfmfloat SP=6.0,PV=0.0,MV=0.0,SP_T=0;float HS=10.0,LS=2.0,HL=7.5,LL=2.5;float P=0.5,I=10,D=5,T=1.0, Tf=1.0;float Uk=0.0,Uk1=0.0,DeltaUk=0.0,DeltaUk1=1.0;float Ek=0.0,Ek1=0.0,Ek2=0.0;float a,q0,q1,q2;int pvtrend48

2、0;int sptrend480;int mvtrend480;TForm1 *Form1;/_fastcall TForm1:TForm1(TComponent* Owner): TForm(Owner)/void _fastcall TForm1:FormCreate(TObject *Sender) hDLL=LoadLibrary(ac6611.dll); if(hDLL!=NULL)Label1-Caption = AC6611.dll load ok!;(FARPROC&)AC6611_CreateDevice=GetProcAddress(hDLL,AC6611_CreateDe

3、vice); / 创建 驱动句柄(FARPROC &)AC6611_CloseDevice=GetProcAddress(hDLL,AC6611_CloseDevice); / 关 闭驱动句柄(FARPROC&)AC6611_DI=GetProcAddress(hDLL,AC6611_DI);/数字量输入,port=0-1两个通道, 8位数据由 DiData 返回(FARPROC&)AC6611_DO=GetProcAddress(hDLL,AC6611_DO);/数字量输出,port=0-1 两个通道, 8 位数据由 DoData 输出(FARPROC&)AC6611_DiBit=GetPr

4、ocAddress(hDLL,AC6611_DiBit);/数字量输入,port=0-1 两个通道,指定位输入(FARPROC&)AC6611_DoBit=GetProcAddress(hDLL,AC6611_DoBit);/数字量输出,port=0-1 两个通道,指定位输出(FARPROC&)AC6611_DA=GetProcAddress(hDLL,AC6611_DA); /DA 输出, 0-4095(FARPROC&)AC661 1_VoltageToDA=GetProcAddress(hDLL,AC661 1_VoltageToDA);(FARPROC&)AC6611_AD=GetPr

5、ocAddress(hDLL,AC6611_AD);/通用 AD采样(FARPROC &)AC6611_AD_CHN=GetProcAddress(hDLL,AC6611_AD_CHN); / 设置 AD 通道 0-15(FARPROC &)AC6611_ADS=GetProcAddress(hDLL,AC6611_ADS);/直接 AD采样,为单通道 AD 采样设计(FARPROC/&)AC6611_ADToV oltage=GetProcAddress(hDLL,AC6611_ADToVoltage);hDevice=AC6611_CreateDevice(0, &ErrorOf6611)

6、;创建驱动,选择第 0 块卡if(hDevice != -1)Label2-Caption = AC6611 Card Is Exist!;elseLabel2-Caption = AC6611 Card Is not Exist!;/void _fastcall TForm1:Timer1Timer(TObject *Sender)unsigned long ad;unsigned long da;AC6611_AD(hDevice, 5, &ad); /tongdaoPV=ad*(HS-LS)/4095.0;Edit14-Text=FloatToStrF(PV,0,4,4);PV= Str

7、ToFloat(Edit14-Text);float Temp=(PV-LS)*100/(HS-LS);SP_T=(SP-LS)*100/(HS-LS);Edit1-Text=FloatToStrF(Temp,0,4,4);Ek=SP-PV;DeltaUk=a*DeltaUk1+(1-a)*(q0*Ek+q1*Ek1+q2*Ek2);Uk=Uk1+DeltaUk;if( Uk100.0) Uk=100.0;if(UkText=FloatToStrF(MV,0,4,4);for(int i=0;iPicture-LoadFromFile(qushi.bmp);Image1-Canvas-Pen-

8、Width = 1;Image1- Canvas-Pen-Color = clBlue;Image1-Canvas-MoveTo(0,300); for(int i=0;iCanvas-LineTo(i,300-sptrendi);if(TempColor=clFuchsia;if(30Temp & TempColor=clBlack;if(Temp80) Label27-Color=clRed;if(TempCanvas-Pen-Color =clFuchsia; if(30Temp & TempCanvas-Pen-Color = clBlack; if(Temp80)Image1-Can

9、vas-Pen-Color = clRed; Image1-Canvas-MoveTo(0,300);for(int i=0;iCanvas-LineTo(i,300-pvtrendi);Image1- Canvas-Pen-Color = clGreen;Image1-Canvas-MoveTo(0,300);for(int i=0;iCanvas-LineTo(i,300-mvtrendi);Image2-Picture-LoadFromFile(bangtu.bmp);Image2- Canvas-Pen-Color =clRed ;Image2- Canvas-Pen-Width =

10、5;Image2- Canvas-MoveTo(35,294);Image2- Canvas-LineTo(35,294-SP*288/(HS-LS); if(Temp Canvas-Pen-Color = clFuchsia; if(30Temp & Temp Canvas-Pen-Color = clBlack; if(Temp80)Image2- Canvas-Pen-Color = clBlack;Image2- Canvas-MoveTo(55,294);Image2- Canvas-LineTo(55,294-PV*288/(HS-LS);Image2- Canvas-Pen-Co

11、lor = clBlue;Image2- Canvas-MoveTo(70,294);Image2- Canvas-LineTo(70,294-MV*288/100.0);/void _fastcall TForm1:Button1Click(TObject *Sender)HS=StrToFloat(Edit3-Text);LS=StrToFloat(Edit4-Text);HL=StrToFloat(Edit5-Text);LL=StrToFloat(Edit6-Text);P=StrToFloat(Edit8-Text);I=StrToFloat(Edit9-Text);D=StrToF

12、loat(Edit10-Text);Tf=StrToFloat(Edit12-Text);q0=(100.0/P)*(1+T/I+D/T);q1=-(100.0/P)*(1+2*D/T);q2=(100.0/P)*D/T;SP=StrToFloat(Edit13-Text);/void _fastcall TForm1:Button2Click(TObject *Sender)Close();/驱动加载程序:/#ifndef Unit1H#define Unit1H/#include #include #include #include #include #include #include /

13、 class TForm1 : public TForm_published:/ IDE-managed Components TTimer *Timer1;TPageControl *PageControl1; TTabSheet *TabSheet2;TLabel *Label1;TLabel *Label2;TImage *Image1;TLabel *Label4;TLabel *Label5;TLabel *Label6;TLabel *Label7;TLabel *Label8;TLabel *Label9;TLabel *Label10;TLabel *Label11;TLabe

14、l *Label12;TLabel *Label13;TLabel *Label14;TLabel *Label15;TLabel *Label17;TLabel *Label18;TLabel *Label19;TLabel *Label21;TLabel *Label22;TLabel *Label23;TLabel *Label24;TLabel *Label26;TLabel *Label27;TLabel *Label29;TImage *Image2;TLabel *Label16;TLabel *Label3;TButton *Button1;TEdit *Edit3;TEdit

15、 *Edit4;TEdit *Edit5;TEdit *Edit6;TEdit *Edit8;TEdit *Edit9;TEdit *Edit10;TEdit *Edit12;TEdit *Edit13;TEdit *Edit14;TEdit *Edit15;TButton *Button2;TEdit *Edit1;TUpDown *UpDown1;TTabSheet *TabSheet1;TLabel *Label20;TLabel *Label25;TLabel *Label28;TLabel *Label30;TLabel *Label31;TLabel *Label32;void _

16、fastcall FormCreate(TObject *Sender);void _fastcall Timer1Timer(TObject *Sender);void _fastcall Button1Click(TObject *Sender);void _fastcall Button2Click(TObject *Sender); private: / User declarationspublic:/ User declarations_fastcall TForm1(TComponent* Owner);/ extern PACKAGE TForm1 *Form1;/ #endi

17、f/define the function of DllHINSTANCE hDLL; /DLL 句柄int hDevice; /驱动 句柄 -暂定为全局变量,自定义时,可以自己传 递参数unsigned long ErrorOf6611;int _stdcall (*AC6611_CreateDevice)(int, unsigned long *);/ 创建驱动句 柄int _stdcall (*AC6611_CloseDevice)(int);/ 关闭驱动句柄int _stdcall (*AC6611_DI)(int, int , unsigned char*);/ 输入数字量int _

18、stdcall (*AC6611_DO)(i nt, i nt , un sig ned char);/ 输出数字量int _stdcall (*AC6611_DiBit)(int, int , unsigned long);/ 输入数字量int _stdcall (*AC6611_DoBit)(int, int , unsigned long, int);/ 输出数字量int _stdcall (*AC6611_DA)(int, unsigned long);/DA 输出int _stdcall (*AC6611_VoltageToDA)(float Voltage, int mode);/DA 电压 转换函数,将电压转换成 0-4095,mode=0,1 对应 0-10V,+-10Vint _stdcall (*AC661

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论