工控PLC擂台第50期--用PLC写前馈反馈带卡尔曼滤波算法一般形式 点击:2031 | 回复:18



若此笔名未被注册

    
  • 精华:8帖
  • 求助:1帖
  • 帖子:272帖 | 3230回
  • 年度积分:0
  • 历史总积分:5701
  • 注册:2003年3月30日
发表于:2011-06-16 23:44:00
楼主

問題如題,动态变量假定为三个。

要求: 1、用大中型PLC的指令寫

              2、用一般的微型PLC指令寫出算法。 在自由擂区历经一月多没有人打擂,只好今天移到这里来,继续让大家活动活动手脚了! 奖励就是请你喝几杯,哈哈!如果你觉得太容易,本问题可以进一步将难度加大。

               原创最多,阐述最详细,程序越准确者获一等奖

工控PLC擂台每周一期,本期待49期结束一周后结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:30积分。

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。



楼主最近还看过



若此笔名未被注册

  • 精华:8帖
  • 求助:1帖
  • 帖子:275帖 | 3233回
  • 年度积分:0
  • 历史总积分:5711
  • 注册:2003年3月30日
发表于:2011-06-17 23:47:39
1楼

怎么没有活动手脚的???

回复本条

    

玻璃的心

  • 精华:44帖
  • 求助:2帖
  • 帖子:1283帖 | 5801回
  • 年度积分:0
  • 历史总积分:58050
  • 注册:2010年6月11日
发表于:2011-07-23 22:38:05
2楼
非常感谢楼主的题目,偶马上设为PLC擂台

回复本条

    

HOTEAM

  • 精华:5帖
  • 求助:1帖
  • 帖子:572帖 | 23748回
  • 年度积分:0
  • 历史总积分:67164
  • 注册:2007年4月05日
发表于:2011-07-23 22:45:45
3楼
引用玻璃的心 的回复内容:非常感谢楼主的题目,偶马上设为PLC擂台



你晚了一步          

回复本条

    

玻璃的心

  • 精华:44帖
  • 求助:2帖
  • 帖子:1283帖 | 5801回
  • 年度积分:0
  • 历史总积分:58050
  • 注册:2010年6月11日
发表于:2011-07-23 22:49:41
4楼
引用HOTEAM 的回复内容:引用玻璃的心 的回复内容:非常感谢楼主的题目,偶马上设为PLC擂台



你晚了一步          

其实如果有砖头的话,我会考虑拍一个人的!

回复本条

    

云锋

  • 精华:1帖
  • 求助:5帖
  • 帖子:281帖 | 5541回
  • 年度积分:0
  • 历史总积分:30152
  • 注册:2005年6月24日
发表于:2011-08-16 10:06:01
5楼
建议楼主给大家扫下盲吧。

回复本条

    

陌上尘

  • 精华:1帖
  • 求助:11帖
  • 帖子:25帖 | 939回
  • 年度积分:0
  • 历史总积分:5188
  • 注册:2010年5月12日
发表于:2011-08-16 15:55:39
6楼

强烈建议楼主给大家扫下盲

回复本条

    

sophymei

  • 精华:0帖
  • 求助:9帖
  • 帖子:24帖 | 920回
  • 年度积分:0
  • 历史总积分:5514
  • 注册:2008年11月24日
发表于:2011-08-19 08:48:50
7楼
樓主忙啥呢?這個算法怎麼實現呢?

回复本条

    

玻璃的心

  • 精华:44帖
  • 求助:2帖
  • 帖子:1283帖 | 5801回
  • 年度积分:0
  • 历史总积分:58050
  • 注册:2010年6月11日
发表于:2011-08-23 22:48:29
8楼
本期擂台擂台长期有效,奖金没有限制,最多可给150MP,等待高手光临!

回复本条

    

最多两年

  • 精华:6帖
  • 求助:14帖
  • 帖子:126帖 | 3516回
  • 年度积分:0
  • 历史总积分:10502
  • 注册:2004年2月14日
发表于:2011-08-30 23:35:35
9楼
500MP 我邀请我同学出马!!!!!! 现在就去骚扰他!

回复本条

    

若此笔名未被注册

  • 精华:8帖
  • 求助:1帖
  • 帖子:275帖 | 3233回
  • 年度积分:0
  • 历史总积分:5711
  • 注册:2003年3月30日
发表于:2011-09-02 13:58:58
10楼

此外还有一个问题在http://www.gongkong.com/webpage/forum/201109/2011090213555200001-1.shtml

 

请朋友们及时回答,现在想知道答案!答案要有理论和事实依据!

回复本条

    

最多两年

  • 精华:6帖
  • 求助:14帖
  • 帖子:126帖 | 3516回
  • 年度积分:0
  • 历史总积分:10502
  • 注册:2004年2月14日
发表于:2011-10-24 20:23:22
11楼
请擂主公布答案吧....................................泪奔了

回复本条

    

若此笔名未被注册

  • 精华:8帖
  • 求助:1帖
  • 帖子:275帖 | 3233回
  • 年度积分:0
  • 历史总积分:5711
  • 注册:2003年3月30日
发表于:2011-11-03 21:21:35
12楼
截止目前,问题还没有答案!

回复本条

    

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:23291
  • 注册:2007年4月02日
发表于:2011-11-08 10:31:06
13楼
卡尔曼滤波,当输入由白噪声产生的随机信号时,使期望输出和实际输出之间的均方根误差达到最小的线性系统,卡尔曼滤波的一个典型实例是从一组有限的,对物体位置的,包含噪声的观察序列预测出物体的坐标位置及速度. 在很多工程应用(雷达, 计算机视觉)中都可以找到它的身影. 同时,卡尔曼滤波也是控制理论以及控制系统工程中的一个重要话题.,楼主能把问题说的更详细一点吗?比如哪些变量,什么要求?哪些前馈与反馈变量?

回复本条

    

最多两年@原创军团

  • 精华:6帖
  • 求助:14帖
  • 帖子:126帖 | 3516回
  • 年度积分:0
  • 历史总积分:10502
  • 注册:2004年2月14日
发表于:2012-08-10 15:47:30
14楼
引用 若此笔名未被注册 的回复内容:截止目前,问题还没有答案!



回复本条

    

丁昆

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:557
  • 注册:2017年10月11日
发表于:2017-10-11 19:26:35
15楼

我上学期用S7-300实现三阶卡尔曼滤波算法仿真,无法上传程序。



回复本条

    

若此笔名未被注册

  • 精华:8帖
  • 求助:1帖
  • 帖子:275帖 | 3233回
  • 年度积分:0
  • 历史总积分:5711
  • 注册:2003年3月30日
发表于:2024-10-16 14:33:25
16楼

DATA_BLOCK DB_Controller

VAR

    // 测量值

    Measurement : REAL;

    // 设定值

    Setpoint : REAL;

    // 控制输入

    ControlInput : REAL := 0.0;

    // PID控制器参数

    Kp : REAL := 1.0;  // 比例增益

    Ki : REAL := 0.1;  // 积分增益

    Kd : REAL := 0.01; // 微分增益

    // PID控制器内部变量

    Error : REAL := 0.0;

    PrevError : REAL := 0.0;

    Integral : REAL := 0.0;

    Derivative : REAL := 0.0;

    // 前馈补偿

    Feedforward : REAL := 0.0;

END_VAR

// 主程序

PROGRAM MainProgram

    // 定义临时变量

    VAR_TEMP

        Temp1 : REAL;

        Temp2 : REAL;

        Temp3 : REAL;

    END_VAR

 

    // 计算误差

    L  DB_Controller.Setpoint

    L  DB_Controller.Measurement

    SUB

    T  DB_Controller.Error

 

    // 计算积分项

    L  DB_Controller.Integral

    L  DB_Controller.Error

    ADD

    T  DB_Controller.Integral

 

    // 计算微分项

    L  DB_Controller.Error

    L  DB_Controller.PrevError

    SUB

    T  DB_Controller.Derivative

 

    // 计算PID控制器输出

    L  DB_Controller.Kp

    L  DB_Controller.Error

    MUL

    T  Temp1

    L  DB_Controller.Ki

    L  DB_Controller.Integral

    MUL

    T  Temp2

    L  DB_Controller.Kd

    L  DB_Controller.Derivative

    MUL

    T  Temp3

    L  Temp1

    L  Temp2

    ADD

    T  Temp1

    L  Temp1

    L  Temp3

    ADD

    T  DB_Controller.ControlInput

 

    // 添加前馈补偿

    L  DB_Controller.ControlInput

    L  DB_Controller.Feedforward

    ADD

    T  DB_Controller.ControlInput

 

    // 更新上一时刻的误差

    L  DB_Controller.Error

    T  DB_Controller.PrevError

 

    // 结束主程序

END_PROGRAM

 

回复本条

    

若此笔名未被注册

  • 精华:8帖
  • 求助:1帖
  • 帖子:275帖 | 3233回
  • 年度积分:0
  • 历史总积分:5711
  • 注册:2003年3月30日
发表于:2024-10-16 14:47:41
17楼

修改后的

DATA_BLOCK DB_Controller

VAR

    // 测量值

    Measurement : REAL;

    // 设定值

    Setpoint : REAL;

    // 控制输入

    ControlInput : REAL := 0.0;

    // PID控制器参数

    Kp : REAL := 1.0;  // 比例增益

    Ki : REAL := 0.1;  // 积分增益

    Kd : REAL := 0.01; // 微分增益

    // PID控制器内部变量

    Error : REAL := 0.0;

    PrevError : REAL := 0.0;

    Integral : REAL := 0.0;

    Derivative : REAL := 0.0;

    // 前馈补偿

    Feedforward : REAL := 0.0;

    // 卡尔曼滤波器参数

    StateEstimate : REAL := 0.0;

    KalmanGain : REAL := 0.5; // 卡尔曼增益

    ProcessNoise : REAL := 0.01; // 过程噪声

    MeasurementNoise : REAL := 0.1; // 测量噪声

    // 边界条件

    MinControlInput : REAL := -10.0; // 最小控制输入

    MaxControlInput : REAL := 10.0;   // 最大控制输入

    MaxIntegral : REAL := 100.0;      // 积分项的最大值

    MinIntegral : REAL := -100.0;     // 积分项的最小值

END_VAR

// 主程序

PROGRAM MainProgram

    // 定义临时变量

    VAR_TEMP

        Temp1 : REAL;

        Temp2 : REAL;

        Temp3 : REAL;

        PredictedState : REAL;

        Innovation : REAL;

    END_VAR

 

    // 卡尔曼滤波器预测步骤

    L  DB_Controller.StateEstimate

    T  PredictedState

 

    // 卡尔曼滤波器更新步骤

    L  DB_Controller.Measurement

    L  PredictedState

    SUB

    T  Innovation

    L  DB_Controller.KalmanGain

    L  Innovation

    MUL

    T  Temp1

    L  PredictedState

    L  Temp1

    ADD

    T  DB_Controller.StateEstimate

 

    // 计算误差

    L  DB_Controller.Setpoint

    L  DB_Controller.StateEstimate

    SUB

    T  DB_Controller.Error

 

    // 计算积分项,并进行饱和处理

    L  DB_Controller.Integral

    L  DB_Controller.Error

    ADD

    T  Temp1

    L  DB_Controller.MaxIntegral

    L  Temp1

    MIN

    T  Temp1

    L  DB_Controller.MinIntegral

    L  Temp1

    MAX

    T  DB_Controller.Integral

 

    // 计算微分项

    L  DB_Controller.Error

    L  DB_Controller.PrevError

    SUB

    T  DB_Controller.Derivative

 

    // 计算PID控制器输出

    L  DB_Controller.Kp

    L  DB_Controller.Error

    MUL

    T  Temp1

    L  DB_Controller.Ki

    L  DB_Controller.Integral

    MUL

    T  Temp2

    L  DB_Controller.Kd

    L  DB_Controller.Derivative

    MUL

    T  Temp3

    L  Temp1

    L  Temp2

    ADD

    T  Temp1

    L  Temp1

    L  Temp3

    ADD

    T  Temp1

 

    // 添加前馈补偿

    L  Temp1

    L  DB_Controller.Feedforward

    ADD

    T  DB_Controller.ControlInput

 

    // 对控制输入进行饱和处理

    L  DB_Controller.MaxControlInput

    L  DB_Controller.ControlInput

    MIN

    T  Temp1

    L  DB_Controller.MinControlInput

    L  Temp1

    MAX

    T  DB_Controller.ControlInput

 

    // 更新上一时刻的误差

    L  DB_Controller.Error

    T  DB_Controller.PrevError

 

    // 结束主程序

END_PROGRAM


回复本条

    

若此笔名未被注册

  • 精华:8帖
  • 求助:1帖
  • 帖子:275帖 | 3233回
  • 年度积分:0
  • 历史总积分:5709
  • 注册:2003年3月30日
发表于:2024-10-18 01:44:42
18楼

本帖子内容是2011年发出的,作为外行者,现在才给出一个并不怎么漂亮的结果,有些不好意思

好在现在有了一个结果。

对我个人而言,不仅仅只是技术这方面,有兴趣的其它一些问题作为非标准专业人,都常常是十几年左右才真正搞懂获得一个较为理想的答案——江湖人非高门大厦研究机构的人学习研究问题的悲哀!

莫言曾经写过一个短篇小说集《晚熟的人》,这小说的名字似乎特别适合我。

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师