首先建一个结构
STRUCT
PV : REAL ;//转换后的值
SCALE_HIGH : REAL ;//量程上限
SCALE_LOW : REAL ;//量程下限
ALM_HIGH : REAL ;//报警上限
ALM_LOW : REAL ;//报警下限
END_STRUCT
在DB块中根据模拟量的个数,建立若干个这样结构的变量
编写STL程序如下:
L P#512.0//模拟量的I/O地址
LAR1
L P#0.0
LAR2
L 200//模拟量的个数
LOP1: T LW 0//模拟量个数暂存
L PIW[AR1,P#0.0]
T LW 2//获取模拟量的值,并暂存
+AR1 P#2.0//指针加2
OPN "AIDB"//打开数据块
L DBD [AR2,P#4.0]//获取量程上限值
T LD 4
L DBD [AR2,P#8.0]//获取量程下限值
T LD 8
CALL "SCALE"//调用FC105
IN :=LW2
HI_LIM :=LD4
LO_LIM :=LD8
BIPOLAR:=FALSE
RET_VAL:=LW12
OUT :=LD16
L LD 16//获取FC105的返回值
T DBD [AR2,P#0.0]//送到DB块中的PV值
+AR2 P#20.0//DB指针加20
L LW 0//为LOOP循环用
LOOP LOP1//循环
呵呵,可以省些重复劳动,不知道对大家有没有帮助
1楼
0
0
回复
STRUCT
PV : REAL ;//转换后的值
SCALE_HIGH : REAL ;//量程上限
SCALE_LOW : REAL ;//量程下限
ALM_HIGH : REAL ;//报警上限
ALM_LOW : REAL ;//报警下限
END_STRUCT
在DB块中根据模拟量的个数,建立若干个这样结构的变量
编写STL程序如下:
L P#512.0//模拟量的I/O地址
LAR1
L P#0.0
LAR2
L 200//模拟量的个数
LOP1: T LW 0//模拟量个数暂存
L PIW[AR1,P#0.0]
T LW 2//获取模拟量的值,并暂存
+AR1 P#2.0//指针加2
OPN "AIDB"//打开数据块
L DBD [AR2,P#4.0]//获取量程上限值
T LD 4
L DBD [AR2,P#8.0]//获取量程下限值
T LD 8
CALL "SCALE"//调用FC105
IN :=LW2
HI_LIM :=LD4
LO_LIM :=LD8
BIPOLAR:=FALSE
RET_VAL:=LW12
OUT :=LD16
L LD 16//获取FC105的返回值
T DBD [AR2,P#0.0]//送到DB块中的PV值
+AR2 P#20.0//DB指针加20
L LW 0//为LOOP循环用
LOOP LOP1//循环
呵呵,可以省些重复劳动,不知道对大家有没有帮助