Future and Past Developments of SMI Developments visible
Future and Past Developments of SMI++ Developments visible to users CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 1
At our first meeting of this kind in July 2009 we identified the desirable developments of SMI++ These were. . CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 2
1. Wait action e. g. wait (A, B, …SC, SD…) It will suspend the current action and it will wait for the listed objects A, B, . . and the objects within object sets SC, SD, … to reach the steady state CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 3
2. Test on an Object Set being empty This in effect is adding another type of Simple Condition : ( SA empty ) (SA not_empty) At the moment there are two types i. e. 1. ( A in_state …) or 2. ( any_in SA in_state … ) or ( all_in SA in_state … ) or ( A not_in_state …) ( any_in SA not_in_state …) ( all_in SA not_in_state …) 1. where A is a name of an Object and SA is a name of an Object Set 2. CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 4
3. When a proxy goes to busy, this should completely propagate through the relevant SMI world • Should be broadcasted by DIM to State Managers • State Managers should in turn broadcast their relevant associated objects going busy CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 5
4. Class Inheritance It should be possible to declare a new class inheriting states and actions from a base class that could be overloaded and new ones added. class : A extends B 5. Dynamic creation and destruction of objects new instructions create & destroy e. g. create HV 77 of_class POWER_SUPPLIES or destroy HV 77 CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 6
6. Creation of unions of sets New declaration that would create a new set as a union of existing sets (contents evaluated at run-time) e. g. objectset : C [A, B…] where A and B … are existing sets, and C is the new set 7. A proxy should be allowed to go to a state that is not declared in the corresponding associated object CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 7
8. Test on parameter values This means a new type of Simple Condition : Such as ( PARMA == PARMB ) ( PARMA == 78 ) ( PARMA > 24 ) CERN, 19 March 2013 or or etc Boda Franek Future and Past Developments of SMI++ 8
9. Extension of the concept of picking up the object name from parameter value in ‘insert’ instruction At the moment it is possible to do: action : CONFIGURE ( string PAR ) … insert $(PAR) in POWER-SUPPLIES in principle one could also do: do START $(PAR) in do instr. ( $(PAR) in_state READY ) in Simple Conditions etc CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 9
10. Dynamical changing diagnostic print level 11. Simple parameter arithmetic Such as : PARMB = PARMA + 5 12. Wait until a condition is TRUE new instruction wait_until (condition 1, condition 2…) this could be very useful if correctly designed. Quite tricky. CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 10
13. loops new instruction: for NAMEA in SETA, NAMEB in SETB instructions using NAMEA, NAMEB… endfor e. g. for CHANEL in HIGH_VOLTAGES if ( $(CHANEL) in_state TRIP ) do RESET $(CHANEL) endfor CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 11
14. Objects, states and actions should be allowed any number of attributes accessible to User Interfaces e. g. state : READY /colour=green 15. Restarting State Manager from a special file The file would be generated by a special exit from State Manager and would contain information about the current states and parameters of all the objects in the domain. CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 12
16. Documentation User Manual Technical Reference Manual ? CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 13
Status summary 1. 2. Finished and ready Not started Ever ongoing Wait action Test on an Object Set being empty 3. When a proxy goes to busy, this should completely propagate. 4. Class Inheritance 5. Dynamic creation and destruction of objects 6. Creation of unions of sets 7. A proxy should be allowed to go to a state that is not declared. 8. Test on parameter values 9. Extension of the concept of picking up the object name from parameter value. 10. Dynamical changing diagnostic print level 11. Simple parameter arithmetic. 12. Wait until a condition is TRUE 13. Loops (for instruction) 14. SMI elements should be allowed any number of attributes accessible to User Interface 15. Restarting State Manager from special file 16. Documentation CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 14
Desirable developments identified since our first meeting in July 2009 NEW By they very nature finished and ready for use new SLEEP instruction Format: SLEEP <integer> or SLEEP $(<par-name>) Eg. SLEEP 10 or SLEEP $(seconds) This did not turned up as simple as it seemed at first. As this represent a new source of asynchronous events, it was necessary to re-design the scheduling and resuming execution mechanism. This involved many C++ classes. CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 15
Significant re-design of handling of the execution of IF instruction. The motives for this were: • It unifies handling of IF instruction execution with that of WAIT instruction • It gives user a choice not to keep the objects involved in the IF instruction locked as soon as its ‘true’ condition is evaluated and the corresponding instruction block starts execution. This is achieved by ‘–u’ option on smi. SM command • better code clarity Further development of Tcl/Tk GUI Making it capable to view Object Sets in domains and also to view the object contents of these sets. CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 16
Fixed a weakness in when processing in cases when a SMI state has whens with ‘stay_in_state’ The last, but not least for completeness • rationalised make files for individual packages (Preprocessor, Translator, etc. ) basing them on a common makefile • various improvements to the existing code • chased, found and fixed a few bugs Details described in History files CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 17
Recent developments – over the last 12 months 8. Test on parameter values This meant introduction of a new type of Simple Condition : Such as ( PARMA == PARMB ) or ( PARMA <> 78 ) or ( PARMA > 24 ) etc This is then used in IF and WHEN conditions in the usual way 11. Simple parameter arithmetic Such as : SET PARMB = PARMA + 5 Basically an extension of SET instruction which required complete re-design of it. The right hand side of SET instruction can be an arithmetic operation involving two parameters or constants CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 18
Example of usage: if (HV in_state ERROR) and (retry > 0) then do Recover HV set retry = retry – 1 endif Current development Good example of not anticipated development Working on improving testing the SML code in Translator There are many tests that can be performed at the translation stage of SML code. Catching the errors at this stage then eliminates possible failures of State Manager at run-time. CERN, 19 March 2013 Boda Franek Future and Past Developments of SMI++ 19
- Slides: 19