Download presentation
Presentation is loading. Please wait.
Published bySharon Cunningham Modified over 9 years ago
1
ACL – An Introduction Brian Hendricks
2
What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes, ACNET Control Language (not by me)
3
What is ACL? “Simple” script language –borrows concepts from other languages Interpreted, not compiled –runtime compilation available Supports ACNET device notation Implemented in ASCII text files and database text files Built into CLIB
4
What is ACL Used For? Lex SA (script object) –originally to provide control –also supports display scripts Sequencer –eliminates the need for most new commands Parameter page (also parameter window) –supports complicated settings, etc. Command line interface (general use)
5
How Can I Use ACL? Call it from your program using CLIB interface Command line interface (type in ‘acl’) Program tools IDE (‘ACL Edit/Run’) Parameter page and parameter window Web –http://adcon.fnal.gov/cgi-bin/acl?acl={insert ACL code here}
6
Language Components Commands –roughly 100 Variables –expire when the current script ends Symbols –expire when the calling program ends –names start with a dollar sign Operators Device expressions
7
ACL Commands Device oriented –read, list, show, set, on, off, turn, reset, positive, negative, toggle, delta_set, increment, decrement, compare, copy, download, restore, fill, ramp, enable, disable, bypass, activate, deactivate, search, logger_get Program control –loop, endloop, exitloop, while, endwhile, continue, if, elseif, else, endif, exit, on_error, gosub, return, retry, break Special support –camac, gpib, timer_event, trigger, step_motor
8
ACL Commands (continued) Input/output –print, output, input Environmental control –timeout, ftd, data_event, data_source System information –setting_log, alarm_log, event_log, state_log, node_info, node, event_info, mdat_info, program_info, user_info, error_text
9
ACL Commands (continued) Variable control –declare, resize run –runs other programs including other ACL scripts wait –pauses the script for a period of time or until a clock event or state event occurs
10
ACL Operators Arithmetic –+, -, *, /, ^, %, >>, <<, plus, minus, times Logical –&&, ||, and, or,.xor. Comparison –, =, =, ==, equals
11
ACL Special Operators is (isnot) – device status –on, off, ready, tripped, remote, local, positive negative, ramping, dc, good, alarming, enabled, disabled, bypassed, active, inactive, defined, undefined has (doesnt_have) – database attribute –reading, setting, status, control, analog_alarm, digital_alarm, reset_control, on_control, off_control, positive_control, negative_control, on_status, ready_status, remote_status, polarity_status
12
Device Expressions Property specification –: and ? -> reading, _ -> setting, | -> basic status, & -> basic control, @ -> analog alarm, $ -> digital alarm Array notation [begin_index:end_index] –T:SBDASS[0:36] or T:SBDASS[] Length/offset notation {offset:length} –T:SBDASS{0:148}
13
Device Modifiers src – data source –dp (default), db, sr:{file}, sda:{file}:{case}:{set}, dl:{date}:{node} scaling type –scaled (default), raw, primary ftd=(FTD string}
14
Device Field Specifiers Only used for alarm properties Normal dot notation Examples –min, max, nominal, mask, limit_data_type, etc. –read M:OUTTMP.min
15
Device Display Types ascii – display reading as ASCII text state_text – display as state text bit_status – display basic status with bit descriptions node – display reading as an ACNET node value acnet_error – display reading as an ACNET error value
16
Device List Specifiers name={string} (uses standard SQL wildcards) node={node name} type={device type string or number} family={family device} file={file name} Many more…
17
Substitution Options Substitute devices –G:DEVnnn –used anywhere a device expression can be used Substitute strings –stringnnn –literal string substitution
18
ACL’s Special Characters Comment –‘#’ and the dreaded ‘!’ –‘!’ can also be used in ‘!=‘ and ‘!exists(variable)’ –comments text to end of line End of line – ‘;’ –allows multiple commands per line Line continuation – ‘\’ –better than Windows’ ‘^’ Execute an ACL file – ‘@’
19
Example 1 ! Conditionally turn on a device if G:DEV00 is off turn G:DEV00 on endif
20
Example 2 ! Turn Booster low level RF curves off turn B:BIAS2 off! sends off command to old bias curve turn B:BIASON off! sends off to the new DSP bias curve turn B:APGC off! sends off to the anode program curve turn B:CIGC off! sends off to the cascode curve negative B:VDFSM1! switches polarity to (-) for DC operation ! for the frequency curve on DSP VXI
21
Example 3 ! Test a C460 module for the copy time to G(I) bug while (1 = 1)! loop forever wait/event/delay=1000 5! wait for event 05 plus 1 second print "Event detected!“ camac/select/node=ncamac/crate=2/slot=13! select module camac/fa=26:10! restore G(I) table endwhile
22
Help for ACL Command line interface –‘help’ for general help –‘help {command}’ for command help Program Tools interface –‘ACL Help’ for general help –‘ACL Command Help’ for command help Web document –http://adcon.fnal.gov/controls/clib/intro_acl.htmlhttp://adcon.fnal.gov/controls/clib/intro_acl.html Me
23
Other ACL Tools ACL database file editor (D136) –place to edit scripts used in Lex SA –requires special permission to write files ACL file launcher –supports launching a predefined ACL script (S69) ACL spawn –supports asynchronous execution of ACL scripts
24
Summary Utilized in many environments –Sequencer –Lex SA –testing (new damper, CAMAC debugging, front end debugging) –examining the control system Empowers end users Has grown to meet the needs of those users
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.