发布于 2007-11-26 09:09:45
0楼
看看PID的回路表你就知道了,PID的输入和输出值都是要先转化
每个 PID 回路有两个输入量给定值 (SP) 和过程变量 (PV) 给定值通常是一个固定的值比如是
设定的汽车速度过程变量是与 PID 回路输出有关可以衡量输出对控制系统作用的大小在汽车
速度控制系统中过程变量可以是测速仪的输入 (衡量车轮转速高低)
给定值和过程变量都可能是现实世界的值它们的大小范围和工程单位都可能不一样PID 指令
在对这些量进行运算以前必须把他们转换成标准的浮点型实数
转换的第一步是把 16 位整数值转成浮点型实数值下面的指令序列提供了实现这种转换的方法
XORD AC0 AC0 //清空累加器
MOVW AIW0 AC0 //把待变换的模拟量存入累加器
LDW>= AC0 0 //如果模拟量为正
JMP 0 //则直接转成实数
NOT //否则
ORD 16#FFFF0000 AC0 //先对 AC0 中值进行 符号扩展
LBL 0
DTR AC0 AC0 //把 32 位整数转成实数
转换的下一步是把实数值进一步标准化为 0.0 1.0 之间的实数下面的算式可以用来标准化给定值
或过程变量
RNorm = (RRaw / Span) + Offset)
其中
RNorm 标准化的实数值
Rraw 没有标准化的实数值或原值
Offset 单极性为 0.0 双极性为 0.5
Span 值域大小可能最大值减去可能最小值
单极性为 32,000 (典型值)
双极性为 64,000 (典型值)
下面的指令把双极性实数标准化为 0.0 1.0 之间的实数通常用在第一步转换之后:
/R 64000.0 AC0 //累加器中的标准化值
+R 0.5 AC0 //加上偏置使其落在 0.0 1.0 之间
MOVR AC0 VD100 //标准化的值存入回路表
PID的输出也是一样的,也要经过转换
知识改变未来