Skip to content

katayama0615/pypid

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This package provides general PID_ control software in Python with a
Melcor MTCA backend.  The idea is that experimentalists interested in
temperature controlled experiments or other processes should not need
to learn the inner workings of their PID controller before they can
perform simple control tasks.

Module structure
================

This package provides both a high level controller that uses
per-device backend drivers.  The controller handles auto-tuning the
PID feedback parameters and changing system temperatures, while the
backends communicate setpoint changes, temperature read requests,
etc. to the temperature control device.

Backends
--------

The only physicsal backend that is supported at the moment is a Melcor
Series MTCA Thermoelectric Cooler Controller, which we communicate
with via Modbus_ packets over a `serial port`_.  That's all I needed
for my experiments, but I tried to write a framework that was flexible
enough to swap in other backends.  By subclassing `Backend` for your
particular device, you can take advantage of the high-level
`Controller` code that's already written.

Melcor
~~~~~~

Companies don't stay in business forever, but lab equipment does ;).
Our controller is still going strong since 1999, but Melcor has moved
around.  According to their `2005 announcement`__ the Laird Group PLC
purchased Melcor from Fedders Corporation, and by 2009 (according to
the `Internet Archive Wayback Machine`__) they phased out the old
website at `melcor.com`_ in favor of `their own thermal site`__, and
it looks like there is no longer support for the older MTCA
controllers.  There seem to be a number of them on eBay_ though ;).

__ `Laird announcement`_
__ wayback_
__ `Laird thermal`_

TestBackend
~~~~~~~~~~~

To get a feel for driving a PID system, look atcheck out the
`TestBackend`, which simulates a standard first-order process with
dead time (FOPDT).

Installation
============

Packages
--------

Gentoo
~~~~~~

I've packaged `pypid` for Gentoo_.  You need layman_ and my `wtk
overlay`_.  Install with::

    # emerge -av app-portage/layman
    # layman --add wtk
    # emerge -av dev-python/pypid

Dependencies
------------

If you're installing by hand or packaging `pypid` for another
distribution, you'll need the following dependencies:

=========  =====================  ================  ==========================
Package    Purpose                Debian_           Gentoo_
=========  =====================  ================  ==========================
aubio_     Pitch detection        python-aubio      media-libs/aubio
nose_      testing                python-nose       dev-python/nose
NumPy_     Controller analysis    python-numpy      dev-python/numpy
pySerial_  serial comminication   python-serial     dev-python/pyserial
pymodbus_  Modbus stack           python-modbus     dev-python/twisted
SciPy_     Controller analysis    python-scipy      dev-python/scipy
=========  =====================  ================  ==========================

Actually, `pymodbus` may (depending on your packaging system) depend
on `pySerial`_ via Twisted_, so `pymodbus` alone may be enough to get
you going.

The Debian package for `pymodbus` has not been accepted yet.  `Debian
bug #578120`__ tracks the progress of the prospective package, but it
seems to have stalled out at the moment.

__ db578120_

Installing by hand
------------------

Pypid is available as a Git_ repository::

    $ git clone git://tremily.us/pypid.git

See the homepage_ for details.  To install the checkout, run the
standard::

    $ python setup.py install

Usage
=====

See the examples in the `examples` directory.

Testing
=======

Run the test suite with::

    $ nosetests --with-doctest --doctest-tests pypid

Note that you should have your temperature control device connected to
your computer before running this command, as backend tests require a
connected backend.

Licence
=======

This project is distributed under the `GNU General Public License
Version 3`_ or greater.

Author
======

W. Trevor King
wking@tremily.us
Copyright 2008-2012


.. _PID: http://en.wikipedia.org/wiki/PID_controller
.. _Modbus: http://en.wikipedia.org/wiki/Modbus
.. _serial port: http://en.wikipedia.org/wiki/Serial_port
.. _Laird announcement: http://www.lairdtech.com/NewsItem.aspx?id=953
.. _wayback: http://web.archive.org/web/20090204201524/http://melcor.com/
.. _melcor.com: http://melcor.com
.. _Laird thermal: http://lairdtech.thomasnet.com/category/thermal-management-solutions/
.. _eBay: http://www.ebay.com/
.. _layman: http://layman.sourceforge.net/
.. _wtk overlay: http://blog.tremily.us/posts/Gentoo_overlay/
.. _Debian: http://www.debian.org/
.. _Gentoo: http://www.gentoo.org/
.. _aubio: http://aubio.org/
.. _NumPy: http://numpy.scipy.org/
.. _pymodbus: http://code.google.com/p/pymodbus/
.. _pySerial: http://pyserial.sourceforge.net/
.. _Twisted: http://twistedmatrix.com/trac/
.. _SciPy: http://www.scipy.org/
.. _db578120: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578120
.. _nose: http://somethingaboutorange.com/mrl/projects/nose/
.. _Git: http://git-scm.com/
.. _homepage: http://blog.tremily.us/posts/pypid/
.. _GNU General Public License Version 3: http://www.gnu.org/licenses/gpl.txt

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%