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: Mark Rivers <[email protected]>
To: Ryan Pierce <[email protected]>, "[email protected]" <[email protected]>
Date: Tue, 12 Aug 2014 14:14:23 +0000
> PID control: ... Or does EPICS have constructs for this already?

Yes, the EPID record will do that, as Bob Dalesio said in an earlier post.  The EPID record can either process periodically (.1 seconds to 10 seconds) or it can process every time the readback value changes by making the input link have the CP attribute.

> 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?

One way to do that is with an EPICS sscan record.  You can build a temperature profile array and the sscan record will step through the temperatures.

Mark


________________________________________
From: [email protected] [[email protected]] on behalf of Ryan Pierce [[email protected]]
Sent: Monday, August 11, 2014 1:22 PM
To: [email protected]
Subject: New to EPICS - system design questions

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.

I know this sounds kind of strange, but the more I think about it, the more I like the idea of not having to write networking code or GUI for a control panel. Everything about the brewing system abstracts logically to process variables. I'm starting through the archived video presentations on a EPICS, and I'm wondering what best practices are for some of these things which I'm sure would also be used for more traditional science applications.

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?

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?

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.

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.

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.

Thanks,
Ryan


References:
New to EPICS - system design questions Ryan Pierce

Navigate by Date:
Prev: yet another python extension to channel access Xiaoqiang Wang
Next: EPICS_CA_MAX_ARRAY_BYTES for Pilatus Specht, Eliot D.
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 Dalesio, Leo
Next: Re: New to EPICS - system design questions Ryan Pierce
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 ·