我有一本书《西门子s7-200plc的使用经验与技巧》,书内有个pid的例子,程序如下:一。主程序 LD M0.1
A T38
XORD AC0, AC0 //1)给累加器清零
MOVW AIW0, AC0 //2)过程变量的数字信号送到AC0
DTR AC0, AC0 //3)整数转实数
MOVR AC0, VD300 //4)标准化
/R 32000.0, VD300
PID VB300, 0 //5)标准化的值存入pid表的vb300中
MOVR AC0, VD308 //6)将计算后的输出值存放到指定累加器中
MOVR AC0, VD328 //7)将计算后的输出值作为积分前项值存放到指定累加器中
MOVR AC0, VD332 //8)将计算后的输出值作为最近一次pid运算的过程变量存放到指定累加器中
*R VD308, AC0 //9)将被控制量与实数相乘存放到指定累加器中
MOVW AC0, AQW0 //10)将运算结果直接以实数格式送到模拟量输出端口中
二。子程序
LD M0.0
MOVR 0.8, VD304 //设定值
MOVR 0.4, VD312 //比例
MOVR 10.0, VD320 //积分
MOVR 5.0, VD324 //微分
我只写了涉及到pid控制的程序,现在有以下几个疑问:
1.(5)步我认为应该把VB300改为VB303,因为VD300存储数据是从VB303开始存储,即要符合高地址低字节的原则;
2.(6)7)8)步为何用AC0作为计算后的输出值?我认为AC0在6)步前的最终值应该是(4)步过程变量的数字值;
3.把设定值,比例,积分,微分的参数编写在子程序里是为了以后调试时方便修改参数用么?
请高手指教!