You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 30 Next »

Immediate Release
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:841)
at java.util.HashMap$KeyIterator.next(HashMap.java:877)
at edu.stanford.slac.mpsgui.jdbc.logic.LogicDB.filterAlwaysEvaluatedStates(LogicDB.java:114)
at edu.stanford.slac.mpsgui.jdbc.logic.LogicDB.getCurrentStates(LogicDB.java:275)
at edu.stanford.slac.mpsgui.controller.logic.MPSLogicViewer.checkCurrentStates(MPSLogicViewer.java:161)
at edu.stanford.slac.mpsgui.controller.logic.MPSLogicViewer$1.run(MPSLogicViewer.java:38)
at java.lang.Thread.run(Thread.java:595)

  1. Requirements
    1. #Ignore Logic
    2. #Faults
    3. #Logic
    4. #Bypass Dialog
    5. #Interactive View
  2. Schedule

Ignore Logic

New States

  • Truth table is an ignoring table
    • Truth table is ignoring state = MPSTruthTableIgnoreIgnoring = 201 = -55
    • Truth table is not ignoring state = MPSTruthTableIgnoreNotIgnoring = 200 = -56
  • Truth table has an invalid state
    • state = MPSTruthTableStateInvalid = 203 = -53
  • Truth table is not ignored
    • state = truth table's state
  • Truth table is ignored
    • state = 0x80 | (truth table's state)

Therefore, if the truth table's state is not 200, 201, or 203 (-56, -55, -53) the truth table's state is 0x7F & (truth table state) and whether or not it is ignored is 0x80 & (truth table state).

  • If the truth table's state can't be found in the Logic DB, make an alert panel that shows the truth table's name, the raw state value from the IOC:BSY0:MP01:TTBLST array, and a message saying "Send the above information to the controls group."

Mockup

======================================= Ignore Logic ===========================================

------------------------------------------------------------------------------------------------
                                          Logic History

 |=========================< slider >============================================|  [] Show Live

------------------------------------------------------------------------------------------------
         Ignore Logic                                      Ignored Truth Tables
   Sort 2        Sort 0      Sort 1   |                Sort 1              Sort2    Sort 0
============== ===========  ========  |   ================================ ===== ============
  Condition    Is Ignoring  Min Rate  |   Truth Table                      State   Min Rate
============== ===========  ========  |   ================================ ===== ============
TD11 Is In         Yes         0 Hz   |   BFW 1910 Position                  In          0 Hz
TDUND Is In         No        10 Hz   |   BCS LION753 Threshold              OK          0 Hz
YG BL211 Is In      No        60 Hz   |   BLM Pedestal Thresholds: UND 920    .          0 Hz
============== ===========  ========  |   Temperature: North Arc Summary      .          0 Hz
                                      |   VVPG LI22 Position                  .          0 Hz
                                      |   YAG IN20 211 Position               .         10 Hz
                                      |   PIC HVPS B912                       .         10 Hz
                                      |   PIC HVPS B913                       .        120 Hz
                                      |   ================================ ===== ============
                                      |
--------------------------------------+------------------------------------------------------

         Name: YAG IN20 211 Position [ Bypass... ]
 Ignored When: TD11 Is In, or YG BL211 Is In, or ...
Current State: Out
     Solution: --
     Contacts: --

====== = = ==================== ==================== ==================== ====================
 Name  B A     Pockels Cell      Mechanical Shutter         BYKIK         Laser Heater Shutter
====== = = ==================== ==================== ==================== ====================
Moving F F                 0 Hz                 0 Hz                 0 Hz                   --
Out    F T               120 Hz               120 Hz               120 Hz                   --
In     T F                10 Hz                10 Hz                10 Hz                   --
Broken T T                 0 Hz                 0 Hz                 0 Hz                   --
====== = = ==================== ==================== ==================== ====================

Where:

    = ======================================= ========= ========= ========== ==========
    . PV Prefix                                Current   Latched  Bypass Act Bypass Val
    = ======================================= ========= ========= ========== ==========
    A (YG_BL211_OUT_LIMIT)_(STATE) as PV Name IS_OUT    IS_OUT        No     IS_NOT_OUT
    B (YG_BL211_IN_LIMIT)_(STATE) as PV Name  IS_NOT_IN IS_NOT_IN     No     IS_NOT_IN
    = ======================================= ========= ========= ========== ==========


------------------------------------------------------------------------------------------------
Summary / Faults / Logic / Ignore Logic / History /


Note to sergei:  Use (Device Name)_(Fault Name) to find PV prefix from config db
* MPSC Current
* MPS Latched
* BYPA Bypass Act
* BYPV Bypass Val

Ignore Logic Mockup

Test on lcls-dev2

mpsgui \
jdbc:sqlite:/afs/slac.stanford.edu/u/xr/snorum/ioc/mpsConfiguration/database/ \
jdbc:sqlite:/afs/slac.stanford.edu/u/xr/snorum/ioc/mpsConfiguration/algorithm/ \
jdbc:oracle:thin:MPS_HISTORY/Neutrin0!@slac-oracle02.slac.stanford.edu:1521:SLACDEV \
&
  • Ignore/unignore truth tables by writing 0 or 1 to YAGS:IN20:211:IN_LMTSW_BYPV
    caput YAGS:IN20:211:IN_LMTSW_BYPV 1 to ignore
    caput YAGS:IN20:211:IN_LMTSW_BYPV 0 to unignore
    
  • Default solution etc. is "--"

Faults

  • Remove the 2nd splitpane (Area/PV); have either 2 or 3 panes visible
  • Show hidden faults
    Link fault description strings to the PV names that generate them. In other words, if an item latches in the MPS, the MPS GUI and CUD display its description string, but neither one displays the name of the actual PV that is causing the fault. In order to find it, we have to guess what it might be called, and go hunting for it in the list of PVs. This is very important when we want to bypass a fault that is holding off the beam, and it is hard to figure out which obscure PV name(s) is/are causing it! This especially comes into play when doing things such as initial beam checkouts for the BAS, when we often have to bypass a large list of PICs or similar things. But it can be a problem at other times too. It should be an easy fix, but it's a critical feauture in my opinion and I would give it high priority.
    

Logic

  • Add rate to ignored states
  • Say "Ignored/State" for ignore states

Bypass Dialog

  • Change on both, Faults and Ignore Logic tabs
  • Allow to select any state
  • Let's drop the calendar view and simplify the interface.
  • Default to 0 for all duration values
    • If bypass time is 0, don't send any messages to MPS
  • Show truth table name in the window's title bar
  • Read-only values in table
  • Allow tabbing between duration values
    • Tab order: days -> hours -> minutes -> seconds -> days
  • Initialize window with days field selected
  • Add bypass messages to cmlog (hostname, time)

Mockup

Bypass Dialog Mockup

Interactive View

  • Use progress bar instead of spinning wheel (misinterpreted as "can't do anything")
  • Figure out why loading is slow (if database a problem, do partial loading)

Stuff

  • Convert all JTables to MpsGuiTables
  • Monitor Logic/Config changes (add refresh button)
  • MpsLe to remember previous directory

Schedule

  • Ignore Logic, Bypass Dialog (4 man-weeks)
  • Faults, Logic, Interactive View (6 man-days)
  • Mps logic Editor Removal Bug (2-3 man-days)
  • No labels