回复:在SCL中为什么无法将一个REAL值(浮点数)直接赋值给数据块

老学童

  • 帖子

    765
  • 精华

    32
  • 被关注

    64

论坛等级:奇侠

注册时间:2011-06-22

钻石 钻石 如何晋级?

发布于 2014-04-04 23:16:28

14楼

quote:以下是引用xkqxwhz在2014-04-04 21:30:38的发言:
quote:以下是引用老学童在2014-04-04 00:09:51的发言:
quote:以下是引用哲在2014-04-03 15:46:51的发言:
基础很重要。但是,在SCL中,就没办法把REAL值给DB吗?

可以的,只是要先转换成DWORD值后写入,例如:要将5.000000e+001写入DB4.DBD4,可以写成:
DB4.DD[4] := REAL_TO_DWORD(5.000000e+001);
当然DB4.DBD4中的类型必须是REAL。

请问老学童前辈,只有这一种方法吗?

xkqxwhz大侠,你好!
我也在探讨,DB直接寻址目前似乎只发现这种‘方法’;在实际编程时,SCL多数情况下采用间接(或指针)寻址,而且多数情况下采用变量名编程,有时源程序中将DB与SCL的FC写在同一个程序中,先定义DB块,在后面的FC中的编程直接引用前面定义的DB中的变量名,例如:
在变量表中定义:



在某个SCL源程序写入一下程序段:
DATA_BLOCK DBtest
STRUCT
VAR1:REAL;
END_STRUCT
BEGIN

END_DATA_BLOCK


FUNCTION FCtest : VOID

VAR_TEMP

END_VAR

DBtest.VAR1:= 5.000000e+001;

END_FUNCTION



也不知道这算不算直接寻址,总之写入REAL类型的值肯定没有问题;其实我也是好奇(哈哈,瞎较劲),每种语言在开发时都有各种限定,我想西门子也不例外吧,具体为什么这么限定没搞懂,毕竟SCL是高级语言编程。
人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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