{ "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", "< [4.0 Process Analytics](https://jckantor.github.io/cbe30338-2021/04.00-Process-Analytics.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [4.2 State Estimation](https://jckantor.github.io/cbe30338-2021/04.02-State-Estimation.html) >

\"Open

\"Download\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# IMPORT DATA FILES USED BY THIS NOTEBOOK\n", "import os, requests\n", "\n", "file_links = [(\"data/saved_data.csv\", \"https://jckantor.github.io/cbe30338-2021/data/saved_data.csv\")]\n", "\n", "# This cell has been added by nbpages. Run this cell to download data files required for this notebook.\n", "\n", "for filepath, fileurl in file_links:\n", " stem, filename = os.path.split(filepath)\n", " if stem:\n", " if not os.path.exists(stem):\n", " os.mkdir(stem)\n", " if not os.path.isfile(filepath):\n", " with open(filepath, 'wb') as f:\n", " response = requests.get(fileurl)\n", " f.write(response.content)\n" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 1, "link": "[4.1 Data/Process/Operational Historian](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1-Data/Process/Operational-Historian)", "section": "4.1 Data/Process/Operational Historian" } }, "source": [ "# 4.1 Data/Process/Operational Historian" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[4.1.1 Introduction](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.1-Introduction)", "section": "4.1.1 Introduction" } }, "source": [ "## 4.1.1 Introduction" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[4.1.1.1 Terminology](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.1.1-Terminology)", "section": "4.1.1.1 Terminology" } }, "source": [ "### 4.1.1.1 Terminology\n", "\n", "* **DCS**: Distributed Control System\n", "\n", "* **Database**: An organized collection of data that is stored and accessed electronically. Databases are a major industry and one of the most significant technologies underpinning the modern global economy.\n", "\n", " * **Ralational database**: Data organized as linked collections of tables comprised of rows and columns. Structured Query Language (SQL) is a specialized language for writing and querying relational databases. \n", " * **NoSQL database**: Typically organized as key-value pairs, NoSQL databases encompass a broad range of technologies used in modern web applications and extremely large scale databases.\n", " * **Time-series database**: Data organized in time series consisting of time-value pairs, often organized as traces, curves, or trends. Typically used in industrial applications.\n", " \n", " \n", "* **[Data | Operational | Process] Historian**: A time-series database used to store and access operational process data. " ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[4.1.1.2 Major Vendors of Data Historians](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.1.2-Major-Vendors-of-Data-Historians)", "section": "4.1.1.2 Major Vendors of Data Historians" } }, "source": [ "### 4.1.1.2 Major Vendors of Data Historians\n", "\n", "Data historians is about a $1B/year market globally, poised to grow much larger with the emerging **Industrial Internet of Things (IIoT)** market.\n", "\n", "* GE, IBM, Hitachi-ABB, Rockwell Automation, Emerson, Honeywell, Siemens, AVEVA, OSIsoft, ICONICS, Yokogawa, PTC, Inductive Automation, Canary Labs, Open Automation Software, InfluxData, Progea, Kx Systems, SORBA, Savigent Software, Automsoft, LiveData Utilities, Industrial Video & Control, Aspen Technology, and COPA-DATA" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[4.1.1.3 Example: OSIsoft PI System](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.1.3-Example:-OSIsoft-PI-System)", "section": "4.1.1.3 Example: OSIsoft PI System" } }, "source": [ "### 4.1.1.3 Example: OSIsoft PI System\n", "\n", "* One of the market leaders is OSIsoft which markets their proprietary PI system. Founded in 1980, OSIsoft now has 1,400 employees and recently announced sale of the company for $5B to AVENA.\n", "\n", "* The PI system is integrated suite of tools supporting the storage and retreival of process data in a time-series data base.\n", "\n", "![](http://www.automatedresults.com/images/arpidiagram.png)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[4.1.1.4 Process Analytics](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.1.4-Process-Analytics)", "section": "4.1.1.4 Process Analytics" } }, "source": [ "### 4.1.1.4 Process Analytics\n", "\n", "Process analytics refers to analytical tools that use the data historian to provide usable information about the underlying processes. " ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[4.1.2 The tclab Data Historian](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2-The-tclab-Data-Historian)", "section": "4.1.2 The tclab Data Historian" } }, "source": [ "## 4.1.2 The tclab Data Historian\n", "\n", "The tclab Python library support the Temperature Control Lab includes a very basic and no-frills implementation of a time-series data base. The purposes of the data historian are to \n", "\n", "* enable the collection and display of data durinig the course of developing control strategies, and\n", "* enable post-experiment analysis using standard Python libraries such as Pandas.\n", "\n", "Documentatiion is available for the tclab [Historian](https://tclab.readthedocs.io/en/latest/notebooks/05_TCLab_Historian.html) and associated [Plotter](https://tclab.readthedocs.io/en/latest/notebooks/06_TCLab_Plotter.html) modules.\n", "\n", "Historian is implemented using [SQLite](https://www.sqlite.org/index.html), a small, self-contained SQL data system in the public domain. SQLite was originally developed in 2000 by D. Richard Hipp who was designing software for a damage-control systems used in the U.S. Navy aboard gui}ded missile destroyers. Since then it has become widely used in embedded systems including most laptops, smartphones, and browsers. If you used Apple photos, messaging on your smartphone, GPS units in your car, then you've used SQLite. It estimated there are over 1 trillion SQLite databases in active use. Much of the success is to due to the licensing terms (free!) and an extraordinarily level of automated code testing assuring a high level of reliability.\n", "\n", "Below we will introduce useful capabilities of the Historian that will prove useful as we explore more sophisticated control algorithms and strategies.\n", "\n", "* Data logging\n", "* Acessing data" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[4.1.2.1 Data Logging](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1-Data-Logging)", "section": "4.1.2.1 Data Logging" } }, "source": [ "### 4.1.2.1 Data Logging" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.1 Creating a log](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.1-Creating-a-log)", "section": "4.1.2.1.1 Creating a log" } }, "source": [ "#### 4.1.2.1.1 Creating a log\n", "\n", "An instance of a data historian is created by providing a list of data sources. An instance of a `lab` created by `TCLab()` provides a default list of sources in `lab.sources`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.1 Creating a log](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.1-Creating-a-log)", "section": "4.1.2.1.1 Creating a log" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TCLab version 0.4.9\n", "Simulated TCLab\n", "TCLab Model disconnected successfully.\n" ] } ], "source": [ "from tclab import setup, clock, Historian\n", "\n", "TCLab = setup(connected=False, speedup=60)\n", "\n", "with TCLab() as lab:\n", " h = Historian(lab.sources) # <= creates an instance of an historian with default lab.sources\n", " lab.Q1(100)\n", " for t in clock(600):\n", " h.update(t) # <= updates the historian at time t\n", " \n", "# note that the historian lives on after we're finished with lab" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.2 Accessing Data using `.columns` and `.fields`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.2-Accessing-Data-using-`.columns`-and-`.fields`)", "section": "4.1.2.1.2 Accessing Data using `.columns` and `.fields`" } }, "source": [ "#### 4.1.2.1.2 Accessing Data using `.columns` and `.fields`\n", "\n", "There are several approaches to accessing the data that has been recorded using the historian. Perhaps the most straightforward is to access the 'tags' with `h.columns` and to access the values with `h.fields` as shown here." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.2 Accessing Data using `.columns` and `.fields`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.2-Accessing-Data-using-`.columns`-and-`.fields`)", "section": "4.1.2.1.2 Accessing Data using `.columns` and `.fields`" } }, "outputs": [ { "data": { "text/plain": [ "['Time', 'T1', 'T2', 'Q1', 'Q2']" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# columns property consists of all data being logged\n", "h.columns" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.2 Accessing Data using `.columns` and `.fields`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.2-Accessing-Data-using-`.columns`-and-`.fields`)", "section": "4.1.2.1.2 Accessing Data using `.columns` and `.fields`" } }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "

" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "t, T1, T2, Q1, Q1 = h.fields # <= access data using h.fields\n", "plt.plot(t, T1, t, T2) # <= plot data " ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.3 Accessing Data by Name `logdict`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.3-Accessing-Data-by-Name-`logdict`)", "section": "4.1.2.1.3 Accessing Data by Name `logdict`" } }, "source": [ "#### 4.1.2.1.3 Accessing Data by Name `logdict`\n", "\n", "Often you only need data corresponding to specific tags. You can access the data directly using `.logdict[]`." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.3 Accessing Data by Name `logdict`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.3-Accessing-Data-by-Name-`logdict`)", "section": "4.1.2.1.3 Accessing Data by Name `logdict`" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(h.logdict[\"Time\"], h.logdict[\"T2\"])" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.4 Accessing Data using `pandas`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.4-Accessing-Data-using-`pandas`)", "section": "4.1.2.1.4 Accessing Data using `pandas`" } }, "source": [ "#### 4.1.2.1.4 Accessing Data using `pandas`\n", "\n", "The Python `pandas` library provides an enormous range of commonly tools for data analysis, it is among the most widely used libraries by data scientists. Data collected by the historian can be converted to a pandas data frame with one line of code." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.4 Accessing Data using `pandas`](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.4-Accessing-Data-using-`pandas`)", "section": "4.1.2.1.4 Accessing Data using `pandas`" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
T1T2Q1Q2
Time
0.0020.949520.94951000
1.1820.627220.94951000
2.0520.949520.94951000
3.0220.949520.94951000
4.1420.949520.94951000
\n", "
" ], "text/plain": [ " T1 T2 Q1 Q2\n", "Time \n", "0.00 20.9495 20.9495 100 0\n", "1.18 20.6272 20.9495 100 0\n", "2.05 20.9495 20.9495 100 0\n", "3.02 20.9495 20.9495 100 0\n", "4.14 20.9495 20.9495 100 0" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "df = pd.DataFrame.from_records(h.log, columns=h.columns, index='Time')\n", "\n", "display(df.head())\n", "df.plot()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.5 Specifying additional sources](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.5-Specifying-additional-sources)", "section": "4.1.2.1.5 Specifying additional sources" } }, "source": [ "#### 4.1.2.1.5 Specifying additional sources\n", "\n", "As we develop increasingly complex control algorthms, we will wish to record additional data during the course of an experiment. This is done by specifying data sources. Each source is defined by a `(tag, fcn)` pair where `tag` is string label for data, and `fcn` is a function with no arguments that returns a current value. An example is \n", "\n", " ['Q1', lab.Q1]\n", " \n", "where `Q1` is the tag, and `lab.Q1()` returns the current value of heater power reported by the hardware.\n", "\n", "The following cell presents an example where two setpoints are provided for two control loops. The setpoint tags are `SP1` and `SP2`, respectively. Setpoint `SP1` is specified as a Python constant. The historian requires a function that returns the value of the which is a function of time. This has to be \n", "\n", " ['SP1', SP1\n", " " ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.1.5 Specifying additional sources](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.1.5-Specifying-additional-sources)", "section": "4.1.2.1.5 Specifying additional sources" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TCLab version 0.4.9\n", "Simulated TCLab\n", "TCLab Model disconnected successfully.\n" ] } ], "source": [ "from tclab import setup, clock, Historian\n", "\n", "# proportional control gain\n", "Kp = 4.0\n", "\n", "# setpoint 1\n", "SP1 = 30.0\n", "\n", "# setpoint function\n", "SP2 = 30.0\n", "\n", "TCLab = setup(connected=False, speedup=60)\n", "\n", "with TCLab() as lab:\n", " # add setpoint to default sources\n", " sources = lab.sources\n", " sources.append(['SP1', lambda: SP1(t)])\n", " sources.append(['SP2', lambda: SP2])\n", " h = Historian(sources)\n", " for t in clock(600):\n", " U1 = Kp*(SP1(t) - lab.T1)\n", " U2 = 100 if lab.T2 < SP2 else 0\n", " lab.Q1(U1)\n", " lab.Q2(U2)\n", " h.update(t)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[4.1.2.2 Persistence](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2-Persistence)", "section": "4.1.2.2 Persistence" } }, "source": [ "### 4.1.2.2 Persistence" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "source": [ "#### 4.1.2.2.1 Saving to a file" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [], "source": [ "h.to_csv(\"data/saved_data.csv\")" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true }, "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [ { "data": { "text/plain": [ "['Time', 'T1', 'T2', 'Q1', 'Q2', 'SP1', 'SP2']" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.columns" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1)\n", "\n", "ax[0].plot(h.logdict[\"Time\"], h.logdict[\"T1\"], h.logdict[\"Time\"], h.logdict[\"SP1\"])\n", "ax[1].plot(h.logdict[\"Time\"], h.logdict[\"T2\"], h.logdict[\"Time\"], h.logdict[\"SP2\"])" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TCLab version 0.4.9\n", "Simulated TCLab\n", "TCLab Model disconnected successfully.\n" ] } ], "source": [ "from tclab import setup, clock, Historian\n", "\n", "# proportional control gain\n", "Kp = 4.0\n", "\n", "# setpoint function\n", "def SP1(t):\n", " return 20.0 if t <= 100 else 50.0\n", "\n", "# setpoint function\n", "SP2 = 40.0\n", "\n", "TCLab = setup(connected=False, speedup=60)\n", "\n", "with TCLab() as lab:\n", " # add setpoint to default sources\n", " sources = lab.sources\n", " sources.append(['SP1', lambda: SP1(t)])\n", " sources.append(['SP2', lambda: SP2])\n", " h = Historian(sources, dbfile=\"data/tclab_historian.db\")\n", " for t in clock(600):\n", " U1 = Kp*(SP1(t) - lab.T1)\n", " U2 = 100 if lab.T2 < SP2 else 0\n", " lab.Q1(U1)\n", " lab.Q2(U2)\n", " h.update(t)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [ { "data": { "text/plain": [ "[(1, '2021-03-16 17:07:35', 164),\n", " (2, '2021-03-16 17:12:20', 593),\n", " (3, '2021-03-16 17:12:32', 301),\n", " (4, '2021-03-16 17:15:51', 592)]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.get_sessions()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "h.load_session(1)\n", "fig, ax = plt.subplots(2, 1)\n", "\n", "ax[0].plot(h.logdict[\"Time\"], h.logdict[\"T1\"], h.logdict[\"Time\"], h.logdict[\"SP1\"])\n", "ax[1].plot(h.logdict[\"Time\"], h.logdict[\"T2\"], h.logdict[\"Time\"], h.logdict[\"SP2\"])" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "nbpages": { "level": 4, "link": "[4.1.2.2.1 Saving to a file](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.2.2.1-Saving-to-a-file)", "section": "4.1.2.2.1 Saving to a file" } }, "outputs": [ { "data": { "text/plain": [ "[(1, '2021-03-16 17:12:32', 0), (2, '2021-03-16 17:16:02', 0)]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = Historian([], dbfile=\"lab4.db\")\n", "g.get_sessions()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[4.1.3 Plotter](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.3-Plotter)", "section": "4.1.3 Plotter" } }, "source": [ "## 4.1.3 Plotter\n", "\n", "The `Plotter` class provides a real-time graphical interface to an historian. It provides some simple facilities for " ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "nbpages": { "level": 2, "link": "[4.1.3 Plotter](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.3-Plotter)", "section": "4.1.3 Plotter" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAFgCAYAAADkYz66AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAxOAAAMTgF/d4wjAABHHUlEQVR4nO3dfXxcdZ33/9dn0iRtGtK0aVq0WAptBZa7ttuKBVatcNG6F4guXEWpbOWyIohw7XZXURZ3XX+wIv6AVejKdruLFBARqay6slH3at3lTlvacrdCQYihFUpvE9I2dzOf64+ZaSeZSTLJnMk5mXk/H48+mjnnzDmf+eQ0+fT7Pd/v19wdEREREYmmWNgBiIiIiEj/VKyJiIiIRJiKNREREZEIU7EmIiIiEmEq1kREREQiTMWaiIiISISpWBMRERGJsDFhBxC0yspKnzp1athhREZnZyfV1dVhhxEpyklvykc25SSbctKb8pFNOcm2Y8eOLncvOCmhFmtm1gx0pP4AfM3dHzSzKcBaYCbQCVzp7o/lc876+nq2b99ejHBHpaamJhYvXhx2GJGinPSmfGRTTrIpJ70pH9mUk2xmtiuI80ShZe1id3++z7abgafcfYmZLQB+YGYz3b0nhPhEREREQhOFYi2XpcBxAO6+0cx2AmcDG8IMSkpAIk5Vdyu0B/KfnZKgfGRTTrIpJ70pH9mUk+KJQrF2v5nFgF8BXwISQMzdM7/jzcD0EGKTUpKIw0PLmdfyAuxYFXY0kTGvrU356EM5yaac9KZ8ZFNOiifsYu197t5iZpXAjcA9wGVA39Xlrb8TmNlKYGX6dU1NDU1NTcWIdVTq6OhQPlKquluZ1/ICnkjQ2tYWdjiRoXxkU06yKSe9KR/ZlJPiMfe+dVE4zOwdwDZ3P8rMDgAz0q1rZvZr4AvuvmGw8zQ2NvquXb2bYbu6umhpaaG7u7sIkUdPZWUl06dPp6qqSg98ZmrfBfdfTGtbGxOWPwA1DWFHFAnrN6xn0QcWhR1GpCgn2ZST3pSPbMpJNjtqyg53P6bQ84TWsmZm44FKd9+f2vRxYEvq64eAq4GvpAYYHA3kNRo0l5aWFo466igaGhow67eRriS4O3v27KGlpYVZs2aFHU501TRAbWPYUURCV+UE5aIP5SSbctKb8pFNOSmeMLtBpwIPm1kFyW7OV4E/Te27DrjXzF4GuoDLhjsSNJFI0N3dTUNDA2PGhN3rOzIaGhrYu3cviUQi7FBERESkQKFVL+7+KjC3n307gfMCug5AybeoZUp/1qh0cYuIiMjwlUdTU8TMmTMHSD5Lt23bNk455RQATjjhBP75n/+Ziy66iKeffhqA3bt3hxWmiIiIRICKtRBs3boVgObmZubPn3/4NSSX6/jCF75AQ0MD5557bjgBioiISGSUXbEWTzj7DnYV9RoTa6qoiA2v27W6uppzzjmH5ubmYIMSERGRUansirV9B7u4/O6NRb3G3ZcvYHKtFrMVERGRwsXCDkBERERE+ld2LWsTa6q4+/IFRb+GiIiISBDKrliriJm6KEVERGTUUDdoBM2bN4+FCxeyb98+jjnmGC677LKwQxIREZGQlF3LWpTMmDEj5zxqmzdvDiEaERERiSK1rImIiIhEmIo1ERERkQhTsSYiIiISYSrWRERERCJMxZqIiIhIhKlYExEREYkwFWsiIiIiEaZ51kKybt06brrpJuLxOJ2dnbzzne/k5z//OR/84AdpaWmhrq6Ojo4OLr74Ym688UYALr74Yp544gneeOMN3n77bWpra0P+FCJSbPGEs+9gV69tdWMraevoHtE42rqc3e2dI3rNKFM+siknxaNiLQRvvvkmV155JRs3buTYY48FkhPhmhkA3/rWtzj//PPZv38/c+fO5YwzzuCCCy7gyiuv5B/+4R+YOnVqmOGLSA65iqogznnNd7dwqDse6HmHo7UtztrmjWGHERnKRzblpHjKr1hLxOHg3uJeo2YSxCr63f3GG28wZswYGhoaDm+bN29e1nH19fUsWLCAl156iQsuuIBzzz23KOGKSP/yKcKiVFSJSOkpv2Lt4F64/+LiXmPZD6C2sd/dp59+OgsXLmT69Om8//3v58wzz+TSSy9l2rRpvY7bvn07jz32GFdddVVx4xUpU/0VYununKgUYeMqK7jj0rkAh+NJb6uI2YjEsH79ehYtWjAi1xoNlI9sykm2xmuDOU/5FWsREIvFePjhh3nxxRf55S9/yaOPPspNN93Epk2bALj22mu54YYbqKys5Mtf/jKLFi0KOWKR0au/gmygQmy43TnFKqAm1lQdPucDV7yXfQe7em0bCXVVxuTa6hG7XtQpH9mUk+KJRLFmZn8DfAU41d2fN7MpwFpgJtAJXOnujwVysZpJ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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TCLab Model disconnected successfully.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAFgCAYAAADkYz66AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAxOAAAMTgF/d4wjAABHHUlEQVR4nO3dfXxcdZ33/9dn0iRtGtK0aVq0WAptBZa7ttuKBVatcNG6F4guXEWpbOWyIohw7XZXURZ3XX+wIv6AVejKdruLFBARqay6slH3at3lTlvacrdCQYihFUpvE9I2dzOf64+ZaSeZSTLJnMk5mXk/H48+mjnnzDmf+eQ0+fT7Pd/v19wdEREREYmmWNgBiIiIiEj/VKyJiIiIRJiKNREREZEIU7EmIiIiEmEq1kREREQiTMWaiIiISISpWBMRERGJsDFhBxC0yspKnzp1athhREZnZyfV1dVhhxEpyklvykc25SSbctKb8pFNOcm2Y8eOLncvOCmhFmtm1gx0pP4AfM3dHzSzKcBaYCbQCVzp7o/lc876+nq2b99ejHBHpaamJhYvXhx2GJGinPSmfGRTTrIpJ70pH9mUk2xmtiuI80ShZe1id3++z7abgafcfYmZLQB+YGYz3b0nhPhEREREQhOFYi2XpcBxAO6+0cx2AmcDG8IMSkpAIk5Vdyu0B/KfnZKgfGRTTrIpJ70pH9mUk+KJQrF2v5nFgF8BXwISQMzdM7/jzcD0EGKTUpKIw0PLmdfyAuxYFXY0kTGvrU356EM5yaac9KZ8ZFNOiifsYu197t5iZpXAjcA9wGVA39Xlrb8TmNlKYGX6dU1NDU1NTcWIdVTq6OhQPlKquluZ1/ICnkjQ2tYWdjiRoXxkU06yKSe9KR/ZlJPiMfe+dVE4zOwdwDZ3P8rMDgAz0q1rZvZr4AvuvmGw8zQ2NvquXb2bYbu6umhpaaG7u7sIkUdPZWUl06dPp6qqSg98ZmrfBfdfTGtbGxOWPwA1DWFHFAnrN6xn0QcWhR1GpCgn2ZST3pSPbMpJNjtqyg53P6bQ84TWsmZm44FKd9+f2vRxYEvq64eAq4GvpAYYHA3kNRo0l5aWFo466igaGhow67eRriS4O3v27KGlpYVZs2aFHU501TRAbWPYUURCV+UE5aIP5SSbctKb8pFNOSmeMLtBpwIPm1kFyW7OV4E/Te27DrjXzF4GuoDLhjsSNJFI0N3dTUNDA2PGhN3rOzIaGhrYu3cviUQi7FBERESkQKFVL+7+KjC3n307gfMCug5AybeoZUp/1qh0cYuIiMjwlUdTU8TMmTMHSD5Lt23bNk455RQATjjhBP75n/+Ziy66iKeffhqA3bt3hxWmiIiIRICKtRBs3boVgObmZubPn3/4NSSX6/jCF75AQ0MD5557bjgBioiISGSUXbEWTzj7DnYV9RoTa6qoiA2v27W6uppzzjmH5ubmYIMSERGRUansirV9B7u4/O6NRb3G3ZcvYHKtFrMVERGRwsXCDkBERERE+ld2LWsTa6q4+/IFRb+GiIiISBDKrliriJm6KEVERGTUUDdoBM2bN4+FCxeyb98+jjnmGC677LKwQxIREZGQlF3LWpTMmDEj5zxqmzdvDiEaERERiSK1rImIiIhEmIo1ERERkQhTsSYiIiISYSrWRERERCJMxZqIiIhIhKlYExEREYkwFWsiIiIiEaZ51kKybt06brrpJuLxOJ2dnbzzne/k5z//OR/84AdpaWmhrq6Ojo4OLr74Ym688UYALr74Yp544gneeOMN3n77bWpra0P+FCJSbPGEs+9gV69tdWMraevoHtE42rqc3e2dI3rNKFM+siknxaNiLQRvvvkmV155JRs3buTYY48FkhPhmhkA3/rWtzj//PPZv38/c+fO5YwzzuCCCy7gyiuv5B/+4R+YOnVqmOGLSA65iqogznnNd7dwqDse6HmHo7UtztrmjWGHERnKRzblpHjKr1hLxOHg3uJeo2YSxCr63f3GG28wZswYGhoaDm+bN29e1nH19fUsWLCAl156iQsuuIBzzz23KOGKSP/yKcKiVFSJSOkpv2Lt4F64/+LiXmPZD6C2sd/dp59+OgsXLmT69Om8//3v58wzz+TSSy9l2rRpvY7bvn07jz32GFdddVVx4xUpU/0VYununKgUYeMqK7jj0rkAh+NJb6uI2YjEsH79ehYtWjAi1xoNlI9sykm2xmuDOU/5FWsREIvFePjhh3nxxRf55S9/yaOPPspNN93Epk2bALj22mu54YYbqKys5Mtf/jKLFi0KOWKR0au/gmygQmy43TnFKqAm1lQdPucDV7yXfQe7em0bCXVVxuTa6hG7XtQpH9mUk+KJRLFmZn8DfAU41d2fN7MpwFpgJtAJXOnujwVysZpJ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from tclab import setup, clock, Historian, Plotter\n", "\n", "# proportional control gain\n", "Kp = 4.0\n", "\n", "# setpoint function\n", "def SP1(t):\n", " return 20.0 if t <= 100 else 50.0\n", "\n", "# setpoint function\n", "SP2 = 40.0\n", "\n", "TCLab = setup(connected=False, speedup=60)\n", "\n", "with TCLab() as lab:\n", " # add setpoint to default sources\n", " sources = lab.sources\n", " sources.append(['SP1', lambda: SP1(t)])\n", " sources.append(['SP2', lambda: SP2])\n", " h = Historian(sources, dbfile=\"data/tclab_historian.db\")\n", " \n", " layout = [[\"T1\", \"SP1\"], [\"T2\", \"SP2\"], [\"Q1\", \"Q2\"]]\n", " p = Plotter(h, 400, layout)\n", " for t in clock(400):\n", " U1 = Kp*(SP1(t) - lab.T1)\n", " U2 = 100 if lab.T2 < SP2 else 0\n", " lab.Q1(U1)\n", " lab.Q2(U2)\n", " p.update(t)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "nbpages": { "level": 2, "link": "[4.1.3 Plotter](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.3-Plotter)", "section": "4.1.3 Plotter" } }, "outputs": [ { "data": { "text/plain": [ "[(1, '2021-03-16 17:07:35', 164),\n", " (2, '2021-03-16 17:12:20', 593),\n", " (3, '2021-03-16 17:12:32', 301),\n", " (4, '2021-03-16 17:15:51', 592),\n", " (5, '2021-03-16 17:16:02', 302)]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h.get_sessions()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "nbpages": { "level": 2, "link": "[4.1.3 Plotter](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.3-Plotter)", "section": "4.1.3 Plotter" } }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1)\n", "\n", "ax[0].plot(h.logdict[\"Time\"], h.logdict[\"T1\"], h.logdict[\"Time\"], h.logdict[\"SP1\"])\n", "ax[1].plot(h.logdict[\"Time\"], h.logdict[\"T2\"], h.logdict[\"Time\"], h.logdict[\"SP2\"])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "nbpages": { "level": 2, "link": "[4.1.3 Plotter](https://jckantor.github.io/cbe30338-2021/04.01-Process-Historians.html#4.1.3-Plotter)", "section": "4.1.3 Plotter" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [4.0 Process Analytics](https://jckantor.github.io/cbe30338-2021/04.00-Process-Analytics.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [4.2 State Estimation](https://jckantor.github.io/cbe30338-2021/04.02-State-Estimation.html) >

\"Open

\"Download\"" ] } ], "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 }