有一个关于PID的程序,为什么在S7-200仿真软件上调试老是出错,程序如下 主程序: LD SM0.1 CALL SBR_0 子程序: LD SM0.0 MOVR 0.75, VD104 // 载入循环定点 = 注满75% MOVR 0.25, VD112 // 载入循环增益 = 0.25 MOVR 0.2, VD116 // 载入循环采样时间 = 0.1秒 MOVR 30.0, VD120 // 载入积分时间 = 30分钟
MOVR 0.0, VD124 // 设置无微分计算 MOVB 200, SMB34 // 为定时中断INT_0 // 设置定时间隔(100毫秒)。 ATCH INT_0, 10 // 设置定时中断,激活 // PID执行。 ENI // 启用中断 中断程序: // 将PV标度为标准化实数 LD SM0.0 ITD AIW0, AC0 // 将整数数值转换为双整数 DTR AC0, AC0 // 将双整数转换为实数
/R 32000.0, AC0 // 使数值正常化 MOVR AC0, VD100 // 将正常化PV存储在循环表中 LD I0.0 PID VB100, 0 LD SM0.0 MOVR VD108, AC0 // 将循环输出移至累加器 *R 32000.0, AC0 // 标度累加器中的数值 ROUND AC0, AC0 // 将实数转换为双整数
DTI AC0, AC0 // 将双整数转换为整数 MOVW AC0, AQW0 // 将数值写入模拟输出 按上边的程序在仿真软件上调试时,ITD AIW0, AC0 显示出错误,如把这一步改为MOVW AIW0, AC0 ,然后调试时PID VB100, 0这一步又出现错误 不知道为什么,那位好人能否帮忙给看看啊,十分感谢!好人一生平安! |