以前在阿苏工控论坛上发过了,今天看见有兄弟找scl中文资料,小弟我就当是抛砖引玉吧WW.W_PLCJS_COM-PLC-技.术_网
(今天是2005年第一天上班,小弟我把这个帖子查看权限降低了,大家都可以看啦,不过要发表意见哦,有错误就指出来,有新的体会就贴出拉,不要藏着掖着,哈哈哈哈哈)WWW.PLCJS.COM——可编程控制器技术门户
说实话,我自己学习用到的东西(2004年12月8日随笔)WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
1、step75。2+scl5。1(这个是必须的)WWW_PLC※JS_COM-PmLC-技.术_网
2、plcsim5。2(模拟仿真用)——可——编——程——控-制-器-技——术——门——户
3、scl手册(安装完scl软件,就会有这个pdf文档了)P.L.C.技.术.网——可编程控制器技术门户
其实大家只要有以上三个软件,就可以自己研究出来了。WW.W_PLCJS_COM-PLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
2004.1.14plcjs.技.术_网
1、 SCL程序可以在CPU314及其以上的S7(包括400)中运行。WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW_P※LCJS_COM-PLC-)技.术_网
——可——编——程——控-制-器-技——术——门——户
2、 SCL程序创建在”S7 Program”-”Sources”下面。WWW_PLCJS@_COM%-PLC-技.术_网
S7-ProgramWWW_P※LCJS_CO※M-PLC-技-.术_网
-Blocks(e.g. FB,OB)plcjs.技.术_网
-Sources(e.g.SCL source file)WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
-SymbolsP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_P※LCJS_CO※M-PLC-技-.术_网
3、 程序结构WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
FB: FUNCTION_BLOCK fb_nameWWW_PLC※JS_COM-PmLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
END_FUNCTION_BLOCKplcjs.技.术_网
FC: FUNCTION fc_name:function typeWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WW.W_PLC※JS_C,OM-PL,C-技.术_网
END_FUNCTIONWW.W_PLCJS_COM-PLC-技.术_网
OB: ORGANIZATION_BLOCK ob_nameWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
plcjs.技.术_网
END_ORGANIZATION_BLOCKWWW_P※LCJS_COM-PLC-)技.术_网
DB: DATA_BLOCK db_nameWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
END_DATA_BLOCKWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
UDT TYPE udt_nameWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
WWW.PLCJS.COM——可编程控制器技术门户
END_TYPE WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
4、 属性定义和程序注释P.L.C.技.术.网——可编程控制器技术门户
例如:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
FUNCTION_BLOCK FB10W1WW_P4LCJS_COM-PLC-技.术_网
//This is a block comment.WWW_P※LCJS_CO※M-PLC-技-.术_网
TITLE = ’Mean_Value’——可——编——程——控-制-器-技——术——门——户
VERSION : ’2.1’WWW_PLCJS@_COM%-PLC-技.术_网
KNOW_HOW_PROTECTWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
AUTHOR : AUT_1WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
5、 变量定义P.L.C.技.术.网——可编程控制器技术门户
Data Syntax FB FC OB DB UDT——可——编——程——控-制-器-技——术——门——户
Constants CONSTdeclaration listEND_CONST X X X WWW_PLCJS_COM-PLC-技.术_网
Labels LABELdeclaration listEND_LABEL X X X P.L.C.技.术.网——可编程控制器技术门户
Temporary Variables VAR_TEMP declaration listEND_VAR X X X X X X P.L.C.技.术.网——可编程控制器技术门户
Static variables VARdeclaration listEND_VAR X X X X XWW.W_PLC※JS_C,OM-PL,C-技.术_网
Input parameters VAR_INPUTdeclaration listEND_VAR X X WWW_PLC※JS_COM-PmLC-技.术_网
Output parameters VAR_OUTPUTdeclaration listEND_VAR X X WWW_PL※CJS_COM-PLC-技.术_网
In/out parameters VAR_IN_OUTdeclaration listEND_VAR X X WW.W_PLCJS_COM-PLC-技.术_网
WWW_PLCJS_COM-PLC-技.术_网
6、FC结构P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
FUNCTION FC11: REAL//如果不需要返回值,用VOID关键字WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
VAR_INPUTWWW_P※LCJS_COM-PLC-)技.术_网
x1: REAL ;WW.W_PLCJS_COM-PLC-技.术_网
x2: REAL ;WW.W_PLC※JS_C,OM-PL,C-技.术_网
x3: REAL ;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
x4: REAL ;WWW.PLCJS.COM——可编程控制器技术门户
END_VARWW.W_PLC※JS_C,OM-PL,C-技.术_网
VAR_OUTPUTWWW_PLCJS@_COM%-PLC-技.术_网
Q2: REAL ;WWW_PLCJS_COM-PLC-技.术_网
END_VARWWW.PLCJS.COM——可编程控制器技术门户
BEGINWWcW_PLCJS_COM-PLC-技.术_网
// Return value from functionWWW.PLCJS.COM——可编程控制器技术门户
FC11:= SQRT( (x2 - x1)**2 + (x4 - x3) **2 ) ;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
Q2:= x1 ;WWcW_PLCJS_COM-PLC-技.术_网
END_FUNCTIONWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
7、自己写了一个简单的程序WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
OB1:WWW_PL※CJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
FC1用SCL编写:WWW_PL※CJS_COM-PLC-技.术_网
FUNCTION fc1:INTplcjs.技.术_网
VAR_INPUTWWW.PLCJS.COM——可编程控制器技术门户
a:INT;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
END_VARWWW.PLCJS.COM——可编程控制器技术门户
beginWWW_PL※CJS_COM-PLC-技.术_网
fc1:=a+10; WW.W_PLC※JS_C,OM-PL,C-技.术_网
end_FUNCTIONWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_P※LCJS_COM-PLC-)技.术_网
运行后:每次m0.0从0变1,就调用FC1一次,mw18里面的数据加10。P.L.C.技.术.网——可编程控制器技术门户
WWcW_PLCJS_COM-PLC-技.术_网
2004.1.15WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
问题:SCL如何调用其他SCL以及用LAD等编写的程序?WWW_PLCJS_COM-PLC-技.术_网
写一个有循环、判断等基本语句组成的程序。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
参数使用问题?(直接使用实际地址?参数传递问题)WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
如何在线调试SCL程序(debug)WW.W_PLCJS_COM-PLC-技.术_网
1、 在SCL里面调用LAD或者STL写的块W1WW_P4LCJS_COM-PLC-技.术_网
先用STL或者LAD创建一个FC2:WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
定义一个输入参数:in1(int型);一个输出参数:out1(int型)WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
语句表如下:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
L #in1WWW_PLC※JS_COM-PmLC-技.术_网
L #in1WW.W_PLCJS_COM-PLC-技.术_网
+I WWW_P※LCJS_CO※M-PLC-技-.术_网
T #out1WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
NOP 0WWcW_PLCJS_COM-PLC-技.术_网
在下面写的SCL里面调用FC2:WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
FUNCTION fc1:INTWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
VAR_INPUTplcjs.技.术_网
a:INT;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
END_VARW1WW_P4LCJS_COM-PLC-技.术_网
VAR_TEMPWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
b:INT;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
end_var WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
beginWWW_PLCJS_COM-PLC-技.术_网
//fc1:=a+10; WWW.PLCJS.COM——可编程控制器技术门户
fc2(in1:=a,out1:=b);WWW_PLC※JS_COM-PmLC-技.术_网
fc1:=b;W1WW_P4LCJS_COM-PLC-技.术_网
end_FUNCTIONP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WW.W_PLC※JS_C,OM-PL,C-技.术_网
2、在SCL里面调用其他SCL写的块WW.W_PLC※JS_C,OM-PL,C-技.术_网
FUNCTION fc1:INTWWW_P※LCJS_COM-PLC-)技.术_网
VAR_INPUTWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
a:INT;WWW_PLCJS_COM-PLC-技.术_网
END_VARWWW_PLCJS@_COM%-PLC-技.术_网
VAR_TEMPP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
b:INT;WWW_PLC※JS_COM-PmLC-技.术_网
end_var WWW.PLCJS.COM——可编程控制器技术门户
BEGIN WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
fc3(in1:=a,out1:=b);//调用fc3WWW_PLCJS@_COM%-PLC-技.术_网
fc1:=b;WWW_P※LCJS_COM-PLC-)技.术_网
end_FUNCTIONP.L.C.技.术.网——可编程控制器技术门户
WWW_PLCJS@_COM%-PLC-技.术_网
FUNCTION fc3:void//无返回值WWW_P※LCJS_COM-PLC-)技.术_网
VAR_INPUTWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
in1:INT;WWW_P※LCJS_CO※M-PLC-技-.术_网
END_VARW1WW_P4LCJS_COM-PLC-技.术_网
VAR_OUTPUTWWW_PLCJS_COM-PLC-技.术_网
out1:INT;WW.W_PLCJS_COM-PLC-技.术_网
end_var WW.W_PLCJS_COM-PLC-技.术_网
beginWWW_PLCJS_COM-PLC-技.术_网
out1:=in1+10;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
end_FUNCTION——可——编——程——控-制-器-技——术——门——户
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
3、一个带有循环、判断等基本语句的程序plcjs.技.术_网
FUNCTION fc4:VOIDWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
VAR_INPUT——可——编——程——控-制-器-技——术——门——户
in1:BOOL; W1WW_P4LCJS_COM-PLC-技.术_网
in2:INT;P.L.C.技.术.网——可编程控制器技术门户
END_VAR W1WW_P4LCJS_COM-PLC-技.术_网
VAR_OUTPUTWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
out1:BOOL;WWW_P※LCJS_COM-PLC-)技.术_网
out3:BOOL;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
out2:INT;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
END_VARP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
VAR//定义一个静态变量,用来存储块调用之间的数据WWW_PLCJS_COM-PLC-技.术_网
temp1:BOOL;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
END_VAR plcjs.技.术_网
VAR_TEMPP.L.C.技.术.网——可编程控制器技术门户
temp2:INT;WW.W_PLCJS_COM-PLC-技.术_网
END_VARWWW_PLCJS@_COM%-PLC-技.术_网
BEGINWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
IF in1=false AND temp1=true THEN//检验下跳沿P.L.C.技.术.网——可编程控制器技术门户
out1:=true; P.L.C.技.术.网——可编程控制器技术门户
ELSEWWW.PLCJS.COM——可编程控制器技术门户
out1:=false; WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
END_IF; WWW_PLCJS@_COM%-PLC-技.术_网
IF in1=true AND temp1=false THEN//检验上跳沿plcjs.技.术_网
out3:=true;——可——编——程——控-制-器-技——术——门——户
ELSEWWW_P※LCJS_CO※M-PLC-技-.术_网
out3:=false; WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
END_IF; WW.W_PLCJS_COM-PLC-技.术_网
temp1:=in1;WWcW_PLCJS_COM-PLC-技.术_网
FOR temp2:=1 TO 10 BY 2 DO//省略了关键字by,就默认加1WWW.PLCJS.COM——可编程控制器技术门户
out2:=in2+out2;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
END_FOR; WWW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS_COM-PLC-技.术_网
END_FUNCTIONWWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
4、SCL中直接使用绝对地址WWW_P※LCJS_CO※M-PLC-技-.术_网
FUNCTION fc1:VOIDWWW_PLCJS@_COM%-PLC-技.术_网
BEGINWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
in1:=in1+10;//in1在符号表里面已经定义为int型,存储区为mw0WWW_P※LCJS_CO※M-PLC-技-.术_网
IF m0.0=false then//这里直接引用实际地址plcjs.技.术_网
m0.0:=true;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
ELSEWWW_P※LCJS_COM-PLC-)技.术_网
m0.0:=false;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
END_IF; WWW_PLCJS_COM-PLC-技.术_网
end_FUNCTIONWWW_P※LCJS_CO※M-PLC-技-.术_网
5、如何在线调试SCL程序WWW_P※LCJS_COM-PLC-)技.术_网
注:仅400可以设置断点(breakpoint)以及单步执行
我传一个简单的增量式,四次递推平均滤波的PI控制程序,用SCL编的。我也是初学者,大家指教,谢谢!另外我希望使用SCL的同行们多多交流,不管你是高手也好菜鸟也罢。(用SCL的同行太少了,自学时很郁闷,呵呵)P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
FUNCTION_BLOCK FB2P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
——可——编——程——控-制-器-技——术——门——户
VAR_INPUTWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
In:WORD;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
Pv:REAL;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
Kc:REAL;WWcW_PLCJS_COM-PLC-技.术_网
Ki:REAL;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
END_VARWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
VAR_OUTPUTWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
Out:WORD;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
END_VARplcjs.技.术_网
VARWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
InW:ARRAY[1..4] OF INT;WWW_PL※CJS_COM-PLC-技.术_网
InLast:REAL;WWW_PLCJS_COM-PLC-技.术_网
OutLast:REAL;WWW_PLC※JS_COM-PmLC-技.术_网
END_VARP_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
VAR_TEMPWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
N:INT;WWW_PLCJS_COM-PLC-技.术_网
SUM:INT;plcjs.技.术_网
Eq:REAL;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
END_VARWWW_PLCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
BEGINWWW.PLCJS.COM——可编程控制器技术门户
SUM:=0;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
FOR N:=1 TO 3 DOWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
InW[N]:=InW[N+1];WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
SUM:=SUM+InW[N];WWW_PL※CJS_COM-PLC-技.术_网
END_FOR;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
InW[4]:=WORD_TO_INT(In);WWW_PLC※JS_COM-PmLC-技.术_网
Eq:=(SUM+InW[4])/4;WWW_PLCJS@_COM%-PLC-技.术_网
OutLast:=OutLast+Kc*(InLast-Eq)+Ki*Eq;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
IF OutLast>3.276E4 THENW1WW_P4LCJS_COM-PLC-技.术_网
OutLast:=3.276E4;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
ELSIF OutLast<0.0 THENWWW_PLCJS@_COM%-PLC-技.术_网
OutLast:=0.0;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
END_IF;——可——编——程——控-制-器-技——术——门——户
InLast:=Eq;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Out:=INT_TO_WORD(REAL_TO_INT(OutLast));WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
END_FUNCTION_BLOCKWWW_PLCJS_COM-PLC-技.术_网
plcjs.技.术_网
DATA_BLOCK DB2P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
FB2WWcW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
BEGINWWW_PLC※JS_COM-PmLC-技.术_网
END_DATA_BLOCK