EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: New to EPICS - system design questions
From: "Dalesio, Leo" <[email protected]>
To: "Davidsaver, Michael" <[email protected]>, Ryan Pierce <[email protected]>, "[email protected]" <[email protected]>
Date: Tue, 12 Aug 2014 13:16:15 +0000


On 08/11/2014 02:22 PM, Ryan Pierce wrote:
> I'm new to EPICS and am interested in putting it to some possibly unique uses. I'm a member of the Pumping Station: One makerspace in Chicago, which is a large non-profit community workshop with all sorts of tools (wood shop, machine shop, welding, electronics lab, CNC fabrication equipment, etc. and a scanning electron microscope, which I coordinate maintenance and training for) where members can collaborate and work on projects.
>
> I'd like to use EPICS to control a custom all-grain beer brewing system I am constructing. I'm considering using an Arduino variant to do all low level hardware control, e.g. commanding valves, pumps, propane burners and/or heater elements, reading temperature, pressure, and flow sensors, etc. I'm guessing this would communicate via serial to a Raspberry Pi, which would run an EPICS IOC. I would use a laptop (or tablet?) networked via WiFi to the Pi as the control panel.
-------Excellent application!!
>
> PID control: Code it on the Arduino, and expose the set point, PID constants and state over serial to the Pi, which exposes these as process variables? Or have the Arduino just expose the raw sensor data to the Pi, which exposes them as process variables, and run a separate process on the Pi that is an IOC publishing set point, PID constants, etc. that in turn reads and commands the lower level process variables? Or does EPICS have constructs for this already?
--------- The EPID record already does this. As you need a sequencer for the batch portion of your control, it seems reasonable to also put your PID control right in the EPICS database. It means that you have to be careful about what to do on reboot. The EPID record does have anti-windup on the integral term. Please note that the Maximize severity property on link fields is going to be important so that the loop does not drive the output incorrectly if you loose communication to the IO. In the Output record there are 2 important things to configure - action on an INVALID alarm severity from the downstream records, and expose the OMSL (output mode select) to CLOSED_LOOP when you want to use the PID result, and SUPERVISORY if you want to control the output directly from the VAL field of the Analog Output.

>
> Ramp / Soak: this will drive the PID set point. I'd need to program profiles in with multiple temperatures and times. A process on the Pi maybe?
-------------------On the Analog Output Records, there is a OROC (rate of change) controller. That is a simple ramp. For a profile that has time sensitivity it is most appropriate to use the State Notation Language (SNL) client that should also be able to run on the Raspberry Pi. This program could run on windows as well - it is a Channel Access client.

>
> Event sequencing: I see EPICS has support for this. I'm not sure where to implement functions like "Add X quarts of water to the tank" where it would need to open a solenoid valve, count pulses on a flow meter, and close it when the level is reached. Or higher level sequences, like "first, fill the tank with X quarts, then heat it to this temperature and hold it there via PID, then prompt the user to dump in the grain, then run this ramp/soak profile", etc.
----------------Also SNL. It implements a state transition diagram.

>
> Alarms: I need the concept of multiple alarms that can be acknowledged / overridden. (Time to add grain, time to add hops, the pump flow rate dropped too low, etc.) I'm guessing this is a common problem and am wondering if there are already common solutions for this.
----------------- All simple signal alarms are configured in the database - but processed by some CHannel Access client. There are several in the community. The acknowledged status is kept in the record. 

>
> I'm interested in "async"; I'm wondering if this would make things easier by handling serial communications with the Arduino and allowing me to publish PVs on the Arduino without writing custom IOC code on the Pi.
>
> Is MEDM still the way to go for control panels? I'm also wondering if there are any EPICS compatible control panel apps for IPad or Android tablets.
>
> I'd like to publish data to the web so interested people can see the state of the brewing. Is there any kind of framework for publishing EPICS PVs to the web without having to write lots of custom code?
> Anyway, I know this is unusual, but it sounded like a fun project to me. I think it would be interesting to see what would happen if EPICS and the maker community intersected.
----------------------------- We have been an open source community since 1991. And it sounds like we share one important aspect - a very supportive community.

Bob

References:
New to EPICS - system design questions Ryan Pierce
Re: New to EPICS - system design questions Michael Davidsaver

Navigate by Date:
Prev: Re: New to EPICS - system design questions Michael Davidsaver
Next: yet another python extension to channel access Xiaoqiang Wang
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: New to EPICS - system design questions Michael Davidsaver
Next: RE: New to EPICS - system design questions Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 17 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·