某机床的用户报警调用FC,FC程序如下:
Network1:
/
Network2:Daten nach Temp kopierenDaten nach Temp kopieren
// Speicher einlesen
L #Wert_aktuell
T LD 0
// e_Wert -> tmp_Wert
L 0
T #tmp_Wert
A #e_Wert_1
= L 5.0
A #e_Wert_2
= L 5.1
A #e_Wert_3
= L 5.2
A #e_Wert_4
= L 5.3
A #e_Wert_5
= L 5.4
A #e_Wert_6
= L 5.5
A #e_Wert_7
= L 5.6
A #e_Wert_8
= L 5.7
A #e_Wert_9
= L 4.0
A #e_Wert_10
= L 4.1
L #e_Meldenummer
T #tmp_Meldenummer
Network3:
L #tmp_Wert
L #tmp_Wert_akt
<>I
JCN end
// alte loeschen
AN #tmp_intern[2]
S #tmp_intern[1]
R #tmp_intern[0]
S #tmp_intern[2]
JC schr
// neu einfuegen
A #tmp_intern[2]
JCN schr
S #tmp_intern[1]
S #tmp_intern[0]
R #tmp_intern[2]
L #tmp_Wert
T #tmp_Wert_akt
L #tmp_Wert_akt
L 0
==I
R #tmp_intern[1]
JC end
schr: NOP 0
A #tmp_intern[1]
JCN end
CALL "ALARM_SQ"
SIG :=#tmp_intern[0]
ID :=W#16#EEEE
EV_ID :=#tmp_Meldenummer
SD :=#tmp_Wert_akt
RET_VAL:=#tmp_error
SET
R #tmp_intern[1]
end: NOP 0
Network4
L #tmp_Wert_akt
L 0
<>I
= #a_Meldung_steht_an
Network5;
// Speicher beschreiben
L LD 0
T #Wert_aktuell
A #e_Quit
JCN x01
L 0
T #Wert_aktuell
x01: NOP 0
某一报警代码如下:
702224 - Minimalmengenschmierung LUBRIX %1<DUMMY> -- St?rung steht an
CALL "FC Meldung Begleitwert"
e_Meldenummer :=L#702224
e_Wert_1 :="HMI Hilfsagreggate".MinimalSchmierung_1.A_Stoerung
e_Wert_2 :="HMI Hilfsagreggate".MinimalSchmierung_2.A_Stoerung
e_Wert_3 :=FALSE
e_Wert_4 :=FALSE
e_Wert_5 :=FALSE
e_Wert_6 :=FALSE
e_Wert_7 :=FALSE
e_Wert_8 :=FALSE
e_Wert_9 :=FALSE
e_Wert_10 :=FALSE
e_Quit :="DB Leitsystem".NC.Status.Alarm_quittieren_FP
a_Meldung_steht_an:="ALMSG_DB".A7022xx[24]
Wert_aktuell :="DB DummySpeicher".Alarm_70xxxx[2224]
以上报警为润滑油液位低报警, 请问报警是怎么出来的?
问题补充:
702204 0 0 "Hydraulic system %1<DUMMY> -- Level in hydraulic tank has fallen short"(液压油位低)
而
"HMI Hilfsagreggate".MinimalSchmierung_1.A_Stoerung
"HMI Hilfsagreggate".MinimalSchmierung_2.A_Stoerung
在程序中仅仅显示地址为DB300.DBX126.2/DB300.DBX136.2
以上两个信号是如何与传感器信号联系起来的,又是如何通过FC263 产生报警信号702224的?
最佳答案
网络2
装载形参#Wert_aktuell 对应实参"DB DummySpeicher".Alarm_70xxxx[2224] 的值
传送给LD0
初始化#tmp_Wert,每个扫描周期先计0 采集报警接口信号,分别存与#tmp_Wert字的对应位
这里只赋值了两个位接口信号:"HMI Hilfsagreggate".MinimalSchmierung_1.A_Stoerung "HMI Hilfsagreggate".MinimalSchmierung_2.A_Stoerung
装载报警号 传送给 #tmp_Meldenummer 临时变量
网络3
比较当前采集报警信号#tmp_Wert 与#tmp_Wert_akt 是否不等,不等则执行以下的信号检查,相等则跳出信号检查,并判断显示信息 #a_Meldung_steht_an 是否显示。如果不相等则执行以下的信号检查
网络4
判断显示消息是否显示。
网络5
判断报警出口信号是否有,有则清零 #Wert_aktuell
所以,报警产生,是由于"HMI Hilfsagreggate".MinimalSchmierung_1.A_Stoerung
"HMI Hilfsagreggate".MinimalSchmierung_2.A_Stoerung
这两个信号产生的。
问题补充:程序中显示的是不带注释和符号的地址 要知道DB300.DBX126.2/DB300.DBX136.2的来源
可以运用''交叉参考‘ 找到其源头,间接寻址除外
FC263 产生对应702224的报警是由于 a_Meldung_steht_an:="ALMSG_DB".A7022xx[24]
这是决定显示702224号报警的,DB2 是PLC---》MMC 的通讯块 ,有详细的对应关系,可参考调试手册对应接口信号。
提问者对于答案的评价:
对 #tmp_intern[2] 没有理解
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc151889.html