{"id":4795,"date":"2021-06-07T18:04:54","date_gmt":"2021-06-07T16:04:54","guid":{"rendered":"https:\/\/cobomation.de\/tutorial-flow-profile-generation-with-qmixelements-part-1\/"},"modified":"2023-07-26T11:34:11","modified_gmt":"2023-07-26T09:34:11","slug":"tutorial-flow-profile-generation-with-qmixelements-part-1","status":"publish","type":"post","link":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/","title":{"rendered":"Tutorial flow profile generation with QmixElements (CETONI Elements) &#8211; Part 1"},"content":{"rendered":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; bg_image_animation=&#8221;none&#8221;][vc_column_text]The QmixElements software has a powerful script system to automate processes and procedures quickly and easily. This tutorial will give you an insight and many useful hints on some of the advanced features of QmixElements. Techniques, such as the use of variables, the use of JavaScript and the use of virtual channels for recording values in the graphical logger.<\/p>\n<p>In this tutorial, you will create two scripts that generate flow gradients or flow profiles based on mathematical functions.<\/p>\n<h3>Preparation<\/h3>\n<p>Before you can start programming the scripts, you must configure your system. If you do not have the appropriate devices, you are welcome to follow the tutorial with simulated devices. You can download the QmixElements project with simulated devices and the script created in the tutorial here.<\/p>\n<p><span style=\"color: #4393e9;\"><strong>Important<\/strong><\/span><br \/>\nFor this tutorial you need the QmixElements version v20191121 or a newer version. If you are still using an older version, please update to the latest QmixElements version.<\/p>\n<p>Latest QmixElements Version<\/p>\n<p>For this tutorial we used two neMESYS low pressure syringe pumps with 5 ml glass syringes <span style=\"color: #4393e9;\">\u2776<\/span>. You can do this tutorial with other neMESYS syringe pumps or syringes, but you may have to adjust the flow rates. To switch the valves automatically during the generation of the flow profiles, activate the valve automation for both pumps <span style=\"color: #4393e9;\">\u2777<\/span>. Please configure <strong>ml\/min<\/strong> <span style=\"color: #4393e9;\">\u2778<\/span> as the unit for the flow rate.<\/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>To visualize calculated values from the script graphically, create a virtual channel <span style=\"color: #4393e9;\">\u2779<\/span>in the list of I\/O channels. A virtual channel is an I\/O channel that can be used for entering and outputting values.<\/p>\n<p>To record and visualize the generated flow profiles graphically in real time, use the graphical logger and configure it according to the figure below. The current flow rate of both pumps should be displayed as well as the current value of the virtual channel <span style=\"color: #4393e9;\">\u2776<\/span>. As <strong>Log Interval<\/strong><span style=\"color: #4393e9;\">\u2777<\/span> set a value of 0.1 seconds. Now you can start programming the first script.<\/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>Part 1 &#8211; Script for generating a sawtooth profile<\/h3>\n<p>The aim of this script is to generate a flow profile in the form of a sawtooth with one pump and to supplement the flow of the first pump with the second pump so that the sum of the two flows leads to a constant flow with a defined flow rate but with a mixing ratio that changes over time.<\/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>The sawtooth is generated by increasing the flow rate stepwise in a fixed interval from 0 to the desired target flow rate. The following parameters can be identified for the script:<\/p>\n<ul>\n<li>Number of steps for a single sawtooth (<strong>$GradientSteps<\/strong>)<\/li>\n<li>Duration of a step in milliseconds (<strong>$StepDuration<\/strong>)<\/li>\n<li>Target flow rate (<strong>$TargetFlow<\/strong>)<\/li>\n<\/ul>\n<p>You create three variables for these parameters in your script. So you can change the parameters later quickly and easily in one place, without having to navigate through the complete script all the time. For each variable you assign a meaningful and unique name.<\/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>For the gradient, use 20 steps (<strong>$GradientSteps = 20<\/strong>) with a duration of 100 milliseconds each (<strong>$StepDuration = 100<\/strong>). The resolution of 100 ms is a reasonably fast time base for many applications. You can change these values later at any time. You can enter a fixed value for the target flow rate, or you can calculate the target flow rate based on the maximum flow rate of the first pump. To do this, you can insert the device property (<strong>Insert device property<\/strong>) for the maximum flow rate of the pump into the JavaScript field and use it for calculations. In this example we want to dose with one tenth of the maximum flow rate and therefore simply divide it by 10. You can also use other values or your own calculations:<\/p>\n<p style=\"text-align: center;\"><strong>$TargetFlow<\/strong> = $neMESYS_Low_Pressure_1.MaxFlow \/ 10<\/p>\n<p>To create a single sawtooth, you now need a <strong>Counting Loop<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span>. Two parameters can be configured for a counting loop: the number of <strong>Loop Cycles<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span> and the name of the variable (Counter Variable) in which the counter value for the current loop cycle is stored <span style=\"color: #4393e9;\">\u2778<\/span>. The input field for the loop cycles <span style=\"color: #4393e9;\">\u2777<\/span> is marked with an orange V, i.e. you can use variables in this input field. At this point you can simply enter the previously defined variable <strong>$GradientSteps<\/strong>.<\/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>Within the loop you can now calculate the flow rate for the first pump and save it in a variable. The loop counter <strong>$i<\/strong> takes the values 0 &#8211; 19 for the 20 loop passes. You can therefore calculate the flow rate with the following formula:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #4393e9;\">\u2776<\/span> <strong>$Flow1<\/strong> = $TargetFlow \/ ($GradientSteps &#8211; 1) * $i<\/p>\n<p>I.e. the flow rate is 0 in the first loop pass and reaches the value <strong>$TargetFlow<\/strong> in the last loop pass. The sum of the flow rates of both pumps should give the value <strong>$TargetFlow<\/strong>. Therefore, in a second variable, you can calculate the flow rate of the second pump as follows:<\/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>You can now use these two values to start the dosing of the two pumps with the function <strong>Generate Flow<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span>. To configure the Generate Flow function, simply select the appropriate pump and enter the calculated value <strong>$Flow1<\/strong> or <strong>$Flow2<\/strong> in the <strong>Flow field<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span>. It is important that the unit for the flow rate is set to the same value as configured for the pump &#8211; in this case <strong>ml\/min<\/strong> <span style=\"color: #4393e9;\">\u2778<\/span>. You have to deactivate the <strong>Run to completition<\/strong> checkbox <span style=\"color: #4393e9;\">\u2779<\/span>. If this field is active, the next function will not be started until the pump has finished dosing. In the case of the Generate Flow function, this would be when the pump is fully wound or drained. Since this is not desired here, but the script is to be continued immediately, deactivate the field.<\/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>To achieve the desired step duration for each loop cycle, add a <strong>Delay<\/strong>function <span style=\"color: #4393e9;\">\u2776<\/span> as the last function in the loop. You can directly enter the variable <strong>$StepDuration<\/strong> in the configuration area of the function in the input field <strong>Milliseconds<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span>. The Delay function delays the further execution of the script for the configured time period.<\/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>At the end of your short script, now add the <strong>Stop All Pumps<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span> to stop all pumps. To synchronize the recording of the flow rates in the graphical logger with the script flow, add the function to start the logger (<strong>Start Plot Logger<\/strong>) <span style=\"color: #4393e9;\">\u2777<\/span> before the counting loop and the function to stop the recording (<strong>Stop Plot Logger<\/strong>) <span style=\"color: #4393e9;\">\u2778<\/span> at the end of the script.<\/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>When your syringes are completely filled, you can now start the first test run. If the script has run without errors, you should see the following graphs in the graphical logger.<\/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>In the next step, extend the script to repeat the generation of the sawtooth cyclically until the user presses the <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\"><strong>\u2776<\/strong><\/span> button. To do this, insert a <strong>Conditional Loop<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span> in front of the sawtooth loop. In the configuration area of the function, switch to the JavaScript area <span style=\"color: #4393e9;\">\u2778<\/span> and enter the following condition:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #4393e9;\">\u2779<\/span> <strong>$StopRequested<\/strong> == false<\/p>\n<p>This means that this loop is repeated continuously as long as the condition is fulfilled, i.e. as long as the global variable <strong>$StopRequested<\/strong> has the value false. The variable <strong>$StopRequested<\/strong> is a global script variable that is always present. After starting the script this variable always has the value false. Only when the user presses the button <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span>, the value of the variable is set to true.<\/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>Now you can insert the sawtooth loop into the conditional loop. Click on the <strong>Counting Loop<\/strong> <span style=\"color: #4393e9;\">\u277a<\/span> and drag it to the <strong>Conditional Loop<\/strong> <span style=\"color: #4393e9;\">\u2777<\/span>. The counting loop is then inserted into the conditional loop. Now restart the script. The generation of the sawtooth is now repeated until you press the button <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span>.<\/p>\n<p>After a few cycles, press the <strong>Request Script Stop<\/strong> <span style=\"color: #4393e9;\">\u2776<\/span> button to end the script. If the script has run without errors, you should see the following graphs in the graphical logger.<\/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>Your flow profile script is almost finished. To improve the clarity, you can combine the variables you declared at the beginning of the script in a variable group (<strong>Variable Declarations<\/strong>). Insert a <strong>Variable Declarations<\/strong> function as the first function in the script. Then select all variables. Click on the first <strong>Create Variable<\/strong> function and then click on the last <strong>Create Variable<\/strong> function while holding down the Shift key &#8211; just as you would select several files in your file explorer.<\/p>\n<p>Afterwards you can move all marked variables with the mouse into the variable group. With this you have grouped the variables and improved the clarity and readability of the script. In addition, it is now easier to move this group of variables to another position. Your script should now look like this:<\/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>In the second part of the tutorial you will learn how to modify the script so that sinusoidal flow profiles can be generated with the help of JavaScript functions. You will also learn how to add an initialization routine to the script that pulls up the syringes and how to record calculated values using virtual I\/O channels in the graphical logger. Finally, you will receive tips on how to improve the readability of your script and document your script.<\/p>\n<p>The QmixElements project with simulated devices and the script created in the tutorial can be <a href=\"https:\/\/cetoni.de\/downloads\/Flowprofiles.qpr\" target=\"_blank\" rel=\"noopener\">downloaded here<\/a>.[\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2450,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[90],"tags":[93,97],"class_list":{"0":"post-4795","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorial-en","8":"tag-software-en","9":"tag-tutorial-en"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial flow profile generation with QmixElements (CETONI Elements) - Part 1 - CETONI GmbH<\/title>\n<meta name=\"description\" content=\"The QmixElements software has a powerful script system to automate processes and procedures quickly and easily.\" \/>\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\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial flow profile generation with QmixElements (CETONI Elements) - Part 1 - CETONI GmbH\" \/>\n<meta property=\"og:description\" content=\"The QmixElements software has a powerful script system to automate processes and procedures quickly and easily.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"CETONI GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-07T16:04:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-26T09:34:11+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=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"CETONI\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/\"},\"author\":{\"name\":\"CETONI\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/#\\\/schema\\\/person\\\/f2d4de804c915072039aae63b057de8e\"},\"headline\":\"Tutorial flow profile generation with QmixElements (CETONI Elements) &#8211; Part 1\",\"datePublished\":\"2021-06-07T16:04:54+00:00\",\"dateModified\":\"2023-07-26T09:34:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/\"},\"wordCount\":1658,\"image\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cetoni.com\\\/wp-content\\\/uploads\\\/FlowProfiles_Part2.png\",\"keywords\":[\"Software\",\"Tutorial\"],\"articleSection\":[\"Tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/\",\"url\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/\",\"name\":\"Tutorial flow profile generation with QmixElements (CETONI Elements) - Part 1 - CETONI GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cetoni.com\\\/wp-content\\\/uploads\\\/FlowProfiles_Part2.png\",\"datePublished\":\"2021-06-07T16:04:54+00:00\",\"dateModified\":\"2023-07-26T09:34:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/#\\\/schema\\\/person\\\/f2d4de804c915072039aae63b057de8e\"},\"description\":\"The QmixElements software has a powerful script system to automate processes and procedures quickly and easily.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-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\\\/en\\\/tutorial-flow-profile-generation-with-qmixelements-part-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/cetoni.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial flow profile generation with QmixElements (CETONI Elements) &#8211; Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/cetoni.com\\\/en\\\/\",\"name\":\"CETONI GmbH\",\"description\":\"Automatisierungs- und Mikrofluidikl\u00f6sungen f\u00fcr das Labor\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cetoni.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/cetoni.com\\\/en\\\/#\\\/schema\\\/person\\\/f2d4de804c915072039aae63b057de8e\",\"name\":\"CETONI\",\"sameAs\":[\"http:\\\/\\\/cobomation.de\"],\"url\":\"https:\\\/\\\/cetoni.com\\\/en\\\/author\\\/cetoni\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial flow profile generation with QmixElements (CETONI Elements) - Part 1 - CETONI GmbH","description":"The QmixElements software has a powerful script system to automate processes and procedures quickly and easily.","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\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial flow profile generation with QmixElements (CETONI Elements) - Part 1 - CETONI GmbH","og_description":"The QmixElements software has a powerful script system to automate processes and procedures quickly and easily.","og_url":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/","og_site_name":"CETONI GmbH","article_published_time":"2021-06-07T16:04:54+00:00","article_modified_time":"2023-07-26T09:34:11+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":{"Written by":"CETONI","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/#article","isPartOf":{"@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/"},"author":{"name":"CETONI","@id":"https:\/\/cetoni.com\/en\/#\/schema\/person\/f2d4de804c915072039aae63b057de8e"},"headline":"Tutorial flow profile generation with QmixElements (CETONI Elements) &#8211; Part 1","datePublished":"2021-06-07T16:04:54+00:00","dateModified":"2023-07-26T09:34:11+00:00","mainEntityOfPage":{"@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/"},"wordCount":1658,"image":{"@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","keywords":["Software","Tutorial"],"articleSection":["Tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/","url":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/","name":"Tutorial flow profile generation with QmixElements (CETONI Elements) - Part 1 - CETONI GmbH","isPartOf":{"@id":"https:\/\/cetoni.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/#primaryimage"},"image":{"@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/cetoni.com\/wp-content\/uploads\/FlowProfiles_Part2.png","datePublished":"2021-06-07T16:04:54+00:00","dateModified":"2023-07-26T09:34:11+00:00","author":{"@id":"https:\/\/cetoni.com\/en\/#\/schema\/person\/f2d4de804c915072039aae63b057de8e"},"description":"The QmixElements software has a powerful script system to automate processes and procedures quickly and easily.","breadcrumb":{"@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cetoni.com\/en\/tutorial-flow-profile-generation-with-qmixelements-part-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\/en\/tutorial-flow-profile-generation-with-qmixelements-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/cetoni.com\/en\/"},{"@type":"ListItem","position":2,"name":"Tutorial flow profile generation with QmixElements (CETONI Elements) &#8211; Part 1"}]},{"@type":"WebSite","@id":"https:\/\/cetoni.com\/en\/#website","url":"https:\/\/cetoni.com\/en\/","name":"CETONI GmbH","description":"Automatisierungs- und Mikrofluidikl\u00f6sungen f\u00fcr das Labor","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cetoni.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/cetoni.com\/en\/#\/schema\/person\/f2d4de804c915072039aae63b057de8e","name":"CETONI","sameAs":["http:\/\/cobomation.de"],"url":"https:\/\/cetoni.com\/en\/author\/cetoni\/"}]}},"_links":{"self":[{"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/posts\/4795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/comments?post=4795"}],"version-history":[{"count":0,"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/posts\/4795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/media\/2450"}],"wp:attachment":[{"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/media?parent=4795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/categories?post=4795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cetoni.com\/en\/wp-json\/wp\/v2\/tags?post=4795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}