{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains material from [cbe30338-2021](https://jckantor.github.io/cbe30338-2021);\n", "content is available [on Github](https://github.com/jckantor/cbe30338-2021.git).*\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [3.1 Case Study: Thermal Cycling for PCR](https://jckantor.github.io/cbe30338-2021/03.01-Case-Study-Thermal-Cycling-PCR.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [3.3 Relay Control](https://jckantor.github.io/cbe30338-2021/03.03-Relay-Control.html) >
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 1,
"link": "[3.2 Setpoints](https://jckantor.github.io/cbe30338-2021/03.02-Setpoints.html#3.2-Setpoints)",
"section": "3.2 Setpoints"
}
},
"source": [
"# 3.2 Setpoints\n",
"\n",
"Setpoints are functions of time that establish target values for key control variables. This notebook describes typical nomenclature used in describing setpoint functions, and shows how to creatd setpoint functions in Python."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.2.1 Setpoint profiles](https://jckantor.github.io/cbe30338-2021/03.02-Setpoints.html#3.2.1-Setpoint-profiles)",
"section": "3.2.1 Setpoint profiles"
}
},
"source": [
"## 3.2.1 Setpoint profiles\n",
"\n",
"Example descriptions from commercial vendors:\n",
"\n",
"* [West Control Solutions: Understanding Setpoint Ramping and Ramp/Soak Temperature Control](https://www.west-cs.com/news/understanding-setpoint-ramping-and-rampsoak-temperature-control/)\n",
"* [Eurotherm: Ramp and Soak Applications](https://www.eurotherm.com/us/temperature-control-applications-us/ramp-and-soak-applications/)\n",
"* [Allen-Bradley: Introduction to the Allen Bradley Ramp/Soak Controller](https://control.com/technical-articles/Introduction-to-the-Allen-Bradley-Ramp-Soak-Controller-System/)\n",
"* [Wikipedia: Thermal Profiling](https://en.wikipedia.org/wiki/Thermal_profiling)\n",
"\n",
"Common descriptions for setpoint functions include so-called **step** changes, and **ramp** and **soak** periods.\n",
"\n",
"* A **step** change is an discontinuous change in setpoint value occuring as specified point in time. An example is specifying a setpoint change from 45 deg C to 65 deg C at a specified point in time.\n",
"* A **soak** (or **dwell**) is a specified period of time over which the setpoint is held a constant, specified value.\n",
"* A **ramp** is a specified period of time over which the setpoint changes at a constant rate from a specified starting value to a specified final value.\n",
"* The **ramp rate** is the rate of change in a setpoint ramp. These may have positive or negative values."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.2.1 Setpoint profiles](https://jckantor.github.io/cbe30338-2021/03.02-Setpoints.html#3.2.1-Setpoint-profiles)",
"section": "3.2.1 Setpoint profiles"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
\n",
"\n",
"**Study Question:** Classify all of the segments in the sample setpoint profile.\n",
"\n",
"**Study Question:** What is the ramp rate of the first ramp in the example above.\n",
"\n",
"**Study Question:** Modify the data in the above example to remove the step. Replace it with a single raamp from the initial condition to the soak period that begins at t=170 at a temperature of 170C.\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.2.2 Creating setpoint functions](https://jckantor.github.io/cbe30338-2021/03.02-Setpoints.html#3.2.2-Creating-setpoint-functions)",
"section": "3.2.2 Creating setpoint functions"
}
},
"source": [
"## 3.2.2 Creating setpoint functions\n",
"\n",
"For feedback control we would like functions that return the value of a setpoint for any point in time. Functions are in the form $SP_1(t)$ and $SP_2(t)$, for example, are straightfoward to use inside in control applications. \n",
"\n",
"In the section we show how to write a function that accepts points defining a piecewise linear setpoint profile, then produce a function to compute the setpoint for any point in time."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.2.2.1 Specifying piecewise linear setpoint profiles](https://jckantor.github.io/cbe30338-2021/03.02-Setpoints.html#3.2.2.1-Specifying-piecewise-linear-setpoint-profiles)",
"section": "3.2.2.1 Specifying piecewise linear setpoint profiles"
}
},
"source": [
"### 3.2.2.1 Specifying piecewise linear setpoint profiles\n",
"\n",
"Describiing the setpoint as a series of a step/ramp/soak periods naturally leads a piecewise linear function. The start and end of each line segment are spceified by (time, value) pairs. Ordering these points into a list provides a straightforward specification of the setpoint, \n",
"\n",
"Here we show the points for a typical setpoint."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.2.2.1 Specifying piecewise linear setpoint profiles](https://jckantor.github.io/cbe30338-2021/03.02-Setpoints.html#3.2.2.1-Specifying-piecewise-linear-setpoint-profiles)",
"section": "3.2.2.1 Specifying piecewise linear setpoint profiles"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[
\n",
"\n",
"**Study Question:** Change the protocol to include 30 thermal cycles, then create the setpoint function with `PCR_setpoint()` and plot the results.\n",
"\n",
"**Study Question:** To better reflect the unequal heating and cooling rates available in most PCR devices, modify `PCR_setpoint()` to provide differing ramp rates for positive going and negative going ramps. Demonstrate the result using a postive ramp_rate of 2.5 degC/sec and a negative ramp_rate of -0.5 degC/sec.\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"< [3.1 Case Study: Thermal Cycling for PCR](https://jckantor.github.io/cbe30338-2021/03.01-Case-Study-Thermal-Cycling-PCR.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [3.3 Relay Control](https://jckantor.github.io/cbe30338-2021/03.03-Relay-Control.html) >"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}