模拟量转换及滤波库中有两个比较特殊的转换:R转IX和R转RX
计算式:
Ov = [(Osh - Osl) * (Iv - Isl) / (Ish - Isl)] + Osl
Ov = 转换输出值
Iv = 输入变量值
Osh = 输出上限
Osl = 输出下限
Ish = 输入上限
Isl = 输入下限
如果输入值小于输入下限,则令输入值等于下限;
如果输入值大于输入上限,则令输入值等于上限;
有人问我为什么要限位?
这也是在工程实践中遇到了不得不限的问题,才被迫写下带限位输出的转换程序。
有一次我们调试一套加热装置,量程设在0-100℃,PID调节,反馈信号取自经过误差修正后的温度值,所以用到了实数(修正后温度)转整数(相当于AIW读到的0-32000)。我们设定的温度是80℃,开始调试时PID参数还没搞好,结果系统过冲到了100℃以上。问题出现了,本来因为过冲而降低的PID输出突然满度输出到100%。
检查程序没有问题,在线监控发现转换后的整数变成了“负值”,PID回路自然就满度输出了。
不限位的转换,可以向下、向上延伸,但是整数大过了32767以后就会变为负值。
R转RX限位转换,也是为了PID调节,作为工程量设定值转换为量程百分比。加上限位之后也相当于圈定了目标值只允许在声明的量程范围内给定。