我想用C代码设计一个PI控制器,用于使用比例电磁阀的电流控制系统压力。该阀处于常开状态,使液压油流回油箱,从而在系统中不产生压力(0巴(。如果我们增加电流值,阀门开始按比例关闭,从而保持压力增加。阀门的电流值从0增加到2000mA。如果某一功能的目标压力设定值为35巴,则实现该压力值所需的电流为400mA。控制器应基于该压力设定点值将电流设置为400mA,并测量压力的实际值,并将其增加到35巴的期望目标设定点。我很难理解这样的控制器应该如何在软件中设计。有人能帮我介绍一下实现这一点的方法吗?
根据我的理解,我认为代码应该有一个错误和一个积分项。它还应该具有KI和KP:的值
错误=设定点压力–实际压力;积分器=积分器+Ki*误差;
假设所有变量都按百分比(0-100%(缩放
/*wt = setpoint yt = process variable ut = control action*/
ut = qPID_Control( &instance, wt, yt ); /* compute the control action */
/* action to the Final Control Element (FCE) should be inverse */
ut = 100.0f - ut;
只需遵循相同的原则,并根据您的需求缩放单位
你可以使用这个C代码PID控制库,它非常健壮,包括反饱和和导数滤波器https://github.com/kmilo17pet/qlibs