{"id":2412,"date":"2019-11-20T12:48:18","date_gmt":"2019-11-20T11:48:18","guid":{"rendered":"https:\/\/cobomation.de\/?p=2412"},"modified":"2023-07-20T08:00:25","modified_gmt":"2023-07-20T06:00:25","slug":"tutorial-flussprofilgenerierung-mit-qmixelements-teil-1","status":"publish","type":"post","link":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/","title":{"rendered":"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1"},"content":{"rendered":"[vc_row type=&#8220;in_container&#8220; full_screen_row_position=&#8220;middle&#8220; column_margin=&#8220;default&#8220; column_direction=&#8220;default&#8220; column_direction_tablet=&#8220;default&#8220; column_direction_phone=&#8220;default&#8220; scene_position=&#8220;center&#8220; text_color=&#8220;dark&#8220; text_align=&#8220;left&#8220; row_border_radius=&#8220;none&#8220; row_border_radius_applies=&#8220;bg&#8220; overlay_strength=&#8220;0.3&#8243; gradient_direction=&#8220;left_to_right&#8220; shape_divider_position=&#8220;bottom&#8220; bg_image_animation=&#8220;none&#8220;][vc_column column_padding=&#8220;no-extra-padding&#8220; column_padding_tablet=&#8220;inherit&#8220; column_padding_phone=&#8220;inherit&#8220; column_padding_position=&#8220;all&#8220; background_color_opacity=&#8220;1&#8243; background_hover_color_opacity=&#8220;1&#8243; column_shadow=&#8220;none&#8220; column_border_radius=&#8220;none&#8220; column_link_target=&#8220;_self&#8220; gradient_direction=&#8220;left_to_right&#8220; overlay_strength=&#8220;0.3&#8243; width=&#8220;1\/1&#8243; tablet_width_inherit=&#8220;default&#8220; tablet_text_alignment=&#8220;default&#8220; phone_text_alignment=&#8220;default&#8220; column_border_width=&#8220;none&#8220; column_border_style=&#8220;solid&#8220; bg_image_animation=&#8220;none&#8220;][vc_column_text]Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren. Sie erhalten im Rahmen dieses Tutorials einen Einblick und viele n\u00fctzliche Hinweise zu einigen erweiterten Techniken, wie z.B. den Einsatz von Variablen, die Verwendung von JavaScript und die Nutzung von virtuellen Kan\u00e4len f\u00fcr die Aufzeichnung von Werten im grafischen Logger.<\/p>\n<p>Im Rahmen des Tutorials erstellen Sie zwei Scripte, in denen auf Basis mathematischer Funktionen Flussgradienten bzw. Flussprofile generiert werden.<\/p>\n<h3>Vorbereitung<\/h3>\n<p>Bevor Sie mit der Programmierung der Scripte beginnen k\u00f6nnen, m\u00fcssen Sie Ihr System konfigurieren. Wenn Sie nicht \u00fcber entsprechende Ger\u00e4te verf\u00fcgen, k\u00f6nnen Sie das Tutorial auch gern mit simulierten Ger\u00e4ten nachvollziehen. Das QmixElements Projekt mit simulierten Ger\u00e4ten und dem im Tutorial erstellten Script k\u00f6nnen Sie hier herunterladen.<\/p>\n<p><span style=\"color: #4393e9;\"><strong>Wichtig<\/strong><\/span><br \/>\nF\u00fcr dieses Tutorial ben\u00f6tigen Sie die QmixElements Version v20191121 oder eine neuere Version. Wenn Sie noch eine \u00e4ltere Version verwenden, aktualisieren Sie bitte auf die aktuellste QmixElements Version.<\/p>\n<p>Aktuelle QmixElements Version<\/p>\n<p>F\u00fcr dieses Tutorial haben wir zwei Nemesys Niederdruck Spritzenpumpen mit 5 ml Glasspritzen <span style=\"color: #4393e9;\">\u2776<\/span> verwendet. Sie k\u00f6nnen das Tutorial auch gern mit anderen Nemesys Spritzenpumpen oder Spritzen durchf\u00fchren, m\u00fcssen aber dann ggf. die Flussraten anpassen. Damit w\u00e4hrend der Generierung der Flussprofile die Ventile automatisch geschaltet werden, aktivieren Sie die Ventilautomatik f\u00fcr beide Pumpen <span style=\"color: #4393e9;\">\u2777<\/span>. Als Einheit f\u00fcr die Flussrate konfigurieren Sie bitte <strong>ml\/min<\/strong> <span style=\"color: #4393e9;\">\u2778<\/span>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2416 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_Configuration.png\" alt=\"\" width=\"993\" height=\"559\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Configuration.png 993w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Configuration-300x169.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Configuration-768x432.png 768w\" sizes=\"auto, (max-width: 993px) 100vw, 993px\" \/><\/p>\n<p>Um berechnete Werte aus dem Script grafisch visualisieren zu k\u00f6nnen, erstellen Sie in der Liste der I\/O Kan\u00e4le einen virtuellen Kanal <span style=\"color: #4393e9;\">\u2779<\/span>. Ein virtueller Kanal ist ein I\/O Kanal, der f\u00fcr die Eingabe und Ausgabe von Werten verwendet werden kann.<\/p>\n<p>Damit die generierten Flussprofile grafische in Echtzeit aufgezeichnet und visualisiert werden k\u00f6nnen, verwenden Sie den grafischen Logger und konfigurieren ihn entsprechend der Abbildung unten. Es soll von beiden Pumpen die aktuelle Flussrate und von dem virtuellen Kanal der aktuellen Wert angezeigt werden <span style=\"color: #4393e9;\">\u2776<\/span>. Als <strong>Log Intervall<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span> stellen Sie einen Wert von 0,1 Sekunden ein. Jetzt k\u00f6nnen Sie mit der Programmierung des ersten Scripts starten.<\/p>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2434 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_Loggerconfig.png\" alt=\"\" width=\"916\" height=\"411\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Loggerconfig.png 916w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Loggerconfig-300x135.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Loggerconfig-768x345.png 768w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/h3>\n<h3>Teil 1 &#8211; Script zur Generierung eines S\u00e4gezahnprofils<\/h3>\n<p>Ziel dieses Scripts soll es sein, mit einer Pumpe ein Flussprofil in Form eines S\u00e4gezahns zu generieren und mit der zweiten Pumpe den Fluss der ersten Pumpe so zu erg\u00e4nzen, dass die Summe der beiden Fl\u00fcsse zu einem konstanten Fluss mit einer definierten Flussrate f\u00fchrt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2440 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/sawtooth_function.png\" alt=\"\" width=\"617\" height=\"233\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/sawtooth_function.png 617w, https:\/\/cetoni.com\/wp-content\/uploads\/sawtooth_function-300x113.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/p>\n<p>Den S\u00e4gezahn generieren Sie, indem Sie die Flussrate schrittweise in einem festen Intervall von 0 bis zur gew\u00fcnschten Zielflussrate erh\u00f6hen. D.h. f\u00fcr das Script lassen sich die folgenden Parameter identifizieren:<\/p>\n<ul>\n<li>Anzahl der Schritte f\u00fcr einen einzelnen S\u00e4gezahn (<strong>$GradientSteps<\/strong>)<\/li>\n<li>Dauer eines Schrittes in Millisekunden (<strong>$StepDuration<\/strong>)<\/li>\n<li>Zielflussrate (<strong>$TargetFlow<\/strong>)<\/li>\n<\/ul>\n<p>F\u00fcr diese Parameter legen Sie in Ihrem Script drei Variablen an. So k\u00f6nnen Sie die Parameter sp\u00e4ter schnell und einfach an einer Stelle \u00e4ndern, ohne st\u00e4ndig durch das komplette Script navigieren zu m\u00fcssen. F\u00fcr jede Variable vergeben Sie einen aussagekr\u00e4ftigen und eindeutigen Namen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2436 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_Variables.png\" alt=\"\" width=\"517\" height=\"176\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Variables.png 517w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Variables-300x102.png 300w\" sizes=\"auto, (max-width: 517px) 100vw, 517px\" \/><\/p>\n<p>F\u00fcr den Gradient verwenden Sie 20 Schritte (<strong>$GradientSteps = 20<\/strong>) mit einer Dauer von je 100 Millisekunden (<strong>$StepDuration = 100<\/strong>). Die Aufl\u00f6sung von 100 ms ist f\u00fcr viele Anwendungen eine hinreichend schnelle Zeitbasis. Diese Werte k\u00f6nnen Sie sp\u00e4ter jederzeit \u00e4ndern. F\u00fcr die Zielflussrate k\u00f6nnen Sie einen festen Wert eingeben, oder Sie berechnen die Zielflussrate auf Basis der maximalen Flussrate der ersten Pumpe. Daf\u00fcr k\u00f6nnen Sie in das JavaScript Feld die Ger\u00e4teeigenschaft (<strong>Insert device property<\/strong>) f\u00fcr die maximale Flussrate der Pumpe einf\u00fcgen und f\u00fcr Berechnungen verwenden. In diesem Beispiel wollen wir mit einem Zehntel der Maximalflussrate dosieren und teilen diese deshalb einfach durch 10. Sie k\u00f6nnen aber auch gern andere Werte oder eigene Berechnungen verwenden.<\/p>\n<p style=\"text-align: center;\"><strong>$TargetFlow<\/strong> = $neMESYS_Low_Pressure_1.MaxFlow \/ 10<\/p>\n<p>Um einen einzelnen S\u00e4gezahn zu erzeugen, ben\u00f6tigen Sie nun eine Z\u00e4hlschleife (<strong>Counting Loop<\/strong>) <span style=\"color: #4393e9;\">\u2776<\/span>. F\u00fcr eine Z\u00e4hlschleife k\u00f6nnen zwei Parameter konfiguriert werden: die Anzahl der Schleifendurchl\u00e4ufe (<strong>Loop Cycles<\/strong>) <span style=\"color: #4393e9;\">\u2777<\/span> und der Name der Variable, in die der Z\u00e4hlerwert f\u00fcr den aktuellen Schleifendurchlauf gespeichert wird <span style=\"color: #4393e9;\">\u2778<\/span>. Das Eingabfeld f\u00fcr die Loop Cycles <span style=\"color: #4393e9;\">\u2777<\/span> ist mit einem orangefarbenen V markiert, d.h. Sie k\u00f6nnen in diesem Eingabefeld Variablen verwenden. Sie k\u00f6nnen an dieser Stelle also einfach die vorher definierte Variable <strong>$GradientSteps<\/strong> eintragen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2418 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_CountingLoop.png\" alt=\"\" width=\"918\" height=\"240\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_CountingLoop.png 918w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_CountingLoop-300x78.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_CountingLoop-768x201.png 768w\" sizes=\"auto, (max-width: 918px) 100vw, 918px\" \/><\/p>\n<p>Innerhalb der Schleife k\u00f6nnen Sie nun die Flussrate f\u00fcr die erste Pumpe berechnen und in einer Variablen speichern. Der Schleifenz\u00e4hler <strong>$i<\/strong> nimmt bei den 20 Schleifendurchl\u00e4ufen die Werte 0 \u2013 19 an. Die Flussrate k\u00f6nnen Sie deshalb mit der folgenden Formel berechnen:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #4393e9;\">\u2776<\/span> <strong>$Flow1<\/strong> = $TargetFlow \/ ($GradientSteps &#8211; 1) * $i<\/p>\n<p>D.h. die Flussrate ist im ersten Schleifendurchlauf 0 und erreicht im letzten Durchlauf den Wert <strong>$TargetFlow<\/strong>. Die Summe der Flussraten beider Pumpen soll den Wert <strong>$TargetFlow<\/strong> ergeben. Deshalb k\u00f6nnen Sie in einer zweiten Variablen die Flussrate der zweiten Pumpe wie folgt berechnen:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #4393e9;\">\u2777<\/span> <strong>$Flow2<\/strong> = $TargetFlow &#8211; $Flow1<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2428 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_FlowVariables.png\" alt=\"\" width=\"847\" height=\"309\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FlowVariables.png 847w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FlowVariables-300x109.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FlowVariables-768x280.png 768w\" sizes=\"auto, (max-width: 847px) 100vw, 847px\" \/><\/p>\n<p>Diese beiden Werte k\u00f6nnen Sie nun verwenden, um mit der Funktion <strong>Generate Flow<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span> die Dosierung der beiden Pumpen zu starten. Zur Konfiguration der Generate Flow Funktion w\u00e4hlen Sie einfach die entsprechende Pumpe aus und tragen im <strong>Feld Flow<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span> den berechneten Wert <strong>$Flow1<\/strong> oder <strong>$Flow2<\/strong> ein. Wichtig ist, dass hier die Einheit f\u00fcr die Flussrate auf den gleichen Wert eingestellt wird, wie er f\u00fcr die Pumpe konfiguriert wurde \u2013 in diesem Fall <strong>ml\/min<\/strong> <span style=\"color: #4393e9;\">\u2778<\/span>. Die Checkbox <strong>Run to completion<\/strong> <span style=\"color: #4393e9;\">\u2779<\/span> m\u00fcssen Sie deaktivieren. Ist dieses Feld aktiv, dann wird die n\u00e4chste Funktion erst gestartet, wenn die Pumpe die Dosierung beendet hat. Im Fall der Generate Flow Funktion w\u00e4re das dann, wenn die Pumpe vollst\u00e4ndig aufgezogen oder vollst\u00e4ndig entleert ist. Da dies hier nicht erw\u00fcnscht ist, sondern das Script sofort fortgesetzt werden soll, deaktivieren Sie das Feld.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2430 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_GenerateFlow.png\" alt=\"\" width=\"850\" height=\"280\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_GenerateFlow.png 850w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_GenerateFlow-300x99.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_GenerateFlow-768x253.png 768w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/p>\n<p>Um die gew\u00fcnschte Schrittdauer f\u00fcr jeden Schleifendurchlauf zu erreichen, f\u00fcgen Sie nun noch eine <strong>Delay<\/strong> Funktion <span style=\"color: #4393e9;\">\u2776<\/span> als letzte Funktion in die Schleife ein. Im Konfigurationsbereich der Funktion im Eingabefeld <strong>Milliseconds<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span> k\u00f6nnen Sie direkt die Variable<strong> $StepDuratio<\/strong>n eintragen. Die Delay Funktion verz\u00f6gert die weitere Scriptausf\u00fchrung f\u00fcr die konfigurierte Zeitdauer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2420 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_Delay.png\" alt=\"\" width=\"1001\" height=\"241\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Delay.png 1001w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Delay-300x72.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_Delay-768x185.png 768w\" sizes=\"auto, (max-width: 1001px) 100vw, 1001px\" \/><\/p>\n<p>Am Ende Ihres kurzen Scripts f\u00fcgen Sie jetzt die Funktion <strong>Stop All Pumps<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span> ein, um alle Pumpen zu stoppen. Um die Aufzeichnung der Flussraten im grafischen Logger mit dem Scriptablauf zu synchronisieren, f\u00fcgen Sie anschlie\u00dfend noch die Funktion zum Start des Loggers (<strong>Start Plot Logger<\/strong>) <span style=\"color: #4393e9;\">\u2777<\/span> vor der Z\u00e4hlschleife ein und die Funktion zum Stoppen der Aufzeichnung (<strong>Stop Plot Logger<\/strong>)<span style=\"color: #4393e9;\"> \u2778<\/span> am Ende des Scripts.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2426 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_FirstTestRun.png\" alt=\"\" width=\"535\" height=\"280\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FirstTestRun.png 535w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FirstTestRun-300x157.png 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/p>\n<p>Wenn Sie Ihre Spritzen komplett gef\u00fcllt haben, k\u00f6nnen Sie jetzt den ersten Testlauf starten. Wenn das Script fehlerfrei durchgelaufen ist, sollten Sie im grafischen Logger das folgende Bild sehen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2424 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_FirstTestRun_Graph.png\" alt=\"\" width=\"926\" height=\"260\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FirstTestRun_Graph.png 926w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FirstTestRun_Graph-300x84.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FirstTestRun_Graph-768x216.png 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/p>\n<p>Im n\u00e4chsten Schritt erweitern Sie das Script so, dass die Erzeugung des S\u00e4gezahns zyklisch wiederholt wird, bis der Anwender die Taste <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\"><strong>\u2776<\/strong><\/span> dr\u00fcckt. F\u00fcgen Sie daf\u00fcr eine anfangsgepr\u00fcfte Schleife (<strong>Conditional Loop<\/strong>)<span style=\"color: #4393e9;\"> \u2777<\/span> vor die S\u00e4gezahnschleife ein. Wechseln Sie im Konfigurationsbereich der Funktion in den JavaScript Bereich <span style=\"color: #4393e9;\">\u2778<\/span> und geben Sie dort folgende Bedingung ein:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #4393e9;\">\u2779<\/span> <strong>$StopRequested<\/strong> == false<\/p>\n<p>Das bedeutet, diese Schleife wird st\u00e4ndig wiederholt, so lange die Bedingung erf\u00fcllt ist, d.h. so lange die globale Variable <strong>$StopRequested<\/strong> den Wert false hat. Die Variable <strong>$StopRequested<\/strong> ist eine globale Scriptvariable die immer vorhanden ist. Nach dem Start des Scripts hat diese Variable stets den Wert false. Erst wenn der Anwender die Schaltfl\u00e4che <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span> dr\u00fcckt, wird der Wert der Variable auf true gesetzt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2414 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_ConditionalLoop.png\" alt=\"\" width=\"817\" height=\"251\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_ConditionalLoop.png 817w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_ConditionalLoop-300x92.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_ConditionalLoop-768x236.png 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/p>\n<p>Jetzt k\u00f6nnen Sie die S\u00e4gezahnschleife in den Conditional Loop einf\u00fcgen. Klicken Sie daf\u00fcr die Z\u00e4hlschleife (<strong>Counting Loop<\/strong>) <span style=\"color: #4393e9;\">\u277a<\/span> an und ziehen Sie diese auf den <strong>Conditional Loop<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span>. Die Z\u00e4hlschleife wird damit in den Conditional Loop eingef\u00fcgt. Starten Sie das Script nun erneut. Die Erzeugung des S\u00e4gezahns wird jetzt so lange wiederholt, bis Sie die Schaltfl\u00e4che <strong>Request Script Stop<\/strong><span style=\"color: #4393e9;\"> \u2776<\/span> dr\u00fccken.<\/p>\n<p>Dr\u00fccken Sie nach einigen Zyklen die <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span> Schaltfl\u00e4che um das Script zu beenden. Wenn das Script fehlerfrei durchgelaufen ist, sollten Sie im grafischen Logger das folgende Bild sehen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2432 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_GraphLog.png\" alt=\"\" width=\"963\" height=\"258\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_GraphLog.png 963w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_GraphLog-300x80.png 300w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_GraphLog-768x206.png 768w\" sizes=\"auto, (max-width: 963px) 100vw, 963px\" \/><\/p>\n<p>Damit ist Ihr Flussprofil Script fast fertig. Um die \u00dcbersichtlichkeit noch ein wenig zu verbessern, k\u00f6nnen Sie die Variablen, die Sie am Anfang des Scriptes deklariert haben, in einer Variablengruppe (<strong>Variable Declarations<\/strong>) zusammenfassen. F\u00fcgen Sie daf\u00fcr eine <strong>Variable Declarations<\/strong> Funktion als erste Funktion in das Script ein. Markieren Sie anschlie\u00dfend alle Variablen. Klicken Sie daf\u00fcr die erste <strong>Create Variable<\/strong> Funktion an und klicken Sie dann mit gedr\u00fcckter Umschalttaste auf die letzte <strong>Create Variable<\/strong> Funktion &#8211; so wie Sie auch mehrere Dateien im Dateiexplorer markieren w\u00fcrden.<\/p>\n<p>Anschlie\u00dfend k\u00f6nnen Sie alle markierten Variablen mit der Maus in die Variablengruppe verschieben. Damit haben Sie die Variablen gruppiert und die \u00dcbersichtlichkeit und Lesbarkeit des Scripts verbessert. Au\u00dferdem ist es nun leichter, diese Gruppe von Variablen an eine andere Position zu verschieben. Ihr Script sollte nun so aussehen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2422 size-full\" src=\"https:\/\/cetoni.de\/wp-content\/uploads\/Flowprofile_FinalSawtoothScript-1.png\" alt=\"\" width=\"536\" height=\"526\" srcset=\"https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FinalSawtoothScript-1.png 536w, https:\/\/cetoni.com\/wp-content\/uploads\/Flowprofile_FinalSawtoothScript-1-300x294.png 300w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/p>\n<p>Im zweiten Teil des Tutorials erfahren Sie, wie Sie das Script so \u00e4ndern, dass mit Hilfe von JavaScript Funktionen sinusf\u00f6rmige Flussprofile erzeugt werden k\u00f6nnen. Zus\u00e4tzlich erweitern Sie das Script um eine Initialisierungsroutine, welche die Spritzen aufzieht und lernen, wie Sie berechnete Werte mit Hilfe von virtuellen I\/O Kan\u00e4len im grafischen Logger aufzeichnen k\u00f6nnen. Abschlie\u00dfend erhalten Sie dann noch Tipps, welche M\u00f6glichkeiten es gibt, die Lesbarkeit Ihres Scriptes zu verbessern und Ihr Script zu dokumentieren.<\/p>\n<p>Das QmixElements Projekt mit simulierten Ger\u00e4ten und dem im Tutorial erstellten Script k\u00f6nnen Sie <a href=\"https:\/\/cetoni.de\/downloads\/Flowprofiles.qpr\" target=\"_blank\" rel=\"noopener\">hier herunterladen<\/a>.[\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8220;in_container&#8220; full_screen_row_position=&#8220;middle&#8220; column_margin=&#8220;default&#8220; column_direction=&#8220;default&#8220; column_direction_tablet=&#8220;default&#8220; column_direction_phone=&#8220;default&#8220; scene_position=&#8220;center&#8220; text_color=&#8220;dark&#8220; text_align=&#8220;left&#8220; row_border_radius=&#8220;none&#8220; row_border_radius_applies=&#8220;bg&#8220; overlay_strength=&#8220;0.3&#8243; gradient_direction=&#8220;left_to_right&#8220; shape_divider_position=&#8220;bottom&#8220; bg_image_animation=&#8220;none&#8220;][vc_column column_padding=&#8220;no-extra-padding&#8220; column_padding_tablet=&#8220;inherit&#8220; column_padding_phone=&#8220;inherit&#8220; column_padding_position=&#8220;all&#8220; background_color_opacity=&#8220;1&#8243; background_hover_color_opacity=&#8220;1&#8243; column_shadow=&#8220;none&#8220; column_border_radius=&#8220;none&#8220; column_link_target=&#8220;_self&#8220; gradient_direction=&#8220;left_to_right&#8220; overlay_strength=&#8220;0.3&#8243; width=&#8220;1\/1&#8243; tablet_width_inherit=&#8220;default&#8220; tablet_text_alignment=&#8220;default&#8220;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2449,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77],"tags":[41,74],"class_list":{"0":"post-2412","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorial","8":"tag-software","9":"tag-tutorial"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1 - CETONI GmbH<\/title>\n<meta name=\"description\" content=\"Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1 - CETONI GmbH\" \/>\n<meta property=\"og:description\" content=\"Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/\" \/>\n<meta property=\"og:site_name\" content=\"CETONI GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-20T11:48:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-20T06:00:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"380\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"CETONI\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"CETONI\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/\"},\"author\":{\"name\":\"CETONI\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/#\\\/schema\\\/person\\\/f2d4de804c915072039aae63b057de8e\"},\"headline\":\"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1\",\"datePublished\":\"2019-11-20T11:48:18+00:00\",\"dateModified\":\"2023-07-20T06:00:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/\"},\"wordCount\":1730,\"image\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cetoni.com\\\/wp-content\\\/uploads\\\/FlowProfiles_Part2.png\",\"keywords\":[\"Software\",\"Tutorial\"],\"articleSection\":[\"Tutorial\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/\",\"url\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/\",\"name\":\"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1 - CETONI GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cetoni.com\\\/wp-content\\\/uploads\\\/FlowProfiles_Part2.png\",\"datePublished\":\"2019-11-20T11:48:18+00:00\",\"dateModified\":\"2023-07-20T06:00:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/#\\\/schema\\\/person\\\/f2d4de804c915072039aae63b057de8e\"},\"description\":\"Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cetoni.com\\\/wp-content\\\/uploads\\\/FlowProfiles_Part2.png\",\"contentUrl\":\"https:\\\/\\\/cetoni.com\\\/wp-content\\\/uploads\\\/FlowProfiles_Part2.png\",\"width\":1280,\"height\":380},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/cetoni.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/cetoni.com\\\/de\\\/\",\"name\":\"CETONI GmbH\",\"description\":\"Automatisierungs- und Mikrofluidikl\u00f6sungen f\u00fcr das Labor\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cetoni.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/de\\\/#\\\/schema\\\/person\\\/f2d4de804c915072039aae63b057de8e\",\"name\":\"CETONI\",\"sameAs\":[\"http:\\\/\\\/cobomation.de\"],\"url\":\"https:\\\/\\\/cetoni.com\\\/de\\\/author\\\/cetoni\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1 - CETONI GmbH","description":"Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/","og_locale":"de_DE","og_type":"article","og_title":"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1 - CETONI GmbH","og_description":"Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren.","og_url":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/","og_site_name":"CETONI GmbH","article_published_time":"2019-11-20T11:48:18+00:00","article_modified_time":"2023-07-20T06:00:25+00:00","og_image":[{"width":1280,"height":380,"url":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","type":"image\/png"}],"author":"CETONI","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"CETONI","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#article","isPartOf":{"@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/"},"author":{"name":"CETONI","@id":"https:\/\/cetoni.com\/de\/#\/schema\/person\/f2d4de804c915072039aae63b057de8e"},"headline":"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1","datePublished":"2019-11-20T11:48:18+00:00","dateModified":"2023-07-20T06:00:25+00:00","mainEntityOfPage":{"@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/"},"wordCount":1730,"image":{"@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#primaryimage"},"thumbnailUrl":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","keywords":["Software","Tutorial"],"articleSection":["Tutorial"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/","url":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/","name":"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1 - CETONI GmbH","isPartOf":{"@id":"https:\/\/cetoni.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#primaryimage"},"image":{"@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#primaryimage"},"thumbnailUrl":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","datePublished":"2019-11-20T11:48:18+00:00","dateModified":"2023-07-20T06:00:25+00:00","author":{"@id":"https:\/\/cetoni.com\/de\/#\/schema\/person\/f2d4de804c915072039aae63b057de8e"},"description":"Die QmixElements Software verf\u00fcgt \u00fcber ein leistungsf\u00e4higes Script-System, um Prozesse und Abl\u00e4ufe schnell und einfach zu automatisieren.","breadcrumb":{"@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#primaryimage","url":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","contentUrl":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","width":1280,"height":380},{"@type":"BreadcrumbList","@id":"https:\/\/cetoni.com\/de\/tutorial-flussprofilgenerierung-mit-qmixelements-teil-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/cetoni.com\/de\/"},{"@type":"ListItem","position":2,"name":"Tutorial Flussprofilgenerierung mit QmixElements (CETONI Elements)- Teil 1"}]},{"@type":"WebSite","@id":"https:\/\/cetoni.com\/de\/#website","url":"https:\/\/cetoni.com\/de\/","name":"CETONI GmbH","description":"Automatisierungs- und Mikrofluidikl\u00f6sungen f\u00fcr das Labor","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cetoni.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/cetoni.com\/de\/#\/schema\/person\/f2d4de804c915072039aae63b057de8e","name":"CETONI","sameAs":["http:\/\/cobomation.de"],"url":"https:\/\/cetoni.com\/de\/author\/cetoni\/"}]}},"_links":{"self":[{"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/posts\/2412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/comments?post=2412"}],"version-history":[{"count":0,"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/posts\/2412\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/media\/2449"}],"wp:attachment":[{"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/media?parent=2412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/categories?post=2412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cetoni.com\/de\/wp-json\/wp\/v2\/tags?post=2412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}