SCL创建FB的问题

SCL创建FB,希望在FB101中操作共享DB10数据块中的数组型数据,编译时出现变量未声明的报错,希望各位大神支招,小弟为初学SCL
还有一个问题:FB块的输入引脚接连DB地址时,在仿真模式下,为何在变量表里赋值就会报错,求解
程序如下:
DATA_BLOCK DB10
    STRUCT
Temp:ARRAY[1..10]OF REAL;
    END_STRUCT
BEGIN
END_DATA_BLOCK
FUNCTION_BLOCK FB101
VAR_TEMP
END_VAR
VAR
END_VAR
VAR_INPUT
    ID:INT;
    Real_in:REAL;
END_VAR
VAR_OUTPUT
    Result: REAL;
END_VAR
       IF ID<=10 THEN
      Temp[ID]:=Real_in; //编译时报这里的"Temp"变量未声明错误,我创建DB10的时候不是已经声明过了么?求解
       END_IF;   
END_FUNCTION_BLOCK

问题补充:
“ IF ID<=10 THEN
      Temp[ID]:=Real_in; //编译时报这里的"Temp"变量未声明错误,我创建DB10的时候不是已经声明过了么?求解
       END_IF;   ”
这部分我改为:
IF ID<=10 THEN
     DB10.Temp[ID]:=Real_in; 
       END_IF;  
编译没问题了..但我模拟的时候,报SF并且处于STOP,RUN不了,查CPU信息为写命令时区域长度错误
请大神们,给予帮忙

图片说明:

SCL创建FB的问题   

最佳答案

IF ID<=10 THEN
      Temp[ID]:=Real_in; //编译时报这里的"Temp"变量未声明错误,我创建DB10的时候不是已经声明过了么?求解
       END_IF;   
----------------------------------------
这里你的写法不对,这么写是指fb本身创建的变量,如果需要调用外部全局db的数组,则可以写成DB10.TEMP[ID],而且最好给db10取个符号名(符号表中)

---------------------------------------------
所谓长度错误,就是cpu寻址错误,也就是找不到程序中要访问的地址,你的fb中定义ID参数的时候没有指定一个合理范围的初始值,或者调用的时候没有填一个正确的参数,你这段程序中,为了访问之前建的db10,id的范围应当在1-10,而你的id默认值没有指定,可能就为0了。

提问者对于答案的评价:
谢谢..

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc150024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月4日 上午7:37
下一篇 2017年6月4日 上午7:37

相关推荐