-> Hier kostenlos registrieren
Ich möchte ein Schrittkette aufbauen in AWL, habe aber irgendwie einen Hänger folgender Aufbau.
Ich habe 6 Eingänge die mit einer positiven Flanke abgefragt werden und dann gespeichert werden und 3 Verknüpfungen dazu.
Es soll in einem FB nach einander die 1-6 Eingänge eingelesen werden und mit den 3 Verknüpfungen abgearbeitet werden.
Also wenn Eingang 1 ist gehe zur 1 Verknüpfung und arbeite die ab, ist die Verknüpfung vom logischen nicht 1 dann springe zur 2 Verknüpfung und arbeite die ab, ist die auch nicht 1 gehe zur
3. Verknüpfung und arbeite die ab, ist die auch nicht 1 Rücksetze den gespeicherten Eingang 1.
Zweiter Fall: Wenn Eingang 1 ist gehe zur 1 Verknüpfung und arbeite die ab, ist die Verknüpfung vom logischen nicht 1 dann springe zur 2 Verknüpfung und arbeite die ab, ist die auch nicht 1 gehe zur
3. Verknüpfung und arbeite die ab und Resette die Speicherung Eingang 1. Danach prüfe ob der der 2. Eingang (gespeichert ist) und gehe wieder die 3 Verknüpfungen durch, bis man bei Eingang 6 ist.
Dann beginnt alles wieder von vorne. Also wenn alle 3 Verknüpfungen logisch 0 sind kann der Zyklus beendet werden, sollte eins der Verknüpfung 1 sein muss er erst alle 6 Eingänge durchprobiern, erst dann ist ein Zyklus durch.
Hintergrund ist:
Die 6 Eingänge sind Alarmeingänge hinter jeder der 6 Eingänge verbirgt sich ein SMS-Text. Dieser Text soll an 1-3 Rufnummern (sind die Verknüpfungen) rausgeschickt werden (FB48).
Netzwerk 1
[/CODE]
Netzwerk 2
Netzwerk 3.....
......
Mit einer Rufnummer geht es.
mfg babylon05
Ich habe 6 Eingänge die mit einer positiven Flanke abgefragt werden und dann gespeichert werden und 3 Verknüpfungen dazu.
Es soll in einem FB nach einander die 1-6 Eingänge eingelesen werden und mit den 3 Verknüpfungen abgearbeitet werden.
Also wenn Eingang 1 ist gehe zur 1 Verknüpfung und arbeite die ab, ist die Verknüpfung vom logischen nicht 1 dann springe zur 2 Verknüpfung und arbeite die ab, ist die auch nicht 1 gehe zur
3. Verknüpfung und arbeite die ab, ist die auch nicht 1 Rücksetze den gespeicherten Eingang 1.
Zweiter Fall: Wenn Eingang 1 ist gehe zur 1 Verknüpfung und arbeite die ab, ist die Verknüpfung vom logischen nicht 1 dann springe zur 2 Verknüpfung und arbeite die ab, ist die auch nicht 1 gehe zur
3. Verknüpfung und arbeite die ab und Resette die Speicherung Eingang 1. Danach prüfe ob der der 2. Eingang (gespeichert ist) und gehe wieder die 3 Verknüpfungen durch, bis man bei Eingang 6 ist.
Dann beginnt alles wieder von vorne. Also wenn alle 3 Verknüpfungen logisch 0 sind kann der Zyklus beendet werden, sollte eins der Verknüpfung 1 sein muss er erst alle 6 Eingänge durchprobiern, erst dann ist ein Zyklus durch.
Hintergrund ist:
Die 6 Eingänge sind Alarmeingänge hinter jeder der 6 Eingänge verbirgt sich ein SMS-Text. Dieser Text soll an 1-3 Rufnummern (sind die Verknüpfungen) rausgeschickt werden (FB48).
Netzwerk 1
Code:
[CODE]// Störungen auswerten
U #EMA
FP #Flankenmerker_01
S #Aufrufbedingung_1
SPBN N1
N1: U #BMA
FP #Flankenmerker_02
S #Aufrufbedingung_2
SPB A2
SPBN N2
N2: U #Wasserschaden
FP #Flankenmerker_03
S #Aufrufbedingung_3
SPB A3
SPBN N3
N3: U #Heizungausfall
FP #Flankenmerker_04
S #Aufrufbedingung_4
SPB A4
SPBN N4
N4: U #Stromausfall
FP #Flankenmerker_05
S #Aufrufbedingung_5
SPB A5
SPBN N5
N5: U #allg_Stoerung
FP #Flankenmerker_06
S #Aufrufbedingung_6
SPB A6
SPBN E1
A1: U #Aufrufbedingung_1
CALL "BLKMOV"
SRCBLK :=#SMS_Text_1
RET_VAL:=#Wert
DSTBLK :=#SMS_Text_Move
SPB B1
A2: U #Aufrufbedingung_2
CALL "BLKMOV"
SRCBLK :=#SMS_Text_2
RET_VAL:=#Wert
DSTBLK :=#SMS_Text_Move
SPB B1
A3: U #Aufrufbedingung_3
CALL "BLKMOV"
SRCBLK :=#SMS_Text_3
RET_VAL:=#Wert
DSTBLK :=#SMS_Text_Move
SPB B1
A4: U #Aufrufbedingung_4
CALL "BLKMOV"
SRCBLK :=#SMS_Text_4
RET_VAL:=#Wert
DSTBLK :=#SMS_Text_Move
SPB B1
A5: U #Aufrufbedingung_5
CALL "BLKMOV"
SRCBLK :=#SMS_Text_5
RET_VAL:=#Wert
DSTBLK :=#SMS_Text_Move
SPB B1
A6: U #Aufrufbedingung_6
CALL "BLKMOV"
SRCBLK :=#SMS_Text_6
RET_VAL:=#Wert
DSTBLK :=#SMS_Text_Move
SPB B1
B1: U #Aufrufbedingung_1
O #Aufrufbedingung_2
O #Aufrufbedingung_3
O #Aufrufbedingung_4
O #Aufrufbedingung_5
O #Aufrufbedingung_6
L #Telefon_1
L 1
==I
CALL "BLKMOV"
SRCBLK :=#Telefon_Nr1
RET_VAL:=#Wert
DSTBLK :=#Telefon_Nr_Move
S #Speicher1
SPB C1
SPBN B2
B2: U #Aufrufbedingung_1
O #Aufrufbedingung_2
O #Aufrufbedingung_3
O #Aufrufbedingung_4
O #Aufrufbedingung_5
O #Aufrufbedingung_6
L #Telefon_2
L 1
==I
CALL "BLKMOV"
SRCBLK :=#Telefon_Nr2
RET_VAL:=#Wert
DSTBLK :=#Telefon_Nr_Move
S #Speicher2
R #Speicher1
SPB C1
SPBN B3
B3: U #Aufrufbedingung_1
O #Aufrufbedingung_2
O #Aufrufbedingung_3
O #Aufrufbedingung_4
O #Aufrufbedingung_5
O #Aufrufbedingung_6
L #Telefon_3
L 1
==I
CALL "BLKMOV"
SRCBLK :=#Telefon_Nr3
RET_VAL:=#Wert
DSTBLK :=#Telefon_Nr_Move
S #Speicher3
SPB C1
SPBN E1
Netzwerk 2
Code:
// Prüfen, ob Meldung 1 gesendet werden soll
C1: U #Aufrufbedingung_1
O #Aufrufbedingung_2
O #Aufrufbedingung_3
O #Aufrufbedingung_4
O #Aufrufbedingung_5
O #Aufrufbedingung_6
SPBN E1
// Aufruf des SMS_SEND
CALL "SMS_SEND" , "IDB_FB48"
MPI_TS_ADAPTER:=1
PHONE_NO :=#Telefon_Nr_Move
SCENTER_NO :=#Servicecenter_Nr
MESSAGE :=#SMS_Text_Move
BUSY :=#Send_1_Busy
STATUS :=#Send_1_Status
// Prüfung der Aufrufergebnisse auf das Ende der Bearbeitung
U #Send_1_Busy // ist BUSY == 0 ?
SPB Ende // nein, SMS_SEND bearbeitet den Auftrag noch
L 0 // ja, Bearbeitung ist abgeschlossen
L #Send_1_Status
==I // STATUS == 0 ?
SPB ok_1 // ja, es ist kein Fehler aufgetreten
L W#16#7000 // nein,
==I // hat sich SMS_SEND zurückgesetzt ?
SPB Ende // ja, SMS_SEND erneut aufrufen
Netzwerk 3.....
......
Mit einer Rufnummer geht es.
mfg babylon05