SLC-Aware IOC Meeting Minutes - 10/11/05: (1) Preliminary Design of SLC and EPICS parts for Magnet Control/Readback: A preliminary design is sketched out on the whiteboard in Pallisades. To-do in the next few days: Debbie - transcribe whiteboard to Visio and add detail for the design next week on Oct 18. Kristi - provide lists of secondaries per primary that need updating in the SLC database. Kristi - provide list of EPICS PVs to be used by the SLC side. Debbie - go through rough design with Steph, Diane, Kristi before group review next week. Debbie to resolve these issues: * SLC database update logic best done in callbacks in the context of the epics callback task (requires mutex protection?) or in the mgntAsync task as a result of a message sent by the callback task. * Do STATs and readbacks need to be updated by mgntHdlr BEFORE any function is done? * Besides HSTA (control bits), DES (setpoint), and TOLS (used for significant change checking), what else is read from the SLC database? * Does the reply to the Alpha consist of just a summary status or a status per prim/unit? * Should flag shared by mgntHdlr and mgntAsync be an event flag (and mgntHdlr waits forever on it) or just an integer flag that mgntHdlr polls every second. Note that if it is an event flag, mgntAsync needs to reset it on timeout or when it receives a stop request from slcExec. To supplement the picture, here is the order of events per task: (a) mgntHdlr * Wait on its queue for a message from Alpha or slcExec. * If slcExec says stop, cleanup and stop. * Check if any HSTA or DES value has changed in the SLC database and write new values to EPICS HSTACTRL and DES records. * Parse message from Alpha to get list of devices (prim/units). * Update CSTR MAGF if applicable. * If not Alpha check function: - update shared memory with magAsync if necessary. Reset event flag. - for each prim/unit, check EPICS CTRL field. If not IDLE, then set bad status for this unit. if EPICS CTRL is IDLE, set CTRL to desired action (TRIM, STDZ, etc) based on function code. - if at least one CTRL was set, wait for magAsync to set event flag. * For all prim/units, update SLC STAT and ACT values from records in the EPICS database. * For any function, update the Alpha database. What to do for check function from Paranoia? * Based on status information in memory shared with mgntAsync, reply with status (summary?) back to the Alpha if reply expected. * Go back to top. (b) EPICS record processing or sequence: * "Wakeup" when CTRL changes to a non-IDLE state. * Set STATUS to IN_PROGRESS. * Perform action allowing a specific time (TIME) for completion. Allow user to abort action (STOP). If action takes noticeable time, update a record that users can watch. * After action is finished, set STATUS to OK, TIMEOUT, HW_PROB, ABORT, etc, depending on results. * Set CTRL back to IDLE. Note that CA security will be set so that CTRL can be set only if it is IDLE. (c) EPICS monitor callback task: * Execute callback whenever HSTARBCK, DES, or CTRL changes. * Puts message in mgntAsync queue with record name and data. Should callback also write into SLC database and update the Alpha database? (d) mgntAsync * Wait on its queue for a message from callback, slcExec, or cstrAsync. * If slcExec says stop, cleanup. set shared event flag, and stop. * If callback message and HSTARBCK or DES change, update the SLC database locally. Update the Alpha database right away. * If callback message and CTRL change to IDLE and it is for an "active" prim/unit (mgntHdlr is waiting for it), get STATUS from the EPICS database and update status in shared memory with mgntHdlr. Get other PVs associated with the function and update specific secondaries in the SLC database for this prim/unit. If all prim/units are now done, set event flag for mgntHdlr. * If callback message and CTRL change to non-IDLE or it is changed for a inactive prim/unit, do nothing. * If timeout check function from cstrAsync, check if function completion wait has expired. Use same timeout (TIME) from the EPICS database as the EPICS sequence/record_processing (plus a little extra?). If timeout, set statuses accordingly in the memory shared with mgntHdlr and set event flag. * If check function from cstrAsync and a function is active, do nothing. * If check function from cstrAsync and a function is not active, for all prim/units, update SLC STAT and ACT values from records in the EPICS database. Also, if the SLC HSTA or DES value is new and hasn't yet been written into EPICS and we've waited long enough for an Alpha request to trigger the update to EPICS, overwrite the SLC value with the EPICS value. Update the Alpha database only for prim/units that change and only for any change to STAT, HSTA, DES, or a change to ACT that is significant based on SLC TOLS second value. * Go back to top. (2) Updated Task Lists: Major Tasks Who When ------------------------------------------ --------------- ---------- * Production SLC IOC test with PX00 Steph, KenB Oct 14 * Prototype EPICS PSC slow controls Kristi Oct 14 * Magnet SLC design Debbie Oct 14 * Magnet SLC design review Debbie Oct 18 * Magnet EPICS design review Kristi ?? * SLC IOC test with PNET D,D,S,Dayle Oct 21 * Magnet SLC code Debbie Oct 28 * Magnet/PSC EPICS Kristi ?? * Fast correctors - EPICS and SLC K,D,S Nov * Change iocLogServer for CMLOG Steph Oct * ESD - IOC naming and restrictions Steph Oct * ICD - EVR,BPM,GADCs,FBCK All Oct * BSAC integration test with EVR D,D,S,Dayle Oct? * BSAC integration test with ADC D,D,S,Till Oct? * SLC database for injector Kristi,Nancy Nov * LCLS SLC modelling database setup, etc Mark Woodley Next year See previous meeting minutes for loose-end and TBD tasks.