209 lines
9.9 KiB
Plaintext
209 lines
9.9 KiB
Plaintext
=== FB 1278: MHMEntnahmepuffer [STL] ===
|
|
INTERFACE:
|
|
Input:
|
|
EntnahmePuffer_Nr : Int // Aufruf für Leer-Puffer
|
|
B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Leerpuffer
|
|
Output:
|
|
Error : Word // Störungen übergeben
|
|
InOut:
|
|
hStOk : Bool // Anzeige Start n. Störung aktivieren
|
|
Static:
|
|
Res16 : Array[1..4] of Int // Reserve
|
|
SAVE : Struct
|
|
Weichen_DB : Int // Weichen-FIFO-DB
|
|
Weichen_DW : Int // Weichen-FIFO-DW
|
|
Para : Struct // Parameter
|
|
Entnahmepuffer_DL_DB : Int // Einsprung Leerpuffer-Datenliste-DB
|
|
Entnahmepuffer_DL_DW : Int // Einsprung Leerpuffer-Datenliste-DW
|
|
Res1 : Array[1..2] of Int // Reserve
|
|
Status2 : Struct
|
|
Abruf_ist_möglich : Bool // Abruf ist möglich
|
|
Kein_Stop_mehr : Bool
|
|
Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_leer (DB500) erfolgt
|
|
Eintrag_DL_Reinliste_erfolgt : Bool // Eintrag in DLLPPuffer_Einfahren (DB501) erfolgt
|
|
Eintrag_Abrufliste_erfolgt : Bool // Eintrag in DLLPPuffer_Ausfahren (DB502) erfolgt
|
|
Puffer : "UDLHMEntnahmePuffer" // Statische Leerpufferdaten (aus DL)
|
|
Dyn : Struct // Dynamische Daten
|
|
Status : Struct
|
|
Puffer_OUT_leer : Bool // Puffer ist leer
|
|
Puffer_OUT_hat Platz : Bool // Puffer hat noch Kapazität
|
|
Undef.Trolley_in_Schleuse_OUT : Bool // Undefinierter Trolley in Schleuse unten erkannt
|
|
Trolley_fährt_in_Schleuse_OUT : Bool // Trolley fährt in Schleuse (unten)
|
|
Trolley_wartet_Auftrag : Bool // Trolley wartet auf Auftrag (unten)
|
|
Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 (unten)
|
|
Trolley_fährt_aus_OUT : Bool // Trolley fährt aus (unten)
|
|
MindestZeit_ok_OUT : Bool // Schleuse ist MindestZeit geöffnet
|
|
Trolley_draussen_Out : Bool // Trolley ist ausgefahren
|
|
Trolley_OUT_nicht_in_Schleuse : Bool // Trolley fährt nicht in Schleuse
|
|
Leer_Check_OUT : Bool // Leerpuffer wird auf leer gecheckt
|
|
Alles_ausfahren : Bool // Alle Trolleys ausfahren
|
|
Leerpuffer_initialisieren : Bool // Leerpuffer initialisieren
|
|
Error_aktiv : Bool // Störung vorhanden
|
|
Reset_aktiv_OUT : Bool // Reset aktiv
|
|
TrolleyID_Einfahrt : DInt // Trolley-Nr ist eingefahren
|
|
Rueckmld : Struct
|
|
RET_VAL_BLKMOV_EntnahmePuffer : Int // Rückmeldung nach BLKMOV-Aufruf
|
|
RET_VAL_DL_EntnahmePuffer : Byte // Rückmeldung nach DatenOut-Aufruf
|
|
RET_VAL_DL_Res_OUT : Byte // Rückmeldung nach DatenOut-Aufruf
|
|
RET_VAL_DL_EntnahmePufferTrolley_IN : Byte // Rückmeldung nach DatenIN-Aufruf
|
|
RET_VAL_DL_EntnahmePufferTrolley_OUT : Byte // Rückmeldung nach DatenOut-Aufruf
|
|
Error : "UErrHMEntnahmePuffer"
|
|
Stau_Zeit : Int // Sensor B_Einfahrt ist belegt [1s]
|
|
Stop_Ursache : Word // Stop-Stelle: Nw + Position
|
|
Res500 : Array[1..206] of Int
|
|
Temp:
|
|
Quelle : Any // Zeiger, wo Rein-Daten sind
|
|
Ziel : Any // Zeiger, FIFO-Stelle
|
|
Ueb_akt : Bool // Überwachungszeit aktivieren
|
|
Weiter : Bool // Weiterschaltbedingung ist erfüllt
|
|
Warte_neu : Bool // Wartezeit neu triggern
|
|
Warte_stop : Bool // Wartezeit stoppen
|
|
Inks_Ok : Bool // Starten aufgrund der Inks erlaubt
|
|
Puffer_ist_leer : Bool // Leerpuffer zeitlang ohne Sensor
|
|
Abruf_Trolley_vorne : Bool // Abruf-Trolley ist in Schleuse
|
|
Oberen_Puffer_Freigeben : Bool
|
|
GesamtAnzahl : Int
|
|
SSDW : Int
|
|
Schleife : Word // Loopzähler
|
|
Trolley : Int
|
|
Position : Int
|
|
Constant:
|
|
|
|
--- NW 1: Parameter-Übergabe ---
|
|
L EntnahmePuffer_Nr
|
|
|
|
L 275 // Einsprung Puffer-DL
|
|
T Para.Entnahmepuffer_DL_DB // vor Aufruf übergeben!
|
|
L 0
|
|
T Para.Entnahmepuffer_DL_DW
|
|
|
|
|
|
--- NW 2: Statische Entnahmepuffer-Parameter holen ---
|
|
L Puffer.EntnahmePuffer_Nr // Nummer des EntnahmePuffers
|
|
L EntnahmePuffer_Nr // Aufruf-Parameter
|
|
==I // Identisch ?
|
|
R Dyn.Error.Entnahmepuffer_DL // EntnahmePufferdatenbank fehlerhaft
|
|
R Dyn.Error.Undef_Entnahmepuffer // undefiniertes EntnahmePuffer
|
|
JC en06 // Ja !
|
|
|
|
T "MW200" // Search-Daten
|
|
|
|
CALL FC "DatenOut" (SSDB:=Para.Entnahmepuffer_DL_DB, SSDW:=Para.Entnahmepuffer_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_EntnahmePuffer, OUTDATEN:=P#M220.0, Position:="MW196")
|
|
|
|
JBI G_Ok
|
|
|
|
A "M199.0"
|
|
JCN w060
|
|
|
|
SET
|
|
= Dyn.Error.Entnahmepuffer_DL // EntnahmePufferdatenbank fehlerhaft
|
|
|
|
L 16#A061
|
|
T Dyn.Stop_Ursache
|
|
|
|
BEU
|
|
|
|
w060: SET
|
|
S Dyn.Error.Undef_Entnahmepuffer // undefinierter EntnahmePuffer
|
|
|
|
L 16#0062
|
|
T Dyn.Stop_Ursache
|
|
|
|
BEU
|
|
|
|
// Kennung + Datenbytes
|
|
G_Ok: SET
|
|
R Dyn.Error.Entnahmepuffer_DL // Gefälledatenbank fehlerhaft
|
|
R Dyn.Error.Undef_Entnahmepuffer // undefinierte Gefällestrecke
|
|
|
|
L 16#1004 // Kennung 10 + Word=04
|
|
T LW0 // Any-Kennung, Datentyp
|
|
L 20 // Datenwords speichern
|
|
T LW2 // Wiederholungen
|
|
|
|
// Quelle-Pointer erzeugen:
|
|
L 0 // Bei Merker = 0 !
|
|
T LW4 // DB_Nummer
|
|
L 220 // Adresse
|
|
SLD 3
|
|
L 16#8300_0000 // Kennung: Merker
|
|
OD
|
|
T LD6 // Kennung, Adresse
|
|
|
|
CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer, DSTBLK:=Puffer) // Datenliste-Daten speichern | #Ziel
|
|
|
|
L 16#0063
|
|
T Dyn.Stop_Ursache
|
|
|
|
L Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer // Rückmeldung
|
|
L 0 // Fehler vorhanden ?
|
|
<>I // Ja !
|
|
= Dyn.Error.Err_BLKMov // Error bei Block kopieren
|
|
BEC
|
|
|
|
L Puffer.Puffer_Typ // Puffertyp = 1278 (EntnahmePuffer)
|
|
L 1278 // Dieser Aufruf-FB ?
|
|
==I // Ja !
|
|
JC w061
|
|
|
|
SET
|
|
S Dyn.Error.Undef_Entnahmepuffer // undefinierter EntnahmePuffer
|
|
|
|
L 0 // EntnahmePuffer ungültig !
|
|
T Puffer.EntnahmePuffer_Nr // Nummer des EntnahmePuffers
|
|
|
|
L 16#0064
|
|
T Dyn.Stop_Ursache
|
|
|
|
BEU
|
|
|
|
// Defaultwerte übergeben:
|
|
w061: NOP 0
|
|
|
|
BEU
|
|
|
|
en06: NOP 0
|
|
|
|
|
|
--- NW 3: Einfahrenden Trolley verarbeiten ---
|
|
L Dyn.TrolleyID_Einfahrt
|
|
T "MD220"
|
|
L DINT#0
|
|
==I
|
|
JC NoNewT
|
|
|
|
// Neue Position an Gesamt-Trolley-DL übergeben:
|
|
CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Position:=Puffer.Puffer_Position, ShopGroup:=Dint#0, Err:="M199.0")
|
|
|
|
NoNewT: NOP 0
|
|
|
|
|
|
--- NW 4: Error: Stau Bereich-Eingang ---
|
|
// Sensor bei Bereichs-Einfahrt bleibt belegt?:
|
|
AN B_LeerpufferEinfahrt // Sensor Trolley fährt in Bereich (kein Stau !)
|
|
R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt
|
|
JC X090 // StauZeit neu aufziehen
|
|
|
|
AN "1s-Impuls"
|
|
O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen
|
|
JC Xn09
|
|
|
|
L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s]
|
|
+ +1
|
|
T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s]
|
|
|
|
L 25 // Stau-Zeit erreicht ?
|
|
>=I // Ja !
|
|
S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb
|
|
JCN Xn09
|
|
|
|
X090: L 0 // Zeiten löschen
|
|
T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s]
|
|
|
|
Xn09: NOP 0
|
|
|
|
|
|
--- NW 5: Ende ---
|
|
BE
|
|
|