需求描述
通过改变导轨倾斜角度,控制小球的位置。
模型
单自由度板球系统
模型部件有球、导轨
底座
MCD机电模型配置
添加刚体、碰撞体等,球碰撞体形状为胶囊
导轨碰撞体形状选择多个凸面体
添加距离传感器
添加铰链副和位置控制
运行结果
位置实时反馈,达到预期功能。
PID原理
PID控制器,由比例调节(Proportion)、积分调节(Integral)、微分调节(Differential)组成。作用为使用比例、积分、微分这三种调节算法对输入的误差进行处理后,继而输出。
平行式PID公式上表达为:
: 控制输出
: 误差, 即设定值 - 现在值
: 比例增益
: 积分增益
: 微分增益
PID控制器示意图:
这两篇写得比较明白:
系统款图
板球系统总框图如下
PID算法编程方案
接下来,是进行编程方案的选择,是自己写还是调用成熟的PID算法。
方案可以分为外部信号方案和MCD内部方案,也可分为调用PID模块和自行
编写两种方式。
可采用PLC PID模块进行调节,与博图联合调试,采用PID功能进行调节
PID功能参见课程:TIA博途.探索之旅11_PID功能http://www.ad.siemens.com.cn/service/elearning/Course/1397.html
博主采用博图PLC来自行编写。
PLC编写PID控制MCD
Main[OB0]块中程序段1:
IF "Tag_1" THEN
// Statement section IF
"kp" := 10;
"ki" := 1;
"kd" := 1;
"set_position" := 10;
"out_position" := 0;
"out_positon_angle" := 0;
"error" := 0;
"error1" := 0;
"error2" := 0;
"errorall" := 0;
"Tag_1" := 0;
END_IF;
Main[OB0]块中程序段2:采用位置式
"error" := "set_position" - "in_position";
"errorall" := "errorall" + "error";
//积分限幅
IF "errorall" > 10000 THEN
// Statement section IF
"errorall" := 10000;
END_IF;
IF "errorall" < -10000 THEN
// Statement section IF
"errorall" := -10000;
END_IF;
"kdout" := "kd" * ("error" - "error1");
"kiout" := "ki" * "errorall";
//位置式
"out_positon_angle" := "kp" * "error" +"kiout"+ "kdout";//度数
"outposition_suan" := "out_positon_angle";
//输出限幅
IF "out_positon_angle" > 20 THEN
// Statement section IF
"out_positon_angle" := 20;
END_IF;
IF "out_positon_angle" < -20 THEN
// Statement section IF
"out_positon_angle" := -20;
END_IF;
"out_position" := "out_positon_angle" / 180 * 3.14159; //弧度输出
"error2" := "error1";
"error1" := "error";
MCD首选项参数
摩擦过大,在小角度时,球无法滚动,适当调小
参数整定
- 比例,越大响应越快,在目标角度两边摆动的幅度也大,同时稳态误差也越大。
- 积分,积分部分的作用是消除稳态误差。
- 微分,微分项能预测误差变化的趋势,实现超前调节。
一些调试图片
最终PID参数
视频演示和模型分享
视频演示
模型分享:
最终源模型和PLC工程文件分享:在交流群(群号:1105076200)中分享。
模型开发环境如下,博图低版本可能打不开。
- Window 10
- UG NX 1847
- TIA Portal V15.1 + S7 PLCSIM Advanced V2.0 SP1
欢迎继续阅读另一个案例
【UG NX MCD 机电一体化概念设计】UG NX MCD+PLCSIM Advanced联合仿真实例(一)基本配置
文章列表:
【UG NX MCD 机电一体化概念设计】PID算法在 UG NX MCD 中的应用案例设计与实现(一)
【UG NX MCD 机电一体化概念设计】PID算法在 UG NX MCD 中的应用案例设计与实现(二)