回复:请教:SCL结构体的访问问题?

四书五经

  • 帖子

    762
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2011-10-09 10:53:29

6楼

研究了一下,感觉SCL还真是方便!一行代码就能完成很多功能
简单测试SCL代码如下:
TYPE Data_Struct
STRUCT
Vrs:REAL;
Dsa:WORD;
Ala:BOOL;
Inp:BOOL;
Rst:BOOL;
LivCou:INT;
END_STRUCT;
END_TYPE

FUNCTION FC101: INT
// Block Parameters
VAR_INPUT
// Input Parameters
i:INT;
LastStructur:Data_Struct;
DataAry:ARRAY[1..20] OF Data_Struct;//定义结构数组
END_VAR

VAR_IN_OUT
// I/O Parameters
FirstStructur:Data_Struct;
END_VAR

VAR_TEMP
// Temporary Variables
ptr:Data_Struct;
END_VAR
IF (i<1) AND (i>20) THEN RETURN;END_IF;//数组上下限检查
ptr.vrs:=DataAry[i].vrs;
FC101 := 100;
END_FUNCTION

对应STL代码如下:
SET
SAVE
= L 10.1
L #i
L 1
<I
L #i
L 20
= L 10.2
>I
A L 10.2
JCN A7d0
A L 10.1
SAVE
BEU //以上为数组上,下限检查
A7d0: L #i
ITD
L L#-1
+D
L L#80
*D
L L#0
+D
L P##DataAry
LAR1
TAK
T LD 12
TAK
L W [AR1,P#0.0]
T LW 16
OPN DB [LW 16]
L D [AR1,P#2.0]
L LD 12
+D
LAR1
L D [AR1,P#0.0]
T #ptr.Vrs
L 100
T #RET_VAL
CLR
A L 10.1
SAVE
BESET
SAVE
= L 10.1
L #i
L 1
<I
L #i
L 20
= L 10.2
>I
A L 10.2
JCN A7d0
A L 10.1
SAVE
BEU
A7d0: L #i
ITD
L L#-1
+D
L L#80
*D
L L#0
+D
L P##DataAry
LAR1
TAK
T LD 12
TAK
L W [AR1,P#0.0]
T LW 16
OPN DB [LW 16]
L D [AR1,P#2.0]
L LD 12
+D
LAR1
L D [AR1,P#0.0]
T #ptr.Vrs
L 100
T #RET_VAL
CLR
A L 10.1
SAVE
BE
在OB1里调用
CALL FC 101
i :="index"
LastStructur :=DB1.DATA1[20]
DataAry :=DB1.DATA1
RET_VAL :=MW0
FirstStructur:=DB1.DATA1[1]
实际的STL代码和楼主贴的STL代码还是有些象的。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54709条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。