|
// ControlFunc1.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
using namespace std;
void ControlFunc(double d, double& U, double &dt)
{
//d為輸入的位移
//U為輸出的電壓
//dt為輸出的時(shí)間間隔
dt = 0.02;//輸出結(jié)果:時(shí)間間隔
double dy = 0.03;//控制參數(shù):屈服變形
double du = 0.06;//控制參數(shù):極限變形
double d0 = 0.0; //前一步位移,初始時(shí)為零
double Umax = 5.0;//最大電壓
double Umin = 0.0;//最小電壓
double vel; // 中間變量,速度
vel = (d - d0) / dt;
if (d <= -du) //狀態(tài)1:禁止區(qū)域(-)
{
U = Umin;
if (vel < 0)
U = Umax;
}
else if (d > -du && d <= -dy) //狀態(tài)2:控制區(qū)域(-)
{
U = Umin;
if (vel < 0)
U = (-d - dy) / (du - dy)*Umax + (du + d) / (du - dy)*Umin;
}
else if (d > -dy && d < dy) //狀態(tài)3:自由區(qū)域(-)狀態(tài)4:自由區(qū)域(+)
{
U = Umin;
}
else if (d >= dy && d < du) //狀態(tài)5:控制區(qū)域(+)
{
U = Umin;
if (vel >= 0)
U = (d - dy) / (du - dy)*Umax + (du - d) / (du - dy)*Umin;
}
else if (d >= du) //狀態(tài)6:禁止區(qū)域(+)
{
U = Umin;
if (vel >= 0)
U = Umax;
}
d0 = d;
}
int _tmain(int argc, _TCHAR* argv[])
{
double d=0.0,U=0.0,dt=0.0;
for (int i = 0; i < 10; i++)
{
d = 0.01*i;
ControlFunc(d, U, dt);
cout << "第" << i << "步計(jì)算結(jié)果: 控制電壓U= " << U << " 時(shí)間間隔dt=" << dt << endl;
}
cin >> d;
return 0;
}
程序.c(4): warning C318: can't open file 'stdafx.h'
程序.c(8): warning C318: can't open file 'iostream'
程序.C(9): error C141: syntax error near 'using'
程序.C(9): error C129: missing ';' before 'std'
|
|