Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk.

Similar presentations


Presentation on theme: "Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk."— Presentation transcript:

1 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk

2 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Contents ■ Tcl/Tk overview ■ Graphical user interfaces ► pep ► pvAssign ► SLS widgets ■ Direct EPICS access ► pvget, pvput, pvmon ■ Problems ■ References

3 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk What is Tcl/Tk? ■ Tcl is a scripting programming language. ■ Tk is a widget toolkit, available for Tcl and other languages. ■ It provides a command line shell: tclsh ■ And a GUI shell: wish ■ And a help program: tclhelp ■ Tcl can be extended with so called "packages". ► We provide an EPICS package for Tcl/Tk. ► We also provide special widgets for Tcl/Tk. ■ Tcl is really well supported by the controls section.

4 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Tcl/Tk quick start ■ Tcl is easy ■ Tk makes GUI creation simple ■ Type: wish button.b -text "Press me!" -command {puts "Hello world!"} pack.b ■ Press button ■ Look in tclhelp for: button, puts, pack ■ Write the program in a file and add first line: #!/usr/bin/wish ■ Make file executable: chmod +x filename

5 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Graphical user interfaces in Tcl/Tk: pep ■ pep -mc X11MA-ID1-CHU1:I-SET ► connects magnet control widget to X11MA-ID1-CHU1:I-SET ■ pep X11MA-ID1-CHU1:I-SET ► asks what widget type to connect to X11MA-ID1-CHU1:I-SET ■ pep –f configfile ► loads configfile.prc from. or $SLSBASE/sls/config/panel ► Try files from /work/sls/config/panel ■ Also see "How to use pep" item in Help menu.

6 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Beyond pep: Write your own Tcl-GUI with pvAssign ■ Start wish and load pvAssign package package require pvAssign ■ Create Widget label.temperature pack.temperature ■ Connect EPICS channel pvAssign.temperature MTRT1-TEMP:READ ■ Enjoy the features ► See value and alarm updates ► Try right click and middle click

7 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Supported widget types ■ Standard Tcl/Tk widgets ► label ● display string/number ► entry ● set string/number ► checkbutton ● set bit ► menubutton ● set enum with menu ► scale ● set number with slider ■ ■ Special SLS widgets ► formattedlabel ● display formatted number with units ► comparelabel ● display = or ≠ (compare to 0) ► wheelswitch ● set number ► led ● show bit as LED ► choicebutton ● set enum with row/column of buttons ■ ■ Load widget packages package require Wheelswitch

8 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk SLS Widgets types: Formattedlabel ■ Use standalone Formattedlabel package require Formattedlabel formattedlabel.fl -bg paleGreen -format "%9.4f mA" pack.fl.fl set 3.14159265359 ■ Use Formattedlabel with EPICS package require pvAssign package require Formattedlabel formattedlabel.temp1 -bg paleGreen pack.temp1 pvassign.temp1 MTRT1-LI-COOL:TEMP1

9 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk SLS Widgets types: Wheelswitch ■ Use standalone Wheelswitch package require Wheelswitch wheelswitch.ws -bg paleGreen -format 9.4 -label mA \ -min -100 -max -100 -command puts pack.ws.ws set 3.14159265359 ■ Use Wheelswitch with EPICS package require pvAssign package require Wheelswitch wheelswitch.limit -bg paleGreen pack.limit pvassign.limit MTRT1-LI-COOL:LIMIT

10 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk SLS Widgets types: Led ■ Use standalone Led package require Led led.led -color red pack.led ■ Use Led with EPICS package require pvAssign package require Led led.status pack.status pvassign.status MTRT1-LI-COOL:SW

11 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Beyond pvAssign: direct EPICS access ■ Load EPICS package (which is also used by pvAssign) package require Epics ■ Read value pvget MTRT1-LI-COOL:TEMP1 pvget MTRT1-LI-COOL:TEMP1 -format ■ Write value pvput MTRT1-LI-COOL:LIMIT 10 ■ Crate monitor pvmon MTRT1-LI-COOL:TEMP1 updateTemp1 ► Monitors need a callback procedure (here: updateTemp1 ) proc updateTemp1 {iostate value sevr stat time}

12 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Monitor example #!/usr/bin/tclsh package require Epics proc updateValue {channel iostate value sevr stat time} { if {$iostate != "OK"} { puts "$channel disconnected" return } if {$sevr != "NO_ALARM"} { puts "$channel has $sevr alarm because of $stat status" } puts "$time $channel = $value" } set device MTEST-VME-T1 foreach property {UPTIME LOAD WD} { set channel $device:$property pvmon $channel "updateValue $channel" } vwait forever

13 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Frequently asked questions about monitors ■ Why can't I simply call pvget in a loop? ► This creates much network overhead. ► It keeps the program and the IOC busy. ■ But what about a delay in the loop? ► Then you increase latency when something happens. ► You still have much overhead. ■ I don't understand how the monitor function gets called. ► Monitors work much the same as for example mouse clicks. ► On value change, monitors are called as soon as the program is idle.

14 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Problems with Tcl and EPICS ■ What if package require Epics (or pvAssign ) fails? ► Check environment variable TCLLIBPATH echo $TCLLIBPATH /usr/lib/tcl /work/lib/tcl ► Check that EPICS is installed in /usr/local/epics and /work or /prod is mounted. ■ Why does pvmon not work in tclsh ? ► Monitors need an idle loop to work, wish has one, tclsh not. ► Add vwait forever to the end of the script and it works.

15 Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk Where can I learn more about Tcl/Tk? ■ First try tclhelp ■ Look at www.tcl.tkwww.tcl.tk ■ Ask one of the Tcl experts: ► Werner Portmann ► Elke Zimoch ► Dirk Zimoch


Download ppt "Advanced EPICS Training, Dirk Zimoch 2008 Channel Access in Tcl/Tk."

Similar presentations


Ads by Google