Files
HundM_awl/=A01+UH07-KF00/Programmbausteine/Module/MHMEntnahmepuffer.awl
T

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