发布于 2006-02-13 09:20:16
0楼
过年在家里没事做了一个FB,测试过了基本符合要求。
CALL FB 1 , DB1
QDF:=P#M 2.0 //启动伐上升沿首地址
FK :=P#I 0.0 //反馈信号首地址
SJ :=7000 //设置检测的时间
SM :=7 //伐的数量(1-255)
BJ :=P#Q 10.0 //报警输出的首地址
QD :=P#M 0.0 //启动信号
SZ :=MD220 //由SFC64获得的时间
其中QDF,QD,BJ,FK都位指针类型。如果一共七个伐要求这七个伐的启动反馈与报警为连续的地址。
QD_T,FK_T,BJ_T,QD_FT为STAT变量 ARRAY[0..255]OF BOOL
QD_T_1为STAT变量 ARRAY[0..255]OF dword
其他的为temp变量
L #SM
T #XH1
L #SJ
T #SJ1
L #SZ
T #SZ1
////////////////////////////////////////
L P##QDF
LAR1
L D [AR1,P#2.0]
LAR1
L P##QD_T
LAR2
L #XH1
QD: T #XH
A [AR1,P#0.0]
= [AR2,P#0.0]
+AR1 P#0.1
+AR2 P#0.1
L #XH
LOOP QD //取得启动上升沿信号
///////////////////////////////////////
////////////////////////////////////////
L P##QD
LAR1
L D [AR1,P#2.0]
LAR1
L P##QD_FT
LAR2
L #XH1
QD22: T #XH
A [AR1,P#0.0]
= [AR2,P#0.0]
+AR1 P#0.1
+AR2 P#0.1
L #XH
LOOP QD22 //取得启动信号
///////////////////////////////////////
L P##FK
LAR1
L D [AR1,P#2.0]
LAR1
L P##FK_T
LAR2
L #XH1
FK: T #XH
A [AR1,P#0.0]
= [AR2,P#0.0]
+AR1 P#0.1
+AR2 P#0.1
L #XH
LOOP FK //取得反馈信号
///////////////////////////////////////
L P##QD_T
LAR1
L P##QD_T_1
LAR2
L #XH1
QD11: T #XH
AN [AR1,P#0.0]
JC KK1
L #SZ1
T D [AR2,P#0.0]
KK1: A(
L #SZ1
L D [AR2,P#0.0]
-D
L #SJ1
>D
)
AN [AR1,P#32.0]
A [AR1,P#1120.0]
= [AR1,P#64.0]
+AR1 P#0.1
+AR2 P#4.0
L #XH
LOOP QD11
//////////////////////////////////////////
/////////////////////////////////////////
L P##BJ
LAR1
L D [AR1,P#2.0]
LAR1
L P##BJ_T
LAR2
L #XH1
BJ: T #XH
A [AR2,P#0.0]
= [AR1,P#0.0]
+AR1 P#0.1
+AR2 P#0.1
L #XH
LOOP BJ //付值报警信号
BEU
///////////////////////////////////////
学无止境