您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页计控程序

计控程序

来源:化拓教育网


程序1

#include\"stdafx.h\" #include\"1111.h\" #include\"1111.Doc.h\" #include\"1111.View.h\"

#ifdef_DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #endif

IMPLEMENT_DYNCREATE(CMy1111View,CView)

BEGIN_MESSAGE_MAP(CMy1111View,CView)

ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()

CMy1111View::CMy1111View() { }

CMy1111View::~CMy1111View() { }

BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {

return CView::PreCreateWindow(cs); }

//CMy1111View drawing

void CMy1111View::OnDraw(CDC*pDC) //求PID参数 {

int i;

Double Kp= ,Ki= ,Kd= ;

1

double r[100];

double y[100],u[100],e[100],datau[100]; y[0]=0; e[0]=0; u[0]=0; e[1]=0; y[1]=0; u[1]=0;

for(i=0;i<100;i++) {

r[i]=4.01; }

for(i=2;i<100;i++) {

e[i]=r[i]-y[i-1];

datau[i]=(Kp+Ki+Kd)*e[i]-(Kp+2*Kd)*e[i-1]+e[i-2]; u[i]=u[i-1]+datau[i];

y[i]=1.724*y[i-1]-0.741*y[i-2]+0.0453*u[i-1]+0.04095*u[i-2];} CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50]; CFont font;

font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,

DEFAULT_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0

pen0=pDC->SelectObject(&hPen1); //画X-Y坐标轴 pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615);

2

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15); pDC->MoveTo(50,10); pDC->LineTo(55,15); PDC->SelectObject(pen0);

for(i=0;i<=15;i++) //画X轴刻度 {

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(100+i*50,610); pDC->LineTo(100+i*50,605); pDC->SelectObject(pen0);

rect0.left=90+i*50;

rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630;

sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

for(i=0;i<5;i++) //画Y轴刻度 {

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(50,510-i*100); pDC->LineTo(55,510-i*100); pDC->SelectObject(pen0);

rect0.left=30;

rect0.right=rect0.left+20; rect0.top=510-i*100-5; rect0.bottom=rect0.top+20; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0));

3

pDC->SetMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

pen0=pDC->SelectObject(&hPen2); //画曲线r[t] for(i=0;i<99;i++) {

pDC->MoveTo((50+i*5),(610-r[i]*100)); pDC->LineTo((50+i*5+5),(610-r[i+1]*100)); }

pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen3);//画曲线y[t] for(i=0;i<99;i++) {

pDC->MoveTo((50+i*5),(610-y[i]*100)); pDC->LineTo((50+i*5+5),(610-y[i+1]*100)); }

pDC->SelectObject(pen0); hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }

//CMy1111View printing

BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {

return DoPreparePrinting(pInfo); }

void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) {

//TODO:add extra initialization before printing }

void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) {

//TODO:add clean up after printing }

//CMy1111View diagnostics

4

#ifdef_DEBUG

void CMy1111View::AssertValid() const {

CMy1111View::AssertValid(); }

void CMy1111View::Dump(CDumpContest& dc) const {

CView::Dump(dc); }

CMy1111Doc*CMy1111View::GetDocument()//non-debug version is //inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS (CMy1111Doc)));

return(CMy1111Doc*)m_pDocument; }

#endif//_DEBUG

5

程序2

#include\"stdafx.h\" #include\"1111.h\"

#include\"1111.Doc.h\" #include\"1111.View.h\"

#ifdef_DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #endif

IMPLEMENT_DYNCREATE(CMy1111View,CView)

BEGIN_MESSAGE_MAP(CMy1111View,CView)

ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()

CMy1111View::CMy1111View() { }

CMy1111View::~CMy1111View() { }

BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {

return CView::PreCreateWindow(cs); }

void CMy1111View::OnDraw(CDC*pDC) {

int i;

double r[1000]; double y[1000]; double e[1000];

6

double u[1000]; for(i=0;i<1000;i++) r[i]=1; e[0]=0; u[0]=0; y[0]=0; e[1]=0;

u[1]=1/3.68; y[1]=0;

for(i=2;i<1000;i++) {

y[i]=1.368y[i-1]-0.368*y[i-2]+3.68*u[i-1]+2.224*u[i-2]; e[i]=r[i]-y[i];

u[i]=-0.718u[i-1]+(e[i]-0.368*e[i-1])/3.68; }

CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50];

CFont font;

font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,

DEFAULT_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0

//画X-Y坐标轴

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610);

7

pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15); pDC->MoveTo(50,10); pDC->LineTo(55,15); pDC->SelectObject(pen0);

//画X轴刻度

for(i=0;i<=9;i++) {

pen0=pDC->SelectObject(&hPen1);//画的刻度线 pDC->MoveTo(50+i*100,610); pDC->LineTo(50+i*100,605); pDC->SelectObject(pen0); rect0.left=40+i*100; rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

//画Y轴刻度

for(i=0;i<5;i++) {

pen0=pDC->SelectObject(&hPen1); //画刻度线 pDC->MoveTo(50,410-i*200); pDC->LineTo(55,410-i*200); pDC->SelectObject(pen0);

rect0.left=30; //画刻度线 rect0.right=rect0.left+20; rect0.top=410-i*200-5; rect0.bottom=rect0.top+20; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER);

8

pDC->SelectObject(font0); }

//画曲线r[t]

pen0=pDC->SelectObject(&hPen2); for(i=0;i<8;i++) {

pDC->MoveTo((50+i*100),(610-r[i]*200)); pDC->LineTo((50+i*100+100),(610-r[i+1]*200)); }

pDC->SelectObject(pen0);

//画曲线y[t]

pen0=pDC->SelectObject(&hPen3); for(i=0;i<8;i++) {

pDC->MoveTo((50+i*100),(610-y[i]*200)); pDC->LineTo((50+i*100+100),(610-y[i+1]*200)); }

pDC->SelectObject(pen0);

hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }

BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {

return DoPreparePrinting(pInfo); }

void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }

void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }

#indef_DEBUG

void CMy1111View::AssertValid() const {

CView::AssertValid();

9

}

void CMy1111View::Dump(CDumpContext& dc)const {

CView::Dump(dc); }

CMy1111Doc*CMy1111View::GetDocument()//non-debug version is inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy1111Doc))); return(CMy1111Doc*)m_pDocument; }

#endif //_DEBUG

10

程序3

#include\"stdafx.h\" #include\"1111.h\"

#include\"1111.Doc.h\" #include\"1111.View.h\"

#ifdef_DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #endif

IMPLEMENT_DYNCREATE(CMy1111View,CView)

BEGIN_MESSAGE_MAP(CMy1111View,CView)

ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()

CMy1111View::CMy1111View() { }

CMy1111View::~CMy1111View() { }

BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {

return CView::PreCreateWindow(cs); }

void CMy1111View::OnDraw(CDC*pDC) {

int i;

double r[1000]; double y[1000]; double e[1000]; double u[1000]; for(i=0;i<1000;i++) r[i]=1;

11

e[0]=0; u[0]=0; y[0]=0; e[1]=0; u[1]=0.543; y[1]=0;

for(i=2;i<1000;i++) {

y[i]=1.368y[i-1]-0.368*y[i-2]+3.68*u[i-1]+2.224*u[i-2]; e[i]=r[i]-y[i];

u[i]=0.282u[i-1]+0.718u[i-2]+0.543*e[i]-0.471324*e[i-1]+0.099912*u[i-2]; }

CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50];

CFont font;

font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,

DEFAULT_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0

//画X-Y坐标轴

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610); pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15);

12

pDC->MoveTo(50,10); pDC->LineTo(55,15); pDC->SelectObject(pen0);

//画X轴刻度

for(i=0;i<=9;i++) {

pen0=pDC->SelectObject(&hPen1);//画的刻度线 pDC->MoveTo(50+i*100,610); pDC->LineTo(50+i*100,605); pDC->SelectObject(pen0);

rect0.left=40+i*100; //画刻度 rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

for(i=0;i<5;i++) //画Y轴刻度 {

pen0=pDC->SelectObject(&hPen1); //画刻度线 pDC->MoveTo(50,560-i*50); pDC->LineTo(55,560-i*50); pDC->SelectObject(pen0);

rect0.left=30; //画刻度线 rect0.right=rect0.left+20; rect0.top=560-i*50-5;

rect0.bottom=rect0.top+20; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

13

pen0=pDC->SelectObject(&hPen2); //画曲线r[t] for(i=0;i<8;i++) {

pDC->MoveTo((50+i*100),(610-r[i]*50)); pDC->LineTo((50+i*100+100),(610-r[i+1]*50)); }

pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen3); //画曲线y[t] for(i=0;i<8;i++) {

pDC->MoveTo((50+i*100),(610-y[i]*200)); pDC->LineTo((50+i*100+100),(610-y[i+1]*200)); }

pDC->SelectObject(pen0);

hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }

BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {

return DoPreparePrinting(pInfo); }

void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }

void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }

#indef_DEBUG

void CMy1111View::AssertValid() const {

CView::AssertValid(); }

void CMy1111View::Dump(CDumpContext& dc)const {

CView::Dump(dc);

14

}

CMy1111Doc*CMy1111View::GetDocument()//non-debug version is inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy1111Doc))); return(CMy1111Doc*)m_pDocument; }

#enddif//_DEBUG

15

程序4

#include\"stdafx.h\" #include\"1111.h\"

#include\"1111.Doc.h\" #include\"1111.View.h\"

#ifdef_DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #endif

IMPLEMENT_DYNCREATE(CMy1111View,CView)

BEGIN_MESSAGE_MAP(CMy1111View,CView)

ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview) END_MASSAGE_MAP()

CMy1111View::CMy1111View() { }

CMy1111View::~CMy1111View() { }

BOOL CMy1111View::PreCreate Window(CREATESTRUCT& cs) {

return CView::PreCreateWindow(cs); }

void CMy1111View::OnDraw(CDC*pDC) {

int i;

float r[1000]; double y[1000]; double e[1000]; double u[1000]; for(i=0;i<1000;i++) r[i]=i*i/2;

16

y[0]=0; e[0]=0; u[0]=0; y[1]=0; e[1]=0.5;

u[1]=1.5/3.68; y[2]=1.5; e[2]=0.5;

u[2]=1.282*1.5/3.68+(3*0.5-4.104*0.5)/3.68; for(i=3;i<1000;i++) {

y[i]=1.368y[i-1]-0.368*y[i-2]+3.68*u[i-1]+2.224*u[i-2]; e[i]=r[i]-y[i];

u[i]=1.282u[i-1]+0.436u[i-2]+0.718*e[i-3]+(3*e[i]-4.104*e[i-1]+2.104*u[i-2]-0. 368*u[i-3])/3.68; }

CPen hPen1(PS_SOLID,1,RGB(0,0,0)); CPen hPen2(PS_SOLID,1,RGB(255,0,0)); CPen hPen3(PS_SOLID,1,RGB(0,255,0)); CPen*pen0; CRect rect0; char s[50];

CFont font;

font.CreateFont(10,6,0, 0,30,FALSE, FALSE,FALSE,

DEFAULT_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

PROOF_QUALITY,DEFAULT_PITCH|FF_ROMAN,\"Arial\"); CFont*font0

pen0=pDC->SelectObject(&hPen1); //画X-Y坐标轴 pDC->MoveTo(50,610); pDC->LineTo(950,610); pDC->MoveTo(50,610); pDC->LineTo(50,10); pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen1); pDC->MoveTo(950,610);

17

pDC->LineTo(945,605); pDC->MoveTo(950,610); pDC->LineTo(945,615); pDC->MoveTo(50,10); pDC->LineTo(45,15); pDC->MoveTo(50,10); pDC->LineTo(55,15); pDC->SelectObject(pen0);

for(i=0;i<=9;i++) //画X轴刻度 {

pen0=pDC->SelectObject(&hPen1);//画的刻度线 pDC->MoveTo(50+i*100,610); pDC->LineTo(50+i*100,605); pDC->SelectObject(pen0); rect0.left=40+i*100; rect0.right=rect0.left+20; rect0.top=615; rect0.bottom=630; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0)); pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

for(i=0;i<21;i++) //画Y轴刻度 {

pen0=pDC->SelectObject(&hPen1); //画刻度线 pDC->MoveTo(50,610-i*25); pDC->LineTo(55,610-i*25); pDC->SelectObject(pen0);

rect0.left=30; //画刻度 rect0.right=rect0.left+20; rect0.top=610-i*25-5;

rect0.bottom=rect0.top+20; sprintf(s,\"%d\

font0=pDC->SelectObject(&font); pDC->SetTextColor(RGB(0,0,0));

18

pDC->SetBkMode(TRANSPARENT);

pDC->DrawText(s,-1,&rect0,DT_CENTER); pDC->SelectObject(font0); }

pen0=pDC->SelectObject(&hPen2); //画曲线r[t] for(i=0;i<8;i++) {

pDC->MoveTo((50+i*100),(610-r[i]*25)); pDC->LineTo((50+i*100+100),(610-r[i+1]*25)); }

pDC->SelectObject(pen0);

pen0=pDC->SelectObject(&hPen3); //画曲线y[t] for(i=0;i<8;i++) {

pDC->MoveTo((50+i*100),(610-y[i]*25)); pDC->LineTo((50+i*100+100),(610-y[i+1]*25)); }

pDC->SelectObject(pen0);

hPen1.DeleteObject(); hPen2.DeleteObject(); hPen3.DeleteObject(); font.DeleteObject(); }

BOOL CMy1111view::OnPreparePrinting(CPrintInfo*pInfo) {

return DoPreparePrinting(pInfo); }

void CMy1111View::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }

void CMy1111View::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/) { }

#indef_DEBUG

void CMy1111View::AssertValid() const {

19

CView::AssertValid(); }

void CMy1111View::Dump(CDumpContext& dc)const {

CView::Dump(dc); }

CMy1111Doc*CMy1111View::GetDocument()//non-debug version is inline {

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy1111Doc))); return(CMy1111Doc*)m_pDocument; }

#endif//_DEBUG

//CMy1111View message handlers

20

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务