通过改变导轨倾斜角度, 控制 小球的位置。
单自由度板球系统
模型部件有球、导轨
底座
添加刚体、碰撞体等,球碰撞体形状为胶囊
导轨碰撞体形状选择多个凸面体
添加距离传感器
添加铰链副和位置控制
运行结果
位置实时反馈,达到预期功能。
PID控制器 ,由比例调节(Proportion)、积分调节(Integral)、微分调节(Differential)组成。作用为使用比例、积分、微分这三种调节算法对输入的误差进行处理后,继而输出。
平行式PID公式上表达为:
u ( t ) = K p e ( t ) + K i ∫ 0 t e ( τ ) d τ + K d d d t e ( t ) u(t)=K_{p}e(t)+ K_{i}\int_{0}^{t} e(\tau ) d\tau + K_{d}\frac{d}{dt} e(t) u(t)=Kpe(t)+Ki∫0te(τ)dτ+Kddtde(t)
u ( t ) u(t) u(t): 控制输出
e ( t ) e(t) e(t): 误差, 即设定值 - 现在值
K p K_{p} Kp: 比例增益
K i K_{i} Ki: 积分增益
K d K_{d} Kd: 微分增益
PID控制器示意图:
这两篇写得比较明白:
板球系统总框图如下
接下来,是进行编程方案的选择,是自己写还是调用成熟的PID算法。
方案可以分为外部信号方案和MCD内部方案,也可分为调用PID模块和自行
编写两种方式。
可采用PLC PID模块进行调节,与博图联合调试,采用PID功能进行调节
PID功能参见课程:TIA博途.探索之旅11_PID功能http://www.ad.siemens.com.cn/service/elearning/Course/1397.html
博主采用博图PLC来自行编写。
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";
摩擦过大,在小角度时,球无法滚动,适当调小
一些调试图片

最终PID参数
视频演示
模型开发环境如下,博图低版本可能打不开。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删