upb-lea / control-block-diagram

Python Toolbox to draw Control Block Diagrams

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Control Block Diagram

Overview | Quickstart | Examples | Installation

Overview

The control-block-diagram package is a Python Toolbox for drawing block diagrams. It is build upon Pylatex, and therefore, can generate Latex files and also PDF files. It allows you to construct typical control block diagrams with the usual building blocks, i.e., PI-Controllers, Adders, Multiplier. It is also possible to define own blocks.

Getting Started

The easiest way to get started with the ControlBlockDiagram Toolbox is to play around with the Hands On Jupyter Notebook. There the most important functions are explained and demonstrated with simple examples.

Hands On Jupyter Notebook

A basic routine is as simple as:

from control_block_diagram import ControllerDiagram
from control_block_diagram import Point, Box, Connection


if __name__ == '__main__':
    doc = ControllerDiagram()
    
    box_control = Box(Point(0, 0), text='Control')
    box_block = Box(box_control.position.add_x(3), text='Block')
    box_diagram = Box(box_block.position.add_x(3), text='Diagram')

    Connection.connect(box_control.output, box_block.input)
    Connection.connect(box_block.output, box_diagram.input)
    
    doc.save('pdf')
    doc.show()

The output of this code is:

Examples

There are some examples in the examples folder:

Installation

  • Install from PyPI: >>> pip install control-block-diagram

  • Install from GitHub source:

git clone git@github.com:upb-lea/control-block-diagram.git 
cd control-block-diagram
# Then either
python setup.py install
# or alternatively
pip install -e .

# or alternatively
pip install git+https://github.com/upb-lea/control-block-diagram

You also need a latex compiler such as pdfLaTex to create a PDF file. For example, you can get this from the latex distribution MiKTeX.

About

Python Toolbox to draw Control Block Diagrams

License:MIT License


Languages

Language:Python 100.0%