数。这一过程是回路输入转换的逆过程。
3.2 PID 温度控制程序
//主程序
LD SM0.1 //首次扫描时为 ON
CALL 0 //调用初始化子程序 0
//初始化子程序 0,装载 PID 指令的回路表
LD SM0.0 //给定值存入累加器
DTR AC0, AC0 //将 32 位整数转换成实数
/R 64000.0,AC0 //累加器中的实数标准化
+R 0.5, AC0 //加上偏移值,使其在
0.0~1.0 之间
MOVR ACO, VD104 //装入给定值
MOVR 2, VD112 //装入回路增益 2
MOVR 1, VD116 //装入采样时间 1s
MOVR 30, VD120 //装入积分时间 30min
MOVR 0, VD124 //关闭微分作用
LDN T32
TON T32, 1000 //设置定时器 32 中断的
时间间隔为 1s
ATDH 0, 21 //设置定时器 32 中断(中
断号为
21)执行 PID 指令
ENI //允许中断,子程序 0 结束
//中断程序 0
LD SM0.0
XORD AC0, ACO //清除累加器
MOVW AIWO, AC0 //将待转化的模拟量
存入累加器
LDW>= AC0, 0 //如果模拟量数值为正
JMP 0 //直接转换成实数
ORD 16#FFFF0000, ACO //将 AC0
内的数
值进行符号扩展
,扩展为 32
位负数
LBL 0
DTR AC0, AC0 //将 32 位整数转换成实数
/R 64000.0, AC0 //累加器中的实数标准化
+R 0.5, AC0 //加上偏移值,使其在
0.0~1.0 之间
MOVR ACO, VD100 //装入标准化的过程变量
LD I0.0 //在自动方式下,执行 PID 指令
PID VB100, 0 //
回路表的起始地址为
VB100,回路号为 0
LD SM0.0
MOVR VD108, AC0 //将回路输出送入累加器
-R 0.5, AC0
*R 64000.0, AC0
ROUND AC0, AC0 //将实数转换为 32 位整数