Zum Inhalt

Schnittstelle: Bystronic BySoft


Allgemein

Die Schnittstelle zwischen Octoflex und BySoft 7 bildet folgende Funktionen ab
Lagerimport - Die Gesamtbestände vom Octoflex werden nach BySoft übertragen. Octoflex ist das bestandsführende System. Restbleche verbleiben im BySoft.
Einlasten / Auslasten eines Laserteils - Beim Einlasten eines Laserteils im Octoflex wird ein Job erzeugt. Beim Auslasten wird ein Storno erzeugt.
Jobrückmeldung - Der geschachtelte Job wird an das Octoflex übertragen und Bleche werden vom Lager abgebucht. Chargen werden z.Zt. nicht unterstützt.
Fertigmeldung - abgearbeitete Jobs werden an das Octoflex übertragen

Die Schnittstelle ist seitens Bystronic in folgenden Dokumenten beschrieben
PMC_InterfacesSpec_2.0.pdf (Jobimport/export)
05_05_PMC_storage_import_V01_de.pdf (Lagerimport)

Es gibt zwei Ausführungen der Schnittstelle:

Alt

Standard

  • Zu Beginn der Kommunikation zwischen Octoflex und BySoft gab es seitens BySoft lediglich eine JobExport Rückmeldung nach dem Schneiden (ohne Status und CutPlansCount > 0) der den Verbrauch, die Menge, die Laserzeit in Octoflex setzt und eine (manuell ausgelößte) Rückmeldung vor dem Schneiden (CutPlansCount = 0) die für die Reservierung der Tafel verwendet wurde.

Kann das BySoft in diesem Modus bereits Rückmeldungen pro Status erzeugen, sollte in diesem Modus nur die Rückmeldung für Cut aktiviert werden.

  • Der Status In Arbeit in Octoflex wurde aus der ErpExport Datei ausgelesen.

Neu

Hinweis

Muss in Octoflex seperat aktiviert werden

Mittlerweile werden die Status Prepared, Released, SendToMachine, Cut, Cleared, Finished von BySoft übermittelt und von Octoflex ausgwertet.

Hierbei ist zu berücksichtigen, dass in diesem Modus auf jeden Fall die Abräumen-Funktion in BySoft genutzt werden muss, da hierdurch u.U. Ausschuss bemerkt wird und erst dann die Menge der Gut-Teile an BySoft und somit an Octoflex zurückgemeldet wird.

Die Status werden von Octoflex wie folgt verarbeitet.

Prepared

  • Reservierung für Tafel wird gelöscht (Falls ein Job aus einem höheren Status zurückgesetzt wurde)

Released

  • Octoflex setzt Status In Arbeit
  • Tafel wird reserviert

SentToMachine

  • Name des Lasers wird in den Status der einzelnen Laserteile in übernommen
  • Optional: Arbeitskarte wird automatisch auf Drucker ausgegeben

Cut

  • Start und Endzeit der Tafel wird in Octoflex übernommen

Cleared

  • Menge der Gut-Teile wird in Octflex übernommen
  • Materialverbrauch und Laserzeit wird in Octoflex übernommen
  • Reservierung für Tafel wird gelöscht
  • Tafel wird vom Lagerabgebucht
  • Optional: Arbeitskarte wird automatisch auf Drucker ausgegeben

Finished

  • Keine Aktion notwendig

Deleted

  • Status ist erst kürzlich in BySoft hinzugekommen und in der aktuellen Schnittstelle noch nicht berücksichtigt.

Voraussetzungen

Benötigte Module: Produktion, Laser, Laserschnittstelle
Benötigte Lizenzen: Laser, Laserschnittstelle
Benötigte Berechtigung: -
Benötigte Konfigurationswerte:

BYSOFT_PMC_JOBEXPORT_LEGACYMODE
Siehe oben (Ausführungen der Schnittstelle)
Wenn True (default) werden die JobExportData Files verarbeitet, ohne den JobState zu berücksichtigen. Entspricht alter Schnittstelle, es darf max eine Datei pro Job zurückgemeldet werden (mit Status Cut) da sonst die Rückmeldungen mehrfach verarbeitet würden. Wenn False werden Dateien gemäßt dem JobState (Prepared, Released, SentToMachine, Cut, Cleared, Finished) verarbeitet.

COMBILIST_LASERTEIL_CLEAR_PARTNO
Optionaler Parameter, abhängig von gewünschten Verhalten seitens des Kunden. Wenn 1, dann wird jedesmal, wenn Datei mit einlesen aktiviert ist, beim Speichern einer CombiList die Teilenummer gelert.
Hinweis: Wenn nicht gesetzt ist, dann sollte über FAB_WORKPLANNAME ein anderer Dateiname für Einlesen / Nicht einlesen gewählt werden, (Parameter 6)

BYSOFT_PMC_LAGERIMPORT_WG
Die Warengruppe für den Abgleich der Gesamtbestände mit BySoft, siehe StorageImport. Der Standard, wenn nicht angegeben ist**Bleche**

BYSOFT_PMC_LAGERIMPORT_WG_IDS
Sind die Bleche in mehreren Warengruppen kann alternativ eine Komma-getrennte Liste der Ids der Warengruppen für den Abgleich angegeben werden. Z.B. 1,2,3

BYSOFT_PMC_STORAGEIMPORT_FILE
Relative Pfad zur Ausgabedatei für den Lagerimport, z.B. Import\Lager.invent, Standard ist Bestand.invent

BYSOFT_PMC_STORAGEIMPORT_NULLWERT
Integer-Wert der für Artikel mit Bestand = 0 in die Invent-Datei geschrieben wird (z.B. 9999). Hintergrund ist, dass in BySoft Bleche mit Bestand = 0 nicht verschachtelt werden können

BYSOFT_PMC_STORAGEIMPORT_INVERT_ABMESSUNG
Boolean Wert (0 oder 1), Wenn 1, wird die Abmessung vertauscht übergeben. Octoflex Abmessung 2000x3000 entspricht in BySoft MatWidth=2000 und MatLength=3000, durch Setzen des Wertes wird MatWidth=3000 und MatLength=2000

BYSOFT_PMC_DEFAULT_ROTATIONALLOWANCE
Wert der bei der Übergabe von Laseraufträgen an BySoft PMC übergeben wird, wenn in der CombiList "Teil drehbar" nicht angehakt wurde, Standard: Angle0, mögliche Werte: Angle0, Angle90, Angle180, AnyAngle, null oder leer (Bei null der leer wird der Wert nicht übergeben und kann somit per PIS-Datei gesteuert werden).

BYSOFT_PMC_BESTAND_BUCHEN
Boolean Wert (0 oder 1), Wenn 1 (Default), werden Bleche vom Lager abgebucht.

BYSOFT_PMC_BESTAND_RESERVIEREN
Boolean Wert (0 oder 1), Wenn 1 (Default = Wert von BYSOFT_PMC_BESTAND_BUCHEN), werden Bleche reserviert (ab 3.24).

FAB_WORKPLANNAME
Beim Einlasten von Laserteilen wird der Arbeitsplanname festgelegt. Per Definititon wird hier der Name einer PIS-Datei angegeben, in der Rohmaterial, Blechstärke, Maschinenzusatz (z.B. HighSpeed), AD wenn Abdampfen verschlüsselt sind.
Der Wert sollte nach Absprache mit der Technik z.B. gesetzt werden auf:{4}{3}{1}{5}{6:NEU;''}.pis
Bei der Übergabe von Jobs an BySoft wird der Inhalt in das Feld Importfilter geschrieben.

Beim Einlasten wird der Wert in die tops1000-Tabelle geschrieben und je nach Konfiguration von der Laser-Schnittstelle verarbeitet.
Wenn der Wert = "<NAME_DER_MASCHINE>", dann wird aus dem QuickKalk der Maschinenname verwendet mit dem Fallback auf den angegebenen Wert.
Wenn der Wert Formatierungsplatzhalter enthält werden diese entsprechend ausgewertet.

  • {0} = Bezeichnung der Maschine
  • {1} = Maschinenzusatz (wenn Maschine als MASCHINE_ZUSATZ angelegt)
  • {2} = Bezeichnung des Rohmaterials
  • {3} = Dicke des Rohmaterial
  • {4} = Bezeichnung der Maschinendaten
  • {5} = AD für Abdampfen aus QuickKalk mit Fallback auf Abdampfen aus Rohmaterial, andernfalls leer
  • {6} = -1 wenn nicht Datei mit Einlesen, 0 wenn Datei mit Einlesen und Teilenummer leer, 1 wenn Datei mit einlesen und Teilenummer vorhanden. Durch bedingte Formatierung lässt sich auch ein Text ausgeben.
  • Beispiel 1: {6:NEU;ALT} entspricht NEU für 0 und 1, ALT für -1.
  • Beispiel 2: {6:UPDATE;ALT;NEU) entspricht UPDATE für 1, ALT für -1 und NEU für 0
    Wird die ByOrder-Schnittstelle genutzt, kann der Maschinencode über diesen ConfigValue geändert werden

BYSOFT_PMC_ORDEREXPORT_ERPINFO1_FORMAT
BYSOFT_PMC_ORDEREXPORT_ERPINFO2_FORMAT
BYSOFT_PMC_ORDEREXPORT_ERPINFO3_FORMAT
BYSOFT_PMC_ORDEREXPORT_ERPLABEL_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTINFO1_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTINFO2_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTINFO3_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTINFO4_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTINFO5_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTINFO6_FORMAT
BYSOFT_PMC_ORDEREXPORT_PARTLABEL_FORMAT

Konfiguriert den Inhalt der Felder Info1 bis Info3 beim Part. Mögliche Werte sind
{0} = Zeichnungsnummer
{1} = Importfilter
{2} = Infotext (Laserteil)
{3} = Auftragsnummer
{4} = Kommission
{5} = Kunde (Name)
{6} = Kundennr
{7} = Bezeichnung (Laserteil)
{8} = Kommission (aus Auftrag)
{9} = Position (im Auftrag) oder Produktionsauftrag
{10} = Artikelnummer
{11} = Artikelbezeichnung
{12} = MATERIALBEISTELLUNG (falls gesetzt, ansonsten leer)
{13} = Warengruppe (Artikel)
{14} = Liefertermin (des Laserteils)
{15} = Liefertermin (der Position)

Standardwerte:
ErpInfo1 = Kommission
ErpInfo2 = Position
ErpInfo3 = Materialbeistellung
ErpLabel = Bezeichnung (Laserteil)
Info1 = Teilenummer
Info2 = Importfilter
Info3 = Infotext (des Laserteils)
Info4 = -leer- (ab 4.20.23)
Info5 = -leer- (ab 4.20.23)
Info6 = -leer- (ab 4.20.23)
PartLabel = Bezeichnung (Laserteil)

Der Wert ist jeweils auf 100 Zeichen (ErpInfo) bzw. 50 Zeichen (Info, Label) begrenzt.
Info4-6 werden nur von neueren BySoft-Versionen unterstützt.

BYSOFT_PMC_ORDEREXPORT_CADFILE_FORMAT (ab 3.17.11)
Konfiguriert die Übergabe des Pfades der CAD-Datei (sofern eine Datei mit übergeben wurde)
{0} = Der vollständige Pfad, z.B: C:\BystronicData\BySoft7\Pmc\ErpImport\Cad\123.dxf (Standard)
{1} = Der Ordnername, z.B. C:\BystronicData\BySoft7\Pmc\ErpImport\Cad (Relative Pfade werden in Absolute Pfade umgewandelt)
{2} = Der Dateiname exkl. Dateiendung, z.B. 123
{3} = Die Dateiendung, z.B. .dxf
{4} = Der Dateiname inkl. Dateiendung, z.B. 123.dxf

BYSOFT_PMC_NO_NEGATIVE_DUEDATE (ab 3.25.15) Wenn true (Standard), wird statt eines negativen Datums der aktuelle Tag als Zieldatum verwendet, da BySoft Aufträge mit Datumswerten in der Vergangenheit abgelehnt hat.
In aktuellen Versionen besteht das Problem nicht mehr, daher ist dies konfigurierbar.

Schnittstellenbeschreibung

Der Datenaustausch erfolgt dateibasiert über XML-Dateien, z.B. über das Verzeichnis C:\BystronicData\BySoft7\Pmc
Unterhalb von dem Verzeichnis PMC werden folgende Unterverzeichnisse erwartet: StorageImport, ErpImport, ErpImport\Cad, ErpImport\Config, JobExport, ErpExport

StorageImport

Octoflex schreibt die Datei Bestand.invent in der die Bestände übermittelt werden.
Artikel werden nach folgenden Kriterien gefiltert:
Artikel ist Lagerartikel
Artikel ist nicht Bestandsverwaltung in Fremdsystem
Artikel hat ein Rohmaterial hinterlegt
Artikel ist in der Warengruppe, die durch den Configuration-Value BYSOFT_PMC_LAGERIMPORT_WG oder BYSOFT_PMC_LAGERIMPORT_WG_IDS (s.o.) festgelegt wurde
Artikel hat als Lagereinheit Tafel (Abbuchung durch Schnittstelle erfolgt immer über die Lagereinheit in Menge 1 pro Sheet)

ErpImport

Octoflex schreibt Laseraufträge (Auftrag mit Laserteil wurde eingelastet) in die Datei .erp - Die beim Laserteil hinterlegte CAD-Datei wird in das Verzeichnis ErpImport\Cad kopiert falls **Datei mit einlesen* gesetzt ist.
Octoflex schreibt Stornierungen (Auftrag mit Laserteil wurde ausgelastet) in die Datei*.erpmod

JobExport

BySoft schreibt Jobrückmeldungen in die Datei JobExportData*.xml
Octoflex verwendet diese Datei um
a) Die verbrauchten Tafeln vom Lager abzubuchen
Für jeden Sheet Eintrag in der xml-Datein wird eine Lagerabbuchung für den Artikel durchgeführt mit dem Vermerk: Abbuchung durch BySoft PMC Job ...
b) Die Ist-Zeit / den Ist-Verbrauch / Ist-Menge in die CombiList zu übernehmen
Dabei wird für jeden Order-Eintrag des Sheet für jeden Part-Knoten
- die Ist-Menge um Part.Count erhöht
- die Ist-Zeit um part.Count* part.ProductionTimeEffective erhöht
- der Verbrauch um part.Count part.AreaWithEffectiveWaste sheet.Thichness * Dichte (des Rohmaterials bzw. des Werkstoffs) erhöht
c) Den Status des Laserteils auf Rot/Grün bzw. Grün zu setzen

ErpExport

BySoft schreibt alle Statusmeldung für Jobs in die Datei ErpExport.erp.
Octoflex benennt diese Datei um (ErpExport+Zeitstempel+erp) und verarbeitet diese.
Octoflex verwendet diese Dateien lediglich um den Begin / Farbstatus des Laserteils zu aktualisieren.
Anschließend wird die Datei ins Log-Verzeichnis verschoben.

Inventur der Reservierungen

U.U. laufen die Reservierungen zwischen BySoft und Octoflex auseinander, denn bei einigen Aktionen wird z.B. ein neuer Job erzeugt, es gibt aber keine weitere Rückmeldung mehr über den alten Job an das Octoflex. Dadurch bleiben die Reservierungen immer enthalten. Abhilfe schafft folgende Lösung.

Aus dem BySoft PMC wird in der Übersicht der aktiven Jobs eine Liste exportiert. Diese wird als CSV-Datei in das JobExport-Verzeichnis kopiert. Diese Liste wird mit den vorhandenen Reservierungen im Octoflex abgeglichen. Reservierungen zu Jobs, die nicht in der Liste sind, werden gelöscht. Es wird eine CSV-Datei mit einem Feld JobName erwartet, die weiteren Felder sind egal und werden ignoriert. Beispiel-Datei

JobName
123_123456
123_123457

Einzelne Reservierung löschen
Ist der JobName bekannt und man möchte eine einzelne Reservierung löschen, so geht dies über die Maske http://server:10080/mandant/api/laser/reservation/ (Octoflex 3.x) oder http://server:10080/mandant/laser/reservation/ (Octoflex 4.x)

Log

Dateien, die Octoflex schreibt, werden als Kopie in diesem Verzeichnis abgelegt.
Dateien die Octoflex verarbeitet, werden in dieses Verzeichnis verschoben.

Installation

Die Schnittstelle ist realisiert über den Dienst oTopsTalk. Da das Verzeichnis für die Übergabe Octoflex -> BySoft und BySoft -> Octoflex i.d.R. identisch ist, muss das Verzeichnis auch zwei mal angegeben werden. Das Programm kann als Konsolenanwendung gestartet oder als Windows-Dienst installiert werden (Siehe otopstalk.exe --help für die Installation als Dienst). Beispielaufruf:

otopstalk.exe
    -host:mandant@server
    -config:BySoftPMC
    -inputpath:C:\BystronicData\BySoft7\Pmc
    -outputpath:C:\BystronicData\BySoft7\Pmc

Hinweis

Bei der Installation des Dienstes ist darauf zu achten, falls das Octoflex Datenverzeichnis oder das BySoft PMC Verzeichnis nicht auf lokalen Laufwerken liegen, einen Dienstkonto zu verwenden, das Schreib-Zugriff auf die jeweiligen Verzeichnisse besitzt.
Sollen die Parameter für den Dienst nachträglich geändert werden, so kann der Dienst deinstalliert / installiert werden oder alternativ manuell über die Registry HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Octoflex.OTopsTalk$instancename(optional)\Parameters angepasst werden.


Letztes Update: 31. Juli 2023