{"id":9892,"date":"2022-01-14T14:04:55","date_gmt":"2022-01-14T14:04:55","guid":{"rendered":"https:\/\/bryceautomation.com\/?p=9892"},"modified":"2022-01-14T15:33:53","modified_gmt":"2022-01-14T15:33:53","slug":"independent-pid-with-controllogix","status":"publish","type":"post","link":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/","title":{"rendered":"Independent PID with ControlLogix"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Introduction to Independent PID with ControlLogix<\/h3>\n\n\n\n<p>In this section we&#8217;ll set up an Introduction to Independent PID with ControlLogix.  Realize the equation is different than the dependent mode.  For detailed information on the PID instruction, visit the<a href=\"https:\/\/literature.rockwellautomation.com\/idc\/groups\/literature\/documents\/rm\/1756-rm003_-en-p.pdf\"> ControlLogix Instruction Set Reference Manual.<\/a>  The PID instruction is in chapter 13.<\/p><div id=\"bryce-3312387231\" 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>With an Independent (traditional) PID, each componenet of P, I, and D are calculated separately.<\/p>\n\n\n\n<p>Consider the following process:  We want to maintain a constant tension on our product.  We will send a torque command to the equipment to maintain the tension at a specific setpoint.  We&#8217;ll use our <a href=\"https:\/\/bryceautomation.com\/index.php\/2021\/11\/25\/arduino-pid-simulator\/\">PID Simulator <\/a>to emulate this process.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"354\" height=\"147\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png\" alt=\"\" class=\"wp-image-9893 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png 354w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5-300x125.png 300w\" data-sizes=\"(max-width: 354px) 100vw, 354px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 354px; --smush-placeholder-aspect-ratio: 354\/147;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Finding Raw Values for Independent PID with ControlLogix<\/h3>\n\n\n\n<p>Before we begin, we need to know what our raw values are for torque and tension.  There are several ways to do this.  <\/p>\n\n\n\n<p>First, we could refer to the product documentation.  We would need to know what signal the transducer provides to the analog module.  Also, we need to know the raw data the module provides to our controller tag for that signal.  We can use the module user manual for this.  Likewise, we need to know what signal range our torque controller expects.  Then, we use the manual to figure what raw value we  need to send to the analog output module to provide this signal.<\/p>\n\n\n\n<p>Secondly, if we already know the voltage or current range of our field devices, we can scale the data on board the analog modules.  The SLC modules do not support this.  However, if you have ControlLogix modules, simply go to the properties of the modules to configure the scaling for each channel.<\/p>\n\n\n\n<p>Thirdly, we could simply provide maximum pressure to our transducer, and see what value appears in the controller tag.  Be careful experimenting with different values for output modules though.  You could damage your equipment or cause harm to other employees.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Find the Raw Max<\/h4>\n\n\n\n<p>At this point, we&#8217;ll simply press the test button on our simulator to see what values we get.  Press test once for 0% tension.  Press test again to see 100% tension.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"294\" height=\"65\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-6.png\" alt=\"\" class=\"wp-image-9896 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 294px; --smush-placeholder-aspect-ratio: 294\/65;\" \/><\/figure>\n\n\n\n<p>As you can see, our raw max for tension is 6712.  Using the user manual, we will know the maximum value for output Torque is 32767.<\/p>\n\n\n\n<p>Note:  If your signal is 4ma to 20ma, be sure to write down both the min and max values.  They will likely not be zero.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure the Task<\/h3>\n\n\n\n<p>Set up a new task named &#8220;PIDTask&#8221;.  Since the PID needs a stable time base, we&#8217;ll make this a periodic task, and set the period to 10ms.  Likewise, set up a new program named &#8220;PIDProgram&#8221;.  The PIDProgram will contain a MainRoutine, and a PIDRoutine.<\/p>\n\n\n\n<p>Go to the properties of the PIDProgram, and be sure to configure your MainRoutine as &#8220;Main&#8221;.  Your Task setup should be similar to this example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"166\" height=\"90\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-9.png\" alt=\"\" class=\"wp-image-9901 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 166px; --smush-placeholder-aspect-ratio: 166\/90;\" \/><\/figure>\n\n\n\n<p>Add a JSR instruction into the MainRoutine, so the subroutine will execute.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"397\" height=\"69\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-10.png\" alt=\"\" class=\"wp-image-9902 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-10.png 397w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-10-300x52.png 300w\" data-sizes=\"(max-width: 397px) 100vw, 397px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 397px; --smush-placeholder-aspect-ratio: 397\/69;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Scaling Analog Data<\/h3>\n\n\n\n<p>This step is not required.  The PID instruction itself can scale data.  However, it does make the PID easier to understand if we think in terms of percent instead of raw data.<\/p>\n\n\n\n<p>If your raw data at 0% is not zero, then your math will be a little more complex.  You can use the CPT instruction to apply an offset and a multiplier.  However, if zero raw data represents 0%, we can simply use MUL and DIV instructions for our scaling.  Create a tag called &#8220;TensionPV&#8221;.  Setup your DIV instruction in the PIDRoutine as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"285\" height=\"153\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-7.png\" alt=\"\" class=\"wp-image-9898 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 285px; --smush-placeholder-aspect-ratio: 285\/153;\" \/><\/figure>\n\n\n\n<p>Likewise, we need to scale the torque.  Create a tag called &#8220;TorquePV&#8221;.  It&#8217;s important to realize we are scaling backwards this time.  We are scaling from percent back to raw data.  This time, we&#8217;ll use the MUL instruction.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"195\" height=\"180\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-8.png\" alt=\"\" class=\"wp-image-9899 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 195px; --smush-placeholder-aspect-ratio: 195\/180;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">PID Instruction<\/h3>\n\n\n\n<p>At last we&#8217;ll add the PID Instruction to the PIDRoutine.  We&#8217;ll create a tag called &#8220;TensionerPID&#8221;.  Configure the PID as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"204\" height=\"205\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-11.png\" alt=\"\" class=\"wp-image-9904 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-11.png 204w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-11-150x150.png 150w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-11-144x144.png 144w\" data-sizes=\"(max-width: 204px) 100vw, 204px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 204px; --smush-placeholder-aspect-ratio: 204\/205;\" \/><\/figure>\n\n\n\n<p>The process variable reads our tension.  We are not using Tieback.  This would be an output setting when in manual mode.  We are not using cascading loops, so this is not a master.  The inhold bit and inhold value is for bumpless restart.  We are not using these values.  Set them at 0.  Obviously, the setpoint is our desired tension reading.  The process variable, and output% simply display the values of our current tension and torque.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure the Independent PID with ControlLogix<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">Tuning Tab<\/h4>\n\n\n\n<p>Press the Ellipsis (three dots) to get into the configuration screen of the PID instruction.   Set up the &#8220;Tuning&#8221; tab as follows.  We&#8217;ll start with a setpoint of 75%, and a controller gain (Kp) of 1.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-12.png\" alt=\"\" class=\"wp-image-9906 lazyload\" width=\"458\" height=\"273\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-12.png 458w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-12-300x179.png 300w\" data-sizes=\"(max-width: 458px) 100vw, 458px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 458px; --smush-placeholder-aspect-ratio: 458\/273;\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Configuration Tab<\/h4>\n\n\n\n<p>Next, go to the &#8220;Configuration Tab&#8221;.  We&#8217;ll be using the Independent PID equation in this section.  Our Control Action is reverse acting (SP-PV)  This means that our error is positive if the process variable is below the setpoint.  Remember that we set up the PIDTask to execute every 10ms.  Therefore, we set our loop update time to be .01 Seconds.  The high limit of your Control Variable is 100%.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"481\" height=\"294\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-13.png\" alt=\"\" class=\"wp-image-9907 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-13.png 481w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-13-300x183.png 300w\" data-sizes=\"(max-width: 481px) 100vw, 481px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 481px; --smush-placeholder-aspect-ratio: 481\/294;\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Scaling Tab<\/h4>\n\n\n\n<p>At this point, we&#8217;ll go to the &#8220;Scaling&#8221; Tab.  All of our values will scale from 0 to 100%.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"476\" height=\"304\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-14.png\" alt=\"\" class=\"wp-image-9908 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-14.png 476w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-14-300x192.png 300w\" data-sizes=\"(max-width: 476px) 100vw, 476px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 476px; --smush-placeholder-aspect-ratio: 476\/304;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Trending<\/h3>\n\n\n\n<p>At this point, we need to set up a trend chart.  This allows us to monitor the response of any gain changes in our PID.<\/p>\n\n\n\n<p>Right click the &#8220;Trends&#8221; Folder in your Controller Organizer window.  Create a new trend chart.  For this example, a sample period of 100ms is sufficient.  If your process is very fast, you might leave your sample period at 10ms.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"327\" height=\"182\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-15.png\" alt=\"\" class=\"wp-image-9910 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-15.png 327w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-15-300x167.png 300w\" data-sizes=\"(max-width: 327px) 100vw, 327px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 327px; --smush-placeholder-aspect-ratio: 327\/182;\" \/><\/figure>\n\n\n\n<p>Click &#8220;Next&#8221;, and add your TensionerPID.SP, PV, and OUT as your tags to trend.  Next click &#8220;Finish&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"144\" height=\"94\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-16.png\" alt=\"\" class=\"wp-image-9911 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 144px; --smush-placeholder-aspect-ratio: 144\/94;\" \/><\/figure>\n\n\n\n<p>Open your trend chart, then right click the chart to go to the chart properties.  Set your X Axis for a span of 2 minutes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"297\" height=\"186\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-17.png\" alt=\"\" class=\"wp-image-9912 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 297px; --smush-placeholder-aspect-ratio: 297\/186;\" \/><\/figure>\n\n\n\n<p>At this point, go to the Y Axis tab.  Configure the Y Axis (Scaling) to use the Preset min\/max settings from the PENS Tab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"349\" height=\"197\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-18.png\" alt=\"\" class=\"wp-image-9913 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-18.png 349w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-18-300x169.png 300w\" data-sizes=\"(max-width: 349px) 100vw, 349px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 349px; --smush-placeholder-aspect-ratio: 349\/197;\" \/><\/figure>\n\n\n\n<p>At last, go to the &#8220;Pens&#8221; Tab, and set up your preferences for each pen.  For consistency with this document, the setpoint is blue.  Our Process Variable is green.  The Control Variable is red.  Be sure the Min\/Max for each pen is 0 to 100%.  I&#8217;m setting the width to 2 for better visibility on the trend chart.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"392\" height=\"146\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-19.png\" alt=\"\" class=\"wp-image-9914 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-19.png 392w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-19-300x112.png 300w\" data-sizes=\"(max-width: 392px) 100vw, 392px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 392px; --smush-placeholder-aspect-ratio: 392\/146;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Tuning the Independent PID with ControlLogix<\/h3>\n\n\n\n<p>Finally, we are read to tune our loop.  Recall that our controller gain is 1, and integral and derivative are at zero.  We&#8217;ll use Allen Bradley&#8217;s rules of thumb for tuning this loop.  Our goal is to increase Kp until the loop becomes unstable.  At that point, we&#8217;ll record the natural period of the oscillations.  This is the number of seconds it takes for an oscillation to complete one cycle.  At this point, we&#8217;ll cut Kp in half, and use the natural period to calculate a starting point for the other tuning parameters.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Controller Gain (Kp)<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Kp=1<\/h5>\n\n\n\n<p>We&#8217;ll start with a controller gain (Kp) at 1.  What this means is that if the error increases by 1%, then the output will also increase by 1%.  Our error times the Kp will be the output.  Remember our goal is to find the value of Kp that causes the loop to become unstable. Be sure to click &#8220;Run&#8221; on your trend chart.<\/p>\n\n\n\n<p>We need to perform a step change.  Bumping the process allows us to see the results of our tuning parameters.  Change the setpoint to 50.  When the process variable settles, change the setpoint back to 75.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"449\" height=\"164\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-20.png\" alt=\"\" class=\"wp-image-9917 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-20.png 449w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-20-300x110.png 300w\" data-sizes=\"(max-width: 449px) 100vw, 449px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 449px; --smush-placeholder-aspect-ratio: 449\/164;\" \/><\/figure>\n\n\n\n<p>As you can see, our loop does stabilize.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Kp=1.25<\/h5>\n\n\n\n<p>Let&#8217;s try the same procedure with Kp set at 1.25.<\/p>\n\n\n\n<p>As you can see, even though the loop became more unstable, it did stabilize.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"663\" height=\"134\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-21.png\" alt=\"\" class=\"wp-image-9918 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-21.png 663w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-21-300x61.png 300w\" data-sizes=\"(max-width: 663px) 100vw, 663px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 663px; --smush-placeholder-aspect-ratio: 663\/134;\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Kp=1.5<\/h5>\n\n\n\n<p>Let&#8217;s try Kp=1.5<\/p>\n\n\n\n<p>Out loop is now basically unstable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"229\" height=\"76\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-22.png\" alt=\"\" class=\"wp-image-9919 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 229px; --smush-placeholder-aspect-ratio: 229\/76;\" \/><\/figure>\n\n\n\n<p>At this point, we record the natural period.  This is 12 seconds.  Also, we&#8217;ll cut Kp in half.  Our new value for Kp is .75<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Integral Gain (Ki)<\/h4>\n\n\n\n<p>You noticed above that with Kp only, we did not achieve our setpoint.  In some cases, we are very far from it.   However, Kp has done what it&#8217;s designed to do.  It will provide an output based on error.  If we did achieve the setpoint with Kp only, then there would be no error.  Our output would have gone to zero.  This is where integral comes in.  Notice the units for our integral.  This is in repeats per second.   Therefore a higher value of Ki will produce a faster response time.  However, if we set Ki too high, the loop becomes unstable again.  <\/p>\n\n\n\n<p>A good rule of thumb in this case is to use the following formula:  Ki=Kp\/natural period in seconds)  This would be .75\/12, or .0625.  Set Ki to .0625 with Kp set at .75.  Wait for the Process variable to settle.  Change your setpoint.  Ensure the process variable will always achieve the setpoint.<\/p>\n\n\n\n<p>Obviously, our settings do work for a SP of 75.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"531\" height=\"177\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-24.png\" alt=\"\" class=\"wp-image-9921 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-24.png 531w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-24-300x100.png 300w\" data-sizes=\"(max-width: 531px) 100vw, 531px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 531px; --smush-placeholder-aspect-ratio: 531\/177;\" \/><\/figure>\n\n\n\n<p>Change your setpoint to 50.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"305\" height=\"143\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-25.png\" alt=\"\" class=\"wp-image-9922 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-25.png 305w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-25-300x141.png 300w\" data-sizes=\"(max-width: 305px) 100vw, 305px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 305px; --smush-placeholder-aspect-ratio: 305\/143;\" \/><\/figure>\n\n\n\n<p>We also get a great response time.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Calculate Derivative (Kd)<\/h4>\n\n\n\n<p>We don&#8217;t always use derivative.  In most cases, we can get by with just Proportional, and Integral.  Derivative opposes a change in the process variable (or error depending on the setting).   Derivative is based on the rate of change.  In other words, if the process variable drops quickly, the derivative action will immediately raise the control variable.  Derivative predicts what our error will be in the future.  We adjust how far into the future that our derivative will look.  Obviously, the further we look into the future for a given slope, the more our difference of error will be.<\/p>\n\n\n\n<p>If you decide to use derivative, a good rule of thumb is to use this formula for a starting point.  Kd = Kp*(one eighth of natural period).  In this case, our Kd is 1.125<\/p>\n\n\n\n<p>Let&#8217;s enter this number as our derivative gain.  Try your load transitions again to test the result.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"375\" height=\"140\" data-src=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-26.png\" alt=\"\" class=\"wp-image-9924 lazyload\" data-srcset=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-26.png 375w, https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-26-300x112.png 300w\" data-sizes=\"(max-width: 375px) 100vw, 375px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 375px; --smush-placeholder-aspect-ratio: 375\/140;\" \/><\/figure>\n\n\n\n<p>As you can see, we still get a good response, however our process variable does move a bit more slow.  This is because derivative opposes a change in the process variable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Summary<\/h3>\n\n\n\n<p>To summarize, with an independent mode PID, each components is calculated separately.  A rule of thumb is to run Kp up until the loop becomes unstable.  At this point, record the natural period of the oscillations.  Cut Kp in half.  Ki will start at Kp\/natural period).  Kd will start at Kp*(1\/8th of the natural period).<\/p>\n\n\n\n<p>For more information, visit the <a href=\"https:\/\/bryceautomation.com\/index.php\/category\/pid\/\">PID Category Page!<\/a><\/p>\n\n\n\n<p>&#8212; Ricky Bryce<\/p>\n<div id=\"bryce-3689469684\" 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 Independent PID with ControlLogix In this section we&#8217;ll set up an Introduction to Independent PID with ControlLogix. Realize the equation is different than the dependent mode. For detailed information on the PID instruction, visit the ControlLogix Instruction Set Reference Manual. The PID instruction is in chapter 13. With an Independent (traditional) PID, each <a class=\"moretag btn btn-primary\" href=\"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/\">Read More \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":9893,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,410],"tags":[427,48,429,428],"class_list":{"0":"post-9892","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-controllogix","8":"category-pid","9":"tag-independent","10":"tag-pid","11":"tag-tension","12":"tag-torque","13":"czr-hentry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Independent PID with ControlLogix - Bryce Automation<\/title>\n<meta name=\"description\" content=\"Tuning an Independent PID with ControlLogix. How to set Proportional, Integral, and Derivative gain for a fast and stable response.\" \/>\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\/2022\/01\/14\/independent-pid-with-controllogix\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Independent PID with ControlLogix - Bryce Automation\" \/>\n<meta property=\"og:description\" content=\"Tuning an Independent PID with ControlLogix. How to set Proportional, Integral, and Derivative gain for a fast and stable response.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/\" \/>\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=\"2022-01-14T14:04:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-14T15:33:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png\" \/>\n\t<meta property=\"og:image:width\" content=\"354\" \/>\n\t<meta property=\"og:image:height\" content=\"147\" \/>\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\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/\"},\"author\":{\"name\":\"Ricky\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"headline\":\"Independent PID with ControlLogix\",\"datePublished\":\"2022-01-14T14:04:55+00:00\",\"dateModified\":\"2022-01-14T15:33:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/\"},\"wordCount\":1742,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/image-5.png\",\"keywords\":[\"Independent\",\"PID\",\"Tension\",\"Torque\"],\"articleSection\":[\"ControlLogix\",\"PID\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/\",\"name\":\"Independent PID with ControlLogix - Bryce Automation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/image-5.png\",\"datePublished\":\"2022-01-14T14:04:55+00:00\",\"dateModified\":\"2022-01-14T15:33:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/#\\\/schema\\\/person\\\/5d5b0f6f6ad768f1ee52968338e63af7\"},\"description\":\"Tuning an Independent PID with ControlLogix. How to set Proportional, Integral, and Derivative gain for a fast and stable response.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/image-5.png\",\"contentUrl\":\"https:\\\/\\\/bryceautomation.com\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/image-5.png\",\"width\":354,\"height\":147,\"caption\":\"Torque\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bryceautomation.com\\\/index.php\\\/2022\\\/01\\\/14\\\/independent-pid-with-controllogix\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bryceautomation.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Independent PID with ControlLogix\"}]},{\"@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":"Independent PID with ControlLogix - Bryce Automation","description":"Tuning an Independent PID with ControlLogix. How to set Proportional, Integral, and Derivative gain for a fast and stable response.","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\/2022\/01\/14\/independent-pid-with-controllogix\/","og_locale":"en_US","og_type":"article","og_title":"Independent PID with ControlLogix - Bryce Automation","og_description":"Tuning an Independent PID with ControlLogix. How to set Proportional, Integral, and Derivative gain for a fast and stable response.","og_url":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/","og_site_name":"Bryce Automation","article_author":"https:\/\/www.facebook.com\/ricky.bryce.7","article_published_time":"2022-01-14T14:04:55+00:00","article_modified_time":"2022-01-14T15:33:53+00:00","og_image":[{"width":354,"height":147,"url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.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\/2022\/01\/14\/independent-pid-with-controllogix\/#article","isPartOf":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/"},"author":{"name":"Ricky","@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"headline":"Independent PID with ControlLogix","datePublished":"2022-01-14T14:04:55+00:00","dateModified":"2022-01-14T15:33:53+00:00","mainEntityOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/"},"wordCount":1742,"commentCount":0,"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png","keywords":["Independent","PID","Tension","Torque"],"articleSection":["ControlLogix","PID"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/","url":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/","name":"Independent PID with ControlLogix - Bryce Automation","isPartOf":{"@id":"https:\/\/bryceautomation.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#primaryimage"},"image":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#primaryimage"},"thumbnailUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png","datePublished":"2022-01-14T14:04:55+00:00","dateModified":"2022-01-14T15:33:53+00:00","author":{"@id":"https:\/\/bryceautomation.com\/#\/schema\/person\/5d5b0f6f6ad768f1ee52968338e63af7"},"description":"Tuning an Independent PID with ControlLogix. How to set Proportional, Integral, and Derivative gain for a fast and stable response.","breadcrumb":{"@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#primaryimage","url":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png","contentUrl":"https:\/\/bryceautomation.com\/wp-content\/uploads\/2022\/01\/image-5.png","width":354,"height":147,"caption":"Torque"},{"@type":"BreadcrumbList","@id":"https:\/\/bryceautomation.com\/index.php\/2022\/01\/14\/independent-pid-with-controllogix\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bryceautomation.com\/"},{"@type":"ListItem","position":2,"name":"Independent PID with ControlLogix"}]},{"@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\/9892","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=9892"}],"version-history":[{"count":0,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/posts\/9892\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media\/9893"}],"wp:attachment":[{"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/media?parent=9892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/categories?post=9892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bryceautomation.com\/index.php\/wp-json\/wp\/v2\/tags?post=9892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}