Batchbetrieb
Mögliche Anwendungsszenarios für den Batchbetrieb sind:
- Variationsrechnungen
- Massenrechnungen
- Optimierungen
Im Weiteren wird die Berechnung eines Workbench Modells im Batchbetrieb anhand eines Beispiels erläutert:
| Die Beispieldateien sind in folgendem Verzeichnis abgelegt: FVA-Workbench Installationsverzeichnis\plugins\de.fva.workbench.ui.intro_5.6.0\doc\batch_example Die Datei Start-Befehl.cmd startet die Batch-Ausführung. |
Für die Ausführung des Batchbetriebs werden mehrere Eingabedateien benötigt und Ausgabedateien erstellt. Um den Überblick zu behalten, wird für das Beispiel folgende Ordnerstruktur erstellt.
| Der Speicherort von Ein- und Ausgabedateien kann in der Jobdefinition frei vom Benutzer vorgegeben werden. Die Angabe kann auch Relativ zum Speicherort erfolgen. |
WB-Job-Demo.wbj
In dieser Datei werden die Pfade für die Ein- und Ausgabedateien definiert. Zudem können eigene Variablen definiert werden. Diese können später im Skript angesprochen werden. Hierdurch können Variablen zentral geändert werden, ohne das Skript verändern zu müssen.
InputDirectory="input\"
InputModel=transmission.wbpz
InputScript1=CalculationScript.wbjs
ErrorReport="output\ScriptDemoLog.txt"
[VariablesToInject]
TempDirectory="temp\"
OutputDirectory="output\"
ResultFilePath="output\result.txt"
HTML_TemplatePath="input\report_template.xml"
HTML_ResultFilePath="output\result.html"
InputTorque_to_inject="500"
| Control | Es müssen alle Control Variablen angegeben werden |
| InputDirectory="\input" | Speicherort der Eingabedateien |
| InputModel=transmission.wbpz | Name des Workbench-Modells |
| InputScript1=CalculationScript.wbjs | Name des ersten Scripts das ausgeführt wird |
| ErrorReport="\output\ScriptDemoLog.txt" | Speicherort der Protokoll Datei |
| [VariablesToInject] | |
| OutputDirectory="\output" | Speicherort der Ausgabedateien |
| ResultFile="\output\result.txt" | Name der Ergebnisdatei |
| HTML_TemplatePath="input\report_template.xml" | Reportvorlage, die bei der Reporterstellung verwendet werden soll |
| HTML_ResultFilePath="output\result.html" | Name des Ausgabereports |
| InputTorque="500" | Selbstgewählte Variable zur Übergabe an das Skript |
.wbjlist (Optional)
In einer .wbjlist-Datei (Job-Liste) können mehrere .wbj-Dateien referenziert werden. Diese werden beim Ausführen der .wbjlist automatisch hintereinander ausgeführt. Die FVA-Workbench wird dabei nur einmal gestartet. Auch hier können optional Variablen "injiziert" werden, die dann von jedem Script verwendet werden können.
job1=pathTo/jobFile.wbj
job2=pathToAnother/jobFile.wbj
[VariablesToInject]
InputTorque="500"
.wbjlist
In einer .wbjlist-Datei (Job-Liste) können mehrere .wbj-Dateien referenziert werden. Diese werden beim Ausführen der .wbjlist automatisch hintereinander ausgeführt. Die FVA-Workbench wird dabei nur einmal gestartet. Auch hier können optional Variablen "injiziert" werden, die dann von jedem Script verwendet werden können.
job1=pathTo/jobFile.wbj
job2=pathToAnother/jobFile.wbj
[VariablesToInject]
InputTorque="500"
Der Aufruf einer .wbjlist in der .cmd Datei sieht dann folgendermaßen aus: \FVA-Workbench.exe -WBJobList="WB-Job.wbjlist"
transmission.wbpz
|
Die Grundlage für den Batchbetrieb bildet ein Workbench Modell (.wbpz / .wbpx / .wbps Datei). Es muss ausreichend bedatet sein, um die gewünschten Berechnungen ausführen zu können. Nur wenn eine manuell gestartete Berechnung innerhalb der Workbench korrekte Ergebnisse erzeugt, wird auch die Berechnung mittels Batchbetrieb erfolgreich sein. |
Das folgende Beispielscript führt folgende Aktionen aus:
- Berechnungsschalter für die Gesamtsystemberechnung werden gesetzt
- Drehmoment der ersten Belastung wird per (injizierter Variable "InputTorque_to_inject") auf 500 Nm gesetzt
- Gesamtsystemberechnung wird ausgeführt
- Ergebnisattribute auf der Komponente "cylindrical_mesh" (für alle Stufen im Getriebe) lesen
- Ergebnisattribute werden in die ASCII-Datei geschrieben
- Ergebnisattribute auf der Komponente "notch" (für alle Kerbstellen im Getriebe) lesen
- Ergebnisattribute werden in die ASCII-Datei geschrieben
- HTML Report wird generiert
CalculationScript.wbjs
///////////////////////////////////////////////////////////////////////////////////////
// Script to present the Job/Scripting capability
// Version 1.0
// Date 26.06.2018
/////////////////////////////////////////////////////////////////////////////////////////
// Pfade für ASCII Ausgabedatei / Reportvorlage / Reportausgabedatei
// ASCII output file / report template / report output file
ASCII_ResultFile = ResultFilePath;
HTML_Template = HTML_TemplatePath;
HTML_ResultFile = HTML_ResultFilePath;
Torque = InputTorque_to_inject;
// ASCII Datei leeren
// Empty ASCII file
clearOutput();
// Variable für die Komponenten-ID der Getriebeeinheit
// Variable for the component ID of the gear unit
var gearUnit = getCompByType('gear_unit')[0];
// Berechnungsschalter für die Gesamtsystemberechnung setzten
// Set calculation switches for the system calculation
setAttr( 'gta_switch_geometry_output' , gearUnit, 'true', EDAT); // Schalter Geometrieberechnung | Switch geometry calculation
setAttr( 'gta_switch_3d_load_distribution_analytical', gearUnit, 'true', EDAT); // Schalter 3D-Lastverteilung | Switch 3D Load distribution
setAttr( 'gta_switch_bearing_lifetime' , gearUnit, 'true', EDAT); // Schalter Lagerlebensdauer | Switch Bearing lifetime
setAttr( 'gta_switch_din_743' , gearUnit, 'true', EDAT); // Schalter Wellensicherheit | Switch Shaft safety
// Variable mit der Komponenten-ID der ersten Belastung im Getriebe
// Variable with the component ID of the first force in the gearbox
var input_force = getCompByType('force')[0];
// Setzt das Drehmoment der ersten Belastung
// Sets the torque of the first force
setAttr('scaled torque', input_force, Torque, EDAT);
writeOutput(Torque+' Nm input torque used for calculation');
// Überschrift in ASCII Datei schreiben
// Write heading to ASCII file
writeOutput('------ Output System Calculation ---------------');
// Gesamtsystemberechnung starten
// Start system calculation
runCalcMethod('031_GTA_LOAD_DISTRIBUTION', '1');
writeOutput('------ Cylindrical Stages ----------------------');
// Array mit den Komponenten ID's aller Stirnradstufen
// Array with the component ID's of all Cylindrical meshes
var stageIds = getCompByType('cylindrical_mesh');
// for-Schleife die Attribute für jede Stufe liest und in die ASCII Datei schreibt
// for loop reads the attributes for each mesh and writes them to the ASCII file
for (var i=0; i < stageIds.length; i++)
{
var total_contact_ratio = getAttr("total contact ratio" , stageIds[i] ,0);
var transverse_contact_ratio = getAttr("transverse contact ratio", stageIds[i] ,0);
var overlap_contact_ratio = getAttr("overlap contact ratio" , stageIds[i] ,0);
writeOutput(getCompProperty(stageIds[i],'NAME'));
writeOutput("\t total contact ratio = " + total_contact_ratio);
writeOutput("\t transverse contact ratio = " + transverse_contact_ratio);
writeOutput("\t overlap contact ratio = " + overlap_contact_ratio + "\n");
}
writeOutput('------------- Notches --------------------------');
var notchIds = getCompByType('notch');
// for-Schleife die Attribute für jede Kerbstelleliest und in die ASCII Datei schreibt
// for loop reads the attributes for each notch and writes them to the ASCII file
for (var i=0; i < notchIds.length; i++)
{
var S_F = getAttr("safety_factor_S_F", notchIds[i] ,0);
var S_D = getAttr("safety_factor_S_D", notchIds[i] ,0);
writeOutput(getCompProperty(notchIds[i],'NAME'));
writeOutput("\t S_F = " + S_F + " | S_D = " + S_D);
}
// HTML Report generieren
// Generate HTML report
generateReport(HTML_Template, HTML_ResultFile);
// Hilfsfunktionen
// Support functions
function writeOutput(text) {
writeToFile( ASCII_ResultFile, text + '\n', 'a' );
println( text );
}
function clearOutput() {
writeToFile( ASCII_ResultFile, "", 'c' );
}
| Für ausführliche Informationen zum Thema Scripting in der FVA-Workbench siehe Dokumentation Scripting. |
Start-Befehl.cmd
| Die Verwendung einer Batchdatei ist optional. In der aktuellen Version des Batchbetriebs wird die FVA-Workbench automatisch beim ausführen einer .wbj Datei (Jobdefinition) gestartet. Batchdatei erstellen
|
Wenn die FVA-Workbench über das Installationsprogramm installiert wurde, ist die Dateiendung . wbj (Jobdefinition) bereits richtig verknüpft und die Workbench startet automatisch. Fehlt diese Verknüpfung, kann sie bei ersten Ausführen einer .wbj Datei im "Öffnen mit Dialog" gesetzt werden. Hierfür muss im FVA-Workbench Installationsverzeichnis die Datei jobstarter.cmd ausgewählt werden.
Um das Skript zu starten, muss die Batchdatei ausgeführt werden. Die Workbench wird daraufhin gestartet und führt automatisch das angegebene Script aus. Die in der Jobdefinition angegebenen Variablen werden dabei übergeben.
War die Berechnung erfolgreich, werden die Ergebnisse in der Ergebnisdatei gespeichert: (result.txt)
- Damit der Batchbetrieb aufgeführt werden kann, müssen in der Konfigurationsdatei alle Control Variablen angegeben werden.
- Nach jeder Berechnung wird ein Fehlerreport erstellt. Hier werden alle Hinweise, Warnungen und Fehler die bei der Ausführung aufgetreten sind gespeichert.
Grundsätzlich empfiehlt es sich ältere Modelle zuerst manuell zu laden. Dabei wird das Modell automatisch auf die aktuelle Workbench Version aktualisiert. Sind Nutzereingaben notwendig, werden entsprechende Eingabedialoge angezeigt.
Wird ein altes Modell geladen, wird ein Hinweisfenster zum Modellupgrade angezeigt:
Soll das Modell ohne diesen Hinweis beim Laden automatisch aktualisiert werden, kann der Hinweis unter Einstellungen -> Modellaktualisierung dauerhaft deaktiviert werden.
