回复:SCL编程问题

荣海

  • 帖子

    371
  • 精华

    0
  • 被关注

    10

论坛等级:侠士

注册时间:2009-04-02

普通 普通 如何晋级?

发布于 2010-07-12 22:12:02

5楼

quote:以下是引用尘土飞扬在2010-07-12 15:44:50的发言:
如果是DB2.DBD20呢,其实我程序里面这个是个REAL型的,好像也不能“DB2.DBD10 :=DB2.DBD10 + 1"”啊!那如果是REAL型的,该如何写呢?

不同的数据类型(格式),需要转换成同一种类型进行运算。
WORD、DWORD格式是不可以直接进行加减乘除等运算的,需要用INT、REAL等进行运算。
分析下你需要的运算: DB2.DBD10 :=DB2.DBD10 + 1
DB2.DBD10 (DWORD格式),数据是REAL类型,1是INT类型,所以你需要先将DB2.DBD10 和 1 转换成同一种数据类型,然后相加,再将相加的结果转换为最终结果的存储格式。
提供一种方案,都转换为REAL类型,然后相加:因为DB2.DBD10是DWORD格式,需要先转换为REAL格式,与转换后的1相加结果为REAL格式,然后将REAL转换为DWORD格式(最终结果的存储格式)。
DB2.DBD10:=REAL_TO_DWORD(DWORD_TO_REAL(DB2.DBD10)+INT_TO_REAL(1));

说得有些啰嗦了,总之,你按照相同数据类型才可以进行加减乘除运算的原则,统一需要运算的数据的类型,然后要注意运算结果的类型与最终结果的类型要一致。(SCL帮助手册中有转换函数的种类,你可以参考一下。另外你上面的运算还有其它方案可用。注意运算数据的范围。)
物竞天择,适者生存!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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