Files
HundM_awl/SCL-Export

SCL-Export — AWL→SCL-Pilotkonvertierung

Pilotbausteine der AWL→SCL-Konvertierung, bereit zum Test in TIA Portal V20. Je Station ein Ordner; die Dateien sind externe Quellen (Import über Externe Quellen → Quelle hinzufügen → Bausteine aus Quelle generieren).

Inhalt

Baustein Original Kategorie Datei
MZylinder FB 92, AWL, 11 Netzwerke A — Verknüpfungslogik MZylinder.scl
FifoIn FC 80, AWL, Pointer/BLKMOV C — Pointerzugriffe FifoIn.scl
DatenOut FC 86, AWL, Pointer/indirekte Aufrufe C — Pointerzugriffe DatenOut.scl
MHMOmniSchleuse FB 1274, AWL, Schrittkette 52 NW B — Ablaufsteuerung MHMOmniSchleuse.scl

Die Bausteine sind zwischen UH06 und UH07 identisch (FifoIn: nur Kommentare verschieden) — Ausnahme MHMOmniSchleuse: die CASE-Verteiler für die indirekten FC-Aufrufe (Leser-/Ziel-/Draussen-FC) enthalten die stationsspezifischen FC-Nummern:

  • UH06: 181/1181/2181 (Ziel), 1180 (Leser), 1182 (Draussen)
  • UH07: 181..6181 (Ziel), 180..6180 (Leser), 182..6182 (Draussen)

WICHTIG: Nicht direkt ins Produktivprojekt!

DatenOut und FifoIn haben geänderte Schnittstellen (POINTER/ANYVARIANT, S7-1500-konform). Die bestehenden AWL-Aufrufer übergeben P#M...-Pointer und kompilieren nach dem Ersetzen u.U. nicht mehr, bis sie angepasst sind. Daher:

  1. Projektkopie anlegen (oder eigenes Test-Projekt mit PLCSIM).
  2. Quellen importieren und einzeln generieren — Reihenfolge: DatenOutMHMOmniSchleuse (Aufrufer von DatenOut); MZylinder und FifoIn sind unabhängig.
  3. Kompilieren; Fehlerliste prüfen (erwartbar: Aufrufer von DatenOut/FifoIn, die noch AWL-Pointer übergeben).

MZylinder ist schnittstellengleich und kann den AWL-Baustein direkt ersetzen (Aufrufer und Instanz-DBs bleiben gültig, neu übersetzen genügt).

Voraussetzungen (im Projekt bereits vorhanden)

  • UDTs: UZylinder, UDLHMOmniSchleuse, USk_ILS, UErrHMOmniSchleuse, UTrolley
  • Bausteine: TEST_DB_TO_ATTR_DB (SCL), BCD (4stellig)_to_INT, Wandel_FC_für_DB1000, Trolley_DL_Neue_Pos, die Leser-/Ziel-/Draussen-FCs, DB TrolleyDL_OutDaten (DB1011)
  • PLC-Variablen: MW2, MW4, 100ms-Impuls, 1s-Impuls, MW200, M200.0..M201.7, MW190..MW198, MD182, MD192, M180.x, M199.0, MW248..MW254
  • Nicht-optimierte DBs (Standard-Zugriff) — die Bausteine arbeiten mit PEEK/POKE auf absolute Byte-Offsets, Layouts unverändert.

Umsetzungs-Konventionen (gelten auch für die Massenkonvertierung)

  • AWL-Netzwerke → REGION NW<x>: <Titel>; Sprünge → IF/CASE/GOTO (GOTO nur für die gemeinsamen Fehler-/Verwaltungs-Enden, wie im AWL).
  • OPN DB[n] + DBW[AR1,..]PEEK/POKE (area:=16#84, dbNumber:=…, byteOffset:=…).
  • BLKMOV über ANY-Pointer → Serialize/Deserialize mit VARIANT-Parametern.
  • BR-Bit (SAVE/JBI/BEC) → ENO := …; bzw. Auswertung von RE_VAL-Bit 7.
  • Indirekte Aufrufe UC FC[n]CASE n OF mit den projektierten FC-Nummern.
  • 16-Bit-Semantik (+I, *I) bleibt Int; keine stille Aufweitung auf DInt.

Bekannte, dokumentierte Abweichungen (Kopf der jeweiligen Datei!)

  • FifoIn: INDATEN jetzt Variant (statt POINTER); Kopier-Fehler des alten SFC20 werden über eigene Bereichsprüfungen nachgebildet.
  • DatenOut: SEARCHDATEN/OUTDATEN jetzt Variant; die DB-Prüfungen des Such-/Out-DB (AWL NW5/NW8) entfallen (Fehlerbit 5 wird nicht mehr erzeugt); OUTDATEN-Ziel sollte exakt Datensatzlänge×2 Bytes groß sein; Position wird mit 0 initialisiert (AWL: undefiniert).
  • MHMOmniSchleuse: Merker-Scratch (MW200-Suchdaten, M220-OutDaten, MB199) durch lokale Puffer ersetzt; Merker-Schnittstellen zu Fremd-FCs (MW190MW198, MD182/192, M180.x, Fehlerwort MW200/M200.x/M201.x) bleiben. NW21 war im Original tot (CLR+JU) und entfällt. In Schritt 10 („NoLesung") verglich das AWL gegen einen undefinierten Akku-Altwert — umgesetzt ist die beabsichtigte Prüfung TrolleyID_Input <> 0. Bei IBN prüfen!

Empfohlener Vergleichstest (PLCSIM)

  1. AWL-Original umbenennen (z.B. DatenOutDatenOut_AWL), SCL-Baustein generieren.
  2. Test-FC schreiben, der beide mit identischen Eingangsdaten aufruft (getrennte Kopien des Ziel-DB!) und RE_VAL/ENO/DB-Inhalte vergleicht.
  3. Für MHMOmniSchleuse: Instanz-DBs beider Varianten nach jedem Zyklus vergleichen (Watch-Tabelle bzw. Vergleichs-FC über die Static-Bereiche).

Werkzeug

tools/stlxml2awl.py wandelt die SimaticML-XML-Exporte (StatementList) in lesbaren AWL-Text um (python stlxml2awl.py <baustein.xml>), inkl. Interface, Netzwerktitel, Sprungmarken und Kommentaren — Grundlage für die Massenkonvertierung der restlichen ~230 Bausteine.