技术论坛

 回复:求救:模拟量输入模块数值偶尔波动很大,

返回主题列表
作者 主题
WAPCS
游侠

经验值:372
发帖数:83
精华帖:1
楼主    2012-11-29 11:48:48
主题:求救:模拟量输入模块数值偶尔波动很大,
模拟量模块通过压力传感器(4-20ma)检测压力,待机时,所有电机均未启动,监控可以看到AIW6数值为6461,很稳定,但系统还是经常提示超压,于是我加了一条程序,用AIW6的值跟6400作比较,当AIW6的值小于6400时,将WIW6的即时值传送到某个存储器VW200,发现VW200的值有时5960,有时6210,总之就是远远小于6400,在计算中AIW6—6400有时候就会得到负数,最终计算出来的压力就会大过设定报警压力值,所以才会报警,知道问题所在了,但却百思不得其解,设备待机状态所有动力部份都不启动,应该不会有什么干扰,接线也正常,监控也正常,只有通过程序才能捕捉到它的瞬时值会偶尔小于6400,请大家帮帮忙,给个建议
WAPCS
游侠

经验值:372
发帖数:83
精华帖:1
7楼    2012-11-30 16:45:49
精华帖  主题:回复:求救:模拟量输入模块数值偶尔波动很大,
quote:以下是引用凌飞翼在2012-11-29 14:43:11的发言:
我感觉是楼主的数据类型有问题。
把数据处理成工程量的实数表示,应该不会有太多跳动了。
零点显示5900~6460都不算什么,可以通过校准修正。

问题解决了,确实是数据类型的问题,在计算试中,我是用(AIWx—6400)的结果放到AC0后直接乘以总量程,再除以(3200—6400),那么当AIWX偶尔小于6400的时候,结果为负数,直接乘以总量程得出的结果就会非常大,所以超压,后来,我把(AIWx—6400)的结果进行整数到双整数的转化后,即使它的结果为负数,乘以总量程得出的结果也不会很大,这在大家眼里也许只是个常识性的东西,但它却困扰了我两天,见笑了,呵呵,下面是修改前后两段程序

修改前:
LD SM0.0
MOVW AIW0, AC0
AENO
-I +6335, AC0
AENO
*D 500, AC0
AENO
/D 25600, AC0
AENO
DTI AC0, VW108
修改后:
LD SM0.0
MOVW AIW0, AC0
AENO
-I +6335, AC0
AENO
ITD AC0, AC0
AENO
*D +500, AC0
AENO
/D +25600, AC0
AENO
DTI AC0, VW108
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。