Free software and hardware tools for identification and PID design

Herramientas de hardware y software libre para identificación y diseño de PID

This site contains a set of tools based on free software and hardware ( Easy Java Simulations, Processing and Arduino) that allow to perform the complete cycle of experimental system identification, PID design (both model based and experimental data based) and PID implementation for real processes.

Esta página recoge una serie de herramientas basadas en hardware y software libre (Arduino, Processing e Easy Java Simulations) que permiten realizar el ciclo completo de identificación experimental, diseño e implementación de controladores PID para procesos reales.

JAVA applications for identification and PID design.

First, a set of applications developed in Java can be downloaded: one for identification from time response data, another for model based PID design, another for PID tuning from experimental data, one for identification from frequency response data, and one for simulation of linear systems response.

Aplicaciones JAVA para la identificación y el diseño de PID:

En primer lugar se muestra un conjunto de aplicaciones desarrolladas en Java: una para identificación a partir de datos de respuesta temporal, otra para diseño de PID basado en modelo, otra para ajuste experimental de PID, una para identificación a partir de datos de respuesta en frecuencia, y una última para simulación de la respuesta de sistemas lineales.

Arduino tools for real time implementation.

Here, a firmware for Arduino and an interface software for Windows can be downloaded. The software communicates with the Arduino board through USB, and allows to perform open loop and closed loop experiments in real plants.

Herramientas para Arduino para implementación en tiempo real:

Aquí se puede descargar al firmware para Arduino y una aplicación de interface para Windows. La aplicación comunica con la tarjeta Arduino a través del USB, pudiendo configurarlo para realizar experimentos en bucle abierto y bucle cerrado en plantas reales.

General description of the Java applications:

    • Identification application ( "ejs_ident_temp"). For the experimental identification of the process model, from data from a step response experiment, an application has been developed in Easy Java simulations (http://fem.um.es/Ejs/), which reads the experimental data file (saved by the Interface application or from Excel or Matlab), and allows to define a model that fits the data. The model can be saved in a file. This application can also be used with the didactic objective of analyzing the step response of different systems (with real or complex poles, with integrator, with non minimum phase zeros, etc.).
    • Model based PID Design application ( "ejs_PID_modelbased"). For the PID controller design, another application has been developed in Easy Java simulations, which reads the file with the process model, and allows to design and simulate a PID through the frequency response. The application allows to design a PID with an optimum compromise between robustness, performance and high frequency noise amplification. This application allows to save the designed controller in a file, that can be read later by the application "Interfaz_PID_arduino" to test the controller in the real process.
    • Experimental PID tuning application ( "ejs_PID_experimental"). An application has also been developed in Easy Java Simulation, which reads a data file saved from an experiment (open loop step, or closed loop relay feedback), and allows the tuning of a PID using step-response techniques, or by relay feedback methods. The tuned PID can be stored in a file to be loaded by the other applications.
    • Frequency identification application ( "ejs_ident_frec"). This application allows to perform the experimental identification of a process from frequency response data.

Description of the real time implementation hardware-software system:

    • Hardware platform: Arduino UNO (http://arduino.cc/en/Main/arduinoBoardUno). The hardware device used is an Arduino Uno board, programmed with a firmware that allows to control processes in which the output can be an analogue signal, or an incremental encoder signal, or a square signal as a frequency. The control action is an adjustable frequency PWM signal. The firmware allows the operation in open loop (to make step change experiments), in closed loop with a relay (to perform feedback experiments with relay), or in closed loop with a PID controller, with a configurable sampling period from 1 ms. The Arduino firmware is fixed, and once programmed, there is no need to change it.
    • PC software Interface ("Interfaz_PID_arduino"). As a user interaction interface, a Windows application has been developed using the Processing environment (http://www.processing.org/). This application requires the installation of the Java runtime. The interface communicates via the USB port with the Arduino Uno board. Allows to configure the board to perform open loop or closed loop (relay) experiments, or to implement a PID controller. It allows to display the signals and to save in file both the input output data, and the parameters of the PID controller. It also allows to read a file with the parameters of a PID controller designed with another tool.

Summary of the full cycle of identification, design and testing of a model-based PID:

  1. An experiment is performed on the real process (for example, an open-loop step change). This is done with the Arduino connected to the process, and using the Processing "Interfaz_PID_arduino" application. The experiment data is stored in a file.
  2. The experiment data is read with the Java application "ejs_Ident_temp". A model is identified and saved in a file.
  3. The model is read with the "ejs_PID_modelbased" application, and a PID controller is designed, with the optimum compromise between robustness, performance and noise amplification. Once designed, the PID is stored in a file.
  4. The PID controller of the file is read with the application "Interfaz_PID_arduino", the other parameters are configured, and the controller is tested in the real process with the Arduino board.

Summary of the full cycle of experimental tuning and test of a PID:

  1. An experiment is performed on the real process (e.g. an open-loop step change, or relay feedback). This is done with the Arduino connected to the process, and using the processing "Interfaz_PID_arduino" application. The experiment data is stored in a file.
  2. The experiment data is read with the Java application "ejs_PID_experimental". A PID controller is tuned and saved in a file.
  3. The PID controller of the file is read with the application "Interfaz_PID_arduino", the other parameters are configured, and the controller is tested in the real process with the Arduino board.


Descripción general de las aplicaciones Java:

  • Aplicación de identificación ("ejs_ident_temp"). Para la identificación experimental del proceso, a partir de datos de la respuesta ante escalón, se ha desarrollado una aplicación en Easy Java Simulations (http://fem.um.es/Ejs/), que lee el fichero de datos experimentales guardado por la aplicación de Processing, y permite definir un modelo que ajuste dichos datos. Ese modelo se puede guardar en un fichero. Esta aplicación también sirve para analizar cómo es la respuesta ante escalón de distintos sistemas (con polos reales o complejos, con integrador, con ceros de fase no mínima, etc.).
  • Aplicación de diseño de PID ("ejs_PID_modelbased"). Para el diseño de controlador PID, se ha desarrollado otra aplicación en Easy Java Simulations, que lee el fichero con el modelo del proceso, y permite diseñar y simular un PID mediante la respuesta en frecuencia. Esta aplicación permite guardar el controlador diseñado en un fichero, que podrá ser leído posteriormente por la aplicación “Interfaz_PID_arduino” para probar el controlador en el proceso real.
  • Aplicación de ajuste experimental de PID ("ejs_PID_experimental"). Se ha desarrollado también una aplicación en Easy Java Simulation, que lee el fichero de datos experimentales guardado en disco, y permite el ajuste de un PID mediante técnicas de respuesta ante escalón, o mediante métodos de realimentación con relé. El PID ajustado puede guardarse en fichero para ser cargado por las otras aplicaciones.
  • Aplicación de identificación en frecuencia ("ejs_ident_frec"). Esta aplicación sirve para la identificación experimental de un proceso a partir de datos de la respuesta en frecuencia.

Descripción del sistema hardware-software para implementación en tiempo real:

  • Plataforma hardware: Arduino UNO (http://arduino.cc/en/Main/arduinoBoardUno). El dispositivo hardware utilizado es una tarjeta de Arduino Uno, programada con un firmware que permite controlar procesos en los que la salida sea una señal analógica, o bien una señal de encoder incremental, o una señal cuadrada en frecuencia. La acción de control es una señal PWM de frecuencia ajustable. El firmware permite el funcionamiento en bucle abierto (para hacer experimentos de cambios en escalón), en bucle cerrado con un relé (para hacer experimentos de realimentación con relé), o en bucle cerrado con un controlador PID, con un periodo de muestreo configurable desde 1 ms. El programa de la tarjeta Arduino es fijo, y una vez programada, no hace falta cambiarlo.
  • Interfaz software para PC (“Interfaz_PID_arduino”). Como interfaz de interacción con el usuario se ha desarrollado una aplicación para Windows mediante el entorno Processing (http://www.processing.org/). Esta aplicación requiere la instalación del runtime de Java. El interfaz se comunica a través del puerto USB con la tarjeta Arduino Uno. Permite configurar la tarjeta para realizar experimentos en bucle abierto o en bucle cerrado (con relé), o implementar un controlador PID. Permite visualizar las señales y guardar en fichero tanto los datos de entrada salida, como los parámetros del controlador PID. También permite leer un fichero con los parámetros de un controlador PID diseñado con otra herramienta.

Resumen del ciclo completo de identificación, diseño y prueba de un PID basado en modelo:

  1. Se realiza un experimento sobre el proceso real (por ejemplo un cambio en escalón en bucle abierto). Esto se hace con el Arduino conectado al proceso, y utilizando la aplicación de Processing “Interfaz_PID_arduino”. Se guardan los datos del experimento en un fichero.
  2. Se leen los datos del experimento con la aplicación de Java “ejs_ident_temp”. Se ajusta un modelo y se guarda dicho modelo en un fichero.
  3. Se lee el modelo con la aplicación “ejs_PID_modelbased”, y se diseña un controlador PID. Una vez ajustado se guarda el PID en un fichero.
  4. Se lee el controlador PID del fichero con la aplicación “Interfaz_PID_arduino”, se configura el resto de parámetros, y se prueba el controlador en el proceso real con la tarjeta de Arduino.

Resumen del proceso de ajuste experimental y prueba de un PID:

  1. Se realiza un experimento sobre el proceso real (por ejemplo un cambio en escalón en bucle abierto, o una realimentación a relé). Esto se hace con el Arduino conectado al proceso, y utilizando la aplicación de Processing “Interfaz_PID_arduino”. Se guardan los datos del experimento en un fichero.
  2. Se leen los datos del experimento con la aplicación de Java “ejs_PID_experimental”. Se ajusta un controlador PID y se guarda dicho controlador en un fichero.
  3. Se lee el controlador PID del fichero con la aplicación “Interfaz_PID_arduino”, se configura el resto de parámetros, y se prueba el controlador en el proceso real con la tarjeta de Arduino.

Roberto Sanchis Llopis (rsanchis@uji.es)

Área d'Enginyeria de Sistemes i Automàtica

Dep. Enginyeria de Sistemes Industrials i Disseny

Universitat Jaume I

Castelló. Spain