仪器社区

压力调节阀PID控制

夕love洋 2010-06-16
求大侠帮忙做个设计....要求:1,做出两个画面:工艺流程画面、控制画面2,工艺流程画面:做出压力表,下水箱,下水箱液位表,调节阀,大水箱,水泵等器件及相关管路、阀门的工艺图,... 求大侠帮忙做个设计.... 要求: 1,做出两个画面:工艺流程画面、控制画面 2,工艺流程画面:做出压力表,下水箱,下水箱液位表,调节阀,大水箱,水泵等器件及相关管路、阀门的工艺图,画面上要有液位,压力的动态数值显示区,年月日时显示、标题文本、系统启动按钮、系统停止按钮、系统运行指示灯 3,控制画面:画面上包括压力给定,反馈和输出实时趋势显示图,PID参数(P\I\D\SP)设置区域、反馈以及输出数值显示区域、手动输出数值显示区域、手动按钮、自动按钮、手/自动状态指示灯、系统启动按钮、系统停止按钮、系统运行指示灯、年月日时显示、标题文本。 4,编制S7-200的梯形图程序 5,绘制S7-200、传感器、电动调节阀的面板接线图 谢谢了,可以发邮箱550410662@qq.com谢了
评论
全部评论
好师傅邓
刚好前不久搞过PID,部分程序如下,仅供参考

/*==============================================================================
在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。
由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,
运算到Z后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,
根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。
这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。
==============================================================================*/

#include
#include

/*===============================================================================
PID Function
The PID function is used in mainly
control applications. PID Calc performs one iteration of the PID
algorithm.
While the PID function works, main is just a dummy program showing
a typical usage.

PID功能
在PID功能主要用于控制应用。 PID 计算器执行一个PID的迭代算法。虽然PID功能的工程,
主要只是一个虚拟程序显示一个典型的使用。
================================================================================*/
typedef struct PID {
double SetPoint; // 设定目标 Desired Value
double Proportion; // 比例常数 Proportional Const
double Integral; // 积分常数 Integral Const
double Derivative; // 微分常数 Derivative Const
double LastError; // Error[-1]
double PrevError; // Error[-2]
double SumError; // Sums of Errors
} PID;

/*================================ PID计算部分===============================*/
double PIDCalc( PID *pp, double NextPoint )
{
double dError, Error;

Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 积分
dError = pp->LastError - pp->PrevError; // 当前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error // 比例项
+ pp->Integral * pp->SumError // 积分项
+ pp->Derivative * dError // 微分项
);
}

/*======================= 初始化的PID结构 Initialize PID Structure===========================*/
void PIDInit (PID *pp)
{
memset ( pp,0,sizeof(PID));
}

/*======================= 主程序 Main Program=======================================*/
double sensor (void) // 虚拟传感器功能 Dummy Sensor Function{ return 100.0;}
void actuator(double rDelta) // 虚拟驱动器功能 Dummy Actuator Function{}
void main(void)
{
PID sPID; // PID控制结构 PID Control Structure
double rOut; // PID响应(输出) PID Response (Output)
double rIn; // PID反馈(输入) PID Feedback (Input)
PIDInit ( &sPID ); // 初始化结构 Initialize Structure
sPID.Proportion = 0.5; // 设置PID系数 Set PID Coefficients
sPID.Integral = 0.5;
sPID.Derivative = 0.0;
sPID.SetPoint = 100.0; // 设置PID设定 Set PID Setpoint
for (;;)
{ // 模拟Z多的PID处理 Mock Up of PID Processing
rIn = sensor (); // 读取输入 Read Input
rOut = PIDCalc ( &sPID,rIn ); // 执行的PID迭代 Perform PID Interation
actuator ( rOut ); // 所需的更改的影响 Effect Needed Changes
}
5 0 2010-06-17 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论