{"id":9190,"date":"2021-12-11T21:50:03","date_gmt":"2021-12-11T21:50:03","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=9190"},"modified":"2022-01-05T10:36:04","modified_gmt":"2022-01-05T10:36:04","slug":"cascading-pid","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/","title":{"rendered":"Cascading PID"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Introduction to Cascading PID with ControlLogix<\/h3>\n\n\n\n<p>Cascading PID is when one controller writes to the setpoint of another controller.   The controller writing the setpoint is the master controller.  Likewise, the PID instruction the master writes to is called the slave controller.  Keep in mind that we&#8217;ve already set up the flow controller in the <a href=\"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/tuning-simulator-with-pid-instruction\/\">last section.<\/a> We&#8217;ll set up cascading PID&#8217;s for a tank level control.  In the meantime, think about the following process.<\/p><div id=\"bryce-1050222663\" class=\"bryce-afterfirst bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"7728240895\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n\n\n\n<p><em><strong>Keep in mind (in this example) that the higher the tank level is, the more head pressure we have on the outlet.  Therefore, we have more outlet flow.  In this case, we&#8217;ll have a self-regulating system.  In a separate section, we&#8217;ll discuss tuning a tank level in more detail.   For now, we just want to understand how a cascading loop itself works.  It&#8217;s important to realize that tuning a non-self regulating process requires a different tuning procedure.<\/strong><\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/bryceautomation.com\/index.php\/2022\/01\/03\/tuning-a-pid-for-tank-level\/\">Visit this link <\/a>if your tank level is a true integrating process.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"586\" height=\"308\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-30.png\" alt=\"\" class=\"wp-image-9191 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-30.png 586w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-30-300x158.png 300w\" data-sizes=\"(max-width: 586px) 100vw, 586px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 586px; --smush-placeholder-aspect-ratio: 586\/308;\" \/><\/figure>\n\n\n\n<p>In this example, the master controller reads a tank level.  At this point, the master PID decides that we need more or less flow.  After that, it sends a new setpoint to the slave controller.  The slave controller is responsible for maintaining flow rate at the master&#8217;s setpoint.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure the Simulator<\/h3>\n\n\n\n<p>For example, we&#8217;ll be using two <a href=\"https:\/\/bryceautomation.com\/index.php\/2021\/11\/25\/arduino-pid-simulator\/\">simulators<\/a>.  These simulators are both labeled.  On the left, we have flow, and on the right, we have level.  We&#8217;ll need to make some adjustments to the level simulator.  First, we&#8217;ll press the test button to find the time base.  Set this to 10.  Basically, this means that it takes 10 seconds for every minute to pass on the simulator.   The master controller should be at least 3 times slower than the slave.  Additionally, change the type to 1 (for a level type process).   <\/p>\n\n\n\n<p>We need to wire the PV of the flow simulator to the CV of the level simulator.  Also, we&#8217;ll add a 1000uF capacitor to smooth the signal.  Be sure the polarity is correct!  Connect the PV from the level controller to an analog input module.  Be sure to set up the analog module for voltage, or wire the PV to the voltage terminals.  This wire is for your level indication.<\/p>\n\n\n\n<p>To begin with, set the load on both simulators to 50%.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"996\" height=\"289\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-31.png\" alt=\"\" class=\"wp-image-9194 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-31.png 996w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-31-300x87.png 300w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-31-768x223.png 768w\" data-sizes=\"(max-width: 996px) 100vw, 996px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 996px; --smush-placeholder-aspect-ratio: 996\/289;\" \/><\/figure>\n\n\n\n<p>Notice the Level simulator does not display a control variable.  That&#8217;s because in a real process, we aren&#8217;t actually using it in the real world.  The output of the level controller simply sets the setpoint for the flow controller in logic.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Add Master PID for Cascading PID Control<\/h4>\n\n\n\n<p>At this point, you are ready to create tags.  We&#8217;ll need 3 Tags.  Create a tag called LevelPID.  The type is PID.  Additionally, we&#8217;ll create a tag for LevelProcessVariable.  This tag will alias the input channel that you connected the Level simulator to.  Lastly, we&#8217;ll create a tag called LevelControlVariable.  We won&#8217;t actually do much with this tag, except graph it on a trend chart.  You can leave this as a DINT.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"377\" height=\"94\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-32.png\" alt=\"\" class=\"wp-image-9197 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-32.png 377w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-32-300x75.png 300w\" data-sizes=\"(max-width: 377px) 100vw, 377px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 377px; --smush-placeholder-aspect-ratio: 377\/94;\" \/><\/figure>\n\n\n\n<p>Now add the PID instruction to your logic.  We&#8217;ll just add this after the FlowPID so they are both in one place.  Set up the PID instruction as follows.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"371\" height=\"256\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-33.png\" alt=\"\" class=\"wp-image-9199 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-33.png 371w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-33-300x207.png 300w\" data-sizes=\"(max-width: 371px) 100vw, 371px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 371px; --smush-placeholder-aspect-ratio: 371\/256;\" \/><\/figure>\n\n\n\n<p>Next, we&#8217;ll hit the ellipsis to configure the PID instruction.  To start, let&#8217;s set the controller gain to 0.1.  Then, click on the configuration tab.   Notice, I&#8217;ve chosen Dependent mode.  The control action again is reverse acting.  (SP-PV).    Your CV High Limit is 100%.   It&#8217;s important to realize this is a Cascade loop, and this PID is the master.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"631\" height=\"340\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-34.png\" alt=\"\" class=\"wp-image-9200 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-34.png 631w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-34-300x162.png 300w\" data-sizes=\"(max-width: 631px) 100vw, 631px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 631px; --smush-placeholder-aspect-ratio: 631\/340;\" \/><\/figure>\n\n\n\n<p>Furthermore, let&#8217;s go to &#8220;Scaling&#8221;.  There are some parameters we&#8217;ll need to figure out.  For now, set your max CV to 100%, and for the PV&#8217;s max engineering units, we&#8217;ll use 100%.  <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"629\" height=\"340\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-35.png\" alt=\"\" class=\"wp-image-9201 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-35.png 629w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-35-300x162.png 300w\" data-sizes=\"(max-width: 629px) 100vw, 629px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 629px; --smush-placeholder-aspect-ratio: 629\/340;\" \/><\/figure>\n\n\n\n<p>At this point, we need to figure out our unscaled min and max. Press OK,. On this simulator, press the TESTbutton while monitoring your LevelProcessVariable. You will see the unscaled min. Press test again, and you will see the unscaled max.<\/p>\n\n\n\n<p>In this case, my max process variable is 6949.  This will be the value that you place into &#8220;unscaled max&#8221;.  Go back to scaling on your Level PID to set this value.  Press OK.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"559\" height=\"49\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-36.png\" alt=\"\" class=\"wp-image-9202 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-36.png 559w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-36-300x26.png 300w\" data-sizes=\"(max-width: 559px) 100vw, 559px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 559px; --smush-placeholder-aspect-ratio: 559\/49;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Set up Slave PID for Cascading PID control<\/h3>\n\n\n\n<p>We need to make a change to the flow PID.   We need to put this PID into slave mode.  In the FlowPID, set your PID Master Loop to &#8220;LevelPID&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"313\" height=\"245\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-39.png\" alt=\"\" class=\"wp-image-9206 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-39.png 313w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-39-300x235.png 300w\" data-sizes=\"(max-width: 313px) 100vw, 313px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 313px; --smush-placeholder-aspect-ratio: 313\/245;\" \/><\/figure>\n\n\n\n<p>Click the Ellipsis on the FlowPID, and set up your configuration tab as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"626\" height=\"328\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-37.png\" alt=\"\" class=\"wp-image-9204 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-37.png 626w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-37-300x157.png 300w\" data-sizes=\"(max-width: 626px) 100vw, 626px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 626px; --smush-placeholder-aspect-ratio: 626\/328;\" \/><\/figure>\n\n\n\n<p>Finalize any edits, and you are ready to tune the loop!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tuning the Cascading PID loops<\/h3>\n\n\n\n<p>Recall that in the<a href=\"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/tuning-simulator-with-pid-instruction\/\"> last section<\/a>, we&#8217;ve already tuned the flow control loop.  At this point, we are ready to tune the Level control loop.  It&#8217;s important to realize, that cascading PID loops do not always offer perfect control.  You may have to make changes in other parts of your system such as restricting flow, load changes, or limiting the CV.  We&#8217;ll just tune the loop the way we have it set up.  To begin, be sure both simulators have a load of 50%.<\/p>\n\n\n\n<p>Set up a trend chart to monitor LevelPID.SP, LevelPID.PV, and LevelPID.OUT.  Set this up in a similar way as we did in the <a href=\"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/tuning-simulator-with-pid-instruction\/\">last section.<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"302\" height=\"223\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-40.png\" alt=\"\" class=\"wp-image-9208 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-40.png 302w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-40-300x222.png 300w\" data-sizes=\"(max-width: 302px) 100vw, 302px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 302px; --smush-placeholder-aspect-ratio: 302\/223;\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Adjust Kc (Proportional)<\/h4>\n\n\n\n<p>As you can see, we are not filling the tank at all.   We need to increase Kc.  Click the Ellipsis on the LevelPID instruction, and set your Kc to .5.<\/p>\n\n\n\n<p>Our Setpoint went up.  However, we are still not filling the tank.  Our level is zero.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"215\" height=\"220\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-41.png\" alt=\"\" class=\"wp-image-9209 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 215px; --smush-placeholder-aspect-ratio: 215\/220;\" \/><\/figure>\n\n\n\n<p>Increase Kc to 1.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"212\" height=\"243\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-42.png\" alt=\"\" class=\"wp-image-9210 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 212px; --smush-placeholder-aspect-ratio: 212\/243;\" \/><\/figure>\n\n\n\n<p>The level is barely starting to rise.  Let&#8217;s try a Kc of 2.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"240\" height=\"263\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-43.png\" alt=\"\" class=\"wp-image-9211 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 240px; --smush-placeholder-aspect-ratio: 240\/263;\" \/><\/figure>\n\n\n\n<p>At last it&#8217;s come alive, and is stable.   To tune this loop, we need to find the value of Kc that causes instability.  Let&#8217;s try a Kc of 3.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"526\" height=\"258\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-44.png\" alt=\"\" class=\"wp-image-9212 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-44.png 526w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-44-300x147.png 300w\" data-sizes=\"(max-width: 526px) 100vw, 526px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 526px; --smush-placeholder-aspect-ratio: 526\/258;\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Set Ti (Integral)<\/h4>\n\n\n\n<p>As you can see, setting Kc to 3 caused instability.  As a rule of thumb, we need to record the natural period.  This is 20 seconds, or .33 Minutes.  Let&#8217;s cut Kc in half, and set the Ti Variable to .33.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"387\" height=\"299\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-45.png\" alt=\"\" class=\"wp-image-9213 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-45.png 387w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-45-300x232.png 300w\" data-sizes=\"(max-width: 387px) 100vw, 387px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 387px; --smush-placeholder-aspect-ratio: 387\/299;\" \/><\/figure>\n\n\n\n<p>Being a position based PID, this definitely caused a disturbance.  However, the tank level is holding right at 50%.  Let&#8217;s decrease the load on the level controller to 20%, and we&#8217;ll see if the system can recover.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"329\" height=\"262\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-46.png\" alt=\"\" class=\"wp-image-9214 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-46.png 329w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-46-300x239.png 300w\" data-sizes=\"(max-width: 329px) 100vw, 329px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 329px; --smush-placeholder-aspect-ratio: 329\/262;\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Effect of Td (Derivative)<\/h4>\n\n\n\n<p>It appears that we have the loop tuned by using just P and I.  However, let&#8217;s add some derivative.  Remember that if we use derivative, Td will be 1\/8th of the natural period.  We&#8217;ll set this at .04, and observe what happens when we increase the load to 50%, then decrease the load back to 20%.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"626\" height=\"285\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png\" alt=\"\" class=\"wp-image-9215 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png 626w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47-300x137.png 300w\" data-sizes=\"(max-width: 626px) 100vw, 626px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 626px; --smush-placeholder-aspect-ratio: 626\/285;\" \/><\/figure>\n\n\n\n<p>In this case, it appears that the loop will meet it&#8217;s objective of keeping the tank level at 50%.  However, we have excessive control action with derivative.  This will cause more wear and tear on the pump.  For this loop, our best settings are to keep Kc at 1.5, Td at .33, and no derivative action.<\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-3364917506\" class=\"bryce-after-content bryce-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8316758073402323\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-8316758073402323\" \ndata-ad-slot=\"4667596182\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction to Cascading PID with ControlLogix Cascading PID is when one controller writes to the setpoint of another controller. The controller writing the setpoint is the master controller. Likewise, the PID instruction the master writes to is called the slave controller. Keep in mind that we&#8217;ve already set up the flow controller in the last <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":9215,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,410],"tags":[406,48],"class_list":{"0":"post-9190","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-controllogix","8":"category-pid","9":"tag-cascading","10":"tag-pid","11":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cascading PID - Bryce Automation<\/title>\n<meta name=\"description\" content=\"How to set up and configure Cascading PID Instructions. With a flow controller already tuned, we&#039;ll adjust a tank level controller.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cascading PID - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"How to set up and configure Cascading PID Instructions. With a flow controller already tuned, we&#039;ll adjust a tank level controller.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/\" \/>\n<meta property=\"og:site_name\" content=\"Bryce Automation\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ricky.bryce.7\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-11T21:50:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-05T10:36:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png\" \/>\n\t<meta property=\"og:image:width\" content=\"626\" \/>\n\t<meta property=\"og:image:height\" content=\"285\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ricky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Cascading PID\",\"datePublished\":\"2021-12-11T21:50:03+00:00\",\"dateModified\":\"2022-01-05T10:36:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/\"},\"wordCount\":1186,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/image-47.png\",\"keywords\":[\"Cascading\",\"PID\"],\"articleSection\":[\"ControlLogix\",\"PID\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/\",\"name\":\"Cascading PID - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/image-47.png\",\"datePublished\":\"2021-12-11T21:50:03+00:00\",\"dateModified\":\"2022-01-05T10:36:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"How to set up and configure Cascading PID Instructions. With a flow controller already tuned, we'll adjust a tank level controller.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/image-47.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/image-47.png\",\"width\":626,\"height\":285,\"caption\":\"Derivative effect\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2021\\\/12\\\/11\\\/cascading-pid\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cascading PID\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/\",\"name\":\"Bryce Automation\",\"description\":\"Automating Home and Industry...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bryceautomation.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\",\"name\":\"Ricky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/a8f\\\/a8fe6bf79d292b388ffee281ccb12488x96.jpg\",\"caption\":\"Ricky\"},\"sameAs\":[\"http:\\\/\\\/bryceautomation.com\",\"https:\\\/\\\/www.facebook.com\\\/ricky.bryce.7\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ricky-bryce-4367a416\\\/\"],\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/author\\\/ricky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cascading PID - Bryce Automation","description":"How to set up and configure Cascading PID Instructions. With a flow controller already tuned, we'll adjust a tank level controller.","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:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/","og_locale":"en_US","og_type":"article","og_title":"Cascading PID - Bryce Automation","og_description":"How to set up and configure Cascading PID Instructions. With a flow controller already tuned, we'll adjust a tank level controller.","og_url":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2021-12-11T21:50:03+00:00","article_modified_time":"2022-01-05T10:36:04+00:00","og_image":[{"width":626,"height":285,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png","type":"image\/png"}],"author":"Ricky","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Cascading PID","datePublished":"2021-12-11T21:50:03+00:00","dateModified":"2022-01-05T10:36:04+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/"},"wordCount":1186,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png","keywords":["Cascading","PID"],"articleSection":["ControlLogix","PID"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/","url":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/","name":"Cascading PID - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png","datePublished":"2021-12-11T21:50:03+00:00","dateModified":"2022-01-05T10:36:04+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"How to set up and configure Cascading PID Instructions. With a flow controller already tuned, we'll adjust a tank level controller.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2021\/12\/image-47.png","width":626,"height":285,"caption":"Derivative effect"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2021\/12\/11\/cascading-pid\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Cascading PID"}]},{"@type":"WebSite","@id":"https:\/\/bryceautomation.com\/#website","url":"https:\/\/bryceautomation.com\/","name":"Bryce Automation","description":"Automating Home and Industry...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bryceautomation.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7","name":"Ricky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","url":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/wphb-cache\/gravatar\/a8f\/a8fe6bf79d292b388ffee281ccb12488x96.jpg","caption":"Ricky"},"sameAs":["http:\/\/bryceautomation.com","https:\/\/www.facebook.com\/ricky.bryce.7","https:\/\/www.linkedin.com\/in\/ricky-bryce-4367a416\/"],"url":"https:\/\/bryceautomation.com\/index.php\/author\/ricky\/"}]}},"_links":{"self":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/9190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/comments?post=9190"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/9190\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/9215"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=9190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=9190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=9190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}