发布于 2006-01-20 19:34:37
0楼
用FB太可惜了....用带多重背景的FB也不太实用. 个人觉得不用建一个FC和一个共享DB,然后在OB35里调用(100MS中断,相当于一个时基为100MS的定时器,一般这个精度就够用了):
1.建立一个共享DB,保证里面至少有8个以上的BYTE空间(假设为DB10.DBB0-DB10.DBB7),其中DB10.DBB0的初始值为30,代表30*100MS=3S.
2.建立一个FC如下:
FUNCTION FC10:VOID
VAR_INPUT
ValNo:BOOL //阀的标号
In1:BOOL //到位信号A1
Out1:BOOL //线圈输出1
In2:BOOL //到位信号2
OUT2:BOOL //线圈输出2
RST:BOOL //复位报警信号
END_VAR
VAR_OUTPUT
Alarm:BOOL //报警输出信号
END_VAR
BEGIN
A Out1;
AN In1;
O;
A Out2;
AN In2;
JCN _001;
L DB10.DBB[ValNo];
INC;
JU _002;
_001: L 0; //清零
_002: T DB10.DBB[ValNo];
L DB10.DBB[ValNo];
L DB10.DBB0 //初始值30=3S;
==I;
S Alarm;
A RST;
R Alarm;
3:在OB35中调用FC10
CALL FC10, 1,I0.0,Q0.0,I0.1,Q0.1,M0.1 //1#阀
.......
CALL FC10, 7,I1.4,Q1.4,I1.5,Q1.5,M0.7 //7#阀
I can do it