s7300 数据查询
刘玉蓉
发布于2014-11-03 17:17
725
0
标签:
问题:
想有S7300做一个功能块,
输入3个数据,(分别是:配方号一个字r,工位号一个字p,查询请求一个位q)
输出15个数据(分别是这个工位上的15个工艺参数a.b.c .d.e.f.g.h.i .j.k.l.m.n.o)其中,这15个数据存在DB10里面的一个二维数据表里,这个表有38行,15列,每15个数据作为一个工位的15个参数都有规律的存在这个表中的一行里面。
请教如何实现, 不太会用,望给讲一下,越详细越好!
问题补充:
我怎么也找不到FC500和FC501,能否帮我测试一下你的程序,我不知问题出在哪里。
佳答案
用scl的数组方法来处理:
1、新建一个db,name键入DATA,type键入ARRAY[1..15,1..38],Initial vlaue为空,下一行的type键入Real
2、在soruce目录下新建一个scl source文件,把下面代码粘贴然后编译,得到两个fc,其中fc500是用于给数组赋初始值,可以放在ob100里面,fc501则是查询数据用的,放在ob1里面
FUNCTION FC500 : VOID
BEGIN
DB3.DATA[1,1]:=1.0;
DB3.DATA[1,2]:=2.0;
DB3.DATA[1,3]:=3.0;
DB3.DATA[1,4]:=4.0;
DB3.DATA[2,1]:=1.0;
DB3.DATA[2,2]:=2.0;
DB3.DATA[2,3]:=3.0;
DB3.DATA[2,4]:=4.0;
END_FUNCTION
FUNCTION FC501 : VOID
VAR_INPUT
P:INT;
Q:BOOL;
END_VAR
VAR_OUTPUT
A:REAL;
B:REAL;
C:REAL;
D:REAL;
E:REAL;
F:REAL;
G:REAL;
H:REAL;
I:REAL;
J:REAL;
K:REAL;
L:REAL;
M:REAL;
N:REAL;
O:REAL;
ERROR:BOOL;
END_VAR
BEGIN
IF Q=TRUE AND P>=1 AND P<=38 THEN
A:=DB3.DATA[P,1];
B:=DB3.DATA[P,2];
C:=DB3.DATA[P,3];
//后面自己加
//如果输出参数用一个数组,这段程序就可以用一个循环写了
ERROR:=FALSE;
ELSE
ERROR:=TRUE;
END_IF;
END_FUNCTION