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是高级语言编程。