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

WAPCS

  • 帖子

    77
  • 精华

    1
  • 被关注

    4

论坛等级:游侠

注册时间:2012-02-01

普通 普通 如何晋级?

发布于 2012-11-30 16:45:49

7楼

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

精华帖版主置评:ITD指令用于16位数据格式向32位数据格式的转变,掩盖了一些技术细节。ITD并不改变变量的值,初学者容易把它给忽略。S7200的符号数(可正可负)是用2进制补码方式表示,最高位是符号位,当数位长度发生变化时,符号位必须予以正确处理,否则会造成数值转换错误。本贴就是一个实例。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33212条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。