当前位置: 主页 > PLC控制

SCL创建FB的问题

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

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

图片说明:

SCL创建FB的问题SCL创建FB的问题

最佳答案

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

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

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

  • 关注微信

猜你喜欢

微信公众号