回复:SCL编程问题

荣海

  • 帖子

    371
  • 精华

    0
  • 被关注

    10

论坛等级:侠士

注册时间:2009-04-02

普通 普通 如何晋级?

发布于 2010-07-15 15:29:19

12楼

quote:以下是引用youhm在2010-07-15 11:06:23的发言:
楼主数据本来就是Real类型的,所以5楼是正确的

你说的对,是我太冲动,反倒弄错了。5楼的帖子中的转换公式是正确的。
在DB2中定义三个不同数据类型的变量:
DB2.DB_VAR1(WORD):DB2.DBW0,
DB2.DB_VAR2(DWORD):DB2.DBD2,
DB2.DB_VAR3(REAL): DB2.DBD6,
与100相加正确的转换公式如下:
DB2.DBW0:=DWORD_TO_WORD(DINT_TO_DWORD(REAL_TO_DINT(DINT_TO_REAL(DWORD_TO_DINT(WORD_TO_DWORD(DB2.DBW0)))+INT_TO_REAL(100))));
DB2.DBD2:=DWORD_TO_WORD(DINT_TO_DWORD(REAL_TO_DINT(DINT_TO_REAL(DWORD_TO_DINT(DB2.DBD2))+INT_TO_REAL(100))));
DB2.DBD6:=REAL_TO_DWORD(DWORD_TO_REAL(DB2.DBD6)+INT_TO_REAL(100));
以上三条语句经过测试,结果正确,仅供参考,还有其它转换方案。
一定要注意BYTE、WORD、DWORD TO “REAL”时的转换,为了获得正确的“REAL”数,必须总是通过中间步骤“DWORD_TO_DINT”和“DINT_TO_REAL”来实现。
物竞天择,适者生存!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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