我用了MicronPower20060821上的模拟量比例换算指令库,但输出的值一直在变化,无法稳定,具体的程序如下:
Network 1
LD SM0.0
MOVR 640.0, VD300
*R VD200, VD300
CALL SBR1, VD300, 100.0, 0.0, 32000, 6400, VW400
MOVW VW400, AQW0
LD SM0.0
-I #Osl, #Osh
ITD #Osh, #Temp_D
DTR #Temp_D, #Temp_R
-R #Isl, #Input
*R #Input, #Temp_R
-R #Isl, #Ish
/R #Ish, #Temp_R
ROUND #Temp_R, #Temp_D
DTI #Temp_D, #Temp_I
+I #Osl, #Temp_I
MOVW #Temp_I, #Output
VD300是我输入的工程值,这个数一直没有变化,但是输出的VD400数值在不断的随机变化,AQW0输出值总在5.0-5.1MA之间变化,请问这是为什么?请帮忙解决,谢谢.
问题补充:
LD SM0.0
MOVR 640.0, VD300
*R VD200, VD300
CALL Scale_R_I, VD300, 100.0, 0.0, 32000, 6400, VW400
MOVW VW400, AQW0
The formula is as follows:
Ov = [(Osh - Osl) * (Iv - Isl) / (Ish - Isl)] + Osl
Ov = scaled output value
Iv = analog input value
Osh = high limit of the scale for the scaled output value
Osl = low limit of the scale for the scaled output value
Ish = high limit of the scale for the analog input value
Isl = low limit of the scale for the analog input value
LD SM0.0
-I #Osl, #Osh
ITD #Osh, #Temp_D
DTR #Temp_D, #Temp_R
-R #Isl, #Input
*R #Input, #Temp_R
-R #Isl, #Ish
/R #Ish, #Temp_R
ROUND #Temp_R, #Temp_D
DTI #Temp_D, #Temp_I
+I #Osl, #Temp_I
MOVW #Temp_I, #Output
最佳答案
1、AQW0寄存器中存放的值与AQW0端子上测到的电流值中对应的,如果AQW0中的值不变,端子上的电流应不变,如果AQW0中的值在变,那么端子上的电流也应跟着变,这是肯定的!
2、虽然你的输入值是稳定的,但是中间有很多的常数与变量参与了计算,这些变量的值稳定吗?你不妨监视一下这些变量的值,是否有不期望的变动出现。
提问者对于答案的评价:
是我输入的值有问题
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc359877.html